- 博客(58)
- 资源 (17)
- 问答 (2)
- 收藏
- 关注
原创 问题处理1: expression must have class type but it has type “std::thread (*)(task (*)())“
【代码】问题处理1: expression must have class type but it has type “std::thread (*)(task (*)())“
2023-11-08 23:10:29 209
原创 定时器之多层级时间轮
定时器之多层级时间轮定时器应用心跳检测倒计时武器/技能冷却其它需要使用超时机制的功能数据结构实现定时器常见的数据结构有红黑树,最小堆,跳表,时间轮。这里需要特别说明的是对于最小堆,我们需要借助map来快速索引到节点。实现代码此处用时间轮来实现定时器spinlock.h#ifndef SPINLOCK_H#define SPINLOCK_Hstruct spinlock { int lock;};void spinlock_init(struct spinlock *l
2022-04-25 10:13:14 782
原创 Ubuntu下普通账户只能通过sudo登陆mysql的问题
Ubuntu下普通账户只能通过sudo登陆mysql的问题1:mysql版本Ver 8.0.28. 登陆错误,提示Access denied2:解决方法1:mysql版本Ver 8.0.28. 登陆错误,提示Access deniedmaliang@DESKTOP-U3G1DNQ:/mnt/c/Users/notbu/Desktop$ mysql -u root -pEnter password:ERROR 1698 (28000): Access denied for user 'root
2022-03-30 11:13:00 1337
原创 布隆过滤器
布隆过滤器定义布隆过滤器是一种概率型数据结构,它的特点是高效的插入和查询,能明确告知某个字符串一定不存在或者可能存在。布隆过滤器相比传统的查询结构(例如:hash,set,map等数据结构)更加高效,占用空间更小;但是其缺点是它返回的结果是概率性的,也就是说结果存在误差的,虽然这个误差是可控的;同时它不支持删除操作;组成:位图(bit数组)+ n个hash函数原理当一个元素加入位图时,通过k个hash函数将这个元素映射到位图的k个点,并把它们置为1;当检索时,再通过k个h
2022-02-22 15:52:46 391
原创 详解二叉树
1. 二叉树基本概念定义:n(n≥0)个结点的有限集合,由一个根结点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成 。逻辑结构:一对二(1:2)基本特征:每个结点最多只有两棵子树(不存在度大于2的结点)左子树和右子树次序不能颠倒(有序树)。基本形态:二叉树性质性质1: 在二叉树的第i层上至多有2i-1个结点(i>0)性质2: 深度为k的二叉树至多有2k-1个结点(k>0)性质3: 对于任何一棵二叉树,若度为2的结点数有n2个
2022-01-27 10:18:19 874
原创 adb 简易教程
adb 简易教程1 连接/断开设备注意有网线不需要直接连接adb connect 设备IP 192.168.8.199 #连接adb disconnect 设备IP #断开2 使用root用户adb root3 获取文件的读写权限推送设备上时最好执行此命令adb remount4 推送文件到设备adb push 源原件 设备上目的地5 进入shelladb shell6 查看当前adb devices7 脚本window下后缀为.bat@ECHO
2022-01-22 22:16:14 579
原创 C++最好用的 json库 nlohmann
C++最好用的 json库 nlohmann1.安装(GitHub)使用非常简单,只需要引入json.hpp即可:#include "json.hpp"// 为方便起见,设置命名空间using json = nlohmann::json;对于 GCC 和 Clang 编译器来说,别忘了打开 C++11 支持,例如 -std=c++11。2.使用2.1 创建json// 创建一个空结构(null)json j;// 添加一个数值,存为 doublej["pi"] = 3.141;/
2022-01-22 16:22:43 994
原创 观察者模式
被观察者维护一个队列,将观察者放入队列。有消息就通知观察者。下面展示一些 示例代码片。/* 江湖中有多个帮派,还有一名无人不知,无事不晓的百晓生。当江湖中发生武林打斗事件,百晓生作为天生的大嘴巴会广播武林消息,每个帮派的门第对于事件的处理方式均不同,同帮派被欺负,要报仇,同帮派欺负别人,叫好。*/#include <iostream>#include <string>#include <list>#include <memory>usi
2022-01-09 15:53:15 256
原创 C++智能指针unique_ptr
unique_ptr提供了以下操作:1. 构造函数虽然这里的构造函数比较多,但是可以发现,实际上是没有类似auto_ptr的那种拷贝构造:void foo_constuct(){ //这样构造是可以的 std::unique_ptr<int> p(new int(3)); //空构造 std::unique_ptr<int> p4; //下面三种写法会报错 std::unique_ptr<int> p2 =
2022-01-05 12:52:21 496 1
原创 使用引用计数实现最简单的智能指针2
使用模板技术完善智能指针,将引用计数封装到类中#include <iostream>#include <string>using namespace std;template<class T>class CSmartPtr;template<class T>class CRefCount{public: friend class CSmartPtr<T>; CRefCount(T *stu) { m_stu = st
2022-01-04 13:11:12 366
原创 使用引用计数实现最简单的智能指针1
工作中经常使用到C++中的智能指针,所以抽空实现了自己的一个最简单的,后面有空再完善一下#include <iostream>#include <string>#include <string.h>#include <cstdio>#include <functional>using namespace std;class CTest{ public: CTest() = delete;
2021-12-30 23:04:07 345
原创 C++可变参数输出控制台
C++可变参数输出控制台C++可变参数输出控制台C++可变参数输出控制台项目中经常用到输出调试,之前一直用C 实现,比较麻烦,需要指定数据类型。C版本代码输出控制台#define De_printf(str,args...) do{\ printf("%s:%s:%d] ", __FUNCTION__, __FILE__, __LINE__);\ print
2021-12-22 10:32:26 625
原创 5.C语言快速排序
常见算法时间复杂度快速排序基本思想基本思想:每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。优点:稳定,快;缺点:比较次数不一定,插入后的数据移动多,特别是当数据总量庞大的时候,但用链表可以解决这个问题。代码实现void printArray05(int array[], int len){ int i = 0; for(i=0; i<len; i++) { printf("%d ", array[i]); .
2021-08-28 12:25:13 349
原创 企业链表源码
LinkList.h源码#ifndef LINKLIST_H#define LINKLIST_H#include<stdlib.h>#include<stdio.h>//链表小结点typedef struct LINKNODE{ struct LINKNODE* next;}LinkNode;//链表结点typedef struct LINKLIST{ LinkNode head; int size;}LinkList;//遍历函数指针typed
2021-08-22 22:36:12 74
原创 4.C语言希尔排序
常见算法时间复杂度希尔排序基本思想基本思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。优点:快,数据移动少缺点:不稳定,增量的取值无确切答案,只能凭经验来取代码实现#include "stdio.h"#include "stdlib.h"#include "string.h"void println(int array[], int len){ int.
2021-08-22 21:51:32 87
原创 3.C语言选择排序
常见算法时间复杂度选择排序基本思想基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。优点:移动数据的次数已知(n-1 次);缺点:比较次数多。代码实现#include "stdio.h"#include "stdlib.h"#include "string.h"void printArray01(int array[], int len){ int i = 0; for(i=0; i<l..
2021-08-21 22:32:36 72
原创 2.C语言插入排序
常见算法时间复杂度插入排序基本思想基本思想:每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。优点:稳定,快;缺点:比较次数不一定,插入后的数据移动多,特别是当数据总量庞大的时候,但用链表可以解决这个问题。代码实现#include <stdio.h>#include <stdlib.h>int printfArray03(int array[], int len){ int i; for(i =.
2021-08-21 22:21:30 68
原创 1.C语言冒泡排序
冒泡排序基本思想:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。优点:比较简单,空间复杂度较低,是稳定的缺点:时间复杂度太高,效率不好#include "stdio.h"#include "stdlib.h"#include "string.h"v.
2021-08-21 22:03:29 87
原创 C语言常用函数
常用函数1. linux系统IO函数1.1 open/close函数#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>// open函数只有一个, 是变参函数// 作用: 打开或者的创建一个文件// 打开文件int open(const char *pathname, int flags); 参数: - pathname: 要打开的文件的路径(相对/绝对) -
2021-08-19 08:24:22 255 1
原创 2种单例模式类型
#include <iostream>using namespace std;//单例模式全局只能有一个对象,注意:懒汉模式遇到多线程 需要创建一个互斥锁,使它线性执行//懒汉class Singelton {public: static Singelton* getInstance() { // if (NULL == instance) { instance = new Singelton; } // ++m_count; ret
2021-08-10 16:42:15 79
原创 抽象工厂模式
#include <iostream>using namespace std;// 是一个功能集合组成的抽象类//抽象显卡class AbstractDisplay {public: virtual void show() = 0;};//抽象内存class AbstractStorage {public: virtual void store() = 0;};//抽象cpuclass AbstractCpu {public: virtual void
2021-08-10 16:37:19 54
原创 工厂方法模式
#include <iostream>using namespace std;//简单工厂模式+ 开闭原则 = 工厂方法模式//定义创建产品的工厂接口,实例化不同的工厂,创建不同的类,被创建的类具有相同的父类。class Fruit {public: virtual void createFruit() = 0;};class Factory {public: virtual Fruit* create() = 0;};class orangeFruit
2021-08-10 16:35:35 46
原创 简单工厂模式
#include <iostream>#include <string>using namespace std;class Fruit{public: virtual void createFruit() = 0;};class appleFruit : public Fruit{public: void createFruit() { cout << "create apple" << endl; }};class
2021-08-10 15:30:11 52
原创 消息队列接口的简单封装
//头文件msgipc_msg.h#ifndef _WBM_MY_MSG_H_#define _WBM_MY_MSG_H_#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <unistd.h>#include <errno.h>#include <sys/ms
2017-01-15 22:17:05 1549
原创 端口扫描工具
使用说明:1:目前只支持C类地址2:开启线程数不要太大.毕竟每个人的电脑资源不一样.默认开启10个线程3:结果输出路径暂时没做,后期会加上的.例如:下载地址:点我
2017-01-12 13:51:35 760
原创 文本转换工具
自己写了一个字符转换工具,可以试试.下载地址:http://download.csdn.net/detail/w451062810/9727213
2017-01-02 23:38:44 373
原创 redis 常见指令操作
redis 是常用的非关系型数据库. 所以我们也需要了解他的一些常用的操作指令redis的数据类型主要分为字符串,哈希,链表,集合等.字符串set--set name 1234 //设置key对应的值为string类型的valuesetnx name itcast_new //设置key对应的string类型的值,不存在则插入成功setex color 10 red // 设置key对应的
2016-11-28 13:57:53 483
原创 关于mysql的常见操作SQL语句
登陆mysql: mysql -hlocalhost -uroot -proot创建数据库:create database dbname charset utf8查看数据库:show databases;选择数据库:use dbname;删除数据库:drop database dbname;创建数据表: create table tbname ( id int(10) primar
2016-11-28 13:49:39 252
原创 C语言常见6大排序
#include #include #include #include #define MAXSIZE 10#define SWAP(A,B) (A)^=(B);(B)^=(A);(A)^=(B);//创建数组int * CreateArray(){ //定义随机数 srand((unsigned int)time(NULL)); //创建数组
2016-11-28 13:44:29 530
原创 epoll 搭建简单的聊天室
SERVER端:CLIENT端项目地址:https://code.csdn.net/w451062810/epoll_chat_room.git备注:代码参考了网上的一些资料,若有错误请指正.
2016-09-17 17:58:47 394
原创 php面向对象笔记11 异常处理
Error_reporting(0); class mysql { protected $conn = NULL; public function __construct() { $this->conn = mysql_connect('localhost','root','1111111'); if(!$this->conn)
2016-09-10 22:23:03 320
原创 php面向对象笔记10 异常处理
header("Content-type:text/html;charset=utf-8");class mysql{ public $ins=null; public function __construct() { $this->ins=@mysql_connect("127.0.0.1",'root','1'); if(!$thi
2016-09-10 22:22:02 256
原创 php面向对象笔记9 类的自动加载
类的声明是全局有效的。不管是在什么地方自动加载函数__autoload,当new一个不存在的类时,__autoload函数自动调用spl_autoload_register($a) //注册自动加载函数可以自定义自动加载函数
2016-09-10 22:21:11 258
原创 php面向对象笔记8 抽象类与延迟绑定复习和接口
abstract 抽象方法不能有方法体抽象类其实就是类的模版.抽象类不一定有抽象方法,但有抽象方法的必定是抽象类抽象类不能实例化,只能被继承。 接口 特点: 1) 接口是全抽象(抽象类和抽象方法构成) 2) 接口是对类规范,相当于是类模板 使用: 1) interface 类名,接口中只有public权限的方法(方法没有花括号) 2) 接口没有属
2016-09-10 22:20:31 250
原创 php面向对象笔记7 类常量与延迟绑定
类常量,类似于静态属性(ps:说白了就是不可改变值的静态属性),它的值不能是变量,只能是一个直接的值,如一个字符串const a=1;类常量在本类中值不能被修改,继承后可以修改魔术常量__FILE__ 当前文件路径__LINE__ 返回当前行号__DIR__ 返回当前目录路径__CLASS__ 返回当前类名__method__ 返回当前方法名延
2016-09-10 22:19:57 254
原创 php面向对象笔记6 类的重写和重载
类的重写来源于类的继承array_walk_recursive 对数组中的每个成员递归地应用用户函数php中不存在重载,但是可以达到重载的效果class test{ function area() { $args=func_get_args(); $len=count($args); if($len==1)
2016-09-10 22:19:26 245
原创 php面向对象笔记5 魔术方法
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state() 和 __clone()class people{
2016-09-10 22:18:49 250
c语言字符界面快译通源码
2016-03-19
网软交友征婚网站系统正式版
2010-06-29
迎客松网吧辅助管理系统
2010-06-29
纯真版QQ IP数据库
2010-01-03
vs2015中如何安装stlport
2017-05-06
c中%d的方式显示2个不同的变量,输出的结果为什么一样
2015-03-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人