Wzning0421
码龄6年
  • 673,254
    被访问
  • 144
    原创
  • 1,141,050
    排名
  • 269
    粉丝
关注
提问 私信

个人简介:I'm always learning.

  • 加入CSDN时间: 2016-04-23
博客简介:

hanzhen7541的博客

查看详细资料
个人成就
  • 获得605次点赞
  • 内容获得194次评论
  • 获得2,096次收藏
创作历程
  • 1篇
    2021年
  • 43篇
    2020年
  • 55篇
    2019年
  • 35篇
    2018年
  • 15篇
    2017年
成就勋章
TA的专栏
  • 设计模式
    7篇
  • 操作系统
    13篇
  • 数据库
    2篇
  • 编译原理
    8篇
  • docker
    1篇
  • Qt
    14篇
  • MySQL
    3篇
  • 计算机网络
    37篇
  • 文件读写
    2篇
  • 注册登录
    1篇
  • 编解码
    4篇
  • 数据结构
    12篇
  • C/C++
    36篇
  • 算法
    24篇
兴趣领域 设置
  • 人工智能
    语音识别机器学习深度学习图像处理nlp
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Linux c++ udp按包发送接收文件

我最近写一个项目的时候需要涉及到udp传输文件.网上找了找发现没什么合适的,那么我就写了一个自己的供参考.文件分成两类:第一类是文本文件,第二类是二进制文件.他们的文件读写是不一样的.所以我提供了两种文件的读写,传输方式.首先看源端DataSource的main.cpp:#include "UDPSocket.h"#include "Package.h"#include <unordered_map>#include <iostream>#include &l
原创
发布博客 2021.01.03 ·
896 阅读 ·
1 点赞 ·
5 评论

String类的实现

#include <iostream>#include <cstring>using namespace std;class String{public: // 默认构造函数 String(const char *str = nullptr); // 拷贝构造函数 String(const String &str); // 析构函数 ~String(); // 字符串赋值函数 String&.
原创
发布博客 2020.09.03 ·
115 阅读 ·
0 点赞 ·
0 评论

链表归并排序与翻转

我在链表排序和翻转上面总是踩坑,在此记录一下。链表归并排序:#include <iostream>#include <algorithm>#include <vector>#include <unordered_map>#include <unordered_set>#include <string>#include <map>using namespace std;struct ListNode
原创
发布博客 2020.08.25 ·
114 阅读 ·
0 点赞 ·
0 评论

MYSQL MVCC 实现机制

1. MVCC简介1.1 什么是MVCCMVCC是一种多版本并发控制机制。1.2 MVCC是为了解决什么问题?大多数的MYSQL事务型存储引擎,如,InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制.事实上,他们都和MVCC–多版本并发控制来一起使用. 大家都应该知道,锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用MVCC,能降低其系统开销.1.3 MVCC实现MVCC是通过保存数据在某个时间点的快照来实现的. 不同存储引擎的M
转载
发布博客 2020.08.22 ·
76 阅读 ·
0 点赞 ·
0 评论

C++ 实现一个简单内存池

在使用内存池进行内存管理之前,通常使用new/malloc或者delete/free来申请或者释放内存。在这个过程中,系统要首先查找内部维护的内存空闲块表,并且需要根据比如LRU等内存分配算法找到合适大小的空闲内存块。如果该空闲内存块过大,还需要切割成已分配的部分和较小的空闲块。然后系统更新内存空闲块表,完成一次内存分配。类似地,在释放内存时,系统把释放的内存块重新加入到空闲内存块表中。如果有可能的话,可以把相邻的空闲块合并成较大的空闲块。默认的内存管理函数还考虑到多线程的应用,需要在每次分配和释放内存时加
原创
发布博客 2020.08.09 ·
368 阅读 ·
0 点赞 ·
0 评论

https 非对称加密

