自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FixTheCoder

猿,改变世界的动物!

  • 博客(29)
  • 收藏
  • 关注

原创 Linux 线程-条件变量

#include <cstdio>#include<pthread.h>#include <iostream>#include<unistd.h>#include<string.h>using namespace std;//节点结构typedef struct node { int data; stru...

2018-09-04 09:49:46 140

原创 Linux 读写锁

1.读写锁是几把锁一把锁pthread_rwlock_t lock;2.读写锁的类型读锁 - 对内存做读操作写锁 - 对内存做写操作3.读写锁的特性线程A加读锁成功,又来了三个线程,做读操作,可以加锁成功线程A加写锁成功,又来了三个线程,做读操作,三个线程阻塞线程A加读锁成功,又来了B线程加写锁阻塞,又来了C线程加读锁阻塞4.主要操作函数...

2018-09-04 09:49:03 675

原创 Linux 线程-互斥锁(一)

1.互斥锁概念:       在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。2.常用函数互斥锁参数类型 -- pthread_mutex_t   mutex 互斥锁初始化 -- pthread_mutex_init 表头文件 #inclu...

2018-08-22 10:47:27 2318 1

原创 Linux 多线程

1.创建线程 -- pthread 表头文件  #include <pthread.h> 定义函数 int pthread_create(pthread_t * thread, pthread_attr_t * attr, void * (*start_routine)(void *), void * arg); 函数说明...

2018-08-16 11:29:02 151

原创 Linux 进程间通信(二)

4.mmap-创建内存映射区作用:将磁盘文件的数据映射到内存,用户通过修改内存就能 修改磁盘文件 表头文件 #include <unistd.h> #include <sys/mman.h> 定义函数 void *mmap(void *start , size_t length , int prot , int fl...

2018-08-14 14:02:24 109

原创 Linux 进程间通信(一)

1.IPC     进程间通信    interProcess Communication2.管道(匿名)1)管道的概念本质:内核缓冲区 伪文件:不占用磁盘空间 特点 两部分: 读端,写端,对应两个文件描述符 数据写端流入,读端流出 操作管道的进程被销毁之后,管道自动被释放 管道默认是阻塞的  读写 2)管道的原理内部实现方式:队...

2018-08-14 09:00:03 156

原创 Linux 进程控制(三)

3.exec函数族1)exec函数族让父子进程执行不相干的操作 能够替换进程地址空间中的源代码.txt段   #include<unistd.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include <iostream>using na...

2018-08-13 11:03:20 119

原创 Linux 进程控制(二)

2.进程控制1)进程控制fork    一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有...

2018-08-13 09:15:53 108

原创 Linux 进程控制(一)

1.进程相关概念1)程序和进程程序:二进制文件,占用的磁盘空间 进程:启动的程序 所有的数据都在内存中 需要占用更多的系统资源 cpu,物理内存 2)并行和并发计算机操作系统对于并发性和并行性的概念给出的定义是: 并行性是指两个或多个事件在同一时刻发生; 并发性是指两个或多个事件在同一时间段内发生。Erlang 之父 Joe Armstrong 用一张5岁小...

2018-08-10 16:17:43 426

原创 Linux 文件I/O

1.open/closeopen 表头文件 #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> 定义函数 int open( const char * pathname, int flags); int open( con...

2018-08-10 13:18:50 133

原创 GDB调试

1.gcc a.c b.c c.c -o app  -g     -g:会保留函数名和变量名2.启动gdb  gdb 可执行程序的名字   gdb app 给程序传参:set args xxx xxx  3.查看代码 --list当前文件: l l 行号 l 函数名 非当前文件: l 文件名:行号 l 文件名:函数名 设置显示的行数: se...

2018-08-09 15:21:26 106

原创 makefile

1.make gcc - 编译器 make - Linux自带的构建器 构建的规则在makefile中 2.makefile 文件的命名  -makefile  -Makefile3.makefile 中的规则gcc a.c b.c c.c -o app三部分: 目标 ,依赖,命令 目标:依赖             (tab缩进)命令app:a.c b.c...

2018-08-09 13:27:20 143

原创 c/c++ 静态库与动态库

链接库二进制文件 将源码转换成二进制格式的源代码 加密使用头文件 制作出的库静态库命名规则:libtest.a lib xxx -库的名字 .a 制作步骤: 源代码.c.cpp 将.c文件生成.o gcc a.c b.c -c 将.o打包 ar  rcs静态库名   *.o ar rcs libtest.a a.o b.o ...

2018-08-08 15:07:24 111

原创 gcc 常用参数

gcc工作流程预处理  -E(宏替换,头文件展开,注释去掉,xxx.c -> xxx.i) 编译     -S  (xxx.i>xxx.s  汇编文件) 汇编     -c   (xxx.s->xxx.o 二进制文件)   链接   (xxx.o->xxx  (可执行))gcc常用参数-v/-version 查询版本号。 -I 编译时指定头文...

2018-08-08 13:53:28 114

原创 leetcode  计数质数

 统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 思路判断从2~n质数的数量返回,核心算法转换为判断一个数是否为质数。 质数定义:质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。 暴力法:依次遍历2~n;时间复杂度O(n^2). 优化方向是利用空...

2018-08-07 11:27:41 220

原创 leetcode 第一个错误的版本

你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出...

2018-08-06 15:14:31 156

原创 leetcode 二叉树

 二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。 思路:当前结点深度等于左右子树中较大的那个深度加一...

2018-08-06 14:31:25 100

原创 leetcode 链表(删除节点、反转、合并、回文、环形)

删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 -- head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 -> 9示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,...

2018-08-06 08:19:42 415

原创 leetcode 字符串转整数(atoi)

实现 atoi,将字符串转为整数。在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。当字符串中的第一个非空字...

2018-08-03 09:25:25 145

原创 leetcode 旋转图像

给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,...

2018-08-02 14:22:40 125

原创 leetcode 有效的数独

判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 '.' 表示。示例 1:输入:[ ["5","3",".",".",...

2018-08-02 13:50:36 151

原创 leetcode 两数之和

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1] class Solution {public: vector<int...

2018-08-02 13:01:44 95

原创 leetcode 移动0

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入:[0,1,0,3,12]输出:[1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。  class Solution {public: void moveZeroes(vector<int&...

2018-08-02 12:36:39 160

原创 leetcode 加一

给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4...

2018-08-02 12:13:20 129

原创 leetcode 两个数组的交集 II

给定两个数组,写一个方法来计算它们的交集。例如:给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].注意:   输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。    我们可以不考虑输出结果的顺序。跟进:如果给定的数组已经排好序呢?你将如何优化你的算法? 如果 nums1 的大小比 nums2 小很多,哪...

2018-08-02 11:11:02 122

原创 leetcode 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4 方法:A^A^B=Bclass Solution {public: int ...

2018-08-02 11:00:57 109

原创 std::sort函数用法

default (1) template <class RandomAccessIterator> void sort (RandomAccessIterator first, RandomAccessIterator last); custom (2) template <class RandomAccessIterator,...

2018-08-02 10:54:24 54860 1

原创 leetcode 存在重复

给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true第一次提交(44 ms):先检...

2018-08-02 10:42:54 138

原创 leetcode  旋转数组

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入:[1,2,3,4,5,6,7]和 k = 3输出:[5,6,7,1,2,3,4]解释:向右旋转 1 步:[7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步:[5,6,7,1,2,3,4]示例 2:输入:[-1,-100,3,99] ...

2018-08-02 10:08:46 92

空空如也

空空如也

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

TA关注的人

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