自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 【工具】开发工具红黑榜 (TCP测试/HTTP测试/SHELL工具/串口工具……)

SSH工具 FinalShell (shell+文件传输+远程桌面) SSH/串口 工具 MobaXterm Xshell (缺点:收费) TCP/UDP测试工具 红: USR-TCP232-Test(功能强大)http://www.usr.cn/Download/27.html ...

2020-01-09 20:57:39 106 0

原创 【职场规则】IT职场规则----时刻谨记

规则一:学会尊敬和服从上级 职场之所以会有上下级,是为了保证团队工作的开展。上级掌握了一定的资源和权力,考虑问题是从团队角度考虑而难以兼顾到个体。尊敬和服从上级是确保团队完成目标的重要条件。 员工不站在团队的高度来思考问题,只站在自己的角度去找上级的麻烦甚至恃才傲物,这样的员工很难生存更谈...

2019-06-02 18:36:09 157 0

转载 【linux】从一道面试题谈linux下fork的运行机制

今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目: 给出如下c程序,在linux下使用gcc编译: #include "stdio.h" #include "sys/types.h" #include "...

2020-07-13 02:01:36 10 0

原创 【算法】图

图的存储方法 1、邻接矩阵 2、邻接表 邻接表存储法详解: 存储方式: 邻接表存储图的实现方式是,给图中的各个顶点独自建立一个链表,用节点存储该顶点,用链表中其他节点存储各自的邻接点。 与此同时,为了便于管理这些链表,通常会将所有链表的头节点存储到数组中(也可以用链表存储)。也正因...

2020-07-12 17:51:27 11 0

转载 【RPC】RPC框架实现原理---未研读

原文:https://www.jianshu.com/p/78f72ccf0377 一、什么是RPC框架? RPC,全称为Remote Procedure Call,即远程过程调用,是一种计算机通信协议。 比如现在有两台机器:A机器和B机器,并且分别部署了应用A和应用B。假设此时位于A机器上...

2020-07-12 16:04:23 19 0

原创 【RPC】RPC的实现---未研读

1.前言 RPC全称为RemoteProcedureCall,即远过程调用。如果没有RPC,那么跨机器间的进程通讯通常得采用消息,这会降低开发效率,也会增加网络层和上层的耦合度,RPC可以帮助我们解决这些问题。 从上图可以看出,RPC是基于消息实现的,只不过它处于更上层,做了一层抽象和封装。实现...

2020-07-12 15:34:56 33 0

原创 【Redis】用Redis实现微博关注关系

关注关系产生的四种关系状态 关注 粉丝 双向关注(互粉) 无关系 需求分析 在微博中,每一个用户都会有一个关注列表,一个粉丝列表。用户可以查看自己的关注,粉丝列表,也可以查看别人的关注,粉丝列表。并且,要展示列表里每个人与当前查看者的关注状态。状态的可能性就是上面讲到得四种关系状态。 ...

2020-07-11 03:21:22 23 0

原创 【缓存穿透】redis缓存穿透及解决方案

缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,接着查询数据库也无法查询出结果,因此也不会写入到缓存中,这将会导致每个查询都会去请求数据库,造成缓存穿透; 缓存访问的过程如下: (1)应用访问缓存,假如数据存在,则直接返回数据 (2)数据在redis不存在,则去访问...

2020-07-07 14:56:58 46 0

原创 【C++11】C++ STL(面试复习整理-2.0)

1、六大组件介绍 STL六大组件 容器:数据结构,用来存放数据 算法:常用算法 迭代器:容器和算法之间的胶合剂,“范型指针” 仿函数:一种重载了operator()的类,使得这个类的使用看上去像一个函数 配置器:为容器分配并管理内存 适配器:修改其他组件接口 2、容器 vector ...

2020-07-06 18:07:53 38 0

原创 【智能指针】shared_ptr基本用法

