代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

推荐文章

高通平台Performance机制学习小结

    高通平台Performance机制学习总结 高通平台Performance机制学习总结利用在高通平台中的Performance机制,可以提高性能,比如应用的启动速度,滑动流畅性等。接下来就看下高通给我们提供的Performance机制1.该机制的JNI层实现部分位于./vendor/qcom/proprietary/android-perf/QPerformance/jni/com_qualcomm_qti_Performance.cpp上层实现位于./vendor/qcom/proprietary/android-perf/QPerformance/src/com/qualcomm/qti/Performance.java2.framework层的使用需要通过反射机制调用com.qualcomm.qti.Performance具体实现在:./frameworks/base/cor

    阅读全文>>

作者:coody分类:【_移动开发浏览(2105

2019-09-28

mui打包做好的手机版网站为apk

    mui封装做好的手机版网站为apk BOSS提到的一个功能,就是把已经做好的手机网站http://xxx.com/m/home/index ,想着看起来应该蛮简单,一个html页面里就一个iframe就好了,然后宽度和高度都设置为100%, 试了下,宽度没问题,就是高度的话100%是没有用的,试过在我的MX2手机上是可以100%撑开,钽是在同事的华为手机上又不能撑开了,上网搜索了一下,可以用JS来取得整个窗口的高度,下面是代码,直接写在MUI的新建 的项目中的INDEX.HTML页面就行了   <!DOCTYPE html> <html>     <head>         <meta charset="utf-8">         <meta name="viewport" content="initial-scale=

    阅读全文>>

作者:coody分类:【_移动开发浏览(559

2019-09-26

databingding的一些小结

    databingding的一些总结 1.变量: <variable name="user" type="User"/> <variable name="userList" type="List&lt;User&gt;"/> <variable name="handlers" type="com.m.databindingdemo.model.MyHandlers"/> <variable name="task" type="com.m.databindingdemo.model.Task

    阅读全文>>

作者:coody分类:【_移动开发浏览(871

2019-09-28

Java多线程高并发进阶篇(3)-原子操作的实现原理

    Java多线程高并发进阶篇(三)-原子操作的实现原理 要研究原子操作,就必须要对原子操作的来龙去脉有个清晰的认识。我们从原子操作的概念,以及处理器的原子操作和Java中原子操作的实现说起。 一.原子操作的概念 我们在物理学中知道,原子是一个不可再分的最小粒子。同理,原子操作(atomic operation)就是指不可被中断的一个或者一系列操作。 先来了解几个基本概念。   二.处理器中如何实现原子操作 在<Java多线程高并发进阶篇(一)-volatile实现原理剖析>中,我们说到了总线锁和缓存锁的概念。没错,在多处理器中,就是使用总线锁和缓存锁来实现处理器之间的原子操作。 首先,我们要明确一点,处理器会自动保证基本的内存操作是原子的(要不然说处理器的内存操作有什么意义),也就是说当一个处理器访问内存中读取一个字节时,其他处理器是不能访问该字节的内存地址的(这是最基

    阅读全文>>

作者:coody分类:【_移动开发浏览(1433

2019-09-26

Java多线程高并发进阶篇(1)-volatile实现原理剖析

    Java多线程高并发进阶篇(一)-volatile实现原理剖析 我们知道,在JVM的类加载机制中,是将外围的源码文件编译成字节码文件(.class)后加载到JVM中,然后Java通过执行引擎执行字节码,最终转化为汇编指令由CPU执行.我们说的并发编程机制,当然离不开JVM的实现和CPU的指令集. 了解JMM(Java Memory Model,Java内存模型)都知道,JMM是围绕着原子性,有序性,可见性展开的.后面我会专门写一篇,阐述Java内存模型以及它与处理器内存模型,以及顺序一致性内存模型的关系. 1.volatile的定义 在Java语言规范中,对volatile的定义如下: Java编程语言允许线程访问共享变量,为了确保共享变量能准确的访问和一致性的更新,线程应该确保通过排它锁单独获得这个变量,因此Java语言提供了volatile.如果一个变量被定义为volatil

    阅读全文>>

作者:coody分类:【_移动开发浏览(1573

2019-09-26

Java多线程高并发基础篇(6)-JMM重排序规则

    Java多线程高并发基础篇(六)-JMM重排序规则 我们知道,重排序的目的是在不改变程序执行结果的前提下,提高编译器和处理器对程序的执行性能。但是,重排序不是任意的,所谓无规矩不成方圆。理解重排序就需要知道重排序必须遵守的规则,总结起来就是我们今天要说的Happens-Before规则。在JSR-133: JavaTM Memory Model and Thread Specification中有相关描述,原版英文请见pdf文件,下载了一份供大家学习。 一. Happens-Before规则 Happens-Before规则规定了哪些情况下指令不能进行重排序。 程序顺序原则:一个线程内,代码执行的过程必须保证语义的串行性( as-if-serial,看起来是串行的;另外如果程序内数据存在依赖,也不允许进行重排序 )。 监视器锁规则:解锁unlock必然发生在加锁lock前。 传

    阅读全文>>

作者:coody分类:【_移动开发浏览(1556

2019-09-26

Java多线程高并发进阶篇(2)-synchronized实现原理剖析

    Java多线程高并发进阶篇(二)-synchronized实现原理剖析 在多线程并发编程中,线程安全是关注的重点。一般来说,使用多线程编程是为了获得更高的执行效率,如果连最基本的数据准确性都无法保证,那么谈论并发就没有任何意义。 一.为什么说同步锁(synchronized锁)是重量级锁? 在谈到高并发多线程编程中,估计大家接触到最多的就是synchronized,它在并发编程中是一个元老级别的角色。我们把synchronized锁(同步锁)称为重量级锁,是因为它会导致争用不到锁的线程阻塞,而阻塞或者唤醒一个线程就需要操作系统介入,并且需要在用户态和内核态之间转换,而这个转换过程需要花费大量的资源(因为用户态和内核态都有自己各自的内存空间,在状态切换过程中,用户态需要将参数变量等内容发送给内核态,而内核态需要记录用户态在切换过程的状态)。   二.同步锁的实现原理 在说实现原理之

    阅读全文>>

作者:coody分类:【_移动开发浏览(1086

2019-09-26

Activity与WindowManagerService连接的进程(一)

    Activity与WindowManagerService连接的过程(一) page1    Activity组件在其窗口对象和视图对象创建完成之后, 就会请求与WindowManagerService建立一个连接, 即请求WindowManagerService为其增加一个WindowState对象, 用来描述它的窗口状态.    我们从两方面来看Activity组件与WindowManagerService服务之间的连接.一方面是从Activity组件到WindowManagerService服务的连接, 另一方面是从WindowManagerService服务到Activity组件的连接.    从Activity组件到WindowManagerService服务的连接是以Activit

    阅读全文>>

作者:coody分类:【_移动开发浏览(1162

2019-09-26

老鸟软件工程师才知道的40个小技巧

    老鸟程序员才知道的40个小技巧 1、重构是程序员的主力技能。2、工作日志能提升脑容量。3、先用profiler调查,才有脸谈优化。4、注释贵精不贵多。杜绝大姨妈般的“例注”。漫山遍野的碎碎念注释,实际就是背景噪音。5、普通程序员+google=超级程序员。6、单元测试总是合算的。7、不要先写框架再写实现。最好反过来,从原型中提炼框架。8、代码结构清晰,其它问题都不算事儿。9、好的项目作风硬派,一键测试,一键发布,一键部署;烂的项目生性猥琐,口口相传,不立文字,神神秘秘。10、编码不要畏惧变化,要拥抱变化。11、常充电。程序员只有一种死法:土死的。12、编程之事,隔离是方向,起名是关键,测试是主角,调试是补充,版本控制是后悔药。13、一行代码一个兵。形成建制才能有战斗力。单位规模不宜过大,千人班,万人排易成万人坑。14、重构/优化/修复Bug,同时只能做一件。15、简单模块注意封装,

    阅读全文>>

作者:coody分类:【_移动开发浏览(1757

2019-09-26

Activity与WindowManagerService连接的进程(二)

    Activity与WindowManagerService连接的过程(二) page6 WindowManagerGlobal的getWindowSession函数的定义如下: 1     public static IWindowSession getWindowSession(Looper mainLooper) { 2         synchronized (WindowManagerGlobal.class) { 3             if (sWindowSession == null) { 4  &nbs

    阅读全文>>

作者:coody分类:【_移动开发浏览(1974

2019-09-26

ContentProvider -Call方法

    ContentProvider --Call方法 很早之前接触ContentProvider知道它提供的方法就是query,insert,update,delete这几个常用的方法,最近在解决Email的问题时发现ContentProvider提供了一个有意思的方法Call,通过这个方法可调用到ContentProvider自定义的方法。 /** * Call a provider-defined method. This can be used to implement * interfaces that are cheaper and/or unnatural for a table-like * model. * * <p class="note"><strong>WARNING:</stron

    阅读全文>>

作者:coody分类:【_移动开发浏览(1774

2019-09-26

Activity与WindowManagerService连接的进程(三)

    Activity与WindowManagerService连接的过程(三) page11    WindowManagerService的getDisplayContentLocked函数的定义如下:    1     public DisplayContent getDisplayContentLocked(final int displayId) {    2         DisplayContent displayContent = mDisplayContents.get(displayId);    3  &nb

    阅读全文>>

作者:coody分类:【_移动开发浏览(1842

2019-09-28

Java多线程高并发基础篇(4)-线程的上下文切换

    Java多线程高并发基础篇(四)-线程的上下文切换 对于后端开发来说,上下文我们常接触. 那什么是线程的上下文切换? 1.线程的上下文切换        在基础篇(一)中,我们讲到了时间片的概念.在单核处理器中,CPU就是通过给每个线程分配时间片执行来实现多线程.时间片是CPU分配给每个线程的执行时间段,这段时间都很短,只有几毫秒(ms),所以CPU必须来回切换各个线程来执行各自的任务,这样,对外看来,是在同时执行多个任务. 可能让我们疑惑的是,CPU如何保证下次再执行某个线程时,能正确记住该线程执行任务的状态?这就是我们要说的线程的上下文切换.CPU通过时间片分配算法来实现多任务,当前任务执行完对应的时间片后,需要切换到下一个任务.但是,在切换到下一个任务之前,需要保存上一个任务的状态,以便下次切换到该任务时,能正确的加载该任务的状态.这个过程就叫做线程的上下文切换.    

    阅读全文>>

作者:coody分类:【_移动开发浏览(841

2019-09-27
上一页 1/1356页 下一页