c
记得最初的梦想
一个单纯的程序员
展开
-
VScode for c++
VScode for c++VScode for c++launch.json{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/${fileBasena原创 2020-05-11 08:55:45 · 323 阅读 · 0 评论 -
SQLite install
背景Ubuntu 12.04SQLite 3.8.2下载源码去sqlite官方下载源码sqlite-autoconf-3080200.tar.gz。解压tar包.安装查看README和INSTALL文档知道sudo ./configuresudo make install测试执行sqlite3 test.db原创 2014-01-14 21:37:28 · 1381 阅读 · 0 评论 -
Find common substring[Dynamic Programming]
今天有人让我写个求公共zicuan原创 2014-04-25 23:07:50 · 813 阅读 · 0 评论 -
POSIX多线程--条件变量
一、什么是条件变量 与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。 条件变量使我们可以睡眠等待某种条件出现。条件的检测是在互斥锁的保护下进行的。如果一个条件为假,一个线程自动阻塞,并释放等待状态改变的互斥锁。如果另一个线程改变了条件,它发信号给关联的条件 变量,唤转载 2014-07-29 16:27:18 · 659 阅读 · 0 评论 -
互斥量、条件变量与pthread_cond_wait()函数的使用,详解(二)
1.Linux“线程” 进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型。Linux是一种“多进程单线程”的操作系统。Linux本身只有进程的概念,而其所谓的“线程”本质上在内核里仍然是进程。 大家知道,进程是资源分配的单位,同一进程中的多个线程共享该进程的资源(如作为共享内存的全局变量)。Linux中所谓的“线程”只是在被创建时c转载 2015-03-24 11:30:20 · 7776 阅读 · 0 评论 -
互斥量、条件变量与pthread_cond_wait()函数的使用,详解(一)
1. 首先pthread_cond_wait 的定义是这样的The pthread_cond_wait() and pthread_cond_timedwait() functions are used to block on a condition variable. They are called with mutex locked by the calling thread or u转载 2015-03-24 11:24:48 · 1658 阅读 · 1 评论 -
Eclipse的C++14支持配置
g++安装參考地址: http://sysads.co.uk/2014/07/install-gcc-gnu-4-9-1-on-ubuntu-14-04/ 当前Ubuntu的LTS版本号为14.04,直接在apt-get命令安装的g++到不了5.0版本号,不能获得所有的c++14的支持。所以必须安装5.0以上版本号的g++。这里的方法例如以下:sudo add-apt-reposi...原创 2018-03-26 17:02:24 · 1191 阅读 · 0 评论 -
C++单元测试入门指南-在eclipse上建立Google test
中文链接: https://blog.csdn.net/u012515915/article/details/46942745 原文链接:https://www.codeproject.com/Articles/811934/Cplusplus-unit-test-start-guide-how-to-set-up-Goog原创 2018-03-27 15:15:42 · 667 阅读 · 0 评论 -
条件变量signal与unlock的顺序
编写同步队列时,有用到条件变量,对操作队列的线程进行同步。当队列为空时,允许get线程挂起,直到add线程向队列添加元素并通过唤醒条件变量,get线程继续向下运行。条件变量在多线程程序中用来实现“等待->唤醒”逻辑常用的方法。条件变量要和互斥量相联结,以避免出现条件竞争:一个线程预备等待一个条件变量,当它在真正进入等待之前,另一个线程恰好触发了该条件。使用条件变量进行同步时,通常以如下...转载 2018-03-28 11:31:16 · 1902 阅读 · 2 评论 -
Linux下进程间通信
Linux下进程间通信概述Linux下的进程通信基本上是从UNIX平台上的进程通信继承来的。而对UNIX发展做出最大贡献的俩大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程的通信方面的侧重点有所不同。前者是对UNIX早期的进程间通信手段进行了系统的改进和扩充,形成了“System V IPC”,其通信主要局限在单个计算机内;后者跳出了该限制,形成了基于套接字(原创 2014-01-06 15:23:34 · 1142 阅读 · 0 评论 -
二叉树遍历之非递归算法
在前一篇文章二叉树遍历递归算法对二叉树遍历的递归算法做了总结,这篇文章就来对二叉树遍历的非递归算法做个汇总。还是与上一篇文章一样的顺序,一一汇总先序、中序、后序以及层序遍历的非递归算法。1、先序遍历(非递归算法)先序遍历非递归访问,使用栈即可实现。先序遍历的非递归访问在所有的遍历中算是最简单的了。主要思想就是先将根结点压入栈,然后根结点出栈并访问根结点,而后依次将根结点的右转载 2013-12-23 22:04:21 · 1689 阅读 · 5 评论 -
linux下输出缓冲区的数据什么时候会显示在终端上?
linux下输出缓冲区的数据什么时候会显示在终端上?1.程序结束2.输出缓冲区存在'\n'字符3.如果执行输入函数时4.如果缓冲区满的时候5.用刷新函数fflush来刷新原创 2013-12-04 17:45:17 · 2228 阅读 · 0 评论 -
指针数组与数组指针
指针数组:它是一个数组,并且数组中的数据元素类型为指针类型 *数组名[大小];数组指针:它是一个指针,并且他指向二维数组的首地址 (*指针变量名)[大小]假如q是一个一维数组,q + i编移字节数为sizeof(数据类型) * i [数据类型] 数组名[大小];假如q是一个一级指针,q + i偏移字节数为sizeof(数据类型) * i [数据类型] *原创 2013-12-04 19:53:42 · 1123 阅读 · 0 评论 -
void *类型的变量
可以将任意类型的指针赋值给void *类型的变量。C语言中NULL 就是(void *)0;#include #include int main(int arg0,char *args[]){ void * p; int arr[2][3]={{0}}; int a[10]; int b =1; char c = 'a'; p = arr; p = a; p = &b原创 2013-12-04 21:02:13 · 2687 阅读 · 0 评论 -
C语言内存管理
首先简单介绍一下概念:程序:在磁盘保存的可以运行的文件进程:正在运行的程序,存在于内存中一个进程空间被划分为以下部分:1)代码区:要执行的程序被放入此区,只读区域2)全局区:保存全局变量,mian函数执行前分配3)BSS段:保存未初始化的全局变量,BSS段在mian函数执行前会被清04)栈区:保存局部变量(包括函数参数),内存分配释放都是自动进行的5)堆区:也叫自由原创 2013-12-29 17:02:17 · 941 阅读 · 0 评论 -
虚拟内存技术
1 虚拟内存技术1.1虚拟地址(逻辑地址) 操作系统中申请的物理空间,都会映射到虚拟地址上。然后可通过虚拟地址访问物理空间。1.2 内存页面 操作系统分配(映射)物理空间时,以页为单位 malloc申请的空间后台会用一定的数据结构来管理 brk/sbrk申请的空间后台会维护一个位置 mmap申请的空间由程序员自己管理1.3 sbrk(i原创 2013-12-30 09:28:38 · 939 阅读 · 0 评论 -
结构体与共用体
结构体结构体是用户定义的新数据类型,在结构体中可以包含若干个不同数据类型和不同意义的数据项(相同也可以),从而使这些数据项组合起来反映某个信息。不考虑内存补齐,结构体占用的空间为所有元素占用的总空间。//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c//同时又声明了结构体变量s1//这个结构体并没有标明其标签struct { in原创 2013-12-16 20:25:14 · 1583 阅读 · 1 评论 -
C语言 线程同步互斥生产者消费者
gcc producer_and_consumer.c -pthread#include #include #include #include #include #include #include #define PRODUCER_NUM 10#define CONSUMER_MUM 8#define BUFFER_SIZE 20#define SLEEP_TIME 1原创 2014-01-04 23:10:02 · 2806 阅读 · 0 评论 -
const 关键字
#include #include int main(int arg0,char *args[]){ const int a; //a = 1; //报错,定义时初始化 const int b = 0; *((int *)&b) = 10; printf("%d\n",b); const int i = 10; //定义时初始化 //i = 10; //报错,i是原创 2013-12-04 20:55:54 · 644 阅读 · 0 评论