总结
文章平均质量分 57
JarvanStack
保持简单
展开
-
wsl常用命令
记录下常用的命令, 更全的命令参考官方文档列出已安装的 Linux 发行版wsl -l -v更改发行版的默认用户<DistributionName> config --default-user <Username>关闭某个发行版wsl --terminate <Distribution Name>将某个发行版 WSL 设置为 1 或 2wsl --set-version <distribution name> <versionNum原创 2022-05-24 17:00:49 · 889 阅读 · 1 评论 -
Linux golang 开发环境配置(Vscode Remote)
Linux golang 开发环境配置(Vscode Remote)原创 2022-05-24 15:33:16 · 1013 阅读 · 0 评论 -
[算法] 剑指offer2 golang 面试题8:和大于或等于k的最短子数组
[算法] 剑指offer2 golang 面试题8:和大于或等于k的最短子数组题目1:思路1: 滑动窗口//思路: 滑动窗口//指针 [left,right] 记录连续子数组的区间,并记录区间和 sum//if sum < target; right ++ ;sum += nums[right]//if sum >= target; 更新最小长度 minLen; sum -= nums[left]; left++代码func minSubArrayLen(target int原创 2022-03-20 09:56:02 · 915 阅读 · 0 评论 -
[算法] 剑指offer2 golang 面试题6:排序数组中的两个数字之和
[算法] 剑指offer2 golang 面试题6:排序数组中的两个数字之和题目1:给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 0 开始计数 ,所以答案数组应当满足 0 <= answer[0] < answer[1] < numbers.length 。假设数组中存在且只存在一对符合条件的数字,同时一个数字不能使用两次原创 2022-03-19 20:42:21 · 215 阅读 · 0 评论 -
[算法] 剑指offer2 golang 面试题5:单词长度的最大乘积
[算法] 剑指offer2 golang 面试题5:单词长度的最大乘积题目1:给定一个字符串数组 words,请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时,它们长度的乘积的最大值。假设字符串中只包含英语的小写字母。如果没有不包含相同字符的一对字符串,返回 0。示例 1:输入: words = [“abcw”,“baz”,“foo”,“bar”,“fxyz”,“abcdef”]输出: 16解释: 这两个单词为 “abcw”, “fxyz”。它们不包含相同字符,且长度原创 2022-03-19 20:34:05 · 216 阅读 · 0 评论 -
[算法] 剑指offer2 golang 面试题2:二进制加法
[算法] 剑指offer2 golang 面试题2:二进制加法题目1:给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “10”输出: “101”示例 2:输入: a = “1010”, b = “1011”输出: “10101”提示:每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。1 <= a.length, b.length <= 10^4字符串原创 2022-03-19 16:31:59 · 185 阅读 · 0 评论 -
3月15号 Go 1.18 正式版发布 了解最新特色以及使用方法
3月15号 Go 1.18 正式版发布 了解最新特色以及使用方法linux 下载安装 go1.18(1)下载curl -o go1.18.linux-amd64.tar.gz https://dl.google.com/go/go1.18.linux-amd64.tar.gz(2)新的go版本的文件夹(这里可以替换为你想要的目录)mkdir ~/go1.18(3)解压文件到新版本文件夹(这里可以替换为你想要的目录)tar zxvf go1.18.linux-amd64.tar.gz原创 2022-03-16 13:54:44 · 915 阅读 · 0 评论 -
MYSQL InnoDB 实现 ACID 原理
MYSQL InnoDB 实现 ACID 原理ACIDAtomicty : 原子性Consistency: 一致性Isolation: 隔离性Duraion: 持久性按照严格的标准, 只有同时满足 ACID 的特性才算做事务, 但是在各个数据库中能真正实现 ACID 的事务很少, 为了性能比如 MYSQL 默认是可重复读 READ REPEAT 不满足隔离性(但是后面又用多版本并发控制 MVCC解决幻读问题), Oracle 默认的事务级别是读提交 READ COMMIT 不满足隔离性…原创 2022-02-19 21:16:28 · 699 阅读 · 0 评论 -
TCP三次握手四次挥手,流量控制和拥塞控制
tcp三次握手四次挥手如何理解TCP(Transmission Control Protocol): 传输控制协议UPD(User Datagram Protocol): 用户数据协议TCP 是基于链接的, UDP 是基于非链接的如果把计算机的通信比喻为人的通信, 人的通信有 2 种方式, 写信和打电话, 这里不考虑速度因素UDP 就像写信, 写出去的信不不能保证对方一定收到, 及时对方收到了也不能保证信件一定完整, 即使信件完整也不能保证接受信的顺序和发送信的顺序一致, 甚至对方的收信地址原创 2022-02-19 14:57:01 · 511 阅读 · 0 评论 -
[算法] 计数排序/桶排序/基数排序 golang 详解
计数排序/桶排序/基数排序 golang 详解都是使用桶 bucket (额外的空间)将有限范围(比如100) arr 映射到一个数组里面然后遍历 bucket 拿到数据依次摆放下面是计数排序的动图桶排序和奇数排序都可以一个位置储存多个范围的value计数排序//计数排序func CountingSort2(arr []int) { //参数处理 if len(arr) == 0 { fmt.Printf("%s\n", "err: len(arr) == 0") retur原创 2022-02-19 10:41:47 · 661 阅读 · 0 评论 -
TDMQ/pulsar golang 快速入门教程
TDMQ/pulsar golang 快速入门教程架构: pulsar 对比 kafkakafkakafka 由 zookeeper 和 broker 集群注册, broker 集群负责计算和储存消息, zookeeper 为注册中心(Kafka2.8就能不依赖zookeeper独立运行了, 部署还是比较方便的)pulsarpulsar 比 kafka 的架构更为复杂, 部署也是更加复杂pulsar 是计算储存分离架构, 计算使用 broker 集群(是无状态的) 储存使用 bookeep原创 2022-02-17 17:49:58 · 3237 阅读 · 0 评论 -
[算法]剑指offer p25二叉树中和为某一值的路径 golang
[算法]剑指offer p25二叉树中和为某一值的路径 golang题目题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。二叉树结点的定义如下:type BTree struct { value int left *BTree right *BTree}解法1思路:我们一般没有见过求树的路径, 所以可以通过具体的例子入手比如上面的二叉树到 12 的路径为 {10,5,7} 和原创 2022-02-17 12:13:25 · 247 阅读 · 0 评论 -
[算法] 二叉树的前中后层序遍历(递归、非递归Golang实现)
[算法] 二叉树的前中后层序遍历(递归、非递归Golang实现)简介种类基于递归的前序, 中序, 后续 遍历(3种)基于栈的前序, 中序, 后续遍历(3种)基于队列的层序遍历(3种)前序遍历的结果是 {8,6,5,7,10,9,11}中序遍历的结果是 {5,6,7,8,9,10,11} (搜索二叉树中序遍历的结果将会是有序的)后续遍历的结果是 {5,7,6,9,11,10,8}层序遍历的结果是 {8,6,10,5,7,9,11}递归的前序/中序/后续 遍历树节点的定义如下t原创 2022-02-17 11:45:45 · 769 阅读 · 0 评论 -
[面试] golang 垃圾回收 gc 详解
golang gc 详解golang 的 GC 经历过很多次变革, 主要大更新的版本是标记清除: v1.3三色标记: v1.5混合写屏障+三色标记: v1.8golang 的 GC 不断的提升并发性能并且**减少STW (Stop The World)**的时间标记清除步骤stw 暂停程序mark: 标记可达对象(分类出可对象和不可达对象)sweep: 清除不可达对象stw 结束怎么 mark 标记可达对对象?从程序的根节点往下面访问, 能遍历到的就是可达对象, 遍历不到原创 2022-02-16 19:36:05 · 1769 阅读 · 2 评论 -
[面试]golang GMP 调度模型详解
golang GMP 调度模型详解为什么要有 goroutine ?goroutine 是基于线程之上封装的用户协程, 但是在此之前一个进程已经可以创建多个线程来并发执行任务了关于线程有个有意思的问题有了进程,为什么还要有线程?空间开销: C语言中一个空转的进程的占用是 6MB 左右, 线程看用户自己设置, 一般 32 位是 4MB, 我的机器 Linux 开发机64位是 10MB这个可以自己设置, 所以空间开销影响不大切换时间开销: 进程和线程的内核栈和上下文的时间差距不大, 但是进原创 2022-02-16 19:35:29 · 1137 阅读 · 0 评论 -
[面试] 面试官: 你还有什么想问我的?
面试官: 你还有什么想问我的?面试官不想听到的问题1. 没有没有问题面试官可能觉得:(1) 你并没有关心这个岗位或者公司(2) 不会发现问题不善于思考2. 薪资待遇这个应该留到给 HR 谈(技术面试不要, 面试并不负责工资)面试官可能觉得:(1) 你太利益化3. 层次太高的问题因为面试官也不知道比如公司未来的发展方向和战略你不是面试主管就不要问这些问题, 普通的技术岗的面试官一般也不关心面试官想听到的1. 如果我通过了面试,这个空窗期建议看些什么东西能更好的适合接下来的工原创 2022-02-16 12:08:02 · 318 阅读 · 0 评论 -
[算法]剑指offer p3 二维数组中的查找 golang
题目在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路实例1使用实例举例子比如下面的矩阵中查找 11 2 3 42 3 4 53 4 5 66 7 8 9如果我们从右上角的 4 开始比较因为 右上角是一行的最大值和一列的最小值, 如果 target < 右上角, 那么就能排除一列,如果 target > 右上角就能排除一行(1) 1 < 4原创 2022-02-11 13:57:16 · 129 阅读 · 0 评论 -
[redis] 10 种数据结构详解
[redis] 10 种数据结构详解简介5种常见数据结构string: 最常见的 string key valuelist: 双向链表set: 集合-zset: 有序集合hash: 类似 Java HashMap 和 golang 的 map 有 2 级索引原语------介绍常见场景stringstring key/value 最常见的数据类型最常用缓存; 分布式锁; 储存日志; id生成器; 计数器; 限速限流;hashhashmap(成员少时数组,原创 2022-02-10 19:56:10 · 1612 阅读 · 0 评论 -
[MySQL]性能分析优化工具
我们需要先找到需要优化的 sql 然后优化show logexplainshow profiles找到慢sql开发自己统计 sql metric (推荐)设置 慢sql 阈值打印到 MySQL 自己的阈值有些 sql 可能因为数据小挺快但是没有用到索引, MySQL 能记录没有用到索引的语句解决慢sql观察90%: 大部分慢 sql 很快就能看出性能瓶颈问题, InnoDB 多半就是索引问题, 就是索引失效了数据太多了啥的explain: sql 分析各个字段能分原创 2022-02-07 21:23:23 · 629 阅读 · 0 评论 -
[MySQL] InnoDB 锁详解
除非有什么特别的原因必须使用其他储存引擎, 不然 MySQL 就应该优先考虑 InnoDB锁的分类按照锁的细粒度分为行级锁页级锁(分段锁)表级锁乐观锁和悲观锁锁的分类按照使用方式分为乐观锁和悲观锁, 乐观锁和悲观锁是 2 钟思想, 跟编程语言和数据库没有关系乐观锁: 乐观锁不会上锁, 只是在数据更新的时候数据是否被并发改变, 如果改变了就放弃操作悲观锁: 悲观锁就是一般的锁, 会上锁, 上锁期间其他人不能修改数据乐观锁主要有 2 种实现方式, CAS 和 版本号1. CAS原创 2022-02-07 20:05:12 · 827 阅读 · 0 评论 -
[MySQL]事务的隔离级别通俗易懂
事务的 ACIDAtomic : 原子性(看作一个原子操作)Consistency: 一致性(没有提交就不会保存)Isolation: 隔离性(4种隔离级别,事务之间通常不可见)Durability: 持久化(提交之后保存到数据库持久化, 系统崩溃也不会丢失)事务隔离级别1. Read Uncommitted 读未提交没有提交的内容也会被其他事务读取, 可能导致脏读2. Read Committed 读提交提交的内容才会被其他内容读取B事务第一次读取该行的时候A事务没有提交,A事原创 2022-02-07 16:40:58 · 945 阅读 · 0 评论 -
[算法]剑指offer p8 旋转数组最小数
剑指offer p8 旋转数组最小数题目题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。要点二分查找(因为最小值的存在区间的左边是大于右边的, 二分查找缩小范围)代码(golang)下面是代码和测试用例package mainimport ( "testing" "github.com/stretchr/testify原创 2022-02-07 15:39:27 · 191 阅读 · 0 评论 -
tcp 三次握手四次挥手通俗易懂
A: 恋爱吗? SYNB: 我爱你 SYN + ACK A: 我也爱你 ACK原创 2022-02-07 15:06:04 · 1589 阅读 · 0 评论 -
[golang]手把手带你实战pprof 性能分析优化
网上的大多数文章都介绍了pprof 性能分析优化的使用方式, 但是实战项目少之又少原创 2022-02-04 23:07:48 · 730 阅读 · 0 评论 -
uniapp 简单封装请求带上 token 请求头
uniapp 简单封装请求带上 token 请求头原创 2022-01-20 10:31:19 · 10325 阅读 · 2 评论 -
golang继承的实现(组合)
golang 通过组合实现继承通过实现接口所有的方法 implements 接口通过组合实现继承实例type Parent struct {}func (p *Parent) p() { fmt.Printf("%s\n", "p()")}type Son struct { *Parent}func Test_extend(t *testing.T) { son := &Son{} son.p()}输出p()注意:不能使用接口在结构体里面,因为接口没有被实.原创 2021-07-01 11:00:59 · 345 阅读 · 0 评论 -
Goland 和 vscode 协程调试方法
Goland 和 vscode 协程调试方法调试发现进入协程调试方法了原创 2021-06-30 20:46:58 · 2923 阅读 · 5 评论 -
git 代码冲突解决方式汇总
主要有 2 种push 的时候远程冲突(远程代码发生变动但是没有及时 pull)pull 的时候(远程代码发生变动和本地代码冲突)push 冲突解决参考:https://blog.csdn.net/jarvan5/article/details/114028765pull 冲突解决参考:https://stackoverflow.com/questions/14318234/how-do-i-ignore-an-error-on-git-pull-about-my-local-change原创 2021-06-25 21:07:50 · 522 阅读 · 0 评论 -
git tag 基本操作
golang GitHub 仓库需要用到 tag 标签来更方便的下载,这里记录最常用的 tag 命令# 查看 标签$ git tag v1.0v1.1v1.2v1.3v1.4v1.5.0v1.5.1v2.0# 给当前提交打标签 (先提交再打标签,标签是对应 commit 的)$ git tag v1.0.0 # 给一个 commit 打标签$ git tag -a v1.0.0 [commit-id]# 推送标签到远程(所有)$ git push --tag# 推送标签.原创 2021-06-25 20:49:35 · 354 阅读 · 0 评论 -
go test 基本使用
#测试整个文件夹下的 **_test.go# 在这个文件夹下执行go test# 测试单个文件go test -v hello_test.go# 测试单个文件,单个方法 TestHello()go test -v hello_test.go -test.run TestHello参考:https://blog.csdn.net/cup_chenyubo/article/details/79231313...原创 2021-06-24 12:06:43 · 752 阅读 · 0 评论 -
vscode golang 基础环境搭建
安装 goyum install gogo env -w GO111MODULE="on"go env -w GOPROXY="https://goproxy.cn,direct"配置 vscode go安装插件安装 go-toolsctrl + shift + P 打开 命令 panel 面板输入 go tools选择全选 tools 安装(这里是访问 GitHub 的网络,网络问题参考修改 hosts 文件解决腾讯云轻量级服务器GitHub访问缓慢或者失败的问题)配置调试环原创 2021-06-24 12:01:59 · 174 阅读 · 0 评论 -
Linux命令总结
用户和组用户创建# 新建用户并新建默认群组 [username]useradd [username]# 修改/初始用户密码,root 用户同样适用passwd [username]# 切换用户默认切换 root 用户,su 就是 switch user.su [username] 组查看groups 可以查看当前用户组和其他用户用户组[root@wsl-centos7 ~]# groupsroot[root@wsl-centos7 ~]# groups jarvanjarvan原创 2021-06-23 13:13:14 · 101 阅读 · 0 评论 -
如何完整移除 WSL Ubuntu/CentOS ?
问题:WSL 安装的时候忘了设置默认登录账号,卸载后重新装,卸载并删除文件夹后,发现再次安装直接闪退原因:Windows 注册的 WSL 还没有删除解决方案:# 查看注册了哪些wslconfig /l# 注销 wls 服务wslconfig /u CentOS7C:\Users\25301>wslconfig /l适用于 Linux 的 Windows 子系统分发版:CentOS7 (默认)C:\Users\25301>wslconfig /u CentOS7.原创 2021-06-23 10:00:59 · 21598 阅读 · 1 评论 -
使用 buf 替代 protoc 自动生成 protobuf go 代码快速开始
简介buf 可以做 protoc 的替代品buf 效率比 protoc 更好buf 使用 yaml 文件,使用更清晰NOTE:目前不支持 Windows,下面为 linux 演示官方文档:https://docs.buf.build/演示完整代码:https://github.com/dengjiawen8955/buf_demo快速开始1. 安装官方提供 3 种安装方式bintar packagego/bin这里演示第一种( 其他参考官方文档:https://原创 2021-06-15 11:04:43 · 2403 阅读 · 0 评论 -
go get 和 go install 区别
1. go getdownloadcompileinstall2. installcompileinstall3. 为什么要存在 go install? go get 不是够用了么?因为 go get 第一步就是 download 远程的库,如果就就想要使用本地的版本,go get 是办不到的,所以如果你不需要 download 你需要就可以使用 go installgo install 是有应用场景的参考:https://stackoverflow.com/question原创 2021-06-15 08:53:09 · 10849 阅读 · 0 评论 -
各种姿势解决CentOS 7下无法启动网络的问题 Job for network.service failed because the control process exited with erro
首先看问题:执行systemctl start network命令后出现下面的错误:$ systemctl start networkJob for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.然后执行 `systemctl status networ原创 2021-06-03 20:44:50 · 1738 阅读 · 1 评论 -
几十行代码简单实现 NIO/多路复用 epoll/selector Golang/Java/C++
1. NIO 原理参考:https://zhuanlan.zhihu.com/p/345808940https://blog.csdn.net/u013857458/article/details/82424104实现代码Serverpublic static void main(String[] args) throws IOException { //创建一个 SocketServerChannel 类似于 listen ServerSocketChannel serve原创 2021-05-31 20:08:24 · 1183 阅读 · 0 评论 -
有指针语言 C 和 无指针语言 Java 的值传递个引用传递
Java、Python 这种传递对象的时候,自动传递指针地址。C、C++、Go 这种有指针的语言传递对象的时候,需要显示的定义指针。/** * 基本类型和String自动是值传递,传递拷贝 * 对象自动引用传递,传递地址指针. */public static void main(String[] args) { Linked.LinkedNode node = new Linked.LinkedNode(); node.data = 1; changeObjectValu原创 2021-04-24 20:54:52 · 262 阅读 · 1 评论 -
Vscode 常见快捷键总结
Vscode 官方教程:https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf个人总结1.打开命令面板【F1/Ctrl + Shift + P】2. 打开 terminal【Ctrl + `】3. 快速打开文件【Ctrl + p】4…原创 2021-03-20 19:33:21 · 215 阅读 · 0 评论 -
分布式ID神器之雪花算法简介
分布式ID神器之雪花算法简介1. 雪花算法分布式 ID 的特点全局唯一性:最基本的东西递增:方便索引,提升索引性能高可用:任何时候都能生成正确的 ID高性能:并发环境依旧健壮(短时间能生成大量的 ID,一台机器一毫秒产 4906 个不同ID,整个分布式可以产生 1024*4906 个)分布式:分布式不会产生重复的 ID2. 雪花算法概要SnowFlake 生成的 ID 是 8Byte 64位的(在 Java 中是 Long)结构如下:1.首位-1bit:占用 1 bite 没有.原创 2021-03-20 16:50:31 · 507 阅读 · 0 评论