WebAssembly记录
WebAssembly多线程支持的内部原理https://zhuanlan.zhihu.com/p/77083205
Objective-C记录
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849Objective-C 在基本语言上做了两个扩展:范畴(categories)和协议(protocols),它们是强大的软件开发工具。这两个扩展引入了声明方法并将它们关联到某个类的技术。感觉上,categories像是方法动态绑定,protocols像是接口而用于继承[虚方法]非正式协议respondsToSelector [NSObject]检查协议conformsToProtocol正式协议有其自己的限制。如果协议声明的方法列表随着时间而增长,协议的采纳者就会不再遵循该协议。因此,Cocoa 中的正式协议被用于稳定的方法集合,比如 NSCopying 和 NSCoding。如果您预期协议方法会增多,则可以声明为非正式协议,而不是正式协议。Cocoa 提供了两个根类:NSObject 和 NSProxy。Cocoa 将后者定义为抽象类,用于表示其它对象的替身对象。因此 NSProxy 类在分布式对象架构中是很 ...
OpenGL记录
OpenGLShaderToyWebGL理论基础GLFW再入门 关注事件处理OpenGL中的共享上下文Vulkan多线程渲染
aux -> vc6 multimedia extension sdkfreeimage -> not easy [FreeImage_Load/FreeImage_GetFIFFromFilename]
glDeleteTextures ->glDeleteTextures函数对内存的优化https://blog.csdn.net/Huoon/article/details/77461569上限在1000左右 1400?
OpenGL Bindless Texturehttps://www.cnblogs.com/gearslogy/p/13072817.htmlhttps://www.khronos.org/opengl/wiki/Bindless_Texture
为什么以前的图形API需要操作一步Bind Texture?https://www.zhihu.com/question/467743626
glutPostRedis ...
单元测试
catch2https://github.com/catchorg/Catch2
12find_package(Catch2 REQUIRED)target_link_libraries(catch2 Catch2::Catch2 Catch2::Catch2WithMain)
boost 头文件过多 编译耗时
gmock 模拟函数调用 桩
客户端单元测试实践 — C++篇https://mp.weixin.qq.com/s?__biz=MzI0NTE4NjA0OQ==&mid=2658384863&idx=1&sn=da40dda823b48f9d5d4719cc76f883fa&chksm=f2d570b1c5a2f9a7a25ff3cbd1fc58dd1216fd73cf0f18168715cc4b37531d3976f05d4bd29b&scene=27
c++ 单元测试打桩技巧总结(stub、mock)https://blog.csdn.net/coolxv_6533/article/details/79550197
macOS启动控制
launchctl interfaces with launchd to manage and inspect daemons, agents and XPC services.1234567891011121314151617sudo launchctl procinfo 1launchctl dumpstatelaunchctl print system/com.openssh.sshdlaunchctl print-cachelaunchctl print-disabled systemlaunchctl limit/ulimit -alaunchctl error posix 0到159launchctl error mach 0到52launchctl error bootstrap 0到52seq 0 159 | xargs -I{} launchctl error posix {}seq 0 52 | xargs -I{} launchctl error mach {}seq 0 52 | x ...
macOS内核编程接口
Apple KPI1kextstat | grep kpi
https://leiless.github.io/blog/posts/xnu-kext-use-private-kpi/
1234567com.apple.kpi.bsdcom.apple.kpi.dsepcom.apple.kpi.iokit com.apple.kpi.libkerncom.apple.kpi.mach com.apple.kpi.privatecom.apple.kpi.unsupported
https://github.com/apple-oss-distributions/xnu/blob/main/config/list_supported.sh
https://github.com/apple-oss-distributions/xnu/blob/main/config/System.kext/PlugIns/MACFramework.kext/Info.plist
12 <key>CFBundleIdentifier</key> <string>com. ...
macOS内核扩展
kext通信方式考虑
macOS内核拓展与用户态进程的通信实现(一)https://www.jianshu.com/p/4268e02e7c4c
macOS内核拓展与用户态进程的通信实现(二)https://www.jianshu.com/p/8318cabe9535
KernControl实现https://github.com/Kiprey/HelloKernControl
IOKit实现https://github.com/maurice-schuppe/flockflock
在macOS11或更高版本中对kext要求更高https://support.apple.com/zh-cn/guide/deployment/depa5fb8376f/web
建议在macOS 10.15上开发kext 避免频繁重启
内核扩展https://support.apple.com/zh-cn/guide/deployment/depa5fb8376f/web在 macOS 11 或更高版本中,如果启用了第三方内核扩展 (Kext),就不能按需将其载入内核中。第三方内核扩展需要用户批准、重 ...
GDB使用
gdb禁用启动提示1echo set startup-quietly on > ~/.gdbearlyinit
gdb关闭分页1set pagination off
gdb运行到main1start
gdb显示n个数组原始12set args 1 2 3p *argv@argc
gdb使用数学函数https://stackoverflow.com/questions/64906390/how-to-use-math-functions-with-gdb
1234# gcc -lm或者load("/usr/lib/libm.so") 不需要p (double)pow(2.0,3.0)p (double)sin(1.0)call (double)sin(1.0)
gdb编译执行源码 不可用??compile code -r – printf (“hello world\n”);
-static-libstdc++会导致gdb的-enable-pretty-printing失效
二维图形绘制
从两个图形库看CPU与GPU渲染的差异https://zhuanlan.zhihu.com/p/618925299
123Cairo与Skia是两个知名的2D渲染图形库。其中,Cairo使用CPU渲染,Skia已切换为GPU渲染加速。本文通过这两个图形库渲染实现的差异来比较CPU与GPU渲染的差异。综上,通过Cairo与Skia绘制两个相同的三角形描边的比较,可以比较好地理解CPU渲染与GPU渲染的差异之处。由于GPU的基础元素是三角形,导致使用GPU渲染的算法与CPU渲染的算法存在差异。并且,由于GPU本身一些特性,导致它的渲染品质比传统的CPU渲染差。但GPU价格比CPU便宜,速度快,因此实时场景仍然离不开GPU渲染。
blend2dhttps://blend2d.com/performance.html
123456789qt光栅化性能很差/不适合复杂矢量图cairo 渐变方面存在性能问题aggAGG的速度很慢,尤其是在填充量很大的操作因为它没有SIMD优化来加速像素合成blend2d支持SIMD和多线程
nanovgXChttps://github.com/stylusla ...
Sanitize记录
c++ 死锁检测工具https://juejin.cn/s/c++%20%E6%AD%BB%E9%94%81%E6%A3%80%E6%B5%8B%E5%B7%A5%E5%85%B7
clanghttps://clang.llvm.org/docs/UsersManual.html#cmdoption-f-no-sanitize
123address/thread/memory/undefined leak??clang -fsanitize=address -g memory-leak.c ; ASAN_OPTIONS=detect_leaks=1 ./a.out-fsanitize=safe-stack:
gcchttps://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html#index-fsanitize_003daddress
123address/hwaddress/thread/leak/undefined-fstack-protector-finstrument-functions
msvc12asanwin ...