自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(143)
  • 收藏
  • 关注

原创 DFS:二叉树的深搜与回溯

通过二叉树的深搜,来深入理解回溯与剪枝

2024-03-30 11:42:43 1802 150

原创 剑指offer第2版:搜索算法(二分/DFS/BFS)

搜索的过程,本质就是排除!!!

2025-02-11 16:56:59 2017 94

原创 Linux:网络编程套接字及UDP

问题1:在进行网络通信的时候,是不是我们的两台机器在进行通信呢??——>思考一下我们打开qq软件,他属于应用层,完成了数据的发送和接受……

2025-02-10 00:29:29 1928 84

原创 Linux:宏观搭建网络体系

1、局域网通信的本质就是把数据交给路由器2、IP协议屏蔽了底层网络的差异化,靠的就是工作在IP的路由器!!3、IP实现了全球主机的软件虚拟层,一切皆是IP报文

2025-02-03 11:07:44 4459 95

原创 Linux:线程池和单例模式

线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价(用空间换时间的一种策略)。

2025-01-27 10:15:09 5387 106

原创 Linux:生产者消费者模型

现实生活中,我们也会有像生物世界的生产者和消费者的概念,但是我们的消费者在大多数情况下并不和生产者直接联系,就比如说食物,不能说我今天去找供货商要十个面包,然后我还得在那等他把十个面包生产完了再走,虽然这对于生产者来说有多少需求就供应多少节约了成本,但是对于消费者来说却浪费了很多时间,我们作为消费者肯定希望我们去买的时候就能够买到,因此这个时候我们需要一个中间场所——超市,供应商可以一次性先生产一部分面包,然后把他摆到超市的货架上,这样消费者来拿的时候就可以直接拿了! 而当货架上快空了的时候,超市可以告知消

2025-01-20 07:38:22 3788 97

原创 剑指offer第2版:树系列(一)

关于树系列

2025-01-17 00:48:19 1270 72

原创 Linux:线程的互斥与同步

多个线程并发的操作共享变量,会带来一些问题。

2025-01-13 00:27:04 3650 83

原创 Linux:线程控制

在Linux中,内核中并没有很明确的线程概念,而是只有轻量级进程的概念!!因此OS并没有给我们提供线程的系统调用,只会给我们提供轻量级进程的系统调用——>可是我们的用户只认识线程而不认识什么轻量级进程啊!!而且使用起来的学习成本也很高啊! 因此就有大佬在应用层为轻量级进程接口进行封装,为用户提供直接的线程接口(pthread线程库)

2025-01-06 00:25:58 3848 104

原创 Linux:线程的概念

线程:进程内的一个执行分支,他的执行粒度比进程要细

2024-12-30 00:05:20 4705 163

原创 同步&异步日志系统:设计模式

设计模式是前辈们对代码开发经验的总结,是解决特定问题的⼀系列套路。它不是语法规定,⽽是⼀ 套⽤来提⾼代码可复⽤性、可维护性、可读性、稳健性以及安全性的解决⽅案。

2024-12-27 00:55:19 2308 135

原创 C++11:新特性&右值引用&移动语义

在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。

2024-12-23 00:40:11 2148 126

原创 同步&异步日志系统:前置知识

日志:程序运行过程中所记录的程序运行状态(时间、错误原因、行号……)作用:记录了程序运行状态信息,以便于程序员能够随时根据状态信息对系统的运行状态进行分析一般来说日志都是作为一个小组件给其他业务打辅助用的,所以我们为了确保他能够更高效地开发,除了他能够正常使用之外,必要时候也要去阐述他的具体性能!!

2024-12-20 00:22:04 1206 150

原创 Linux系统编程:信号的发送、保存和处理

事实上,由于UNIX 的历史原因,要想不产生僵尸进程还有另外一种办法:父进程调 用sigaction将SIGCHLD的处理动作 置为SIG_IGN,这样fork出来的子进程在终止时会自动清理掉,不会产生僵尸进程,也不会通知父进程。系统默认的忽略动作和用户用sigaction函数自定义的忽略通常是没有区别的,但这是一个特例。此方法对于Linux可用,但不保证 在其它UNIX系统上都可 用。请编写程序验证这样做不会产生僵尸进程。父进程就不需要wait了

