- 浏览: 28431 次
- 性别:
- 来自: 杭州
-
最新评论
文章列表
Android应用程序运行的移动设备受限于其运算能力,存储空间,及电池续航。由此,它必须是高效的。电池续航可能是一个促使你优化程序的原因,即使他看起来已经运行的足够快了。由于续航对用户的重要性,当电量耗损陡增时,意味这用户迟早会发现是由于你的程序。
虽然这份文档主要包含着细微的优化,但这些绝不能成为你软件成败的关键。选择合适的算法和数据结构永远是你最先应该考虑的事情,但这超出这份文档之外。
1. 介绍
写出高效的代码有两条基本的原则:
◆ 不作没有必要的工作
◆ 尽量避免内存分配。
Hibernate 类型 Java 类型 映射表
Class Summary
AbstractBynaryType
Deprecated. see http://opensource.atlassian.com/projects/hibernate/browse/HHH-5138
AbstractCharArrayType
Deprecated. see http://opensource.atlassian.com/projects/hibernate/browse/HHH-5138
1, 保证线程安全的三种方法 :a, 不要跨线程访问共享变量b, 使共享变量是 final类型的c, 将共享变量的操作加上同步
2, 一开始就将类设计成线程安全的 , 比在后期重新修复它 ,更容易 .
3, 编写多线程程序 , 首先保证它是正确的 , 其次再考虑性能 .
4, 无状态或只读对象永远是线程安全的 .
5, 不要将一个共享变量裸露在多线程环境下 (无同步或不可变性保护 )
6, 多线程环境下的延迟加载需要同步的保护 , 因为延迟加载会造成对象重复实例化
7, 对于 volatile 声明的数值类型变量进行运算 , 往往是不安全的 (volatile 只能保证可见性 , ...
AutoResetEvent, ManualResetEvent是C#中常用的线程同步方法,在Java中可以模拟,AutoResetEvent使用Semaphore,增加的是许可证数量,程序里只有一个许可证,那么当这个许可被使用后,就会自动锁定。相反,ManualResetEvent使用countdownlatch,增加的是“latch”,也就是障碍,或者门闩;当障碍解除时,所有程序都可以运行而不被阻塞,如果要实现同步,就必须manual reset,也就是手动加latch。
import java.util.concurrent.Semaphore;
import ...
1, 为什么wait与notify之前必须要加synchronized?
答案其实很简单,也是为了防止等待-通知机制出现race condition
为什么会出现race condition ?答: 对象在被wait之前已经被另一线程notify , 之后的wait 会永久停止,并导致deadlock(死锁)
理想情况:1, 第一个线程判断该对象是否要wait2, 第一个线程将对象wait3, 第二个线程再将对象notify
实际情况1, 第一个线程判断该对象是否要wait2, 第二个线程将对象notify3, 第一个线程将对象wait
为了防止这些情况,才需要在wait与noti ...
The Collections classes in java.util were designed to help, namely by
replacing arrays and, thus, improving Java performance. As you learned in the previous article, they're also malleable,
willing to be customized and extended in all kinds of ways, in service of good,
clean code.
Collections ...
Maven自带了很多的工程骨架,想自定义骨架可以使用交互式命令:
Xml代码 收藏代码
mvn archetype:generate
我的是Maven 2.2.1版本,系统自带的骨架一共有41个:
Xml代码 收藏代码
1: internal -> appfuse-basic-jsf (AppFuse archetype for creating a web application with Hibernate, Spring and JSF)
2: internal -> appfuse-basic-spring (AppFuse a ...
说到maven,相信用过的人都会感叹原来部署也可以这么简单.我相信大家平时用的最多应该是mvn clean,mvn test,mvn install等命令,今天,我要向大家介绍5个暴光率不是很高,但却非常有用的命令,相信掌握了这些命令后,大家对maven会有一个更加深刻的认识.
1. mvn help:describe
你是否因为记不清某个插件有哪些goal而痛苦过,你是否因为想不起某个goal有哪些参数而苦恼,那就试试这个命令吧,它会告诉你一切的.
参数:
1. -Dplugin=pluginName
2. -Dgoal(或-Dmojo)=goalName:与-Dplugin一起 ...