- 博客(116)
- 资源 (8)
- 收藏
- 关注
原创 shell 常用工具指令
背景: 不同语言组件开发需求,需要经常快速切换开发环境,或者在新机器安装开发环境。于是将常用开发语言的安装 固化成脚本,方便后续使用。如果网络不互通,需要先把数据下载下来,再手动传到目标集群。如果数据量不大还是可行的。公司内网禁用了 服务部署环境 ssh 端口和本地开发环境的连接,登录机器需要通过。背景: 需要跨集群迁移 hive 表结构,涉及两步: 迁移表数据 和 迁移表结构。举例: 安装 trino 较高版本,需要 jdk17,通过这个项目 直接执行。项目,写了一个批量在多节点安装 frpc 的脚本。
2023-04-14 17:20:18
518
原创 通过 Docker Compose 本地启动 zk 集群
文章目录项目背景最终效果启动 zk 集群启动 nacos 服务如何实现技术栈构建基础镜像Compose 配置实现细节s6mysql 初始化时执行 sql源替换扩展: 后面还可以做什么参考资料项目如果你想直接看代码,可以直接看我的 git-docker-centos 项目地址,最近发布了 [v1.2.0])(https://github.com/smiecj/docker-centos/releases/tag/v1.2.0) 版本,readme 已经非常详细了,包括项目的使用方式 和 需求规划本机环境
2022-05-18 11:17:50
829
原创 通过 Ambari 启动 Nebula Gateway 一段时间后会自动退出的问题解决
文章目录参考资料问题概述相关基础知识操作系统: stdout、stderrnebula gateway: 查询图数据逻辑golang 打印日志的目标println: stderrfmt.Println: stdoutlog.Printf / log.Println: stderrSIGPIPE定位过程打印进程详细日志原因分析问题解决小总结参考资料网络编程中的 SIGPIPE 信号SIGPIPE 引发的悲剧SIGPIPE信号详解问题概述在 Ambari 中集成了 nebula studio 1.0
2021-11-20 18:12:38
1263
原创 hexo-个人博客搭建
文章目录效果背景踩坑记 - hugo工具短暂的体验hexo 主题介绍本地搭建方式环境准备设置主题启动博客基本配置的介绍网站信息文章顶部栏部署到github站点github 创建仓库配置准备总结效果博客首页[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-47SWHRjC-1628829910035)(hexo_blog_01.png)]博客标签页[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2GjJ4o7w-1628829910036)(
2021-08-13 12:45:49
253
原创 golang-文章翻译-go常见的10种错误
文章目录一、枚举默认值和json反序列化二、BenchMarking和内联三、每次传参都应该用指针吗?四、break和条件控制语句五、错误管理六、数组初始化6.1 len 和 cap6.2 设置len 还是 cap 的效率高七、context 管理7.1 什么是context7.2 什么时候应该用context八、从来不用 -race 参数九、使用文件名作为输入(方法设计不满足SOLID原则)9.1 从问题出发9.2 SOLID 原则十、协程和循环中的局部变量10.1 协程共用循环的局部变量10.2 避免直
2021-07-18 10:54:23
673
1
原创 Docker-Docker Desktop 安装教程,以及推荐Docker作为学习工具的理由
目录一、前言二、安装 docker desktop2.1 环境准备2.1.1 配置wsl2.1.2 注册一个 dockerhub 账号 和 国内云厂商 容器服务2.2 安装 Desktop2.3 Docker Desktop 的配置2.3.1 wsl 数据存储路径2.3.2 配置代理2.3.3 测试拉取并运行镜像三、后言:Docker 在现在开发的重要性文章字数:约4000阅读大约需要时间:10min一、前言博客-Docker-搭建可用SSH访问的centos镜像2年前我写了一篇 关于如何在本地安
2021-07-03 23:47:12
24673
4
原创 golang-文章翻译-go高效编程
原文地址文章目录背景格式化注释和godoc命名规范一、包命名二、getter三、Interface分号条件控制语句一、if二、再声明和再赋值(Redeclaration and Reassignment)三、for1、常见for 循环格式2、使用下划线忽略不需要关注的对象3、其他细节四、switch1、特点2、switch 中的 break3、实战:通过switch 实现更美观的字符串对比方法4、实战:type switch方法定义一、多个返回值二、返回值命名三、defer对象操作(声明、初始化等)一、n
2021-01-26 16:51:41
814
原创 golang-项目实践-实现一个封装后的redis client
文章目录一、背景介绍二、框架设计三、代码实现四、后续功能扩展1、redis 超时连接数管理一、背景介绍项目地址之前redis 客户端都是直接定义到pkg 的公共方法中(参考代码),这样做用起来确实方便,但是这样也把初始化redis 示例的权限直接开放出去了,业务想初始化几个客户端就初始化几个,显然不合理。另外:如果redis 服务出现故障,或者只是偶然的网络连接有问题,所产生的超时现象就全部都传到上层业务逻辑中了,上层如果没做好控制,服务质量肯定会显著地受影响。因此最终的目的肯定还是要让 redis
2021-01-14 11:37:01
999
原创 golang-单元测试结合web后台项目实战(重构和mock)
文章目录一、背景介绍二、测试框架选用三、实际实现一、背景介绍经过上一节 对单元测试框架的基本学习,我们已经掌握了 单元测试的基本写法但是 对一个web 后台项目来说,往往需要依赖一些基础服务(数据库、缓存等),实际生产环境当然是要连接这些基础服务的,但是测试环境不一定能连通这些服务(测试环境最好是要能),因此编写mock 也是一个比较必要的过程。如何让测试代码写得更好,结合业务代码更优雅,也让后人能够更方便地开发,是一个需要探索的过程。这篇文章将会通过我的一个测试项目的重构过程,介绍如何更好地从单测
2020-12-26 23:02:17
1640
1
原创 golang-单元测试和mock框架的介绍和推荐
文章目录一、单元测试框架介绍1、原生testing1.1 示例1.2 扩展:Table-Driven 设计思想1.3 并行测试2、convey2.1 示例2.2 双层嵌套二、mock背景介绍:探索golang 的单元测试框架,看一下哪种框架是结合业务体验更好的。一、单元测试框架介绍1、原生testing1.1 示例func TestModifyArr(t *testing.T) { arr := [3]int{0, 1, 2} modifyArr(arr) if 112233 == arr[
2020-12-26 20:47:07
3302
2
原创 golang-使用godoc 工具编写代码注释
文章目录一、本地安装godoc 工具二、查看本地项目的godoc三、简述godoc 规范1、package 注释2、结构体注释3、方法注释4、常量注释5、doc.go四、实战-给自己的项目添加godoc导语:良好的注释是代码可维护的基础之一,作为golang 开发者,更应该意识到go 官方已经提供了godoc 工具,只要我们代码的注释是按照规范来,最后也能生成比较直观的“文档”,因此平时开发 的时候也应该重视注释的细节。一、本地安装godoc 工具go get golang.org/x/tools/c
2020-12-20 20:12:04
1504
原创 golang-性能分析(原生工具)
文章目录一、编译阶段1、 go build –race2、go vet 分析程序静态问题3、解析汇编代码二、测试阶段2.1 引入pprof2.2 使用go tool profile 分析CPU 使用情况2.2.1 基本分析2.2.2 测试频繁占用CPU 资源2.3 使用 go tool pprof 分析内存使用情况2.3.1 直接查看内存使用情况2.3.2 测试频繁申请内存场景2.3.3 两个时间段的堆内存对比2.4 goroutine 分析2.4.1 查看当前进程的 goroutine 数2.4.2 分析
2020-11-28 21:41:35
1940
原创 golang-一些常用的静态检查工具
文章目录一、背景二、gofmt2.1 参数说明2.2 go fmt (常用)三、goimports3.1 安装3.2 goland 配置3.3 手动格式化代码/项目3.4 扩展:为什么格式规范化推荐用 goimports 而不是 go fmt四、go vet (静态代码检查)4.1 执行4.2 可以修复的问题4.2.1 语法4.2.2 循环 和 goroutine/defer4.2.3 其他语法问题五、附录-其他参考文章一、背景俗话说,工欲善其事,必先利其器。go 作为一个对基础功能封装非常好的语言,对
2020-11-22 15:54:09
5704
原创 刷题-两球之间的距离最短
一、解题思路题目链接其实依然是使用二分来解,只不过这次的二分并不是数组下标的二分,而是每个桶之间距离的二分。审题后不难理解,最终答案肯定在相邻桶最短距离 ~ 两头桶之间的距离 之间。我们在这个范围进行二分即可。最后时间复杂度应该是O(Nlog(N)),严格来说是O(arrLen * log(maxDistance))二、代码1、check:负责检查指定距离是否能实现,依次遍历所有桶,看最后球是否能放满即可。func check(position []int, ballNum int, minL
2020-08-29 11:04:43
326
1
原创 golang-使用go mock编写业务测试
参考资料官方git地址和示例一、应用场景服务在进行单元测试的时候,由于测试环境和生产环境不同,可能第三方接口的返回也会不同,无法完全模拟生产环境的条件。这就需要通过模拟输入、输出来测试完整的业务逻辑了。二、基本用法1、安装 mockgen 工具Windows:SET GO111MODULE=ongo get github.com/golang/mock/mockgen@v1.4.3正常安装完成后,可在$GOPATH/bin 目录下找到 mockgen2、自动生成mock 代码只有Int
2020-08-01 21:17:40
1800
原创 git-常用语句整理
一、git 原理简单介绍详细原理可参考廖雪峰的博客,其中,关于工作区、暂存区的理解非常关键,理解它对后面理解 git 的提交、回退动作非常有帮助。工作区:通过 git add 添加的,参与状态跟踪的文件暂存区:通过commit 提交的文件和版本HEAD:git 通过commit ID 管理版本,通过HEAD “指针”管理当前版本的位置。commit之后,HEAD 会移动到下一个提交位置(图片来源:图解Git)二、常用语句整理|指令类型| 指令 | 作用 |指令类型指令作用
2020-07-25 16:59:59
321
原创 golang-使用 go test 输出单元测试覆盖率
项目示例-码云一、背景单元测试覆盖率是衡量代码质量的一个重要指标,重要的代码文件覆盖率应该至少达到80%以上。Java 可以通过JaCoCo 统计覆盖率,那么go 项目如何进行代码覆盖率测试呢?二、统计方式1、生成覆盖率报告我们知道直接执行测试代码的指令: go test 指定文件名称 -run “测试方法”。项目工程是如下架构的,可以通过这种方式生成覆盖率报告:go test -mod=vendor -covermode=count -coverprofile=coverprofile.c
2020-07-24 19:36:08
13567
12
原创 刷题-全排列
一、解法:深度遍历+剪枝题解这里写得比较清楚,其实就是在遍历过程中要避免重复的元素连续出现,只需要在遍历的时候做个标记就可以了。二、总结这种不能通过枚举解决的方法,确实只能靠深度遍历来解决代码地址...
2020-07-24 11:23:31
98
原创 刷题-盛水最多的容器
leetcode链接一、最直接的解法:n^2 循环二、O(N) 解法:双指针解法:头尾定两个指针,然后不断向内收缩,每次只将高度更低的那头收缩。那么为什么要移动高度更小的那个位置呢?这样移动真的能够让后续的解更优吗?换一种思路理解一下:如果我们移动高度更大的那个指针,由于总容量的计算公式是(两头中更小的高度 * 两头的距离),因此移动后容量只能更小,不可能更大。所以要选择移动高度更小的头。缩小范围的过程中,容量的整体趋势肯定还是变小的。只有移动高度更小的头,才能有继续增大容量的机会。三、总结
2020-07-23 16:28:25
119
原创 golang-使用 gomodule 在公共测试环境管理go的依赖
文章目录一、go 工程配置二、服务器依赖管理背景:一、go 工程配置既然是协同开发,工程我们就建议使用 go module 对依赖包进行管理了。这样大家可以把依赖都放到统一的GOPATH,如果有新增依赖,直接放到GOPATH 目录即可。二、服务器依赖管理...
2020-07-01 20:11:58
571
原创 专辑音乐合并程序
目录一、背景二、ffmpeg 指令测试1、安装ffmpeg三、效果展示四、开发过程1、爬虫获取网易云歌单中的音乐列表一、背景闲来无事,想起了自己曾经是一个B站UP主,但是距离自己上一次投稿已经是4年以前的事情了,不投点视频都快过气了。那就投吧,其实也不一定要贴真的视频,可以把自己常听的音乐剪成视频,放上去跟大家共享也可以嘛。但是我一般都是听整个专辑,或者整个歌单的内容,怎么把这些音乐都合并成...
2020-03-21 11:41:17
1302
原创 Python-实现每天获取点击量靠前的文章脚本
文章目录一、开始前准备1、windows 安装python32、国内配置pip源3、http 客户端相关模块安装二、实现方式1、http 客户端2、分页获取CSDN的首页博客列表3、获取一篇博客的title4、调用SMTP接口,发送邮件三、调试过程遇到的问题1、Python 不会自己调用父类的init 方法,需要我们自己手动调用2、公司内网访问csdn不通3、从优先队列中get 出来的数据并不是有...
2019-06-11 23:56:13
498
1
原创 mycat-centos系统环境搭建
一、下载安装包http://dl.mycat.io/1.6-RELEASE/注意:还要先安装JDK二、解压直接在工作目录解压就行三、创建MyCAT 用户groupadd mycatadduser -r -g mycat mycatchown -R mycat.mycat /usr/local/mycat //修改mycat目录所属mycat用户四、MyCAT 配置参考博客ht...
2019-06-09 23:02:55
395
1
原创 sublime安装方法
一、安装直接安装最新版本即可,可以直接百度找一个二、插件1、手动安装插件的方法① 在github 上下载想安装的软件直接下载,解压到首选项 — 插件目录即可② 检查是否安装成功重启sublime,并查看插件目录(首选项 — package settings)里面有没有刚安装的插件即可。2、文件对比工具Compare side by side3、代码编辑工具SublimeCo...
2019-06-06 23:34:12
733
3
原创 SSL理解 - 服务端和客户端建立连接的过程
参考博客:知乎-SSL协议之数据加密过程详解用自己的话表述了一下:可能会有一些出入,还请大家指正!
2019-01-06 17:54:03
2388
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人