C/C++
文章平均质量分 80
41167361
这个作者很懒,什么都没留下…
展开
-
mysql密码相关问题
文1菜鸡乱给权限导致ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)的解决方法登录MySQL时突然报错(ps:自己确定用户名和密码没错),这种情况的解决方法1,报错如下:2,解决方法:2,1 问题分析 在关闭数据库的命令发现mysql关不了,提示Warning: World-writable config file '/etc/mysql/mysql.conf.d/原创 2021-04-23 16:14:00 · 126 阅读 · 0 评论 -
ubuntu下C的多线程的线程同步
为什么需要线程同步因为在多线程环境中,线程之间由于竞争共享资源(临界资源)容易引起数据不一致的问题。一般采用互斥锁(互斥信号量)解决,保证只有一个线程进入临界区。这篇文章就讲互斥锁,读写锁互斥量(mutex):主要用于保护共享数据,确保同一时间只有一个线程访问数据。互斥量从本质上来说是一把锁,在访问共享资源前对互斥量进行加锁,访问完成后释放互斥量(解锁)。对互斥量进行加锁之后,任何其他试图再次对互斥量加锁的线程都会被阻塞直到当前线程释放该互斥锁。这样就可以保证每次只有一个线程可以向前执行。读写锁(原创 2020-08-13 21:51:50 · 496 阅读 · 0 评论 -
ubuntu下C的多线程的简单实现
线程概念什么是线程LWP:light weight process 轻量级的进程,本质仍是进程(在Linux环境下) 进程:独立地址空间,拥有PCB 线程:也有PCB,但没有独立的地址空间(共享) 区别:在于是否共享地址空间。 独居(进程);合租(线程)。Linux下: 线程:最小的执行单位 进程:最小分配资源单位,可看成是只有一个线程的进程。Linux内核线程实现原理类Unix系统中,早期是没有“线程”概念的,80年代才引入,借助进程机制实现出了线程的概念。因此在这类系统中,进原创 2020-08-13 21:21:24 · 2850 阅读 · 0 评论 -
ubuntu下C的进程间通信
这篇文章通过pipe(管道),FIFO(命名管道),mmap(共享存储映射)的介绍和代码实例去认识并熟悉进程间通信。1.认识IPC方法Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)。在进原创 2020-08-13 17:50:17 · 1017 阅读 · 0 评论 -
ubuntu下C的多进程的简单实现
实现C++多进程要先了解一系列的相关函数和相关概念1.进程相关概念1.1程序和进程:程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu、内存、打开的文件、设备、锁…)进程,是一个抽象的概念,与操作系统原理联系紧密。进程是活跃的程序,占用系统资源。在内存中执行。(程序运行起来,产生一个进程)程序 → 剧本(纸) 进程 → 戏(舞台、演员、灯光、道具…)同一个剧本可以在多个舞台同时上演。同样,同一个程序也可以加载为不同的进程(彼此之间互不影响)如:同时开两个终端。各自都有一个bash但彼原创 2020-08-13 16:49:29 · 973 阅读 · 0 评论 -
Ubuntu下的常用linux命令及参数
1.Linux 命令格式command [-options] [parameter1] …command:命令名,相应功能的英文单词或单词的缩写[-options]:选项,可用来对命令进行控制,也可以省略,[]代表可选parameter1 …:传给命令的参数,可以是零个一个或多个2.查看帮助文档一般是 Linux 命令自带的帮助信息,并不是所有命令都自带这个选项。如我们想查看命令 ls 的用法:ls --help3.manman 是 Linux 提供的一个手册,包含了绝大部分的原创 2020-08-13 11:25:19 · 1286 阅读 · 0 评论 -
C++STL入门之Map
1.Map和multimap容器1.1map/multimap的介绍1)map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对。它提供基于key的快速检索能力。2)map中key值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。3)map的具体实现采用红黑树变体的平衡二叉树的数据结构。在插入操作和删除操作上比vector快。map可以直接存取key所对应的value,支持[]操作符,如map[key]=value。4)multi原创 2020-08-12 22:18:43 · 115 阅读 · 0 评论 -
C++STL入门之List,Set
1.List容器1.1List介绍1)list是一个双向链表容器,可高效地进行插入删除元素。2)list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符。1.2list对象的创建list采用采用模板类实现,对象的默认构造形式:list lstT;list lstInt; //定义一个存放int的list容器。list lstFloat; //定义一个存放float的list容器。list lstString; //定义一个存放string的原创 2020-08-12 20:48:47 · 614 阅读 · 0 评论 -
C++STL入门之Deque,Stack,Queue
1.Deque容器1.1Deque介绍1)deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的。2)deque在接口上和vector非常相似,在许多操作的地方可以直接替换。3)deque可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲)。4)deque头部和尾部添加或移除元素都非常快速。但是在中部安插元素或移除元素比较费时。5)头文件是deque1.2deque对象的创建原创 2020-08-12 17:42:28 · 241 阅读 · 0 评论 -
C++STL入门之String,Vector
1.基本概念STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。STL的六大组件:容器(Container原创 2020-08-12 16:05:06 · 308 阅读 · 0 评论 -
C/C++关键字及运算符的简单用法4
1.sizeof关键字1.1简单用法sizeof 为C语言的一个主要关键字,而并非是一个函数,虽然其后经常会跟着一对括号,这就导致许多人认为这是一个函数,进而产生误解。用途:求某一特定的变量、指针、结构体、枚举、联合体等所占内存空间的大小。1.2示例:#include<iostream>using namespace std;int main(){ char str1[]={'h','e','l','l','o'}; cout<<"str1="<原创 2020-08-12 13:56:45 · 139 阅读 · 0 评论 -
C/C++关键字及运算符的简单用法3
1.typedef关键字1.1简单介绍C语言允许用户使用 typedef 关键字来定义自己习惯的数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的结构型名称、共用型名称、枚举型名称等。一旦用户在程序中定义了自己的数据类型名称,就可以在该程序中用自己的数据类型名称来定义变量的类型、数组的类型、指针变量的类型与函数的类型等。1.2简单用法typedef的4种主要用法1)为基本数据类型定义新的类型名。有利于增强程序的可拓展性。示例:typedef long doub原创 2020-08-12 12:03:06 · 179 阅读 · 0 评论 -
C/C++关键字及运算符的简单用法2
1.extern的用法1.1简单理解简单的c知识:如果全局变量不在文件的开头定义,有效的作用范围将只限于其定义处到文件结束。如果在定义点之前的函数想引用该全局变量,则应该在引用之前用关键字 extern 对该变量作“外部变量声明”,表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。extern放在变量或者函数之前,表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义,如此可以不用导入变量或者函数所在的文件。1.2用法实例原创 2020-08-11 22:53:46 · 111 阅读 · 0 评论 -
C++关键字及运算符的简单用法1
1.双冒号作用域运算符1.1 ::的用途1.2 代码示例#include <iostream>using namespace std;int count=200;void test(){ int count=100; cout<<"test count = "<<count<<endl; cout<<"global count"<<::count<<endl;}int main原创 2020-08-11 13:42:16 · 268 阅读 · 0 评论