Jaqen's Blog

Jaqen's Blog

True mastery of any skill takes a lifetime

JVM 中的内存溢出
内存溢出,通俗一点,就是 JVM 内存不足了,没有空闲内存,并且垃圾收集器也无法提供更多内存。 这里的意思是说,通常在抛出 OutOfMemoryError 之前,垃圾收集器会被触发,尽其所能去清理空间。 但也不是在所有情况下垃圾回收器都会被触发,比如分配了一个大对象,超过了堆的最大值,JVM 可能判断出垃圾收集并不能解决这个问题,直接抛出 OutOfMemoryError 。 在 JVM内存结构 中,除了程序计数器,其他区域都有可能发生 OutOfMemoryError 。 堆溢出通过-Xms 和Xmx分别设定堆最小值和最大值。 错误信息: 1java.lang.OutOfMemory...
JVM内存结构
Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分为若干个不同的数据区域。 这些区域中,一些是线程私有的,一些是线程共享的。 线程私有的:程序计数器、虚拟机栈、本地方法栈 线程共享的:堆、方法区、直接内存 程序计数器一块较小的内存空间,用于标记当前线程所执行字节码的行号。 Java 虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现,所以确定的时刻一个处理器只会执行一个线程中的指令。 为了线程切换后能恢复到正确的执行位置,每个线程都需要一个独立的程序计数器,用于记录线程所执行字节码指令的地址。 虚拟机栈Java 虚拟机栈是由一个个帧栈组成。 每个方法执行时会...
为什么 byte 的范围是 -128~127?
这是一个很基础的问题。但是在昨天之前,我都是只知其然,不知其所以然。 于是我搜索了大量网络资料。说实话,看完大部分文章,我还是没有弄明白为什么。直到我看到了知乎上面的一个回答: 在8位二进制中,-128 没有原码、反码形式,那么它的补码是怎么计算出来的?还是约定的? ,醍醐灌顶。 这里尝试自己阐述一遍,如果你没有看懂,那是我的问题,还是直接看参考链接。 首先,忘记原码、补码、反码的概念。 从 「模」开始。什么是模? 想象日常见到的时钟,它可以表示 0 - 12 点的时间。假设当前时针指向 8 点,而准确时间是 5 点。那么调整方法有两种: 一种方法是将逆时针拨 3 小时,8 - 3 = ...
2018 年过去了,我很怀念它
每到年底,大家都会总结过去的一年里的得与失,收获与不足,也会为新的一年立下新的 Flag。 有时候在想为什么要有新年的感念,也许就是希望吧。每个人都需要一个时间周期去不断给自己寄予新的希望,而这个周期不能太长,以便可以安慰自己的平庸,这个周期不能太短,至少可以笃定的注视前方。 回望这一年,也是有几件值得纪念的事情。 1、3 月 8 日,老鲍回国,大学兄弟们聚得最齐的一次。 2、5 月 20 日和女友去第一次去看了朴树的演唱会。 3、6 月 19 日和女朋友领了证。 4、11 月 09 日进新房,双方父母第一次见面。 5、12 月 15 日,看了许巍的演出,第一次与许巍合影。 其实每一...
Android 音视频学习资源汇总
1、Android 音视频开发入门指南 :音视频学习思路,一系列学习任务。 2、Android 音视频开发学习思路:音视频学习路径,教程。 3、《雷霄骅的专栏》:http://blog.csdn.net/leixiaohua1020 4、《Jhuster的专栏》:http://blog.51cto.com/ticktick 5、《FFMPEG Tips》:http://ticktick.blog.51cto.com/823160/d-17 6、《Learn OpenGL 中文》:https://learnopengl-cn.github.io/ 7、《Android Graphic 架构...
YUV 格式详解
什么是 YUV/YCbCr/YPbPr?一种颜色编码方法,主要用于电视系统以及模拟视频领域,将亮度信息与色彩信息分离,解决了彩色电视与黑白电视的兼容问题。 Y:明亮度(Luminance、Luma),即灰度值。 U、V、Cb、Cr、Pb、Pr:色度(Chrominance或Chroma),描述影像色彩和饱和度。 YUV码流的存储格式与采样方式密切相关,主流采样方式有:YUV4:4:4、YUV4:2:2、YUV4:2:0。 什么是 4:4:4、4:2:2、4:2:0?人眼对色度的敏感程度低于对亮度的敏感程度。主要原因是视网膜杆细胞多于视网膜锥细胞,其中视网膜杆细胞的作用就是识别亮度,视网膜...
达克效应
达克效应(英语:D-K effect),全称为邓宁-克鲁格效应(英语:Dunning–Kruger effect),是一种认知偏差,能力欠缺的人有一种虚幻的自我优越感,错误地认为自己比真实情况更加优秀。简言之即:庸人容易因欠缺自知之明而自我膨胀。 Kruger和Dunning将其归咎于元认知上的缺陷,能力欠缺的人无法认识到自身的无能,不能准确评估自身的能力。他们的研究还表明,反之,非常能干的人会低估自己的能力,错误地假定他们自己能够很容易完成的任务,别人也能够很容易地完成。 参考网上,动手绘制了下面这张图,更为清晰。 从左往右,智慧从低到高,从下往上,是自信程度从低到高。 不是所有...
二零一八年农历十月二十一
昨天同事喊我去参加面试,公司的其他部门技术岗。想来很久没面试了,于是就去试下水。 有几点感受。 首先,发现原来自己真的还差得远呢。随便一个 Http 的知识点就难倒我了。工作中只知道使用,压根没深入学习原理。这也提醒了我多去钻研技术,不要只停留在表面。 其次,技术面试官的更关注的是学历、职级、绩效,这是我很诧异的。因为我发现有时候学历、职级、绩效真得不见得和个人能力成正比,如果是 HR 问这些还情有可原,技术面试官问这些就感觉挺 Low 比的。因为他问我今年绩效拿了几个 D,这个时候我就挺毛躁的了。 上个月的绩效领导给我打了个 D,如果真是如他所说是轮流来,不会这么快就轮到我,我其实知道...
Android 8.0 应用保活实践
虽然我也觉得强行保活应用挺不厚道的,但是没办法,为了完成需求。 一开始尝试的方案是 Android 5.0 后系统提供的 JobScheduler,能够预先设置条件,达到条件时自动启动 JobService,在 Android 8.0 以下都能很愉快的使用。但是在华为的 Android 8.0 上,当应用被杀后,JobService 就不能被系统调用了。 于是采取了双进程服务绑定方式,实现了应用保活功能。 直接看原理图: 原理就是利用 Binder 的讣告机制,如果 Service Binder 实体的进程被杀,系统会向 Client 发送讣告,这个时机就是保活的空子了。所以可以通过两...
Android 音视频基础知识
视频编码通过特定的压缩技术,将某个视频格式文件转换成另一种视频格式文件的方式。编解码标准有国际电联的 H.261、H.263、H.264,运动静止图像专家组的 M-JPEG 和国际标准化组织运动图像专家组的 MPEG 系列标准,此外,互联网上还有 Real-Networks 的 RealVideo,微软公司的 WMV 以及 Apple 公司的 QuickTime 等。 MPEG:主要有 MPEG1(VCD),MPEG2(DVD)、MPEG4(DivX、XviD)、MPEG4 AVC。 H.26X :侧重网络传输,包括 H.261、H.263、H.263、H.263+、H.263++、H...
avatar
Jaqen Ng
True mastery of any skill takes a lifetime