![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux 操作系统
文章平均质量分 67
Linux 操作系统下的相关知识总结
数据库内核
这个作者很懒,什么都没留下…
展开
-
VsCode 使用密钥连接 Centos
把 id_rsa 文件复制到 windows 中 C:\Users\heliubei\.ssh 路径下。注意:必须复制到 C:\Users\heliubei\.ssh 路径下,方可生效!注意:有些配置文件中没有这两项配置,但不影响!重启 VsCode 即可使用密钥连接服务器!注意:是否需要禁用密码登陆看个人需要!1)打开 SSH 配置文件。2)查看并确认以下两项配置。4)重启 SSH 服务。原创 2024-03-14 16:22:03 · 316 阅读 · 0 评论 -
GDB 调试 MySQL 源码
说明:执行完启动命令后会直接跳转到 “--Type for more, q to quit, c to continue without paging--” 直接回车即可!回车后,如果出现:Reading symbols from /usr/local/mysql80/bin/mysqld...,则说明启动成功!直接回车,便可进入语句:select * from t1 where id >8 limit 2, 2;由上图可知,调试进入了 is_cond_match_ranges 函数的第一行!原创 2024-02-21 09:57:48 · 616 阅读 · 0 评论 -
tcpdump、wireshark 抓包分析(小白快速上手)
网络世界中的数据包一般都是不可见的,导致在学习计算机网络的时候会觉得其非常抽象,加大了学习的难度。自从有了网络包分析工具:tcpdump 和 Wireshark,使不可见的数据包得以可视化。问题:tcpdump 和 wireshark 有什么区别?tcpdump 和 wireshark 是最常用的网络抓包和分析工具,更是分析网络性能必不可少的利器。1)tcpdump 仅支持命令行格式使用,常在 Linux 服务器中抓取和分析网络包;原创 2024-01-23 22:06:33 · 1763 阅读 · 1 评论 -
Ubuntu(WSL)创建用户并赋予权限
4)接着会提示输入:Full Name []: ...等,直接回车即可。2)若待创建用户已存在,则先删除已存在用户,然后创建新用户。3)执行创建新用户命令后,输入密码,重复输入确认密码。1)执行如下命令创建新用户。原创 2024-01-01 22:55:44 · 2176 阅读 · 0 评论 -
Ubuntu(WSL)卸载与安装指定版本的 openssl
说明:/usr/bin/openssl、/usr/include/openssl 是 openssl 软件包的默认扫描路径,如果使用命令安装 openssl 会自动安装到该目录下(每个软件包都有一个系统默认路径);1)删除软链接(rm -rf ./软链接名称,若rm -rf ./软链接名称/ ,则会把软链接以及软链接指向下的内容删除)4)选择安装目录(prefix 是安装目录),并使用 -fPIC 参数链接动态库。3)查看 OpenSSL 版本,安装完成。原创 2023-12-09 11:13:57 · 2247 阅读 · 0 评论 -
安装 openssl 时报错:openssl: symbol lookup error: openssl: undefined symbol: EVP_mdc2, version OPENSSL_1_
在指定安装路径时使用 -fPIC 参数链接动态库。2)重新加载动态链接。原创 2023-12-08 18:55:38 · 1589 阅读 · 0 评论 -
解决删除文件后 WSL2 磁盘空间不释放的问题
由于我这里 C 盘空间不足主要是 Ubuntu-22.04 删除文件后 ext4.vhd 没有缩容引起的,所以只压缩了它的 ext4.vhdx。注意:如果有多个 Linux distributions,可根据自己的情况压缩对应的 ext4.vhdx。2)备份指定的 Linux distribution 到指定的位置。上述操作执行完毕,WSL2 删除文件后空出来的磁盘空间就被释放了。1)关闭 WSL2 中的 linux distributions。2)运行管理计算机的驱动器的 DiskPart 命令。原创 2023-12-08 18:46:55 · 2299 阅读 · 0 评论 -
Clion+Ubuntu(WSL)+MySQL8.0开发、调试环境搭建
该命令的目的是创建一个名为mysql的系统用户,并将其添加到mysql用户组中。说明:初始化文件 my.cnf 可以放在不同的文件夹下(一台机器上装多个 mysql 时,可以在不同的文件夹下创建 my.cnf),但初始化命令中使用到的 my.cnf 路径要与其保持一致;初始化完成后,找到 mysql 安装目录下的 data 文件夹,初始化密码在 mysqld.log 日志中,自行找到即可,然后用初始密码进行登陆;)并下载 MySQL 8.0 的源码包(mysql-boost-8.0.31.tar.gz)。原创 2023-11-27 21:25:21 · 1680 阅读 · 3 评论 -
VsCode 调试 MySQL 源码
3. 使用 VsCode 打开 MySQL 源码。7. 输入上述查询的 MySQL 进程号,回车。10. 在终端执行 SQL 命令,即可调试。9. 在 VsCode 中手动设置断点。6. 点击 Debug mysqld。8. 进入 MySQL 调试环境。2. 查看 MySQL 进程号。1. 启动 MySQL。5. 点击调试运行按钮。原创 2023-11-27 21:17:09 · 1287 阅读 · 0 评论 -
dlv 安装与使用
命令含义b设置断点bp打印正活动的断点信息clear删除断点clearall删除所有断点c运行直到断点处或程序终止n下一步,不会进入函数s下一步,会进入函数so跳出当前函数args查看函数参数locals查看所有局部变量list打印当前源代码on运行到某断点然后执行相应的命令,比如 on 2 listbt打印当前调用栈exit退出打印字符串最大长度(config max-string-len 1000)原创 2023-11-23 21:34:35 · 1116 阅读 · 0 评论 -
Windows10 安装 Ubuntu(WSL2)
Windows Subsystem for Linux(简称WSL),Windows下的 Linux 子系统,是一个在 Windows 10 上能够运行原生 Linux 二进制可执行文件(ELF格式)的兼容层。它是由微软与 Canonical 公司合作开发,其目标是使纯正的 Ubuntu、Debian 等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。原创 2023-11-12 12:21:45 · 1043 阅读 · 0 评论 -
Goland # Ubunu(WSl2) # $GOPATH/go.mod exists but should not
如果你设置了环境变量$GOPATH,Go 将默认在 $GOPATH/pkg/ 中下载和导入依赖库,而 go.mod文件则是将当前工作目录作为项目根目录,从 ./pkg/ 中下载和导入依赖库。因此,当$GOPATH 指向 go.mod 所在目录时,就会产生矛盾。所以解决思路也是显而易见的:你在执行 go mod init 命令后将 $GOPATH 也指向了项目目录,所以你应该首先选择通过命令行 unset GOPATH。项目初始化:go mod init。原创 2023-11-12 10:44:43 · 441 阅读 · 0 评论 -
Ubuntu(WSL2) 安装最新版的 cmake
【代码】Ubuntu(WSL) 安装最新版的 cmake。原创 2023-11-11 14:31:00 · 1456 阅读 · 0 评论 -
Goland # Ubuntu(WSL2) # Unable to save settings: Failed to save settings...(屡试不爽)
【代码】Goland # Ubuntu(WSL2) # Unable to save settings: Failed to save settings...(屡试不爽)原创 2023-11-11 14:22:33 · 335 阅读 · 0 评论 -
Ubuntu 22.04 (WSL2) 安装 libssl1.1
Ubuntu 22.04 (WSL) 安装 libssl1.1。Ubuntu 22.04 (WSL) 安装 libssl1.1。Ubuntu 22.04 (WSL) 安装 libssl1.1。Ubuntu 22.04 (WSL) 安装 libssl1.1。Ubuntu 22.04 (WSL) 安装 libssl1.1。Ubuntu 22.04 (WSL) 安装 libssl1.1。Ubuntu 22.04 (WSL) 安装 libssl1.1。原创 2023-11-11 02:02:59 · 2249 阅读 · 2 评论 -
Ubuntu(WSL2) 源码安装 mysql8.0/mysql5.7
初始化文件 my.cnf 可以放在不同的文件夹下(一台机器上装多个 mysql 时,可以在不同的文件夹下创建 my.cnf),但初始化命令中使用到的 my.cnf 路径要与其保持一致;初始化完成后,找到 mysql 安装目录下的 data 文件夹,初始化密码在 mysqld.log 日志中,自行找到即可,然后用初始密码进行登陆;my.cnf文件中的 /usr/local/mysql 为mysql安装路径,根据自己情况进行更改,该mysql安装目录为:/usr/local/mysql;原创 2023-11-11 00:31:50 · 1546 阅读 · 0 评论 -
Ubuntu(WSL2) 安装最新版本的 GCC
请注意,Ubuntu 软件仓库中的 GCC 版本可能不是最新的稳定版本。如果您需要使用最新的 GCC 版本,可以考虑从官方 GCC 网站(https://gcc.gnu.org/)下载并手动编译安装最新版本的 GCC。这需要更多的步骤和依赖项,请确保在进行此操作之前阅读官方文档并了解所需的步骤和要求。4. 如果您需要安装特定版本的 GCC,可以使用 `apt` 命令加上软件包的版本号进行安装。这将安装 Ubuntu 软件仓库中可用的默认版本的 GCC。这将显示已安装的 GCC 版本信息。原创 2023-11-10 22:33:21 · 1751 阅读 · 0 评论 -
make 和 makefile 的使用 ###通俗易懂
人们通常利用 make 工具来自动完成编译工作。这些工作包括:如果仅修改了某几个源文件,则只重新编译这几个源文件;如果某个头文件被修改了,则重新编译所有包含该头文件的源文件。利用这种自动编译可大大简化开发工作,避免不必要的重新编译。make 工具通过一个称为 makefile 的文件来完成并自动维护编译工作。makefile 需要按照某种语法进行编写,其中说明了如何编译各个源文件并连接生成可执行文件,并定义了源文件之间的依赖关系。当修改了其中某个源文件时,如果其他源文件依赖于该文件,则也要重新编译所有依赖该原创 2023-10-23 22:26:41 · 488 阅读 · 0 评论 -
gdb 快速上手(附带测试案例)
2、启动程序 结果如下:说明:结果中出现:Reading symbols from ./test03... 即成功启动调试程序! 方式一:执行命令 方式二:执行命令 结果如下: 执行命令: 结果如下: 执行命令: 结果如下: 执行命令: 结果如下: 方式一:执行命令 结果如下: 说明:调试语法糖------直接回车会执行上一步调试操作; 方式二:执行命令 结果如下: 执行命令: 结果如下: 执行命令:原创 2023-08-31 21:18:37 · 351 阅读 · 0 评论 -
SQL 语句解析过程详解(附带完整demo)
本文主要是使用 Flex 和 Bison 工具实现一个简单的 SQL 解析器,最终生成抽象语法树!下面先分别对 Flex 和 Biosn 原理进行介绍,然后给出 SQL 解析器的完整 Demo!原创 2023-08-26 19:05:18 · 4984 阅读 · 7 评论 -
数据库分片原则和算法
相对于垂直分片,它不再将数据根据业务逻辑归类,而是通过某个字段(或某几个字段),根据某种规则将数据分散至多个节点或表中,每个分片仅包含数据的一部分。例如,分表导致表名称的修改,或者分页、排序、聚合分组等操作的不正确处理,比如,我们想查询订单表的前10条数据,以前只要一条SQL语句搞定,现在分到不同的数据节点,这时再想分页查询会让你崩溃。除此之外,分库还能够用于有效的分散对数据节点单点的访问(你想想看,查订单的去订单节点查,查用户的去用户节点去查)。同时,还需要考虑数据迁移的复杂性和系统升级的挑战。原创 2023-08-18 21:10:00 · 1257 阅读 · 0 评论 -
编译原理------解析器部分(非常详细)
(1)分割SQL语句:将输入的SQL语句分割成多个独立的词法单元。常见的词法单元包括关键字(SELECT、FROM、WHERE等)、标识符(表名、列名等)、运算符(=、等)、分隔符(逗号、分号等)和常量(字符串、数字等)。(2)去除空白字符:将SQL语句中的空格、制表符和换行符等空白字符去除,因为它们对于词法分析没有实际意义。(3)标识符处理:对于标识符(如表名、列名等),词法分析器需要识别它们,并将其作为单独的词法单元返回。标识符通常需要遵循一定的命名规则,如不能以数字开头,不能包含特殊字符等。原创 2023-08-12 19:19:06 · 2432 阅读 · 1 评论 -
配置两台数据库为主从数据库模式
在主库下面创建一个库/表;查看从库里面是否也存在;若存在,则主从配置成功;若否,则主从配置失败!binlog_ignore_db:不需要同步的数据库;创建s01用户,并设置密码,该用户可在任意主机连接该MySQL服务。position:从那个位置开始推送日志;以上两项为 Yes,则说明主从配置成功!file:从哪个日志文件开始推送;为s01用户分配主从复制权限。原创 2023-08-07 19:09:28 · 240 阅读 · 0 评论 -
centos 7 部署两个 mysql 8.0.31(非常详细)
1、将 mysql-boost-8.0.31.tar.gz,传输到 /usr/local/ 目录下,并进行解压。3、 进入到 cd mysql-8.0.31 目录下,创建 3306、3307 的编译目录。2、在 /usr/local/ 目录下创建多个 mysql 安装目录。6、设置第一个 MySQL 实例的 root 密码。4、初始化第一个 MySQL 实例。1、编译第一个 MySQL 实例。2、安装第一个 MySQL 实例。5、启动第一个 MySQL 实例。2、安装第二个 MySQL 实例。原创 2023-08-06 21:35:14 · 1726 阅读 · 2 评论 -
centos 7 登陆 mysql 报错:Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (111)
在 centos 7 机器上使用源码安装完 mysql 8.0.31 后,输入初始密码,报如下错误: 根据该错误进入到 /usr/local/mysql3306/data/ 目录下(/usr/local/mysql3306/ 目录为 mysql 8.0.31的安装目录),发现确实没有 mysql.sock 文件, /usr/local/mysql3306/data/ 目录内容如下: 根据该报错问题,在网上搜索了一通,大多数解决方案指向:需要对 mysql.sock 进行软连接;原创 2023-08-06 20:44:48 · 572 阅读 · 0 评论 -
centos 7 系统上重启 mysql 时报错 Failed to restart mysqld.service: Unit not found.
根据所报错误,在网上搜罗了一圈,未果!!!原创 2023-08-05 23:53:32 · 2893 阅读 · 0 评论 -
Linux 常用命令之配置环境变量 PATH
在/etc/profile里面添加如下命令。在~/.bashrc里面添加如下命令。打开一个终端执行如下命令。3、所有用户的全局设置。原创 2023-08-05 09:04:04 · 1722 阅读 · 0 评论 -
vscode中使用C++实现mysql数据库编程(附带相关案例)
使用vscode连接Linux中的mysql,并进行mysql开发,对于初学者来讲多少有些摸不着头脑,下面给出mysql的建库、建表,以及增、删、改、查等基本操作。原创 2023-03-14 11:44:14 · 2562 阅读 · 4 评论 -
windows下vscode连接Linux中的MySQL(非常实用)
于初学Linux系统的小伙伴来说,由于对Linux系统及其在windows下的环境配置比较生疏,所以当使用windows下vscode连接Linux中的MySQL,并进行相关研发时,颇为头疼;下面对其环境配置做出具体介绍!!!原创 2023-03-11 23:17:52 · 1734 阅读 · 1 评论 -
vscode环境配置文件生成
配置 C++ 环境时,会生成.vscode 文件夹,该文件夹下通常包含三个配置文件:tasks.json、launch.json、c_cpp_properties.json;tasks.json为编译器相关的配置文件,用于生成可执行文件。当工程涉及到多个源文件时,使用Makefilec_cpp_properties.json为编译器路径(包含目录、库目录)和智能代码提示相关的配置文件。launch.json为调试器相关的配置文件。比如,调试器的路径、编译生成的可执行文件路径。原创 2023-03-11 20:38:36 · 5049 阅读 · 1 评论 -
Linux 端口复用详解(附有案例代码)
这个时间段内,主动断开方在等待,并没有及时释放,所以其他设备无法及时的与主动段开放进行再次连接;2、端口复用API。原创 2022-07-21 23:04:14 · 2796 阅读 · 0 评论 -
TCP 通信并发服务器详解(附有案例代码)
代码】TCP通信并发详解(附有案例代码)原创 2022-07-20 16:48:47 · 2485 阅读 · 0 评论 -
TCP 滑动窗口详解(非常实用)
滑动窗口(Slidingwindow)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。滑动窗口协议是用来改善吞吐量的一种技术,即容许发送方在接收任何应答之前传送附加的包。接收方告诉发送方在某一时刻能送多少包(称窗口尺寸)。TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。服务器。............原创 2022-07-20 13:30:59 · 14388 阅读 · 2 评论 -
TCP 通信流程详解(附有案例代码)
4)阻塞等待,当有客户端发起连接,解除阻塞,接受客户端的连接,会得到一个和客户端通信的套接字(fd)(2)将这个监听文件描述符和本地的IP和端口绑定(IP和端口就是服务器的地址信息)UDP用户数据报协议,面向无连接,可以单播,多播,广播,面向数据报,不可靠。TCP传输控制协议,面向连接的,可靠的,基于字节流,仅支持单播传输。-客户端连接服务器的时候使用的就是这个IP和端口。(2)连接服务器,需要指定连接的服务器的IP和端口。(1)创建一个用于通信的套接字(fd).........原创 2022-07-20 08:53:30 · 11271 阅读 · 0 评论 -
Linux 多线程开发(附有案例代码)
同一个程序中的所有线程均会独立执行相同程序,且共享同一份全局内存区域,其中包括初始化数据段、未初始化数据段,以及堆内存段。(传统意义上的UNIX进程只是多线程程序的一个特例,该进程只包含一个线程)调用fork()来创建进程的代价相对较高,即便利用写时复制技术,仍热需要复制诸如内存页表和文件描述符表之类的多种进程属性,这意味着fork()调用在时间上的开销依然不菲。进程间的信息难以共享。由于除去只读代码段外,父子进程并未共享内存,因此必须采用一些进程间通信方式,在进程间进行信息交换。进程ID和父进程工D。..原创 2022-07-15 17:40:18 · 5566 阅读 · 0 评论 -
Linux 守护进程(附有案例代码)
守护进程(DaemonProcess),也就是通常说的Daemon进程(精灵进程),是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。一般采用以d结尾的名字。...............原创 2022-07-15 13:09:44 · 870 阅读 · 0 评论 -
进程间通信——共享内存原理及详解(通俗易懂)
共享内存允许两个或者多个进程共享物理内存的同一块区域(通常被称为段)。由于一个共享内存段会称为一个进程用户空间的一部分,因此这种IPC机制无需内核介入。所有需要做的就是让一个进程将数据复制进共享内存中,并且这部分数据会对其他所有共享同一个段的进程可用。与管道等要求发送进程将数据从用户空间的缓冲区复制进内核内存和接收进程将数据从内核内存复制进用户空间的缓冲区的做法相比,这种IPC技术的速度更快。............原创 2022-07-15 08:55:50 · 2779 阅读 · 2 评论 -
进程间通信——信号原理及详解(附有案例代码)
(1)信号是 Linux进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也称之为软件中断.它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。(2)发往进程的诸多信号,通常都是源于内核。引发内核为进程产生信号的各类事件如下: 对于前台进程,用户可以通过输入特殊的终端字符来给它发送信号。比如输入Ctrl+C通常会给进程发送一个中断信号。 硬件发生异常,即硬件检测到一个错误原创 2022-07-14 15:02:27 · 1483 阅读 · 0 评论 -
进程间通信——内存映射原理及详解(附有案例代码)
内存映射(Memory-mapped I/0)是将磁盘文件的数据映射到内存,用户通过修改内存就能修改磁盘文件。3、使用内存映射进行进程通信1.有关系的进程(父子进程) - 还没有子进程的时候 - 通过唯一的父进程,先创建内存映射区 - 有了内存映射区以后,创建子进程 - 父子进程共享创建的内存映射区2.没有关系的进程间通信,单独创建两个进程 - 准备一个大小不是0的磁盘文件 - 进程1 通过磁盘文件创建内存原创 2022-07-13 14:28:42 · 818 阅读 · 0 评论 -
进程间通信——有名管道原理及详解(附有案例代码)
有名管道(FIFO)不同于匿名管道之处在于它提供了一个路径名与之关联,以 FIFO的文件形式(特殊文件形式)存在于文件系统中,并且其打开方式与打开一个普通文件是一样的,这样即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径就能够彼此通过 FIFO相互通信,因此,通过FIFO不相关的进程也能交换数据。 一旦打开了 FIFO,就能在它上面使用与操作匿名管道和其他文件的系统调用一样的I/O系统调用了 (如read ( ). write()和close())。与管道一样, FIFO也有一个原创 2022-07-13 10:01:33 · 1677 阅读 · 0 评论