自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)

原创 实现LFU,3个unordered_map

刷题遇到这个,参考了别人的思路,将不同使用频率的节点放在不同的链表,用一个int记录最低出现频率,使用一个ordered_map记录节点在链表中的位置,在需要淘汰节点时可以以O1的复杂度删除节点,实现如下:将key,value,freq封装成结构体,节点保存在堆上,ordered_map只保存指针,淘汰节点后释放内存,struct Node{ int key; int...

2019-12-15 22:49:50 64

原创 使用go实现LRU

是一道练习数据结构的好题,主要是为了练习Go语法,折腾了半个多小时,踩了一些坑,else不能单独放在一行,map需要初始化后才可以使用,实现如下构建了双向链表,建立了头结点head与尾节点tail,实现了erase接口与push_front接口type ListNode struct{ key int val int pre*ListNode nex...

2019-12-11 21:18:57 60

转载 go 中的slice与数组,slice的append与扩容

转载:https://www.cnblogs.com/JenningsMao/p/9327758.html一直没发现数组与slice的区别,发现数组的命名是[...] int或[3]int,即前面的[]要有东西,而slice直接是[]int,或者make([]int)append一定要有返回值,当len = = cap时 append会导致扩容,底层数组不再共享,在1024字节以内...

2019-12-11 21:00:26 483

原创 zookeeper实现分布式协调服务--主备切换的核心原理

zookeeper可以用于解决hdfs中NamNode、Yarn中ResourceManager中的单点问题。以ResourceManager为例,集群中可以存在多个ResourceManager,只有一个处于active状态,其余都是standby状态。1.刚启动时,所有ResourceManager节点都会去写一个lock临时节点,但是只有一个能写成功。成功写入的节点进入active状...

2019-10-21 19:37:57 214 1

原创 C++ 使用for循环加auto的一个注意事项

参加了LeetCode的周赛,在使用for循环+auto遍历字符串时出现了一些问题,在VS下单步调试,发现auto方法会遍历字符串尾部 '\0',int main(){ int count = 0; for (auto c : "123456") cout<<c<<" "<<++count<<endl; getchar(); r...

2019-09-15 14:30:12 683

原创 关于java String的intern方法(JDK1.6、1.7)

JDK1.6及以前:String s = new String("1");s.intern();在常量池中寻找常量“1”,1.如果存在,则返回这个池中的字符串。2.如果不存在,将s指向的堆上的对象“1”复制后存在常量池中,并返回池中“1”的一个引用。即常量池中只可以存储 字符串。JDK1.7及之后:String s = new String("1");s....

2019-09-14 14:42:01 89

原创 pandas中groupby的使用

创建数据,df = pd.DataFrame({'Name':['Tom','Bob', 'Candy', 'Tom', 'Tom', 'Bob', 'Amy', 'Jack'], 'Sex':['Male','Famale', 'Famale', 'Male', 'Male', 'Famale', 'Famale', 'Male'], ...

2019-08-07 19:26:31 867

原创 简易路由表匹配算法实现(前缀树)-不考虑掩码长度

TrieNode为前缀树节点,Trie是前缀树。Trie中分为几个接口:getFourNum(),得到IP地址中的4个数字;addTree(),添加前缀树节点;searchTree(),在前缀树中进行查找。struct TrieNode{ TrieNode() :nexts{nullptr} {} int num; TrieNo...

2019-07-16 21:36:34 662

原创 sort sort -r sort -n sort -nr的区别

sort sort -r将数字当做字符进行排序sort -n sort -nr 按照整个数字来排序举例说明:linux系统中新建一个num.txt,neir内容如下使用sort排序使用sort -n排序...

2019-04-26 10:57:22 12961

原创 初始化列表中初始化数组

学习了一下前缀树。需要用到一个结构体保存两个指针,如下struct Node{ Node() { nexts[0] = nullptr; nexts[1] = nullptr; } Node *nexts[2];};能不能将初始化操作放在初始化列表中呢,如下以上两种写法都有问题,突然想到,数组应该用大括号初始化啊就酱。...

2019-03-23 14:28:54 2284

原创 string解决大数相加(包含负数),清晰整洁,满足所有情况

 主接口addstring,在内部根据不同的情况调用doublePositive()和minusstring(),需要注意的地方都写在注释里了string doublePositive(string s1, string s2){ int l1 = s1.size()-1, l2 = s2.size()-1; string res; int jinwei = 0; while ...

2019-01-25 16:56:11 250

原创 so_reuseaddr so_reuseport区别--简单粗暴

so_reuseport :允许多个套接字 bind()/listen() 同一个TCP/UDP端口内核层面实现负载均衡,提升服务器性能so_reuseaddr:tcp断开连接后进入time_wait状态或创建监听套接字的进程被kill掉,导致端口没有释放,无法进行新的连接。加上此选项就可以连接。在time_wait状态下进行连接会不会造成不可靠?在网络编程初期,网络状态不...

2019-01-23 21:31:35 260

转载 Linux网络编程“惊群”问题总结

原文链接:https://www.cnblogs.com/Anker/p/7071849.html1、前言  我从事Linux系统下网络开发将近4年了,经常还是遇到一些问题,只是知其然而不知其所以然,有时候和其他人交流,搞得非常尴尬。如今计算机都是多核了,网络编程框架也逐步丰富多了,我所知道的有多进程、多线程、异步事件驱动常用的三种模型。最经典的模型就是Nginx中所用的Master-Wo...

2019-01-23 20:17:03 136

原创 priority_queue实现k路有序数组合并

接着上一篇https://blog.csdn.net/znzxc/article/details/86590154上一篇是自实现堆排序,这一次用priority_queue实现struct MinHeapNode{ int val; int i; int j; MinHeapNode(int a, int b, int c) :val(a), i(b), j(c) {}}...

2019-01-22 11:58:22 438

原创 自实现不定长k路有序数组合并--头条面试

看过一些网上的方法,大都是照搬过来的,本人的思路和网上的一致---使用最小堆,但没有封装的Class,简单易懂(priority_queue可看另一篇https://blog.csdn.net/znzxc/article/details/86592356)分为4部分:最小堆节点的定义、建立堆、向下调整、k路合并需要堆排序基础。总体思路如下:先建立堆,进行堆排序,获取首元素添加进ou...

2019-01-22 10:29:16 632

转载 巧夺天工的kfifo(修订版)

原文:https://blog.csdn.net/linyt/article/details/53355355Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的眼光。在Linux kernel里面,简洁并不表示代码使用神出鬼没的超然技巧,相反,它使用的不过是大家非常熟悉的基础数据结构,但是kernel开发者能从基础的数据结构中,提炼出优美的特性。 kfi...

2019-01-07 10:43:07 102

原创 定时器:4叉堆与2叉堆的效率比较

在学习muduo,看到定时器的实现方式,提到有一下几种实现方式。1.优先级队列,即二叉堆。2.4叉堆,libev中使用的模型即是如此,比二叉堆更高效,因为具有更好的内存局部性。3.二叉搜索树。4.使用set,以pair<timerstamp,Timer*>为key,为了区分两个timer时间相同的情况。 本文探讨2叉堆与4叉堆的效率问题。自实现了一个4-heap...

2019-01-06 12:29:00 1243 2

原创 图解one loop per thread:使用muduo网络库实现web服务器

最近在看陈硕的muduo网络库,书中一直提到一个概念:one loop per thread,一直不是很理解,看完了源码之后自己梳理了一下,有所感悟,图解一下one loop per thread思想.主线程属于main loop,创建listenfd,创建listenfd的可读回调函数,该回调函数执行accept返回交流套接字,同时new一个http对象(与交流套接字绑定),添加进thr...

2018-12-28 10:48:36 2149

原创 为什么要限制服务器最大并发连接数

若文件描述符耗尽,则无法为新的socket连接创建描述符,也无法close它,则epoll_wait会一直返回,造成busy loop,CPU占用率接近100%,影响同一loop上的连接。一个比较简单的解决办法:设置最大连接数,当超过最大连接数时,关闭新的连接。...

2018-12-27 09:41:06 3369

原创 用原始指针初始化智能指针的一些问题

class A{};int main(){ A* a = new A; cout << a << endl; shared_ptr<A> p(a); //delete a; cout << p.use_count() << endl; cout << p << endl; cout &...

2018-12-24 18:00:58 1110

转载 linux内存管理——mmap函数详解

原文链接:https://blog.csdn.net/notbaron/article/details/80019134mmap函数是unix/linux下的系统调用。当存在客户-服务程序中复制文件时候,其数据流如下,要经历四次数据复制,开销很大。     如果采用共享内存的方式,那么将大大优化IO操作,数据流变成了如下,数据只复制两次:映射文件或设备到内存中,取消映射就是munm...

2018-12-24 09:23:04 74

转载 shared_ptr与weak_ptr(解决循环引用)

原创:https://blog.csdn.net/ingvar08/article/details/79200424shared_ptr是带引用计数的智能指针,可以说大部分的情形选择用shared_ptr不会出问题。那么weak_ptr是什么,应该怎么用呢? weak_ptr也是智能指针,但是比较弱,感觉没什么用。其实它的出现是伴随shared_ptr而来,尤其是解决了一个引用计数导致的问题...

2018-12-13 17:47:30 1002

转载 Linux中errno使用

原文:https://blog.csdn.net/21aspnet/article/details/6740110 当linux中的C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少原本看来莫名其妙的问题。但是errno是一个数字,代表的具体含义还要到errno...

2018-12-06 20:20:58 1579

原创 验证:fork之后父子进程之间堆不共享

 输出如下:由此可见,指针位置不发生变化,但是已不在一个存储空间了 ,子进程改变指针所指变量不会对父进程的值造成影响。

2018-12-04 21:38:52 569 1

转载 彻底弄懂HTTP缓存机制及原理

转载:https://www.cnblogs.com/chenqf/p/6386163.html前言Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能。但是对于很多前端同学来说,仅仅只是知道浏览器会对请求的静态文件进行缓存,但是为什么被缓存,缓存是怎样生效的,却并不...

2018-12-04 17:46:57 83

原创 HTTP常用状态码分析

2XX 表示正常处理200 OK 表示正常处理GEt方法,会返回 请求资源的实体。HEAD方法,会返回 请求资源的实体首部,不返回主体。204 NO content  请求处理成功,但是没有资源可以返回。对于一些提交到服务器处理的数据,只需要返回是否成功的情况下,可以考虑使用状态码204来作为返回信息,从而省掉多余的数据传输。206 partial content 进行了范...

2018-12-04 09:25:46 76

转载 Linux下getopt()函数的简单使用

最近在弄Linux C编程,本科的时候没好好学啊,希望学弟学妹们引以为鉴。好了,虽然啰嗦了点,但确实是忠告。步入正题:我们的主角----getopt()函数。英雄不问出处,getopt()函数的出处就是unistd.h头文件(哈哈),写代码的时候千万不要忘记把他老人家include上。 再来看一下这家伙的原型(不是六耳猕猴):int getopt(int argc,char...

2018-11-22 10:14:11 110

原创 SIGTERM与SIGKILL

#include <iostream>#include <signal.h>using namespace std;void func(int a){ cout<<"ctrl c"<<endl;}void func2(int a){ cout<<"kill"<<endl;

2018-11-21 20:48:27 1692

原创 linux虚拟机 复制文件到主机-------发邮件^_^

在linux虚拟机中写好了代码,如何复制到主机中呢。可以使用发邮件的方法:mail  -s    "server.cpp"    123456789@qq.com    -a   /home/name/server.cpp                            主题                       目标邮箱                          ...

2018-11-18 19:58:50 221

原创 qsort与sort的区别之仿函数

qsort只接受函数指针,不接受仿函数,sort接受函数指针,也接受仿函数。

2018-11-14 16:47:47 457

原创 linux如何查看某个端口是否被占用

面试中被问到这个问题了。。总结下用到命令  netstat -anp   查看网络状态 listen表示监听,established表示建立连接。local address表示本地ip地址和端口号,foreign address表示外部连接的ip地址和端口号。用grep过滤加-t只显示tcp连接,加-u只显示udp连接。 ...

2018-11-14 11:28:50 1167

转载 正则表达式匹配IP的表达式

原文:https://www.jb51.net/article/101221.htm这里给大家详细讲解一下一个匹配IP地址的正则表达式,  有关正则方面的知识,会在详细的讲解中提到。  在讲解之前,我先给大家介绍一下,ip地址的生成规则。  IP地址,是由32位数字二进制转为四个十进制的字符串组成。  怎么转化?下面讲解:      二进制:1111111111111111...

2018-11-14 09:51:47 18938 9

原创 linux下python的使用

可以分为两类:1.在命令行中运行,输入python,使用ctrl+z退出 python环境 2.建立脚本第一行指定python版本相对路径运行需要权限,绝对路径不需要。...

2018-11-13 10:18:03 2832

原创 颜色直方图+余弦相似度 c++opencv实现

原理部分来自阮一峰博客http://www.ruanyifeng.com/blog/2013/03/similar_image_search_part_ii.html颜色分布法:每张图片都可以生成颜色分布的直方图(color histogram)。如果两张图片的直方图很接近,就可以认为它们很相似。任何一种颜色都是由红绿蓝三原色(RGB)构成的,所以上图共有4张直方图(三原色直方...

2018-11-12 11:50:37 1907 1

转载 OpenCV进行图像相似度对比的几种办法

转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/43853435, 来自:shiter编写程序的艺术 对计算图像相似度的方法,本文做了如下总结,主要有三种办法:1.PSNR峰值信噪比PSNR(Peak Signal to Noise Ratio),一种全参考的图像质量评价指标。简介:https://en.wik...

2018-11-12 09:34:54 320

转载 基础——RotatedRect中返回的角度angle

以下是RotatedRect里面的角度angle的说明图:  这里要注意的4点是: 1、角度angle的取值是由RotatedRect的width和X轴的夹角组成的。 2、RotatedRect的width和height的选取跟矩形的尺寸无关,并非长的就是height,短的就是width。 3、opencv默认把 水平轴(x轴)逆时针旋转,碰到的第一个边 这个边的边长作为width。 4、angl...

2018-11-10 09:00:27 854 1

原创 关于easypr中闭运算内核大小的选取

easypr中,选用HSV颜色进行车牌定位,在H、S、V范围内的像素点置为255,其余0,随后进行闭运算,扩大车牌连通域。在闭运算中,内核大小选取十分重要,源码中选取10,2作为内核大小,这是为什么呢?车牌长宽比大致5:1,但是内核大小为什么不用5,1呢,太小,形不成大的连通域,看下图:void colorMatch(const Color r) { // if use adap...

2018-11-08 16:47:44 192 1

原创 rgb转为hsv,显示发生变化

 转化为HSv模型后,发现图像发生了变化,因为显示的时候还是会把HSv认为是RGB图像。可以在转化为RGB图像。 

2018-11-07 08:43:33 1919

原创 shell script变量设置中单引号、双引号的区别

 由上可见,双引号可以保留变量原有的内容,而单引号不行。

2018-10-10 22:23:11 472

原创 类成员函数重载与函数指针

在有成员函数重载的情况下该如何使用函数指针呢class l{public: void func(); void func(int, int);};void l::func(){ cout << "func()" << endl;}void l::func(int, int){ cout << "func(int,int)" <...

2018-10-07 14:52:01 386

空空如也

空空如也

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