- 博客(609)
- 资源 (16)
- 问答 (1)
- 收藏
- 关注

原创 Https 加密原理
1)CA 证书中的 数字签名Hash值,就是用证书的私钥进行加密后的值(证书的私钥不在 CA 证书中,证书的公钥在CA证书中)。加密用的密钥和解密用的密钥是同一个,比较有代表性的是 DES和AES 加密算法。
2024-09-01 11:14:54
1315

原创 Http/Https 请求慢的解决办法
2.HTTP2.0多路复用通过多个请求 共享一个 TCP 连接的方式,解决了HTTP request层面的 队头阻塞(HOL blocking ,即Head of Line blocking)的问题,即解决了HTTP 1.x中的队头阻塞问题,但TCP层面的队头阻塞问题(由于丢失或延迟的数据包导致重传阻塞)并未解决,基于QUIC(Quick UDP Internet Connections)的HTTP/3基本可以解决队头阻塞问题。和传统的 tcp socket 相似,基于 tcp 协议,提供双向的数据通道。
2024-08-25 11:23:59
902

原创 谈iphone电话短信增强工具kuaidail软件的实现
首先声明,本人不是kuaidail软件的实现作者,是在做相关的项目过程中,想到了也实现了类似的功能,kuaidail软件本身并没有公布相关实现细节,所以在此分享一下。在这里,可以了解kuaidail软件的一些安装效果:http://bbs.app43.com/thread-15553-1-1.html一、总述 kuaidail运行于越狱平台的ios系统上,与其说它是一
2024-07-25 19:14:19
2338
1

原创 c++ 大整数类CCBigInteger 加减法功能的实现
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。助您在编程路上越走越好!
2024-06-04 19:18:41
3149
2

原创 软件行业理论太多 实践太少
一、中心思想 本文将从理论和实践的角度分析在软件行业理论与实践的差距,将着重表达提高实践在整个软件行业的作用和意义;但是,本文不会刻意贬低理论的价值,理论同样非常重要。二、软件行业理论密切依赖于实践 软件行业理论和实践似乎比其它行业更加密切,原因就在于使用它的实在太多了,不论国防、科技、教育、互联网以及日常生活。所以,分析软件行业理论和实践可以举的例子特别多。也
2024-05-27 19:40:59
2152
4

原创 做产品,请不要忽视技术的重要
其实,它和金钱的关系是一样的,金钱不是万能的,但是没有金钱是万万不能的。技术在软件行业所处的位置比较高这是毋庸置疑的,当然,这并没有说创意、产品、市场地位不高,应该说,它们有时有的所处的地位较低,有时所处的地位偏高,甚至很高。其实,对开发的要求还是挺高的,各种辩证思维都集中在一起,敢于坚持该坚持的,敢于放弃自己错误的想法而学习别人好的建议,能够很好地对于完美和不完美做正确判断,这是每个开发都要学会的辩证思维。其实,这里,一切其实不是以开发为核心,但是却必须依赖开发的技术,前面是个可能的,后面是个必须的。
2024-05-21 19:41:08
6644
23

原创 JVM内存参数调优大展神威
例如,若-XX:SurvivorRatio=8,则一个Survivor区域的大小将是Eden区域大小的1/8。例如,若 -XX:NewRatio=3,则新生代占整个堆的1/4,老年代占3/4。直接内存不是java虚拟机规范中定义的内存区域。
2024-04-29 13:44:05
693
1

原创 MinGW与Cygwin傻傻分不清楚
Cygwin 提供完整的类Unix 环境,是一个在Windows平台上运行的类UNIX模拟环境,它提供了一个UNIX模拟DLL以及在其上层构建的多种可以在Linux系统中找到的软件包。其主要目标是模拟UNIX/Linux环境,使得开发者可以在Windows上进行与UNIX/Linux相似的开发工作,或者将UNIX/Linux下的应用程序移植到Windows上。MinGW 环境下编译出来的程序,只能在Windows下跑,源码在linux环境下编译多半通不过,因为使用到了Windows下的API。
2024-04-15 18:19:22
2549

原创 Java泛型中 T 和 ? 傻傻分不清楚
而 T 表示了集合[所有Java类型,包括String,Integer,Character等系统定义的,或者用户定义的类型]中的一个成员。由于容器的具体类型未知,如果往容器添加元素,无法确保添加进去的具体数据是该容器具体类型的子类还是父类,因此存在类型不安全问题,所以是不允许往容器里添加数据的。使用T时,Java的类型参数支持多重限定,如
2024-04-11 18:46:44
1653