https相当于在http和tcp之间加上了一层ssl加密,但是要注意的是,https协议在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。这是为什么呢?因为非对称加密的加解密效率是非常低的,而 https的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的。首先我们需要对对称加密和非对称加密有所了解。对于对称加密,比如说常见的移位替换等方法,只要知道了加密过程,就一定知道解密过程,因为加密算法比较简单,那么根据加密算法就能反推出解密算法,也就是双方的秘钥是一样的,这
原创
发布博客 2020.08.01 ·
525 阅读 ·
1 点赞 ·
0 评论

牛牛爱66

今天面试了一道算法题,这到算法题我写的有问题,我在这里记录一下。众所周知,牛牛不喜欢6这个数字(因为牛牛和66发音相近)所以他想知道,不超过n位十进制数中有多少个数字不含有连续的6(从1开始算的)输入只包含一个正整数n(1<=n<20),输出一个整数,表示不超过n位十进制数中有多少个数字不含有连续的6。比如输入1,输出10: 1,2,3,4,5,6,7,8,9,10 这十个数字中都满足条件输入2,输出99,因为只有66不满足条件。分析:我是用动态规划的方式来写的,首.
原创
发布博客 2020.06.30 ·
410 阅读 ·
1 点赞 ·
0 评论

C++ 泛型编程

泛型编程就是独立于确定的类型的方式编写代码,需要提供具体程序实例所操作的类型或者值,而不是之前确定的。比如在stl容器中,vector<int>, vector<char> vector<double> 用的是不同的数据类型,但是声明和调用的语句却是一样的。这就是泛型--建立通用的模具以提高复用性。 泛型的一个关键就是模板。通过template关键字来声明使用模板,通过typename来定义模板使用的是哪种类型。基本的模板有两种:函数模板...
原创
发布博客 2020.06.28 ·
251 阅读 ·
0 点赞 ·
0 评论

设计模式之桥接模式

我们考虑这么一种问题:假设手机有多种分类:折叠式,翻盖式,滑盖式等等。每一种模式下面有多个手机品牌,他们都能实现打开手机等操作。也就是说功能划分如下图所示: 我们能看到每种手机下面有多个手机品牌,每个品牌都能实现自己的call操作。那么这么设计很直白,但是有一个问题:当手机的模式增加的时候,除了增加这一种样式,还要在这种样式下面增加各种手机品牌;当我们增加一个手机品牌,也要在每一种手机样式下面添加,这也就造成了类爆炸的问题。并且,当增加手机...
原创
发布博客 2020.05.23 ·
121 阅读 ·
0 点赞 ·
0 评论

设计模式之适配器模式

适配器模式实际上是将某个类的结果转换成客户端期望的另一个类的接口表示,让原本因为接口不匹配的不能一起工作的两个类可以协同工作,就像适配器一样。适配器模式主要分三类:类适配器模式,对象适配器模式和接口适配器模式。对于用户的角度,看不到被适配者,也就是被适配的类是无感知的,从而实现了解耦。用户收到的反馈就是感觉只是和目标接口交互。1. 类适配器模式 比如说220V电压通过适配器转换成5V可以作为手机的输入。那么被适配者就是220V电源,适配者就是这个5V手机。 ...
原创
发布博客 2020.05.21 ·
161 阅读 ·
0 点赞 ·
0 评论

设计模式之建造者模式

