自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 问答 (2)
  • 收藏
  • 关注

原创 Tailscale 动态选路策略

Tailscale 动态选路策略

2022-12-09 18:53:34 257 1

原创 性能压测模板整理

性能测试指标评估及模板

2022-10-12 22:01:50 1601 1

原创 K8s bridge、ip分配原理

K8s bridge、ip分配原理

2022-09-30 17:33:28 1648

原创 wireguard协议分析

wireguard协议

2022-09-30 17:15:53 2232

原创 asynchronous aof fsync is taking too long (disk is busy?)

redis aof延时源排查

2022-09-24 12:14:36 1280

原创 c++线程池实现

学习teamtalk服务端源码,记录下线程池的实现。主要是实现的类分为任务类(抽象类)、线程池类、工作线程类、线程同步类。Task抽象任务类 虚基类为了能够处理不同任务#ifndef __TASK_H__#define __TASK_H__class CTask {public: CTask(){} virtual ~CTask(){} virtual void run() = 0;private:};#endif /*defined(_.

2020-09-14 10:43:59 486

原创 c++ redis连接池的实现

学习teamtalk服务端源码,把redis连接池的实现记录下,用到了hiredis三方库和头文件。整个redis缓存池是三个类实现的,redis-manager,redis-pool,redis-conn。main函数获取redis-manager对象实例main() { //初始化redis CacheManager* pCacheManager = CacheManager::getInstance(); if (!pCacheManager) ...

2020-09-13 22:49:29 1002 1

原创 python多线程简单实例 多线程队列queue模块

python queue模块的使用方法和注意事项参照 文档https://docs.python.org/zh-cn/3/library/queue.html1.queue模块包含了四个不同性质的队列类classqueue.Queue(maxsize=0)Constructor for aFIFOqueue.maxsizeis an integer that sets the upperbound limit on the number of items that can be pla...

2020-05-15 15:28:56 849

原创 golang简单实现并发聊天室

功能介绍:让用户通过服务端广播出去文本消息goroutine使用介绍:这个程序中有四种goroutine。main和broadcaster各自是一个goroutine实例,每一个客户端的连接都会有一个handleConn和clientWriter的goroutine。协议:tcpbroadcaster的goroutine。他的内部变量clients会记录当前建立连接的客户端集合。其记录...

2020-03-17 10:11:20 458

原创 LeetCode-1. 两数之和

https://leetcode-cn.com/problems/two-sum/给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0...

2020-01-07 23:22:29 147

原创 leetcode-240. 搜索二维矩阵 II

https://leetcode-cn.com/problems/search-a-2d-matrix-ii/编写一个高效的算法来搜索mxn矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5...

2020-01-07 13:22:35 163

原创 vm 虚拟机安装ubutu 使用Gparted 磁盘扩容

一、虚拟机直接分配磁盘 选择需要扩展的大小,默认是20G二、安装Gparted完并启动sudo apt-get install gpartedsudo aparted三、扩容 1.先暂停linux-swap交换空间,再对linux-swap 和 extended分区进行删除 2.重置sda1主分区大小 3.再新建一个extend分...

2019-10-10 10:53:22 960

原创 jsoncpp

获取的json数据{ "A": [ { "B": [ { "C": [ "text" ], "D": 1, ...

2019-09-30 17:40:52 120

原创 libcurl实现HTTP

关于libcurl的相关函数介绍以及参数详见官方说明 https://curl.haxx.se/libcurl/c/example.html一、post / get其实也没啥特别区别,本质区别在于通常情况下post是发送两个TCP数据包一个是head确认完之后继续发一个data数据包,而GET直接发送head和data数据包,其次是写法不一样。二、post/get参数获取返回js...

2019-09-30 15:04:00 1413

原创 libcurl 与 jsoncpp 库/json11库 实现c++客户端http的post/get总结

一、介绍下这个三个 静态库(你也可以用动态库自行百度,这里只讲静态库)1.libcurl主要是实现及客户端的http协议,可以通过这个库进行post、get操作。2.jsoncpp和json11其实就是你post、get操作发送json数据后,拿到的数据可以反序列解析成类似对象或者数组的形式直接取到参数对应的值,有点map的感觉,但是又不是。当需要向一个接口post、get 数据不是参数而...

2019-09-30 09:23:01 950

原创 c++之智能指针

设计出一个class像指针,但是功能更强大,分为两种形式一种是标准库的源代码,早期的指针,多半是重载*和->,第二种是迭代器的智能指针1.早期的智能指针template<class T>class shared_ptr{public: T& operator*() const{ return *px; } T&...

2019-04-27 12:04:26 230

原创 c++多线程之原子操作

原子操作的不需要用到互斥量加锁技术,原子操作是在多线程中不会被打断的程序执行片段,比互斥量效率更高,但是原子操作只是针对一般只有一个变量,而不是一个代码段的情况,面对一个代码段还是得用互斥量加锁。原子操作一般指的是不可分割的操作,要么是完成状态,要么是没有完成状态,不会出现中间半完成状态。atomic是一个类模板,用来封装某个类型的值的,他有很多成员函数 1#include<io...

2019-04-24 23:40:39 578

原创 c++多线程编程之async、future

async、future创建后台任务并返回值,希望线程返回一个结果。async是函数模板,用来启动一个异步任务,启动起来一个异步任务之后,他返回一个future对象,future是个类模板。启动一个异步任务就是自动创建一个线程并开始执行对应的线程入口函数,他返回一个future对象,这个返回的对象里边含有线程入口函数所返回的结果,我们可以通过调用future对象的成员函数get()来获取结果。...

2019-04-24 21:00:30 897

原创 c++多线程之条件变量

1.条件变量condition_variable、wait()、notify_one()(通知一个线程)1.1condition_variable实际上是一个类,是一个和条件相关的一个类,等待一个条件达成,这个类需要和互斥量来配合工作,用的时候我们要生成这个类的对象。1.2.1wait()函数用于等待一个消息,他的第二个参数lambda表达式返回值是true,那wait()直接返回,否则w...

2019-04-22 21:41:37 2778

原创 c++单例设计模式及多线程

1、单例设计模式 1 #include<iostream> 2 using namespace std; ...

2019-04-22 14:00:13 1245

原创 c++服务器开发 多线程编程(基础)

1.为什么用多线程来做服务器?(1)当前的机器的单核红利已经结束(2)多线程拥有自身的优势(3)API日益成熟,操作系统和标准库都已经支持了多线程多线程编程需要掌握两个东西:数据计算和数据IO(内存和带宽)简单来说就是,快速处理数据和进行计算服务器开发的难点:在数据IO和计算找到平衡点多线程编程,multithread 类似于goto 用的不好可能会出现的问题:(1)死...

2019-04-14 23:18:51 1047

原创 深入学习C++(STL容器,map)

map multimap 引入的是二叉树数据结构namespace std{template<typename Key,typename T,typename Compare = less<Key>,typename Allocator=allocator<pair<const Key ,T>>class map;template<ty...

2019-04-14 16:44:39 156

原创 深入学习C++(STL容器,set)

set multiset 是c++98中引入的二叉树数据结构namespace std{template<typename T,typename Compare = less<T>,typename Allocator =allocator<T>>class set;template<typename T,typename Compare = ...

2019-04-14 00:22:52 144

原创 深入学习C++(STL容器,vector)

特点随机访问元素,末端添加删除元素效率高,前端和中间删除添加元素效率低,存在当前容器大小和容量的关系namespace std {template<typename T,typename Allocator = allocator<T>>calss vector;}Group = vector<float>;//初始Group a;Gr...

2019-04-11 10:43:40 162

原创 深入学习C++(STL容器,array)

array实际上是对原生数组进行了封装,内存分配在栈,不会重新分配,元素随机访问。#include <array> //库函数头文件array<int,100> a; //未初始化array<int ,100> b = {}; //全部初始化为0//array接口a.empty(); //访问一个bool值是否有元素...

2019-04-11 10:04:48 703

原创 深入学习C++(STL容器,概述)

STL是一个框架,将数据结构和算法进一步抽象化框架中主要三个部分:容器、迭代器、算法容器:管理某种东西的一个集合,可以是基本类型,也可以写的类型。迭代器:用来遍历元素,遍历的的东西可以是集合或者是容器的一部分,为各式各样的容器提供一组通用接口,对元素进行跳转规律和元素存储。算法:查找、排序、修改、使用某个东西,迭代器提供方法去遍历元素,怎么用这些元素就是通过算法是实现的。知道容...

2019-04-10 10:05:25 221

原创 ubuantu安装g++提示g++ : Depends: g++-4.8 (>= 4.8.2-5~) but it is not going to be installe"

因为ubuntu 的源过旧或不可访问导致,可以通过更新源解决。修改阿里源为Ubuntu 18.04默认的源备份/etc/apt/sources.list#备份cp /etc/apt/sources.list /etc/apt/sources.list.bak在/etc/apt/sources.list文件前面添加如下条目#添加阿里源deb http://mirrors.aliy...

2019-04-06 17:07:21 701

原创 微信小程序登录与微擎PHP后台数据交互原理剖析

首先先放上一个微信开发文档的登录流程时序,调用wx.login()获取临时登录凭证code,并回传到开发者服务器调用code2Session接口,换取用户唯一标识 OpenID和会话密钥 session_key。 之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。 注意: 会话密钥session_key...

2019-04-02 18:20:38 3861

原创 (github附源码)毕设微信小程序二手书交易后台PHP微擎

毕业论文答辩结束啦,分享下做微信小程序的经验,完成这次毕设途中真是很多心酸,走了很多弯路,由于初次做微信小程序,初次接触js这种语法,也没用过PHP开发过后台,前期只是认为微信小程序就是一个前端兼后台的,直接可以操作数据库,到后面发现其实并不是如此,微信小程序前端只是一个界面展示和一些逻辑层的设计,最后还是需要开发后台把前端的传来的数据请求进行处理,后台产生响应,做一些类似对数据库的操作。前期刚开...

2019-04-02 18:18:09 19566 43

原创 c++服务器开发之TCP

ipv4 前四位版本 4位首部长度 8位服务类型 位总长度一个32位的四字节的整数值 例如 实际计算机编码表示 0x00000001小端系统中在内存中的表示是 01 00 00 00大端系统中在内存中的表示是 00 00 00 01IP的特点 source port destination portTCP将应用程序的传输数据分割成合适的数据块定时器延迟确认 ack判断来的...

2019-03-22 11:16:59 1663

原创 微信小程序前端UI-zanUI的使用总结

ZanUI-WeApp是一个颜值高、好用、易扩展的微信小程序UI库,ZanUI-WeApp结合了微信的视觉规范,为用户提供更加统一的使用感受。 包含 badge、btn、card、cell、color、dialog、form、helper、icon、label、loadmore、panel、quantity、steps、tab、toast、toptip 共计 17 类组件或元素按照功能的不同,...

2019-03-11 13:47:43 1751

原创 c++学习笔记

1.int a[5] = {1,2,3,4,5};int *p = (int *)(&amp;a+1) ; // &amp;a是数组指针 其类型为int(*)[5] 指针加1之后增加的是5*sizeof(int)实际就是a[5]//此时输出的 *(p-1)=5;2.将“引用”作为函数参数有哪些特点?传递引用给函数与传递指针的效果是一样的,被调函数的形参就成为原来主...

2019-03-10 17:18:56 150

原创 微信小程序开发+微擎之已经写好的模块上传使用

介绍 微擎 主要提供两个方面给小程序 1.提供小程序服务端接口 2.提供小程序端的一些常用操作(生成请求的服务端的网址,弹窗,底部信息)开发准备1.准备一个微信小程序账号2.已经写好的模块代码PHP后台和前端微信小程序源码 2.1微擎的PHP后台代码上传到网站根目录下的addons下解压出来 2.2在微擎官网创建微信小程序 APPI...

2019-03-07 16:19:43 8819 1

原创 微擎的学习笔记day1

1.买一个云服务器或者虚拟机上搭建2.配置好云服务器,推荐安装宝塔面板,一键安装好PHP环境3.找到宝塔面板的根目录,点进去,将你下载的微擎框架压缩,上传到根目录,解压4.确定install.php在根目录5.在浏览器中输入你的域名/install.php 安装微擎,填写数据库表前缀的时候默认就好注:避坑 在安装微擎的时候千万要记得把你的域名的ssl关了,不然可能...

2019-03-06 11:35:41 536

原创 c++面试题解(day2)

三、string 类的具体实现#include&lt;iostream&gt;using namespace std;class String{public:    String(const char* str = NULL);  //构造函数    String(const String &amp;another);  //复制构造函数    ~String();  //析构...

2019-02-26 18:10:09 234

原创 c++面试题解(day1)

最近准备c++面试掏出一堆视频,总结一些常见c++面试题,日常打卡。一.预处理和宏定义的使用1.预处理  //考点 :#ifdef  #else #endif  //例子:#include&lt;iostream&gt;uing namespace std;#define DEBUG //预处理常量int main(){ #ifdef DEBUG;//判断是否定...

2019-02-24 23:02:58 1125

空空如也

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

TA关注的人

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