久菜
码龄4年
关注
提问 私信
  • 博客:100,609
    社区:25
    动态:14
    100,648
    总访问量
  • 129
    原创
  • 207,373
    排名
  • 366
    粉丝
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2020-11-18
博客简介:

weixin_52669146的博客

查看详细资料
  • 原力等级
    领奖
    当前等级
    4
    当前总分
    836
    当月
    1
个人成就
  • 获得135次点赞
  • 内容获得45次评论
  • 获得214次收藏
  • 代码片获得192次分享
创作历程
  • 2篇
    2024年
  • 78篇
    2023年
  • 52篇
    2022年
成就勋章
TA的专栏
  • 常用
    1篇
  • C++IE
    9篇
  • 网络IE
    3篇
  • 操作系统IE
    13篇
  • 数据结构
    9篇
  • MySQL
    9篇
  • 网络
    17篇
  • C++
    21篇
  • 操作系统
    19篇
  • LeetCode
    10篇
  • 回溯
    2篇
  • 二叉树
    5篇
  • 滑动窗口
    1篇
  • HOT100
    7篇
  • 动态规划
    3篇
  • C专栏
    8篇
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

对于网络IO的理解

首先服务端将本机地址和端口bind在listensock上,再用listensock去将这个套接字设置为listen状态,然后调用accept,进入阻塞状态。如果此时有客户端请求连接,就是第一次握手的开始。客户端会先调用connect来申请连接:connect调用时是发送SYN,然后服务端返回SYN+ACK,然后客户端的connect返回,发送最后一个ACK,服务端接收到以后accept返回,开始进行read。这里的过程,服务端会被阻塞两次,一次是accept,一次是后续的read。
原创
发布博客 2024.03.05 ·
563 阅读 ·
5 点赞 ·
0 评论 ·
5 收藏

服务器未启动而端口进程仍在运行如何查看并杀死

比如这里的8080,我们此时并未启动服务器,但是它却正在运行,这会导致服务器刚启动就秒挂。如果没有日志的话会让人有点疑惑,这种情况可能是之前运行了该进程但是服务器那边没有正确地关闭导致的。
原创
发布博客 2024.02.01 ·
552 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

pid,ppid,pgid,sid进程间关系

我们是在 bash shell 下执行 ps 和 less 命令的,所以 ps 和 less 命的父进程是 bash 命令。这3条命令创建了1个会话 (SID是1943)和2个进程组 (PGID分别是 1943 和 2298)。bash 命令的 PID、PGID 和SID 都相同,很明显它既是会话的首领,也是组 1943 的首领。Linux 下每个进程都隶属于一个进程组,因此它们除了 PID 信息外,还有进程组 ID(PGID)。进程组将一直存在,直到其中所有进程都退出,或者加入到其他进程组。
原创
发布博客 2023.11.09 ·
441 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

为什么要有override

因为逻辑是用户编写的,那么肯定会有遗漏的地方,那就要规则来限制。就比如多态,都知道条件之一是子类重写了父类的虚函数,但是如果子类没有严格遵守这个规则,就无法达到目的。这其实挺难发现的,因为编译器也并不会去给我们指出来,毕竟多态也并不是一定要实现。刚开始看会以为这是个多态,但其实这并不是,会打印aaa而不是bbb。因为aaa函数并没有被严格地重写:const属性丢失了。还有一种好处是:能让人知道这个函数是重写并且是用作多态的。
原创
发布博客 2023.09.17 ·
417 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL事务

当我们执行一系列操作时,这些操作要么全部执行成功,要么全部回滚(撤销),就像完成一项任务一样。这个整体的执行过程就是一个事务。假设你要将100元从账户A转到账户B,这个过程可以分为两步:首先从账户A中扣除100元,然后将这100元添加到账户B中。如果这两个操作只有一个成功,另一个失败,那么转账就是不完整的。事务机制的目标就是确保在转账过程中,要么这两个操作都成功,要么两个操作都失败,保持数据的一致性。
原创
发布博客 2023.09.17 ·
488 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