头文件 shared_ptr需要头文件#include <memory> 声明方法 //way1 auto sp1 = std::make_shared<int>(5); //way2 int* p1 = new int[3]; memset(p1, 0, siz...

2020-07-05 01:38:14 51 0

转载 【Wireshark 】实战!我用 Wireshark 让你“看见“ TCP (学习到TCP 流量控制)

原文:https://www.cnblogs.com/xiaolincoding/p/12922927.html 前言 “哈?啥是大白鲨?” 咳咳,主要是因为网络分析工具Wireshark的图标特别像大白鲨顶部的角。 不信你看: Wireshark “为什么拖了怎么久才发文?...

2020-07-04 01:36:02 62 0

原创 【网络编程】Linux tcpdump命令详解---未消化

简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、n...

2020-07-03 12:07:40 38 0

原创 【调度】操作系统中调度算法(FCFS、RR、SPN(SJF)、SRT、HRRN)

决策模式 决策模式说明选择函数在执行的瞬间的处理方式,通常分为以下两类: 非抢占:一旦进入运行状态,就不会终止直到运行结束。 抢占:当前正在运行的进程可以被打断,并转移到就绪态。 一个调度算法是否能抢占,对进程的顺序有着极大的影响。 先来先服务FCFS 先来先服务是最简单的策略,也成为...

2020-07-03 01:06:48 66 0

原创 【调度】一个著名的任务调度系统是怎么设计的?

实习生张大胖 这是个代码写得很烂的电商系统,只要运行一段时间,服务器就会出现Out Of Memory。 别人都忙得四脚朝天,于是实习生张大胖被抓了壮丁去研究为什么会出现OOM。 刚入行的张大胖技术水平一般,“装模作样”地看代码,研究日志,请教老员工,一个星期过去了,还是一无所获...

2020-07-03 00:03:26 65 0

原创 【C++】引用

引用的定义 引用是给另外一个变量起别名,所以引用不会分配内存空间。 引用的声明方法:类型标识符 &引用名=目标变量名;(如int &ptr = num;) 引用和指针的区别 1、指针是一个实体,需要分配内存空间。引用只是变量的别名,不需要分配内存空间。 2、引用在定义的时...

2020-07-01 12:15:04 36 0

原创 【vim】vim命令

vim的查找功能 在vim下要查找字符串: 一,全匹配: 1,从上往下查找,比如“string” : /string 2,从下往上查找,比如“string” : ?string 二,模糊匹配(正则表达式) 1,. :通配1个字符 ,如 匹配 server, 可以用 /se...r...

2020-06-30 01:58:05 29 0

原创 【C++11】C++智能指针循环引用问题分析

C++11中引入了三种智能指针,分别是shared_ptr、weak_ptr和unique_ptr 智能指针的作用 智能指针可以帮助我们管理动态分配的堆内存,减少内存泄漏的可能性 手动管理堆内存有引起内存泄漏的可能,比如这段代码 try { int* p = new int; ...

2020-06-27 07:28:34 45 0

原创 【内存】C/C++ 自己实现简单的内存泄漏检测工具

学习练习用,真正检测内存泄漏最好还是 借助专门的工具。 C++语言 C语言 这个内存泄漏检测工具很简单,只能检测同一个模块,同一个线程中发送的内存泄漏,对于在编写代码过程中的代码调试有一定的帮助。如果要在集成测试或功能测试中检测内存泄漏,还需借助专门的工具。 1. 先取消malloc,...

2020-06-25 02:16:33 119 0

原创 【Sys】C++怎样读取文件才有最快的速度?

mmap 分析:https://sq.163yun.com/blog/article/173146709806518272 在进行大规模数据处理时,读文件很有可能成为速度瓶颈。不管你的CPU有4个核还是8个核,主频有2G还是3G,硬盘IO速度总是有个上限的。在本人最近的一次经历中,对一个11G的...

2020-06-24 23:11:50 77 0

原创 【内存】VS检测内存泄漏,定位泄漏代码位置方法

方法一:_CrtDumpMemoryLeaks函数 系统自带的 C Run-Time (CRT)库可以帮助我们检测内存泄露,使用很简单。 1)包含相应头文件 #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <cr...

