首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
StefanJi
掘友等级
Android 软件工程师
世界很大,多去看看
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
65
文章 48
沸点 17
赞
65
返回
|
搜索文章
最新
热门
Android Opengl OES 纹理渲染到 GL_TEXTURE_2D
Android 上常用的是 GL_TEXTURE_EXTERNAL_OES 纹理,那么如何利用 OpenGL 将 OES 纹理渲染到普通 2D 纹理呢
一种 Android 项目的模块间解藕方案
在 Android 开发中,当项目增加一定规模之后,一般都会采用多模块的项目结构。当然也能采用插件化的开发模式,具体采用什么开发模式,开发者可以自行定夺。这里将介绍一种模块间无耦合的开发机制。
避免宏定义产生副作用
在编写 c/c++ 代码时,我们通常使用 #define 定义一些宏,然后编译器在 预处理 阶段会把用到宏的地方替换为宏的内容,由于宏的替换完全是一种文本替换,所以在一些情况下如果使用不当,容易产生副作用。 预处理之后的代码,符合我们的预期。 这时预处理后的代码,就产生了副作用…
C库的IO缓存机制
一般用于访问真正的磁盘文件。C库会为文件访问申请一块内存,只有当文件内容将缓存块填满或执行冲刷函数flush时,C库才会将缓存内容写入内核中。 一般用于访问终端。当遇到一个换行符时,就会引发真正的I/O操作。需要注意的是,C库的行缓存也是固定大小的。因此,当缓存已满,即使没有换…
让你彻底理解 ViewModel 的实现原理
在发生配置改变时 Activity 和 Fragment 会被销毁重建,它们内部的临时性数据(不是通过 Intent 传入的数据)就会丢失. 如果把这些临时数据放到 ViewModel 中, 则可以避免数据的丢失。当然也可以利用 onSaveInstanceState 来保留临…
Java的动态分派和静态分派
Java 的动态分派和静态分派也是 Java 方法的执行原理。 Java 源代码的编译之后,方法之间的调用是使用符号引用来表示的。当字节码被 JVM 加载之后,符号引用才会被替换为对应方法在方法区的真实内存地址。那么在替换之前,由于 Java 的方法重写、重载,就导致符号引用对…
Android VM 的启动流程以及 JNI 的通信原理
AndroidRuntime 的构造函数中没有涉及 JNI 的内容。于是接着看 runtime.start 的执行: libnativehelper/include/nativehelper/JniInvocation.h 中的 JniInvocation 是JNI调用的一个工…
使用 Java 实现解析 JVM 字节码结构
按照JVM 字节码的存储格式 https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html 规范,实现了一段程序解析字节码结构。 按照字节码的储存顺序依次解析每一块内容。所有解析过程都共用一个 byte[] 数组,…
实现Arp报文发送和接收
ARP(Address Resolution Protocol) 地址解析协议是用来在一个局域网中通过网络层地址(IP地址)去寻找数据链路层地址(MAC地址)的网络传输协议。利用 BPF(Berkeley Packet Filter) 伯克利包过滤器可实现对链路层数据的收发。
C++ 实现 ping Utility
ping 命令的作用是检测两个网络设备在 TCP/IP 网络下是否能连通. 其底层基于 ICMP 协议, 而 ICMP 协议位于 TCP/IP 协议栈的网络层. 模拟 ping 命令就是模拟收发 ICMP 报文的过程.
下一页
个人成就
文章被点赞
142
文章被阅读
51,236
掘力值
1,222
关注了
57
关注者
77
收藏集
4
关注标签
7
加入于
2018-12-11