jfo planet

Hope is the best gift that tomorrow gives.

  • 首页
  • 分类
  • 归档
  • 标签
  • 搜索
close

解决Android Dialog显示位置偏下的问题

发表于 2011-08-25   |   分类于 Android
Android-2.3.3使用自定义Dialog时,会出现dialog显示位置偏下,没有完全居中的问题,可以添加“dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);”试试:     final Dialog dialog = new Dialog(this, R.style.SyncDialogStyle);    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);    dialog.setContentView(R.layout.custom_dialog_layout);    dialog.findViewById(R.id.ok).setOnClickListener(new View.OnClickListener() {        @Override        public void ...
阅读全文 »

Java内存回收算法

发表于 2011-08-20   |   分类于 Java
标记-清除算法:经典方法,网上有很多,这里只说一下finalize。1.在finalize()中再次引用自己,可以避免对象被回收掉;2.finalize()方法只会被调用一次,如果对象面临下一次回收,finalize是不会执行第二遍的;3.需要执行finalize()的对象会被放入一个F-Queue中,由一个优先级比较低的线程去执行。(需注意多线程同步) 复制算法:将内存划分为大小相等的两块,每次只使用其中的一块,当这一块用完了,就将还存活着的对象复制到另一块,然后清理掉使用过的内存。非活动的对象就被回收了,并且内存分配时也不用考虑内存碎片,只需按顺序分配即可。这种实现比较简单、高效。缺点是每次浪费一半内存空间。优化:1.实践中可以根据每次会被回收的比例,安排一个合适的内存空间比例,比如9:1,90%的内存可被使用,仅有10%的空闲。2.向一端移动:有点类似memcpy,将所有存活对象向一端移动,覆盖可回收对象,边界以外的内存空间都是可用内存空间。from《深入理解Java虚拟机 ch3》 
阅读全文 »

Exception的性能是差,原因在于ThrowablefillInStackTrace()方法

发表于 2011-08-19   |   分类于 Java
参见:http://www.blogjava.net/stone2083/archive/2010/07/09/325649.html根本原因在于:异常基类Throwable.java的public synchronized native Throwable fillInStackTrace()方法方法介绍:Fills in the execution stack trace. This method records within this Throwable object information about the current state of the stack frames for the current thread.性能开销在于:1. 是一个synchronized方法(主因)2. 需要填充线程运行堆栈信息 另外透过JVM看Exception本质,可以看看Exception在底层是怎么实现的。 
阅读全文 »

NIO使用直接内存

发表于 2011-08-19   |   分类于 Java
直接内存(Direct Memory)并不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域,但是这部分内存也被频繁地使用,而且也可能导致OutOfMemoryError 异常出现。在JDK 1.4 中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲区(Buffer)的I/O 方式,它可以使用Native 函数库直接分配堆外内存,然后通过一个存储在Java 堆里面的DirectByteBuffer 对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了在Java 堆和Native 堆中来回复制数据。 
阅读全文 »

Custom Class Loading in Dalvik

发表于 2011-08-19   |   分类于 Android
Custom Class Loading in Dalvik The Dalvik VM provides facilities for developers to perform custom class loading. Instead of loading Dalvik executable (“dex”) files from the default location, an application can load them from alternative locations such as internal storage or over the network. This technique is not for every application; In fact, most do just fine without it. However, there are situations where custom class loading can come in handy. Here are a couple of scenarios:Big ap ...
阅读全文 »

Proguard

发表于 2011-08-19   |   分类于 Android
Proguard混淆介绍:http://blog.csdn.net/Zengyangtech/article/details/6127600keep语句语法:http://proguard.sourceforge.net/manual/usage.html#classspecificationA class specification is a template of classes and class members (fields and methods). It is used in the various -keep options and in the -assumenosideeffectsoption. The corresponding option is only applied to classes and class members that match the template.The template was designed to look very Java-like, with some extensions for wi ...
阅读全文 »

关于REST的一点想法

发表于 2011-08-18   |   分类于 python/js/php/html/mysql/http
看了下面这篇《深入浅出REST》,REST有几点特性值得学习: 所有资源都有唯一ID(类似Android的URI) 以数据为中心的思想,传统是面向对象思想,如定义一个服务对象,暴露一些服务接口。 仅仅围绕数据定义一系列操作方法(get, post …)还是有一些缺陷的,比如数据之间的关系,表现起来不够直观。 例如网游中一个角色攻击另一个角色,“攻击”这种行为, 当然,也可以把这种关系再定义为一种资源,用唯一ID来标识,英语里不是把动词加上 er 就变成名词了吗? 它使你的应用成为Web的一部分——应用程序为Web变成Internet上最成功的应用所做的贡献,与它添加到Web中的资源数量成比例 无状态约束使服务器的变化对客户端是不可见的,这意味着更方便的分布式服务器搭建 文中提到幂等性,详情可以参见这里。   http://www.infoq.com/cn/articles/rest-introduction REST关键原则 大部分对REST的介绍是以其正式的定义和背景作为开场的。但这儿且先按下不表,我先提出一个简单扼要的定义:REST定义了应该如何正确地使用(这 ...
阅读全文 »

java多线程设计wait、notify、notifyall、synchronized的使用机制

发表于 2011-08-15   |   分类于 Java
wait、notify、notifyall、synchronized的使用机制: synchronized(obj) {while(!condition) {obj.wait();}obj.doSomething();}当线程A获得了obj锁后,发现条件condition不满足,无法继续下一处理,于是线程A就wait() , 放弃对象锁.之后在另一线程B中,如果B更改了某些条件,使得线程A的condition条件满足了,就可以唤醒线程A:synchronized(obj) {condition = true;obj.notify();}需要注意的概念是:# 调用obj的wait(), notify()方法前,必须获得obj锁,也就是必须写在synchronized(obj) {…} 代码段内。# 调用obj.wait()后,线程A就释放了obj的锁,否则线程B无法获得obj锁,也就无法在synchronized(obj) {…} 代码段内唤醒A。# 当obj.wait()方法返回后,线程A需要再次获得obj锁,才能继续执行。# 如果A1,A2,A3都在obj.wait(), ...
阅读全文 »

解析Unicode编码和Java char

发表于 2011-08-05   |   分类于 Java
Java的字符类型采用的是UTF-16编码方式对Unicode编码表进行表示。其中一个char类型固定2Bytes(16bits)。首先先介绍一下Unicode编码表和UTF-16编码算法:       Unicode编码表的专业术语:       代码点 (code point): 指在Unicode编码表中一个字符所对应的代码值。如汉字“一”的代码点是U+4E00,英文字母“A”的代码点是U+0041。       代码单元( code unit): 规定16bits的存储容量就是一个代码单元。         Unicode编码表 分为17个代码级别 (code plane),其中代码点/-/? ...
阅读全文 »

Android Sync Provider

发表于 2011-08-01   |   分类于 Android
  http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/ http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-2/   Custom Account / Sync adapter: inability to edit contacts? http://groups.google.com/group/android-developers/browse_thread/thread/c4003febfe3a5690 http://code.google.com/p/android/issues/detail?id=5988   Writing an Android Sync Provider: Part 1January 23rd, 2010 Sam Steele One of the highlights of the Android 2.0 SDK is that you can writ ...
阅读全文 »
1…131415…61
jfo

jfo

605 日志
38 分类
4 标签
RSS
GitHub 微博
友情链接
  • 收藏夹
  • 网络剪贴板
  • 爱逛吧
© 2007 - 2018 jfo
由 Hexo 强力驱动
主题 - NexT.Pisces