自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 一个有意思的bug

最近在做图中路径查找的算法。 前一个版本中,算法需要动态的将一些边标记为不可信任。于是我给边的定义添加了一个字段。如下int edges[MAX_EDGE_NUM][4]; //[边序号] 0:权重 1:起点 2:终点 3:是否可信赖到了下一个版本的算法中,不在需要这个不可信赖字段了,于是我从边的数据结构中删掉了这个字段。int edges[MAX_EDGE_NUM][3]; //[边序号] 0:

2016-03-27 10:38:31 295

原创 优先队列

priority_queueempty(); pop(); pop(); push();默认为大顶堆priority_queue<int> q;仿函数struct cmp{ bool operator() (path a, path b) { return a.f > b.f; }};

2016-03-21 20:43:48 192

原创 链接 / 静态库 / 共享库

静态库 .a将库文件拷贝,嵌入可执行文件中。 缺点: 当静态库更新的时候,如果想使用新版本的库,必须重新链接。共享库 .so .dll动态连接器执行动态链接。

2016-03-19 09:50:21 354

原创 Edit Distance

LeetCode #72. Edit Distance状态:d[i][j]表示A[1~i], B[1~j]之间的编辑距离状态方程: 1. d[0, j] = j; 2. d[i, 0] = i; 3. d[i, j] = d[i-1, j-1]; A[i] == B[j] 4. d[i, j] = min{d[i-1, j-1], d[i, j-1], d[i-1, j]} +1; A[i]

2016-03-18 17:09:26 194

原创 word break

