2022年,几乎没去过公司上班。上半年每周三去公司做一次核酸集采就行,因为各种原因,公司也没什么项目,下半年就一直在家里睡觉。在不强制居家的日子,就一直骑着摩托车游山玩水。
在一次骑行中,一个女孩无意间拍了我一张还挺好看的照片,从此命运的齿轮开始转动...
生活篇
所以2023年就完成了订婚、结婚、生娃全系列,短短一年,我就终结了我浪荡的青春。婚后比较明显的变化就是:父母再也不拐着弯儿地催婚了...
上班交通工具也由GSX250换成了Ninja400,上100也不会那么吃力了。虽然如此,但20km的通勤路的确是有点无聊,甚至一天的工作量还没在路上骑车通勤的时间长。虽然路上经常遇到几个认识的摩友,但是我明白,遇到他们意味着我就要迟到了...
2023年,也迎来了我的28岁,从发量到存款,感觉和27、26、25、24岁没啥区别,只不过今年的生日,由一群人变成了我媳妇陪我过,在生日那天,也是趁着下班的功夫去追了个焦留念,纪念我那独一无二的28岁。
工作篇
希望公司耗子尾汁,继续努力。
学习篇
虽然平时是做大数据开发和架构的工作,但是好像一年也没学什么东西。主要完成两个项目,一个是flink cdc采集oracle,还有一个用Netty上传1W 亿条/天数据的项目。今年的项目内容主要也就这两个,虽然平时关于Spark、Flink、架构的需求多,但是今年的确是没写几个程序。
在大数据开发工作不饱和的日子,开始学习前端vue全家桶。18年学习vue的时候,还是选项式开发,学完前面忘后面。现在的vue3是组合式开发,学起来很带劲。
例如我想在vue2中引入其他组件和声明周期函数:
代码语言:javascript复制<script>
import MenuBar from "./MenuBar";
export default {
name: 'Home',
components: {MenuBar},
mounted: function () {
// 页面挂载之后要执行的声明周期函数
}
}
</script>
在vue3中一手setup 组合式编程,让开发方便了很多、
代码语言:javascript复制<script lang="ts" setup>
import MenuTree from '@/layouts/backend/components/menus/menuTree.vue'
import {onMounted} from "vue"
onMounted(() => { })
在vue3中,无需export defalut导出,引用组件也无需在components中声明,加上vue3中的一些defineEmits、defineProps,以及与TypeScrit中声明vue组件的defineComponent,更符合后端开发习惯。
vue-router
之前学的是vue-router 3.x,现在4.x,同时也为vue3提供了useRoute和useRouter的API来操作路由。
代码语言:javascript复制<script setup lang="ts">
// vue2
const router = this.$router
// vue3
import {useRouter} from 'vue-router'
const router = useRouter()
router.push('/admin')
<script>
TypeScript
以前都是用JS,TS与之相比更像后端语言。在项目中中用的比较多的有三点。
- 可以定义interface和方法:
export interface ContextMenuItem {
name: string
label: string
icon?: string
disabled?: boolean
}
- ${} 字符串和变量结合的小功能。
const routeInfo: RouteRecordRaw = {
path: path,
name: routes[idx].name,
component: () => import(`@/${routes[idx].component}.vue`),
}
在webpack下使用import全量加载时,参数不能使用完全是变量,所以这个功能就很有用。
- 是能定义vue组件。
<script lang="ts">
import {h, computed, defineComponent, resolveComponent} from 'vue'
import {isExternal} from "@/utils/common";
import svg from '@/components/icon/svg/index.vue'
export default defineComponent(
{
name: 'Icon',
props: {
name: {
type: String,
required: true,
},
size: {
type: String,
default: '18px',
},
color: {
type: String,
default: '#000000',
},
},
setup(props) {
const iconStyle = computed(() => {
const {size, color} = props
let s = `${size.replace('px', '')}px`
return {
fontSize: s,
color: color,
}
})
if (props.name.startsWith('el-icon-')) {
return () => h('el-icon', {
class: 'icon el-icon',
style: iconStyle.value
}, [h(resolveComponent(props.name))])
}
}
)
</script>
与vue相比,使用ts不用定义<template>,使用 h() 直接渲染即可。
后来又跟着BuildAdmin项目学习Element Plus、Pinia,算是对前端完成了入门的学习。在拆解BuildAdmin项目过程中,写了一些技巧和感悟,前端部分整理了百分之七十了,争取2014年弄完。。。
面试篇
今年充当了一波免费技术型HR去面试大数据开发。前前后后面试了有十几个人,最后竟无一人入职,我这100%的失败率让我一度怀疑是我的问题。
通过这十几次面试,感悟挺多,小城市的技术氛围可能真的有点差强人意。因为本来就是小城市,加上同行不为难同行的原则,你简历上写什么我就问什么,简历上不写的我基本上啥也不问,毕竟我也是个临时工。总结一下面试遇到的几个问题:
1. 简历不真实
在自我介绍的时候,大部分都说是大数据开发。技能栏上也写着会Java、scala语言等。我问其中一个工作两年的哥们:你Java学到哪个阶段了?等了一会没有说话,我怕他不理解,我说Java基础、web、ssm框架、多线程、jvm你学到哪里了呀?
这时,他才说学到了Java基础,我说IO学到了吗,他说大学学过。我说那你就是学到了集合对吗,他说是,我说平时做大数据开发的时候够用吗,他说够用。我....
还有大部分的简历都写了Spark、Flink、Kafka、Redis以及Linux的一些东西。但是在介绍项目的时候,大多都是大数据分析、数仓建模以及ETL的内容。简历上写精通Spark,实际上就是写过WordCount。写的了解Flink时间语义,不知道有哪些时间语义,自己写的watermark也不知道触发机制是什么。
然后简历上写熟练使用redis。有的最基本的redis常用数据类型、运行模式以及hmset命令都回答不出来。
因为大数据集群大多和Linux主机打交道,看他们写的会shell开发。我就问了几个常用的命令:机器负载(top)、查看内存(free)、查看文件大小(du)、查看磁盘大小(df)、查看进程(ps),问几个沉默几个。。。
2. 简历重复性太高
虽然说大数据的东西就是那么多,但是很多简历上个人技能和项目介绍的重复度过高。项目内容、技术架构、项目内容好多都是一样的。
3. 公司问题
这个是吐槽公司的。招人之前和我说:招个能干活的。面完一问三不知的,Leader还和人家谈薪资,背后还吐槽我一下面试太严格,希望Leader反思一下:人家不来,是不是工资没给够?吃力不讨好的工作难干...
所以说,小城市的程序员良莠不齐,没有很好的生长土壤,在没有产出的996、007环境中过完一年、三年、五年的工作经验。同时,小城市的公司也暴漏出很多问题,没有好的技术环境氛围,技术全靠自学、项目全靠忽悠。很多时候只是为了996而996,资本家的控制欲过于强烈。
同时也希望自己:见贤思齐焉,见不贤而内自省也。
结语
2023有好有坏,上半年为生活忙忙碌碌,下半年最后的两个月再开始学习的旅途。展望2024,技术上希望能学完前端,玩明白Stable Diffusion的AI绘画。生活上希望能捡起落灰的吉他、玩玩摄影啥的。工作上没啥想说的,希望不只有眼前的苟且....