程序人生

程序员Aries1 小时前
linux·网络·c++·网络协议·程序人生
自定义网络协议与序列化/反序列化如果你做过网络编程,可能会遇到这样的问题:用TCP发了一个“1+1”的计算请求,对方却只收到了“1”;或者一次收到了“1+12+3”这种拼接的内容——这时候怎么判断哪个是完整的请求?又怎么把这些字符串解析成能计算的操作数和运算符?这篇文章就从TCP的“天生缺陷”说起,带你搞懂自定义协议的必要性、序列化与反序列化的核心逻辑,最后通过一个网络计算器实例,把这些知识点落地成可运行的代码。
立志成为大牛的小牛2 小时前
数据结构·笔记·学习·程序人生·考研·算法
数据结构——十七、线索二叉树找前驱与后继(王道408)摘要:本文详细介绍了中序和先序线索二叉树中查找指定节点的前驱和后继的方法。对于中序线索二叉树,当rtag=1时后继为右孩子,rtag=0时需找到右子树最左下节点;前驱同理通过ltag判断。先序线索二叉树中,后继根据左右孩子存在情况决定,前驱则需通过三叉链表或逆向遍历实现。文章提供了各场景下的算法思路和完整代码实现,包括非递归的中序/先序遍历方法。
菠萝吹雪ing3 小时前
运维·笔记·程序人生·自动化·接口测试·gui测试
GUI 自动化与接口自动化:概念、差异与协同落地“自动化测试”几乎成了现代软件研发的标配,但在实际落地过程中,团队往往要在两条技术路线之间做取舍:一条面向“看得见的界面”(GUI 自动化),一条面向“看不见的服务”(接口自动化)。二者有何本质区别?分别解决什么问题?能否协同?本文尝试用“概念 → 差异 → 策略 → 落地”的系统化视角,为读者提供一份可直接套用的参考指南。
郝学胜-神的一滴9 小时前
linux·服务器·开发语言·c++·程序人生·软件工程
Linux下的阻塞与非阻塞模式详解在现代计算机系统中,I/O操作是程序运行中不可或缺的一部分。无论是从标准输入读取用户输入,还是通过网络套接字传输数据,I/O操作的效率和响应时间对程序的整体性能有着重要影响。阻塞与非阻塞模式作为I/O操作的两种基本处理方式,直接影响着程序的运行效率和用户体验。
润 下13 小时前
c语言·开发语言·经验分享·笔记·学习·程序人生·其他
C语言——深入解析C语言指针:从基础到实践从入门到精通(三)前面简单介绍指针访问数组,本节接介绍指针和数组的关系,如何用指针更高效,更快捷的访问数组!在前面我们在使用指针访问数组的时候通常用:
润 下13 小时前
c语言·开发语言·经验分享·笔记·学习·程序人生
C语言——深入解析C语言指针:从基础到实践从入门到精通(二)前面介绍了指针的一些基本概念,本节介绍const修饰指针,野指针,assert断言,指针的调用方法const是常属性,不能改变
li星野1 天前
笔记·程序人生·fpga开发·学习方法
打工人日报#20251010在“IP Catalog”窗口的搜索栏中输入“Block Memory”关键字后ram_wr_we 信号拉高,说明此时是对 ram 进行写操作。ram_wr_we 信号拉高之后,地址 和数据都是从 0 开始累加, 当 ram 地址为 0 时,写入的数据也是 0;当 ram 地址为 1 时,写入的数据 也是 1。当地址为 32 时,读启动信号(rd_flag)被拉高,此时将读端口使能,开始读出 ram 中的数据,这 里大家可能会有一个疑惑,明明我们代码中是在写地址计数到 31 的时候给 rd_flag 赋值
郝学胜-神的一滴2 天前
开发语言·python·程序人生·软件工程
Effective Python 第44条:用纯属性与修饰器取代旧式的 setter 与 getter 方法在编写高质量的 Python 代码时,如何优雅地管理类的属性访问是一个重要的问题。传统的 getter 和 setter 方法虽然能够实现属性的封装和控制,但代码显得冗长且不够 Pythonic。而 Python 提供的 @property 装饰器则为我们提供了一种更简洁、更优雅的解决方案。本文将详细介绍如何用纯属性与修饰器取代旧式的 getter 和 setter 方法,并探讨其优缺点及适用场景。
立志成为大牛的小牛2 天前
数据结构·笔记·学习·程序人生·考研
数据结构——十四、构造二叉树(王道408)本文介绍了通过不同遍历序列构造二叉树的原理与方法。主要内容包括:1)单一遍历序列(前序/中序/后序/层序)无法唯一确定二叉树结构;2)前序+中序序列构造二叉树的递归思想与实例;3)后序+中序序列构造方法;4)层序+中序序列构造方法。核心要点是必须结合中序序列才能唯一确定二叉树结构,因为中序序列能准确定位根节点位置,从而划分左右子树。通过多个实例演示了如何根据不同的遍历序列组合逐步还原二叉树结构。
郝学胜-神的一滴3 天前
linux·服务器·开发语言·数据库·c++·程序人生·软件工程
使用Linux的read和write系统函数操作文件在Linux系统编程中,文件操作是非常基础且重要的部分。Linux提供了多个系统调用来实现文件的读写操作,其中read和write是最常用的两个函数。本文将详细介绍这两个系统调用的功能、使用方法以及实际应用中的注意事项。
郝学胜-神的一滴4 天前
开发语言·python·程序人生·软件工程
Python中的鸭子类型:理解动态类型的力量Python以其动态类型系统而闻名,而鸭子类型(Duck Typing)是这一系统的核心特性之一。鸭子类型是一种编程范式,它强调“行为”而非“类型”。换句话说,如果一个对象“像鸭子一样行走、游泳和嘎嘎叫”,那么它就可以被视为鸭子,而无需显式地检查其类型。
li星野8 天前
笔记·程序人生·fpga开发·学习方法
打工人日报#20251005点击“Flow Navigator”窗 口中的“IP Catalog”按钮, 双击“ILA(Integrated Logic Analyzer)”会弹出“ILA IP”核的配置页面 Documentation、IP Location、Switch to Defaults 三个设置 Documentation:IP 相关文档入口
li星野8 天前
笔记·程序人生·学习方法
打工人日报#20251002假期进行中功能: LED默认常亮 按下按键对应的LED熄灭 当连接用户 LED 灯的 IO 电压为高时,用户 LED 灯熄灭,当连接 IO 电压为低时,用户 LED 会被点亮。 4 个用户 KEY 均连接到 PL 端 BANK35的 IO 上。按键按下,信号为低
郝学胜-神的一滴9 天前
开发语言·python·程序人生·软件工程
Effective Python 第39条:通过@classmethod多态来构造同一体系中的各类对象在面向对象编程中,多态性是构建灵活、可扩展系统的核心机制之一。我们通常讨论的是对象级别的多态,但你是否意识到,Python 的类本身也可以实现多态?通过 @classmethod,我们可以让类具备通用的对象构造能力,从而提升代码的复用性和扩展性。
知识分享小能手9 天前
前端·javascript·学习·程序人生·微信小程序·小程序·vue3
微信小程序入门学习教程,从入门到精通,微信小程序开发进阶(7)微信小程序允许开发者通过 Component() 构造器创建自定义组件。组件包含四个文件:.json(配置)、.wxml(结构)、.wxss(样式)、.js(逻辑)。
郝学胜-神的一滴10 天前
开发语言·c++·程序人生·软件工程
Effective STL 第1条:慎重选择容器类型C++标准库提供了丰富的容器类型,可以大致分为以下几类:选择容器类型时,需要根据具体的使用场景和性能需求进行权衡。以下是一些常见的选择原则:
敲代码的苦1311 天前
程序人生·代理模式·学习方法·软件需求·格式工厂
【最新】2025年计算机软件著作权合作开发协议示例文件计算机软件著作权合作开发协议是明确合作开发各方权利义务、确保软件成果归属及利益分配的核心法律文件。以下结合2025年现行法律法规及行业实践,从协议框架、核心条款、法律依据等方面进行系统介绍,并附示例文件要点解析。
敲代码的嘎仔13 天前
java·开发语言·数据结构·程序人生·算法·宽度优先
牛客算法基础noob56 BFS题目描述 Bob 在学习完 DFS 后,自己发明了一种新的搜索方法——BFS(Bob First Search)。 该方法定义为:在给定字符串中,从前向后查找子串 "Bob" 首次出现的位置(不区分大小写)。
敲代码的嘎仔13 天前
java·开发语言·数据结构·程序人生·算法·leetcode·学习方法
牛客算法基础noob59 简写单词定义一种复合词的简写规则:提取每个组成单词的首字母,转为大写写即为简写形式。示例: -∙“College English Test”简写为“CET”; ∙“Computer Science”简写为“CS”; ∙“I am Bob”简写为“IAB”。
li星野14 天前
笔记·程序人生·fpga开发·学习方法
打工人日报#20250930最后一天,迎接放假,南京到杭州,杭州转深圳,连夜去香港,为了减少行李,换成了看电子书。 祝大家假期快乐🎉🎉