在计算机操作系统中,进程是进行资源分配和调度的基本单位,同时每个进程之内也可以存在多个线程。那么在Android系统(Linux Kernel)中,进程是如何去抢占资源,线程又是如何根据优先级切换呢,本文将尝试剖析这个问题,研究nice在Linux以及Android系统中的应用。
程序员的逗比瞬间(第二季)
小黑屋里怎么能没有欢乐,苦逼的码农们,我要拯救不开心。
Java永久代去哪儿了
##版权说明
本文为 InfoQ 中文站特供稿件,首发地址为:Java永久代去哪儿了。如需转载,请与 InfoQ 中文站联系。
##摘要 在JDK8之前,类的元数据和常量都存放在一个与堆内存相邻的数据区,即永久代。但是在这种情况下有一个问题,如果类的元数据大小超过了应用的可分配内存,那么就会出现内存溢出问题。在JDK8之后,永久代被移除,原本存储在永久代的数据将存放在一个叫做元空间的本地内存区域。
深入讲解Android中Activity launchMode
Android系统中的Activity可以说一件很赞的设计,它在内存管理上良好的设计,使得多任务管理在Android系统中运行游刃有余。但是Activity绝非启动展示在屏幕而已,其启动方式也大有学问,本文讲具体介绍Activity的启动模式的诸多细节,纠正一些开发中可能错误的观点,帮助大家深入理解Activity。
程序员的逗比瞬间(第一季)
小黑屋里怎么能没有欢乐,苦逼的码农们,我要拯救不开心。
这是程序员的逗比瞬间系列的第一季,文章参考自Life of a programmer in pictures
探究android:largeHeap
在日常的Android开发中,我们必然遇到过OutOfMemoryError这样的崩溃,产生的原因无外乎两点,一是内存过小不够用,二是程序设计有误,导致不能释放内存,其中后者情况较多。在解决这个问题时,我们亦或多或少听到android:largeHeap,然而这个概念又是什么呢,它该如何使用,存在哪些问题呢。本文讲比较全面介绍Android中的largeHeap帮助各位全面深入了解这个概念。
使用Android lint发现并解决高版本API问题
在编写代码时,为了实现一些功能,我们需要使用高版本的API,比如SharedPreference的Editor中的apply方法为API 9开始引入,在API 9 以上的机器使用没有问题,但是在API 8上,如果运行时执行了这段代码,就会崩溃,问题相当严重。尤其是该问题出现在正式版中,后果不堪设想。本文将介绍如何使用lint发现并解决这些问题。
说说Android中的ANR
有过Android开发经历的人都不会对ANR陌生,它和崩溃一样是程序设计的问题。本文将以较为深入的视角来介绍什么是ANR,出现场景,如何避免以及如何定位分析ANR,希望可以帮助大家在编写程序时有所帮助。
在Mac上为其他设备开启代理
前些日子,想要查看一个Release版本的HTTP请求,由于已经是发布版本,日志已然关闭,遂开始从HTTP代理的思路着手。
本文是偏于操作的总结,行文目的是快速解决诸如上面的问题,不是为了深入了解squidman。如需深入俩接,请参考文章尾部的进阶推荐内容。
为什么高端人才会使用拍卖选工作
本文为100offer合作文章,由100offer为本网站提供专业的职场相关的文章,感兴趣的或者有跳槽的童鞋们不防读一读。
想象一下,当你在一个网站上递交你的简历后,你会像珐琅彩瓷一样被各个公司竞相拍卖,确定到合适的「买主」之后,专车把你送到面试的地点;入职当天,你会收到精心准备的小礼物,通过试用期后,你还会收到 3000 元的奖金奖励!
程序员必读的六本书
作为一名程序员,日常的工作除了上班撸代码就是加班撸代码了。撸码其实不难,无非询问Google,StackOverflow,解决方法和demo一箩筐,可是撸的一手好代码着实不易。无独有偶,码农一抓一大把,优秀的程序员却不易寻觅。优秀的程序员既不可能出自各种天花乱坠的培训机构,更不可能来自挖掘机摇篮山东布鲁斯特,大多数优秀的程序员有一个共同点,那就是自学。
为什么是自学呢?首先大学的教育不可能让你成为专家级别的程序员,其次为了能从团队脱颖而出必然付出更多的努力来学习。自学其实是一种很强有力的能力,一旦掌握,许多技术和问题都可以轻松搞定。
中学物理常客牛顿曾说,”如果我比别人看得更远,那是因为我站在巨人的肩上“。他山之石,可以攻玉。阅读大师巨匠的作品无疑是最有效的自学方式之一。业界知名的Bob大叔是代码整洁和面向对象编程的坚定支持推进者,其在这方面的著作可以称得上权威。Martin Fowler同样名声在外,他的关于重构的著作《重构—改善既有代码的设计》 应该是人手一本。阅读诸如上面两位大家的著作,对技术提到大有裨益。
这就是观察者模式
观察者模式是软件设计模式中的一种,使用也比较普遍,尤其是在GUI编程中。关于设计模式的文章,网络上写的都比较多,而且很多文章写的也不错,虽然说有一种重复早轮子的嫌疑,但此轮子非彼轮子,侧重点不同,思路也不同,讲述方式也不近相同。
Google Play Services 7.5新增API及多项特性
版权说明
本文为 InfoQ 中文站特供稿件,首发地址为:文章链接。如需转载,请与 InfoQ 中文站联系。
摘要
最近的Google I/O开发者大会上,Google宣布推出7.5版的Google Play服务,该版本在特性方面增加了诸如智能密码锁和实例ID等功能。在API方面,增加了Google云推送和Google Cast相关的API,同时在Android Wear设备上支持访问Google地图API。
说说依赖注入
在面向对象编程中,我们经常处理处理的问题就是解耦,程序的耦合性越低表明这个程序的可读性以及可维护性越高。控制反转(Inversion of Control或IoC)就是常用的面向对象编程的设计原则,使用这个原则我们可以降低耦合性。其中依赖注入是控制反转最常用的实现。
垃圾回收器如何处理循环引用
垃圾回收是一门编程语言中必不可少的一部分,不论是手动释放内存的C和C++,还是自动回收垃圾的Java和C#等语言。对于Java这样的语言,一般的开发者不强求关心对象回收和内存释放,但是理解垃圾回收对开发工作还是大有裨益的。
Android中HTTP相关的API
Android中大多数应用都会发送和接受HTTP请求,在Android API中主要由两个HTTP请求的相关类,一个是HttpURLConnection,另一个是Apache HTTP Client。这两个类实现的HTTP请求都支持HTTPS协议,基于流的上传和下载,可配置超时时间,IPv6和连接池。
Gmail托管邮箱发邮件认证失败
Gmail是一款很优秀的邮件工具,我一直使用Gmail来托管公司的邮箱,利用最棒的过滤器进行过滤垃圾邮件。前段时间公司邮箱密码更换,使用了新的密码后导致了只能收邮件不能发邮件,每次发邮件都会提示这样的错误。
JAR包未加入APK程序
前段时间打包遇到了一个问题,jar包不能加入到apk包中。从Eclipse中完全可以,一旦放到服务器端进行打包就出现了问题。
Google Play商店推广那些事
Play商店是Android的官方商店,虽然在大陆无法访问,但是这里依旧是重要的版本发布市场,尤其是对于那些国际化的产品。对于拓宽海外市场,付费推广就是一部分不可忽视的措施。而Android付费推广必然就是Play商店推广。本文主要从技术方面讲解,如何统计推广数据,以及在开发过程中遇到的一些疑问和困惑。
关闭Mac屏幕右上角QQ通知
前段时间看到QQ提示更新,于是手贱了一次升级到了QQ for Mac V4.0.1,最不爽的一件事在屏幕的右上角多出来了一个横幅,内容就是别人发给你的消息的内容。
避免Android中Context引起的内存泄露
Context是我们在编写Android程序经常使用到的对象,意思为上下文对象。 常用的有Activity的Context还是有Application的Context。Activity用来展示活动界面,包含了很多的视图,而视图又含有图片,文字等资源。在Android中内存泄露很容易出现,而持有很多对象内存占用的Activity更加容易出现内存泄露,开发者需要特别注意这个问题。
本文讲介绍Android中Context,更具体的说是Activity内存泄露的情况,以及如何避免Activity内存泄露,加速应用性能。
Java中的自动装箱与拆箱
自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象。自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接。
如果你在Java1.5下进行过编程的话,你一定不会陌生这一点,你不能直接地向集合(Collections)中放入原始类型值,因为集合只接收对象。通常这种情况下你的做法是,将这些原始类型的值转换成对象,然后将这些转换的对象放入集合中。使用Integer,Double,Boolean等这些类我们可以将原始类型值转换成对应的对象,但是从某些程度可能使得代码不是那么简洁精炼。为了让代码简练,Java 1.5引入了具有在原始类型和对象类型自动转换的装箱和拆箱机制。但是自动装箱和拆箱并非完美,在使用时需要有一些注意事项,如果没有搞明白自动装箱和拆箱,可能会引起难以察觉的bug。
本文将介绍,什么是自动装箱和拆箱,自动装箱和拆箱发生在什么时候,以及要注意的事项。
读懂Java中的Socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一。如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的。本文会介绍一下基于TCP/IP的Socket编程,并且如何写一个客户端/服务器程序。
士别三年,我的最新个人作品
这个应用是我的最新的作品,一个解决了自己需求的App。
##这是神马App 拷译是一款超级便捷的翻译工具,其理念就是拷贝即翻译。通常情况下,我们在阅读外文文章时遇到不懂的单词,常见的步骤就是,复制单词,然后切换到桌面,打开字典,进行翻译,理解了意思之后,然后退回到阅读软件,其实就在这些繁琐的过程中,我们阅读很容易被打断,进而影响阅读外文的效率。拷译则解决了这个问题,在阅读软件中遇到了生词,我们只需要复制一下,然后生词对应的意思就能立刻出来,省去了繁琐的切换,让你专注阅读不分心。
Android中处理Touch Icon的方案
苹果的Touch Icon相对我们都比较熟悉,是苹果为了支持网络应用(或者说网页)添加到桌面需要的图标,有了这些Touch Icon的网页链接更加和Native应用更相像了。由于苹果设备IPod,IPhone,IPad等设备广泛,很多网页都提供了touch icon这种图标资源。由于Android中并没有及早的有一份这样的标准,当我们想把网页添加到桌面时,仍然需要使用苹果的Touch Icon。