- 博客(403)
- 资源 (4)
- 收藏
- 关注
原创 6_线程安全_线程间的内存可视性_1
当线程解锁互斥量时看到的内存中的数据,同样也能被后来直接锁住(或通过等待条件变量锁住)相同互斥量的线程看到。问题点在于如果读到的是完整的旧数据或者完整的新数据,都是ok的,会不会读到部分新数据部分旧数据的“撕裂数据”。但在网上搜索的多是零言碎语,不成体系——内存屏障、lock-free、cache命中等,所以今天又翻了上面的书,虽不能完全解惑,但还是有不少收获的、。C++新特性知识的萃取,股票复盘,投资经验的review,对特定方向持续且深入的思考,当前经济形势下,如何“苟住”,是否有新的机会可以把握。
2025-11-16 23:38:14
229
原创 gitlab 删除已提交的分支信息
如果你之前拉取过远程分支并在本地创建了跟踪分支,在远程分支被删除后,可以使用。命令清理本地仓库中那些远程分支已被删除的跟踪分支。
2025-11-12 16:48:26
78
原创 博弈与自由_202051102
当前环境之下,有工作已经挺好的了,而人总会不满于当下,想要得到的更多,并不幸福,更无法‘自由’,那自由究竟是什么呢?[个人理解],或许你会觉得自己的上司难以胜任他的角色,但是这个评价维度是单一的,即要多维度看待,当时任命时可能可选择的有限;在马克思主义理论中,“自由”不是抽象的个人意志自由或思想自由,而是一种根植于社会现实、生产关系与历史发展的。马克思主义的自由,是从受物质与社会关系制约中解放出来,通过认识和改造世界,获得自我实现与全面发展的能力。每个人的自由发展是一切人的自由发展的条件。
2025-11-02 17:38:37
278
原创 架构设计专题——多线程数据安全
每天正常7.5工作小时,18:00下班,一般吃完饭遛会儿弯,到公司19:30左右,工作到21:00,可以领个夜宵;21:00离开公司,如果住的地方离公司远些,到家估计22:00了,再稍微收拾收拾,也就该就寝了,基本没有个人生活!工资就那样吧,年终奖要看绩效的,据说绩效是B,有3,但我觉得够呛。我来了半年,算项目经理,跑路4个了——问题不大,人才是流动的。国庆后,经过半年的试用期,终于转正了!工作也相对集中一些,今年最后两个多月,主要计划还是工作为主,继续锻炼身体,后面做美食的手艺还要重新捡起来!
2025-10-19 22:00:01
317
原创 理想国——钱生钱的威力
不知道铁子们有没有计算过钱生钱的效果,下面以几个不同的本金和年化利率进行计算,最后结果可以体验一下,尤其是本金达到200W、300W时。假定系统的初始条件——第一桶金,现实中普通人很难直接有第一桶金,现在的我们像骆驼祥子,攒属于自己的一辆黄包车本金。本金越大,追求越稳。所以常听到年化稳定13%已经是挺难的事情了。200W年化10%,还打啥工啊。诸君共勉,世界很大,容得下你,容得下我,亦容得下他。利滚利的赚钱如下,其负债亦对称!
2025-09-15 00:00:35
877
原创 中国是部金融史_上_1_摘抄
3.“在历史的长焦镜头中,金钱永远可以代表利益,所谓“民心”不过是给大部分人一个公平赚钱的机会,这才是一个社会最大的“道德”;在绚丽多姿的历史长卷中,金钱又永远不可能成为主角,它只是财富的一个符号,对与错,只在用钱的人。4.周武王姬发上位两年驾崩,周公姬旦才是建立周朝制度的人物,所谓封建,意指封而建之,周公封72国,其中姬姓53。商鞅变法归结下来就是“重农抑商”,农民老实,地在哪儿,人在哪儿,好管理;二、灭绝文化,也就是愚民,笨人就算心里有小九九,在当权者看来也是班门弄斧,一看见,心情一不好,弄死你;
2025-09-08 23:10:31
272
原创 5_软件重构_模块间通讯方式_事件
对接口调用进一步提炼,是数据的收发,高频数据用回调函数的方式来解决,不过此时仍有一定耦合但也能接受,直接开一个线程高频舒心是不被接受的。其他数据收发,如机械臂运动目标点位的下发,这块直接调用接口也能接受,但是如果不想包含对方的头文件呢?如果模块间交互数据改为buf+size,就很C风格,那结构体就是绕不开的,底层核心问题无法避免,最终还是取舍问题。实现思路:维护一个消息队列,广播时把消息写入多个队列,每个订阅模块消费自己的队列。缺点:调用链耦合,容易出现回调地狱,模块之间绑定紧密。
2025-08-31 16:48:20
762
原创 4_软件重构_二进制兼容接口设计
作为韭菜中的一棵,随波逐流。在这记录下,当股票一天的盈利达到一个月的工资时,竟然没什么感觉,只有对卖飞了的一点儿遗憾…我一直没有全仓,按照银河证券的计算方式今年我的盈利是12%。如果后面有较为客观的收益——按2~3年为收益周期统计,每年有月薪3千的收益即可,包括银行存款的收益或是其他投资收益。这个问题先不说,这次聊下接口的二进制兼容,主要是C++语言的。二进制兼容(Binary Compatibility, ABI Compatibility):旧的可执行文件或旧插件,不用重新编译,只换库文件就能跑。
2025-08-24 17:07:13
304
原创 近期总结_工作生活与股市20250817
将感受范围缩至个体,周一、周二、周四需要加班到21:00 – 21:30左右,这几个日期9点可以到食堂领东西,即至少要加班到21:00点~通常这几天是晚上19:30到公司开始加班,即加班一个半小时左右,但感觉还是挺累的……对于数据传递如算法模块反馈机械臂位姿信息,如位置、姿态、关节角等,以及一些IO信息,这里面位姿信息实时反馈,越快越好,但是过于频繁会占用较多的带宽,需考虑;控制器软件里面可以划分N多个模块,像解释器模块,运动控制模块,通讯模块,总线模块,算法模块,插件体系等。到深圳这个城市已经4个月了。
2025-08-17 21:15:54
488
原创 个人与时代
同年全国硕士研究生52.0万人。在学研究生263.96万人,其中,在学博士生36.2万人,在学硕士生227.76万人。毕业研究生57.80万人,其中,毕业博士生5.8万人,毕业硕士生52.0万人。2010年,初中毕业了,要去读高中了,同期全国入学人数836.24万人,县里那时有两个高中,一中和六中。毕业研究生108.36万人,其中,毕业博士生9.72万人,毕业硕士生98.64万人。每天走路上学,放学,三年级到五年级去了另外的村子读小学,原来一年级到二年级只有四个学生,新的村子学生多,好像三四十人。
2025-08-10 23:02:43
281
原创 3_软件重构_组件化开发实例方法论
各个斗胆认为想要做好《机械臂控制软件设计》,不光要有较好的软件设计基础,还要深入了解机械臂算法相关的内容。仅有上述的插件化思想还是远远不够的,当有接近大几十种机械臂类型,还有一些专用的机械臂软件,如码垛工艺、焊接工艺,焊接工艺进一步细分,电焊、弧焊等,这些软件是工艺插件还是独立软件?每个插件可以近似认为是一些有简单限制的动态库,当你有这些插件的头文件时,便可以调用他们的接口了。上述的前提是大家都在同一进程下,当跨进程的情况存在时,就需要设计新的通讯方式了。式开发,这样核心模块进一步解耦。
2025-08-03 20:32:50
435
原创 2_软件重构_一种组件化开发方式
②现有软件结构无法满足一些新需求,软件结构设计之初未考虑,后续改动工程量巨大③新老员工多人维护代码,代码走读形同虚设,代码越来越乱 .,选用里面最后一种方式,将每个模块作为一个动态库,理清各个模块之间的调用关系,将整体代码重新梳理解耦来实现“重构”。突然想到,我们每一个个体,正如这一坨坨的代码,只有先生存了下去,才有机会考虑是否能重构自我,还怪残酷的咧~头部公司可以投入资源去搞重构,而小公司往往就没这样的机会了。面对这一坨代码,是在现有代码上重构,还是直接推导重做不兼容,看具体情况了。
2025-07-27 21:05:23
410
原创 普通人的出路__1从各地收入统计看你何时攒够50W
其中,城镇非私营单位在岗职工年平均工资为98669元。2023年,江苏省城镇非私营单位就业人员年平均工资为125102元,其中,在岗职工年平均工资为127620元;我市2023年城镇非私营单位就业人员年平均工资为171854元,同比名义增长5.6%,扣除物价因素,实际增长4.8%。我市2023年城镇私营单位就业人员年平均工资为94215元,同比名义增长4.3%,扣除物价因素,实际增长3.5%。我市2022年城镇私营单位就业人员年平均工资为90322元,同比名义增长6.0%,扣除物价因素,实际增长3.6%。
2025-07-19 12:20:37
781
原创 退休计划总纲_1
17年7月1日毕业,目前已经打了8年工,存款50多W(几乎都在股市套着),虽然大盘3500点,但是不影响韭菜亏。自己在知乎上搜索了一些资料,存款30W是第一条分水岭,之后是50W,50W到100W,普通人还是靠打工,但是100W再往上,打工的收入占比要下降的。最好是工作10年,这样就满足在单一地点社保缴满10年,退休后按照上一个10年所缴地领取社保,为防止政策变化,最好再加5年,不过不一定可以工作那么久,毕竟现在是日新月异,不好预测。94年,17年毕业,软件开发工程师,刚把工作换到深圳,以前不加班的我现。
2025-07-13 23:51:35
215
原创 1_C++进程内模块之间调用函数的方式
使用操作系统的动态链接库(如 dlopen/LoadLibrary),或语言级别的动态导入(如 Python 的 importlib),运行时加载外部模块,并通过预定义接口调用。两个模块在编译/打包期就确定依赖关系,源文件里 #include(C/C++)或 import(Java/Python)对方的头文件/模块,然后直接调用对方的类方法。定义一个事件总线(EventBus),模块 A 发布(publish)某类事件,模块 B 订阅(subscribe)并在收到通知时执行回调。
2025-06-22 20:47:27
833
原创 1_啥是AimRT
软件架构在不同领域有着显著的差异,可靠性、安全性、高并发、可扩展、易维护,听起来很美好,实际上就我个人经历来看,软件架构是有生命周期的,在到达生命周期前是需要重构的。在套接字通信中,机器人充当客户端,其他设备充当服务器。该服务器的主要功能是加载、播放、暂停和停止机器人程序,设置用户访问级别,以及接收有关机器人状态的反馈。它服务于现代基于人工智能和云的机器人应用,提供完善的调试和性能分析工具链,以及良好的可观测性支持。上面哗哗的说了一堆,除了ros作为一个新的类型,剩余的还是可以归结为提到的三种类型。
2025-05-25 21:08:51
616
原创 初定——仅仅是开始
如今再回头看这个行业,赶上国产替代,赶上人形机器人风口,作为行业从业者,总感觉产品似乎没那么好,时常有些悲观情绪。一个产品需要有自己的定位,这也想要,那也想要的话,最终可能什么也得不到,一个成功的产品有偶然因素也肯定有必然因素。站在市场环境下看产品、看公司,就挺草率的,很多东西没那么高大上。大概搜了搜,国内普遍开始做机械臂的时间是2015年,回想一下,这会儿我在上大学,再仔细想想,诶,那会儿已经大二了,也在学校做机器人比赛,赶上了;当原来的架构经过市场几年的冲击之后,原来的结构早已“面目全非”,需要重构,
2025-05-18 00:03:06
209
原创 5_libpcap的使用例子
数据包过滤器(Packet Filter)是针对数据包的一种过滤机制,在Libpcap中采用BPF(BSD Packet Filter)算法对数据包执行过滤操作,这种算法的基本思想就是基于规则匹配,对伊符合条件的额数据包进行放行。具体来说,Libpcap的工作原理可以描述为,当一个数据包到达网卡时,Libpcap利用创建的套接字从链路层驱动程序中获得该数据包的拷贝,即旁路机制,同时通过Tap函数将数据包发给BPF过滤器。工业以太网三剑客之EtherCAT_EtherCAT开发_6。
2025-04-13 10:44:29
758
原创 4_profinet主站连接从站报文抓取
PN-DCP全称是Profinet Discovery and Configuration Protocol,用于Profinet网络中的设备发现和配置。LLDP_Multicast,属于LLDP协议,用于链路层发现,交换设备信息,如端口状态、系统描述等。PLC主站组态一拖二,PLC对外只有一个网口,其中一台从站是双口设备,一台从站是单口设备;Profinet专用范围:IEEE为Profinet分配的组播前缀为 01-0E-CF,后3字节用于特定功能。单口pn从站已运行,报文如下,2、 PN- CM协议。
2025-03-23 15:40:42
958
原创 3_profinet实时性调优
在Wireshark中捕获到的 Profinet 协议错误 RTA_ERR_CLS_PROTOCOL 和 AR consumer DHT/WDT expired (RTA_ERR_ABORT) 表示 Profinet 通信中的协议层异常,通常与实时通信的同步或看门狗超时相关。结合镇楼报文可知,PLC主站每4ms发一次报文,如果从站4ms内没有返回响应报文,则主站再次发送请求报文,当主站4次发送报文资源耗尽而从站仍没有回复报文,主站Alarm报文警告,plc红灯闪烁。优化方向——扩大缓冲区,减少处理压力;
2025-03-19 21:22:21
1220
原创 2_etherCAT通讯为什么那么快?
上次说到传统以太网为什么不具备实时性,这次聊一聊etherCAT的on the fly。 1.1 实时工业以太网 以太网的介质访问控制 MAC(Media Access Control)方式采用带有冲突检测的载波侦听多路访问机制 CSMA/CD(Carrier Sense Multiple Access with Collision Detection)。 这是一种非确...
2025-03-03 22:28:46
812
原创 1_传统以太网为什么不具备实时性
工业以太网的实时性:可靠、及时且确定地传输数据的能力,确保数据在规定时间内准确到达目标设备以满足工业自动化场景中对时间敏感的通信需求。 传统以太网为什么不具备实时性?1. CSMA/CD 冲突检测机制随机退避与重传:传统以太网采用 CSMA/CD(载波侦听多路访问/冲突检测) 协议。当多个设备同时发送数据时会发生冲突,设备需等待随机时间后重试。这种机制导致数据传输的 延迟不可预测,无法满...
2025-02-25 20:56:33
542
转载 为什么infj型人格人数最少?
需要有一个情绪十分不稳定但确确实实爱你的母亲一个木头般不言不语,让你觉得无法交流的父亲你需要从小见识到大人们的虚伪你需要受很多委屈流很多眼泪文字是有局限性的,成长的路上,走来的痛苦只有自己知道,要我详细写下来,不仅显得矫情,更是一次次扯开伤疤。总之,infj没什么好的,我现在是觉得s系非常不错,发自内心想成为这样的人。________________________________________...
2025-02-08 22:05:13
257
原创 level-icmp(ping)详细过程_6
TCP/IP协议栈将地址信息和协议分解标识符相结合, 以决定一个数据报是否被正确接收, 以及哪个实体将会处理该数据报。有几层还会检测数值( 例如校验和) , 以保证内容在传输中没有损坏1、TCP/lP中的复用、分解和封装虽然它不是TCP/IP协议族的真实部分, 但我们也能自底向上地说明从链路层开始如何进行分解, 这里使用以太网作为例子。我们在第3章讨论几种链路层协议。以太网帧包含一48位的目的地址...
2025-01-29 19:58:39
944
原创 level-ip connect详细过程_5
一、理论基础一——tcp socket connect详细流程TCP Socket的connect()系统调用的详细流程,涵盖从应用层到网络层的完整过程:1、应用层:调用 connect()int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);客户端调用 connect() 发起 TCP 连接请求。若 Soc...
2025-01-28 17:21:41
958
原创 Linux下level-ip安装及测试_4
先说下总体的思路——搞一个方便调试的tcp/ip协议栈,level-ip。再划分具体的操作,可以不用系统的socket的接口进行tcp通讯,如今,这个目标终于初步实现了。需要的一个组件是tun/tap,将虚拟出来的设备与实际网卡进行数据转发,这样用户态协议栈通过tun0进行中转,更多内容需要自己探索!测试环境:VMWare虚拟机ubuntu16.04(需支持tun/tap),Windows...
2025-01-17 14:25:39
1019
原创 Linux下tun/tap ping操作代码例子_3
上次对tun/tap做了介绍,本次使用“编程”做进一步的使用理解。1、创建接口创建新接口和(重新)附加到持久接口的代码本质上是相同的;不同之处在于前者必须由 root 运行(更准确地说,由具有 CAP_NET_ADMIN 能力的用户运行),而后者如果满足某些条件,可以由普通用户运行。让我们从创建新接口开始。首先,设备 /dev/net/tun 都必须以读/写方式打开。该设备也...
2025-01-08 19:22:08
882
转载 Linux虚拟网卡设备tun/tap介绍_2
上次说了linux下tun模块的编译安装,是tapip用户态协议栈测试的一个必选项。接下来一个一个了解。 tapip代码仓库:https://github.com/chobits/tapip什么是Tun/Tap? 在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备。不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行于操作系统上的...
2025-01-05 12:31:27
653
原创 linux下安装tun模块详细教程
原本是要看tcp/ip协议栈,找到了https://github.com/chobits/tapip这个。然后需要支持tun,完了开始安装。 TUN/TAP是一个虚拟网络设备,用于实现用户态程序和内核网络协议栈之间的数据交互。1、安装环境我的系统是ubuntu16.04 VMWare虚拟机,原来是这个版本。2、环境检查modinfotunmodinfo:ERROR: Module...
2024-12-30 20:20:17
2123
原创 3_TCP/IP连接三次握手与断开四次挥手
TCP/IP 通信是网络通信的基础协议,分为以下主要步骤:1、建立连接(三次握手)目的:保证双方建立可靠的通信连接。过程:1>客户端发送 SYN:客户端向服务器发送一个SYN(同步)标志位的包,请求建立连接。2>服务器回应 SYN-ACK:服务器收到后,返回一个带有SYN和ACK标志位的包,表示同意连接并确认客户端的请求。3>客户端发送 ACK:客户端收到SYN-AC...
2024-12-27 17:53:46
808
原创 2_linux下使用代码获取网卡信息
在 Linux 系统中,可以使用ethtool工具获取网卡的网速、双工模式以及自动协商状态。以下是具体步骤和示例:一、使用ethtool获取网卡信息1、获取网卡信息ethtool eth0 Settingsforeth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half10baseT...
2024-12-24 00:46:37
559
原创 linux下使用代码设置ip
一、linux下设置ip的几种方式在 Linux 系统中,设置 IP 地址有多种方法,具体取决于你使用的网络管理工具和配置文件。以下是常见的几种方式:1、使用ip命令设置临时IP地址ip命令是现代Linux中用于配置网络接口的推荐方法。查看网络接口:ip a设置临时IP地址:sudo ip addradd192.168.1.100/24dev eth0这将为eth0网络接口设置 IP地址19...
2024-12-22 20:49:57
2227
转载 如何简短地描述infj人格?
如果要概括一下,就是————「明明拿了反派的成长剧本,却依旧想成为最正道的光。」所以自我意志和创伤经历陷入不断搏斗,不断内耗。下面写一点标签∶①活得痛苦∶孤身走暗巷,创伤型人格。②Overthinking∶走一步算十步。说一句话之前会脑子里过一遍在场所有人听到这句话的感受。深谙人性的弱点,并且会为自己列A计划B计划C机会保护自己。她们的作战计划永远周全而阴郁。(哈哈哈很像先秦时期的纵横家派)③孤独...
2024-12-21 23:05:57
1264
原创 记一次网络无法ping通的排查
网络ping不通的问题于我而言是不好排查的,因为网络相关知识比较薄弱。1、问题情景再现 刚在调试一个网络协议栈从站时,用模拟主站去连接时,连接失败。今天下午在调试时,反复用主站连接断开几次,后面也出现连接不上的情况,这些是表象也是表现,但并不是问题的核心。然后去ping Linux主机,发现ping不通。 为了隔离问题,我验证过不运行协议栈时是可以ping通的;一运行协议栈...
2024-12-19 00:01:20
1395
转载 INFJ到底有什么特殊气质——写给INFJ的生活建议
《写给infj的生活建议》先说说我对mbti的看法。其实我仅仅知道那八个字母代表什么,更细分的什么Fi,什么Te我就完全看不懂了,算是了解不多。但无所谓,我没想成为mbti专家。我自己的话,在过去的几年间,测过好几次,简单版的复杂版的,免费版的付费版的,无论测几次我都是infj,算是个挺典型的infj吧。尤其我i和j的程度非常深。此外,我知道网上很多人瞧不起mbti,说讨论mbti的都是魔怔人、都...
2024-12-14 19:47:32
2056
原创 1_linux系统网络性能如何优化——几种开源网络协议栈比较
之前合集《计算机网络从入门到放弃》第一阶段算是已经完成了。都是理论,没有实操,让“程序猿”很难受,操作性不如Modbus发送的报文何时等到应答和tcp通信测试报告单1——connect和send。开始是想看linux内核网络协议栈的源码,然后编译调试,找了下流程,感觉不适合刚开始接触网络协议栈的初学者。受益于之前Modbus UDP开源库的想法,萌生了找一些开源网络协议栈来学习的...
2024-12-10 23:52:36
1670
原创 linux内核网络层学习
我测试环境是ubutnu22.04,内核版本:6.8.0-49-generic。我下载的是linux-6.7.tar.gz。1、 内核源码下载网址。
2024-12-08 23:10:30
359
ThreadClientSendPicture.zip
2019-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