自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

duanbin的博客

Stay hungry, stay foolish.

  • 博客(203)
  • 资源 (7)
  • 收藏
  • 关注

原创 vim下:wq和ZZ命令还是有区别的

前段时间发现有个写日志的程序(实时写日志),在我去修改了日志文件里内容的时候,写日志的程序就不写了,重启写日志程序才能继续写。这时候就意识到这个日志文件可能就不是之前那个日志文件,iNode已经变了,虽然日志文件还是同一个名字。其实不止修改,用vim打开后啥也不干,:wq直接退出也会写不了日志。为了验证用lsof -p pid去看了程序调用的文件,发现文件后面带了个delete状态,果然是已经被删掉了。为什么说:wq和ZZ命令还是有区别的,因为用ZZ命令退出的时候日志文件还是可以继续写而:wq不行。:

2021-04-23 14:43:02 1400

原创 crontab里面没有执行mysql原因

最近加了个脚本,里面包含了mysql的操作。手动执行的时候没有问题,但是在crontab里执行的时候好像没有执行到。后面查看了crontab,恍然大悟。[root@localhost ~]# cat /etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/bin发现path是用了/usr/bin,而我的mysql是在usr/local/bin所以crontab总是执行不到。解决在脚本里的mysql用绝对路径;或者在crontab里

2021-04-22 11:33:25 194

原创 trie树-单词树-实现敏感词屏蔽和词频统计

文章目录一、单词树介绍二、实现思路2.1 词频统计和单词查找2.2 敏感词屏蔽三、代码实现前几天都看一个敏感词屏蔽算法的文章,写的挺好,顺着思路写了下去,实现了一下,算法效率还是杠杠的。。。一、单词树介绍利用的是单词树的算法,先看看什么叫单词树。单词树也叫trie 树也称为字典树。最大的特点就是共享字符串的公共前缀来达到节省空间的目的。例如,字符串 "abc"和"abd"构成的单词树如下:...

2019-12-12 21:07:21 543

原创 epoll+多进程服务器模型 | C++