LeetCode 139. Word Breakbool wordBreak(string s, unordered_set<string> &dict) { vector<int> dp(s.size() + 1); //dp[i + 1]为s(0~i)是否有路径 dp[0] = 1; for (int i = 1; i < s.size() + 1; i++)

2016-03-18 16:04:13 241

原创 正则表达式

正则表达式图解 这是一个神奇的网站,可以用图示正则表达式的结构。匹配单个字符 . 匹配单个字符行首 行尾 ^ 匹配行首 $ 匹配行尾0次或多次 * 代表0次或多次0次或1次 ? 0次或1次1次或多次 + 1次或多次范围 [a-c] 范围匹配匹配次数 {2} 2次正则表达式从来都没有学会过,无语死了。

2016-03-18 10:52:09 175

原创 DP(6)

Gray Code 格雷码不唯一。以下代码没有通过LeetCode的测试,但是输出是符合格雷码规则的编码序列。 bool diff(int a, int b, int n) { int s = a^b; for (int i = 0; i < n; i++) { if ((1 << i) == s)

2016-03-18 08:38:44 176

原创 shell练习

LeetCode #195. Tenth Line# Read from the file file.txt and output the tenth line to stdout.cnt=0while read line && [ $cnt -le 10 ]do cnt=`expr $cnt + 1` if [ $cnt -eq 10 ] then echo $line

2016-03-17 11:08:56 184

原创 高并发服务器

多进程并发服务器Apache服务器 当accept时,fork一个子进程。 子进程处理请求,父进程继续listen多线程并发服务器多路I/O转接服务器selectpollepoll

2016-03-16 18:58:59 403

原创 DP(4)

LeetCode #120int minimumTotal(vector<vector<int>>& triangle) { const int INF = 10000; vector<vector<int>> d(triangle); for (int i = 1; i < d.size(); i++) { for (int j = 0; j < d[

2016-03-16 16:25:22 263

原创 shell函数|常用命令|重定向

funWithReturn(){ echo "这个函数会对输入的两个数字进行相加运算..." echo "输入第一个数字: " read aNum echo "输入第二个数字: " read anotherNum echo "两个数字分别为 $aNum 和 $anotherNum !" return $(($aNum+$anotherNum))

2016-03-16 11:03:02 249

原创 shell流程控制

if-elseif conditionthen command1 command2 ... commandN fiif conditionthen command1 command2 ... commandN else commandfiforfor var in item1 item2 ... itemNdo

2016-03-16 10:59:26 163

原创 shell运算符

原生bash不支持数学运算(加,减,乘,除,求余),可以通过awk, expr实现。 expr是一款表达式计算器,使用反引号 ` 表达式与运算符之间要有空格val1=`expr 2 + 2` #有空格echo $val1 #4val2=`expr 2+2` #无空格echo $val2 #2+2算术运算符乘法 `expr $a \* $b`赋值

2016-03-16 10:21:58 298

原创 shell

“#!” 是一个约定的标记,告知系统哪种shell#!/bin/bashecho "Hello World !"注释#-------------# 注释使用 ##-------------变量变量名和等号之间不能有空格使用变量前加$, 可以外加{}区分界限 name="bash"echo $nameecho ${name}只读变量使用 readonlyurl="http://blog.cs

2016-03-16 09:48:54 198

原创 DP(3)

LeetCode #135int candy(vector<int> &ratings) { int len = ratings.size(); vector<int> candy_vec(len); //初始化 for (auto &i : candy_vec) i = 1; //left -> right for (int i =

2016-03-16 08:44:37 189

原创 DP(2)

LCS最长公共子串 子串连续step1. 二维矩阵中相同元素取1    b  a  bc  0  0  0a  0  1  0b  1  0  1a  0  1  0 则对角线最长为公共子串长度step2. 对以上矩阵做累计。若左上角为1,元素累加。    b  a  bc  0  0  0a  0  1  0b  1  0  2a  0  2  0 则矩阵中,最大的元素为最长公共子串

2016-03-15 22:55:46 142

原创 DP(5)

递归法S(n) : 等于第n个元素与S(n-1)中的每个元素组成集合,外加{n}和全集。复杂度T(n) = 2T(n-1)+2;位运算对N个元素,让每个元素对应N的2进制表示中的一位。某位为0,则不在子集;为1,则在子集中。void subset(int arr[], int len){ int mask = 0, i = 0; int end = (1 << len) - 1;

2016-03-15 21:38:44 200

原创 DP(1)

动态规划:从新手到专家凑硬币状态 d(i)表示凑够i元需要的最少硬币数量状态方程 d(i)=min{ d(i-vjv_j)+1 },其中i-vjv_j>=0,vjv_j表示第j个硬币的面值#define INF 10000;int Min[100];int coins[] = { 1,3,5 };void find_coins(int value){ //初始化 f

2016-03-15 16:52:41 238

原创 socket

网络字节序大端法htonl() //host -> netntohl() //net -> hostserver创建socketsockfd = socket(AF_INET, SOCK_STREAM, 0); //返回文件描述符bindbind(sockfd, (struct sockaddr *) &serveraddr, sizeof(serveraddr));listenlis

2016-03-14 09:51:22 196

原创 DP(0)

动态规划状态转移方程 DAG : 有向无环图LCS最长公共子序列(longest common squence):不要求连续 最长公共子串(longest common substring):要求连续

2016-03-13 21:51:00 209

原创 大端/小端/宏

以0x01234567为例 大端法(big endian) : 最高有效字节在最前面 地址 值 0x100 0x01 0x101 0x23 0x102 0x45 0x103 0x67 小端法(big endian) : 最低有效字节在最前面。大多数Intel兼容机器为小段机。 地址 值 0x100 0x67 0x101 0x45 0x

2016-03-11 14:34:24 847

原创 最短路径算法

Floyd算法Dijkstra算法

2016-03-10 09:52:56 245

原创

图的表示邻接表拓扑排序简单拓扑排序 O(V^2)从入度为0的点出发,删除点及其边。同样方法处理图的其余部分。//O(v^2)void topsort(Graph G){ int counter; vertex v, w; for (counter = 0; counter < numvertex; counter++) { v = findnewve

2016-03-10 09:51:22 208

原创 数据模型(待填)

概念数据模型实体-联系(ER模型) 扩展ER模型 面向对象模型逻辑数据模型关系数据模型 层次数据模型关系操作1.选择操作 2.投影操作 3.集合操作 4.连接操作

2016-03-04 21:30:20 206

原创 线程间通信

线程同步共享资源,多个线程都可以堆共享资源操作。线程操作共享资源的先后顺序不确定处理器堆存储器的操作一般不是原子操作。互斥量互斥锁。临界区锁住的范围。 临界区应该尽可能小。死锁同一线程拥有A锁时再请求A锁。线程1拥有A锁,请求B锁;线程2拥有B锁,请求A锁。读写锁读共享,写独占。条件变量条件变量给多个线程提供了一个会和的场所。一个队列。生产者唤醒所有等待的消费者,争抢资源。信号量mu

2016-03-04 19:32:47 203

原创 线程

基本概念轻量级进程,也有PCB。创建线程和进程的底层函数都是clone。从内核看进程和线程是一样的,都有各自的PCB,但是PCB中指向内存资源的三级页表时相同的。进程可以蜕变成线程。线程 = 寄存器 和 栈linux下,线程时小的执行单位;进程时最小的分配资源单位。线程间共享资源文件描述符表每种信号的处理方式当前工作目录用户ID和组ID内存地址空间text 代码段data 数

2016-03-04 14:56:29 174

原创 信号(待填)

unix信号kill -l1~32: 33~64:实时信号。与驱动硬件有关。信号产生种类信号处理可重入函数全局变量/静态变量

2016-03-04 09:25:56 202

原创 进程间通信

进程间通信进程间通信IPC。内核开辟的缓冲区,进程A将数据写入内核缓冲区,进程B从内核缓冲区读取数据。管道pipe内核中的一段缓冲区。队列实现。单工通信。用于解决有血缘关系的进程间通信。int fd[2]; //fd[0]读端,fd[1]写端pipe(fd);创建管道。管道读端,管道写端。占用2个文件描述符。fork创建子进程。确定通信方向。 – 子写父读。关闭父写,关闭子读。 – 父写

2016-03-04 09:23:09 210

原创 进程

page 1page=4096B操作系统按page管理内存。每个page,可以设置读写访问控制属性。虚拟内存空间每个进程拥有4G的虚拟内存空间,由操作系统映射到物理地址。其中0~3G为用户空间,3~4G为内核空间。内核空间内核空间存储PCB等信息,由多个进程共享。进程无法访问内核空间。用户空间进程只能读写自己的用户空间。 内容包括 - 栈空间 - 堆 - 代码段(text) - …P

2016-03-03 23:09:05 180

原创 文件系统

ext2文件系统磁盘最小单位为扇区:512B ext2文件系统管理磁盘最小单位为block:4096B=8扇区 第0个block为启动块(boot block):1024B 其余块以块组(block group)组织block group 块组项 说明 super block GDT(块组描述表) 记录块位图,inode位图等位置,使用情况 块位图(block bi

2016-03-03 09:18:00 279

原创 linux杂项

exit与returnexit用于程序退出。 return用于函数返回。 在main函数中使用return,等效于exit。 在非main函数中使用exit,直接退出程序。

2016-03-02 19:47:37 174

空空如也

空空如也

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

TA关注的人

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