MySQL里的查看操作

这个指的是列出当前表有什么结构。
原创
发布博客 2023.09.16 ·
519 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏

表的内连接和外连接

表的连接是SQL中的一种操作,用于将两个或多个表中的数据按照某个条件进行关联。
原创
发布博客 2023.09.11 ·
254 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL复合查询(查询直接看这里)

在这个查询中,使用了表达式 sal * 12 + IFNULL(comm, 0) 来计算年薪。IFNULL(comm, 0) 函数用于确保佣金字段的值不为空,如果为空,则将其替换为零。然后FORMAT(AVG(sal), 2):对平均薪水进行格式化,保留两位小数;然后MAX(sal)找出每个部门的最高薪水。更标准的解释就是where是对行与行之间进行比较筛选,而max是对整个表的数据进行筛选。输出的有:deptno, format(avg(sal), 2) , max(sal)
原创
发布博客 2023.09.11 ·
173 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

最长连续递增子串

【代码】最长连续递增子串。
原创
发布博客 2023.09.11 ·
264 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

约瑟夫环问题

这里就是说明每一轮往回推的时候,补上上一轮被杀的元素,再向右移m位使全部元素回归上一轮原位(杀一个相当于这个数前面的数都拼接在了当前列表的最后边,相当于是左移了,然后被杀的元素的下一个作为被杀目标),同时要保持右移的时候下标别越界。首先,x一定是最后的下标为0。那么我们可以倒推回去上一轮筛选的时候,x的下标是多少,以此类推我们就能推到第一轮去,从而知道x最初的坐标。以此递归下去最终就得到x第一轮的坐标。x+m(存活人右移m位,先回归原位)(此时的x是最终存活人的下标)(x+m)%n(取模防止越界)
原创
发布博客 2023.09.11 ·
106 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

表的约束类型

auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。主键约束防止两个学生具有相同的学生ID,确保每个学生都有一个唯一的身份。某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。它用于在显示数值类型的列时,将数值前面的空位用零填充,以达到指定的位数。,以标识和区分表中的每个记录。
原创
发布博客 2023.09.10 ·
118 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

IO多路转接poll和epoll

假设你是一家电商平台的客服人员,每天需要处理数千个用户的咨询和请求。你需要实时地回答用户的问题、处理订单、解决客户投诉等。这个过程中,你能同时处理的客户请求有限,因为人的处理速度是有限的。这时,你可以将每一个用户的请求看作是一个连接,在处理用户请求时,可以采用以下两种不同的方式:你会不断地询问每一个用户是否有新的问题或请求,等待他们的回应。这样做会造成你需要不停地轮询每一个用户,即使他们没有新的请求。这种方式效率低下,容易出现资源浪费。
原创
发布博客 2023.09.06 ·
291 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

epoll与select、poll的对比

epoll的边缘触发模式效率高,系统不会充斥大量不关心的就绪文件描述符,虽然epoll的性能最好,但是在连接数少并且连接都十分活跃的情况下,select和poll的性能可能比epoll好,毕竟epoll的通知机制需要很多函数回调。造成的结果就是,随着fd的增加,select和poll的效率会线性降低,而epoll不会受到太大影响,除非活跃的socket很多。,而select采用fd标注位来存放,所以select会受到最大连接数的限制,而poll不会。select和poll的动作基本一致,
转载
发布博客 2023.09.06 ·
53 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

IO多路转接select

当有新的连接请求到达时,select 函数会返回监听套接字的就绪状态,然后可以使用 accept 函数接受连接请求并创建新的套接字来处理该连接。fd_set是一个位图结构,可以理解为一个由比特位作下标(第几个比特位就代表第几个fd)组成的数组,如果取fd_set的长度为1字节,那么这个结构可以表示8个比特位,也就是8个fd。与read, write, recv, send本身的等待功能不同的是,这些函数的等待只能传入一个fd,而select可以传入多个fd,也就是能够同时等待多个fd。
原创
发布博客 2023.09.06 ·
101 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

