
技术杂谈
文章平均质量分 67
fanged
野生程序员。。。这里主要是一些学习笔记和心得。。。
注:标题带TODO的内容都是未完成,内容有可能不准确。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
树莓派破解Switch原理
摘要:本文分析了任天堂Switch早期版本存在的BootROM漏洞,该漏洞允许通过USB恢复模式传入超长数据导致栈溢出,从而执行攻击代码。攻击者利用树莓派作为USB主机注入特定payload(如Hekate或Atmosphere),实现对Switch系统的破解,绕过游戏签名验证。文章指出,该漏洞利用不仅限于树莓派,其他开发板如STM32等也能实现类似功能,选用树莓派主要因其完善的生态和开发便利性。原创 2025-07-09 15:56:53 · 267 阅读 · 0 评论 -
Java的DI依赖注入
Resource修饰成员变量,只要成员变量名是register的名字,就自动初始化成注册的bean。@Resource修饰方法,是根据方法的参数名来匹配。其实可以看出,就是把bean保存在Map<String, Object> beans里面。通过String去查找具体要用什么类。好吧,感觉就是继续解耦了一些,把很多实现类由一个map统一管理而不是自己管理了。这里就会用zhService去查找之前的register。比较新的一个概念,以前还真没有接触过。具体有什么好处以后再看吧。原创 2025-06-15 19:45:34 · 261 阅读 · 0 评论 -
三维点云的处理
点云技术是通过离散的三维点集合来数字化现实世界的核心方法,其关键技术涵盖采集、处理和应用全流程。点云采集主要使用激光雷达(LiDAR),结构光扫描,多视角立体视觉也就是多摄像头。前阵看文章,好像也又但摄像头采集的。处理的部分是重点:统计离群值移除(SOR):剔除孤立的噪声点。体素网格滤波:降采样保持特征的同时减少数据量。ICP算法:迭代最近点对齐多视角扫描数据。NDT算法:基于概率分布匹配,适合大场景。PointNet++:直接处理无序点云,分类地面、建筑等。原创 2025-05-19 14:16:04 · 208 阅读 · 0 评论 -
文件系统1(FAT32)
最近偶然看到一个fat32的代码,也不多,就一个c文件,正好也想看看文件系统。就从这个代码开始学了。原创 2025-03-26 21:49:35 · 170 阅读 · 0 评论 -
VSCode必学必会(2)
之前写过一个1,最近发现还有一个真的很重要,遇到过好多次了,就是launch.json。详细的可以看官网,这里也简单总结一下。还有一个tasks.json。这部分感觉没那么复杂,暂时就不写了。原创 2025-04-11 02:57:26 · 418 阅读 · 0 评论 -
有趣的excel CPU
最开始看到这个是觉得很神奇,用excel就可以模拟CPU,正好当时刚刚开始全面投入嵌入式,对寄存器这些也比较有兴趣。遇到的困难主要是对excel的很多高级操作还是不熟悉,尤其是宏,搞了很久才知道是按F9运行整个程序。另外一个困难是我的PC上现在没有office,找一个D版的现在好像很困难,找了半天都没看到。只能在笔记本上运行。运行的界面大概这样的:可以看到,上面有fetch unit,control unit,MUX,ALU,REGISTER FILE等等。原创 2024-02-07 02:37:07 · 155 阅读 · 0 评论 -
meson构建(TODO)
Meson 是一个现代化的开源构建系统,旨在提供快速、用户友好的构建体验。Meson 构建系统的核心目标是高效、简单和灵活。不过GNOM,Mesa,X.org,GStreamer, LLVM,GTK都用的meson,感觉也是有一定特点。- `meson.build` 文件是 Meson 的配置文件,定义了项目的构建规则。- `meson setup` 命令会创建一个构建目录(如 `builddir`),并在其中生成构建文件。以下是一个完整的示例,展示了如何使用 Meson 构建一个简单的 C 项目。原创 2024-03-22 01:42:46 · 531 阅读 · 0 评论 -
BusyBox
这个题目挂了很久了,一直想写一点但是又觉得没什么好写的。因为从原理来说,busybox真的不难,没有太多特别的东西,就是一个进程完成了之前很多进程干的活。这样减少了空间暂用。然后比较有趣的一点,是可以用busybox制作构建最小系统。其实后面去看看各个命令的实现,我觉得还是很有趣味的。用法其实也很简单,把以前的命令作为参数就可以了。不幸的是加载fs的时候失败了,空了再研究吧。看了下编译出来1.1M,确实挺感人的。创建初始化脚本inittab。原创 2024-03-27 14:41:07 · 320 阅读 · 0 评论 -
ELF文件格式
2.2 读取程序头表 根据ELF文件头中的信息,内核读取程序头表(Program Header Table),这表明了哪些部分需要加载到内存中以及它们的属性(可读、可写、可执行)。2.5 动态链接器(ld-linux) 如果ELF文件是动态链接的可执行文件,内核会查找并加载动态链接器(通常为ld-linux.so或类似名称),并将控制权交给动态链接器。3.1 加载共享库 动态链接器读取可执行文件的动态段(Dynamic Section),找到所需的共享库(动态库),并将它们加载到内存中。原创 2024-07-22 01:54:55 · 759 阅读 · 0 评论 -
C++的智能指针
说实话以前用这个很少,一个指针打天下,不过都智能了,分配了就不管了,想来还是很方便。。。原创 2024-07-22 17:27:28 · 208 阅读 · 1 评论 -
JNI示例
其实可以看到,JNI整个也并没有做太多东西,整个也没有对操作系统,语言做一些很深层次的定制,大部分还是基于语言的特性来弄的。有空可以看看JNI那几个宏,就一切都明白了。中间可能会提示Java没有装,装下面几个就可以了。也不用全装,headless装一个就行了。Linux下,没有在Andorid下面搞,安卓开发效率太低了。这里会生成HelloJNI.class。之后会生成头文件,HelloJNI.h。之后就会生成libhello.so。原创 2024-02-21 01:53:44 · 220 阅读 · 1 评论 -
用Docker来辅助开发
现在好像用Docker是越来越多了。之前其实也看过docker的原理,大概就是cgroup那些,不过现在就不看原理了,不谈理论,只看实际中怎么用,解决眼前问题。用docker来做开发,其实就是解决的编译环境的差异,就像关大象进冰箱有几步,这里也有两步。1 创建docker。2 使用docker编译。原创 2024-07-17 13:41:17 · 316 阅读 · 0 评论 -
Ninja小结
它的代码量小、功能集中,避免了多余的复杂性,确保所有设计决策都以速度为优先。默认支持并行构建,可以利用多核 CPU 的优势,加快构建速度。从结构上来看,和Makefile,CMake,Meson,Android.bp那些基本上没啥区别。有时候真的觉得IT行业中某些方面真的太多分支了,功能差不多,搞一堆不同的语法,真的大大的增加了码农的学习负担。参照网上的,要创建一个build.ninja。当然,是不是这么快我不知道,起码现在编译Android是慢成翔了。参数,可以控制并行任务的数量,从而充分利用硬件资源。原创 2024-02-12 02:08:17 · 569 阅读 · 1 评论 -
Rust Hello
这篇文章抽空再看看特性吧,否则内容很少。就是~/.cargo/config。经过我的测试,清华那个速度还可以。安装中有个选择,直接选1就行了。一定要换源,否则真的太慢了。就直接可以看到结果了。然后用rustc编译。原创 2024-07-09 11:44:35 · 237 阅读 · 0 评论 -
Openssl制作证书
在出厂之前,生产方会用私钥对bootloader,分区这些做签名。调用之前会对这些分区进行校验,就像上面的Verify OK之后才下一步。有一个小疑问,假如签名,目标文件都改了,那么可以校验通过吗?GPT答复是不会,因为做签名要私钥,如果这个私钥和公钥不匹配,也是不会通过的。所以在设备上,包整公钥不能被更改就欧了。写这个还是因为之前Android的Secure Boot,本质上就是如此。然后根据之前的私钥,从这个文件生成验证证书。对方此时就拿到了文件,验证证书,还有你的公钥。如果没有篡改,就是OK。原创 2024-06-17 15:35:02 · 518 阅读 · 0 评论 -
Linux shell技巧(持续更新)
这个工具挺好用的,主要解决量大痛点,一个是分屏,这样就不用开很多窗口然后手动切换。唯一麻烦点就是所有操作都要用快捷键,用Ctrl+B开始,要记的东西很多。这个工具还是可以,挺实用的。可以实现类似TOP的效果。打开鼠标:命令行,set -g mouse on。加入会话:tmux attach -t x。切换会话:tmux switch -t x。窗口全屏:命令行,z。分屏:快捷键,%(左右)/"(上下)。查看会话:tmux ls。切换窗口:快捷键,箭头。关闭窗口:快捷键,x。分离会话:命令行,b。原创 2024-05-15 15:42:44 · 390 阅读 · 0 评论 -
C++新特性复习1 版本11
老实说,我是毕业不久就开始用C++,原因就是VC++,当时用来做界面。还好吧,不是觉得太难,起码对数学底子没有要求,后面偶尔也用用,但是整体还是C居多。现在项目又要用,但是很多语法有点看不懂了,所以复习一下下。先从11开始吧,从特性上看:指针方面unique_ptr,shared_ptr,weak_ptr。条件语句 for − range-for。初始化initializer_list。原创 2024-06-17 13:35:27 · 213 阅读 · 0 评论 -
一个很好用的scp免密方法
命令ssh-copy-id,真的太好用了。user远程远端用户名,target_host是远端服务器。一般来说都有公钥,如果没有,生成一个就行。感觉生活又更美好了一丢丢。原创 2024-03-25 20:25:56 · 147 阅读 · 0 评论 -
CMake小结
网上很多教程都是做成动态库或者静态库,但是以前的工程是使用变量的,所以这里还是使用变量。本质还是一个文本的处理。以前的工程本来是有完整的makefile,PM给改成CMAKE,然后大吹什么做成了组件式。在没有跨平台的需求时,有没有必要切换CMAKE,我觉得也是值得商榷的。1 使用cmake的时候可以加一个-B build,指定在build,完了直接删也很方便。3 里面还是有一些高级函数,比如function,foreach等,用的好也能玩出一些花。首先还是回忆了一下以前的工程,写了一个简单的复盘工程。原创 2024-02-12 01:49:14 · 604 阅读 · 1 评论 -
恩尼格玛密码机(Enigma)Python实现
技术改变历史,决定无数人生死的典型案例。现在只用一点点python代码就实现了,不由得感叹上帝跌落凡间。该代码的原始出处不详。原始信息: Attack at nine o 'clock tomorrow morning。加密信息: Gpzlwo ub heck w 'ewrfo ufvpvlnj ergaaki。解密信息: Attack at nine o 'clock tomorrow morning。转载 2024-05-03 20:19:17 · 893 阅读 · 0 评论 -
正则表达式学习
综上可以看到,在一些复杂条件的判断,正则表达式还是很有优势。写代码去判断真的要搞半天,有些复杂的估计可以进leetcode了。最后,所有的表达式其实可以用GPT生成,也不用自己去写。。。懂一些基本概念即可。原创 2024-02-17 12:28:20 · 148 阅读 · 0 评论 -
VSCode必学必会(1)
打开文件之后再打开新文件,会自动覆盖。这个问题困扰了我很久,原因其实是VSCode中文件打开分为预览状态和编辑状态。预览状态标题是斜的,这时新打开就会覆盖,有两个解决办法。直接点着文件然后右键,select for compare,我觉得挺好用的。如果我们多次按下快捷键,编辑器会继续往下找到相同的单词,然后自动选中。1 使用双击打开,就是编辑状态。我一直想找能自动生成流程图的插件,可惜还没找到。不过感觉这个方式也不是很好,会占用很多空间。Ctrl + /(这个真的很棒。这个不用多说了,嵌入式开发必用。原创 2024-03-27 01:46:01 · 423 阅读 · 0 评论 -
Git学习2 -- VSCode中的Git
在第一栏source control,可以进行基本的git操作。主要的git操作都是在这里,pull,push,commit这些。第一个是自带的Source Control。第二个是Gitlens,第三个是Git Graph。最后还有个Git History,我觉得也是挺有用的。特别是merge版本,升级版本啥的。第四栏的remotes,应该是可以看到远端的各个分支。第三栏的branches,应该是可以看到各个分支。第六栏的TAGS,则是可以看到之前打的tag。第五栏的stash,可以看到本地缓存。原创 2024-06-16 16:56:53 · 1388 阅读 · 0 评论 -
Git学习1 -- 常用命令(持续更新)
将生成的patch文件传输给其他人或应用程序。不确定远端仓库名和分支名的话,可以用gitremote-v和gitbranch-r查看。:确定要生成patch的提交范围,可以是单个提交、一系列连续的提交,或者两个提交之间的差异。Gitrebase和Gitmerge区别,然后rebase会丢失提交,所以一般用merge。是要生成patch的提交范围的最后一个提交。的文件,其中包含了从指定提交到当前HEAD的所有更改。或者使用gitfetch也可以,完了再merge一下。原创 2024-05-03 21:31:02 · 388 阅读 · 0 评论 -
一些不错的技术网站书签(持续更新)
基础:原创 2024-05-03 21:37:16 · 995 阅读 · 0 评论