自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 socket

//server.cppint server_(){ int listenfd, connfd; if((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) return -1; struct sockaddr_in serverAddr, clinetAddr; bzero(&serverAddr, sizeof(serverAddr)); serverAddr.sin_family..

2020-07-01 00:19:51 147

原创 shared_ptr

#include <assert.h>#include <cstddef>#include <iostream>using namespace std;template <typename T>class SmartPointer{ public: SmartPointer(T * ptr = 0) : ptr_(ptr){ if(ptr_ != 0) cnt_ =

2020-07-01 00:18:31 132

原创 EPOLL

1.epoll机制epoll可以监听多个套接字描述符,可以将多个套接字描述符放入到epoll中,通过红黑树组织这些套接字描述符,通过copy_from_user从用户空间中获得相应的epoll_event信息,,并且注册响应的回调函数,,当监听的套接字描述符状态发生变化时,epoll_wait会返回,通过__put_user从内核空间拷贝信息到用户空间,然后事件分离器分别调用响应的事件处理器处理...

2020-02-29 13:59:33 135

原创 leetcode 491. Increasing Subsequences

1.概述改题是一道backtracking question,和Combination Sum及Combination Sum II相似,又有些许的不同,本文先对比这三道题的相同点和不同点,再归纳同类的backtracking questions2.Combination Sum及Combination Sum IICombination Sum,简单的backtrackingclass ...

2019-11-27 10:34:49 89

原创 leetcode (使用归并排序解决的相关题目)

