- 博客(30)
- 收藏
- 关注
原创 基于Linux的TCP服务端客户端通信(一)
这个时候build里会出现两个编译好的server和build,然后两个终端分别运行即可。首先要知道TCP的话是个面向连接的,所以需要connect这种来创建连接后再进行通信。多线程的话考虑使用pthread库来进行处理多个客户端的连接。需要写一个CMakeLists.txt来帮助编译。下面将进行一步一步的实现,也作为我的一个记录。下面是client.cpp代码内容。下次优化,自行进行输入输出。接下来步骤我直接写一起了。
2025-11-06 22:21:33
241
原创 设计模式——建造者模式
是Builder类的具体实现,负责实现构建各个产品部分的方法。它在buildPartA()和buildPaetB()中指定了产品每个部分的具体内容。getResult()方法返回最终建造的产品;
2025-10-13 11:15:48
487
原创 设计模式——工厂模式
工厂模式相对于简单工厂模式的不同就是将工厂类也写成了纯虚函数作为一个接口类的形式,然后再针对具体的产品来继承该工厂类,并重写其方法实现。工厂方法模式定义了一个创建对象的抽象方法,一个具体的工厂类负责生成一种产品,如果需要添加新的产品,仅需新增对应的具体工厂类而不需要修改原有的代码实现。提供一个工厂基类,然后它有很多工厂子类用来区分不同的需求,另外完成这些不同的需求可能还需要一些东西,所以还有几个抽象类,他们也有不同的子类。工厂模式关注的是创建单一类型对象,定义一个抽象方法,由子类实现具体对象的实例化。
2025-10-12 16:13:28
813
原创 设计模式——单例模式
单例模式是一种创建型设计模式,它可以确保一个类在整个程序运行过程中只有一个实例,并提供一个全局访问点以获取该实例。构造函数和析构函数是私有的,不允许外部生成和释放静态成员变量和静态返回单例的成员函数禁用拷贝构造和赋值运算符单例类主要是通过一个公共的静态方法getinstance接口,用于获取该类的实例,如果实例不存在,则在该方法内部创建实例并返回。也就是说,单例类的构造方法不让其他人进行修改和使用;并且单例类只创建一个实例,这个实例,其他人也无法修改和直接使用;
2025-09-26 22:53:14
830
原创 C++——STL
STL分为:Algorithm(算法)、Container(容器)、Iterator(迭代器)。细一点的话:容器、算法、迭代器、仿函数、适配器、空间配置器。
2025-09-19 23:06:38
1130
原创 C++——面向对象
让某种类型对象获得另⼀个类型对象的属性和⽅法,它可以使⽤现有类的所有功能,并在⽆需重新编写原来的类的情况下对这些功能进⾏扩展把客观事物封装成抽象的类,并且类可以把⾃⼰的数据和⽅法只让可信的类或者对象操作,对不可信的进⾏信息隐 藏同⼀事物表现出不同事物的能⼒,即向不同对象发送同⼀消息,不同的对象在接收时会产⽣不同的⾏为(
2025-09-19 22:20:38
798
原创 linux系统编程——文件描述符、open、read、write、lseek、stat、属性操作、目录操作、dup、dup2、fcntl
一个应用程序,打开一个文件a打开一个文件b等等,你需要一个数组来存储这些文件描述符。每打开一个新文件,则占用一个文件描述符,而且是空闲的最小的一个文件描述符;在linux系统中,进程是通过文件描述符(file descriptors 简称fd)来访问文件的,文件描述符实际上是一个整数。表中前三个默认是被使用的,:0(标准输入)、1(标准输出)、2(标准错误);默认是打开状态,对应文件是当前终端。不是说文件描述符表里都是指向文件吗,在linux中一切皆文件,这些也是指向设备文件。文件描述符表就是一个数组。
2025-07-01 14:50:51
214
原创 linux系统编程——地址空间
在每一个进程建立的时候,操作系统不仅会为进程创建一个PCB,同时还会为每一个进程创建一个进程地址空间,即每一个进程都会有自己独立的进程地址空间。我们在C/C++中看到的所有的地址都是虚拟地址,物理地址用户一概看不到,是由操作系统统一管理的。
2025-07-01 14:25:10
343
原创 linux系统编程——Makefile、GDB调试
而工程也是需要被清理的。像clean这种没有被第一个目标文件直接或者间接关联,那么它后面的命令就不会被执行,所以我们可以显式要make执行,即make clean,以此来一次性清除所有生成的目标文件,以便于重新编译。makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile文件就像一个shell脚本一样,也可以执行操作系统的命令。如果依赖的时间比目标的时间早,目标不需要更新,对应规则中的命令不需要被执行。
2025-07-01 14:15:20
437
原创 linux系统编程-gcc、静态库、动态库
静态链接即在编译链接时,将代码所使用到的静态库文件代码全部加入到可执行文件中(拷贝实质上是将库文件的代码展开拷贝至我们的可执行程序的代码段。),这样做的缺点是可执行文件会生成的比较大,优点是此时再运行可执行文件就不需要再查找库了。静态库文件一般以 .a 结尾。动态库链接不会在编译时将动态库文件的代码加入到可执行文件中,而是在可执行文件运行时,去查找所需的动态库,并将其加载到相应的进程中,并且不同的进程可以共享这些动态库,动态库文件一般以 .so 结尾。
2025-07-01 13:56:29
819
原创 ubuntu部署owlh猫头鹰一体机
安装和配置 httpd/apache 服务器端下载 OwlHInstaller通常是需要修改一下action部分。
2025-04-14 15:48:57
178
原创 Ubuntu-安装部署ntp
启动ntp服务查看服务状态停止systemd-timesyncd服务防止systemd-timesyncd服务开机自启正确时区查看是否正确date编辑配置文件最后加上限制只允许10.60.0.0网段的主机访问本服务器(机器ip是10.60.81.86)重启查看服务状态这里服务端就设置好了。客户端用来同步服务端的时间。
2025-04-11 17:37:09
655
原创 Solidity——速通学习
这一讲,我们介绍了什么是函数选择器selector),它和msg.data函数签名的关系,以及如何使用它调用目标函数。在这一讲,我们介绍了如何在Solidity使用try-catch只能用于外部合约调用和合约创建。如果try执行成功,返回变量必须声明,并且与返回的变量类型相同。
2025-03-22 22:16:31
2186
原创 Centos7安装geth,搭建部署以太坊私有链
该目录下保存了各个账户的私钥的加密后的文件, 与我们学习过的。提示,因为 geth1.11以上版本,当执行personal等指令时会出现异常,这是因为新版本的geth已经取消的personal等模块。在我们现在的环境下,需要启动一个 Geth 节点来接入私链网络(实际上也是这个私链网络的唯一一个节点),负责在创世块后挖出第一个块。创世配置就是供以太坊私有链第一次启动时所使用,创世区块是最特殊的区块,它没有前一个区块,因为它自己是第一个块。上面的内容是保存在genesis.json文件中的。
2025-02-25 16:05:29
1630
3
原创 JAVASE——反射、注解、动态代理
java代码里特殊标记,比如:@Override、@Test等,作用:让其他程序根据注解信息来决定怎么执行该程序。public @interface 注解名称 {public 属性类型 属性名() default 默认值;特殊属性名:value如果注解中只有一个value属性,使用注解时,value名称可以不写。
2025-02-21 15:07:19
446
原创 JAVASE——网络编程
TCP,UDP两种不同的协议下可以使用同一端口;CS架构(Client客户端/Server服务端)、BS架构(Browser浏览器/Server服务端)发送端每次把要发送的数据、接收端IP、等信息封装成一个数据包,发出去就不管了。java提供了一个java.net.DatagramSocket类来实现UDP通信。端口的作用是表示计算机上一个程序的进程。不同的进程有不同的端口号,用来区分软件。三次握手建立连接,传输数据进行确认、四次挥手断开连接。要保证在不可靠的信道上实现可靠的数据传输。
2025-02-18 14:30:54
397
原创 JAVASE——集合框架
集合是一种容器,用来装数据的,类似于数组,但集合的大小可变,开发中也非常常用。Collection代表单列集合,每个元素只包含一个值Map代表双列集合,每个元素包含两个值。
2025-02-13 17:55:28
776
原创 JAVASE——异常、泛型
自定义运行时异常定义一个异常类继承RuntimeException重写构造器通过throw new 异常类(xxx)来创建异常对象并抛出特点:编译阶段不报错,运行时才可能出现,提醒不属于激进型自定义编译时异常定义一个异常类继承Exception重写构造器通过throw new异常类(xxx)创建异常对象并抛出特点:编译阶段就报错,提醒比较激进。
2025-02-12 16:38:55
197
原创 区块链技术与应用——肖臻(ETH)
以太坊设计mining puzzle,对内存要求很高。用proof of stake代替proof of work智能合约(smart contract)比特币是一种去中心化的货币以太坊的出现,一个特性就是增加了去中心化的合约的支持货币本来是由政府发行,价值由政府来定义来维护货币体系的正常运行;比特币的出现用技术手段把政府的这些职能给取代了。现实中也是由政府来维持使用的;如果合同中的内容可以通过程序代码来实现,那么可以把这个代码放到区块链中,通过区块链的不可篡改性,来保证代码的正确运行。
2024-12-17 22:08:31
1654
原创 区块链技术与应用——肖臻(BTC)
有人提出将UTXO中的交易也组织成一个Merkle Tree,将其根哈希值写在铸币交易的CoinBase域里面,而铸币交易中的此内容也会随着影响交易的Merkle Tree的根哈希值,这在轻节点里是保存了的。出现硬分叉之后,出现了两条平行运行的链,两条链上的BTC也是不相干的,各挖各的矿。假设大部分节点升级了软件,少部分节点没有升级(可能是没来得及升级,也可能是不同意协议的修改),这种分叉称为protocol fork,即对比特币协议产生了分歧,使用不同版本的协议而产生的分叉。如此下来,N个人怎么办?
2024-04-30 23:24:12
1561
2
原创 吴恩达机器学习笔记(三)
来看看图左边,之前我们对代价函数使用梯度下降,我们反复更新参数w, b ,其实,正则化线性回归的更新看起来和这个是一样的,处理现在大代价函数 J 的定义有些不同了。假设我们惩罚所有的100个特征,使用一个新的值lambda,它被称为正则化参数regularization parameter与学习率一样,我们必须给lambda选择一个数字λ>0,一般情况下,我们不会因为参数b太大而惩罚它,因为是否这样做,我们在实际中得到的结果都是差不多的,当然你也可以选择惩罚参数b。的图像如下,其工作原理与y=1相同。
2023-07-20 09:40:54
117
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