我与工作那些事

入职这家公司已有半年,想想半年前,还在上海,待业半年之久,那段有点失意的日子,让我的心态,变得很佛系。人的一生,不需要一直工作,那样疲于奔命,最终的结果也不一定是自己期待的。半年从眼前瞬然流逝,在这公司的半年融合下,也认识一些朋友,但始终不觉得这家公司是我的归宿,满满的不安全感。 论职场,虽然以我的工龄,像是个职场老手,但实际上,却很单纯。因为自己的性格,从不喜欢向上管理,也从不喜欢去管理别人,所以,最终到头来,我还是个兵。在职场上,老兵也是个兵,却比不上新兵蛋子了,那股冲劲,显然都是一股要把前浪拍死在沙滩上的,所以,这一行,老兵很难,一旦所谓的降本增效来临,那老兵大概率会被拍出去。 有的人不甘于做老兵,当然,有那能力谁去做老兵呢,做个管理兵的管理层干部,不是也挺好的么。只是,这种场面,更多的需要口才,需要PPT,显然,很多老兵不适合,那怎么办呢?只能继续做个兵。然而以兵作为自己的归宿,大概率会以悲剧收场。在人才爆棚的今天,老兵又该以什么样的方式自处,又该以怎么样的试去生存,是个难题,也是大多数老兵在失去工作后,短期内无法找到工作的原因。 说回正题,我与工作的那些事,嗯,工作上的事情让我有点不知所措。首先,公司开始人事上的变动,这种变动最直接的就是上层领导的改变,原先的架构师在新的总监过来之后,不适应准备撤离。而由架构师主导的项目,尤其是我这边的工作内容,就变得非常多余。这种多余体现在人力资源的投入上,公司今后的发展方向上,这些都不匹配,导致我现在的处境是做也不是,不做也不是,没人发话说这不做,可以停下手上的工作,也没人发话说这要做,继续做,没个明确的目标,这确实让我有点混乱。当然,以我的佛性心态来讲,我并不在乎有没有事情做,我更在乎的是有没有钱拿。 关于工作,也谈谈与这家公司的磨合,半年的磨合,其实同事关系处得还可以,但和架构师的相处方式,让我一直很被动,我有时候甚至不理解架构师的思想与思路,或许是对更多的理论缺少概念导致的吧。面对一大堆理论,有的甚至都没听说过,所以理解起来困难,节奏一直把握不对。但我觉得架构师人还是不错的,除了脾气差点外。

十一月 7, 2023 · nobject

for 循环中使用defer的方案