2024-12-16 00:14:50 3229 153

原创 Python:基础语法

我们可以把 Python 当成一个计算器, 来进行一些算术运算.可以使用 + - * / ( ) 等运算符进行算术运算. 先算乘除, 后算加减.运算符和数字之间, 可以没有空格, 也可以有多个空格. 但是一般习惯上写一个空格(比较美观).

2024-12-13 00:17:23 10512 157

原创 Linux系统编程:信号的预备和产生

引入: 比如当前快递小哥需要通知你下来取快递(产生信号),然后通过电话或短信告知了你(发送信号),但是当前你正在打游戏,所以你并不会马上去处理,但是你会记得这件事(信号的保存),当你忙完之后,你接着就去处理快递了(信号的处理),而一般会有3种处理方法:1、幸福地打开快递(默认动作) 2、选择将快递送给好朋友(自定义动作)3、忽略他,然后再打一把游戏(忽略)。

2024-12-09 00:06:08 4291 147

原创 Linux系统编程:进程间通信之system V

进程间通信的本质是让不同的进程看到同一份代码。

2024-12-02 00:24:32 3146 157

原创 Linux系统编程:进程间通信之进程池和日志

因为每一次我们要进行进程间通信都需要fork,和操作系统做交互是存在很大成本的,所以我们是不是可以提前fork出几个进程,然后当我们想要使用的时候直接去给他们安排任务,这样就减少了系统调用的次数从而提高了内存申请速度!!

2024-11-25 00:18:47 3870 177

原创 Linux系统编程:进程间通信之管道

在某些场景下我们需要不同进程之间进行(1)基本数据的交互。(2)发送命令。(3)实现某种协同。(4)通知某些信息……

2024-11-18 08:57:40 3842 192

原创 Linux系统编程:理解动静态库

如果我们写了一些方法想给别人用??有什么办法呢??——>(1)我直接把头文件和源文件给他(.c+.h) ——>这样会让别人轻易看到你的实现 (2)把源文件打包成库,再和头文件一起给他(库+.h)——>这样别人看不到你的实现——>所以平时为了能够不让别人轻易窃取我们的劳动成果,我们一般采用的都是第二种方法,所以这就涉及到了如何把源文件打包成库的问题——>库又分静态库和动态库

2024-11-11 12:40:45 3646 167

原创 Linux系统编程:认识文件系统

我们的操作系统必须想办法把磁盘空间组织起来!

2024-11-04 12:46:44 7865 167

原创 Linux系统编程:认识文件

1、文件=内容+属性2、文件分为打开的文件和没打开的文件 (如c中的fopen和fclose) 可以用以下的例子去理解:快递(文件) 有被人(进程)取走的快递(打开的文件)和没被取走的快递(没打开的文件),被人取走的快递研究的是人和快递的关系(进程和文件的关系) ,而没被人取走的快递,他会被暂时安防在菜鸟驿站(磁盘) 他的数量很多(文件非常多) 所以我们打算去取的时候其实我们是会收到一个取件码的(查找该文件的信息) 然后我们根据这个号码比方说3-1113 我们会找到

2024-10-28 00:20:36 3642 183

原创 Python:背景知识及环境安装

Python第一个正式版本发布于 1991 年(1991 年是一个神奇的年份. Python, 万维网, Linux, Vim, Qt, 第一台笔记本电脑, 都诞生于 1991 年. ).

2024-10-25 09:00:16 6158 165

原创 Linux系统编程:基础IO

现代操作系统不做任何浪费空间和时间的事情。!

2024-10-21 00:05:57 3554 157

原创 Linux系统编程:进程替换

