自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

转载 TCP连接的内存使用

网络编程,TCP链接缓冲区(窗口大小,自动调整)

2022-09-09 16:16:24 698

转载 火焰图使用

火焰图使用 - 知乎前言火焰图是 svg 格式的矢量图,基于 perf 软件性能分析工具。通过对软件在系统上的工作行为记录进行采样。并将数据进行图形化,从而获得比较直观的可视化数据矢量图。文章来源:软件性能检测--火焰图 1. 概述1.1…https://zhuanlan.zhihu.com/p/435837585...

2021-12-17 09:21:12 240

原创 Trie树(前缀树、字典树)

目录什么是前缀树前缀树的优缺点:前缀树的应用什么是前缀树Trie树,又叫字典树、前缀树(Prefix Tree)、单词查找树 或 键树,是一种多叉树结构。如下图:好比假设有b,abc,abd,bcd,abcd,efg,hii 这6个单词,那我们创建trie树就得到上图可以归纳出 Trie 树的基本性质:1. 根节点不包含字符,除根节点外的每一个子节点都包含一个字符。2. 从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。3. 每个节点的所有子节

2021-12-16 17:25:06 2965

原创 算法-前缀和数组、差分数组

nums[n] = {a1, a2, ...., an-1};preSum[n + 1] = {0, a1, a1 + a2, ...., a1+..+an-1};[i, j]之间元素的和(包括i, j):preSum[j+ 1] - preSum[i]

2021-11-04 16:19:03 1228

原创 数据结构-单调队列

239. 滑动窗口最大值//滑动窗口+单调队列(单调递减队列)//思路://单调递增队列中存储数组下标,下标是递增的,下标对应的值是递减的//窗口滑动时,当前元素若大于(或大于等于)队尾下标对应的值则循环出队尾,若当前队首下标在窗口外(队首下标小于等于left=i-k)则循环队首出队class Solution {public: // 滑动窗口 + 单调队列(单调递减队列) // 思路: // 单调递增队列中存储数组下标, 下...

2021-11-04 11:22:05 151

转载 拓扑排序-BFS-DFS

参考:算法学习笔记(53): 拓扑排序 - 知乎1,拓扑排序可以用来判环2,BFS解法中:有时会要求输出字典序最小的方案,这时把queue改成priority_queue即可,此时负责度会多一个log210. 课程表 II官网解答:力扣https://leetcode-cn.com/problems/course-schedule-ii/solution/ke-cheng-biao-ii-by-leetcode-solution/class Solutio...

2021-10-28 11:57:22 240

原创 二叉树递归

111. 二叉树的最小深度(e)思路:(1)对一个cur其dep= 1 + min(leftdep,rightdep);(2)对一个nullptr,ifhasneighber,returnINT_MAX;elsereturn根据题意0or1;(3)递归类型:从下到上 // (1) 对一个cur 其dep = min(leftdep, rightdep); // (2) 对一个nullptr, if has neighber, r...

2021-08-28 16:57:13 942

转载 如何写递归

目录在实现递归函数之前,有两件重要的事情需要弄清楚:从下到上从上到下(尾递归)优化递归函数再谈由上到下、由下到上总结其余实战及练习题见开头链接出处出自:https://leetcode-cn.com/circle/article/koSrVI/编程语言中,函数 Func(Type a,……)直接或间接调用函数本身,则该函数称为「递归函数」。在实现递归函数之前,有两件重要的事情需要弄清楚:递推关系:一个问题的结果与其子问题的结果之间的关系。 基本情况(终止

2021-08-27 00:20:38 407

原创 二叉查找树

96. 不同的二叉搜索树思路:dp(1) 数组元素共i个元素[1,2,3,....,i]时, 以k为根节点的树,其左子树由[1....k-1]共k-1个元素构成,右子树由[k+1.....n]共i-k个元素构成,如下: k[1....k-1] [k+1......i]以k为根的bst树数量为:分别以[1.....k-1]为根的bst的数量 乘以 分别以[k+1.....i]为根的bst的数量。(2) 定义:f(i)是数组共i个...

2021-08-24 16:37:05 105

原创 二叉树构建

105. 从前序与中序遍历序列构造二叉树//Input:preorder=[3,9,20,15,7],inorder=[9,3,15,20,7]//Output:[3,9,20,null,null,15,7]思路: (1)前序的第一个是根(2)在中序中找到根。根据中序中的根和strat的distance,可以把前序和中序分为根、左半部[)和右半部[)三段(3)分治递归struct TreeNode { int val; TreeN...

2021-08-23 17:21:52 151

转载 高性能网络编程中的线程模型