需要用到std::inplace_merge,由c++提供的归并排序模板函数inplace_merge493. Reverse Pairsclass Solution {public: int mergeSort(vector<int>& nums,int begin_,int end_) { if(end_-begin_<=0)...

2019-11-09 14:49:59 630

原创 leetcode 313. Super Ugly Number(lambda表达式中的值捕获和引用捕获)

leetcode 313. Super Ugly Number这道题最初的代码class Solution {public: int nthSuperUglyNumber(int n, vector<int>& primes) { vector<int> dp(n,0); dp[0]=1; auto cm...

2019-11-04 10:37:51 217

原创 C++基础知识

1. 在构造函数当中一部分是初始化列表一部分是在花括弧里面,你能说一下这些的顺序是什么么?差别是什么 和this指针的顺序构造函数会首先根据初始化列表中的值初始化对应的成员变量,当某个成员变量被初始化列表忽略时,会对其进行默认初始化。执行完这个过程之后才会执行花括弧中的构造函数体。花括弧中的构造函数体执行的都是赋值操作,而不是初始化操作。初始化和赋值的区别事关底层效率问题:前者直接初始化数据成...

2019-10-31 09:49:39 699 1

原创 ctx_server问题

1.介绍一下这个项目(几乎是必问的)2.定时器是怎么实现的?还有什么实现方式?3.实现一个无锁队列(用原子操作)4.eventfd是什么?有什么好处?5.双缓冲区异步日志是什么?为什么要这样做?对这个日志系统有没有进行压力测试?1.什么是优雅关闭连接?(就是read()到0,要透明的传递这个行为而不是直接暴力close())补充:nginx快速停止服务和“优雅”停止服务的对比:“优...

2019-10-30 22:12:18 229

原创 二分搜索的各种方式

经典题分析:leetcode 704. Binary Search1)方法一:lb初始化为最左侧元素再左边的一个不存在的元素,表示一个无穷小的数,ub初始化为最右侧元素再右边的一个不存在的元素,表示一个无穷大的数,lb元素的意义为lb与lb左边的所有元素值均小于target,ub元素的意义为ub与ub右边的所有元素值均大于等于target.循环结束后,最终lb和ub会相差1。如果ub的值等于...

2019-10-27 18:41:11 162

原创 编程的一些小问题及经验

1.string::begin(),string::end()可以作为初始化unordered_set的参数string j = "aA";unordered_set<char> all(J.begin(),J.end());2.二维的vector可以用以下方式初始化vector<vector<int>> dir={{1,3},{0,2,4},{1,5...

2019-10-22 23:57:08 86

原创 muduo库的编译安装过程

1.安装Boost库boost安装2.

2019-10-20 13:42:54 266

原创 C/C++内存及指针问题

一.野指针1.概念:野指针指向了一块随机内存空间,不受程序控制。如指针指向已经被删除的对象或者指向一块没有访问权限的内存空间,之后如果对其再解引用的话,就会出现问题。2.产生的原因:1)指针定义时未被初始化:指针在被定义的时候,如果程序不对其进行初始化的话,它会指向随机区域,因为任何指针变量(除了static修饰的指针变量)在被定义的时候是不会被置空的,它的默认值是随机的。2)指针被释放...

2019-10-17 16:50:26 129

原创 调试ctx_server遇到的一些问题

1.optimized out如上图所示,在调试过程中用p查看变量时出现optimized out标志。解决方法如下:将GCC优化选项调整为O1或是O0GCC在O2、O3优化选项下会将代码优化的比较多,调试器有可能会找不到变量的信息。通常可以将优化级别降低到O0,完全关闭优化,可以保留所有的变量和代码信息。使用O1优化有可能也可以看得到变量的值。当然,这种直接降低优化级别的方法还是比较暴...

2019-10-16 17:10:10 166

原创 遍历矩阵的几种方式

1.回形遍历2.对角线遍历(leetcode 498. Diagonal Traverse)class Solution {public: vector<int> findDiagonalOrder(vector<vector<int>>& matrix) { vector<int> res; i...

2019-10-15 14:19:22 3333

原创 nginx相关基础知识

1.“惊群”问题及其解决方案“惊群”问题:在建立连接的时候,Nginx处于充分发挥多核CPU架构性能的考虑,使用了多个worker子进程监听相同端口的设计,这样多个子进程在accept建立新连接时会有争抢,这会带来“惊群”问题,子进程数量越多越明显,这会造成系统性能的下降。一般情况下,有多少CPU核心就有配置多少个worker子进程。假设现在没有用户连入服务器,某一时刻恰好所有的子进程都休眠...

2019-10-13 21:14:53 128

原创 leetcode题型归纳:递增矩阵查找和有序数据结构第几小数查找

一.递增矩阵查找1) 74. Search a 2D Matrix该题的matrix为蛇型有序,即某一行的第一个元素大于上一行的最后一个元素2)240. Search a 2D Matrix II该题和Search a 2D Matrix的区别在于matrix不是蛇型有序的,而是每一行每一列分别递增。3)378. Kth Smallest Element in a Sorted Matr...

2019-10-07 21:15:37 259

原创 动态链接相关

一.为什么要动态链接二.装载时重定位对于需要进行动态链接的共享对象,共享对象中的绝对地址在链接的时候不进行重定位,而是在装载运行的时候进行重定位。由于需要动态链接的共享对象被装载映射至虚拟空间之后,指令部分是在多个进程之间共享的,由于装载时重定位的方法需要修改指令,所以没有办法做到同一份指令被多个进程共享,因为指令在被重定位之后对于每个进程来说是不同的。三.地址无关代码(PIC)上述装载...

2019-09-27 23:04:28 107

原创 json库实现笔记

经验1.单元测试非常非常重要!!一定要熟悉单元测试的写法,以及尽可能多的寻找更多可能的测试样例2.在适当的地方加assert有助于寻找定位出程序的bug3.注意解析number时的各种边界条件和特殊值的检验,根据json的number语言标准判断每一种特殊情况,支持这一步最重要的一点就是写好单元测试,测试每一种边界条件和特殊值,下面给出部分边界条件和特殊值。json库1.解析null,t...

2019-09-27 17:20:52 131

原创 leetcode思路总结反思(bfs篇)

leetcode思路总结反思(bfs篇)278. First Bad Version最普通的二分查找:class Solution {public: int firstBadVersion(int n) { int lb=-1; int ub=n+1; while((ub-lb)>1) { ...

2019-09-24 09:42:02 113

原创 linux进程管理

一.进程创建1)写时拷贝:传统的fork()系统调用直接把所有的资源复制给新创建的进程,这种实现过于简单并且效率低下。所谓写时拷贝就是指数据只有在真正写入或者修改的时候才会被复制,其他时候都只是共享同一份数据2)fork()fork()运用了写时拷贝技术。fork()的实际开销就是复制父进程的进程描述符和父进程的内存描述符(内存描述符就代表了进程的地址空间),也就是子进程复制了父进程的虚拟...

2019-09-23 23:45:15 71

原创 tcpdump

https://www.cnblogs.com/ct20150811/p/9431976.html

2019-09-22 22:28:59 65

原创 KMP

hdu 1711hdu 1711kmp模板题:#include<stdio.h>#include<string.h>#define N 1000005int s[N];int p[N];int next[N];int m,n;void getnext(){ int j=0,k=-1; next[0]=-1; while(j<...

2019-09-12 14:19:54 108

原创 c++ 11新特性

1.右值引用2.move3.智能指针

2019-09-12 13:12:52 58

原创 lambda 与 priority_queue 以及 function 以及 bind

lambda 与 priority_queue 以及 function 以及 bind在刷leetcode 23. Merge k Sorted Lists的时候,发现下述问题: * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * List...

2019-09-08 20:54:19 168

原创 linux网络编程基础知识

一.基本的几个函数1.socket()2.connectint connect(int sockfd,const struct sockaddr* servaddr,socklen_t addrlen);参数:sock是socket返回的套接字描述符,第二个和第三个参数是服务器的套接字地址结构的指针和该结构的大小。作用:tcp客户端通过connect函数建立与tcp服务器的连接,调用co...

2019-09-08 14:03:21 185

原创 33

#include <stdio.h> #include <string.h> int next[10005]; char str1[1000005],str2[10005]; int cnt; int ans=-1; void get_next(int len2){ int i = 0,j = -1; next[0]...

2019-08-31 19:38:12 88

原创 leetcode思路总结反思(bfs篇)

leetcode思路总结反思(bfs篇)127. Word Ladder对字符串进行修改,符合条件便加入queue中,并且记住删除掉该种情况。class Solution {public: int ladderLength(string beginWord, string endWord, vector<string>& wordList) { ...

2019-08-31 14:59:30 227

原创 C++11新特性之十:enable_shared_from_this

https://blog.csdn.net/caoshangpa/article/details/79392878

2019-08-12 21:27:50 76

原创 make nuft 遇到的问题

make nuft遇到的问题1.编写rocksdb的测试makefile时遇到的一些问题最开始makefile编写如下:我把librocksdb.a放在了 /usr/local/lib中,把其对应的头文件放在了/usr/local/includetest_: test_.cpp $(CXX) $(CXXFLAGS) test_.cpp -o test_ /usr/local/lib/li...

2019-08-12 21:05:04 110

原创 1

class MajorityChecker {public: vector<int> vec; MajorityChecker(vector<int>& arr) { vec=vector<int>(arr.begin(),arr.end()); } int query(int left, in...

2019-08-11 11:51:59 120

原创 makefile

Makefile中的%标记和系统通配符*的区别https://www.cnblogs.com/warren-wong/p/3979270.html

2019-08-11 10:24:13 58

原创 C++中两个类中互相包含对方对象的指针问题

https://www.cnblogs.com/hanxi/archive/2012/07/25/2608068.htmlhttps://zhidao.baidu.com/question/1640222771443578660.html

2019-08-10 21:51:58 1044

原创 i&i-1的作用

先来看一个函数#include <stdio.h>int fun(int i) { int cnt = 0; while(i) { cnt++; i = i&(i-1); } return cnt; } int main(){ printf( "%d\n",...

2019-08-06 19:18:03 2180

原创 C++ 并发编程,std::unique_lock与std::lock_guard 等各种stl里面的东西

std::mutexmutex 类是能用于保护共享数据免受从多个线程同时访问的同步原语。mutex 提供排他性非递归所有权语义。操作:1.lock:如果 mutex 未上锁,则将其上锁。否则如果已经其它线程 lock,则阻塞当前线程2.try_lock:如果 mutex 未上锁,则将其上锁。否则返回 false,并不阻塞当前线程3.unlock:如果 mutex 被当前线程锁住,则将其解...

2019-08-01 10:59:17 304

原创 leetcode思路总结反思(stack)

leetcode思路总结反思(stack)496. Next Greater Element Iclass Solution {public: vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) { vector<int&...

2019-07-31 11:04:46 121

转载 异或的用处(转载)

https://blog.csdn.net/wwt18811707971/article/details/78291490

2019-07-29 14:52:15 166

原创 leetcode思路总结反思(尺取法)

leetcode思路总结反思(尺取法)模板:Find All Anagrams in a Stringclass Solution {public: vector<int> findAnagrams(string s, string p) { vector<int> res; unordered_map&...

2019-07-27 15:10:33 105

原创 grpc+protobuf+gtest安装

https://www.cnblogs.com/gavinhe/p/9885422.htmlhttps://blog.csdn.net/hellowangld/article/details/86524779https://blog.csdn.net/sweetfather/article/details/79625482

2019-07-22 21:29:37 353

原创 nginx知识点

一.nginx启动的流程1.解析命令行,处理各种参数,获得配置文件路径2.3.调用每个核心模块的create_conf方法,每个核心模块都会构造一个存储配置项的指针数组,4.解析配置文件5.调用所有核心模块的init_conf方法6.二.惊群事件及解决方法定义:master进程会fork多个worker子进程,这些worker子进程就会同时监听同一个web端口。这时当有一个用户向服...

2019-07-17 22:04:08 76

原创 linux虚拟文件系统

引入虚拟文件系统的原因Linux系统中存在很多的文件系统,例如常见的ext2,ext3,ext4,sysfs,rootfs,proc…很多很多。。。我们知道每个文件系统是独立的,有自己的组织方法,操作方法。那么对于用户来说,不可能所有的文件系统都了解,用户怎么能透明使用它们呢?那么这个时候就需要VFS作为中间一层!用户直接和VFS打交道。例如read,write,那么映射到VFS中就是sys_r...

2019-07-14 21:27:44 136

空空如也

空空如也

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

TA关注的人

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