- 博客(36)
- 问答 (2)
- 收藏
- 关注
原创 asynchronous aof fsync is taking too long (disk is busy?)
redis aof延时源排查
2022-09-24 12:14:36
1361
原创 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
509
原创 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
1056
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
879
原创 golang简单实现并发聊天室
功能介绍:让用户通过服务端广播出去文本消息goroutine使用介绍:这个程序中有四种goroutine。main和broadcaster各自是一个goroutine实例,每一个客户端的连接都会有一个handleConn和clientWriter的goroutine。协议:tcpbroadcaster的goroutine。他的内部变量clients会记录当前建立连接的客户端集合。其记录...
2020-03-17 10:11:20
483
原创 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
174
原创 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
173
原创 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
989
原创 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
1451
原创 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
993
原创 c++之智能指针
设计出一个class像指针,但是功能更强大,分为两种形式一种是标准库的源代码,早期的指针,多半是重载*和->,第二种是迭代器的智能指针1.早期的智能指针template<class T>class shared_ptr{public: T& operator*() const{ return *px; } T&...
2019-04-27 12:04:26
248
原创 c++多线程之原子操作
原子操作的不需要用到互斥量加锁技术,原子操作是在多线程中不会被打断的程序执行片段,比互斥量效率更高,但是原子操作只是针对一般只有一个变量,而不是一个代码段的情况,面对一个代码段还是得用互斥量加锁。原子操作一般指的是不可分割的操作,要么是完成状态,要么是没有完成状态,不会出现中间半完成状态。atomic是一个类模板,用来封装某个类型的值的,他有很多成员函数 1#include<io...
2019-04-24 23:40:39
610
原创 c++多线程编程之async、future
async、future创建后台任务并返回值,希望线程返回一个结果。async是函数模板,用来启动一个异步任务,启动起来一个异步任务之后,他返回一个future对象,future是个类模板。启动一个异步任务就是自动创建一个线程并开始执行对应的线程入口函数,他返回一个future对象,这个返回的对象里边含有线程入口函数所返回的结果,我们可以通过调用future对象的成员函数get()来获取结果。...
2019-04-24 21:00:30
944
原创 c++多线程之条件变量
1.条件变量condition_variable、wait()、notify_one()(通知一个线程)1.1condition_variable实际上是一个类,是一个和条件相关的一个类,等待一个条件达成,这个类需要和互斥量来配合工作,用的时候我们要生成这个类的对象。1.2.1wait()函数用于等待一个消息,他的第二个参数lambda表达式返回值是true,那wait()直接返回,否则w...
2019-04-22 21:41:37
2806
原创 c++服务器开发 多线程编程(基础)
1.为什么用多线程来做服务器?(1)当前的机器的单核红利已经结束(2)多线程拥有自身的优势(3)API日益成熟,操作系统和标准库都已经支持了多线程多线程编程需要掌握两个东西:数据计算和数据IO(内存和带宽)简单来说就是,快速处理数据和进行计算服务器开发的难点:在数据IO和计算找到平衡点多线程编程,multithread 类似于goto 用的不好可能会出现的问题:(1)死...
2019-04-14 23:18:51
1075
原创 深入学习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
168
原创 深入学习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
164
原创 深入学习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
178
原创 深入学习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
719
原创 深入学习C++(STL容器,概述)
STL是一个框架,将数据结构和算法进一步抽象化框架中主要三个部分:容器、迭代器、算法容器:管理某种东西的一个集合,可以是基本类型,也可以写的类型。迭代器:用来遍历元素,遍历的的东西可以是集合或者是容器的一部分,为各式各样的容器提供一组通用接口,对元素进行跳转规律和元素存储。算法:查找、排序、修改、使用某个东西,迭代器提供方法去遍历元素,怎么用这些元素就是通过算法是实现的。知道容...
2019-04-10 10:05:25
233
原创 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
758
原创 微信小程序登录与微擎PHP后台数据交互原理剖析
首先先放上一个微信开发文档的登录流程时序,调用wx.login()获取临时登录凭证code,并回传到开发者服务器调用code2Session接口,换取用户唯一标识 OpenID和会话密钥 session_key。 之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。 注意: 会话密钥session_key...
2019-04-02 18:20:38
3903
原创 (github附源码)毕设微信小程序二手书交易后台PHP微擎
毕业论文答辩结束啦,分享下做微信小程序的经验,完成这次毕设途中真是很多心酸,走了很多弯路,由于初次做微信小程序,初次接触js这种语法,也没用过PHP开发过后台,前期只是认为微信小程序就是一个前端兼后台的,直接可以操作数据库,到后面发现其实并不是如此,微信小程序前端只是一个界面展示和一些逻辑层的设计,最后还是需要开发后台把前端的传来的数据请求进行处理,后台产生响应,做一些类似对数据库的操作。前期刚开...
2019-04-02 18:18:09
19766
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
1690
原创 微信小程序前端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
1819
原创 c++学习笔记
1.int a[5] = {1,2,3,4,5};int *p = (int *)(&a+1) ; // &a是数组指针 其类型为int(*)[5] 指针加1之后增加的是5*sizeof(int)实际就是a[5]//此时输出的 *(p-1)=5;2.将“引用”作为函数参数有哪些特点?传递引用给函数与传递指针的效果是一样的,被调函数的形参就成为原来主...
2019-03-10 17:18:56
165
原创 微信小程序开发+微擎之已经写好的模块上传使用
介绍 微擎 主要提供两个方面给小程序 1.提供小程序服务端接口 2.提供小程序端的一些常用操作(生成请求的服务端的网址,弹窗,底部信息)开发准备1.准备一个微信小程序账号2.已经写好的模块代码PHP后台和前端微信小程序源码 2.1微擎的PHP后台代码上传到网站根目录下的addons下解压出来 2.2在微擎官网创建微信小程序 APPI...
2019-03-07 16:19:43
8881
1
原创 微擎的学习笔记day1
1.买一个云服务器或者虚拟机上搭建2.配置好云服务器,推荐安装宝塔面板,一键安装好PHP环境3.找到宝塔面板的根目录,点进去,将你下载的微擎框架压缩,上传到根目录,解压4.确定install.php在根目录5.在浏览器中输入你的域名/install.php 安装微擎,填写数据库表前缀的时候默认就好注:避坑 在安装微擎的时候千万要记得把你的域名的ssl关了,不然可能...
2019-03-06 11:35:41
551
原创 c++面试题解(day2)
三、string 类的具体实现#include<iostream>using namespace std;class String{public: String(const char* str = NULL); //构造函数 String(const String &another); //复制构造函数 ~String(); //析构...
2019-02-26 18:10:09
249
原创 c++面试题解(day1)
最近准备c++面试掏出一堆视频,总结一些常见c++面试题,日常打卡。一.预处理和宏定义的使用1.预处理 //考点 :#ifdef #else #endif //例子:#include<iostream>uing namespace std;#define DEBUG //预处理常量int main(){ #ifdef DEBUG;//判断是否定...
2019-02-24 23:02:58
1161
空空如也
c++游戏制作遇到的问题
2016-06-17
有4个互不相同的数字,输出由其中三个不重复数字组成的排列。
2016-03-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人