我们考虑这么一个问题:建房子。假设建房子有三个步骤:修地基,砌墙,砌屋顶。有很多种类的房子,但是建造的过程是相同的:那么假设想用一个传统方式进行建房子:首先定义一个commonHouse继承自基类AbstractHouse并且重写修房子的三种方法。然后有一个客户端去调用这个commonhouse的方法实现:package com.builder;public abstract class AbstractHouse { //打地基 public abstract void bu
原创
发布博客 2020.05.16 ·
115 阅读 ·
0 点赞 ·
0 评论

设计模式之工厂模式

简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。创建对象的过程由工厂实现。假设我们有一个pizza类,对应两种pizza分别是CheesePizza和GreekPizza.他们都有四种方法:prepare,bake,cut和box.每种pizza对应的方法不同:package com.factory.simplefactory.pizzastore.pizza;import org.omg.Messaging.SYNC_WITH_TRANSPORT;public abstract
原创
发布博客 2020.05.15 ·
89 阅读 ·
0 点赞 ·
2 评论

设计模式之原型模式

原型模式适用于大量创建比较复杂对象(包含各类基础类型和引用类型的类)的情况。我们知道在传统模式下,比如说一只羊,我们定义羊sheep的各类属性如下:package com.prototype;public class Sheep { private String name; private int age; private String color; public Sheep(String name, int age, String color){
原创
发布博客 2020.05.15 ·
109 阅读 ·
0 点赞 ·
0 评论

设计模式之单例模式

单例模式就是采取一定方法保证整个的软件系统中,对于某个类只能存在一个对象实例,并且该类只能提供一个取得该对象实例的方法(静态方法)。单例模式主要有下面几种实现方式:1)饿汉式2)懒汉式(同步,双重检查,以及静态内部类)3)枚举1. 饿汉式(采用静态常量)package com.singleton.type1;public class singletonTest01 { public static void main(String[] args){ ...
原创
发布博客 2020.05.15 ·
79 阅读 ·
0 点赞 ·
0 评论

设计模式七大原则

所谓设计模式,其实是总结出了一套能够通用的软件设计规范的参考。在编写软件过程中,如何提高代码的重用性,可读性,拓展性与可靠性,这都是设计模式需要解决的问题。设计模式包含了面向对象的精髓。设计模式的原则主要有七种:1)单一职责原则:对类来说,一个类只负责一项原则,如A负责两个不同职责:职责1和职责2,当职责1的需求改变而改变A的时候可能造成职责2错误,所以需要把类A分解成A1和A2.2)接口隔离原则:一个类对于另一个类的依赖应该建立在最小的接口上。 ...
原创
发布博客 2020.05.14 ·
175 阅读 ·
0 点赞 ·
0 评论

C++11常见新特性

1. auto关键字auto关键字起到的作用是自动类型判断。在声明变量的时候根据左值可以判断出类型并自动为此变量选择相匹配的类型。比如:#include <iostream>#include <string>#include <queue>#include <vector>#include <map>#include ...
原创
发布博客 2020.04.28 ·
94 阅读 ·
0 点赞 ·
0 评论

C++11新特性 右值引用与移动语义

右值引用作用是可以减少内存拷贝次数,从而优化性能。 首先,什么是右值?右值是一个与左值相区分的概念。左值是:既能出现在等号左边也能出现在等号右边的变量或表达式,比如int a = 5,那么a就是一个左值,因为它可以出现在等号左边被赋值,也可以在等号右边给别人赋值。右值:因为声明结束后会被销毁,所以不能放在等号左边,比如上面int a = 5;这句话的5,就是一个明...
原创
发布博客 2020.04.25 ·
259 阅读 ·
0 点赞 ·
0 评论

C++11新特性之 可变参数模板

C++ 11的可变模版参数是其新增的最强大的特性之一。通过对参数进行了泛化,可以表示从0到任意个数、任意类型的参数。我们知道对于一个模板类来说,通常只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。下面来具体说一下:可变参数模板与通常的类模板写法相似。声明可变参数模板时需要在typename后面带上省略号 ... 。写法如下:template<typename T, ty...
原创
发布博客 2020.04.25 ·
242 阅读 ·
0 点赞 ·
0 评论

C++ 自己实现一个unordered_map(hashmap)

今天面试的时候遇到面试官出了一个问题,要实现一个unordered_map. 我实现的不太好,所以面试之后重新自己整理实现了一个unordered_map,在此记录一下。首先unordered_map的底层实现是哈希表。那么对于任何一个关键key的哈希,首先需要考虑的是哈希冲突的问题,在这里应该用链表的方式解决。如果不同的key哈希成了同一个地址,那么在链表的基础上向后连接就行。然后主要实现的...
原创
发布博客 2020.04.25 ·
1147 阅读 ·
5 点赞 ·
1 评论

生产者消费者问题

生产者消费者问题是面试常见的题,如何用两个线程实现对于一个队列的生产者消费者模型呢?//这是生产者消费者模型的代码 #include<iostream>...
原创
发布博客 2020.04.14 ·
153 阅读 ·
0 点赞 ·
0 评论
加载更多