自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 K8S 问题记录

【代码】K8S 问题记录。

2024-03-26 14:06:37 119

原创 【Go】常见的四个内存泄漏问题

1、这里更多的是由于channel+for+select导致的,错误的写法导致了发送者或接收者没有发现channel已经关闭,任务已经结束了,却仍然在尝试输入输出。

2023-08-14 21:33:44 576 1

原创 关于Windows下安装gRPC的若干问题

Goland 不识别.proto 文件goland 可以安装插件识别.proto 文件File->setting->pluginsgo get 报错\git clone报错 package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc"(https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.

2021-03-22 20:45:26 447

原创 [Golang]Leetcode 2. 两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2: 输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9], l2

2021-02-21 17:24:47 177

原创 【错误】Golang中监听goroutine/强制关闭goroutine/定时任务

在上述链接中,有人提到没有办法强制停止goroutine,其实是不对的。当启动goroutine的函数返回时,goroutine会自动停止package mainimport ("context""fmt""time"// ====== 可以引用Golang原生

2021-02-18 17:23:50 1394

原创 【golang】巧用select {}阻塞main函数

很多时候我们需要让main函数不退出,让它在后台一直执行,例如:func main() { for i := 0; i < 10; i++ { //启动20个协程处理消息队列中的消息 c := consumer.New() go c.Start() } select {} // 阻塞}可能大多数人想到阻塞的方法是用channel,当然都是可以的,不过用select{}更加简洁 ????...

2021-02-12 01:00:10 877

原创 关于gopath失效,不识别,标红,报错的问题

检查GO111MODULE环境变量总共可以三种不同的值:auto默认值,go命令会根据当前目录来决定是否启用modules功能。需要满足两种情形:该专案目录不在GOPATH/src/下当前或上一层目录存在go.mod档案ongo命令会使用modules,而不会GOPATH目录下查找。offgo命令将不会支持module功能,寻找套件如以前GOPATH的做法去寻找。go命令会使用modules,而不会GOPATH目录下查找。...

2021-01-29 16:20:37 391

原创 加密数据的5种填充方式(Padding)

https://blog.csdn.net/shift_wwx/article/details/84256774常用的填充模式至少有5种,不同的编程语言实现加密时用到的填充多来于这些方式或他们的变化。1. 常用的填充形式1. 1 填充数据为填充字节的长度这种填充方式中,填充字符串由一个字节序列组成,每个字节填充该字节序列的长度。假定块长度为8,原文数据长度9,则填充字节数等于0x07;如果明文数据长度为8的整数倍,则填充字节数为0x08。填充字符串如下:原文数据1:FF FF FF FF FF

2020-12-25 15:24:48 4232

原创 url参数中有+、空格、=、%、&、#等特殊符号的问题解决

url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,这时候可以将这些字符转化成服务器可以识别的字符,对应关系如下:URL字符转义URL 中+号表示空格 %2B空格 URL中的空格可以用+号或者编码 %20/ 分隔目录和子目录 %2F? 分隔实际的URL和参数 %3F% 指定特殊字符 %25#表示书签 %23& URL 中指定的参数间的分隔符 %26= URL 中指定参数的值 %3D...

2020-11-11 16:48:29 4020 1

原创 加密、解密、加签、验签专题及常用密码学算法目录

到了新公司后的第一个需求就是对内容做一个加签,然后传给上游,上游客户端进行验签。需求看似简单,也确实简单,但是,背后的知识足够开一门课程、写一篇论文了,这里笔者用这样一个专题来简要整理一下相关的知识。首先明确几个名词:加密:发送方利用接收方的公钥对要发送的明文进行加密。解密:接受方利用自己的私钥进行解密。公钥和私钥配对的,用公钥加密的文件,只有对应的私钥才能解密。当然也可以反过来,用私钥加密,用对应的公钥进行解密。签名:发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人

2020-11-05 16:19:00 561 1

原创 Go-Hyperledger Fabric新手程序员入职配置及注意事项

Goland,Idea等IDE需要使用旧版进行破解Git上拉取仓库,一定要拉取到GoPATH下,否则会出现各种报错。翻墙工具很有必要。不懂就问。查阅公司手册,查阅官网手册,查阅stackflow,查阅博客,查阅B站。...

2020-11-03 14:13:49 224

原创 Hyperledger Fabric 入门笔记(1)-Hyperledger Fabric是什么?各组件是什么关系?

Hyperledger Fabric智能契约是用链码编写的,在区块链外部的应用程序需要与账本交互时调用该契约。在大多数情况下,链码只与分类账的数据库组件、世界状态(例如查询它)交互,而不是与事务日志交互。Hyperledger Fabric与其他一些区块链系统的不同之处在于它是私有的和许可的。Hyperledger Fabric网络的成员通过可信会员服务提供商(trusted Membership Service Provider, MSP)注册,而不是一个允许未知身份参与网络的开放的无许可系统(需要工.

2020-10-27 16:22:58 253 1

原创 力图易懂的区块链编程指南(1)-什么是挖矿?

什么是区块链?区块链简而言之就是数据结构中的链表,这是一种特殊的链表,其中的节点要满足一定的条件才能加入到链表中。通常一个节点包括blockId,时间戳,Nonce,内容,Prev前一个节点(块)的Hash,本节点(块)Hash。当然,Hash要算的,跟正常的算法一样。挖矿是在干什么?难度是怎么回事?寻找上述的条件就是在挖矿。区块中的Prev,Hash这些可以视为代替链表中的指针。Id,时间戳,内容,自然也不用多说。那么nonce是用来干什么的?nonce :(词语) 临时造的,偶造的,只使用

2020-10-25 11:52:48 322

原创 什么是拜占庭将军问题?

拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利“拜占庭将军问题”延伸到互联网生活中来,其内涵可概括为:在互联网大背景下,当需要与不熟悉的对方进行

2020-10-23 16:29:30 467

原创 OS银行家算法-Java

OS作业,记录防丢package Bank;public class Banker{ public static void main(String[] args) { OS os = new OS(3, 3, 2); MyThread p0 = new MyThread(os, 0, 7, 5, 3, 0, 1, 0); MyThread p1 = new MyThread(os, 1, 3, 2, 2, 2, 0, 0); MyThread p2 = new MyThread

2020-10-14 15:51:55 102

原创 简易词法分析器-Java

编译原理课程设计记录下,防丢import java.util.Scanner;public class BY0 { public static void main(String[] args) { System.out.println("输入开始"); String token ; Scanner input = new Scanner(System.in); token = input.nextLine(); //输入 input.close(); char st

2020-10-14 15:49:58 254

原创 布隆过滤器-如何判断一个元素是否存在一个集合中?

什么情况下需要布隆过滤器?先来看几个比较常见的例子字处理软件中,需要检查一个英语单词是否拼写正确在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上在网络爬虫里,一个网址是否被访问过yahoo, gmail等邮箱垃圾邮件过滤功能这几个例子有一个共同的特点: 如何判断一个元素是否存在一个集合中?优点相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数。另外, Hash 函数相互之间没有关系,方便由硬件并行实现。布隆过滤器不需要存储元素本身,在某

2020-10-13 16:54:08 641

原创 Golang编程-踩坑笔记(4)- 逃逸分析总结版

https://driverzhang.github.io/post/golang%E5%86%85%E5%AD%98%E5%88%86%E9%85%8D%E9%80%83%E9%80%B8%E5%88%86%E6%9E%90/总结版在函数中申请一个新的对象:如果分配在栈中,则函数执行结束可自动将内存回收,系统管理如果分配在堆中,则函数执行结束可交给GC(垃圾回收)处理,用户管理申请到 栈内存 好处:函数返回直接释放,不会引起垃圾回收,对性能没有影响。函数传递指针不一定比传值效率高。传递指针可

2020-10-07 15:08:05 199

原创 Golang编程-踩坑笔记(5)如何利用defer特性?- 抛异常和一些坑

defer执行时机Go官方文档中对defer的执行时机做了阐述,分别是包裹defer的函数返回时包裹defer的函数执行到末尾时所在的goroutine发生panic时利用defer抛异常如果巧妙的使用第三条特性,defer可以被用来当作golang版本的try-catch配合runtime库,能够追踪堆栈的内容/方法调用路径,和程序错误位置等。内置的 recover 函数可用于重新获得对异常程序的控制并恢复正常执行。调用 recover 将停止展开并返回传递给 panic 的参数。

2020-10-06 15:28:25 179

原创 堆与栈区别(OS层级)

堆栈空间分配① 栈 (操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。② 堆 (操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。堆栈缓存方式① 栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。② 堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。...

2020-10-05 20:48:49 300

原创 Golang 内存对齐视频

https://www.bilibili.com/video/BV1Ja4y1i7AF/简而言之就是注意写代码的时候要把相同类型的元素放在一起更进一步需要自己将结构体配对为32位或64位的整数倍有助于减少额外空间消耗

2020-09-29 15:27:51 84

原创 Golang web 踩坑笔记(4)- viper

viper是用来加载配置文件的框架,有了它就不用自己手写反射了。viper常用函数 viper.SetDefault("fileDir","./") viper.SetConfigFile("config.yaml") viper.AddConfigPath(".") viper.AddConfigPath("D:\\awesomeProject") err := viper.ReadInConfig() if err != nil{ panic(fmt.Errorf("Fatal e.

2020-09-28 20:04:50 2127 1

原创 Golang web 踩坑笔记(3)- gin

初学者需要对http协议有所了解,不然是搞不懂GET,POST这些方法在干什么的注册路由就是为url路径注册一个方法,使得浏览器每次访问这个路径,都直接运行这个方法。Web框架中常使用RESTful API,REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”。例如,我们现在要编写一个管理书籍的系统,我们可以查询对一本书进行查询、创建、更新和删除等操作,我们在编写程序的时候就要设.

2020-09-28 19:53:06 206

原创 Golang web 踩坑笔记(2)- Redis

var rdb *redis.Clientfunc getRedis() { rdb.Set("k1",1,0) res,err := rdb.Get("k1").Result() if(err == redis.Nil){ fmt.Println("name does not exist") }else if(err != nil){ fmt.Printf("%v \n",err) }else { fmt.Println(res) }}注意err需要判断两次在get()

2020-09-27 21:18:31 114

原创 Golang web 踩坑笔记(1)- MySQL

导入包时,golang会隐式的调用该包的init()函数。以下代码适用于在golang没有使用包的情况下,调用init初始化函数import ( _ "github.com/go-sql-driver/mysql")可变长参数在源码中很常见,接收参数后,常用for range循环,基本类型会变成数组方便计算。可变长参数有传入interface类型的,interface对象占用16字节长度,包含一个指向原数据的指针,和一个指向运行时类型信息的指针。深入探究的话,其使用方法和golang的语言.

2020-09-27 20:08:22 226

原创 Golang 字符串的连接方式

1.直接使用运算符加就完了,但是字符串属于不可变类型,复杂场景不要用,会导致频繁垃圾回收2.bytes.Buffer这种方法用于需要大量进行字符串拼接操作的场合,性能要大大优于第一种方法。// bytes.Buffer的0值可以直接使用var buff bytes.Buffer// 向buff中写入字符/字符串buff.Write([]byte("Hello"))buff.WriteByte(' ')buff.WriteString("World")// String() 方法获得拼

2020-09-27 17:21:46 258

原创 MySQL踩坑笔记(1)

mysql> set password for 用户名@localhost = password(‘新密码’); 这个是错的mysql> alter user ‘用户名’@‘登录主机’ identified by ‘密码(自定义)’;这个是对的.\mysql -u root -p root 这个不行,显示unknown database.\mysql -u root -p 管理员登陆win10使用管理员命令行要加.\才能生效...

2020-09-27 12:52:08 92

转载 数据库四种隔离级别

(零)没有并发控制存在的问题:更新遗失。解决办法就是下面的“可读取未确认”。(一)可读取未确认(Read uncommitted)写事务阻止其他写事务,避免了更新遗失。但是没有阻止其他读事务。存在的问题:脏读。即读取到不正确的数据,因为另一个事务可能还没提交最终数据,这个读事务就读取了中途的数据,这个数据可能是不正确的。解决办法就是下面的“可读取确认”。(二)可读取确认(Read committed)写事务会阻止其他读写事务。读事务不会阻止其他任何事务。存在的问题:不可重复读。即在一次事务

2020-09-25 12:41:45 55

原创 Golang初入编程-踩坑笔记(3)- 并发,优雅关闭

主函数也是线程,在不使用sync.WaitGroup的情况下,需要main等待goroutine完成,不然main完成就没了。主函数外只能放声明,不能赋值sync是synchronizing(使) 同步 的缩写wg.done()最好加deferchan需要makechan记得关闭多协程调度记得使用多路复用,select...

2020-09-23 21:42:34 160

原创 Golang初入编程-踩坑笔记(2)-函数式编程,反射

func可以当作关键字使用,比如在函数传入函数参数时,func和正常情况下的int形参是一个位置。传入函数参数时,由于函数参数也需要参数,那个参数也需要传入,或者新写一个也行构造函数尽量用指针,减少复制产生的内存消耗反射中 elem()函数用来解引用,如果要修改“反射类型对象”,其值必须是“可写的”(settable)结构体的字段都是首字母大写的(暴露到外部),因为struct中只有暴露到外部的字段才是“可写的”。反射的用法(每多加一层指针,就要多取一次地址)package mainimp.

2020-09-22 13:57:31 94

原创 Golang初入编程-踩坑笔记(1)

一定要自己动手写,不然使用的时候可能连等号的位置都搞不清楚该语言没有面向对象的概念,什么函数传什么参数返回什么值自己要多练习i++属于独立语句,不能和其他语句写到一起,自己占一行以下东东需要初始化(开辟空间),包括切片,指针,map(数组声明后,会填充默认值)函数可返回多个使用:=声明并赋值const常量(静态变量)关键字,内部可使用iota作为计数器赋值iota只能在常量的表达式中使用每次const出现都会使iota归零iota按行自增,所以同一行..

2020-09-20 21:55:36 1647

原创 缓冲流实现文件复制

import java.io.*;import java.util.Scanner;import java.util.*;public class main { public static void main(String[] args) { BufferedInputStream bis = null; BufferedOutputStream bos = null; File file = new File("F:\\202006022002

2020-09-17 13:56:37 77

原创 Flink standalone配置(血汗注意事项,哭唧唧)

虚拟机请使用VMware15,win10不支持VMware14,会在导入文件时卡死JDK,flink环境都要配,环境变量如何修改请自行搜索,记得最后source /etc/profilestandalone模式只需要配置flink-yamn和slave,别改别的,yarn模式是另一种部署方法。详情请见官网,说的非常清楚。yarn需要hadoop,它是一个子项目。打开8081web界面的时候没有可用taskmanager,检查是否关闭了防火墙,以及是否永久关闭了防火墙。未知问题要查看日志,在log文.

2020-09-16 16:04:04 413

原创 Flink,HDFS,YARN,Zookeeper之中的概念

无论如何都要看一手资料,能看官方文档就不要看别的博客,有些地方很误导人。Hadoop内部子项目(HDFS,YARN都是内部集成的) Hadoop Common: The common utilities that support the other Hadoop modules. Hadoop YARN: A framework for job scheduling and cluster resource management. Hadoop MapReduce: ..

2020-09-15 21:08:41 341

原创 Leetcode 189. 旋转数组(二次反转,环状替换(双临时变量))

旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4]public class Solution { public void rotate(int[] nums, int k) { .

2020-09-13 20:11:32 112

原创 (API)StringBuffer Character

StringBuffer stb = new

2020-09-13 18:23:18 67

原创 Leetcode 198. 打家劫舍(动态规划,稍有不同的我的解法)

打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1: 输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示例.

2020-09-13 17:47:36 47

原创 Leetcode 326. 3的幂(求余数也可以用上限)

给定一个整数,写一个函数来判断它是否是 3 的幂次方。public class Solution { public boolean isPowerOfThree(int n) { return n > 0 && 1162261467 % n == 0; }}总结可以用int所能容纳的最大3次幂反求余数,为0则能被整除...

2020-09-13 16:16:31 81

原创 Leetcode 350. 两个数组的交集 II

两个数组的交集 II给定两个数组,编写一个函数来计算它们的交集。示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2]示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算法?如果 nums1 的大小比 nums2 小很.

2020-09-13 14:04:38 69

原创 JVM基础系列第3讲:到底什么是虚拟机?(字节码文件的概念)

https://www.cnblogs.com/chanshuyi/p/jvm_serial_03_the_nature_of_jvm.html

2020-09-11 16:01:59 72

空空如也

空空如也

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

TA关注的人

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