多个进程同时监听一个端口,如果外部有连接,多个进程通过内核实现的竞争机制,就会有一个被唤醒。直接上代码:int main(){ // 创建服务器 int fd = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_...

2019-10-24 12:52:45 269

原创 STL数据结构总结

文章目录【1】vector【2】list【3】deque【4】stack【5】queue【6】heap【7】priority_queue【8】slist【9】关联式容器【10】rb_tree 红黑树【11】set【12】map【13】multiset【14】mutimap【15】hashtable【16】hashset【17】hash_map【18】hash_multiset【19】hash_mu...

2019-08-20 16:21:27 218

原创 libcurl实例使用:用post方式发送数据

文章目录一、准备二、程序实例-发送一个post请求三、总结今天得空来整理以前的笔记,看到了libcurl。稍微整理记录再加上顺带复习一下。一、准备下载官网链接:https://curl.haxx.se/编译三步走cd curl./buildconf./configuremakesudo make install二、程序实例-发送一个post请求#include &lt...

2019-08-20 14:47:38 3028

原创 分糖果 II | LeetCode

一、题目描述排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。重复上述过程(每次都比上...

2019-08-19 11:42:23 96

原创 一年中的第几天 | LeetCode

文章目录一、题目描述二、题解思路三、程序实例一、题目描述二、题解思路将年月日提取出来;加上天数;加上相应前一个月的天数;判断是否为闰年,是就加1;三、程序实例class Solution {public: int dayOfYear(string date) { int year = atoi(date.substr(0, 4).c_str()); ...

2019-08-16 16:00:14 170

原创 路由表内容与路由分组转发过程

文章目录一、路由表内容二、路由分组转发过程一、路由表内容Network Destination:目标网段Netmask:子网掩码,IP地址与子网掩码按位与,可以得出该IP地址的网络号,IP地址与子网掩码取反后按位与,可以得出该IP地址的主机号。Interface:达到该目标网段的本地路由器的出口IP。Gateway:网关IP,下一跳路由器的入口IP,通常情况下,interface和gat...

2019-08-16 14:58:44 3652

原创 LeetCode | 数组的相对排序

文章目录一、题目描述二、题解思路三、程序实例一、题目描述给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,...

2019-08-08 10:44:45 157

原创 LeetCoe | 等价多米诺骨牌对的数量

一、题目描述给你一个由一些多米诺骨牌组成的列表 dominoes。如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 a == c 且 b == d,或是 a == d 且 b == c。在 0 <= i < j ...

2019-08-07 10:57:32 75

原创 LeetCode | 第 N 个泰波那契数

文章目录一、题目描述二、题解思路三、程序实例一、题目描述泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。二、题解思路利用公式Tn+3 = Tn + Tn+1 + Tn+2。每计算一次n3就向后移动一位:// 第一次0 ...

2019-08-06 18:15:27 83

原创 LeetCoe | 翻转二叉树

文章目录一、题目描述二、题解思路三、程序实例一、题目描述翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师...

2019-08-05 11:27:16 77

原创 阶乘的缓存算法

阶乘一般都是用递归的方式,但是在重复使用阶乘的场景,就需要使用缓存了,这样就能提升很大效率了。如下:#include <iostream>#include <vector>#include <string.h>#include <algorithm>using namespace std;int n = 6;int* cache = ...

2019-08-02 11:06:31 102

原创 https握手过程

浏览器将自己的SSL加密组件(RAS加密算法、对称加密算法、hash摘要算法+密钥长度) 发送给请求网站;网站会从中选出一组加密算法和hash算法,并将自己的身份信息以证书的方式发回浏览器。浏览器验证证书的正确性,或者用户接收了不受信任的证书,浏览器会生成一串随机的密码,并用证书的公钥加密,同时使用hash算法计算握手信息,并用随机密码加密,将这些所有的信息发送给网站;网站用私钥解密信息,...

2019-08-01 16:10:13 330

原创 C++ | fork()进程之后,子进程继承的属性

fork后,子进程继承了父进程很多属性,包括:文件描述符:相当与dup,标准输入标准输出标准错误三个文件账户/组ID:进程组ID会话ID控制终端set-user-ID和set-group-ID标记当前工作目录根目录umask信号掩码文件描述符的close-on-exec标记环境变量共享内存内存映射资源限制但是也有一些不同,包括:fork返回值进程ID父进...

2019-08-01 11:49:28 312

原创 LeetCode | 路径总和 III

一、题目描述给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8...

2019-08-01 11:41:46 58

原创 LeetCode | 找到字符串中所有字母异位词

一、题目描述给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例 1:输入:s: "cbaebabacd" p: "abc"输出:[0, 6]解释:起始索引等于 ...

2019-07-31 16:22:27 87

原创 LeetCode | 找到所有数组中消失的数字

一、题目描述给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]二、题解思...

2019-07-30 17:08:03 103

原创 C++ | 虚析构函数

虚析构函数是用来解决,使用了基类指针调用子类的时候,到最后释放内存的时候,父类调用的是自己的析构函数而没有调用子类的析构函数,所以需要重写子类的析构函数。总之,是为了解决基类的指针指向派生类对象,并用基类的指针删除派生类对象。#include<iostream>using namespace std;class People{public: People() { ...

2019-07-29 11:48:06 79

原创 LeetCode | 汉明距离

一、题目描述两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。二、题解思路取低位依次...

2019-07-29 11:06:06 53

原创 LeetCode | 把二叉搜索树转换为累加树

文章目录一、题目描述二、题目解析三、程序实例一、题目描述给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 二叉搜索树: 5 / \ 2 13输出: 转换为累加树: ...

2019-07-26 19:15:51 45

原创 C++中 # 和 ## 的用法

一句话总结:#是连接字符串的,##是用来粘合的(比如一个名字,或者一个值)。举个栗子:#include <stdio.h>#define CAT(x, y) x ## y#define CAT_STR(x) "hello: " # x#define f(a, b) a##b#define g(a) #a#define h(a) g(a)int main(int ...

2019-07-25 18:53:48 1516

原创 C++ | 宏定义只替换不组合原则

举个栗子:#include <stdio.h>#define MOD(x, y) x * y#define MOD1(x, y) x % y// 宏定义只替换不组合int main(int argc, char const *argv[]) { int x = 2, y = 2; printf("%d\n", MOD(x, y + 2)); // 6 ...

2019-07-25 18:53:06 451 1

原创 LeetCode | 二叉树的直径

文章目录一、题目描述二、题解思路三、程序实例一、题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 ...

2019-07-25 10:12:01 102

原创 LeetCode | 最短无序连续子数组

文章目录一、题目描述二、题解思路三、程序实例一、题目描述给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。说明 :...

2019-07-24 10:47:06 169

原创 LeetCode | 合并二叉树

一、题目描述给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 ...

2019-07-23 16:55:54 47

原创 C++ | for_each-仿函数-lamda表达式

文章目录[1] 普通for_each使用仿函数[1] 普通for_each使用仿函数,仿函数自带参数[2] for_each使用匿名仿函数-lamda表达式[1] 普通for_each使用仿函数#include <iostream>#include <vector>#include <algorithm>using namespace std;st...

2019-07-22 18:19:55 178

原创 LeetCode | 二叉搜索树的最近公共祖先

一、题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root...

2019-07-19 10:33:39 121

原创 LeetCode | 2的幂

一、题目描述给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false二、题解思路暴力匹配,相等就说明有,大于就没有;2的幂在二进制里只有一个位是为1的;三、程序实例class Solution {...

2019-07-18 10:23:47 71

原创 LeetCode | 反转字符串中的单词 III

一、题目描述给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。二、题解思路字符串反转,注意保留空格和\0。三、程序实例cla...

2019-07-16 13:06:17 69

原创 无锁生产者与消费者模型实例-线程

无锁的话就是要两个线程不能同时访问一个变量。那么这样就干脆用两个任务链表,如果在读队列里面的任务处理完成,同时写队列里面又有任务了,就交换两个队列,交换任务队列的动作由主线程来实现。基于这种思想代码如下:#include "public.h"#include <list>using namespace std;list<int>* queueMain;list...

2019-07-15 15:43:43 609

原创 LeetCoe | 按序打印

一、题目描述我们提供了一个类:public class Foo { public void one() { print("one"); } public void two() { print("two"); } public void three() { print("three"); }}三个不同的线程将会共用一个 Foo 实例。线程 A 将会调用 one() 方法线程...

2019-07-15 10:40:30 555

原创 利用条件变量实现进程间同步示例讲解

文章目录[1] get_cond_wait.c 初始化条件变量和锁函数[2] cond_signal.c 发送信号函数[3] cond_wait.c 等待信号函数[4] Makefile[4] 运行结果[1] get_cond_wait.c 初始化条件变量和锁函数#include "public.h"char* get_cond_wait(const char* filename, pth...

2019-07-13 17:20:58 1015

原创 线程退出函数pthread_cancel() 采坑点

pthread_cancel() 时用来线程退出的,但是在使用的时候还是有一些要注意的地方。如下代码:static void* pthread_func1(void* arg){ while(1) { printf("haha\n"); sleep(1); } return NULL;}static void* pthrea...

2019-07-13 14:54:52 6459 2

原创 SGI iota() 函数

是SGI中的函数不是STL的。iota(iterator first, iterator last, value),是将first和last区间直接赋值,value, value+1, value + 2。。。源码如下:void iota(ForwardIterator first,ForwardIterator last,T value) { while (first != las...

2019-07-11 11:13:12 98

原创 LeetCode | 只出现一次的数字

一、题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4二、题解思路利用集合,在集合中的删除,不在的加入,最后剩下一个不同的;利用异或,相同数字异或为...

2019-07-11 10:22:44 48

原创 LeetCode | 3的幂

一、题目描述给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false进阶:你能不使用循环或者递归来完成本题吗?二、题解思路循环求幂然后比较大小,等于的时候是是 3 的幂次方,不等于或者大于则不是。n 大于...

2019-07-10 22:23:18 58

原创 LeetCode | 移动零

一、题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。二、题解思路将数组从后往前移动,碰到0且不是最后一个元素,则需要移动当前下标以及以后的元素。要想移动的最少,需要增加一个count,也就是...

2019-07-10 22:23:11 56

原创 Go | unsafe.Sizeof长度计算

Go中也有计算长度的sizeof()内置函数。package mainimport "fmt"import "unsafe"func main(){ var a string = "haha" fmt.Println("sizeof(a) = ", unsafe.Sizeof(b)) // 16 var b int = 1 fmt.Printl...

2019-07-10 22:22:57 372

opencv小项目练习,一共九个

包含九个项目,1.适用于Android的Cartoonifier和换肤器。2.iPhone或iPad上基于标记的增强现实技术。3.无标记增强现实。4.使用OpenCV从Motion探索结构。5.基于SVM和神经网络的车牌识别。6.非刚性人脸跟踪。7.使用AAM和POSIT进行3D头部姿态估计。8.使用特征脸或Fisherfaces进行人脸识别。9.使用Microsoft Kinect开发Fluid Wall。 Chapter1_AndroidCartoonifier Chapter2_iPhoneAR Chapter3_MarkerlessAR Chapter4_StructureFromMotion Chapter5_NumberPlateRecognition Chapter6_NonRigidFaceTracking Chapter7_HeadPoseEstimation Chapter8_FaceRecognition Chapter9_FluidInteractionUsingKinect

2019-04-10

Python Linux系统管理与自动化运维-高清版带书签

Python是系统管理和运维领域的一把利器,《Python Linux系统管理与自动化运维》是作者多年来在网易的云平台开发、数据库内核开发、系统管理与运维领域使用Python的经验总结。 本书以Linux系统管理为线索,以Python语言为载体,从工具、脚本、方法等多个方面讲解了如何在Linux系统管理和自动化运维中使用Python来解决各种问题,包含大量案例和最佳实践

2018-12-07

Wireshark 数据包分析实战详解_高清带书签.pdf

作为爱学习的同学,是不应该止步于http协议的,学习wireshark则可以满足这方面的需求。wireshark作为抓取各种底层协议的包有着强大的功能,用于网络排错或者一些其他通讯方面的查看,是必须的。

2018-07-19

区块链:技术驱动金融

从数字货币及智能合约技术层面,解读了区块链技术在金融领域的运用。“如果你正在寻找一本在技术层面解释比特币是如何运作的,并且你有一定计算机科学和编程的基本知识,这本书应该很适合你。”

2018-02-28

TCP-IP详解卷1:协议

《TCP/IP详解卷1:协议》是一本完整而详细的TCP/IP协议指南。对tcpdump输出的研究可以帮助理解不同协议如何工作。适合作为计算机专业学生学习网络的教材和教师参考书。也适用于研究网络的技术人员。本书不仅仅讲述了RFCS的标准协议,而且结合大量实例讲述了TCP/IP协议包的定义原因及在各种不同的操作系统中(如Sunos4.1.3、Soloris2.2、AIX3.2.2)的应用与工作方式,这样可以以动态方式讲述TCP/IP的知识,使读者可以轻松掌握TCP/IP的知识:路由协议、寻址协议、组控制协议、简单邮件传输协议等。

2017-11-19

Shell脚本学习指南_中文高清版

Shell脚本学习,学习shell脚本基础,以及工作中常用的工具。

2017-10-29

Unix环境高级编程 高清版

Unix环境高级编程,学习unix/linux系统原理以及网络编程。

2017-10-29

空空如也

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

TA关注的人

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