转载:http://www.52im.net/thread-1939-1-1.html首先看看服务端处理网络请求的典型过程:由上图可以看到,主要处理步骤包括: 获取请求数据,客户端与服务器建立连接发出请求,服务器接受请求(1-3)。 构建响应,当服务器接收完请求,并在用户空间处理客户端的请求,直到构建响应完成(4)。 返回数据,服务器将已构建好的响应再通过内核空间的网络 I/O 发还给客户端(5-7)。 设计服务端并发模型时,主要有如下两个关键点: 服..

2021-08-18 15:14:02 224

原创 栈的基本用途

1,平衡符号2,后缀表达式计算值3,中缀表达式转后缀表达式(1)遇到数字输出(2)遇到符号, 若是左括号:直接入栈(此时尚未入栈的左括号优先级最高) 若是+-*/:若栈为空则直接入栈;若栈顶符号优先级大于等于当前符号则出栈并放到string,直到优先级小于当前符号或栈顶遇到左括号(此时栈中左括号优先级最低)为止 若是右括号:则符号依次出栈并放到string直到第一个左括号出栈为止为止注:纯标准中缀公式转后缀:stringtokens=...

2021-05-24 21:40:00 276

原创 回文判断_最长回文子串_分割回文串

目录一,判断是否回文二,最长回文子串一,判断是否回文leetcode 1251,双指针:左右指针分别向中间移动并判断字符相等。O(n), O(1)2,reverse:反转字符串并与原串判断串相等。O(n), O(n)需额外空间3,栈:字符串左半边顺序入栈。之后分别出栈并与右半边判断字符相等。O(n), O(n)需额外空间二,最长回文子串leetcode51,中心扩展法(暴力枚举)遍历,以每个元素为中间元素,同时向左右出发找回文串,对每轮找到的更长的回文串记录左右边

2021-05-23 16:35:41 151

原创 条件变量线程抢锁与虚假唤醒

参考:pthread_cond_signal与pthread_cond_wait详解: http://blog.chinaunix.net/uid-11572501-id-3456343.html

2021-03-05 17:42:22 681

原创 nginx变量ngx.var

ngx.var 是获取 Nginx 的变量,类型是字符串或nil,需要经历字符串 hash、hash 表查找等过程。ngx.ctx 仅仅是一个 Lua table 而已,它的引用存放在 ngx_lua 的模块上下文(ctx_ref)。使用 ngx.ctx 比 ngx.var 往往是更好的选择。参考:nginx变量使用方法详解(7):http://www.ttlsa.com/nginx/nginx-var-7/nginx的ngx.var ngx.ctx ngx.req: https..

2021-03-03 11:28:05 2732

原创 nginx upstream 长链接池

cache为已建立的未使用链接,选socket时从cache对列中找与负载均衡选中的upstream地址匹配的socket,若未选到,则新建一个socketfree为正在使用的socket的和未建链的结构。upstream_free_keepalive_peer时若free队列满,则把cache对列尾(被使用较少)remove 一个node,并socket close掉;若free队列未满,则从free头拿出一个node;把当前已用完的socket放到node并insert到cache,供使用。t

2021-01-16 15:33:23 388

原创 nginx http模块初始化与处理流程

1,ngx_http_init_connection ngx_http_wait_request_handler ngx_http_wait_request_handler ngx_http_process_request_line和ngx_http_process_request_headers --ngx_http_process_request --ngx_http_ha...

2021-01-09 09:53:51 547 3

原创 好用的链接

目录word中插入代码段前进行格式化word中插入代码段前进行格式化http://www.planetb.ca/syntax-highlight-word

2021-01-06 23:05:59 109

原创 nginx mater和worker处理listen和accept 套接字

1,master进程创建socket,bind,listen。main(和ngx_master_process_cycle、ngx_single_process_cycle中的reload) --ngx_init_cycle --ngx_open_listening_sockets --ngx_socket --bind --listen2,每个worker进程都把listenfd加入epoll;并设置

2021-01-06 20:37:56 365

原创 nginx -s reload原理

我们执行这条命令的原因是希望 nginx 不停止服务始终在处理新的请求的同时把 nginx 的配置文件平滑的把旧的 nginx.conf 配置更新为新的 nginx.conf 配置。这样一个功能对于 nginx 非常有必要,但是有时候我们会发现在执行nginx -s reload命令后,worker 子进程的数量会变多了,这是因为老的配置运行的 worker 进程长时间没有退出,当使用 stream 做四层反向代理的时候,可能这种场景会更多。nginx reload流程(1)向 master..

2021-01-06 12:50:08 3473 2

原创 linux系统参数之ip_local_port_range、tcp_max_tw_buckets、tcp_tw_reuse