原创 Windows内核--GUI显示原理(6.1)
图形子系统内核部分win32k.sys 通过DDI接口操作显示驱动, 显示驱动通过ENG接口调用win32k.sys. Vista开始增加DWM进程,DWM(Desktop Window Manager)和以往的绘制最大的差异是屏幕绘制不再是各个App单独决定的,而是在后台视频存储区绘制之后再渲染。Aero效果、立体和翻转效果等都得益于DWM.
2023-01-02 13:01:44
1817
2

原创 Windows内核--驱动程序和内核(1.6)
内核态驱动程序一般是和内核共同属于内核空间,驱动程序有能力访问内核大部分数据结构。内核根据需要,调用驱动程序执行相应的IO操作,如果驱动程序有异常,可以认为内核不稳定。一般情况下发生故障处理,典型的就是崩溃(dump)并重启, Windows的典型行为是蓝屏。
2022-12-25 15:40:50
1874

原创 Windows内核--子系统(3.5)
子系统是用户层概念。在Windows内核之上,如果想要执行类UNIX应用程序,就是POSIX子系统,如果要类似OS/2环境,就是OS/2子系统。 如何能模拟出不同子系统呢? 一般需要子系统用户态应用程序和相关DLL支援。
2022-12-04 13:50:37
3302

原创 Windows内核--源代码在哪里?(1.1)
利用WinDbg调试Kernel, 可以得到内核数据结构,参照WRK源代码和深入解析Windows操作系统可以猜测到内核源码的可能长相,结合IDA等反编译工具和Windbg可以获取内核全貌。微软官方并不完全公开源代码, 想清楚Windows技术内幕,就需要逆向工具。大部分人能看到这篇帖子, 想必已经用过Windows系统多年了...
2022-11-02 11:34:32
3136

