- 博客(12)
- 收藏
- 关注
原创 Java冷知识之——魔数(Magic Number)
一、 编程中的魔数在阿里巴巴Java开发手册编程规约第二节常量定义的第一条中写道:魔法值(即魔数)指的是未经预先定义的常量,而反例中的 “Id#taobao_” 则叫做魔字符串(Magic String)。这一规定在《Clean Code》和各大公司的代码规范手册中都有被提及过,那为什么这样规定呢?《计算机程序的构造和解释》一书中表达过这种观点:代码的第一要义是供人类理解,其次才是能正...
2020-02-26 18:47:21
6963
原创 什么是Handler
开门见山 解决问题Handler是Android特有的用来处理线程之间的消息传递的机制。其本质是Android SDK 提供的一个工具类,它封装了Looper、Message、MessageQueue、ThreadLocal类和一个。...
2020-02-21 20:15:42
621
1
原创 JVM—什么是类加载
开门见山 解决问题类加载是JVM将Java程序运行所需的class文件加载到内存中的的一个过程。class文件内包含了类的各种描述信息。类加载包含加载、验证、准备、解析和初始化五个阶段。类的生存周期包含以下过程:类加载的五阶段1. 加载JVM在这个阶段完成:根据类的全限定名获取定义此类的二进制字节流,并没有指明要从一个class文件中获取,可以从其他渠道,譬如:网络、动态生...
2020-02-09 22:16:32
269
原创 什么是时间复杂度
开门见山 解决问题算法的时间复杂度,是一个用于度量一个算法的运算时间的一个描述,本质是一个函数,根据这个函数能在不用具体的测试数据来测试的情况下,粗略地估计算法的执行效率,换句话讲时间复杂度表示的只是代码执行时间随数据规模增长的变化趋势。常用大O来表述,这个函数描述了算法执行所要时间的增长速度,记作f(n)。算法需要执行的运算次数(用函数表示)记作T(n)。存在常数 c 和函数 f(n),使得...
2020-02-08 20:37:13
30067
1
原创 读深入理解JVM之-什么是逃逸分析
开门见山 解决问题逃逸分析(Escape Analysis)本质上是JVM(以下的JVM均代表Hotspot虚拟机)的一种分析对象作用域的算法,或者可以称之为是JVM的一种优化技术。它的作用是让JVM编译器能...
2020-01-10 22:37:49
493
原创 Binder学习笔记
为什么要引入多进程现今大型项目App都采用多进程的形式,正应为“大”,当单进程内存占用大时被系统Kill的几率也会增大,因而让单个组件运行在单独的进程中可以有效保活;还有,当子进程意外Crash主进程也不会因此而Crash,大大提高了App的健壮性;此外,当主进程退出服务子进程还可以在后台做推送消息等工作。什么是Binder?给出Binder一词的含义需要分场合,宏观来讲Binder是...
2020-01-09 20:20:39
171
原创 Java io流System.in.read()如何使用
开门见山 解决问题这里提到的read()方法是指java.io包下InputStream里的read()。InputStream类提供了一个抽象read方法及它的两个重载方法,分别是:abstract int read() //从键盘缓冲区读取一个字节,返回该字节的ASCII码int read(byte[] b) //从键盘缓冲区读取一个字节数组,返回字节数int read(by...
2019-06-19 20:02:13
6314
原创 Android 线性布局(LinearLayout)内各控件如何设置间距
开门见山 解决问题在线性布局中无论orientation属性设为竖直还是水平都可以用layout_margin属性来控制布局内控件的间距。android:layout_marginTop="10dp"// 当前控件上边缘与其他控件(布局)的间距android:layout_marginBottom="10dp" //当前控件下边缘与其他控件(布局)的间距android:layout...
2019-06-11 21:27:16
29830
2
原创 Java并发-AQS是什么及AQS做了什么
开门见山 解决问题AQS是什么:AQS,是AbstractQueuedSynchronizer简称,直翻过来叫抽象的队列式同步器, 也可以称作队列同步器,它是java.util.concurrent.lock包下的一个工具类。直观来讲,AQS是Java提供的一个类,这个类是被Abstract修饰的,需要被子类继承。也就是说AQS是Java并发中用以解决多线程访问共享资源问题的同步机制的基本的框...
2019-05-20 21:15:03
1812
原创 Java包(package)是干什么的?和import什么区别?
这就是后果,从学习Java最开始就没注意细节,虽然简单,虽然甚至有些编译器会替你完成,但你看你在项目修改和转移时废了多大劲!package全球有辣么多软件公司开发了辣么多Java类,因此类的同名情况是不可避免的,Oracle允许在类名前加前缀来限定,提供了类的多层命名空间,以此解决类命名冲突、类文件管理等问题,这就是Package机制。在设计类时中可以把一组功能相关的类放在同一pac...
2019-05-15 18:19:51
3925
原创 区分-JVM内存分区和Java内存模型(Java Memory Model)
也是最近被问到了Java内存模型,学识浅薄,一直以为内存分区和内存模型是一个东西,现在做一下笔记整理一下以区分和学习这两个概念及其延伸的一些知识点。开门见山 解决问题JVM内存分区具体指的是JVM中运行时数据区的分区。 JMM是一种规范,是抽象的概念,目的是解决由于多线程并发编程通过内存共享进行通信时,存在的本地内存数据不一致、编译器会对代码指令重排序、处理器会对代码乱序执行等带来的问题...
2019-05-08 17:55:13
8108
原创 物理引擎那些事儿
虽然不是游戏或引擎开发方向,但最近空闲时看了一篇关于彩虹六号围攻破坏引擎的帖子,突然觉得自己玩了这么就R6S也应该对了解下游戏开发方向的知识,在此记录,以后跟外行吹B也能讲讲(滑稽)。这里主要写了物理引擎,因为游戏引擎基本随便百度,帖子写得蛮详细的。游戏开发中的程序开发包含:图形引擎(场景管理及渲染、贴图、建模等)涉及到:Maya、3DS Max、PS等 声音引擎 (音效Sound Ef...
2019-05-08 12:29:17
1789
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人