自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

走在成长的路上

GIT: https://github.com/treeforest

  • 博客(81)
  • 资源 (28)
  • 收藏
  • 关注

原创 SSL/TLS

SSL/TLS一、SSL/TLS 是什么?SSL/TLS的历史何处使用 TLS?为什么需要 TLS?TLS 如何工作?TLS 同时使用对称和非对称加密,为什么不只使用一个?对称加密(Symmetric Cryptography)1、TLS Handshake握手发生了什么?2、为什么需要握手?3、TLS使用什么加密算法来保护数据?4、为什么我们需要数字证书?5、为什么需要由证书颁发机构签名?6、什么是数字签名,如何生成?一、SSL/TLS 是什么?SSL(Secure Socket Laye

2021-01-26 17:13:44 1285

原创 Golang优雅初始化结构体

所谓优雅,即能够让扩展性更好,便于在后期扩展的时候,减少开发时间,以及更加易于添加功能。具体的实现,就是一次对于闭包的灵活使用(阅go-micro)。从示例代码main.go、service.go、options.go的实现来说明。main.gopackage mainfunc main() { srv := NewService( Name("golang"), Age(9)...

2018-12-02 18:01:53 8272 1

原创 Golang队列中间件开发总结

目前很多框架中都存在消息队列的中间件,例如ActiveMQ,RabbitMQ,ZeroMQ,Kafka等,基本都是封装好,足够我们使用。但是,我们如何自己去实现一个消息队列中间件呢? 由于公司需求,进行了golang实现消息队列中间件的开发,这里做一个总结,把自己的一个想法和实现的经验分享给大家,非个人开发没有源码提供,如有不足多多指教。 主要内容包括:队列服的作用与特性,什么试试有状态与无状...

2018-09-03 00:38:48 6890 1

原创 Ghost之远程终端管理

主要分析,客户端连接上主控端后,主控端主动要求进行终端管理后的一系列实现过程。一、主控端发起远控申请指令COMMAND_SHELL1、点击“终端管理”按钮后,主控端获取要进行远控的客户端(这里我习惯称为客户端,也有人称被控端为服务端)连接上来的套接字,然后向该客户端发送指令COMMAND_SHELL二、客户端对收到的远控申请处理1、客户端的工作线程WorkThread收到主控端...

2018-05-23 00:04:13 1797

原创 VSTO(C#)对Word开发积累

VSTO(C#)对Word进行目录生成、Word页面属性设置、Word字体格式设置等

2018-05-05 20:51:56 8857 4

原创 截图并使用libjpeg库压缩BMP为JPG与将JPG转换为BMP

使用libjpeg实现了对截屏后的BMP图片进行压缩为JPG格式和将JPG转换为BMP格式的操作。避免大家也碰壁,拿出来和大家分享。

2018-01-14 21:28:33 1891 1

原创 P2P打洞服务器与客户端

本文讲解了P2P打洞的原理、P2P服务器的实现、P2P客户端的实现,源码链接

2018-01-07 00:54:10 18772 12

原创 脱壳笔记-寻找OEP方法总结

详解手动跟踪法、ESP定律方式、内存二次断点法的原理与使用

2018-01-03 21:53:02 7292 2

原创 PE格式解析-区段表及导入表结构详解

PE格式区段表与导入表的结构详解

2017-12-21 02:29:32 16049 1

原创 IOCP网络模型

IOCP网络模型,相关API详解,示例源码具体实现过程的流程图解释,包含具体源码

2017-11-30 01:08:01 13384 5

原创 基于完成例程的重叠I/O网络模型

详细解释了网络重叠I/O模型中的完成例程,对相关难以理解的APi进行释义,附有详尽的代码。不足之处望大家多多指正,以促进共同进步

2017-11-01 02:12:23 2252

原创 设置 wsl 桥接模式

设置 wsl 桥接模式

2023-11-20 16:32:10 853

原创 PAT1012 数字分类

1012 数字分类

2023-04-26 11:44:19 123

原创 PAT1003 我要通过!

PAT 1003 我要通过!

2023-04-26 11:25:55 136

原创 PAT1020 月饼

PAT 1020 月饼

2023-04-26 00:05:07 72

原创 TLS原理及实现

概念对称密钥既可以加密也可以解密的密钥非对称密钥密钥分为公钥和私钥两部分,公钥用于加密和验证签名,私钥用于解密和签名证书可理解为身份证,证书由证书机构颁发(可信第三方),证书中包括证书所有者的相关属性信息,并且证书可由证书机构的公钥进行验证,杜绝身份伪造。证书链由根证书衍生而来,例如根证书R给A颁发证书,A给B颁发证书,B给C颁发证书,最终R->A->B->C形成一条证书链。证书链确保了次级证书的合法性,并允许验证,验证的过程是逆向的C->B->A

2022-05-28 11:25:11 3088

原创 Gossip实现

gossip实现

2022-04-10 15:21:36 405

原创 半同态算法Paillier实现与性能测试

paillier

2022-04-10 14:28:00 600

原创 base58 base58check 编码

base58、base58check编码的go实现

2022-03-30 00:00:00 1236

原创 Merkle Tree

基于比特币中merkle tree功能的实现

2022-03-28 00:15:00 2322

原创 Hash 算法性能测试

测试hash算法性能

2022-03-26 10:10:41 988

原创 算法与数据结构

算法与数据结构

2021-09-08 11:46:41 68

原创 docker-compose 搭建 etcd 集群

搭建etcd集群准备工作安装好 docker 与 docker-compose下载etcd镜像:docker pull bitnami/etcd:latest最好关闭防火墙。如果遇到外部主机能ping通linux,但是不能访问docker容器的情况,需要开启防火墙,然后再关掉防火墙,最后重启docker即可。docker-compose.ymlversion: "3.0"networks: etcd-net: # 网络 driver: bridge

2021-04-06 19:56:20 2211 4

原创 优化缓存中锁机制带来的开销

在实现基本的FIFO、IFU、LRU或其他的淘汰算法的基础上,为了保证其并发安全,可以采用读写锁的方式。但在大量并发写的情况下,锁机制的开销将会明显的体现出来,这将会成为其中的瓶颈。为了达到足够的高性能,就必须解决并发情况下锁机制的开销。本文将讲解如何通过分片的思想来缓解并发下锁机制的开销。分片思想这里暂且将实现的缓存对象简单看作一个基于读写锁的map,当前其瓶颈即为并发时的锁开销。并发的情况是无法避免的,那如果将一个map下的开销分担到多个map下,这样锁机制的开销将会减小。其主要思想是:将缓存的数

2021-04-02 21:00:38 215

原创 grpc-gateway返回json时由于omitempty标签忽略默认值问题

问题由于json的omitempty标签,导致序列化时默认值会被忽略,出现如下返回结果:{ "status": {},}期待的返回结果:{ "status": { "code": 0, "message": "" },}早期的解决方法m := &runtime.JSONPb{OrigName: true, EmitDefaults: true}gwmux := runtime.NewServeMux(runtime.Wit

2021-03-27 11:48:27 1629 2

原创 Unbuntu配置JAVA开发环境

本文采用的离线的安装方式,所使用到的相关版本:JAVA JDK版本:15.0.2IntelliJ IDEA版本:2020.3.2安装 JAVA SDK下载SDKhttps://www.oracle.com/java/technologies/javase-downloads.html点击“JDK Download”将jdk-15.0.2_linux-x64_bin.tar.gz解压到/usr/local/jdk-15.0.2(或者解压后拷贝到/usr/local/jdk-15.0.2,

2021-03-17 08:04:18 131

原创 gRPC的通信方式概述

gRPC一共有四种通信方式:UNARY:一元通信方式CLIENT STREAMING:客户端流通信方式SERVER STREAMING:服务端流通信方式BIDIRECTIONAL STREAMING:双向流通信方式UNARY在这种情况下,为最简单的客户端与服务端模式,客户端发送一个消息后,阻塞等待服务端回复一个消息。CLIENT STREAMING在这种情况下,客户端将发送多个消息流,而后服务端回复一个消息。SERVER STREAMING在这种情况下,客户端仅发送一个消息,而后服务

2021-03-03 11:27:04 1570

原创 protocol buffers

关于 protocol buffers(protobuf),可以查阅 protocol buffers 官方文档,一切你想知道的如何安装、如何编译 .proto 文件、相关的语法都有详细的说明。注意:由于技术的更新迭代快,有可能对官方文档的更新不是那么及时,可能官方文档会导致一定的误导(亲历)。本文的记录有限,其中包括:了 protoc 工具在安装时的失败复盘、proto 常用语法,以及关于 GRPC 生成 golang 存根。一、环境配置protobuf 对应的工具为 protoc,即首要是安装

2021-02-06 15:11:36 122

原创 使用openssl创建并签署SSL/TLS证书

希望在生成 SSL/TLS 证书之前,您已经安装有 openssl 以及对 SSL/TLS 有了初步的了解。概述本文主要讲述CA的私钥和x509自签名证书的生成,服务器/客户端的私钥和CSR的生成,以及CA对服务器/客户端的CSR签名操作。初始文件包括server-ext.cnf、client-ext.cnf以及gen.sh,相关内容如下:server-ext.cnfsubjectAltName=DNS:*.study.com,DNS:*.study.org,IP:0.0.0.0client-e

2021-01-28 17:31:36 2028 2

原创 Hyperledger Fabric源码解析 Gossip-Emitter

分批发射器 batchingEmitter分批发射器的实现是为了解决来一条数据就处理一次所带来的效率问题。采用的思想是,将收到的数据累积到一定数量后再进行处理或者定时器超时进行就处理。我更喜欢将分批发射器叫做分批处理器。接口定义type batchingEmitter interface { // Add 添加要批处理的消息 Add(interface{}) // Stop 停止组件 Stop() // Size 返回要转发的挂起消息的数量 Size() int}batchin

2020-11-30 22:24:58 211

原创 ERROR: Package ‘pyrsistent‘ requires a different Python: 2.7.5 not in ‘>=3.5‘

注意看错误的上两行:指出我的python_version < "3"该条命令没错,但是接下来的Downloading产生了错误,也就是Collecting pyrsistent>=0.14.0失败,也就是说你的pyrsistent版本不是>=0.14.0的,需要更新下。查询当前的版本:pip install pyrsistent==?更新pyrsistent的版本:pip install pyrsistent==0.15.0...

2020-10-24 09:41:01 8715

原创 BTC-密码学原理

简介:本文主要介绍了关于1、密钥比特币中生成1.1 SHA-256 性质collision resistance:按照鸽笼原理,必然有两个输入映射到同一个地址,碰撞是客观存在的(x!=y, H(x)=H(y))。虽然碰撞是客观存在的,但是SHA-256碰撞的几率比地球爆炸还小。注:没有哪个hash函数能被数学证明是collision resistance,例如md5。hiding:hash函数的计算过程是单向的,不可逆的。collistion resisitance 与 hiding 可用于 d

2020-10-15 20:36:47 1015 1

原创 VS2015 使用 protocbuf-2.6.1安装及使用

VS2015 使用 protocbuf-2.6.1安装及使用一、安装二、使用一、安装1、下载:https://github.com/protocolbuffers/protobuf/releases/tag/v2.6.12、解压。3、进入vsprojects,双击 extract_includes.bat 生成 include 目录。4、点击 protobuf.sln,对(libprotobuf、libprotobuf-lite、libprotoc)点击菜单的项目—属性—配置属性—C/C+±–预处

2020-06-18 16:39:05 394

原创 MYSQL操作类

前序:没有找到以前封装的mysql的操作类,重新又写了一遍,着实让人头疼。希望能帮到大家。关于相关的配置:1、将你安装的MYSQL的include目录和lib库,分别加到(以VS举例)VS的包含目录于库目录(属性->VC++ 目录)2、将libmysql.dll拷贝到你的工程目录下sqlnet.h#ifndef __SQLNET_H#define __SQLNET_H#ifd...

2020-03-13 20:40:21 218

原创 线性回归

曾经有一段往事…某一天,我想去中国银行贷款,特此向周边的一些朋友询问了下他们的贷款情况,并做了张如下的表:工资年龄额度40002520000800032600006000273400075003350000120003980000通过上述的数据,我想预测下:如果我去银行贷款,银行会贷多少给我呢?如果我要贷50000,银行能...

2018-12-16 23:36:23 359

原创 简单插件式编程实现

最近接触到插件式编程,感觉是一种不错的思想。分享给大家两种实现Golang的插件式编程C++的插件式编程Golang的插件式编程实现原理Golang的插件式实现主要依赖于自身的断言机制和接口实现。通过统一插件的接口后,规定实现的接口必须满足指定接口的实现,然后注册到插件管理类,外部使用时直接通过插件管理对象实现调用指定的插件。注意:插件式编程与插件是有区别的,插件式编程是一种规...

2018-12-02 13:46:59 2821 1

原创 Golang洗牌算法

两种洗牌算法:1、Fisher-Yates2、Knuthtype Handle struct {}Fisher–Yates 洗牌算法// Fisher-Yates正向func (h *Handle) shuffle_FisherYates_Forward(cards []uint32, r *rand.Rand) { var size int = len(cards) var ...

2018-11-04 19:43:39 1669

原创 结合CGo对切片slice简单实现

在对自定义slice实现的过程中,体会到以下两点: 1、Go封装得确实比较好,但是Go中的指针也因此受到了大大的削弱,在Go中指针平常也就只能用来做引用传递。 2、对于Cgo的资料太少了,为此买了两本书,也就一本有略微提及。我希望你能从代码中找到你对CGo存在的疑问和解决办法。不多说,上代码package main/*#include &lt;stdio.h&gt;#inclu...

2018-08-06 23:48:19 1330

原创 面试总结一

1、基类的虚构函数为什么使用virtual?这种虚析构函数寻在的意义? virtual虚函数是动态绑定的基础(这很重要)!在动态绑定的过程中,我们使用的是基类的指针指向子类(例如B派生于A,A *pA = new B();),如果没有使用virtual实现动态绑定,在进行delete A;时,不会调用B的析构函数,如果B的析构函数中写有释放内存的源码,此时可能就会造成内存的泄漏。 1)何为动态...

2018-07-17 20:15:30 197

原创 红黑树

这里主要讲解红黑树的源码实现,并附上源码。具体参考书籍为《算法导论》首先,我们知道红黑树也是树的一种,所以在程序的设计上,它的大部分方法完全能够继承自普通树(父类)的方法,父类的存在可以使得在对树这种数据结构了解的同时,同时也注意程序的高聚合与低耦合性。原先在对二叉树与红黑树数据结构实现的时候,都是分为一个二叉树实现类,一个红黑树实现类,两个类中,往往好多方法都是重用,以至于这里copy过去,...

2018-07-06 22:05:30 177

模拟实现了TLS通信过程的全流程

原理可概括为:client通过验证server身份并分享会话密钥,然后通过只有server可client知道的会话密钥进行通信。全流程如下(client建立与server的TLS通信): 1. client验证server证书合法性,client对server的可信验证是通过CA证书链完成。 2. client验证server证书合法后,client本地生成会话密钥(对称密钥)sk。 3. client使用server的公钥对会话密钥加密后的数据m并发送给server。 4. server收到加密后的数据m后,使用自己的私钥解密m并获得会话密钥sk。 5. server使用会话密钥sk对“连接建立好的消息”加密并返回给client。 6. client使用会话密钥sk解密后知晓连接已建立。 7. client与server通过会话密钥进行安全传输。

2022-08-11

protocbuf-2.6.1.zip

protobuf-2.6.1源码以及VS2015编译好的protobuf库相关东西,以及实例。如果你是其他编译器,请按照其中的方法使用源码自行编译。

2020-06-18

AC自动机

基于字典树的ac自动机,自己前期的实现,具有源码参考,用于查找可屏蔽应用

2019-03-06

vs2010-vs2017小番茄

Assist for VS2010 ~ VS2017 破解版

2018-12-02

插件式编程C++、Go示例

C++与Golang对插件式编程的实现示例,旨在了解插件式编程的思想,共同进步

2018-12-02

红黑树简单实现

主要实现有普通树的生成、查询方法,与继承于普通树的二叉树、红黑树的实现。

2018-07-06

Office内置图标

本资源为对Office内置图标资源的获取,便于进行相关的开发需要。

2018-04-24

VSTO对Word的开发资源

关于使用VSTO进行的对于Word开发的一些技术收集,包含常用的功能代码。

2018-04-21

学生管理系统

包含服务端与客户端的学生管理系统,具有数据库管理学生信息

2018-03-31

libjpeg压缩bmp为jpg与将jpg解压缩为bmp

实现了对截屏后的BMP图片进行压缩为JPG格式和将JPG转换为BMP格式的操作。避免大家也碰壁,拿出来和大家分享。

2018-01-14

P2P打洞服务器

服务端采用IOCP网络模型,客户端采用多线程。实现了超时重发、差错检测、明文的MD5加密、确认包的实现。希望大家共同进步!

2018-01-06

Boost智能指针示例源码

本代码为C++类库boost实现的示例源码,使用VS2015编译,代码中有相关的注释,如发现有问题,请不吝指教,谢谢!

2017-11-15

epoll网络模型

本代码采用C++实现,在Unbuntu下开发,使用g++编译,附有makefile,代码中有相关的注释,如发现有问题,请不吝指教,谢谢!

2017-11-06

基于事件通知的重叠IO模型

本代码采用C++实现,在VS2015下开发,可以直接运行,代码中有相关的注释,如发现有问题,请不吝指教,谢谢!

2017-11-03

cocos2dx教程

一系列cocos2dx相关的pdf书籍文档,方便热爱cocos2dx的同学学习

2017-11-02

汇编程序设计教程

汇编程序设计教程,方便大家学习的chm文档,共同进步 。

2017-11-02

基于完成例程的重叠IO模型

初步封装的基于完成例程的重叠IO模型,附有注释,希望对学习网络模型的同学有所帮助,共同进步

2017-11-02

select网络模型-Linux

linux网络模型源码实例,希望对大家有所帮助,共同进步

2017-11-02

WSAEventSelect事件选择网络模型

详细介绍了事件网络模型相关的API,富有详细的说明文档,深刻的对模型的易错点讲解,附上了详细的实现的流程图

2017-10-28

MFC剪切板实现进程通信

MFC通过剪切板实现进程间的通信,MFC窗体实现,详细注释,方便学习,共同进步

2017-10-27

windows命名管道

windows命名管道,包含服务端与客户端。方便大家学习,共同进步

2017-10-27

WPF显示STL格式文件

使用WPF对3D打印格式STl进行显示,实现了对图形的旋转与缩放,富有详细注释

2017-10-26

重复文件删除器

删除指定文件夹下的重复文件,使用MFC界面,CRC进行重复文件的校验

2017-10-26

线程池源码

关于线程池的使用于封装,富有详细的注释,方便大家学习,共同进步

2017-10-26

c++实现删除文件夹与文件的小工具

删除文件夹,删除文件,使用win32程序,通过对文件树的遍历,删除文件夹或文件

2017-10-26

ping的c++的实现

实现了网络编程中的ping的实现,有关于IP头,ICMP的封包,了解ping中的数据包的状态

2017-10-26

本地端口监控(win32)

使用c++实现对本地端口的监控,代码已测试成功运行。。。

2017-10-26

select网络模型

详细讲解了select网络模型,包括select模型执行的原理,富含有整个select模型的流程图,关于select模型的优点缺点,内在的运行原理。欢迎各位挑错,共同进步

2017-10-25

空空如也

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

TA关注的人

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