原创 线程问题的核心: 怎么退出线程才是合适的----小话多线程(2)
作者:陈曦 日期:2012-8-5 16:13:36环境:[Mac 10.7.1 Lion Intel i3 支持64位指令 gcc4.2.1 xcode4.2 苹果开源代码Libc-763.11]转载请注明出处每日总结:优秀的架构都是类似的,垃圾的架构一般都是一个原因:代码内部原理掌握得不够Q1: main函数中最后用return 0; 和使用 exit(
2012-08-05 16:18:03
13255
9

原创 词法分析,让状态机旋转地更猛烈些吧----小话c语言(21)
作者:陈曦日期:2012-6-16 10:21:31环境:[Mac 10.7.1 Lion Intel-based x64 gcc4.2.1 xcode4.2] 转载请注明出处Q:对于编译过程的词法分析,到底应该使用什么方式?A:可以肯定的是,必然要对需要处理的数据挨个字符判断,然后在恰当的位置截断,得到一个个的token.Q:为什么得挨个字符都判断
2012-06-16 10:19:45
7818
6

原创 要理解解释器,做一个小解释器----小话c语言(20)
作者:陈曦日期:2012-6-12 11:31:12环境:[Mac 10.7.1 Lion Intel-based x64 gcc4.2.1 xcode4.2] 转载请注明出处Q:解释器来源于什么?A:如果说是广义的解释器,那么可以把它理解成翻译器,只要能将一种被看成原始的东西翻译成需要的东西,处理的东西就可以被称为解释器。从编程语言角度,解释器更多
2012-06-12 11:31:46
8544
8

原创 大整数阶乘的计算 N!
1、先说小点的数的阶乘计算:// n! unsigned long fac(int n){ if(n == 0) return 1; else return n * fac(n - 1);}2、如果需要稍微提高效率,还可以:unsigned long fac_ex(int n){ if(n == 0 || n == 1) return 1;
2012-03-05 22:58:32
2963
1
原创 为什么scanf(“%c“, &c)有时发现c根本不是想象中的字符?小键盘的Enter和大键盘的Enter的区别?%d和%i的区别?C语言是如何区分开%f和%lf的?输入输出返回值倒底是多少?
很可能在输入的时候,带入了空格等其他字符,导致将不预期的字符传入c. 解法是在%c前面加上空格,即scanf(" %c", &c)可以提醒libc忽略前导的空格、回车、TAB等字符。若文章对您有帮助,欢迎关注。
2025-04-20 10:23:45
903
原创 为什么很多编程语言判等用==而不是=?数组判等?不同编程语言的判等?赋值运算符?关系运算符?
大部分编程语言"="是赋值,"=="是相等。一个常见的疑问是,赋值运算符"="和数学的相等是一个符号,这会产生误解吗?用”=”当做赋值,”==”相等也是有道理的。用"="当做赋值,"=="相等也是有道理的。
2025-04-20 10:11:38
877
原创 为什么浮点数会搞出Infinity和NAN两种类型?浮点数的底层原理?IEEE 754标准揭秘?
NAN全称是NotaNumber,常在浮点数运算中使用,首次引入NaN的是1985年的IEEE 754浮点数标准。如除以零、求负数的平方根等错误的操作,会返回NAN. 例如可以求一个负数的平方根,结果用isnan函数(来自math.h)返回真。
2025-04-19 10:44:41
906
原创 RTTI机制的原理?不同语言类型转换的底层原理?如何判断一个对象是否是某个类或者其子类?
一般而言,编译器会生成对应类的相关讯息,并让创建的对象指向相应的讯息,保存在内存中。当然,有时,我们希望手动转换一个变量的类型,让其变成常量,可以利用编译器提供的cast方法。若文章对您有帮助,欢迎关注。
2025-04-19 10:08:04
532
原创 为什么ObjC向一个对象发送它无法处理的消息,编译器只是警告不报错?ObjC为什么能实现动态消息传递?ObjC语言obj->name和obj.name的区别?ObjC为什么有方括号调用方法的语法?
换句话说,C和C++为什么只能编译期绑定方法,不能编译通过一个运行期才能找到的方法的根本原因,在于C/C++语言是更加静态的语言,而ObjC设计之初,就期望并不受编译期束缚,哪怕写了一个当前编译器找不到的方法,没关系,编译器依然相信运行期有机会找到。这就是ObjC运行时的魅力,编译器查找已有的头文件,没看到这个对象能处理此消息,但ObjC宁愿相信运行时可能在其他地方找到实现,这是ObjC最初设计的目标之一,可以不依赖编译期。微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
2025-04-13 10:42:14
660
原创 明明是一个通用指针类型, 为什么运行期可以找到正确的类对象?RTTI机制的原理?编程语言不同形态的“指针“?restrict是如何限定指针访问的?智能指针?编程语言的反射?
一般而言,编译器会生成对应类的相关讯息,并让创建的对象指向相应的讯息,保存在内存中。不管是ObjC的id类型,还是C++基类指针,运行期可以正确找到对应的父类或者子类,根源在二者都有一套查找到正确对象的机制。
2025-04-13 10:30:18
559
原创 C语言是如何区分开%f和%lf的?%d和%i的区别?%l %h和%d %o %u %x?%f %e %g的区别?%a和%A格式串?格式串基本规则?格式串详解?万能格式串?如何知道浮点数小数精确位数?
区分开它们是实现在libc. 具体到scanf函数执行时,libc会检查格式串是否包含%符号,如果有,继续从已知的格式串中枚举,发现单个f,就把输入当成float类型大小(一般为4字节),发现是lf组合,就把输入当成double类型大小(一般8字节)。libc解析格式串是按预定义的格式,当看到%l的时候,会向后查看是否是d/x/i/f等字符,但看到%g的时候就知道后面不管是任何格式都不是支持的,就会当做浮点数解析,当然后面的x当做原字符输出。在C语言中,假设short是2字节,%hd只会获取2个字节数据。
2025-04-12 10:34:15
685
原创 一元运算符“-“一定要和变量名连在一起吗?运算符优先级有没有通用原则?为什么两个操作数的一个是char/short或者枚举类型,会自动转换成int类型?隐式/显式类型转换?二元运算符的操作数?
一个小于int长度的数值,就算在硬件寄存器里面,最自然也是int长度,那就不如用int来计算,避免中间各种裁剪导致额外性能消耗。微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
2025-04-12 10:20:45
990
原创 为什么C语言枚举标识符必须和相同作用域其他变量名不同?Swift结构体或枚举mutating的本质?为什么Swift枚举变量前面可以加符号“.“?枚举为什么被当做整型?
mutating会让编译器将结构体或枚举成员函数的第一个参数self加上inout修饰符,即相应的代码修改会直接改到结构体或枚举本身,而不是self参数因为是值类型而被复制的结构体或枚举。f = f + c;
2025-04-06 11:50:20
674
原创 早期的ObjC编译器如何实现的?为什么ObjC的init方法里面可以直接使用self?ObjC为什么能实现动态消息传递?Objective-C 1.0和2.0有什么区别?
运行时系统提供了动态查找方法实现的能力,当一个对象接收到一个消息时,运行时系统会查找该对象的方法列表,以确定是否有匹配的方法。微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
2025-04-06 11:41:52
689
原创 三角函数公式sin/cos/tan的代码实现?为什么sin/cos/tan等三角函数需要链接libm而不是默认的libc?函数简化?内存分配函数知多少?函数是闭包吗?闭包比函数简洁?
函数本质也是闭包,是有名字的闭包,而闭包一般被称作"匿名函数"。即,如果一段代码是以通常的函数代码存在,就不叫做闭包,如果它是嵌套在一段代码中的"独立块", 就叫闭包。一般而言,三角函数的计算是比较复杂的。
2025-04-05 10:59:44
963
原创 如何理解分类(Category)?Kotlin 扩展是何方神圣?C/C++编译器的C/C++扩展
如果你对语言的某个类不满意,在原本类的基础上,给它新加一些方法并使用,这就是分类。扩展函数允许为已有的类添加新的方法,而无需继承或修改原类。扩展属性允许为已有的类添加新的属性,而无需继承或修改原类。
2025-04-05 10:46:55
529
原创 -I <头文件PATH>一定会最先搜索吗?头文件路径搜索顺序五花八门,有没有规律?搜索路径?如何得到编译器预处理头文件搜索路径?为什么C语言头文件路径不用遵循转义字符规则?
经常写C/C++代码的人,会注意到,编译器提示的日志基本不会包含.h的编译,除非是.h有报错才会提示.h的讯息。有兴趣的可以写多个不同路径的相同名称头文件,用""或<>测试上面的顺序,可以一一验证。
2025-04-04 10:54:21
1143
原创 Clang用什么语言编写?Xcode哪个版本开始转向LLVM?Xcode和GCC/clang的爱恨情仇?构建无比简洁的clang编译ObjC环境?GCC支持Objective C的故事?
clang代表"a C language family frontend for LLVM", 最早是Apple发起,源于不满GCC不能更友好修改ObjC的需求,Apple另起炉灶。因为ObjC在苹果有足够高的地位,clang一开始支持的语言就包含C/C++/ObjC. clang是编译器前端,意味着它要搭配后端,LLVM就是官方标配的后端。Android平台也逐渐从GCC转向clang.
2025-04-04 10:53:06
704
原创 .i和.ii文件的区别?.s和.S的区别?为什么有的语言允许变量或函数先使用后声明/定义?ObjC和C/C++代码转换?gcc 1.c和g++ 1.c预处理有什么区别?如何获取预处理器定义了哪些宏?
JS 允许函数使用后再定义这与JS运行机制息息相关,JS代码块的函数声明会在代码运行之前被"提前预处理"。同样,Java/C#一样允许类成员函数A调用B,但B的实现在A之后。这与C/C++的头文件必须先定义函数声明不一样,Java/C#编译器无非是多一个二次确认B调用和实现是否匹配,这并不是什么不能接受的东西。JS有变量提升(Hoisting)机制,因为是JS解释器在执行前有编译过程。Python 必须在使用前定义,如下代码会运行时错误:name 'a' is not defined。
2025-03-30 11:21:11
690
原创 为什么宏定义的末尾加分号可能是错误的?宏定义一定需要在源代码中吗?同一个文件可以有相同的宏名称不同的定义吗?让int变成short?宏?
宏本质是文本替换,加上分号可能是误解成宏定义是一条语句,很可能造成编译错误。但是,如果是希望源代码不想额外增加分号结尾,宏定义末尾加分号是合理的。这样,LOG_HERE本身就包含分号结尾,不需要额外加分号就是一条语句。不一定,编译器提供从命令行带入宏的方式。GCC/Clang提供-DMAX_VALUE或-DMAX_VALUE的方式,可以设置宏文本,-DMAX_VALUE=10或-DMAX_VALUE=10.MSVC采用/DMAX_VALUE的写法。可以的。
2025-03-30 10:55:31
478
原创 C语言宏和Rust宏的区别?用AND替换&&?新类型?_GNU_SOURCE?如何知道g++编译默认会定义_GNU_SOURCE?ifdef和#if defined的区别是什么?
可以通过g++ --verbose选项查看g++定义了哪些宏。
2025-03-29 10:57:00
1073
原创 #define一定需要在#include或#import之后吗?哪些编程语言支持macro(宏)?同一个文件可以有相同的宏名称不同的定义吗?如何获取预处理器定义了哪些宏?
宏,是一种批量处理的称谓。计算机科学中,代表根据一系列预定义的规则替换一定的文本模式。宏起源于汇编语言macro替换。宏用于预处理,在编译之前,sizeof是编译期计算,它是在预处理之后,所以不能将sizeof放到预处理指令中判断。可以的。宏定义并不保证一定作用至文件末尾,一旦有#undef取消它定义,源代码之后就不会有先前的宏定义。这意味着,可以在代码开始#define NUM 10,不需要NUM的时候用#undef NUM,接着定义#define NUM "hello"是字符串形式,这都是可以的。
2025-03-29 10:40:39
789
原创 为什么结构体要考虑对齐?编程语言的元组?可以控制结构体或类的字段偏移?如何优雅的展示一个类对象或结构体?
tuple是一种数据结构,可以存储多个元素,尽管元素可以是不同的数据类型,在某些时候,函数返回值可能超过一个类型,tuple很好地解决了这个问题。如不对齐,就会出现CPU多次访问的问题。助您在编程路上越走越好!
2025-03-23 11:43:17
939
原创 数组按下标指定初始化值 int a[2] = { [1] = 20, [0] = 10, }?数组为什么允许-1作为下标?数组相加的简洁形式?如何看待C语言数组不是一等公民?
C/ObjC/C++ 方括号在标识符后面。C# 方括号必须紧跟类型。Java方括号可紧跟类型之后或者标识符后面。Kotlin 比较特殊,初始化数组用内置函数 arrayOf, 并不需要显式方括号。VB 不采用方括号标志下标,用括号。
2025-03-23 11:29:27
566
原创 ObjC属性assign/retain/copy的区别?不同编程语言的属性?ObjC语言obj->name和obj.name的区别?类成员变量?
在目前较为广泛使用的编程语言来看,ObjC是支持属性最早的语言,不过最早Simula语言已经有提出"属性"概念,只不过它和类字段或变量更接近。微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
2025-03-22 11:14:25
552
JESD209-5-LPDDR5-注释解读v1
2024-07-04
JESD209-4B-LPDDR4 注释解读 v3
2024-07-04
DRAM技术精解(第三版 中文)
2024-07-04
JESD209-4B-LPDDR4 中文解读 v2.3
2022-10-23
DRAM技术精解(第三版 中文) DDRX LPDDRX
2022-10-23
DRAM技术精解(第二版 中文) DDR3-DDR4-DDR5-LPDDR3-LPDDR4-LPDDR5.pdf
2022-04-24
JESD209-4_3 LPDDR4 LPDDR3精解.pdf
2021-12-12
JESD209-3 LPDDR3精解.pdf
2021-11-26
JESD79-5_4_3 DDR5 DDR4 DDR3精解.pdf
2021-11-21
JESD79-4B DDR4 JESD79-3F DDR3 精解.pdf
2021-11-16
JESD79-3 DDR3 Technology.pdf
2021-11-13
JESD79-3 DDR3精解.pdf
2021-10-25
JESD79-4 DDR4解读.pdf
2021-10-13
DRAM技术精解(中文) DDR3-DDR4-DDR5-LPDDR3-LPDDR4-LPDDR5.pdf
2021-10-02
Android十年终极开发经验_助您不走弯路_快速晋级Android架构师
2021-08-08
JESD209-4C LPDDR4解读.pdf
2021-08-01
JESD79-3F_DDR3 中文注释解读 v3.pdf
2021-07-18
JESD79-E_DDR 中文注释解读 v2.2.pdf
2021-07-17
JESD209-4B_LPDDR4 中文注释解读.pdf
2021-06-18
DRAM Technology DDR3_DDR4_DDR5_LPDDR3_LPDDR4_LPDDR5技术精解.pdf
2021-01-31
DDR4为何没有类似LP3的CA training或者LP4的CBT?
2020-12-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人