- 博客(12)
- 收藏
- 关注
原创 mico run报错: “transport: Error while dialing dial tcp 127.0.0.1:8081: connect: connection refused“
最近在学习micro框架的时候,遇到了下面这个问题:lcx@ubuntu:~/lhome$ micro run .Error creating stream: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp 127.0.0.1:8081: connect: connection refused"出现这个错误的原因是,没有登陆micro:#首先
2020-12-23 23:19:34
11363
2
原创 初等排序
一、插入排序插入排序算法将数组分为已排序和未排序部分:每次循环都会在已排序部分找到未排序部分开头元素的位置,将其插入。插入排序算法的时间复杂度为O(n²),但是如果数据是相对有序的,插入排序会非常高效。 void insertSort(int arr[],int len){ //外层循环,用于遍历未排序部分,初始时假设下标为0的部分是已排序的 for(int i=1;i<len;i++){ //存储未排序部分的开头元素 int
2020-10-24 21:38:19
212
原创 openssl中使用base64编解码
一、使用背景 最近在写一套加密接口,数字签名校验老是失败,这是因为对称加密和非对称加密后的数据是二进制的,而二进制数据在网络环境中由于途径的路由设备可能对二进制中不可见字符的处理动作不同,这样就可能会在传输中造成错误,因此需要将数据进行base64编码成可见字符。二、base64介绍1、概念 base64是一种基于64个可打印字符来
2020-09-14 23:24:47
2424
原创 JsonCpp的使用
一、介绍 JSON起源于弱类型语言Javascript,它的产生来自于一种称之为"关联数组(Associative array)"的概念,其本质是就是采用"键值对"的方式来描述对象。JSON格式保持了XML的人眼可读的优点,非常符合工程师对对象的理解。相对于XML而言,序列化后的数据更加简洁(XML所产生序列化之后文件的大小接近JSON的两倍),而且其协议比较简单,解析速度比较快。JSON格式具备Javascript的先天性支持,所以被广泛应用于Web browser的应用常景中,是Ajax的
2020-09-08 09:14:19
447
原创 #对称加密和非对称加密
对称加密和非对称加密一、对称加密 加解密使用同一个密钥,加密效率高,但是加密强度比较低,密钥分发困难,不能再网络环境中直接发送。对称密钥加密法主要基于块加密**,**选取固定长度的密钥,去加密明文中固定长度的块,生成的密文块与明文块长度一样。显然密钥长度十分重要,块的长度也很重要。如果太短,则很容易枚举出所有的明文-密文映射;如果太长,性能则会急剧下降对称加密有如下方法:DES/3DESDES现在已经不够安全密钥长度为8字节加密方式为分组加密,每组8字节通过算法和密钥进行运算明文和密
2020-09-07 10:12:34
291
原创 判断大小端字节序
当格式化的数据在两台使用不同字节序的主机之间直接传递时,接收端必然无法错误的解释之。因此,在网络传输中,通常需要将主机字节序转换为网络字节序。#include<stdio.h>int main(){ union{ short value; char union_byte[sizeof(value)]; }test; //用十六进制是因为两位代表二进制的8位,也就是一个字节 test.value=0x0102; if((test.union_byte[0]==1)&&
2020-07-25 09:58:39
131
原创 简单工厂模式(C++实现)
一、简单工厂的定义 简单工厂模式属于创建型模式又叫做静态工厂方法模式,它属于类创建型模式。简单工厂模式专门定义一个根据参数来返回不同类的实例的函数,来负责创建其他类的实例,被创建的实例通常都具有共同的父类。二、简单工厂的优缺点优点 工厂类承担了客户端创建对象的责任,用户只需提供相应的参数就能创建自己所需要的产品,不需要知道具体细节。可以在不修改客户端代码的情况下,修改和增加新的具体
2020-07-09 09:48:20
318
原创 c++之Lambda表达式
c++之Lambda表达式1、介绍 一个Lambda表达式表示一个可调用的代码单元,可以将其理解为一个匿名的内联函数。与其他函数类似,Lambda表达式具有一个返回值类型、一个参数列表和一个函数体。其具体语法格式为:[capture list](parameter list)->return type {function body} capture list(捕获列表)用于向Lambda表达式传递Lambda表达式所在函数中定义的局部变量。parameter list、return ty
2020-06-03 21:23:16
394
原创 GO语言实现生产者消费者模型
GO语言实现生产者消费者模型一、只使用Channel实现package mainimport ( "fmt" "math/rand" "sync" "time")//生产者函数func producter(index int,ch chan<- int){ for { //获得1~1000的随机数 num:=rand.Intn(1000) //将随机数写入Channel中 ch<-num
2020-05-31 19:08:04
597
2
原创 Linux平台静态库、动态库的制作与使用
Linux平台静态库、动态库的制作与使用一、静态库#当前目录结构├── code│ ├── include│ │ └── head.h│ ├── library│ │ ├── dynamic_library│ │ └── static_library│ └── src│ ├── c++11_thread│ ├── createLib│ │ ├── add.c│ │ ├── div.c│
2020-05-30 11:34:25
124
原创 shell脚本编程
shell脚本编程一、变量用户自定义变量设置与使用变量名只能是英文字母或数字,不能以数字开头等号两边不能加空格单引号内的特殊字符仅为存文本,双引号内特殊字符有特殊含义lcx@Ubuntu:~$ var=hello #创建一个变量,将值hello赋值给varlcx@Ubuntu:~$ echo ${var} #echo—>打印,${变量名}->取出变量中的值hellolcx@Ubuntu:~$ var="$var"wo #向变量var后添加两个字符wolc
2020-05-25 16:04:42
205
原创 Go语言小说排行榜爬虫实现
package mainimport ( "fmt" "io" "net/http" "os" "regexp" "strconv" "strings")func formatStr(str* string) { switch len(*str) { case 3: *str=*str+"\t\t\t\t" case 6: *str=*str+"\t\t\t\t" case 7: *str=*str+"\t\t\t\t" case 8: *str=*str+
2020-05-23 20:29:59
378
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人