
linux
文章平均质量分 74
Thomas_Lbw
分享学习过程,记录学习点滴。
QQ:1198409732
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux GCC & G++:各个版本发行年份及新增特性盘点
全称主要功能:GCC 是一个编译器套件,支持多种编程语言,包括 C、C++、Fortran、Ada、Go 等。命令行工具gcc全称主要功能:G++ 是 GCC 的一个前端,用于编译 C++ 程序。命令行工具g++原创 2024-06-20 00:33:20 · 7123 阅读 · 0 评论 -
AES对称加密算法原理、C++代码示例
高级加密标准(AES,全称:Advanced Encryption Standard)是一种对称加密算法,由美国国家标准与技术研究院(NIST)于2001年发布。它取代了数据加密标准(DES),成为许多政府、企业和机构广泛使用的标准加密方法。AES (Advanced Encryption Standard) 是一种对称加密算法,由 NIST 于 2001 年发布,取代了 DES。它通过多轮数学操作将明文转换为密文,密钥长度为 128、192 或 256 位。主要步骤包括字节代替、行移位、列混合和轮密钥加。原创 2024-05-12 16:55:54 · 1399 阅读 · 0 评论 -
银河麒麟安装回退至GCC5.4.0 添加镜像源地址并设置其优先级。问题已解决
问题:因为软件依赖低版本的gcc,而新版银河麒麟gcc默认时高版本,考虑到软件适配应该考虑最低版本的麒麟系统,需要将gcc降级。过程中遇到问题,无法直接找到gcc5.4.0。原创 2024-03-30 16:39:21 · 1056 阅读 · 0 评论 -
C++ POCO库的基础介绍(Windwos和Linux)
POCO(Portable Components)是一个轻量级的 C++ 类库,提供了许多基本的、可移植的 C++ 组件和工具。它包含了很多模块,例如网络、XML、加密、多线程等等,可帮助 C++ 开发人员快速构建高效、可靠、可扩展的应用程序。感觉一个基础的项目的外部库全部使用POCO就可以了,我司的技术招聘同样写了需要使用POCO,后续值得研究关注详细了解。原创 2023-04-26 00:35:46 · 2722 阅读 · 1 评论 -
程序员的自我修养第七章——动态链接 (上)
继续更新《程序员的自我修养》这个系列,主要是夏天没把它看完,补上遗憾。本篇来自书中第七章。再说动态链接前,我们先阐明为什么要动态链接:动态链接的产生来自静态链接的局限性。随着静态链接的发展,其限制也越来越大,如浪费空间、模块更新困难等问题暴露了出来。使得人们不得不寻找其他方法,动态链接应运而生。原创 2023-01-24 17:32:02 · 1715 阅读 · 8 评论 -
Linux下JAVA使用JNA调用C++的动态链接库(g++或者gcc编译的.so文件)
工作的朋友可能会知道一个团队里有许许多多的角色,有产品、测试、开发、管理、HR等等,而开发可根据不同语言分为JAVA、C++、Python等等,他们之间也需要互相支撑,比如JAVA需要调用我们C++的方法,我的任务不就来了么。说实话,这方面的内容网上的资料真的很少,而且有错误、不统一、不全面、不明了,所以我决定更这一篇。原创 2022-11-26 03:45:45 · 4845 阅读 · 2 评论 -
一起学习Makefile
在介绍makefile和make的具体概念前,我们先通过一个例子来说明makefile和make到底是为解决什么问题而存在的。假设有一个如图所示的C工程:那么我们需要按照如下步骤依次编译# 步骤1:编译主程序模块$ gcc -o <100个主程序模块的o文件> -c <100个主程序模块的c文件># 步骤2:编译功能模块a$ gcc -o <1000个功能模块a的o文件> <1000个功能模块a的c文件>$ ar r...原创 2022-04-19 00:55:49 · 1044 阅读 · 0 评论 -
Linux下c++游戏Pacman游戏
本篇文章在Linux下编译运行c++的PacMan吃豆人游戏。首先下载Pacman.zip源代码。//下载源代码wget https://labfile.oss.aliyuncs.com/courses/1182/Pacman.zip//解压源代码unzip -q Pacman.zip安装 openGL 库sudo apt-get updatesudo apt-get install build-essentialsudo apt-get install libgl1...原创 2022-04-18 13:37:40 · 3905 阅读 · 0 评论 -
C++ 实现内存泄露检查
内存泄漏一直是 C++ 中比较令人头大的问题, 即便是很有经验的 C++程序员有时候也难免因为疏忽而写出导致内存泄漏的代码。除了基本的申请过的内存未释放外,还存在诸如异常分支导致的内存泄漏等等。本项目将使用 C++ 实现一个内存泄漏检查器。要检测一个长期运行的程序是否发生内存泄露通常是在应用中设置检查点,分析不同检查点中内存是否长期保持占用而未释放,从本质上来说,这与对一个短期运行的程序进行内存泄露检查是非常类似的。所以本项目中的内存泄漏检查器将实现一个用于短期内存泄露的检查器。...原创 2021-12-12 11:25:24 · 4938 阅读 · 1 评论 -
C++多线程-互斥锁(mutex)
在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。比如说,同一个文件,可能一个线程会对其进行写操作,而另一个线程需要对这个文件进行读操作,可想而知,如果写线程还没有写结束,而此时读线程开始了,或者读线程还没有读结束而写线程开始了,那么最终的结果显然会是混乱的。为了保护共享资源,在线程里也有这么一把锁——互斥锁(mutex),互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即上锁( lock )和解锁( unlock )。互斥锁的特点1. 原子...原创 2021-12-12 11:24:19 · 2060 阅读 · 0 评论 -
TCP/IP网络编程
https://github.com/riba2534/TCP-IP-NetworkNote/tree/master/ch07原创 2021-11-10 20:28:54 · 2302 阅读 · 0 评论 -
Linux实现多线程模型
通过《多线程生产者消费者模型仿真停车场》项目的学习,不仅可以实现一个基于生产者消费者模型的的停车场停车信息系统,还可以深入理解多线程的创建终止和同步过程,以及线程互斥访问共享数据的锁机制原理。如果对于锁这个操作不熟悉的同学可以参考线程锁。...原创 2021-11-07 22:22:17 · 557 阅读 · 0 评论 -
C语言聊天室
C语言聊天室项目原创 2021-11-07 15:30:36 · 1128 阅读 · 0 评论 -
Linux下使用c++实现聊天室
Linux使用c++我们会使g++来编码,使用gdb工具进行代码调试。同时在大型项目中,我们编写makefile来自动化编译。知识点使用 g++ 编译器编译代码 使用 gdb 进行调试 编写 makefile首先明确c++编译过程分为四个阶段:预处理 编译 汇编 链接预处理负责 宏定义的替换、条件编译、将include头文件展开到正文。编译负责将源码转换成汇编代码。汇编负责将汇编代码转成可重定位的目标二进制文件。链接 负责将所有的目标文件连接起来,进行符号解析和重定位,最后生.原创 2021-11-06 13:13:13 · 3938 阅读 · 0 评论 -
Linux运维从入门到进阶
Linux 磁盘管理知识点磁盘和文件系统简介 文件系统工具 磁盘分区管理 交换分区 逻辑卷和阵列磁盘和文件系统介绍正如上文中提到的,Linux 中一切都是文件。这个重要的概念贯穿整个 Linux 的始末,磁盘也是如此。各种接口的磁盘在 Linux 系统中以文件的形式进行挂载。文件系统 简述 ext 最早的 Linux 文件系统,性能和兼容性上有很多缺陷。 ext2 Ext 文件系统的升级版本,改进了一些缺陷。 ext3 对于 E...原创 2021-11-05 20:47:23 · 4518 阅读 · 0 评论 -
LInux操作系统 设备和网络
设备驱动是指控制具体的物理设备完成 I/O 操作,与硬件的物理特性和数据传输控制方式密切相关,不同类型的设备、不同数据传输控制方式要采用不同设备驱动方式。Linux 首先把设备分为块设备、字符设备两大类,然后再对块设备和字符设备具体分类,针对每一类设备分别开发不同的设备驱动程序。数据结构:块设备表,对每一类块设备分别设置块设备表,记录该类设备的相关信息。其内容包括:忙标志:标志设备的忙闲状态,0 表示空闲,1 表示正忙。 出错次数:指设备 I/O 出错次数。每次 I/O 完...原创 2021-11-05 13:45:36 · 232 阅读 · 0 评论 -
Linux操作系统(1)
Linux 内核其实主要由 5 个模块构成,分别是:进程调度模块 内存管理模块 文件系统模块 进程间通信模块 网络接口模块进程的定义进程是程序的一次执行 进程是可以和其他进程并发执行的计算 进程就是一个程序在给定活动空间和初始条件下,在一个处理机上的执行过程 进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位 进程是动态的、有生命周期的活动。内核可以创建一个进程,最终将由内核终止该进程使其消亡在 Linux 操作系统中,Linux .原创 2021-11-04 14:00:29 · 564 阅读 · 0 评论 -
c++高级编程(3)
在说到虚函数之前先介绍多态概念,多态以封装和继承为基础,多态又分为静态多态和动态多态。而本次课程主要讲解的是动态多态。静态多态(早绑定) 动态多态(晚绑定) 虚析构函数 虚函数 虚函数表静态多态又叫做早绑定,将不同特殊行为和单个泛化记号相关联,由于这种关联处理于编译期而非运行期,因此被称为 “静态”。可以用来实现类型安全、运行高效的同质对象集合操作。静态多态表现的形式:函数重载。 运算符重载。 带变量的宏多态。动态多态动态多态又叫做晚绑定,生效...原创 2021-11-03 21:47:16 · 182 阅读 · 0 评论 -
c++高阶编程(2)
继承:// Person.h#include <iostream>#include <string>using namespace std;class Person{public: // 公有属性成员函数 Person(); ~Person(); void setName(const string &name); string getName() const; void setAge(int age); in原创 2021-11-03 19:01:45 · 260 阅读 · 0 评论 -
计算机中各种端口分类介绍
计算机中的端口分为硬件端口和软件端口。硬件端口分为串行接口和并行接口串行接口主要有USB、SATA和IDE等,并行接口为打印机的接口。软件端口一般指网络中面向连接服务和无连接服务的通信协议端口,一般指网络中使用的接口常用的电脑端口计算机中的65535个端口按不同的分类标准可以分为很多类,其中最常用的分类标准有按端口号和协议类型分类两种。1. 按端口号分类按端口号可以将电脑中的端口分为3类,分别是“公认端口”、“注册...转载 2021-10-26 11:29:06 · 5310 阅读 · 0 评论 -
在编写多线程时遇到的问题
问题描述:timespec”:“struct”类型重定义在C++多线程代码的时候的错误,google之,然后找到了解决办法。原始答案如下。Timespec :struct type Error c2011threads的-win32的(我假设你正在使用),可在内部包括time.h中(time.h中通常也被其他的库/头文件包含) -和time.h中已经声明了的timespec(也,它兼容的方式这样做与pthreads的) -但与pthreads-win32的的pthread...转载 2021-10-22 16:57:16 · 223 阅读 · 0 评论 -
Linux 线程间通信方式、进程通信方式
Linux线程间通信几种主要的手段1. 管道:管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;2. 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号...转载 2021-10-22 14:58:53 · 1125 阅读 · 2 评论 -
Linux常用命令总结及实操
CPU1. 查看几个cpucat /proc/cpuinfo | grep "physical id" | sort | uniq(base) iip@Precision-7920-215-01:~$ cat /proc/cpuinfo | grep "physical id" | sort | uniqphysical id : 0physical id : 12. 查看cpu内核数 cat /proc/cpuinfo | grep "cores" | uni.原创 2021-10-22 13:49:54 · 867 阅读 · 0 评论 -
海量数据处理方法总结
MapReduceMapReduce的原理及执行过程 - ahu-lichang - 博客园深入理解MapReduce原理 - 简书浅析MapReduce原理及其执行过程 - 知乎BitMapBitmap简介 - 废物大师兄 - 博客园c++实现:海量数据处理算法—Bit-Map_黄规速博客:学如逆水行舟,不进则退-CSDN博客待更新...原创 2021-10-22 11:57:44 · 560 阅读 · 0 评论 -
MySql中union和join的介绍
UnionUNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。//联合两个表,没有重复SELECT E_Name FROM Employees_ChinaUNIONSELECT E_Name FROM Employees_USA数据源:结果:默认地,UNION 操作符选取不同的值。如果允...转载 2021-10-22 11:38:54 · 982 阅读 · 0 评论 -
BTree和B+Tree的不同
闲扯B-Tree和B+Tree的异同:闲扯B-Tree和B+Tree的异同_天下无敌庞成勇-CSDN博客Btree:B树是一种多路自平衡搜索树,它类似普通的二叉树,但是B书允许每个节点有更多的子节点。B树示意图如下:B树的特点:(1)所有键值分布在整个树中(2)任何关键字出现且只出现在一个节点中(3)搜索有可能在非叶子节点结束(4)在关键字全集内做一次查找,性能逼近二分查找算法B+树是B树的变体,也是一种多路平衡查找树,B+树的示意图为:从图中也可以看...原创 2021-10-22 11:25:53 · 479 阅读 · 0 评论 -
乐观锁与悲观锁
乐观锁:乐观锁与悲观锁的区别_一新一意的博客-CSDN博客_乐观锁悲观锁的区别悲观锁及其使用体验:MySQL中的悲观锁 - 简书乐观锁实现:mysql 乐观锁实现 - 依然范儿特西 - 博客园原创 2021-10-22 10:07:31 · 109 阅读 · 0 评论 -
关系型数据库和非关系型数据库
系型数据库 与非关系型数据库的区别_阿俊的博客-CSDN博客_非关系型数据库和关系型数据库转载 2021-10-22 09:56:06 · 130 阅读 · 0 评论 -
数据库索引如何创建,它的优缺点。
为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能。第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。也许会有人要问:增加索引有如此多的优点,.转载 2021-10-22 09:52:57 · 1994 阅读 · 0 评论 -
谈谈数据库中索引的理解,索引和主键的区别
索引:面试题(一)- 谈谈你对数据库中索引的理解_勇气与行动-CSDN博客_索引的理解面试官:深刻谈谈你对MySQL索引的理解 - 尚码园区别:数据库中,主键和索引的区别 - 知乎原创 2021-10-21 22:33:56 · 390 阅读 · 0 评论 -
DNS和http协议,http请求方式
DNS 域名系统,它作为可以将域名和IP地址相互映射的一个分布式数据库。DNS 的全称是 Domain Name System 或者 Domain Name Service,它主要的作用就是将人们所熟悉的网址 (域名) “翻译”成电脑可以理解的 IP 地址,这个过程叫做 DNS 域名解析。打个比方,我们登百度的地址的时候,都是敲www.baidu.com,进行登陆,难道你会去敲IP地址登百度?明显,域名容易记忆。而且,一个域名往往对应多个DNS地址,如下图所示...转载 2021-10-21 22:20:49 · 1006 阅读 · 0 评论 -
常用的TCP选项
MSS选项:通知最大可接收量。窗口规模选项:主要指的是滑动窗口中窗口的规模。TCP连接任何一端能够通告对端的最大窗口大小是65535,因为在TCP首部中相应的字段占16位。当然会有特殊情况,后面会讲到。在以Unix为核心的一些操作系统中,SO_RCVBUF选项决定了TCP窗口的大小,你设置为多少窗口就为多少。对于客户端,SO_RCVBUF选项必须在connect之前设置;对于服务器,SO_RCVBUF选项必须在listen前设置。因为TCP的窗口规模选项是在建立连接时用SYN与对...转载 2021-10-21 19:01:21 · 1105 阅读 · 0 评论 -
超时重传、滑动窗口、拥塞控制的简单认识
TCP能够实现我稳定链接,因为有处理异常情况的机制。、TCP重传机制 TCP滑动窗口 TCP的拥塞控制一:TCP重传机制第一种:超时重传机制 死等没有收到的包。第二种:快速重传机制 也就是说,如果包没有连续到达,那么我们就反馈ACK =(最后可能丢失的那个包),如果发送方连续三次收到了这个相同的ACK,那么就直接重传这个包,而不必等RTO时间到了才重传。TCP滑动窗口滑动窗口(S...转载 2021-10-21 18:32:17 · 461 阅读 · 0 评论 -
time_wait close_wait状态产生原因 keepalive
在服务器的日常维护过程中,会经常用到下面的命令: 1 netstat -n | awk'/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 它会显示例如下面的信息:TIME_WAIT 814CLOSE_WAIT 1FIN_WAIT1 1ESTABLISHED 634SYN_RECV 2LAST_ACK 1常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,C.转载 2021-10-21 11:18:53 · 392 阅读 · 0 评论 -
TCP和UDP的区别
首先二者都是传输层的协议。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,是专门为了在不可靠的网络中提供一个可靠的端对端字节流而设计的,面向字节流。 UDP(用户数据报协议)是iso参考模型中一种无连接的传输层协议,提供简单不可靠的非连接传输层服务,面向报文。区别:1) TCP是面向连接的,可靠性高;UDP是基于非连接的,可靠性低2) 由于TCP是连接的通信,需要有三次握手、重新确认等连接过程,会有延时,实时性差,同时过程复杂,也使其易于攻击;UDP没有建立连接的过程,因而实时转载 2021-10-20 22:36:15 · 633 阅读 · 0 评论 -
Linux文件存储结构,包括目录项、inode、数据块
大部分的Linux文件系统(如ext2、ext3)规定,一个文件由目录项、inode和数据块组成。1.目录项:包括文件名和inode节点号。 2. Inode:又称文件索引节点,包含文件的基础信息以及数据块的指针。 3.数据块:包含文件的具体内容。Inode 索引节点理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector),每个扇区储存512字节(相当于0.5KB)。...原创 2021-10-20 18:55:17 · 3467 阅读 · 1 评论