- 博客(131)
- 收藏
- 关注
原创 Android 渲染性能
介绍了Android系统中有关性能问题的底层工作原理,也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个方面展开,Android的渲染机制,内存与GC,电量优化。Android的渲染机制Android UI and the GPU...
2020-01-17 15:10:56 374
原创 android项目 gradle 配置指南
gradle 概览 Groovy语言基础 android项目gradle配置指南gradle 详解 android gradle配置指南gradle 2.x升级到4.4gradle 2.14.1 ->gradle-4.4com.android.tools.build:gradle:2.2.3->3.1.2...
2019-12-13 11:41:12 808
原创 dart pragma注解 vm:entry-point
vm:entry-point 语用注释@pragma("vm:entry-point", ...) 必须放在类或成员上,以表明它可以在 AOT 模式下直接从本机或 VM 代码解析、分配或调用。背景Dart VM 预编译器(AOT 编译器)执行整个程序优化,例如摇树和类型流分析 (TFA),以减少生成的编译应用程序的大小并提高其性能。这种优化假设编译器可以看到整个 Dart 程序,并且能够发现和分析所有可能在运行时执行的 Dart 函数和成员。虽然 Dart 代码完全可用于预编译器,但嵌入器的本机代码和
2021-11-12 18:14:36 3822
原创 面向对象、设计原则、设计模式、编程规范和代码重构
实际上,面向对象、设计原则、设计模式、编程规范、代码重构,这五者都是保持或者提高代码质量,本质上都是服务于编写高质量代码这一件事的。当我们追本逐源,看清这个本质之后,很多事情怎么做就清楚了。
2021-03-24 19:35:19 303
原创 如何评判代码质量
最常用到几个评判代码质量的标准是:可维护性、可读性、可扩展性、灵活性、简洁性、可复用性、可测试性。其中,可维护性、可读性、可扩展性又是提到最多的、最重要的三个评价标准。要写出高质量代码,我们就需要掌握一些更加细化、更加能落地的编程方法论,这就包含面向对象设计思想、设计原则、设计模式、编码规范、重构技巧等等
2021-03-24 17:51:44 1372
原创 git merge 的两种模式的区别 --no-ff与fast forward
介绍git merge 的两种模式 - - no-ff与fast forward的区别
2021-03-16 11:06:25 2998
原创 Flutter2的新功能
Flutter web and Null Safety move to stable, Flutter desktop moves to beta and so much more!
2021-03-08 10:41:37 786
原创 git常用命令
git常用命令git configgit clonegit initgit addgit statusgit commitgit log- -decorate- - log-size-L分支git branchgit checkoutgit mergegit resetgit config$ git config --global user.name "wrd"$ git config --global user.email "[email protected]"执行了上面的命令后,会在你的主目录(h
2021-02-22 19:34:10 218
原创 GIT的对象模型
GIT的对象模型SHA对象Blob对象Tree 对象Commit对象Tag对象对象模型与SVN的区别SHA所有用来表示项目历史信息的文件,是通过一个40个字符的(40-digit)“对象名”来索引的,对象名看起来像这样:6ff87c4664981e4397625791c8ea3bbb5f2279a3你会在Git里到处看到这种“40个字符”字符串。每一个“对象名”都是对“对象”内容做SHA1哈希计算得来的,(SHA1 是一种密码学的哈希算法)。这样就意味着两个不同内容的对象不可能有相同的“对象名”。
2021-02-19 17:03:00 555
原创 二分搜索
二分搜索算法用于高效地在有序数组A中查找一个目标值v。 和线性搜索不同,二分搜索利用数据结构中的信息让搜索更高效。高效算法的关键是信息。
2021-02-18 16:45:34 323
原创 java语法糖
语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。简而言之,语法糖让程序更加简洁,有更高的可读性。
2020-12-01 10:10:53 102
原创 CMS垃圾回收器的工作过程,CMS收集器和G1收集器的区别
CMS(Concurrent Mark Sweep) 收集器:是一种以获得最短回收停顿时间为目标的收集器,标记清除算法,
2020-11-30 16:00:08 561
原创 WeakHashMap的工作原理
WeakHashMap 类似HashMap ,不同点在WeakHashMap的key是弱引用的key。WeakHashMap具有弱引用的特点:随时被回收对象。发生GC时,WeakHashMap是如何将Entry移除的呢?
2020-11-30 15:55:02 250
原创 守护线程是什么?守护线程和非守护线程的区别是?守护线程的作用是?
**守护线程**是区别于用户线程哈,**用户线程**即我们手动创建的线程,而守护线程是程序运行的时候在后台提供一种**通用服务的线程**。垃圾回收线程就是典型的守护线程。
2020-11-30 15:49:23 6844 3
原创 虚拟机为什么使用元空间替换了永久代
表面上看是为了避免OOM异常。因为通常使用PermSize和MaxPermSize设置永久代的大小就决定了永久代的上限,但是不是总能知道应该设置为多大合适, 如果使用默认值很容易遇到OOM错误。当使用元空间时,可以加载多少类的元数据就不再由MaxPermSize控制, 而由系统的实际可用空间来控制。
2020-11-30 15:27:49 376
原创 对象一定分配在堆中吗?逃逸分析技术
逃逸分析是指分析指针动态范围的方法,它同编译器优化原理的指针分析和外形分析相关联。当变量(或者对象)在方法中分配后,其指针有可能被返回或者被全局引用,这样就会被其他方法或者线程所引用,这种现象称作指针(或者引用)的逃逸(Escape)。通俗点讲,如果一个对象的指针被多个方法或者线程引用时,那么我们就称这个对象的指针发生了逃逸。
2020-11-30 15:16:02 461
原创 Java中String的长度限制
其实是65535,但是由于JVM需要1个字节表示结束指令,所以这个范围就为**65534**了。超出这个范围在编译时期是会报错的,但是运行时拼接或者赋值的话范围是在整形的最大范围。
2020-11-30 14:47:57 1322
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人