2020-06-23 19:26:19 183 0

原创 【内存】内存检测工具sanitize[内存泄漏、内存越界] VS valgrind

简介 Sanitizers是谷歌发起的开源工具集,包括了AddressSanitizer, MemorySanitizer, ThreadSanitizer, LeakSanitizer,Sanitizers项目本是LLVM项目的一部分,但GNU也将该系列工具加入到了自家的GCC编译器中。GCC...

2020-06-23 16:08:42 143 0

原创 【内存】C++内存泄露检查的5个方法

原文:https://developer.51cto.com/art/201504/470685.htm 在Linux平台上 有valgrind可以非常方便的帮助我们定位内存泄漏,因为Linux在开发领域的使用场景大多是跑服务器,再加上它的开源属性,相对而言,处理问题容 易形成“统一”的标准...

2020-06-23 02:11:42 37 0

原创 【TCP】计算机网络第32讲-TCP的流量控制(TCP滑动窗口)

非常好的教程 计算机网络第32讲-TCP的流量控制(计算机网络简明教程及仿真实验) https://www.bilibili.com/video/BV1Lb411G7J1?from=search&seid=10847449054765505085

2020-06-22 00:16:58 35 0

原创 【Epoll】epoll+线程池实现高并发(C++)--编辑中

在epoll编程中,有三个非常重要的函数: 1. int epoll_create(int size):创建epoll 句柄, 入参是表示监听的数目是多大。 2. int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event):...

2020-06-21 13:54:00 47 0

原创 【Epoll】Linux + C + Epoll实现高并发服务器(线程池 + 数据库连接池) --研读+实践

一, 背景 先说下我要实现的功能,server端一直在linux平台下面跑,当客户端有请求过来的时候server端接受到请求,拿到客户端的数据,根据拿到的数据做出相应的处理,得到处理的结果直接把结果数据发送给客户端。这样一个连接的请求结束,我的不是长连接的情况,不会一直保持客户端的连接。来一个...

2020-06-21 01:42:15 66 0

原创 【B/S】浏览器地址栏输入URL,按下回车后发生了什么

URL后步骤概览 在地址栏输入URL后 查询ip地址 dns解析(浏览器是不能识别url地址的,需解析成ip地址), 建立tcp连接,(tcp三次握手) 发送Http请求, 服务器进行处理并返回Http报文, 浏览器渲染页面, 断开连接(tcp四次挥手) 详细 查询ip地址 ...

2020-06-19 17:44:35 70 0

原创 【Epoll】Epoll的本质---研读

从事服务端开发,少不了要接触网络编程。epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。 epoll 很重要,但是 epoll 与 select 的区别是什么呢?epoll 高效的原因是什么? ...

2020-06-19 12:48:40 46 0

原创 【协程】linux进程-线程-协程上下文环境的切换与实现---未消化

原文:https://blog.csdn.net/runner668/article/details/80512664 一:进程-线程-协程简介 进程和线程的主要区别是:进程独享地址空间和资源,线程则共享地址空间和资源,多线程就是多栈。 1、进程 进程是具有一定独立功能的程序关于某个数据集合...

2020-06-17 11:38:16 81 0

原创 【VS】VisualStudio 如何使用UML呢?

在本文,笔者将会以图文并茂的方式教你如何开启VS新技能--- 类视图(UML),以及一些简单的用法。 背景: 前些天朋友入职新公司,不可避免的需要熟悉对方框架及业务逻辑代码,一时半会一头雾水的,老板时而不时的还催一下,真要命。于是告诉他用类视图(UML)可以很好的学习人家的框架哟,这货学完美...

2020-06-16 01:31:41 88 0

