- 博客(30)
- 资源 (65)
- 问答 (23)
- 收藏
- 关注
原创 【数据库】3分钟,golang 操作 clickhouse (docker)
安装clickhouse与使用docker pull yandex/clickhouse-server如果pull出现 docker pull yandex/clickhouse-serverUsing default tag: latestError response from daemon: Gethttps://registry-1.docker.io/v2/: net/http: TLS handshake timeout请换源。另一种方式是用dig命令然后配置host...
2020-07-31 20:22:42 4402 1
原创 【KVM】一张图看懂KVM虚拟化
KVM,基于内核的虚拟机(英语:Kernel-based Virtual Machine,缩写为 KVM),是一种用于Linux内核中的虚拟化基础设施。KVM:实现CPU和内存虚拟化,但不能模拟其它设备QEMU:模拟IO设备(网卡、磁盘),与KVM共同实现真正意义上的服务器虚拟化libvirt:调用KVM虚拟化技术的管理接口virt-manager:管理虚拟机的图形化工具,用于启动、停止、创建、删除虚拟设备,以及查看资源占有率统计等virt-viewer:连接虚拟机的图形化客户.
2020-07-31 01:45:55 1092
原创 【内存】内存对齐 的原理
目录内存对齐的原因内存对齐的原理内存对齐的原因1.平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2.性能原因:内存对齐最最底层的原因是内存的IO是以64bit为单位进行的,因此内存对齐为了高效的内存IO,大部分都是更为高效的高速缓存IO。数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。你i.
2020-07-30 16:56:41 2105
原创 【数据库】MySQL 100万条记录全表遍历---金山面试题
今天做一个业务需求的逻辑处理,需要对MySQL全表进行遍历,数据规模百万级别,为方便描述,这张表就用 a 来代替吧结合自己的思路和一些资料,在这里记录一下方案的进化史一、直接遍历拿出所有的数据select * from a ;这个肯定不用多说了,估计还没拿完,内存就爆了,对这种数量级的表不现实二、分页式循环遍历select * from a limit 0,1000;select * from a limit 1000,1000。在代码中,循环地使用这种...
2020-07-30 12:26:51 2494
原创 【C++11】指针引用计数技术及智能指针的简单实现(共享指针是怎样计数的)?
计数原理智能指针将一个计数器与类指向的对象相关联,引用计数跟踪共有多少个类对象(shared_ptr对象?)共享同一指针。它的具体做法如下:1、当创建类的新对象时,初始化指针,并将引用计数设置为12、当对象作为另一个对象的副本时,复制构造函数复制副本指针,并增加与指针相应的引用计数(加1)3、使用赋值操作符对一个对象进行赋值时,处理复杂一点:(赋值判断要先判断 是否是自己给自己赋值)先使左操作数的指针的引用计数减1(为何减1:因为指针已经指向别的地方),如果减1后引用计数为0,则释放
2020-07-24 02:12:39 3266 1
原创 【C++】拷贝构造函数和赋值函数
详解C++中构造函数,拷贝构造函数和赋值函数的区别和实现更新时间:2019年03月26日 10:18:25 转载作者:Zmyths 这篇文章主要介绍了C++中构造函数,拷贝构造函数和赋值函数的区别和实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法。下面就详细比较下三者之间的区别以及它们的具体实现1.构造函数构造函数是一...
2020-07-23 12:09:27 2635
原创 【设计模式】C++对单例模式实现的总结(C++11超简化版,必看精髓)
问题的提出:一个国家只能有一个主席,一个学校只能有一个校长…单例模式:它属于创建型模式,它提供了一种创建对象的最佳方式。一个类有且只有一个由自己生成的对象,并且还有一个对外的可供访问该对象的一种方式。(通俗的讲,就是这个类的构造器被私有化了,并且在类里面只实例化了一个对象,如果你需要用到该类对象,你只能通过getInstance()方法获得类自己生成的这个对象)那么什么时候你需要用到单例模式呢?比如说:现在的操作系统大多是多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线
2020-07-23 01:27:40 597
原创 【微服务】zookeeper,dubbo和Nginx的区别
Nginx是著名的反向代理服务器,也被广泛的作为负载均衡服务器ZooKeeper是分布式协调服务框架,有时也被用来做负载均衡那么他们的区别是什么?如何选择呢?下面从实际场景看下他们的关系Nginx的负载均衡配置非常简单,把多个web server配置到nginx中,用户访问Nginx时,就会自动被分配到某个web serverupstream backend {server 192.168.1.10;server 192.168.1.11;当网站规模变大,通常会进行服务拆
2020-07-22 03:23:44 1799
原创 【C++11】move和forward 、左值右值(性能优化之道)
原文:https://zhuanlan.zhihu.com/p/55856487move和forward虽然是8年前C++提出的新东西, 但要搞懂还是得费一些精力.网上有挺多相关材料, 但即使是stackoverflow, 对move和forward的讲解, 要么抠底层抠到入土, 要么东拉西扯, 都是隔靴搔痒.最近刚好把它们俩梳理了一遍, 来写写move和forward为什么会出现, 他们能解决什么痛点.太长不看细节: TL;DR:(1) 问题: 临时变量copy开销太大(2) 引入
2020-07-22 01:26:45 1494
原创 【C++11】线程池 简单实现
适合应用线程池的场合线程分为三个过程:T1、T2、T3。T1:线程创建时间T2:线程执行时间,包括线程的同步等时间T3:线程销毁时间 线程本身的开销所占的比例为(T1+T3) / (T1+T2+T3)。如果线程执行的时间很短的话,开销可能占到20%-50%左右。如果任务执行时间很长的话,这笔开销将是不可忽略的。除此之外,线程池能够减少创建的线程个数。因此线程池的出现正是着眼于减少线程本身带来的开销。线程池采用预创建的技术。对于FTP服务器以及Telnet服务...
2020-07-21 02:07:32 649
原创 【C++】工厂函数和工厂模式
目录工厂函数简单工厂模式工厂函数c++ define 定义工厂函数,其中define函数名使用##连接# include<stdio.h># include <stdlib.h> //atoi# include <string.h> //strlen# include <stdint.h> //uint64_t#include<iostream>#include<memory>usin
2020-07-18 05:54:07 3413 1
原创 【网络编程】msgpack
https://www.shiyanlou.com/courses/1414/learning/?id=14996实验知识点msgpack基本用法 asio异步读写 asio同步读写安装msgpack库,并进入/home/shiyanlou/rpc/code5目录。git clone --depth 1 https://github.com/msgpack/msgpack-c.gitcd msgpack-ccmake -DMSGPACK_C11=ON .sudo ...
2020-07-17 12:00:30 1463
原创 【网络编程】asio
asio 定时器的基本使用asio的定时器可以提供同步或异步定时事件,我们通常用定时器来处理客户端连接超时的问题,比如服务器就设置一个超时时间,客户端连接成功之后,若没有发送消息给服务器的时间大于超时时间,则认为客户端连接已经断开了,可以关闭这个连接。asio定时器的用法比较简单,在 code4 目录下新建一个 code1.cpp 文件:#include <iostream>#include <boost/asio.hpp>int g_count = 0;..
2020-07-17 11:08:40 737 1
原创 【智能指针】std::unique_ptr 和weak_ptr 基本用法
std::unique_ptrstd::unique_ptr是一种独占的语义,即只允许一个智能指针引用裸指针,这区别于std::shared_ptr允许多个shared_ptr引用同一个裸指针,它没有引用计数,它的性能比shared_ptr会高一点。在用法上std::unique_ptr和std::shared_ptr是类似的,主要的不同是std::unique_ptr之间的赋值需要通过std::move实现。在 code2 目录下新建一个 code5.cpp 文...
2020-07-17 09:53:06 1939
原创 【C++11】lambda函数及其基本用法
lambda的语法比较简单,下面这个lambda返回一个字符串。auto lambda = []{ return "hello world"; };lambda(); //将返回 hello world 字符串lambda还可以传参数。auto lambda = [](std::string str){ return str; };lambda("hello world"); //将返回 hello world 字符串可以看到lambda就像一个函数一样,可以接受参......
2020-07-16 18:50:48 1844
原创 【部署和维护】简述os,docker,k8s,openshift,rucher的关系 -----学习和编辑中
dokcer与虚拟机关系: docker只是管理容器生命周期的框架,通过下图你可以看到: K8S的主要工作:KBS与docker的关系: Openshift主要功能: Rucher的主要功能: Rancher与devops: 参考如下:https://blog.51cto.com/blief/2386811抱歉还有部分图忘记出处,请作者多海涵。......
2020-07-16 05:36:27 1116
原创 【GDB】GDB工作原理--ptrace(让父进程可观察和控制其它进程、检查和改变其核心映像及寄存器)
一、gdb简介 gdb:GNU debugger UNIX及UNIX-like下一个强大的命令行的调试工具 gdb调试的整体架构如下图所示: 可以发现gdb调试不管是本地调试还是远程调试,都是基于ptrace系统调用来实现的 二、ptracegdb凭什么可以调试一个程序?凭什么能够接管一个程序的运行?我以前也想过这样的问题,但是后来居然忘记去查看了。我想到了我们的二进制翻译器,想到了intel的pin,Dynamo。这些都是将翻译后的代码放到codecache中去.
2020-07-16 01:06:22 594
原创 【RPC】RPC和RMI的区别-----未完全研透
一:RPC 远程过程调用(注:可以这么理解,RPC是所有语言的通用协议,有点像SOAP,而RMI是RPC的一种Java实现『或说RMI是RPC的java版的细化要求』;这是自己目前的理解如果有不正确的地方还望能指出)RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务。(注:可以这么理解,只要是通过网络从而调有远端的某种服务,那么这就是RPC,而不一定就是要http请求,tcp请求,udp请求,soap报文请求都可以,何况这几种.
2020-07-15 02:04:13 2086
原创 【算法】图
图的存储方法1、邻接矩阵2、邻接表邻接表存储法详解:存储方式:邻接表存储图的实现方式是,给图中的各个顶点独自建立一个链表,用节点存储该顶点,用链表中其他节点存储各自的邻接点。与此同时,为了便于管理这些链表,通常会将所有链表的头节点存储到数组中(也可以用链表存储)。也正因为各个(顶点的)链表的头节点存储的是各个顶点,因此各链表在存储邻接点数据时,仅需存储该邻接点位于数组中的位置下标即可。例如,存储图 1a) 所示的有向图,其对应的邻接表如图 1b) 所示: ...
2020-07-12 17:51:27 557
转载 【RPC】RPC框架实现原理---未研读
原文:https://www.jianshu.com/p/78f72ccf0377一、什么是RPC框架?RPC,全称为Remote Procedure Call,即远程过程调用,是一种计算机通信协议。比如现在有两台机器:A机器和B机器,并且分别部署了应用A和应用B。假设此时位于A机器上的A应用想要调用位于B机器上的B应用提供的函数或是方法,由于A应用和B应用不在一个内存空间里面,所以不能直接调用,此时就需要通过网络来表达调用的方式和传输调用的数据。也即所谓的远程调用。二、RPC框架的实现原
2020-07-12 16:04:23 343
原创 【RPC】RPC的实现---未研读
1.前言RPC全称为RemoteProcedureCall,即远过程调用。如果没有RPC,那么跨机器间的进程通讯通常得采用消息,这会降低开发效率,也会增加网络层和上层的耦合度,RPC可以帮助我们解决这些问题。从上图可以看出,RPC是基于消息实现的,只不过它处于更上层,做了一层抽象和封装。实现上有很多现存的RPC实现,如Facebook出品Thrift、微软的COM/DCOM/COM+、跨平台的Corba、以及ACE提供的Tao等。本文将力图用比较简单的语言阐述一个RPC是如何实现的。...
2020-07-12 15:34:56 1061
原创 【Redis】用Redis实现微博关注关系
关注关系产生的四种关系状态关注 粉丝 双向关注(互粉) 无关系需求分析在微博中,每一个用户都会有一个关注列表,一个粉丝列表。用户可以查看自己的关注,粉丝列表,也可以查看别人的关注,粉丝列表。并且,要展示列表里每个人与当前查看者的关注状态。状态的可能性就是上面讲到得四种关系状态。问题可以分两种情况来看:1、看自己的关注、粉丝列表2、看别人的关注、粉丝列表看自己的关注、粉丝列表:这种情况相对简单一点。比如看自己的关注列表,列表里的人的与自己的关系状态不可能是“无关系”和“粉丝”
2020-07-11 03:21:22 1638
原创 【redis】redis缓存穿透及解决方案|缓存穿透,缓存击穿,雪崩的理解
缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,接着查询数据库也无法查询出结果,因此也不会写入到缓存中,这将会导致每个查询都会去请求数据库,造成缓存穿透;缓存访问的过程如下:(1)应用访问缓存,假如数据存在,则直接返回数据(2)数据在redis不存在,则去访问数据库,数据库查询到了直接返回应用,同时把结果写回redis(3)数据在redis不存在,数据库也不存在,返回空,一般来说空值是不会写入redis的,如果反复请求同一条数据,那么则会发生缓存穿透。.
2020-07-07 14:56:58 447
转载 【C++11】C++ STL(面试复习整理-2.0)
1、六大组件介绍STL六大组件容器:数据结构,用来存放数据算法:常用算法迭代器:容器和算法之间的胶合剂,“范型指针”仿函数:一种重载了operator()的类,使得这个类的使用看上去像一个函数配置器:为容器分配并管理内存适配器:修改其他组件接口2、容器vector底层为数组,支持随机访问,节点大小是动态的,支持下标访问。随机存取效率很高(O(1)),插入效率不高。扩容原理:以原大小的两倍配置一份新空间,将原空间数据拷贝过来,会导致迭代器失效常用函数size():.
2020-07-06 18:07:53 1537
原创 【智能指针】shared_ptr基本用法和原理(共享指针)
头文件shared_ptr需要头文件#include <memory>声明方法//way1auto sp1 = std::make_shared<int>(5);//way2int* p1 = new int[3];memset(p1, 0, sizeof(int) * 3);std::shared_ptr<int> sp2(p1);增加计数被引用则会增加计数std::shared_ptr<int> ptr2(sp2)
2020-07-05 01:38:14 32636 2
转载 【网络】实战!我用 Wireshark 让你“看见“ TCP (学习到TCP 流量控制)
原文:https://www.cnblogs.com/xiaolincoding/p/12922927.html前言“哈?啥是大白鲨?”咳咳,主要是因为网络分析工具Wireshark的图标特别像大白鲨顶部的角。不信你看:Wireshark“为什么拖了怎么久才发文?”为了让大家更容易「看得见」 TCP,我搭建不少测试环境,并且数据包抓很多次,花费了不少时间,才抓到比较容易分析的数据包。接下来丢包、乱序、超时重传、快速重传、选择性确认、流量控制等等 TCP 的特...
2020-07-04 01:36:02 3049 1
原创 【网络编程】Linux tcpdump命令详解---编辑中
简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。实用命令实例默认启动tcpdump普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。监视指定网络接口的数据包t...
2020-07-03 12:07:40 1272
原创 【调度】操作系统中调度算法(FCFS、RR、SPN(SJF)、SRT、HRRN)
决策模式决策模式说明选择函数在执行的瞬间的处理方式,通常分为以下两类:非抢占:一旦进入运行状态,就不会终止直到运行结束。抢占:当前正在运行的进程可以被打断,并转移到就绪态。一个调度算法是否能抢占,对进程的顺序有着极大的影响。先来先服务FCFS先来先服务是最简单的策略,也成为先进先出FIFO。首先它是一个非抢占的。如字面的意思,它根据进程到达时间决定先运行哪一个进程。这里给出一个实际的例子。以表格的形式表现出在FIFO策略下各进程的情况。简单说就是依次执行完成,从...
2020-07-03 01:06:48 5626
转载 【调度】一个著名的任务调度系统是怎么设计的?
实习生张大胖这是个代码写得很烂的电商系统,只要运行一段时间,服务器就会出现Out Of Memory。别人都忙得四脚朝天,于是实习生张大胖被抓了壮丁去研究为什么会出现OOM。刚入行的张大胖技术水平一般,“装模作样”地看代码,研究日志,请教老员工,一个星期过去了,还是一无所获。周一例行的项目会议上, 大家似乎要看张大胖的笑话了,没想到他却提了一个歪招:“这个OOM问题非常复杂,一时半会儿也解决不了,要不我们定时重启服务器怎么样?”一脸严肃的项目经理老梁点...
2020-07-03 00:03:26 521
原创 【C++】引用
引用的定义引用是给另外一个变量起别名,所以引用不会分配内存空间。引用的声明方法:类型标识符 &引用名=目标变量名;(如int &ptr = num;)引用和指针的区别1、指针是一个实体,需要分配内存空间。引用只是变量的别名,不需要分配内存空间。2、引用在定义的时候必须进行初始化,并且不能够改变。指针在定义的时候不一定要初始化,并且指向的空间可变。(注:不能有引用的值不能为NULL)3、有多级指针,但是没有多级引用,只能有一级引用。4、指针和引用的自增运算结果不一样。(
2020-07-01 12:15:04 1093
MobaXterm、WindTerm、xshell、finalshell、soureCRT快捷指令工具cxtool-4.1.5
2024-09-07
MobaXterm、WindTerm、xshell、finalshell、soureCRT快捷指令工具cxtool-4.0.0
2024-08-28
MobaXterm、WindTerm、xshell、finalshell、soureCRT快捷指令工具cxtool-3.8.0
2024-08-14
MobaXterm、WindTerm、xshell、finalshell、soureCRT快捷指令工具cxtool-3.2.5
2024-07-18
cxtool-3.2.2快捷指令工具-MobaXterm、WindTerm、xshell伴侣
2024-07-03
CP丢包对带宽性能的影响分析(Analysing TCP performance when link experiencing
2023-11-26
Argobots: A Lightweight Threading Framework for Massive Fine-Gra
2023-09-30
mellanox RDMA MLNX-OFED Documentation Rev 5.7-1.0.2.0-11-15-2022
2022-11-15
A Review of Lightweight Thread Approaches for High Performance
2022-09-18
DISTRIBUTED ASYNCHRONOUS OBJECT STORAGE (DAOS)
2022-09-10
大文件切割FileSplitter+CoolFormat3.4+Sublime Text 3
2022-08-17
DAOS_A_Scale-Out_High_Performance_Storage_Stack_fo.pdf
2022-08-15
18--RPC18--RPC18--RPC18--RPC18--RPC18--RPC18--RPC18--RPC18--RPC1
2022-08-08
基于可靠连接和高效资源共享的可扩展 RDMA RPC
2022-02-12
连接服务器失败(错误原因:Connection refused) error 111 抓包结果
2022-01-25
删除文件只保留最新的n个文件的shell脚本
2021-09-08
shell 脚本怎么删除 匹配字符之间的行?
2023-03-01
我写的IP转interface的shell脚本错哪里了呢?
2022-12-10
ifconfig 除了列出网口信息还有一堆不知道是什么?
2022-10-27
为什么程序能用getenv读到的环境变量我printenv打印不出来?
2022-09-23
find 后调用 -exec 执行多条语句的方法是?
2022-09-09
如何设置scons的环境变量?
2022-08-25
Gcc编译代码报错/usr/bin/ld: cannot find abt
2022-08-23
为什么popen没有执行里面的shell脚本?
2022-05-19
linux 的buff/cache有必要手动清除吗?
2021-12-06
linux怎么查看线程的父进程?
2021-10-26
C++11的allocator::construct如何构造多参数对象?
2021-09-25
C++11启动线程时怎么给线程分配名字?
2021-09-22
linux 的core file的时间戳怎么样才能变成日期格式
2018-02-26
关于protobuff,json等协议数据跨语言传输的一些问题
2017-11-09
servlet应该放在哪个文件夹?servlet-class的根目录是哪里?
2017-10-19
如何实现子Div的大小随着父Div的大小动态的改变而改变
2017-09-24
如何实现点击页面上的图片改变服务器上某个文件的JSON数据?
2017-08-07
pentaho,Kylin, Mondrian, Saiku之间到底是什么样的关系?
2017-07-16
Echart和WPF chart 比有什么优势吗?为什么Echart的JS库如此热门?
2017-06-22
shell函数内如何改变参数的值?类似于C语言一样参数指针传递
2017-05-21
shell怎么调用一个子脚本之后 让自己可以退出不必等子脚本
2017-05-20
linux 的core file的时间戳怎么样才能变成日期格式
2016-09-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人