
每天学习两小时
文章平均质量分 78
丿咫尺天涯
这个作者很懒,什么都没留下…
展开
-
wait函数详解
#include /* 提供类型pid_t的定义 */#include pid_t wait(int *status)进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一转载 2018-02-26 23:55:13 · 30413 阅读 · 2 评论 -
Linux 常用文本命令
文件搜索 find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录 find / -user user1 搜索属于用户 'user1' 的文件和目录 find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 find /usr/bin -type f -atime +100 搜索在过去100天内未...转载 2018-03-06 00:17:04 · 450 阅读 · 0 评论 -
sort参数含义
sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始!1 sort的工作原理sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。12345678910[lisp@lisp tomatoes]# cat seq.txtbananaapplepearorange[lisp@lisp tomat...转载 2018-03-23 00:37:10 · 3767 阅读 · 1 评论 -
数组中出现一半的数字
寻找数组中出现一半以上的数字int find(int a[],int N){ int num=0; int count=0; for(int i=0;i<N;i++) { if(count==0) { num=a[i]; count++...转载 2018-03-29 22:37:44 · 277 阅读 · 0 评论 -
计算字符串的相似度-两种解法
以下叙述摘自编程之美一书:许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程序。我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:1.修改一个字符(如把“a”替换为“b”); 2.增加一个字符(如把“abdd”变为“aebdd”);3.删除一个字符(如把“travelling”变为“traveling”);比如,对于“abcdefg”和“abcdef”...转载 2018-03-21 23:02:36 · 2523 阅读 · 0 评论 -
select与epoll阅读(待补充)
1.selectl流程图原创 2018-03-27 00:16:54 · 199 阅读 · 0 评论 -
最长gong'g子序列
1.基本概念 首先需要科普一下,最长公共子序列(longest common sequence)和最长公共子串(longest common substring)不是一回事儿。什么是子序列呢?即一个给定的序列的子序列,就是将给定序列中零个或多个元素去掉之后得到的结果。什么是子串呢?给定串中任意个连续的字符组成的子序列称为该串的子串。给一个图再解释一下:转载 2018-04-02 22:50:49 · 313 阅读 · 0 评论 -
最长递增子序列
最长递增子序列,Longest Increasing Subsequence 下面我们简记为 LIS。排序+LCS算法 以及 DP算法就忽略了,这两个太容易理解了。假设存在一个序列d[1..9] = 2 1 5 3 6 4 8 9 7,可以看出来它的LIS长度为5。下面一步一步试着找出它。我们定义一个序列B[1..9],然后令 i = 1 to 9 逐个考察这个序列。此外,我们用一个变量Len来记...转载 2018-04-02 23:03:51 · 328 阅读 · 0 评论 -
Linux编程中的文件锁之flock
1. 场景概述 在多线程开发中,互斥锁可以用于对临界资源的保护,防止数据的不一致,这是最为普遍的使用方法。那在多进程中如何处理文件之间的同步呢?我们看看下面的图: 图中所示的是两个进程在无同步的情况下同时更新同一个文件的过程,其主要的操作是:1. 从文件中读取序号。2. 使用这个序号完成应用程序定义的任务。3. 递增这个...转载 2018-04-11 00:22:54 · 706 阅读 · 0 评论 -
字符串的全排列和组合算法
全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。首先来看看题目是如何要求的(百度迅雷校招笔试题)。一、字符串的排列用C++写一个函数, 如 Foo(const char *str), ...转载 2018-03-12 23:34:13 · 265 阅读 · 0 评论 -
redis排行榜相关
排行榜是业务开发中常见的一个场景,如何设计一个好的数据结构能够满足高效实时的查询,下面我们结合一个实际例子来讨论一下。场景选手报名参加活动,观众可以对选手进行投票,每个观众对同一名选手只能投一票,活动期间最多投四票。后台需要提供如下接口:接口1:返回TOP 10的选手信息及投票数接口2:返回活动总参与选手数及总投票数接口3:对于每个选手,返回自己的投票数,排名,距离上一名差的票数基于数据库的方案首...转载 2018-02-25 21:22:12 · 1637 阅读 · 0 评论 -
可递归锁与非递归锁
最常见的进程/线程的同步方法有互斥锁(或称互斥量Mutex),读写锁(rdlock),条件变量(cond),信号量(Semophore)等。在Windows系统中,临界区(Critical Section)和事件对象(Event)也是常用的同步方法。 简单的说,互斥锁保护了一个临界区,在这个临界区中,一次最多只能进入一个线程。如果有多个进程在同一个临界区内活动,就有可能产生竞态条件(race co...转载 2018-03-04 10:34:52 · 365 阅读 · 0 评论 -
Linux进程间通信——使用共享内存
下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc转载 2018-02-27 23:37:15 · 231 阅读 · 0 评论 -
Zookeeper的功能以及工作原理
1.ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户2.ZooKeeper提供了什么?1)文件系统2)通知机制3.Zookeeper文件系统每个子目录项如 NameSer...转载 2018-02-28 22:53:15 · 451 阅读 · 0 评论 -
mmap映射区和shm共享内存的区别总结
linux中的两种共享内存。一种是我们的IPC通信System V版本的共享内存,另外的一种就是我们今天提到的存储映射I/O(mmap函数)在说mmap之前我们先说一下普通的读写文件的原理,进程调用read或是write后会陷入内核,因为这两个函数都是系统调用,进入系统调用后,内核开始读写文件,假设内核在读取文件,内核首先把文件读入自己的内核空间,读完之后进程在内核回归用户态,内核把读入内核内存的...转载 2018-02-28 23:04:36 · 440 阅读 · 0 评论 -
MySQLDBA修炼之道读书笔记
以下的命令将查看慢查询是否启用了,以及慢查询的日志路径。mysql> show variables like'%query_log%'; -------------show variables like'%query_log%' -------------+---------------------+-----------------------------------------+ | V...原创 2018-03-01 23:38:29 · 1242 阅读 · 0 评论 -
do {...} while (0) 在宏定义中的作用
如果你是一名C程序员,你肯定很熟悉宏,它们非常强大,如果正确使用可以让你的工作事半功倍。然而,如果你在定义宏时很随意没有认真检查,那么它们可能使你发狂,浪费N多时间。在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义。下面就是一个例子:12#define __set_task_state(tsk, state_v转载 2018-03-02 00:16:25 · 202 阅读 · 0 评论 -
libevent安装使用
Libevent介绍在include\event2\event.h中有关于Libevent的介绍,这里简单翻译介绍一下: Libevent是以事件为驱动的开发可扩展的网络服务端的库。开放的API设置事件的回调函数,当事件来临时调用这个回调函数。它还支持信号和定时器。开发者只需要简单的add/remove来将事件添加到event loop中,通过event_dispatch驱动event。Libev...转载 2018-03-03 10:48:05 · 1187 阅读 · 0 评论 -
Linux中configure/makefile的用法实例(附代码)
转自:http://blog.chinaunix.net/uid-24704319-id-2594460.html本文教你如何使用autoconf、automake等来制作一个以源代码形式(.tar.gz)发布的软件、并可在执行configure时使用自定义参数。一、概述和基础知识 在Linux下得到一个以源代码形式发布的包(一般为.tar.gz或.tar.bz2格式),我们可以用 ./conf...转载 2018-03-03 13:00:02 · 1096 阅读 · 0 评论 -
C语言中的可变参数函数 三个点“…”
第一篇 C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式: printf("%d",i); printf("%s",s); printf("the numb...转载 2018-03-03 13:44:10 · 1223 阅读 · 0 评论 -
C++11特性
C++11已经出来很久了,网上也早有很多优秀的C++11新特性的总结文章,在编写本博客之前,博主在工作和学习中学到的关于C++11方面的知识,也得益于很多其他网友的总结。本博客文章是在学习的基础上,加上博主在日常工作中的使用C++11的一些总结、经验和感悟,整理出来,分享给大家,希望对各位读者有帮助,文章中的总结可能存在很多不完整或有错误的地方,也希望读者指出。大家可以根据如下目录跳到自己需要的章...转载 2018-05-29 00:23:26 · 445 阅读 · 0 评论