自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 收藏
  • 关注

原创 创建固定大小文件

这意味着它创建了一个大小为50MB(1024字节 * 51200 = 52,428,800字节)的文件,并且文件中的内容都是零字节。● if=/dev/zero: if代表输入文件(input file)。/dev/zero是一个特殊的设备文件,它提供无限的零值(0x00)字节流。这里test.txt是要创建的文件的名称。这将是你的交换区文件,当系统物理内存不足时,它可以被用作虚拟内存。这里设置为复制51200个块。● dd: 是一个用于转换和复制文件的命令行工具,可以用来执行低级别的数据复制操作。

2024-01-17 17:24:34 339

原创 base64相关

base64相关安全的base64解码需要用=按照4的余数补齐这是base64编码当不足三字节时的处理,不足3字节,只可能2字节和一字节两情况,base64编码后两字节的是3位64码加上一个=,一个字节的是2位64码加上两个=,安全编码的base64数据想要还原,长度除以4,此时,如果余数为2则补两个=,余数为3则补一个=,则还原为原始base64数据...

2021-05-07 11:07:32 264

原创 go语言中for使用

for i, tl := 0, len(t); i < tl; i++ { ......}for i := 0, i < len(t); i++ { ......}第一种方法要好于第二种,第一种方法只计算了一次t的len

2020-12-02 17:08:04 391

原创 gorm标签

