Java同步之synchronized关键字

序言

在开发中,避免不了多任务的操作,往往一个线程很难满足任务需要,所以就有了多线程,并行的任务,但是当使用多个线程来访问同一个数据时,非常容易出现线程安全问题(比如多个线程都在操作同一数据导致数据不一致),所以我们用同步机制来解决这些问题,其中的一种解决方式就是使用synchronized关键字

使用

synchronized主要有四种用法:

  • 第一是在方法声明时使用

放在范围操作符(public等)之后,返回类型声明(void等)之前。这时,线程获得的是 成员锁,即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,当前线程(就是在Synchronized方法内部的线程)执行完该方法后,别的线程才能进入,例:

public synchronized void method() {
    // do something
}

Android 适配之dimens adapter

序言

大渣好,马上要过春节了,举国同庆的日子,在这里先祝大家:新年快乐,合家欢里,工作顺利,每天都旺、旺、旺!接下来,进入正题,今天我们的主题是适配,我们都知道 Android 屏幕碎片化特别严重,所以我们不止要开发一款好的应用,而且要在各种手机上都保持一样的效果,至少主流机型没问题,这是我们最头疼的问题,总之适配的工作是不可避免的,适配的方式包括很多内容,关于这一块的内容,我们简单聊一下!

适配常识

对于度量单位,有很多形式,android 中提到的类型有:dppspxinchptmm,也就是你可以使用这几种形式的单位,在不同的分辨率下,显示的效果是截然不同的,所以在 Android 中提倡以 dp (与像素无关)来作为统一单位,在实际使用中1dp大约等于1/160 in,而文字统一使用 sp 作为单位,以达到显示的一致性。关于单位的换算,可以看 Android 源码或者百科一下

所以,适配是一个很复杂的工作,简单罗列一下适配的几种形式:

  • 基础适配
    • 使用 dp 而非其他单位
    • 使用 wrap_content, match_parentweight 权重,尽量不写固定尺寸
    • 使用相对布局
    • 配合使用 .9 图片
    • 使用矢量图
  • 资源适配
    • 多套 drawable 资源
    • 多套 layout 资源
    • 多套 values 资源
  • 百分比布局

Android Emulator 更新了 伤害爆炸

序言

最近Google新版的模拟器,性能真是杠杠的,秒开,而且比Genymotion还要快,你敢信?所以,你可以告别额外的软件安装,告别使用真机调试造成的一万点暴击伤害。并且添加了很多功能的支持,还是很强大的,兄dei 你还不赶紧试试? 下面是官方的内容。

原文地址(需要翻墙)

介绍

发布者:Android 产品经理 Jamal Eason

img

今天,我们高兴地宣布为 Android Emulator 推出 Quick Boot 功能。利用 Quick Boot,您可以在 6 秒内启动 Android Emulator。Quick Boot 会为模拟器会话拍摄快照,因此您可以在数秒内重新加载。Quick Boot 最初随 Android Studio 3.0 在 Canary 更新版本渠道中发布,今天,我们非常高兴地以稳定更新版本形式发布此功能。

除了这个新功能,我们还希望重点介绍一下近期版本中的一些热门功能。自从两年前对 Android Emulator 进行彻底改造以来,我们继续侧重于提升速度、稳定性,以及添加众多功能,加快您的应用开发和测试的速度。鉴于所有近期变更,对您来说,今天绝对值得更新到最新版本的 Android Emulator 并开始使用这些功能。

5 大功能

  • Quick Boot

    今天以稳定功能形式发布,Quick Boot 让您可以在 6 秒内恢复 Android Emulator 会话。在您首次启动带 Android Emulator 的 Android Virtual Device (AVD) 时,它必须执行冷启动(就像接通设备电源),但是,后续启动的速度会非常快,系统将恢复到您上次关闭模拟器时的状态(类似于唤醒设备)。为此,我们完全重新设计了旧版模拟器快照架构,以便与虚拟传感器和 GPU 加速搭配使用。无需其他步骤,因为从 Android Emulator v27.0.2 起,Quick Boot 默认处于启用状态。

    如图:Android Emulator 中的 Quick Boot

img

《阿里巴巴Java开发规约》插件p3c使用说明

img

官方发布说明

经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!

插件全球首发仪式,大牛云集

img

阿里巴巴大牛天团倾力助阵:毕玄、玄难、索尼、叶渡,淘宝代码第一人多隆、代码规约作者孤尽携手规约项目组成员,以及业界规约生态代表等重磅大咖联合发布阿里巴巴代码规约插件!

img

平日低调的大神们,为了这次盛会都来了~

该插件由阿里巴巴P3C项目组研发。P3C是世界知名的反潜机,专门对付水下潜水艇,寓意是扫描出所有潜在的代码隐患。这个项目组是阿里巴巴开发爱好者自发组织形成的虚拟项目组,把《阿里巴巴Java开发规约》强制条目转化成自动化插件,并实现部分的自动编程。该插件在扫描代码后,将不符合规约的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。对于历史代码,部分规则实现了批量一键修复的功能,如此爽心悦目的功能是不是很值得拥有?提升代码质量,提高团队研发效能,插件将会一路同行

插件下载地址

https://github.com/alibaba/p3c

或者在Github直接搜索p3c

《阿里巴巴Java开发手册(终极版)》4-1安全规约(新增)

  1. 【强制】隶属于用户个人的页面或者功能必须进行权限控制校验。
    说明:防止没有做水平权限校验就可随意访问、修改、删除别人的数据,比如查看他人的私信
    内容、修改他人的订单。

  2. 【强制】用户敏感数据禁止直接展示,必须对展示数据进行脱敏。
    说明:查看个人手机号码会显示成:158****9119,隐藏中间 4 位,防止隐私泄露。

  3. 【强制】用户输入的 SQL 参数严格使用参数绑定或者 METADATA 字段值限定,防止 SQL 注入,
    禁止字符串拼接 SQL 访问数据库。

  4. 【强制】用户请求传入的任何参数必须做有效性验证。
    说明:忽略参数校验可能导致:
     page size 过大导致内存溢出
     恶意 order by 导致数据库慢查询
     任意重定向
     SQL 注入
     反序列化注入
     正则输入源串拒绝服务 ReDoS
    说明:Java 代码用正则来验证客户端的输入,有些正则写法验证普通用户输入没有问题,
    但是如果攻击人员使用的是特殊构造的字符串来验证,有可能导致死循环的结果。

| | 总字数统计:93.5k