- 博客(66)
- 收藏
- 关注
原创 c++——类和对象
析构函数实在类名前面加上字符~。无参数无返回值类型。析构函数是不存在函数重载的,也就是一个类只能有一个析构函数。类的对象出了作用域调用析构函数,若有显示的析构就调用显示,否则调用默认的析构函数。对于日期类不用析构函数(因为它的成员变量年月日时三个整型变量,都是内置类型)。但是栈类型要写默认的析构函数,因为栈的有一个成员变量int* arr是动态开辟的空间。
2024-09-03 11:00:27
1060
原创 小土堆pytorch
anaconda安装pip list 可以看有哪些package包nvidia-smi查看显卡的状态安装pytorch检验pytorch是否安装成功,以及是否pytorch是否可以使用gpu。(1)查看conda版本conda --version 或 conda -V(2)更新conda(将conda自身更新到最新版本)(3)创建虚拟环境(4)激活虚拟环境(5)退出虚拟环境(6)删除虚拟环境。
2024-09-03 10:56:42
776
1
原创 红黑树(封装map和set)
红黑树每个节点新增了一个存储位(成员变量)表示结点的颜色,并且红黑树并不像AVL树一样是保持严格的平衡的,通过对任何一条从根到叶子的路径上各个结点着色方式的限制,
2024-09-02 14:36:46
602
原创 deep_thoughts
tensor就是一个n维的数组。从dim=0维度来进行splite从dim=1维度来进行splite将大小为1的维度直接移除掉,毕竟当某个维度的大小是1时,并没有新增额外的元素。cat是直接连起来,但是stack是堆叠起来,维度肯定是会扩充的。
2024-09-02 14:36:00
353
原创 特殊类的设计
一个类只能创建一个对象,换句话说这个类的对象全局只有唯一一份,即单例模式,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再 通过这个单例对象获取这些配置信息,这种方式简化了在复杂环境下的配置管理。对于单例对象的释放问题,由于全局都要显示使用它,所以一般不需要去显示去释放他,随进程结束而释放。
2024-09-02 14:33:02
167
原创 C++11
C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的内置类型和用户自 定义的类型,使用初始化列表时,可添加等号(=),也可不添加。关键字decltype将变量的类型声明为表达式指定的类型。范围for的底层就是迭代器由于C++中NULL被定义成字面量0,这样就可能回带来一些问题,因为0既能指针常量,又能表示 整形常量。所以出于清晰和安全的角度考虑,C++11中新增了nullptr,用于表示空指针。
2024-09-02 14:32:35
653
原创 linux 高级IO
IO=等(要进行io是要有条件的,要有数据或者有空间)+拷贝。高效体现在等待的时间所占比重越低越高效。阻塞IO:数据没有就绪,read不返回。在内核将数据准备好之前, 系统调用会一直等待。所有的套接字, 默认都是阻塞方式。非阻塞IO:非阻塞轮询,如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EWOULDBLOCK错误码。信号驱动IO: 内核将数据准备好的时候, 使用SIGIO信号通知应用程序进行IO操作。
2024-09-02 14:32:15
791
原创 日志系统前置知识
日志:程序运行过程中所记录的程序运行状态信息。通过这些信息,以便于程序员能够随时根据状态信息,对系统的运行状态进行分析。功能:能够让用户非常简便的进行日志的输出以及控制。
2024-09-02 14:21:29
1095
原创 日志和守护进程
并且自称进程组、自称会话。一般网络服务器,为了不受到用户登注销的影响,就需要让该进程该会话中独立出来,不要跟任何一个用户会话产生关联,独立成为一个会话,从包含关系变成并列关系,就有了守护进程的运行方式。4、如果登录就是创建一个会话,bash任务,启动我们的进程,就是在当前会话中创建新的前后台任务,那么如果我们退出呢就是销毁该会话,销毁会话就可能会影响会话内部的所有任务。会话>=进程组>=进程,固定的会话会关联一个固定的终端文件,进程组长就是多个进程当中的第一个,而会话进程也是一个bash进程。
2024-08-07 03:44:19
294
原创 套接字编程
先将数据通过os,将数据发送到目标主机(手段)TCP/IP协议完成,再在本主机将收到的数据推送到自己上层指定的进程,这时候网络通信本质上就成了进程间的通信。其中ip地址可以标识互联网上唯一的一台主机,而端口号可以标识主机内唯一的一个进程。网络通信本质就是通过IP+PORT构建进程的唯一性,来进行基于网络的进程间的通信。端口号为什么不采用进程的pid?
2024-08-07 03:36:23
1026
原创 异常和智能指针
异常的优点:1、异常对象定义好了,相比错误码的方式可以清晰准确的展示出错误的各种信息,附带各种你想要的数据,如sql语句。2、 返回错误码的传统方式有个很大的问题就是,在函数调用链中,深层的函数返回了错误,那 么我们得层层返回错误,最外层才能拿到错误。异常是通过抛出对象而引发的,该对象的类型决定了应该激活哪个catch的处理代码。实际中抛出和捕获的匹配原则有个例外,并不都是类型完全匹配,可以抛出的派生类对象, 使用基类捕获。异常是通过抛出对象而引发的,该对象的类型决定了应该激活哪个catch的处理代码。
2024-07-30 22:49:53
684
原创 容器适配器(stack 、 queue、priority_queue、deque)
适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。虽然stack和queue中也可以存放元素,但在STL中并没有将其划分在容器的行列,而是将其称为容器适配 器,这是因为stack和队列只是对其他容器的接口进行了包装,STL中stack和queue默认使用deque。
2024-07-25 10:58:45
999
原创 List容器
此处是带头双向链表对于List,不像string、vector之类的,没有reserve的说法,也不支持[ ]和下标,只有一种方式遍历List也就是采用迭代器(范围for的底层也是迭代器)。
2024-07-25 01:20:49
413
原创 计算机网络(传输层)
应用层的数据 并不是直接发送到网络而是交给了传输层,比如通过write拷贝到tcp的缓冲区,接下来数据什么时候发、怎么发、出错了怎么办完全由传输层去做决定。 端口号是包含在输层的概念,上层进程绑定某些端口号之后,传输层收到指定端口号的报文,有传输层上交给与该端口号绑定的指定进程。一个进程可以bind多个端口号,但是一个端口号一般只能bind一个进程。netstat所谓的udp就在内核里面,内核是用c语言实现的,所谓的报头就是结构体,添加报头就是再定义结构体或位段对象,在里面填数据,或者申请空间对
2024-05-18 03:33:46
940
原创 Linux(多线程)
线程是一个执行分支,执行粒度要比进程更细(线程执行的是进程的一部分),调度成本更低(不用再进行对cache的切换)。线程是进程内部的一个执行流,就是线程在进程的地址空间内运行,所以线程隶属于该进程。线程是cpu调度的基本单位,进程是承担分配系统资源的基本实体。一个进程在系统中创建是有自己的task_struct的,该结构下面有一个指针变量指向该进程的地址空间,如果该进程创建一个子进程,也会创建一个pcb并且里面存在一个变量指向该子进程的地址空间。
2024-05-13 05:36:49
814
原创 数据链路层
主机a向主机d发送的mac报文,在同一个局域网下的每一台主机在数据链路层都收到了这个mac报文,以主机b为例,提取到该mac报文的目的地址是macd和自己的mac地址macb不一样便直接将该mac报文丢掉。如果主机向询问对方的mac地址来封装mac帧,此时询问的mac报文的以太网目的地址不清楚的时候需要填写全FFFF视为广播,这是该局域网的每一台主机都会再数据链路层收到这个数据,mac层收到之后由于目的地址是全F也无法知道是不是给自己的,所以还要继续向上交付到ARP层。交换机是工作再数据链路层的设备。
2024-03-14 15:30:21
677
原创 计算机网络(网络层)
路由器构建子网的时候只能用私网ip,私有ip在不同的区域是可以重复的,无形之中增加了ip地址的数量 ,家用路由器至少有级联两个子网,一个是家里面的网络(1号设备),配置的是lan口ip,一个是运营商构建的转发集群的这个网络(末端设备),配置的是wan口ip。国内的网络一定是被网络运营商顶层设计过的。路由器可以级联多个子网,这是路由器必须配置多个ip地址,这是同一台路由器在不同的子网下是有不同的地址的,路由器一般代表一个子网的出口或者入口,所以路由器一般都是整个子网的1号主机,也就是其主机标识符一般是1。
2024-03-13 19:05:30
610
原创 计算机网络(应用层http)
协议本质就是双方约定好的某种格式的数据,常见的就是用结构体或者类来进行表达。结构化的数据方便被上层设置与读取。双方直接发结构化的数据要求双方的平台是一样的(因为不同操作平台对于结构化的数据有不同的要求,比方说内存对其的方法),这时候就需要序列化。
2024-03-03 18:56:47
1000
原创 计算机网络(应用层https)
ca证书的意义是保证客户端收到的消息并没有被篡改,验证了证书的合法性就验证了公钥的合法性,这就解决了上面客户端无法验证公钥合法性的问题。可以让服务器生成一对公钥和私钥,然后服务器以明文的方式将公钥发给客户端对数据进行加密,这时候从客户端到服务器的信道看起来还算安全,因为只有服务器可以对客户端的进行解密,但是如果服务器要向客户端发送数据呢,这时候一定不能用私钥加密,安全性仍然有问题。http绑定的端口号是80,https绑定的端口号是443,在发送数据的时候选择了不同的端口号,报文会转给相应的协议。
2024-03-03 18:56:27
402
原创 计算机网络
此时主机a和b在数据链路层向上的每一层收发到的报文都是一样的,但是数据链路层收发到的报文可能是不一样的,因为一个是以太网一个是令牌环网,采用的是不同的驱动程序。底层的网络差异很大,但是大家用的都是ip地址,这是因为ip地址屏蔽了底层网络的差异,是通过路由器加ip协议来实现这个过程的,每经过路由器,要解包,跨越到下一个子网的时候又要进行封装,如果两边的网络是不同的,路由器根据具体的网络进行对应封装成协议报头,从而可以因地制宜的实现在不同的网络下传输,这样ip变成了全球网络的基础。
2024-02-27 13:08:32
960
原创 linux(信号)
进程在没有收到信号的的时候,其实早就已经能够直到一个信号该怎么被处理,也就是进程能够认识并且处理一个信号,这是因为程序员设计进程的时候早就设计了对信号的识别能力。因为信号随时可能产生,所以在信号产生之前,我可能正在做优先级高的事情,我可能不能立马处理该信号,我们要在后续合适的时候进行处理,所有在信号产生和信号处理之间存在时间窗口。进程在收到信号的时候,如果没有立马处理这个信号,需要进程具有记录信号的能力。信号的产生对于进程来说是异步的,也就是操作系统发信号和进程执行自己代码这两个过程是互不干扰的。
2023-11-29 11:11:28
772
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人