原创 【mmap】深度分析mmap:是什么 为什么 怎么用 性能总结

一、mmap基础概念 mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而...

2020-06-14 20:19:24 74 0

原创 【内存池】C++内存池的简单原理及实现

原文:C++内存池的简单原理及实现 为什么要用内存池 C++程序默认的内存管理(new,delete,malloc,free)会频繁地在堆上分配和释放内存,导致性能的损失,产生大量的内存碎片,降低内存的利用率。默认的内存管理因为被设计的比较通用,所以在性能上并不能做到极致。 因此,很多时候需...

2020-06-13 18:05:37 54 0

原创 【内存池】C++ 内存池

C/C++下内存管理是让几乎每一个程序员头疼的问题,分配足够的内存、追踪内存的分配、在不需要的时候释放内存——这个任务相当复杂。 malloc/free、new/delete的缺点 1.调用malloc/new,系统需要根据“最先匹配”、“最优匹配”或其他算法在内存空闲块表中查找一块空闲内存...

2020-06-13 04:54:50 43 0

原创 【linux】信号量与PV操作 (进程和线程的同步)

在计算机操作系统中,PV操作是进程管理中的难点。 1、基本含义 什么是信号量?信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资...

2020-06-11 17:51:05 69 0

原创 【数据结构】linux 内核的list

前言 linux kernel里的很多数据结构都很经典, list链表就是其中之一,本文将从以下几方面介绍list链表:list的定义、list提供的操作方法、注意事项、使用实例 linux kernel里的很多数据结构都很经典, list链表就是其中之一 本篇要介绍的内容: li...

2020-06-09 16:44:18 55 0

转载 【算法】详解二分查找算法(思路很简单,细节是魔鬼)

我周围的人几乎都认为二分查找很简单,但事实真的如此吗?二分查找真的很简单吗?并不简单。看看 Knuth 大佬(发明 KMP 算法的那位)怎么说的: Although the basic idea of binary search is comparatively straightforward...

2020-06-07 00:39:17 63 0

原创 【C++】C++的类|C++类的内存结构

C++类内存结构 占内存的: 1、虚拟函数表指针 2、成员变量 不占内存的: 成员函数

2020-06-06 16:41:55 37 0

原创 【GDB】GDB 调试多线程总结

排除步骤 1.ps -eo pid,lstart,cmd | grep proname找出进程的pid 2.gdb attach pid。使用gdb attach可以调试正在运行的进程,这对数据不正常的程序很有效。 3.info threads查看具体的线程id。然后去日志查看具体的线程id...

2020-06-05 16:22:38 47 0

原创 【mySQL】WAL和MVCC ----待消化

WAL(Write-Ahead Logging)机制 MySQL 里经常说到的 WAL技术,也就是先写日志,再写磁盘。 当内存数据页跟磁盘数据页内容不一致的时候,我们成这个内存页为“脏页”。内存数据写入磁盘后,内存和磁盘上的数据页内容就一致了,称为“干净页”。 MySQL 从 内存更新到磁盘...

2020-06-04 20:09:37 42 0

原创 【SSL】HTTPS 和 SSL证书原理

问题 阐述HTTPS和SSL证书的原理。 解答 HTTPS (Hyper Text Transfer Protocol Secure) 对比HTTP而言,数据传输更安全,通常用来传输私密性的数据,如在线交易/订单处理/银行数据等,不过随着安全意识的普及,非传统安全领域的网站也在转向HTTPS...

2020-06-04 17:48:45 40 0

原创 【高并发】高并发测试笔记

问:高并发测试一般你们用什么工具来模拟10万级别的客户端并发?在普通的电脑上可以模拟吗 10万并发需要至少10万的套接字,套接字在内核中占用内存100000*6K*2~=1G内存,系统需要能够开启10W个fd。一般的系统能够能模拟 问:默认每个进程只能开1024个fd,修改后最大可以10w...

2020-05-29 17:27:28 44 0

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