一,linux TIME_WAIT 相关参数1,/proc/sys/net/ipv4/ip_local_port_range:端口范围,不要超过1024到65535,1024以下系统使用,65535以上会提示失败2,/proc/sys/net/ipv4/tcp_max_tw_buckets:kernel中最多存在的TIME_WAIT数量3,net.ipv4.tcp_tw_reuse = 0 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭4,n...

2020-12-19 17:03:09 5658 1

转载 sysctl.conf系统参数详解

转自:https://blog.csdn.net/weixin_40901788/article/details/83586965配置 sysctl.conf 系统参数(vi /etc/sysctl.conf)参数:1.内存&缓存kernel.sysrq = 0 内核设置验证为0kernel.core_uses_pid = 1 控制内核的系统请求调试功能开启,控制核心转储附加PID到核心文件名,适用于多线程kernel.msgmnb = 65536 每个消息队列的最大字节限制kern

2020-12-19 11:01:40 1101 1

转载 TCP的半链接和完全连接队列

TCP通过三次握手建立连接的过程应该都不陌生了。从服务器的角度看,它分为以下几步将TCP状态设置为LISTEN状态,开启监听客户端的连接请求 收到客户端发送的SYN报文后,TCP状态切换为SYN RECEIVED,并发送SYN ACK报文 收到客户端发送的ACK报文后,TCP三次握手完成,状态切换为ESTABLISHED在Unix系统中,开启监听是通过listen完成。intlisten(intsockfd,intbacklog)listen有两个参数,第一个参数sockfd表示...

2020-12-15 17:16:44 704

转载 linux内核初始化调用顺序

x86_64平台,上个图先,5种颜色各代表1个阶段:图片转自:https://blog.csdn.net/xxiomg/article/details/100558790For x86 64bits architecture platform, linux-2.6.35.4arch/x86/boot/header.S: the first instruction that runs in kernel image in real mode is at label "_start", then

2020-12-15 15:27:09 810

转载 TCP中的SYN-cookie

深入浅出TCP中的SYN-Cookies本文渐进地介绍TCP中的syn-cookie技术,包括其由来、原理、实例测试。SYN Flood 攻击TCP连接建立时,客户端通过发送SYN报文发起向处于监听状态的服务器发起连接,服务器为该连接分配一定的资源,并发送SYN+ACK报文。对服务器来说,此时该连接的状态称为半连接(Half-Open),而当其之后收到客户端回复的ACK报文后,连接才算建立完成。在这个过程中,如果服务器一直没有收到ACK报文(比如在链路中丢失了),服务器会在超时后重...

2020-12-14 20:36:46 745

转载 系统负载分析利器之sar

一、sar简介一、sar简介二、sar参数说明三、sar具体分析说明一、sar简介sar是System Activity Reporter(系统活动情况报告)的缩写。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据;取样数据和分析的结果都可以存入文件,所需的负载很小。sar是目前Linux上最为全面的系统性能分析工具之一,可以从14个大方面对系统的活动进行报告,包括文件的读写情况、系统调用的使用情.

2020-12-10 21:25:27 1271

原创 Linux文件句柄数及socket状态统计

1,Linux文件句柄总数统计cat /proc/sys/fs/file-nrhttp://bbs.learnfuture.com/topic/11640注:不要直接用 lsof |wc -l2,socket状态统计(1)while [ 1 ]; do date >> 1.log;ss -na |grep 80| awk '/^tcp/ {++S[$2]} END {for(a in S) print a, S[a]}' >> 1.log;sleep 1; d

2020-12-10 20:58:23 1009

转载 ngx_lua模块方法的简单介绍

转载:https://www.cnblogs.com/wangxusummer/p/4309007.htmlngx_lua模块的原理:1、每个worker(工作进程)创建一个Lua VM,worker内所有协程共享VM;2、将Nginx I/O原语封装后注入 Lua VM,允许Lua代码直接访问;3、每个外部请求都由一个Lua协程处理,协程之间数据隔离;4、Lua代码调用I/O操作等异步接口时,会挂起当前协程(并保护上下文数据),而不阻塞worker;5、I/O等异步操作完成时还原相关协程上

2020-11-26 09:50:19 699

转载 算法滑动窗口

转载labuladong:https://leetcode-cn.com/problems/minimum-window-substring/solution/hua-dong-chuang-kou-suan-fa-tong-yong-si-xiang-by-/%E5%8F%8C%E6%8C%87%E9%92%88%E6%8A%80%E5%B7%A7.md注:1,输入两个字符串的,需要needs和window两个hash计数器。输入为一个字符串的只需要一个window计数器。2,shr.

2020-08-13 21:59:43 2234

转载 单调栈-处理Next Greater Element问题