defer 的作用用于延迟处理,在golang中,它一般在方法即将结束返回时调用, 因此,我们使用defer最多的场景就是对资源的释放,这种资源包括连接资源(http连接,数据库连接等),文件资源(file相关),锁资源(sync.mutex), 对资源的释放处理不受panic的影响,意思就是方法体内即使有panic,也阻止不了defer的执行。除了对资源的释放外,defer的第二大用处就是用于捕获异常。当然,常规的使用这些,都不是我们这篇文章的重点。 在引言中, 提到了两个defer最常用的使用场景, 虽然不是这篇文章的重点,但可以简单的回顾一下。 defer的常用使用场景 释放资源 - 释放锁资源 func DoSomething(mu *sync.Mutex, s []string) { mu.Lock() defer mu.Unlock() s = append(s, "test") } 释放资源 - 释放数据库连接资源 func fetchDataFromDB() error { db, err := sql.Open("mysql", "user:password@/dbname") if err != nil { return err } defer db.Close() // 确保数据库连接在函数结束时被关闭 // 执行数据库查询操作 // ... return nil } 资源释放 - http资源释放 // 最容易遗忘导致内存泄露的场景 resp, err := http.Get("https://example.com") if err != nil { // 错误处理 return } defer resp....

十一月 7, 2023 · nobject

父亲

近些年,与父亲极少交流,究其原因,我个人觉得我们都是有点小脾气的人,而有些事情,却无法释怀,或者没有通过言语心平气和的聊一聊,从而导致我们之间的隔阂越来越大。我承认我的不作为,不受控的情绪,这些让他从心底里对我失望,我们之间的气氛总是冷冷的。 父亲,一个20岁左右就一直在外漂泊近半生的泥水工人。在我印象里,对父亲的记忆很模糊。从记事起,他就在外面打工,一年回来个一两次,见面机会甚少,当然,现在的我也很能理解那种在外奔波养活一家人的不易。只是打小的记忆里,我一直渴望有父爱在身边。但又不得不必须接受事实,珍惜每年一两次的相聚。 父亲是个乐天派,喜欢和别人开玩笑,也喜欢开自己玩笑,而我与母亲却都是寡言的。我羡慕父亲的那种大大咧咧的性格,一直在想,为何我没有继承父亲这点,而是个沉闷的葫芦, 也许这点也是他与我共同的遗憾吧,我确实没能像他一样,能够处理好各种人际关系。而我在职场或者在社会上,缺得正是这点,也因为自己的内向懦弱,失去了很多机会。 父亲也慢慢的老了,我能清晰的看见头发花白的他,有点憔悴,少了年轻时的意气风发。而在花甲之年,还在为生活奔波,在工地上奔波,也许,在他这年纪,他是希望看到儿子能够成家立业,能够结婚生子,是该享受儿孙满堂带来的幸福的时光。而我一直以来给他灌输的思想是我不想结婚,我只想做自己,不想被束缚。这点,显然是他的雷区,每次交谈中,我能看出他眼中的光灭了,这种场景通常以我的沉默而结束,以他的失望而告终。我们慢慢疏远,这种疏远,我觉得是一种愧疚,一种无颜以对,也是一种无可奈何。 这一年,2023,我迎来了我事业上面的最低谷期,而我极力想去改变,却改变不了,这让我有点心灰意冷。挫败感让我更加的不想面对家里的压力。而这漫长的时期,也与父亲竟然有长达8月之久未联系。这点毋庸置疑是我的问题。在很长的日子里,我是害怕让他们看到我的颓废的。10.1过后,父亲借着母亲来看我的机会,母亲说父亲带了点家乡的菜,她到时候给我带点过来,事实上,我一直以为就母亲一人过来,我有点诧异,也有点愧疚,就在附近的一家衢州菜馆里,聚上我们年后的第一顿饭。我们都收起了锋芒,父亲也知道我的处境,也没提任何关于婚姻或者结婚上的见解。那一顿饭,我吃得很满足。饭后,他们顺便到我住处看看,我住的还行,比我在上海时期住的好很多,看我买的锅不行,父亲说他给我整口锅过来,事实上,我不太会做饭,有时候根本也不想做饭,但也不想辜负父亲的一片好意。 希望父亲这一辈子都能身体健康,也希望我们能互相理解与成全。也许人生就这样,没有完美,只能尽可能的互相包容。当历史碾过百年,我们依旧是父子,只是所有的不愉快都会被尘埃拂过。而下辈子,希望你能拥有如你所期的那样的孩子,带给你幸福。

十一月 6, 2023 · nobject

权限控制 - Casbin

最近在研究 iam 相关的内容,iam 即身份访问管理(identify access management) 身份: 用户在整个系统体系中扮演什么样的角色 访问管理:对身份的权限控制。 那既然谈到权限控制,不得不谈谈 casbin, casbin 目前是 github 上在权限控制处理方面 star 数是最多的,虽然之前没接触过 casbin,但也调研了一段时间,从易用性,扩展性,实现上来谈谈 casbin。 核心概念 权限模型目前主流的主要包括acl, rbac, abac。 简单先从这几个模型说起。而了解这几个模型之前,我们先约定一下一些术语。 subject 主体,在一般的权限体系中,主体一般是指操作者,比如某个用户,某个角色(其实角色最下面也是个用户),当然更广义的讲,可能主体也可以代表其他需要约束的对象,比如在物联网中,他也可以代表一个iot设备。 resouce 资源,一切可操作的实体都可以当做是一种资源,比如aliyun上的我们购买的ecs实例,后台系统的一个user action 操作,主体对资源的操作,比如我们可以对ecs实例进行开机,关机,重启等操作,可以新增,删除,编辑一个user。 condition 操作的条件,一般基于主体与资源的约事条件,比如 user 的ip必须在172.168.0.1/24的段内 effect 影响效力,一般只有allow(允许)/deny(不允许) 有了这些术语,我们去解释对应的权限模型,可能更知道不同模型的区别 ACL acl(访问控制列表),他代表的是,哪些用户(subject)或系统进程可以访问(action)资源(resource) 如果某个文件 apple.jpg(resource) 的 ACL 包含(Alice(subject): read(action),write(action);Bob(subject): read(action)),这将赋予 Alice 读写文件的权限,而只赋予 Bob 读取文件的权限。 RBAC ABAC casbin 中的概念 理解casbin,最主要理解其核心思路,casbin中的核心思路是使用policy(策略)中的规则去应用到model(模型)中,model 是一个规则引擎,帮我们处理一个主体(subject)是否有操作(action)某个资源(subject)的权限。 policy策略:一组规则的集合, 规则 model模型:对每行规则进行解析 因此,对于我们使用者来说,大多时候仅仅只需要关注policy和model就行。 model 初览 在model层面,casbin又基于 PERM (Policy, Effect, Request, Matcher). 一个完整的model(perm)文件格式如下:...

九月 14, 2023 · nobject

swagger的使用

随着RESTful API的流行,Swagger已经成为了一种通用的API描述和文档格式。它可以帮助开发者描述、测试和文档化RESTful API。在本文中,我们将介绍在go中如何使用相应的库生成swagger文档。在golang中, 有两款可以生成swagger的库,一般我们选择https://github.com/swaggo/swag,还有另一款https://github.com/go-swagger/go-swagger,相对来说,使用起来swag更易用一点 安装 1 go install github.com/swaggo/swag/cmd/swag@latest 默认情况下,会安装在go path相关的目录下,该目录一般已经加入环境变量,若没有加入环境变量,我们可根据每种系统的不同,手动加入至环境变量中 检测是否安装成功: 1 swag -v 返回具体的版本号即成功: 1 swag.exe version v1.8.12 使用 路由绑定 我们使用的是gin框架,swag对gin也有集成封装, 我们可以在gin的路由绑定至对应的swagger文档 1 2 3 // swagger文档查看路径 url := ginSwagger.URL("/swagger/doc.json") // The url pointing to API definition r.GET("swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url)) 依赖库: 1 2 swaggerFiles "github.com/swaggo/files" "github.com/swaggo/gin-swagger" 路由注释 1 2 3 4 5 6 7 8 9 10 // ListUser // @Summary 查询用户信息 // @Tags 用户 // @Description 查询用户信息 // @Produce json // @Param UserId header string true "当前用户id" // @Param query query dto....

八月 27, 2023 · nobject

go分享

go的goroutine go中最重要的概念之一就是协程,协程的创建方式也很简单,go func()就简单的创建了一个协程,虽然go语言中并没有规定协程的 创建数据限制,每个协程相对于线程的成本也很低,协程最小占用只有2Kb, 1000个协程才2M,所以成本极低。 但创建容易的同时也应该注意以下几点: 对于panic捕获的安全性 我们一般使用go func()直接创建协程了,但一般在代码中,很少直接这么使用,一般会在外面再封装一层。具体的封装方式类似这样: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package thread import ( "fmt" "runtime/debug" ) func GoSafe(fn func()) { go RunSafe(fn) } func RunSafe(fn func()) { // 可以將panic上报给sentry等报警平台,或者钉钉,飞书机器人的钩子等 defer func() { if p := recover(); p != nil { fmt.Printf("RunSafe capture crash,msg: %s \n %s ", fmt.Sprint(p), string(debug.Stack())) } }() fn() } 原因很简单,go语言外层的defer是捕获不了内部goroutine的异常的,所以如果内部的goroutine发生panic,那会导致整个程序直接crash。 因此,使用goroutine的话最好再加一层安全封装,以防止潜在的panic导致的crash。...

五月 24, 2023 · nobject

Yaml 语法

yaml是工作中遇到比较多的标记语言,特别在k8s横行其道的年代, yaml简直就是标配, 到处都是yaml。yaml的语法还是简单的,在此只 是做点小记录 yaml的基本使用 简单的对象关系 1 name: "hua" ## 在同一行,:后一定要加空格 行内对象嵌套关系 1 info: {name: "hua", age: 32} 数组关系 1 2 3 - Bird - Cat - Dog 行内数组 1 animals: [Bird, Cat, Dog] 子数组 1 2 3 4 - - Bird - Cat - Dog

五月 18, 2023 · nobject

网关traefik入门级使用

基本概念 EntryPoints EntryPoints 是进入traefik的入口点,定义端口接收数据包,可以是tcp也可以udp的包。 Routers Middlewares 附加在路由之上,中间件可以在发送至后端服务器之前处理请求或响应。 Services 简单部署 可以写一个docker-compose.yaml文件编排traefik与后端服务whoami 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 version: '3' services: reverse-proxy: # The official v2 Traefik docker image image: traefik:v2.10 # Enables the web UI and tells Traefik to listen to docker command: --api.insecure=true --providers.docker --accesslog=true ports: # The HTTP port - "80:80" # The Web UI (enabled by --api....

五月 12, 2023 · nobject

网关traefik调研

五月 11, 2023 · nobject

网关gloo调研

五月 8, 2023 · nobject

跨城搬家

上海,我终究没有留下来,在失业长达半年之久,期间拿到惟一还算可以的offer竟然是在杭州。怀着复杂的心情,没有任何选择的情况下, 准备离开上海。 选择方案 以往的搬家,基本上都是同城叫个货拉拉,东西少的话自己搬,东西多的话请师傅搬,不得不说,搬家是个累活。这次是个跨城搬家,东西还有点多, 在出发之前,我在想,我该以怎样的方式从上海搬到杭州,我自己给自己想了几种方案。 方案一: 不贵重的东西走物流,我称了称我那至少8大箱的东西,大概的重量已经超过100kg了,价钱也至少得150以上了,还是在没任何保价的情况下。 贵重的东西走顺丰,我一个台式电脑,走顺丰,发现如果要保价就要80了。就单单一个台式电脑而已 人和猫走顺风车,看了下顺丰车的价格,大概也是不到150. 那整体的总价大概是要400出头了。缺点也是费时费力不省心。 方案二: 走朋友的车,杭州的一位朋友说帮我搬家,但着实东西有点多,其实他来回成本还是蛮大的,而且小车也放不下,我放弃了。 方案三: 货拉拉等跨省搬家方案,货拉拉是最便宜的,大概是在450,如果不算高速费的话,加上高速费80的话,那就是总价要530了。 但整体是省时省力的,没有过多的折腾。货拉拉相比其他的,比如快狗,滴滴都便宜不少,比滴滴便宜30左右,比快狗便宜300. 还问了一些蚂蚁搬家之类的,搬过来一口价都是800-900的样子,着实搬不起。看来货拉拉对于跨省搬家还是首选。 最终我是选择了方案三。 意外 对于货拉拉,之前同城搬家也搬过,但都是走平台的。但出发前5小时,司机突然告诉我他有事不能跑,问我能不能让他朋友来接。 但我的建议是,如果有事,那么我重新下单,我还是希望走平台的,我怕不走平台之后会有各种扯皮。小哥有点不高兴,觉得不走平台还 可以给我便宜点,但信任始终是个问题,最后他还是决定接下单自己亲自来跑。其实我不关心是否他亲自跑,我只想走平台而已,他 可以让他朋友代跑,但不能不走平台,仅此而已。最终小哥的选择是他亲自跑,他的其他事(说的是送朋友回苏州)让他朋友代劳,这整 得我多少有点不近人情。但我也想给自己的麻烦创造的少点。 迟到 不知道小哥是否因为早上的事生气,本来原定14:30的车,在14:10分左右我问他能不能准时到,他说能准时到。事实上我已经都准备得差不多了, 就等着小哥来装车了。小哥硬是让我等了30分钟左右,到15点才走。这多少让我心里有点郁闷,但也不想多说了,毕竟时间不早,我也没 有能力再去换车了。这迟到的车过来,我很心急的一通搬,果然忘记掉东西了,把我的自行车忘记在了上海。虽然也1年没骑过了,但 还是我的爱车啊,不过在上海那边也没人,而且寄自己车也贵,也只能让他在那边呆着了 路途 路途遥远,全程大概有180多公里,导航上都要快3个小时才能到。在五一的前夕,还是避免不了堵车,在上海上高架前的路堵了10多分钟。 好在还有一天才到五一放假,因此高速上还是能一路畅通。在行至一段高速后,小哥说他的电车电池需要充下电,大概要30分钟,嗯,又在 路上的服务区充了30分钟电,本来预估3小时能到的,到那边整整到19点了简直是超预期。 酒店 终于到了,酒店的小姐姐给拉了推车,还有司机的推车借着用了一下。顺利到家的感觉真好,只是,真得很累。同时也在为5.1之后的放职而 担忧,长时间的不工作真得没有任何工作状态了吧。希望接下来职场能顺利些。 关于价钱 货拉拉450 + 高速费 80,花了530. 为什么货拉拉比传统的搬家便宜,我问了司机,司机告诉我,他们也不是靠拉个人单活着的。 还会拉企业的仓库单,因此,到杭州这边,他就一直在接杭州回上海的单,如果能顺利接到,其实也是不亏的,毕竟杭州回上海的单也 得有200以上才行,司机小哥拒绝了一单160的,觉得200以上接了才划算吧。

四月 27, 2023 · nobject

入职体检

接了杭州的公司的offer,公司要求是要到三甲医院体检,所以又在即将入职时刻,快速找家三甲医院体验。从小红书上找了对应的攻略, 怎么快速一天内拿到体检报告。 医院选择 附近近点的三甲医院有复旦大学附属华山医院,上海六院,复旦大学附属中山医院。比较了三种入职体检的攻略,六院是只能看到普通体验, 华山是不知道一天之内能不能拿到,而且价格在270多,中山医院看小红书攻略,相比较来说,价格上便宜,只要200,最关键的是能一天之内完成。 流程 带好1寸照,7点半左右到医院,去预约体检,并且缴费 按照给的体检流程体检 先抽血,个人是体验了一把机器抽血,医生会判断血管大小是否合适,合适的可以走机器验血。不合适的走常规验血 我以为机器验血会很快,就过去排队,前面也就6-7个人,结果排了我半个小时以上。我觉得可能比传统的抽血还要慢。 个人预估一个人在5分钟左右,要是血管不行的,那估计还得慢 抽完血去尿检,直接去就行,我这笨蛋傻乎乎的等了好久,以为要先取东西 去做x光胸片,这个报告很费时间,其实可以一开始就去检查,他出结果比抽血慢的 去做其他的常规项,有些就很快,医生知道你是来体检的,直接写参数了 大概整体流程早上11点左右就完成的差不多了,就等血常规,x片报告 拿到报告后去服务台盖章,如果需要发票去二楼自助机上去取,以便以后报销 感想 整体还是很快的,一个早上就可以拿到体检报告,如果有急需的,就去尝试尝试。相比第三方机构体检来说,体检报告就一张纸,出报告快, 价格偏贵一点。

四月 26, 2023 · nobject