- 博客(53)
- 收藏
- 关注
原创 3 Windows多线程
windows线程同步的方式一共四种:互斥对象、事件对象、信号量、关键代码段。互斥对象、事件对象、信号量属于内核对象,由于利用内核对象进行线程同步,所以速度较慢。但是这也使得可以在多进程中的各个线程中进行同步。关键代码段在用户方式下,因此同步速度较快,但在使用关键代码段时,很容易进入死锁状态,这是因为等待进入关键代码段时无法设定超时值,而且只能实现在同进程中的线程同步(当一个线程尝试进入一个已被其他线程占用的关键代码段时,它将会被阻塞,直到获得访问权限为止。
2024-01-09 15:53:33
897
原创 2 Windows网络编程
C/S模式是指Client/Server模式(客户端/服务器模式)。它是一种计算机架构模式,用于描述分布式计算中的两个主要组成部分:客户端和服务器。客户端是指发起请求的用户或应用程序,它向服务器发送请求并等待服务器的响应。服务器是指接受客户端请求,并提供相应服务或资源的中央计算机或系统。
2024-01-02 23:06:37
1188
原创 1 手写第一个Win32窗口程序
LPCTSTR: 根据环境配置,如果定义了UNICODE宏,则是LPCWSTR类型,否则则为LPCSTR类型。TCHAR: 如果定义了UNICODE,则为WCHAR,否则为CHAR。DWORD: 32位无符号整型数据(DWORD32)LONGLONG: 64位符号整型(LONG64)HANDLE: 对象的句柄,最基本的句柄类型。LONG: 32位符号整型(LONG32)DWORD64: 64位无符号整型数据。SHORT: 无符号短整型(16位)INT32: 32位符号整型。INT64: 64位符号整型。
2023-12-25 01:11:41
1006
原创 239. 滑动窗口最大值
单调队列解决区间求极值的问题,单调队列永远在维护尽可能是最大的值,那些肯定不是最大的值在push的过程中就已经被弹出了。
2023-08-07 14:43:37
247
原创 栈
栈是只允许一端进行插入或删除的线性表// 存放栈中元素 int top;// 栈顶指针 } SqStack;10// 存放栈中元素 int top;// 栈顶指针 } SqStack;用链式存储实现的栈。
2023-07-20 21:30:36
57
原创 线性表
线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时,线性表是一个空表。若用L来命名线性表,则一般表示为:ai是线性表中的“第i个”元素,i代表的是线性表中的位序a1是表头元素、an是表尾元素除了表头元素外,每个元素有且只有一个直接前驱;除了表尾元素,每个元素有且只有一个直接后继线性表的顺式存储也叫顺序表。顺式存储:把逻辑上相邻的元素存储在物理位置也相邻的存储单元中,元素之间的关系也由存储单元的邻接关系来体现为了使逻辑上相邻的元素,在物理上也相邻,顺式表用。
2023-07-20 01:48:31
77
原创 算法和算法评价
一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度之和记为T(n),它是该算法问题规模n的函数,时间复杂度主要分析的就是T(n)的数量级。
2023-07-14 00:39:59
284
原创 数据结构的三要素
逻辑结构是线性结构基本运算:查找第i个元素、在第i与第i+1个元素之间插入元素、删除第i个数据元素等等运算的定义是针对逻辑结构,指出运算的功能;运算的实现是针对物理结构,指出运算的具体步骤。
2023-06-25 23:06:09
600
原创 数据结构讲了什么?
数据结构学了什么?如何用程序代码把现实世界的问题信息化(1)虚拟货币 (2)微信小程序排队等餐如何用计算机高效的处理这些信息从而创造价值
2023-06-25 19:59:50
188
原创 06 网络套接字函数
典型的服务器程序可以同时服务于多个客户端,当有客户端发起连接时,服务器调用的accept()返回并接受这个连接,如果有大量的客户端发起连接而服务器来不及处理,尚未accept的客户端就处于连接等待状态,listen()声明sockfd处于监听状态,并且最多允许有backlog个客户端处于连接待状态,如果接收到更多的连接请求就忽略。客户端需要调用connect()连接服务器,connect和bind的参数形式一致,区别在于bind的参数是自己的地址,而connect的参数是对方的地址。
2023-05-22 22:51:35
62
原创 04 sockaddr数据结构
IPv4和IPv6的地址格式定义在中,IPv4地址用sockaddr_in结构体表示,包括16位端口号和32位IP地址,IPv6地址用sockaddr_in6结构体表示,包括16位端口号、128位IP地址和一些控制字段。UNIX Domain Socket的地址格式定义在sys/un.h中,用sock-addr_un结构体表示。各种socket地址结构体的开头都是相同的,前16位表示整个结构体的长度(并不是所有UNIX的实现都有长度字段,如Linux就没有),后16位表示地址类型。
2023-05-22 22:15:24
269
原创 03 IP地址转换函数
af 参数指定了地址族,可以是 AF_INET(IPv4)或 AF_INET6(IPv6)src 参数是一个指向以点分十进制表示的IP地址字符串的指针。dst 参数是一个指向用于存储转换结果的缓冲区(内存)的指针。函数将点分十进制的IP地址转换为。
2023-05-21 23:43:19
109
原创 02 网络字节序
例如上一节的UDP段格式,地址0-1是16位的源端口号,如果这个端口号是1000(0x3e8),则地址0是0x03,地址1是0xe8,也就是先发0x03,再发0xe8,这16位在发送主机的缓冲区中也应该是低地址存0x03,高地址存0xe8。发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存,因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址。TCP/IP协议规定,
2023-05-21 23:23:59
106
原创 01 套接字概念
Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。既然是文件,那么理所当然的,我们可以使用文件描述符引用套接字。与管道类似的,Linux系统将其封装成文件的目的是为了统一接口,使得读写套接字和读写文件的操作一致。区别是管道主要应用于本地进程间通信,而套接字多应用于网络进程间数据的传递。在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程。“IP地址+端口号”就对应一个socket。欲建立连接的两
2023-05-21 23:06:13
53
原创 03 Linux用户和权限
(3)比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限。选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g。权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。其中:u表示user所属用户权限,g表示group组权限,o表示other其它用户权限。选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留。所以751表示: rwx(7) r-x(5) --x(1)
2023-05-06 23:08:04
61
原创 14 事务
一个事务其实就是一个完整的业务逻辑。是一个最小的工作单元。不可再分。什么是一个完整的业务逻辑?假设转账,从A账户向B账户中转账10000.将A账户的钱减去10000(update语句)将B账户的钱加上10000(update语句)这就是一个完整的业务逻辑。以上的操作是一个最小的工作单元,要么同时成功,要么同时失败,不可再分。这两个update语句要求必须同时成功或者同时失败,这样才能保证钱是正确的。
2023-04-21 17:18:56
52
原创 11 表的增删改(二)
但是使用truncate之前,必须仔细询问客户是否真的要删除,并警告删除之后不可恢复!(1)delete语句删除数据的原理?删除的时候,使用delete,也许需要执行1个小时才能删除完!// 这不是删除表中的数据,这是把表删除。表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放!这种删除优点是:支持回滚,后悔了可以再恢复数据!添加一个字段,删除一个字段,修改一个字段!这种删除效率比较高,表被一次截断,物理删除。truncate是删除表中的数据,表还在!这种删除缺点是:删除效率比较低。
2023-04-18 11:05:52
39
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人