为什么要有进程替换呢???比方说我们想用fork创建一个子进程去帮助我们完成一个工作,这个工作我们需要封装成一个函数去使用,但难道我们每次都要自己写一个函数吗?或者说子进程一定要用我父进程的代码吗? 难道不可以是我们之前已经写好的一个可执行程序,当我想去执行的时候直接让子进程用一下不就可以了,但是因为操作系统不相信任何人,所以我们也必须要有一些系统调用接口来完成这个工作。

2024-10-14 00:10:00 3325 159

原创 Linux系统编程:进程的创建、终止和等待

进程最重要的三个核心:进程创建、进程等待、进程终止。所以我们在需要多进程的时候,我们的代码核心首先要考虑以下要素:(1)需要有循环fork创建子进程 (2)需要在合适的时候让子进程退出(常用exit)(3)父进程必须等待子进程(阻塞就是一直卡住等,非阻塞轮询就是得需要一个while循环 反复调用) 他有义务回收所有子进程!

2024-10-07 08:26:37 3993 161

原创 Linux系统编程:进程地址空间

所谓进程地址空间,本质上就是一个描述进程可视化范围的地址空间内存在各种区域划分,对线性地址进行start、end即可。本质上其实就是一个内核数据结构,和PCB一样,地址空间也是需要被操作系统管理的:先描述再组织。 而每一个进程都有自己的进程地址空间,PCB内部有一个指针指向这块空间!

2024-09-30 00:23:28 3825 162

原创 Linux系统编程:环境变量

为什么我们平时输入的指令可以直接运行,但是自己编译出来的程序却要加 ./?

2024-09-23 00:29:12 3744 180

原创 Linux系统编程:进程状态和优先级

进程的状态和优先级是我们需要深入理解的!!

2024-09-16 10:19:12 3823 171

原创 Linux系统编程:理解进程概念

OS中不仅仅只有一个进程,可能运行着多个进程(比如我们可能同时运行着qq和qq音乐),所以OS必须要将进程管理起来!!根据我们以往的管理经验,我们需要先描述再组织!!

2024-09-09 00:19:44 3837 190

原创 Linux系统编程:深入理解计算机软硬件体系和架构

首先我们要知道,我们最常见的计算机(笔记本)以及我们不常见的计算机(服务器)其实本质上都是一堆硬件的结合:cpu、网卡、显卡、内存、磁盘、显示器、键盘…… 但他们并不是毫无章法地放在一起,硬件和硬件之间需要有效地组织成一个系统才能更好地发挥功能,我们把这个组织结构叫做冯诺依曼体系结构!

2024-09-02 19:22:09 17581 184

原创 Linux入门:开发工具(3)

git是一款服务端和客户端为一体的具有网络功能的版本控制器

2024-08-26 17:19:06 3721 187

原创 Linux入门:开发工具(2)

gcc和makefile

2024-08-19 09:38:17 3739 184

原创 贪心算法总结(4)

贪心算法总结(4)

2024-08-16 08:57:38 2270 158

原创 Linux入门:开发工具(1)

所以软件包,就是有些人把一些需要用到的软件提前编译打包好,放在一个服务器上(即软件包管理器,他们的关系就好比APP和应用商店的关系)

2024-08-12 09:29:30 3177 161

原创 贪心算法总结(3)

贪心算法总结3

2024-08-10 01:02:11 2373 148

原创 Linux入门:Linux权限解析

什么叫做权限呢??通俗一点说就是一件事情是否允许你做!

2024-08-05 10:09:05 5863 167

原创 Linux入门:Xshell相关配置及前期准备

使用云服务器不仅环境搭建简单, 避免折腾, 同时还有一个最大的好处, 部署在云服务器上的项目可以直接被外网访问到, 这个时候就和一个公司发布一个正式的网站没有任何区别. 也就能让我们自己写的程序真的去给别人去使用.

2024-08-03 13:22:33 2192 144

原创 Linux入门:基础操作指令

Linux的操作特点:纯命令行

2024-07-29 20:43:34 4649 142

原创 贪心算法总结(2)

贪心算法总结2

2024-07-27 11:41:45 1444 137

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除