转载https://labuladong.gitbook.io/algo/shu-ju-jie-gou-xi-lie/dan-tiao-zhan栈(stack)是很简单的一种数据结构,先进后出的逻辑顺序,符合某些问题的特点,比如说函数调用栈。单调栈实际上就是栈,只是利用了一些巧妙的逻辑,使得每次新元素入栈后,栈内的元素都保持有序(单调递增或单调递减)。听起来有点像堆(heap)?不是的,单调栈用途不太广泛,只处理一种典型的问题,叫做 Next Greater Element。本文用讲解单调队

2020-08-11 19:30:13 235

原创 算法之杂记

回文 1,reverse2,双指针3,栈 最长回文子串 1,中心扩展法leetcode5:https://leetcode-cn.com/problems/longest-palindromic-substring/

2020-08-09 21:09:00 183

原创 STL迭代器prev,next相关函数

迭代器的头文件中定义了4个实现迭代器模板的函数模板.1、advance(iterator,num):将迭代器iterator 移动了num个位置2、distance(iterator1,iterator2):返回两个迭代器之间的元素的个数3、next(iterator,n):将iterator正向偏移n之后所指向位置的一个迭代器4、prev(iterator,n):返回iterat...

2020-07-30 08:07:31 211

原创 重载与using声明,命名空间隐藏规则的例外,非模板和模板函数重载

知识点:1,重载与using声明(P708)一个using声明引入的函数将重载该声明语句所属作用域中已有的其他同名函数。(1)如果using声明出现在局部作用域,则引入的名字将隐藏外层作用域的相关声明。(2)如果using声明所在的作用域中已经有一个函数与新引入的函数同名且参数列表相同,则该using声明将引发错误(f. using指示)。(3)除了(1)(2),using声明将为引入的名字添加额外的重载实例,并最终扩充候选函数集的规模。2,命名空间隐藏规则的例外---实参相关的查找

2020-06-26 08:55:49 441

转载 文件IO内存零拷贝之-sendfile

如今几乎每个人都听说过Linux中所谓的"零拷贝"特性,然而我经常碰到没有充分理解这个问题的人们。因此,我决定写一些文章略微深入的讲述这个问题,希望能将这个有用的特性解释清楚。在本文中,将从用户空间应用程序的角度来阐述这个问题,因此有意忽略了复杂的内核实现。什么是”零拷贝”为了更好的理解问题的解决法,我们首先需要理解问题本身。首先我们以一个网络服务守护进程为例,考虑它在将存储在文件中的信息通过网络传送给客户这样的简单过程中,所涉及的操作。下面是其中的部分简单代阿:read(file, tmp_buf,

2020-06-12 00:14:50 275

转载 文件IO内存零拷贝之mmap

目录mmap基础概念mmap内存映射原理mmap和常规文件操作的区别mmap优点总结mmap相关函数mmap使用细节性能总结mmap基础概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对

2020-06-11 23:17:41 570

原创 求助:STL 算法为什么推不出所需要的重载的op函数

例如:print是重载的,find_if既然需要的是一元谓词,为什么不能推出需要的接受一个参数的print?代码如下:#include <iostream>#include <algorithm>#include <vector>using namespace std;bool print(int a){ cout << "para 1:" << a << endl; return a &gt.

2020-05-27 19:03:04 222

原创 算法-搜索

广度优先搜索算法思想广度优先搜索算法(Breadth-First-Search,BFS),又称宽度优先搜索。作为最简便的图的搜索算法之一,是很多重要图算法的基本原型,如Dijkstra最短路径算法和Prime最小生成树算法。其核心思想是:从初始节点开始,应用产生式规则生成第一层节点,检查目标节点是否在这些后继节点中,若没有,则再用产生式规则将第一层所有节点逐一扩展,得到第二层节点,并逐...

2020-04-23 08:38:03 939

原创 回溯-子集_组合_排序_练习

组合:leetcode17(中等):电话号码的字母组合class Solution {public: vector<string> letterCombinations(string digits) { vector<string> result; if (digits.size() == 0) { ...

2020-04-20 09:03:40 293

转载 回溯算法解子集、组合、排序

转载labuladong:https://leetcode-cn.com/problems/subsets/solution/hui-su-si-xiang-tuan-mie-pai-lie-zu-he-zi-ji-wen-t/代码方面,回溯算法的框架:result = []def backtrack(路径, 选择列表): if 满足结束条件: result.a...

2020-04-19 20:26:04 795

转载 Epoll原理解析

转载自:https://blog.csdn.net/armlinuxww/article/details/92803381从事服务端开发,少不了要接触网络编程。Epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,Nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。Epoll 很重要,但是 Epoll 与 Select 的区别是什么呢?Epoll...

2020-04-18 17:28:28 168

zigbee smart energy 2.0

zigbee智能能源协议规范2.0草版,与1.1版相差很大,现在已成为北美地区标准。

2014-11-27

空空如也

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

TA关注的人

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