非阻塞IO

其中errno=11,代表的是底层数据未就绪,而不是读取出错。这个11被重定义成了宏,叫做EWOULDBLOCK或者EAGAIN,从名字上看代表着再试一次。对于一个文件描述符,默认情况下都是阻塞的,fcntl是一个将fd设置为非阻塞的函数。诸如此类函数出错返回时,都会将errno变量设置,用于表明出错原因。对于cmd,目前需要的参数有cmd=F_GETFL或F_SETFL。那么如何甄别是真的出错 or 没有数据?一直阻塞住直到你输入数据。
原创
发布博客 2023.09.05 ·
62 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL索引

需要注意的是,索引并非越多越好,过多的索引会占用存储空间,增加索引维护的开销,并可能降低写操作的性能。常见的索引类型包括主键索引、唯一索引、普通索引、全文索引等,每种索引类型都有其适用的场景和特点。但其实它们是同一个,相当于共用一个索引,用的都是同一个B+树,并且默认以第一列name作为索引,删除索引name以后就会两个索引都被删除掉。索引的工作原理类似于字典中的索引,当我们查找字典中的某个词时,不需要逐个翻开每一页,而是直接通过索引找到对应的页面。– 在创建表的最后,指定某列或某几列为主键索引。
原创
发布博客 2023.08.04 ·
324 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

表的内连接和外连接

在上面的示例中,使用 LEFT JOIN 进行左外连接,返回所有的 Customers 表中的行,以及与 Orders 表中的 CustomerID 匹配的 OrderID。外连接是用于获取两个表中匹配和不匹配的行的连接方式。内连接是最常用的一种表连接方式,它通过匹配两个或多个表中的共享列,将满足连接条件的行组合起来。右外连接(Right Outer Join):返回右表中的所有行以及与左表匹配的行。左外连接(Left Outer Join):返回左表中的所有行以及与右表匹配的行。
原创
发布博客 2023.08.02 ·
288 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

什么是死锁,怎么避免死锁

死锁(Deadlock)是指在并发系统中,两个或多个进程或线程因互相等待对方释放资源而陷入无限等待的状态,无法继续执行下去。当死锁发生时,系统无法提供所需的资源,导致进程或线程无法继续执行,造成系统的停滞。互斥条件(Mutual Exclusion):一个资源一次只能被一个进程或线程占有,其他进程或线程必须等待。请求与保持条件(Hold and Wait):一个进程或线程在持有至少一个资源的同时,还可以请求其他进程或线程占有的资源。
原创
发布博客 2023.08.02 ·
172 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C++11新特性

比如:重载了两个函数,参数分别是int和int*,当调用函数的时候,NULL就不会匹配到int*,而是匹配到int,这就是C语言宏定义NULL值带来的问题。例如C++11之前没有右值引用,所以形参都是定义成T& x这样的类型,这种左值引用是无法接收右值参数的,现在有了右值引用,就可以把参数改为const T& x,这样既可以接收左值又可以接收右值。需要注意的一点是,什么时候会调用移动构造是通过调用的对象来决定的,如果移动构造和拷贝构造同时存在,就看这个赋值对象是左值/右值,进行匹配拷贝/移动构造。
原创
发布博客 2023.07.29 ·
488 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

网络中的一些概念对比

3.内核空间与用户空间数据复制:在传统的poll中,需要将所有准备好的事件拷贝到用户空间,这会带来额外的开销。而epoll利用了内存映射(mmap)技术,将准备好的事件直接存储在内核空间的缓冲区中,从而避免了数据复制的开销。而epoll使用了回调机制,只有当文件描述符上发生了感兴趣的事件时,才会通知应用程序,避免了遍历所有文件描述符的开销。5.更详细的事件类型:epoll提供了更多精细化的事件类型,例如可读、可写、错误等,相比之下,传统的poll只提供了可读和可写两种事件类型。HTTP是明文传输,数据以。
原创
发布博客 2023.07.22 ·
202 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多