
Linux 操作系统
文章平均质量分 66
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 · 434 阅读 · 0 评论 -
Ubuntu(WSL)创建用户并赋予权限
4)接着会提示输入:Full Name []: ...等,直接回车即可。2)若待创建用户已存在,则先删除已存在用户,然后创建新用户。3)执行创建新用户命令后,输入密码,重复输入确认密码。1)执行如下命令创建新用户。原创 2024-01-01 22:55:44 · 7085 阅读 · 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 · 3405 阅读 · 0 评论 -
安装 openssl 时报错:openssl: symbol lookup error: openssl: undefined symbol: EVP_mdc2, version OPENSSL_1_
在指定安装路径时使用 -fPIC 参数链接动态库。2)重新加载动态链接。原创 2023-12-08 18:55:38 · 3072 阅读 · 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 · 3669 阅读 · 1 评论 -
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 · 1979 阅读 · 0 评论 -
Windows10 安装 Ubuntu(WSL2)
Windows Subsystem for Linux(简称WSL),Windows下的 Linux 子系统,是一个在 Windows 10 上能够运行原生 Linux 二进制可执行文件(ELF格式)的兼容层。它是由微软与 Canonical 公司合作开发,其目标是使纯正的 Ubuntu、Debian 等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。原创 2023-11-12 12:21:45 · 1562 阅读 · 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 · 489 阅读 · 0 评论 -
Ubuntu(WSL2) 安装最新版的 cmake
【代码】Ubuntu(WSL) 安装最新版的 cmake。原创 2023-11-11 14:31:00 · 2762 阅读 · 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 · 620 阅读 · 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 · 3205 阅读 · 2 评论 -
Ubuntu(WSL2) 安装最新版本的 GCC
请注意,Ubuntu 软件仓库中的 GCC 版本可能不是最新的稳定版本。如果您需要使用最新的 GCC 版本,可以考虑从官方 GCC 网站(https://gcc.gnu.org/)下载并手动编译安装最新版本的 GCC。这需要更多的步骤和依赖项,请确保在进行此操作之前阅读官方文档并了解所需的步骤和要求。4. 如果您需要安装特定版本的 GCC,可以使用 `apt` 命令加上软件包的版本号进行安装。这将安装 Ubuntu 软件仓库中可用的默认版本的 GCC。这将显示已安装的 GCC 版本信息。原创 2023-11-10 22:33:21 · 2990 阅读 · 0 评论 -
make 和 makefile 的使用 ###通俗易懂
人们通常利用 make 工具来自动完成编译工作。这些工作包括:如果仅修改了某几个源文件,则只重新编译这几个源文件;如果某个头文件被修改了,则重新编译所有包含该头文件的源文件。利用这种自动编译可大大简化开发工作,避免不必要的重新编译。make 工具通过一个称为 makefile 的文件来完成并自动维护编译工作。makefile 需要按照某种语法进行编写,其中说明了如何编译各个源文件并连接生成可执行文件,并定义了源文件之间的依赖关系。当修改了其中某个源文件时,如果其他源文件依赖于该文件,则也要重新编译所有依赖该原创 2023-10-23 22:26:41 · 597 阅读 · 0 评论 -
gdb 快速上手(附带测试案例)
2、启动程序 结果如下:说明:结果中出现:Reading symbols from ./test03... 即成功启动调试程序! 方式一:执行命令 方式二:执行命令 结果如下: 执行命令: 结果如下: 执行命令: 结果如下: 执行命令: 结果如下: 方式一:执行命令 结果如下: 说明:调试语法糖------直接回车会执行上一步调试操作; 方式二:执行命令 结果如下: 执行命令: 结果如下: 执行命令:原创 2023-08-31 21:18:37 · 601 阅读 · 0 评论 -
SQL 语句解析过程详解(附带完整demo)
本文主要是使用 Flex 和 Bison 工具实现一个简单的 SQL 解析器,最终生成抽象语法树!下面先分别对 Flex 和 Biosn 原理进行介绍,然后给出 SQL 解析器的完整 Demo!原创 2023-08-26 19:05:18 · 6231 阅读 · 9 评论 -
数据库分片原则和算法
相对于垂直分片,它不再将数据根据业务逻辑归类,而是通过某个字段(或某几个字段),根据某种规则将数据分散至多个节点或表中,每个分片仅包含数据的一部分。例如,分表导致表名称的修改,或者分页、排序、聚合分组等操作的不正确处理,比如,我们想查询订单表的前10条数据,以前只要一条SQL语句搞定,现在分到不同的数据节点,这时再想分页查询会让你崩溃。除此之外,分库还能够用于有效的分散对数据节点单点的访问(你想想看,查订单的去订单节点查,查用户的去用户节点去查)。同时,还需要考虑数据迁移的复杂性和系统升级的挑战。原创 2023-08-18 21:10:00 · 1618 阅读 · 0 评论 -
编译原理------解析器部分(非常详细)
(1)分割SQL语句:将输入的SQL语句分割成多个独立的词法单元。常见的词法单元包括关键字(SELECT、FROM、WHERE等)、标识符(表名、列名等)、运算符(=、等)、分隔符(逗号、分号等)和常量(字符串、数字等)。(2)去除空白字符:将SQL语句中的空格、制表符和换行符等空白字符去除,因为它们对于词法分析没有实际意义。(3)标识符处理:对于标识符(如表名、列名等),词法分析器需要识别它们,并将其作为单独的词法单元返回。标识符通常需要遵循一定的命名规则,如不能以数字开头,不能包含特殊字符等。原创 2023-08-12 19:19:06 · 2724 阅读 · 1 评论 -
配置两台数据库为主从数据库模式
在主库下面创建一个库/表;查看从库里面是否也存在;若存在,则主从配置成功;若否,则主从配置失败!binlog_ignore_db:不需要同步的数据库;创建s01用户,并设置密码,该用户可在任意主机连接该MySQL服务。position:从那个位置开始推送日志;以上两项为 Yes,则说明主从配置成功!file:从哪个日志文件开始推送;为s01用户分配主从复制权限。原创 2023-08-07 19:09:28 · 354 阅读 · 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 · 2453 阅读 · 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 · 711 阅读 · 0 评论 -
centos 7 系统上重启 mysql 时报错 Failed to restart mysqld.service: Unit not found.
根据所报错误,在网上搜罗了一圈,未果!!!原创 2023-08-05 23:53:32 · 3703 阅读 · 0 评论 -
Linux 常用命令之配置环境变量 PATH
在/etc/profile里面添加如下命令。在~/.bashrc里面添加如下命令。打开一个终端执行如下命令。3、所有用户的全局设置。原创 2023-08-05 09:04:04 · 1950 阅读 · 0 评论 -
vscode中使用C++实现mysql数据库编程(附带相关案例)
使用vscode连接Linux中的mysql,并进行mysql开发,对于初学者来讲多少有些摸不着头脑,下面给出mysql的建库、建表,以及增、删、改、查等基本操作。原创 2023-03-14 11:44:14 · 3065 阅读 · 4 评论 -
windows下vscode连接Linux中的MySQL(非常实用)
于初学Linux系统的小伙伴来说,由于对Linux系统及其在windows下的环境配置比较生疏,所以当使用windows下vscode连接Linux中的MySQL,并进行相关研发时,颇为头疼;下面对其环境配置做出具体介绍!!!原创 2023-03-11 23:17:52 · 2095 阅读 · 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 · 6417 阅读 · 1 评论 -
Linux 端口复用详解(附有案例代码)
这个时间段内,主动断开方在等待,并没有及时释放,所以其他设备无法及时的与主动段开放进行再次连接;2、端口复用API。原创 2022-07-21 23:04:14 · 3183 阅读 · 0 评论 -
TCP 通信并发服务器详解(附有案例代码)
代码】TCP通信并发详解(附有案例代码)原创 2022-07-20 16:48:47 · 2808 阅读 · 0 评论 -
TCP 滑动窗口详解(非常实用)
滑动窗口(Slidingwindow)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。滑动窗口协议是用来改善吞吐量的一种技术,即容许发送方在接收任何应答之前传送附加的包。接收方告诉发送方在某一时刻能送多少包(称窗口尺寸)。TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。服务器。............原创 2022-07-20 13:30:59 · 15855 阅读 · 2 评论 -
TCP 通信流程详解(附有案例代码)
4)阻塞等待,当有客户端发起连接,解除阻塞,接受客户端的连接,会得到一个和客户端通信的套接字(fd)(2)将这个监听文件描述符和本地的IP和端口绑定(IP和端口就是服务器的地址信息)UDP用户数据报协议,面向无连接,可以单播,多播,广播,面向数据报,不可靠。TCP传输控制协议,面向连接的,可靠的,基于字节流,仅支持单播传输。-客户端连接服务器的时候使用的就是这个IP和端口。(2)连接服务器,需要指定连接的服务器的IP和端口。(1)创建一个用于通信的套接字(fd).........原创 2022-07-20 08:53:30 · 12090 阅读 · 0 评论 -
Linux 多线程开发(附有案例代码)
同一个程序中的所有线程均会独立执行相同程序,且共享同一份全局内存区域,其中包括初始化数据段、未初始化数据段,以及堆内存段。(传统意义上的UNIX进程只是多线程程序的一个特例,该进程只包含一个线程)调用fork()来创建进程的代价相对较高,即便利用写时复制技术,仍热需要复制诸如内存页表和文件描述符表之类的多种进程属性,这意味着fork()调用在时间上的开销依然不菲。进程间的信息难以共享。由于除去只读代码段外,父子进程并未共享内存,因此必须采用一些进程间通信方式,在进程间进行信息交换。进程ID和父进程工D。..原创 2022-07-15 17:40:18 · 5899 阅读 · 0 评论 -
Linux 守护进程(附有案例代码)
守护进程(DaemonProcess),也就是通常说的Daemon进程(精灵进程),是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。一般采用以d结尾的名字。...............原创 2022-07-15 13:09:44 · 1008 阅读 · 0 评论 -
进程间通信——共享内存原理及详解(通俗易懂)
共享内存允许两个或者多个进程共享物理内存的同一块区域(通常被称为段)。由于一个共享内存段会称为一个进程用户空间的一部分,因此这种IPC机制无需内核介入。所有需要做的就是让一个进程将数据复制进共享内存中,并且这部分数据会对其他所有共享同一个段的进程可用。与管道等要求发送进程将数据从用户空间的缓冲区复制进内核内存和接收进程将数据从内核内存复制进用户空间的缓冲区的做法相比,这种IPC技术的速度更快。............原创 2022-07-15 08:55:50 · 3078 阅读 · 2 评论 -
进程间通信——信号原理及详解(附有案例代码)
(1)信号是 Linux进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也称之为软件中断.它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。(2)发往进程的诸多信号,通常都是源于内核。引发内核为进程产生信号的各类事件如下: 对于前台进程,用户可以通过输入特殊的终端字符来给它发送信号。比如输入Ctrl+C通常会给进程发送一个中断信号。 硬件发生异常,即硬件检测到一个错误原创 2022-07-14 15:02:27 · 1914 阅读 · 0 评论 -
进程间通信——内存映射原理及详解(附有案例代码)
内存映射(Memory-mapped I/0)是将磁盘文件的数据映射到内存,用户通过修改内存就能修改磁盘文件。3、使用内存映射进行进程通信1.有关系的进程(父子进程) - 还没有子进程的时候 - 通过唯一的父进程,先创建内存映射区 - 有了内存映射区以后,创建子进程 - 父子进程共享创建的内存映射区2.没有关系的进程间通信,单独创建两个进程 - 准备一个大小不是0的磁盘文件 - 进程1 通过磁盘文件创建内存原创 2022-07-13 14:28:42 · 1028 阅读 · 0 评论 -
进程间通信——有名管道原理及详解(附有案例代码)
有名管道(FIFO)不同于匿名管道之处在于它提供了一个路径名与之关联,以 FIFO的文件形式(特殊文件形式)存在于文件系统中,并且其打开方式与打开一个普通文件是一样的,这样即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径就能够彼此通过 FIFO相互通信,因此,通过FIFO不相关的进程也能交换数据。 一旦打开了 FIFO,就能在它上面使用与操作匿名管道和其他文件的系统调用一样的I/O系统调用了 (如read ( ). write()和close())。与管道一样, FIFO也有一个原创 2022-07-13 10:01:33 · 2158 阅读 · 0 评论 -
进程间通信——匿名管道原理及详解(附有案例代码)
管道也叫无名(匿名)管道,它是是UNIX系统IPC(进程间通信)的最古老形式,所有的UNIX系统都支持这种通信机制。 统计一个目录中文件的数目命令: ls | wc -l,为了执行该命令,shell 创建了两个进程来分别执行ls 和wc;通常情况下,进程 ls 的输出直接通过 stdout 输出到控制台,但是为了两个进程能够进行通信,系统会建立一个管道,然后把进程 ls 发的内容输出到管道,进程 wc 从管道中读取进程 ls 输出的内容,从而实现进程间的通信。A.管道其实是一个在内核内存中维护原创 2022-07-13 09:49:57 · 3377 阅读 · 0 评论 -
进程间通信(非常实用)
进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源。 但是,进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信(IPC: Inter Processes Communication )。进程间通信的目的: 数据传输:一个进程需要将它的数据发送给另一个进程。 通知事件:一个进程需要向另一个或一组进程发送消息,通知它它们)发生了某种事件(如进程终止时要通知原创 2022-07-11 14:43:25 · 543 阅读 · 0 评论 -
wait 和 waitpid 的区别(附有案例代码)
功能:等待任意一个子进程结束,如果任意一个子进程结束了,该函数会回收子进程的资源。参数:int *wstatus 进程退出时的状态信息,传入的是一个int类型的地址(用于接收进程退出时的状态信息),传出参数。返回值: - 成功:返回被回收的子进程的id - 失败:-1 (所有的子进程都结束,调用函数失败) 调用wait函数的进程会被挂起(阻塞),直到它的一个子进程退出或者收到一个不能被忽略的信号时才被唤醒(相当于继续往下执行);如果没有子进程了,函数立原创 2022-07-11 09:46:08 · 293 阅读 · 0 评论 -
孤儿进程、僵尸进程和进程退出(通俗易懂)
该文章主要是针对面试做大致的了解,通俗易懂!!!一、孤儿进程 父进程运行结束,但子进程还在运行(未运行结束),这样的子进程就称为孤儿进程(orphan Process)。每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为 init ,而 init 进程会循环地wait () 它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init进程就会代表党和政府出面处理它的一切善后工作。因此孤儿进程并不会有什么危害。 当出现孤儿进程的时候,内核会自动把它的父进程设原创 2022-07-10 15:09:23 · 819 阅读 · 0 评论 -
Linux 的父进程和子进程的执行情况(附有案例代码)
该文章主要是针对面试做大致的了解,通俗易懂!!!指已创建一个或多个子进程的进程。在Linux里,除了进程0以外的所有进程都是由其他进程使用系统调用fork()函数创建的,这里调用fork()函数创建新进程的进程即为父进程,而相对应的为其创建出的进程则为子进程,因而除了进程0以外的进程都只有一个父进程,但一个进程可以有多个子进程。指的是由另一进程(对应称之为父进程)所创建的进程。子进程继承了对应的父进程的大部分属性,如文件描述符。在Unix中,子进程通常为系统调用fork()函数的产物。在此情况下,子进程一开原创 2022-07-09 17:35:39 · 8095 阅读 · 1 评论