在gorm中设置自增`gorm:"primary_key;auto_increment;not null;comment:'主键 - 自增id'"`如果还要设置type`gorm:"primary_key;type:int(11) unsigned;auto_increment;not null;comment:'主键 - 自增id'"`这时设置自增不成功,此时应把auto_increment放入type中`gorm:"primary_key;type:int(11) unsigned aut

2020-12-02 15:40:13 1610

原创 Monaco Editor自定义语言

Monaco Editor 使用安装与引入npm install monaco-editorimport * as monaco from "monaco-editor";在Vue中使用<template> <!-- <div ref="container" style="height: 100%; width: 100%"></div> --> <div ref="container" style="width: 100vw; h

2020-11-26 21:08:56 5631 4

原创 Go语言在select语句中实现优先级

原文https://www.liwenzhou.com/posts/Go/priority_in_go_select/已知,当select 存在多个 case时会随机选择一个满足条件的case执行。现在我们有一个需求:我们有一个函数会持续不间断地从ch1和ch2中分别接收任务1和任务2,如何确保当ch1和ch2同时达到就绪状态时,优先执行任务1,在没有任务1的时候再去执行任务2。func worker2(ch1, ch2 <-chan int, stopCh chan struct{}) {

2020-11-03 16:41:25 539

原创 mysql循环插入数据示例

DROP PROCEDURE IF EXISTS proc_initData;–如果存在此存储过程则删掉DELIMITER $CREATE PROCEDURE proc_initData()BEGINDECLARE i INT DEFAULT 1;WHILE i<=10000 DOinsert into mytable (字段1,字段2,字段3) value (值1,值2,值3);SET i = i+1;END WHILE;END $CALL proc_initData();$

2020-10-09 11:25:22 247

原创 go覆盖率测试

beego与gin的覆盖率测试beego的测试原文:对beego的控制器函数进行单测改进的内容:func prepareController(c *beego.Controller) { c.Ctx = &context.Context{ Request: &http.Request{URL: &url.URL{Scheme: "http", Host: "localhost",Path:"/mypath"}}, //R

2020-07-02 17:11:11 299 1

原创 React的Table使用的问题

React的Table使用的问题在使用AntDesign进行开发的过程中,遇到如下问题:在第二页选择框选中后,切换到第一页,此时第一页中和第二页选中的地方相同的地方数据也会被选中而且,此时在第二页选中的数据还是第一页的数据,并不是第二页的数据解决方法在Table中指定rowKey看文档还是不仔细QAQ...

2020-06-08 17:40:38 443

原创 知识点

知识点whereis go 找go这个命令在哪lsof -i:8080 查看8080端口是哪个进程在占用sed -i ‘/\s*#/d’ crypto-config.yaml 去除所有\s表示空格,*是正则表达式,表示0或多个,#开头的内容:w !sudo tee % 修改一个readonly的文件,在内部使用sudo命令echo...

2019-07-24 13:10:57 168

原创 sync.Once与sync.WaitGroup

sync.Once与sync.WaitGroupsync.Once实现单例模式package mainimport ( "fmt" "sync" "time")var once sync.Oncefunc main() { for i := 0; i < 10; i++ { once.Do(onces) fmt.Println("1", "---", i)...

2019-07-23 21:01:04 162

原创 排序算法

排序算法冒泡排序BubbleSort()算法:外层控制行 len(arr)-1内层控制列 len(arr)-1-i相邻数据比大小满足条件进行交换// 冒泡排序func BubbleSort(arr []int) { // 外层控制行 for i:=0; i<len(arr)-1; i++ { // 内层控制列 for j:=0; j<le...

2019-07-22 14:00:28 195

原创 二叉树

树线性表:1:1树:1:N根节点:只有后继,没有前驱子结点: 既有前驱,又有后继叶子结点:只有前驱,没有后继树的定义:互不相交的有限结点集合只有一个根结点树的特性:只有一个前驱,可以有多个后继树中可以有树(子树)树可以为空,结点0相关概念:结点的度:结点的直接后继个数树的度:先求每个结点分支数, 这些数中取max, 为“树”的度。...

2019-07-20 02:25:43 260

原创 链式栈与链式队列 Stack

链式栈 Stack栈: 受限线性表。 收该中数据类型存储特性限制。 先进后出 FILO依然是 链式存储 1:1无论压栈(入栈)、弹栈(出栈)都属于 增、删操作。选用链式存。实现链式栈,参照 单向链表(可以没有头结点,全部数据结点)数据结构type StackNode struct { Data interface{} Next *StackNode}操作方法...

2019-07-20 02:15:21 265

原创 环形链表

环形链表循环链表的方法创建链表 Create(数据)打印链表 Print()获取结点个数 Length() int插入结点 Insert(index, 数据)删除结点 Delete(index)销毁链表 Destroy()获取循环链表长度 Length()容错定义计数器 i := 0定义起始位置,记录第一个数据结点 start := node.Next循环,后移nod...

2019-07-20 02:12:39 176

原创 单向链表与双向链表

线性表的链式存储单向链表链表的操作方法创建链表 Create(数据集)打印链表 Print()获取链表长度 (数据结点的个数,不包含头结点)Length() int插入结点:头插法 InsertByHead(数据)插入结点:尾插法 InsertByTail(数据)按位置插入:InsertByIndex(数据,index)按位置删除:DeleteByIndex(index)按数...

2019-07-19 02:19:33 119

原创 go语言map底层实现

go语言map底层实现笼统的来说,go的map底层是一个hash表(HashMap),表面上看map只有键值对结构,实际上在存储键值对的过程中涉及到了数组和链表。HashMap之所以高效,是因为其结合了顺序存储(数组)和链式存储(链表)两种存储结构。数组是HashMap的主干,在数组下有一个类型为链表的元素。哈希函数会将传入的key值进行哈希运算,得到一个唯一的值。go语言把生成的哈希值一分为...

2019-07-19 01:59:30 1575 3

原创 go语言中的垃圾回收机制(gc)

go语言中的垃圾回收机制(gc)引用计数法适用于内存占用小于32kb时使用在每个对象内部维护一个整数值,叫做这个对象的引用计数,当对象被引用时引用计数加一,当对象不被引用(释放、置nil)时引用计数减一。当引用计数为 0 时,自动销毁对象。另外的缺陷是,每次对象的赋值都要将引用计数加一,增加了消耗。Mark-Sweep法(标记清除法)(go早期使用)这个算法分为两步,标记和清除。标记:...

2019-07-17 01:41:21 503

原创 go语言模拟切片的实现

go语言模拟切片的实现切片的本质// 定义切片类型type Slice struct { Data unsafe.Pointer // Go语言中的 万能指针类型. void * C语言中的万能指针. 没有具体数据类型,不能进行运算. Len int // 数据元素个数 Cap int // 可扩展的有效容量}C语言内存的使用#include <stdlib.h&gt...

2019-07-17 01:15:05 166

原创 数据结构和算法简述

数据结构和算法简述数据结构:数据组织、存储的基本形式。是算法的基础算法:具体问题解决步骤的描述(指令集的集合)算法的分类:1.分治法(分步治理):有明确目标,有既定的执行方式。(拆分,解决小问题,合并)—— 开发中应用频率最高2.最短路径法:有明确的目标,需要找寻有效地执行方式(刷完怪取找NPC交任务的路线) ——游戏开发中3.贪婪(贪心):没有明确的目标,没有有效地执行方式(阿尔法狗...

2019-07-17 00:35:36 177

原创 以太坊简介

以太坊简介基本概念以太坊是一个区块链的网络,由很多节点组成以太坊可以转账,可以做数据存储(合约)(通过交易承载)以太坊可以执行程序,程序叫做智能合约,所有节点都运行这个程序环境浏览器插件MetaMask(仅具有转账功能,合约开发需要配合Remix编译器)Remix编译器以太坊网络环境主网络花费真实的以太币测试网络私有网路公共网络Mor...

2019-07-15 00:03:59 397 1

原创 手动搭建一个fabric网络二

手动搭建一个fabric网络二启动容器根据之前编写的配置文件docker-compose-cli.yaml启动容器$ docker-compose -f docker-compose-cli.yaml up -d注意:-f docker-compose-cli.yaml是指定配置文件,如果不加会报错检测所有的节点是否正常启动了$ docker-compose -f docker-co...

2019-07-08 01:10:53 423

原创 手动搭建一个fabric网络一

手动搭建一个fabric网络一准备工作1.启动节点之前要生成账号客户端peer节点orderer节点2.将创始区块和通道信息写入配置文件,生成创世区块和通道需要的文件3.docker-compose配置文件节点的操作创建通道, 根据之前生成的通道文件将所有的peer节点加入到通道中将编写好的智能合约安装到peer节点上对链码初始化测试 - > 通过客户端读...

2019-07-07 23:50:58 982

原创 Fabric环境搭建

Fabric环境搭建部署hyperledger Fabric# 创建放置的目录,然后进入该目录,用curl下载脚本。$ cd ~ # 这里在家目录下创建放置目录$ mkdir hyperledger-fabric # 创建放置目录$ cd hyperledger-fabric不翻墙的方式:curl -sSL https://raw.githubusercontent.com/hyp...

2019-07-06 14:09:28 1114

原创 一个好用的errors包

一个好用的errors包地址:"github.com/pkg/errors"案例WithMessagepackage mainimport ( "fmt" "os" "github.com/pkg/errors")func main() { err := test1() if err != nil { fmt.Println("err:", err) }...

2019-07-05 00:35:18 959

原创 go mod

go mod配置环境变量export GO111MODULE=auto #auto 自动#on 使用mod#off 不使用mod案例在任意位置创建hello.go文件,写入如下内容:package mainimport ( "fmt" "github.com/astaxie/beego")func main() { beego.run() ...

2019-07-04 22:24:14 2282

原创 go语言模拟区块链step3

持久化存储与命令行的加入我们要把生成的区块在磁盘上做一个持久化的存储,而且要自由添加区块持久化存储思路分析改变BlockChain结构体成员和方法type BlockChain struct { db *bolt.DB //用于存储数据 tail []byte //最后一个区块的哈希值}定义一些常量,用于之后的参数const genesisInfo = "The fi...

2019-07-04 20:56:38 176

原创 fabric简介

fabric简介Fabric架构的核心包括三部分:Identity - 身份管理Smart Contact - 智能合约Ledger及Transactions - 账本和交易1.身份管理用户身份order节点对交易排序,打包peer节点存储账本需要安装链代码,处理客户端请求,管理账本数据客户端对账本数据进行读写操作fabric网络中的每...

2019-07-04 20:37:30 15129

原创 go语言模拟区块链step3

持久化存储与命令行的加入我们要把生成的区块在磁盘上做一个持久化的存储,而且要自由添加区块持久化存储思路分析改变BlockChain结构体成员和方法type BlockChain struct { db *bolt.DB //用于存储数据 tail []byte //最后一个区块的哈希值}定义一些常量,用于之后的参数const genesisInfo = "The fi...

2019-06-28 20:33:49 210

原创 gob编解码简介

gob编解码简介gob是go语言内置的编解码包,可以支持变长类型的编解码(意味着通用)与其他编解码做简单的比较:json:可读gob:通用binary.Write/Read:高效,但是编解码的数据必须是定长的proto:不可读,高效性能比较:protocol buffer >binary > gob> json示例type Person s...

2019-06-28 18:14:30 1680 1

原创 Bolt数据库简介

Bolt数据库简介Bolt是一个用Go编写的键值数据库。其目标是为了给程序提供一个简单、快捷、稳定的数据库。读写数据func main() { //打开数据库 // func Open(path string, mode os.FileMode, options *Options) (*DB, error) { db, err := bolt.Open("testDb.db", 06...

2019-06-28 17:57:57 1691

原创 go语言模拟区块链step2

工作量证明机制和工作量验证机制在这一步加入工作量证明机制和工作量验证机制实现工作量证明定义实现工作量证明的结构//实现挖矿功能 pow// 字段:// 区块:block// 目标值:target// 方法:// run计算// 功能:找到nonce,从而满足哈希币目标值小type ProofOfWork struct { // 区块:block block ...

2019-06-28 17:32:24 223

原创 go语言模拟区块链step1

go语言模拟区块链实现思路1.定义区块结构​ 第一阶段: 先实现基础字段:前区块哈希,哈希,数据​ ​ 第二阶段: 补充字段:Version,时间戳,难度值等2.创建一个区块(提供一个方法)3.定义区块链结构4.提供一个创建区块链的方法5.提供一个向区块链中添加区块的方法6.打印区块链定义区块,创建区块type Block struct { // 前区块哈希 PrevH...

2019-06-27 09:34:35 364

原创 RSA加解密算法简析

RSA加解密算法简析对于下面的公式,已知m、e、N 求出c容易,但是已知c、N、e反推n就很难了memodN=cm^e mod N =cmemodN=c这时钥匙就是一个陷门,是某种让加密逆过程很容易的信息,比如我们如果知道了一个d,使得cdmodN=mc^d mod N =mcdmodN=m那么,有me∗dmodN=mm^{e*d} mod N =mme∗dmodN=m...

2019-06-25 17:51:38 662

原创 证书与https

证书与https为什么要使用证书非对称加密存在公钥分发困难的问题直接传递公钥,容易被截取放到固定的位置,容易被替换解决办法引入第三方认证机构,CA(Certificate Authority)CA机构是一系列具有社会公信力的机构的总称,它们负责为厂商提供数字证书(有公钥),从而解决公钥分发困难的问题证书使用流程httpshttp:应用层协议,标准协议https:不是标准...

2019-06-25 11:27:34 791

原创 数字签名

数字签名解决的问题秘钥无法有效分发 ===> 不需要发送私钥无法防止否认(Ablice 和Bob都有秘钥,所以都可以否认自己发过某个消息) ==》私钥只有自己持有,无法否认无法进行第三方证明(如果需要别人帮忙认证,那么这个人就需要持有秘钥) ==》使用公钥就可以帮忙认证,公钥是对外公开的。基本流程go语言实现签名与验证签名签名流程读取私钥对传入的数据...

2019-06-25 10:06:05 183

原创 哈希hash与消息认证码

哈希hash与消息认证码哈希hash特点不可逆(原像不可逆)单向的,无法通过哈希值反推会原内容抗碰撞基数极大,无法给定义一个哈希,找到另外的内容,两者哈希值相同。唯一性(算法固定时)内容不变,哈希值不变内容改变,哈希一定改变使用场景随机口令防止篡改:消息认证码,数字签名密码存储:数据库存储密码的哈希值,而不是原文,保护用户信息go语言使用哈希算...

2019-06-24 23:49:24 3315

原创 base64编解码

base64编解码基本知识base64编码不是加解密,一种编辑数据的格式,方便传输。Base64: 64个字符的标准表0~9a - zA -Z+ /一共64个字符,任何输入的数据,都可以转换为这64个字符,进行传输base64处理之后,size变大,原因是base64算法按照6bit进行切割base64编码表3个字节的情况不足3的倍数时,会用=进行填充...

2019-06-23 23:23:06 999

原创 非对称加密

非对称加密对称加密存在的问题当通信对象很多时会面临众多秘钥的有效管理问题。(秘钥管理困难)对于一个新的数据通信对象,密钥怎样进行传输的问题。(秘钥分发困难)非对称加密加密解密使用不相同同的钥匙加密流程对称加密与非对称加密对比对称加密秘钥数量:1效率:高,适合大文件加解密非对称加密秘钥数量:2公钥:public key,任何人都可以持有。公共的私钥:...

2019-06-23 22:01:50 264

原创 go语言实现对称加密

go语言实现对称加密AES算法+CTR分组模式加密思路第一步:创建aes密码接口创建一个cipher.Block接口func NewCipher(key []byte) (cipher.Block, error)参数:秘钥返回值:一个分组接口第二步:创建分组模式ctrcrypto/cipher包func NewCTR(block Block, iv []byte) St...

2019-06-23 20:22:53 1989

空空如也

空空如也

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

TA关注的人

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