首页 文章 精选 留言 我的

精选列表

搜索[java],共10000篇文章
优秀的个人博客,低调大师

<Java多线程编程核心技术>讲解得太细致啦

一个synchronized关键字,能讲一百多页,搞出几十个小举例。 我是服了! 但真的一路演练一下, 对这个关键的应用场景还是了解了很多的。 package test; public class Service { private boolean isContinueRun = true; public void runMethod() { String anyString = new String(); while (isContinueRun == true) { synchronized (anyString){ } } System.out.println("have stopped."); } public void stopMethod() { isContinueRun = false; } } package test; public class ThreadA extends Thread { private Service service; public ThreadA(Service service) { super(); this.service = service; } @Override public void run() { service.runMethod(); } } package test; public class ThreadB extends Thread { private Service service; public ThreadB(Service service) { super(); this.service = service; } @Override public void run() { service.stopMethod(); } } package test; public class Run { public static void main(String[] args) throws InterruptedException { // TODO Auto-generated method stub try { Service service = new Service(); ThreadA a = new ThreadA(service); a.start(); Thread.sleep(1000L); ThreadB b = new ThreadB(service); b.start(); System.out.println("have set stop order."); } catch (InterruptedException e) { e.printStackTrace(); } } }

优秀的个人博客,低调大师

Androidi性能优化之Java代码优化(摘自Android性能优化一书)

代码优化不是应用开发的首要任务,提供良好的用户体验并专注于代码的可维护性,这才是你的首要任务。事实上,代码优化应该是最后才做,甚至完全可能不去做,不过,良好的优化可以使程序性能直接达到一个可接受的水平,因而也就无需再重审查代码中的缺陷并耗费更多的精力来解决他们。 在平台Android 2.2(代号Froyo)和更高版本的情况下尤其如此,因为在Android 2.2中引入了实时(JIT)编译器,Dalvik JIT编译器把Dalvik字节码编译成本地代码,这明显加快执行速度。JIT编译器(有时简称JIT)可以显著提高性能。因为: a:本地代码直接由CPU执行,而不必由虚拟机解释执行 b:本地代码可以为特定架构予以优化 对于无JIT的android 2.1或更早的版本而言,优化策略的选用可能会受到很大影响,如果打算针对运行android 1.5、 1.6、2.1的设备开发,你要先仔细地审查应用在这些环境下需要提供哪些功能。此外,这些运行android早起版本的旧设备是没有新设备强劲的。尽管运行android 2.1和更早版本的设备所占的市场份额在萎缩,但直到2011年12月,其数量任然占大约12%,可选策略有三条: a:不予优化,因为应用在这些旧设备上运行相当缓慢 b:限制应用的Android API等级为最低8级,让它只能安装在android 2.2或更高版本 c:即使没有JIT编译器,也要针对旧设备优化,给用户以舒畅的体验,也就是说禁掉那些非常耗CPU资源的功能 在应用的manifest配置的application节点可以用:Android:vmSafeMode启用或者禁用JIT编译器,默认是启用的(如果平台有JIT).这个属性石Android 2.2引入的。 从递归到迭代 递归算法在开发者当中名声不太好,尤其是在没有太多内存可以用的嵌入式系统开发者中,主要是因为递归算法往往要消耗大量栈空间。递归算法也有可能导致栈溢出,让应用崩溃,因此应该尽量用迭代来实现。 oncreate()方法中一般会包含调用setContentView或任何其他负责展开资源的方法,因为展开资源师一个开销相对较大的操作,所以你可以通过降低布局的复杂性来使资源展开加快,几个降低布局复杂性的步骤如下: a:使用RelativeLayout来代替LinearLayout,尽可能保持“扁平化”的布局,此外减少创建的对象数量,也会让事件的处理速度加快 b:使用ViewStub推迟对象创建 StrictMode 写程序时,你应该始终假设下列两种情况: a:网路很慢(你正在试图连接的服务器甚至可能没有响应) b:文件系统的访问速度很慢 结论就是:不要在主线程内进行网络操作和访问文件系统,因为缓慢的操作会拖累系统的响应能力。虽然在开发中,你永远不会遇到任何网络问题或任何文件系统的性能问题,但用户可能不像你那么幸运。 注意: SD卡并不都具有相同的“速度”,如果应用在很大程度上依赖外部存储设备的性能,那么你应该确保在来自不同制造商的各种SD卡上测试过你的应用。 Android 有实用工具来帮助应用检测这种缺陷。它提供的StrictMode是检测不良行为的良好工具。通常情况下,在应用启动时,即当onCreate()被调用时,启用StrictMode StrictMode是Android 2.3引入的,在Android 3.0中加入了更多功能,所以应该确保选择正确的Android版本,让代码抱在适当的Android平台上。 Android 3.0中引入的需要特别留意的方法包括detectCUstomSlowCall()和noteSlowCall(),他们都是用来检测应用中执行缓慢的代码或潜在缓慢的代码。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 public class MyApplication extends Application { @Override public void onCreate() { super .onCreate(); ueHandler = new UEhandler( this ); Thread.setDefaultUncaughtExceptionHandler(ueHandler); StrictMode.setThreadPolicy( new StrictMode.ThreadPolicy.Builder() .detectCustomSlowCalls() //API等级 11, 使用StrictMode.noteSlowCode .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() .penaltyFlashScreen() //API等级 11 .build()); //其实和性能无关,但如果使用StrictMode,最好也定义VM策略 try { StrictMode.setVmPolicy( new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() //API等级 11 .setClassInstanceLimit(Class.forName( "com.apress.proandroid.SomeClass" ), 100 ) .penaltyLog() .build()); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } 从主线程调用执行时间过长,如果StrictMode Thread策略配置为检测缓慢调用时,会在logcat日志中看到关于StrictMode的信息 Android提供了一些辅助方法,可以再主线程中进行零时磁盘读写: StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); //从磁盘读取文件 StrictMode.setThreadPolicy(oldPolicy); 目前没有临时允许网络访问的方法,但实在没有理由在主线程中允许这种访问,即使是暂时的,也没有合适的方法知道访问是否很快。 注意:只是在开发阶段启用StrictMode,发布应用时,记得要禁用它,如果你使用detectAll()方法去简历策略总是可行的,那将来更可行,未来的Android版本会检测出更多的不良行为。 SQLite 大多数应用都不会是SQLite的重度使用者,因此,不用太担心与数据库打交道时的性能。不过在优化应用中的SQLite相关代码时,需要了解几个概念: a:SQLite语句 b:事物 c:查询 本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/3649136.html如需转载请自行联系原作者 demoblog

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册