语言
文章平均质量分 92
Dachao1013
华为全栈工程师一枚,多分享,多总结,加油!
微信号yc299792
欢迎来扰
展开
-
C++基础知识 完结篇-继承-多态
整理码字不易,养成好习惯,点赞关注,你的支持就是我写下去的动力,谢谢老板。本文为C++第三篇后续接着这篇文章写,大家可以持续关注,前四篇在主页4.7 继承和派生4.7.1 继承概述4.7.1.1 为什么需要继承 网页类 classIndexPage{ public: //网页头部 voidHeader(){ cout <<"网页头部!"<<endl; } //网页左侧菜单...原创 2020-08-06 07:23:26 · 535 阅读 · 0 评论 -
C++基础知识(四)-友元和运算符重载
整理码字不易,养成好习惯,点赞关注,你的支持就是我写下去的动力,谢谢老板。本文为C++第三篇后续接着这篇文章写,大家可以持续关注,前三篇在主页4.5 友元类的主要特点之一是数据隐藏,即类的私有成员无法在类的外部(作用域之外)访问。但是,有时候需要在类的外部访问类的私有成员,怎么办?解决方法是使用友元函数,友元函数是一种特权函数,c++允许这个特权函数访问私有成员。这一点从现实生活中也可以很好的理解:比如你的家,有客厅,有你的卧室,那么你的客厅是Public的,所有来的客人都可以进去,.原创 2020-08-05 07:13:02 · 618 阅读 · 0 评论 -
C++基础知识(三)-类和对象
整理码字不易,养成好习惯,点赞关注,你的支持就是我写下去的动力,谢谢老板。本文为C++第三篇后续接着这篇文章写,大家可以持续关注,前两篇在主页4. 类和对象4.1 类和对象的基本概念4.1.1 C和C++中struct区别c语言struct只有变量 c++语言struct 既有变量,也有函数4.1.2 类的封装我们编写程序的目的是为了解决现实中的问题,而这些问题的构成都是由各种事物组成,我们在计算机中要解决这种问题,首先要做就是要将这个问题的参与者:事和物抽象到计算机程序中,.原创 2020-07-31 06:39:02 · 547 阅读 · 0 评论 -
C++基础知识(二)-基本知识点及语法
整理码字不易,养成好习惯,点赞关注,你的支持就是我写下去的动力,谢谢老板。本文为C++第二篇后续接着这篇文章写,大家可以持续关注,上一篇在主页3. C++对C的扩展3.1 ::作用域运算符通常情况下,如果有两个同名变量,一个是全局变量,另一个是局部变量,那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。 //全局变量 inta =10; voidtest(){ //局部变量 inta =20; //全局a被隐藏 ...原创 2020-07-30 06:59:04 · 520 阅读 · 0 评论 -
C++基础知识(一)-初识,概述
整理码字不易,养成好习惯,点赞关注,你的支持就是我写下去的动力,谢谢老板。本文为C++第一篇后续接着这篇文章写,大家可以持续关注1. C++概述1.1 c++简介“c++”中的++来自于c语言中的递增运算符++,该运算符将变量加1。c++起初也叫”c with clsss”.通过名称表明,c++是对C的扩展,因此c++是c语言的超集,这意味着任何有效的c程序都是有效的c++程序。c++程序可以使用已有的c程序库。 库是编程模块的集合,可以在程序中调用它们。库对...原创 2020-07-30 06:52:28 · 361 阅读 · 0 评论 -
python正则表达式re.match和re.search
re.match和re.search简介re.match函数语法:re.search(pattern,string,flags=0)re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 none。re.search函数语法:re.search(pattern, string, flags=0)re.search 扫描整个字符...原创 2019-11-30 20:33:40 · 295 阅读 · 0 评论 -
使用python完成的一个烟花小程序
'''FIREWORKS SIMULATION WITH TKINTER*self-containing code*to run: simply type python simple.py in your console*compatible with both Python 2 and Python 3*Dependencies: tkinter, Pillow (on...原创 2018-10-07 08:27:34 · 17304 阅读 · 5 评论 -
请使用迭代查找一个list中最小和最大值,并返回一个tuple(Python)
from collections import Iterable, Iteratordef g(): yield 1 yield 2 yield 3print('Iterable? [1, 2, 3]:', isinstance([1, 2, 3], Iterable))print('Iterable? \'abc\':', isinstance...原创 2018-10-06 08:59:16 · 859 阅读 · 0 评论 -
Java中Scanner类的使用
Java Scanner 类java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。下面是创建 Scanner 对象的基本语法:Scanner s = new Scanner(System.in);接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,...原创 2018-11-23 09:07:46 · 247 阅读 · 0 评论 -
Java判断字符串是否相等及去除空格
判断字符串相等: public static void main(String[] args) { // TODO Auto-generated method stub String name = new String("Jack"); String dbValue = new String("Jack"); System.out.println(name==dbVal...原创 2018-11-21 13:36:42 · 5415 阅读 · 0 评论 -
Java开发环境的搭建
首先我们得搞明白两个概念,一个是JDK,一个是jre;JDK就是java的开发工具集,顾名思义就是你做开发用的,其中包括javac,也就是java compiler等。jre(java runtime environment),就是java程序的运行环境。你所写的java程序在经过javac编译后会形成字符行文件,这个java的中间文件,计算机是看不懂的,而这个文件是给jvm(java的虚拟...原创 2018-11-20 18:53:43 · 166 阅读 · 0 评论 -
听说你还没上过Reactor模式,那还等神马,客官来呀!
大家好,从今天开始,我将定期写一些知识分享,把自己在前后端学习过程中觉得有用的知识点分享出来,大家可以关注学习,也欢迎大家和我一起讨论,有问题也可以问我,一定耐心解答,我的想法就是帮助别人不要再走自己踩过的坑。文章目录Reactor模式为什么我们要学reactorReactor模式简介Reactor来也1、单Reactor单线程模型2、单reactor多线程模型3、多reactor多线程模式总结Reactor模式reactor模式就是反应堆模式,这个模式非常重要,无论是开发还是面试,都是非常有用的,.原创 2020-07-25 21:51:38 · 329 阅读 · 0 评论 -
从C语言异步爬虫小例子-想想异步操作
异步处理异步这个词,好像听起来简单,但真的理解起来就挺复杂的。从一个生活的例子谈起:早上有这么几件事,刷牙洗脸,上厕所,烧开水,泡面,那么现在怎么做。方案一:顺序做:假设刷牙洗脸10分钟,上厕所5分钟,烧开水5分钟,泡面3分钟,那么这样就是23分钟。方案二:先烧开水,然后上厕所,然后刷牙洗脸,然后泡面,这样就是18分钟。方案一就是程序中的同步操作,方案二就是程序中的异步思想,大概能知...原创 2020-01-16 10:56:00 · 417 阅读 · 0 评论 -
过滤器模式-Nginx是怎么用的
过滤器模式-Nginx是怎么用的过滤器模式:什么是过滤器大家应该都知道,常见的就是对自来水一层层过滤,那么抽象出来的话,就是有一个流,然后层层把关,每一次都筛选。在我们的软件设计中经常会有这样的应用,比如对一些信号的拦截,也是过滤器模式的思想。再或者一些网络框架中的中间件设计,利用中间件对数据进行处理也是过滤器思想。那么Nginx中怎么使用这种思想的,Nginx中利用过滤器来处理http的r...原创 2020-01-04 09:26:06 · 816 阅读 · 0 评论 -
红黑树应用之Linux内存管理
红黑树特性Linux内存管理有这么一句话:如果对查找效率要求过高,而且又需要平凡的去增删改操作时就应该想到使用红黑树!因为红黑树的特性就是:查找效率较高,增删效率也较高,自身是平衡的,没有AVL树强平衡,所以它在删除操作时要比AVL树优秀很多,红黑树来源于2-3树,它的五条性质都来源于2-3树,就是高度和宽度之间的博弈,而且每条性质都顺其自然。有兴趣可以研究一下,真的很有意思哦。Linux内存...原创 2020-01-02 10:50:30 · 897 阅读 · 0 评论 -
Nginx中Timer的实现-红黑树的应用
NginxTimer的实现在说主题之前先来说一下Linux中Timer的实现:在Linux中,设置定时器,是通过每次系统定时器时钟的中断处理程序来设置相应的软中断位,然后通过这个中断处理程序扫描系统中所有挂起的定时器,如果发现哪个定时器超时了就调用相应的处理函数,也就说Linux定时器是通过系统中断实现的。在Nginx中,Timer是自己实现的,而且实现的方法完全不同,它是通过一个红黑树去维护...原创 2020-01-01 20:23:58 · 1219 阅读 · 4 评论 -
Linux中线程同步,及生产者消费者模型
一、竞争与同步 当多个线程同时访问其所共享的进程资源时,需要相互协调,以防止出现数据不一致、不完整的问题。这就叫线程同步。 二、互斥量、 int pthread_mutex_init (pthread_mutex_t* mutex,const pthread_mutexattr_t* mutexattr); 功能:初始化互斥量 //亦可 pthr...原创 2018-08-05 07:57:23 · 488 阅读 · 0 评论 -
从原理到代码,线程池给你整的明明白白,带代码讲解视频
大家好,从今天开始,我将定期写一些知识分享,把自己在前后端学习过程中觉得有用的知识点分享出来,大家可以关注学习,也欢迎大家和我一起讨论,有问题也可以问我,一定耐心解答,我的想法就是帮助别人不要再走自己踩过的坑。代码视频链接: 戳这里瞅一瞅.文章目录为什么是线程池同步的方式更高效的做法更优秀的方案干掉锁把线程池的尺寸为什么是线程池先思考一下,在哪些场景下会用到多线程:阻塞调用(阻塞IO、等待资源、耗时操作)耗时的计算(复杂的计算或者继续请求等操作)高密度的任务(高并发,低延时场景)总之就是需原创 2020-07-26 17:38:47 · 290 阅读 · 0 评论 -
二叉树的遍历-递归和非递归实现
文章目录二叉树的遍历递归遍历非递归遍历总结二叉树的遍历二叉树遍历就是遍历每一个节点,比较常用的就是前中后序遍历的方式,本文介绍递归遍历和非递归遍历两种方式。前序遍历:就是先输出根节点,再左节点再右节点。中序遍历:先左节点,再中节点再右节点,如果是有序的二叉树,这种方式输出就是有序的。后序遍历:先左节点,再右节点,最后根节点。所谓的前中后就是什么时候输出或者说操作根节点。递归遍历递归...原创 2020-01-17 10:29:26 · 293 阅读 · 0 评论 -
hiredis的异步处理
Redis异步处理在使用hiredis进行编程时,比较常用的就是使用同步的方式,就是发送一条指令,然后等待结果,这样的操作如果很频繁的话就会造成程序执行比较缓慢,走走停停的感觉。所以这里我们想想能不能使用异步执行命令的方式,hiredis为我们提供了一套异步的接口。异步的思想:所谓异步就是把一些耗时的操作单独开一个线程或者进程去执行,通过这样的方式,主程序就不用去等待执行,所以就会提升速度,...原创 2020-01-15 10:02:43 · 1524 阅读 · 0 评论 -
使用zmq的多帧消息完成一个文件传输功能
zmq多帧消息zmq可以发送多帧消息,也就是说一个消息可以包含多个帧,这么说可能不太好理解。举一个例子,比如要传输一个文件,如果文件很大,这时候把这个文件传输成一个消息,这个消息肯定会是很多次的传输,那么每一次传输的就是一帧。这就不用规定特殊的协议去传输文件了,所以用zmq传输文件就不用类似ftp那样复杂的文件传输协议了。多帧消息现在可以这么处理,比如发送一个多帧消息,这个消息有五个帧,可以...原创 2020-01-13 16:09:52 · 4760 阅读 · 0 评论 -
从Thrift服务框架思考服务器框架-真的很有收获
Thrift框架底层的(I/O)模块:负责实际的数据传输,比如Socket、文件、压缩数据流等的传输。TTransport(负则传输的模块,就是底层I/O的实现):每一种传输方式都对应一个该模块,比如TSocket负则Socket通信,负责传输的对象就是Message。TProtocol:这个就是协议模块,因为对Message的传输需要统一,否则就乱了,也就是对Message进行序列化的模块...原创 2020-01-10 14:08:08 · 321 阅读 · 0 评论 -
thrift中工厂模式的使用-抽象工厂
thrift中工厂模式的使用-抽象工厂我们以一个使用开始,在thrift中server模块有这么一个类TServer,就是服务器端的主类,这个类中有这么一行:std::shared_ptr<TProtocolFactory> inputProtocolFactory_;//输入协议工厂指针可以看到,直接指明用的就是工厂模式,那么这个是怎么设计的:TProtocolFactory...原创 2020-01-09 11:15:20 · 318 阅读 · 0 评论 -
C++ 单例模式详解
文章目录C++ 单例模式详解一、单例模式:二、单例的实现思路二、懒汉模式2.0三、最推荐的懒汉模式3.0单例模板的实现:写在最后C++ 单例模式详解一、单例模式:什么是单例:在面向对象编程中,我们创建对象的过程就是创建一个类实例,一个类是可以创造很多的类实例的,所谓单例就是规定一个类就只能创建出一个实例对象,比如:打印机实例,只要有一个就行。一些使用场景:比如我们在使用数据缓冲区的时候...原创 2020-01-07 15:08:49 · 3156 阅读 · 0 评论 -
STL中的map、set(学完红黑树后的一个小总结)
树介绍树是一种很常用的数据结构,在很多地方都能看到树的应用,因为树往往可以用来优化数据查找的效率。在一些优秀的系统中就会经常用到各种树结构,比如红黑树、AVL树、B树等。红黑树的应用:原理:根节点是黑色的只有红黑节点叶节点都是黑色的nil红色节点子节点必须是黑色的对每个节点,从该节点到叶子节点路径上的黑节点数目一致,黑平衡性质以上的五个性质保证了红黑树是平衡的,所以红黑树的...原创 2020-01-01 17:49:33 · 398 阅读 · 0 评论 -
leetcode刷题笔记(二)
描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke...原创 2019-12-14 09:28:28 · 128 阅读 · 0 评论 -
Redis源码分析之sds-字符串
前言Redis中sds字符串被我啃完了,感叹一下:redis的代码写的真的是好看!关于sds的一些细节可以参考文章:http://redisbook.com/preview/sds/different_between_sds_and_c_string.html注释我都写在了代码里:sds.h:/* SDSLib 2.0 -- A C dynamic strings library *...原创 2019-12-12 10:19:38 · 815 阅读 · 0 评论 -
Libevent源码分析(三)——源代码结构及事件event
前言有了前面两节的铺垫,应该对Reactor模式和libevent中的基本流程有了一个基本的认识,接下来我们就可以分析源代码啦,不过在分析源代码之前,我们先来看一下源码结构。絮叨我在第一次把源代码下载下来的时候,一看代码,我有点懵,心想,libevent怎么这么随意,把代码文件都放在了一个文件下,也太乱了,然而并不是这样,仔细一研究,就发现,其实代码结构是非常清晰的。一起来看看吧:代码结构...原创 2019-12-11 09:15:24 · 341 阅读 · 0 评论 -
Libevent源码分析(二)——基本应用流程
前言上一篇介绍了libevent的核心,Reactor模式,那么接下来,我们就用libevent来设置一个定时器,这样就可以更好的理解Reactor模式了。设置定时器流程:我们按步骤来解释,其实步骤就是建立Reactor各部分以及建立他们关系的过程,掌握了也就基本掌握了libevent的精髓,想想就刺激:首先我们需要一个event_base的实例对象,也就是说我们需要先获得一个核心Rea...原创 2019-12-10 10:35:44 · 158 阅读 · 0 评论 -
Libevent源码分析(一)——Reactor模式
前言Libevent 本身就是一个Reactor,所以在分析Libevent之前,搞清楚Reactor是什么就非常重要了。Reactor的事件处理机制在服务器这一类事件驱动的应用中,如果不采取一定的策略,就必须时刻准备着处理多个同时到来的请求,那么就会浪费Cpu资源。那么我们应该怎么做才能良好的解决这一问题呢?答案就是采用事件驱动。我的理解就是:**程序并不需要一直轮询有没有待处理的消息,...原创 2019-12-10 09:13:03 · 240 阅读 · 0 评论 -
C++设计模式之代理模式--通俗易懂
前言代理模式属于设计模式中的构造型设计模式之一,又叫结构型设计模式,它可以为其它的对象提供一层代理机制,就是要访问其它对象不是直接去访问的,而是统一由代理类负则。你们肯定也听过代理服务器的嘛,比如翻墙,就是提供一层中间机制。模式的结构这张图就能很形象的说明结构了:subject(抽象主题角色):真实主题与代理主题的共同接口。RealSubject(真实主题角色):定义了代理角色所代表的...原创 2019-12-06 10:37:07 · 278 阅读 · 0 评论 -
搞不清函数传参方式——看这里喽
前言现在有很多的语言,我所学习过的有python、java、C/C++、JavaScript等,即使已经学习了不少的语言,有时候也会被函数的传参方式给搞晕了,本文主要说明一下python的传参方式,并简单说明与C/C++的不同之处。Python传参方式说明def test(num,_str,_list): num = 10 _str = "aaa" _list =...原创 2019-12-03 08:53:52 · 162 阅读 · 0 评论 -
C++内存管理,看这就够了
前言对于C/C++这样自己管理内存的语言,搞清楚如何去管理内存是很重要的,我觉得管理内存其实也没那么难。在C++中有两种思路,要不自己去管理内存,要不使用智能指针,当然,后一种是C++后来版本加进去的,也是为了让C++变得更加容易和安全。内存分配想要搞清楚内存管理,我们先得搞清楚内存是如何分配的,或者说分为哪几块。栈: 程序种执行的函数内的局部变量都是在栈上面创建的,函数执行结束这些存储...原创 2019-12-02 09:14:07 · 255 阅读 · 0 评论 -
c++实现md5加密
MD5.h#ifndef MD5_H#define MD5_H/* Parameters of MD5. */#define s11 7#define s12 12#define s13 17#define s14 22#define s21 5#define s22 9#define s23 14#define s24 20#define s31 4#define...原创 2018-10-18 14:23:52 · 361 阅读 · 0 评论 -
编程时与内存相关问题的总结(内存碎片、内存泄漏等)
1、程序所占用系统内存分为哪几个部分代码段:二进制的指令只读段:字符串字面值、常量全局数据段:初始化的静态变量、全局变量静态数据段(bss段):末初始化的静态变量、全局变量,在程序执行时会被清理为0。堆:由程序员管理 足够大(理论上可以是物理内存的极限),数据的释放受控制,可能会产生内存泄漏和内存碎片。栈:由操作系统管理 大小有限(栈崩溃),数据的释放是不受控制的,栈内存几乎不...原创 2018-09-04 17:25:22 · 855 阅读 · 0 评论 -
Qt项目实战二(2048小游戏加炸弹的纯代码实现)
这个程序由于我中间丢失过代码,所以构思稍微有点混乱,算法和主体部分放在了game类中实现。数据保存,只存了分数,并且也为做优化,所以有瑕疵。总体分为初始界面,游戏界面,数据保存三块。不多说上代码:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include "game.h"#incl...原创 2018-09-01 16:06:54 · 1055 阅读 · 1 评论 -
Qt网络通信实战(聊天室小项目TCP实现)
一、UDP与TCP的区别用一个表格来显示这两者的区别比较项 TCP UDP 是否连接 面向连接 无连接 传输是否可靠 可靠 不可靠 流量控制 提供 不提供 工作方式 全双工 可以是全双工 应用场合 大量数据 少量数据 速度 慢 快 我们这里采用TCP...原创 2018-09-01 15:43:51 · 4298 阅读 · 5 评论 -
Qt简介
(一)Qt是什么?Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。 Qt是面向对象的框架,使用特殊的代码生成扩展(...原创 2018-08-29 22:19:01 · 2384 阅读 · 0 评论 -
企业信息管理项目的总结
首先如果大家想要代码我已经更新到码云了:https://gitee.com/DaChao0426/project2 刚学习完c++后,花了大约两天的时间写了这个项目,其实本以为,大半天就够了,由于使用的是普通的文件读写,所以在写的时候遇到了不少坑,不过经过耐心地分析,调试,最后成功完成了这个项目!在这中间,有很多波,已经有点难受了,确实写得有点毛躁。不过每写一次项目真的会取得很大的进...原创 2018-08-16 16:28:19 · 458 阅读 · 0 评论 -
C++ String类的构造函数、拷贝构造函数以及字符串相加输出运算符的重载实现
我们知道在c++中的字符串有自己的库,在使用时,只需要添加string头文件即可,而且,c++中的字符串更为灵活,使用了类来封装字符串,比起c语言对字符串的操作,c++简直是随心所欲,我们通过自己封装string类的构造函数,拷贝构造函数,以及输出,赋值等来体会一下,string库的实现。下面先给出代码:#include<iostream>#include<stdli...原创 2018-08-13 19:11:45 · 659 阅读 · 0 评论