记录几个ASCII码字符
今天写代码的时候看到一个提示,然后不小心看到了这么一个代码
1log.Error("xxx :", string(respCode)+string(resp.Body))
这里就不去吐槽为什么不使用格式化输出而要用 + + 了,最值得吐槽的地方是这里的 respCode 是 int 型的数字,但是用了 string 来强制转换。
string 强制转换是装维 ASCII 码对应的字符,也就是说,如果 respCode 是 97,那么string(97) 得到的结果应该是 a,而这里的 respCode 代码的是状态码。一般来说,http 状态码常见的有 200、301、404 等等,所以我在这里记录一下几个常见的状态码对应的 ASCII 码字符。下次看到一些稀奇古怪的符号的时候,给自己增加一个排查问题的思路。
123456789101112131415package mainimport "fmt"func main() { fmt.Println("code 200: ", string(200)) fmt.Pr ...
毕业一年回顾
满打满算,我已经毕业一年了,去年七月 5 号在深圳北站的一个酒店开始应届生的培训,到现在回到成都。
一年时间,这已经是我工作的第三家公司了,很奇妙的感觉,人生在世,很多时候都不知道下一步会是怎么样,因此才一直有 “计划赶不上变化” 这么一句老话。这一年时间,如果是谈技术上的进步,我个人感觉并没有什么明显的提升,甚至可能还不如在学校的时候。工作中大多数时候都是各种各样的琐事,每天完成了自己的工作就想躺下,刷会抖音,就到了睡觉的点。除此以外,通勤时间超长也是让人感到疲惫的一个很重要的因素,每天要花上两三个小时在路上,这样的事情要放到读书的时候去看,简直想都不敢想。
技术上提升不大,不过工作的经历倒是丰富了不少,一年干三家公司了。。。因此到现在为止,大公司(中厂?)、小公司(几十人的创业公司)以及央企我都待过了,慢慢的也在了解自己内心真实的想法。一线大城市,高薪,xxx工程师,看着是那么回事,但是并不适合每一个人,有的人天生就是卷王,有的人被迫当了卷王,剩下的被卷成了灰。我就是被卷成灰的其中之一,并且通过这些工作经历,让我更加意识到兴趣的重要性。如果每天都要做着讨厌的事情,长期保持负面情 ...
vscode 配置 unity 项目
在使用 vscode 编辑 unity script 时没有代码提示,网上搜了一堆文章都过时了,解决之后做个记录。
参考官方文档本文下面的内容仅供参考,以后更新了可能有些步骤不一定有效。最标准的方式应当是参考官方文档
安装软件需要安装的软件: unity、vscode
安装方式没什么好说的,去官网下载软件安装即可
配置 unityunity 中需要在 External tools 设置编辑器为 vscode。具体路径为 Edit -> Preferences -> External tool。然后选择 vscode,将编辑器设置成 vscode 以后,需要重新生成一下项目配置文件。
方式一:在 External tool 界面,点击 Regenerate project files
方式二: 在 unity 主窗口,选择 Assets -> Open C# projects
配置 vscode安装插件:C#
我目前就装了这一个,其它的后续补充。
安装 .net core 和 .net framework.net core 直接安装官网最新版就行 https:// ...
flutter初体验
单纯的写 CRUD 已经开始无聊了,想试试看搞下 UI,想起了很久以前就想试一试但是一直拖着没试的 flutter。这篇文章又鸽了一个月才开始写。。。
前言第一次了解到 flutter 是在 2019 的时候,那时候是准备想试试看的,可惜忙着重修挂的科,同时一个接触过的学长告诉我不行,我就把它扔一边了。中途有好几次都想尝试,但最终都放弃了,这次终于是把 demo 给跑起来了。
这里要注意,文章里我不想写运行过程中的具体的配置,因为 flutter 一直在更新,最好的文档就是官方文档。国内唯一的问题就是网络不通。
配置环境flutter 是支持 ios 和 安卓的,但是由于我使用的是 Windows,所以没法使用 ios 的模拟器,因此只能运行在安卓上面。因此首先要安装的,是 JDK,这里我从微软的网站下载了 openjdk 17 安装(我也不知道各个版本啥区别,那就装最新的吧);然后是安装 flutter,根据官方文档,直接使用 git 克隆代码仓库就行,把路径记好,后面会要求选择 flutter 的目录,环境变量配不配都没有关系。
下载好 flutter 以后,要在安卓里运行应用 ...
使用vagrant初始化多个虚拟机
katacoda 和 play with kubernetes 的在线环境用起来太卡了,让我彻底放弃白嫖的想法。
背景最近在学习 k8s,之前一直用的 kind 启动的集群,一键傻瓜式启动,但是不能对集群的配置进行修改,每次修改都要把集群销毁掉再重启。这显然不是我想要的,所以就只能自己想办法搞一套环境来操作。
一开始的时候,是打算用 katacoda 来在线操作的,但是这个平台还是有一些问题,一个是卡,初始化 master 节点直接卡死了,等了半天都不行,毕竟云服务器是很贵的,不可能每个人都给很多资源,还有一个就是网络问题,这个网站是国外的,网络有时候感觉不是很稳定,操作起来不方便。
使用 katacoda 不行,然后看到了 kubernetes handbook,上面介绍了 play with kubernetes 在线实验平台,刚开始上手感觉还不错,但是还是同样的问题–操作不方便。网页上复制粘贴要用 ctrl + Insert 和 shift + Insert,而且执行完命令没有反应,使用体验很差劲。
2022/3/21 更新有时候启动的时候,ssh 登录会 ...
golang 结构体中的 omitempty
前两天在 dashboard 项目上有人上报了一个 bug,当设置一个值为默认值时,该字段会被忽略,看了一下代码,发现是定义结构体的时候使用了 tag omitempty。
Tagtag 是 golang 的一种对结构体做额外处理的方式。而其中的 omitempty 通常被用来省略掉空的字段。
我们知道,go 里面的类型都有默认值,int 的默认值为 0,string 的默认值是 “”,如果你定义了一个结构体,类似于下面这样:
1234type Dog struct { Breed string WeightKg int}
此时生成一个 Dog 的实例,其中的 Breed 和 WeightKg 将会被赋值为默认值。那么考虑一个场景:在某个字段没有被赋值的时候,我不需要它出现在结构体的实例中,也就是说没有被赋值的字段将不存在。
如果要实现上面所说的效果,就需要使用到 omitempty 标签,同时要使用指针。如下
1234type A struct { Breed string WeightKg *int `json:",o ...
两道关于 golang race 的题目
逛 Twitter 的时候看到了别人发的两道题目,考察 Golang 中并发代码的编写,感觉挺有意思的,记录一下。
题目一这道题要用到 go 关键字实现并发才能完成,同时为了获取到 slow 是否结束,那么我们就需要有一个通知的机制,这需要使用到 channel 来解决。最后给出的答案,正好也就这么几行,使用了 go func(){}() 和 channel,没有多余的代码。
123456789101112131415161718192021222324252627282930313233343536373839404142package mainimport ( "context" "fmt" "math/rand" "time")// 1、只能编辑 foo 函数// 2、foo 必须要调用 slow 函数// 3、foo 函数在 ctx 超时后必须立刻返回// 4、如果 slow 结束的比 ctx 快,也立刻返回func main() { rand.Seed(time.Now().Unix ...
win11搭配wsl2开发环境配置
头脑一热,买了台 windows 笔记本
windows最近换了台 windows 笔记本,无他,就是想闲的时候玩玩游戏,一个人的周末实在太无聊。而且现在用的 mba 配置太低了,卡的不行。在网上看了一些资料,感觉在 windows 下使用 wsl2 开发是可行的,于是就下单了,买的是联想 r9000p,16寸,贼大,以后每天都是负重训练了。。。
环境准备新电脑默认安装了 win11,正好 wslg 也需要在比较新的版本上使用,我也就懒得换回 win10 了。为了在 windows 上完成开发,需要先安装 linux 子系统以及 docker。
在安装 wsl 之前,需要先在 windows 的程序中启动 linux 子系统和虚拟机平台支持的功能,然后根据提示重启电脑。
wsl2这里是微软官方的 安装文档,执行 wsl --install 就会完成 wsl 的安装、设置 wsl2 为默认版本以及安装 ubuntu。
docker新版本的 docker-desktop 已经提供了对 wsl 的支持,只需要在官网下载安装包,然后在设置中启用 wsl 的特性,那么就能在 linux 中使 ...
在k8s中部署APISIX
Apache APISIX 目前支持多种方式来安装部署,本文主要介绍在 kubernetes 环境中部署 Apach APISIX 以及 Apache APISIX-Dashboard。
简介Apache APISIX 是一个动态、实时、高性能的开源 API 网关,提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。
Kubernetes 是用于自动部署、扩展和管理 “容器化应用程序” 的开源系统。它旨在提供 “跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。
环境准备
一个 k8s 集群
良好的网络环境
推荐使用 kind 来在本地搭建 k8s 集群环境,非常方便。根据官方文档安装好 kind 之后,一条指令即可搭建好一套 k8s 环境。
1kind create cluster
通过 Helm 安装 Apache APISIX
Helm 用于管理 Kubernetes 中的应用程序,类似于 apt、yum、pacman 这些 Linux 中的包管理器,Helm 也称为 Kubernetes 中的包管理器。
目前 Apache API ...
记第一次出差
第一次出差,第一次坐飞机,第一次来杭州,第一次到西湖。
感受出差最大的感受,就是心累。我想这可能和每个人的性格有关系,来到一个陌生的地方,遇见一群陌生的人,你要想在规定的时间完成工作,就不得不和其他人做大量的沟通交流。而且因为人家是甲方,感觉上就是受制于人,就像我在这边听到其他人讨论的:我们是甲方啊,付了钱,那你不把活都给我干了,那我花钱干嘛?
吐槽的点有很多,也懒得一条条说。最想吐槽的一点就是权限问题,过来真就感觉是低人 N 等。旁边的都可以访问外网,我不行。不管啥平台,都没权限,用的卡的要死的 vdi,还是分等级的,内部的软件中心搜索出来的软件都不一样。
杭州这次杭州之行,在周六的时候去西湖逛了一圈。网上查出来围着西湖一圈十几公里,那天我中间走了两段捷径,想来一共走个十公里应该是有的。逛西湖那天天气一般,没有太阳,阴沉沉一片,不过即使如此,我在桥上还是遇到了两对拍婚纱照的新人。新娘子和新郎看起来挺高兴,但是摄影师好像是很不耐烦的样子,哈哈。
西湖给我的感受,很平淡,没有什么意外之喜,一个比较大的湖,湖边上都是摆摊的,卖小吃,划船,而且人特别多。平时的周日尚且如此,要是节假日来西湖, ...