当前位置: 首页 > news >正文

我的十年编程路 2019年篇

随着2018年,三星天津研究院的裁撤,我选择了到广州的三星研究院工作,与最心爱的她开始一起生活。

这一年的开始,我注册了博客园。和2014年类似,在刚注册不久,我写了一篇题为《全新开始,全心出发》的文章。在这篇文章里,我又一次刨析自己,深入内心。

从网站的风格样式上看,博客园并无优势,甚至在某些地方还是21世纪初的样子。但也正因为如此,它更加纯粹和朴素,广告更少,更加专注内容,专注在技术本身。

当时的我,已经工作有5年多,心慢慢地变得踏实下来。5年这个时间长度,并不算太久,我还能走得更远。在这篇文章里,我写了这样一段话,这段话一直是我坚守的人生信条,也是支持我努力奋斗的动力源泉:

在三星通信研究院工作,对我而言是一件幸福的事情。在这里工作强度不是一直都很大,有时间自我学习。我始终认为,在人生的现阶段,投资自己是最重要的,而不是每个月到底能挣几个钱,因为发财没办法靠打工。即使年薪30万,50万又能如何呢?不吃不喝,一年下来,也不能在一线城市买下一套房,也不能买下自己心爱的座驾。更何况,即使买的下来这些,也不能保证自己不去要更多的东西,那样的人生不是我想要的。或许那样真的可以让自己这一生过得很舒服,但是舒服过后依旧会归于尘土。但如果我们真的可以在人间留下来点什么,留在了某些人的记忆中,这意味着这些人将带着我们的精神,带着我们的经验活下去,甚至传承下去。在某种意义上讲,这将是一种永生。

写博客对我而言就是实现理想的一种方式,我希望通过文字和图片记录下我在编程路上踩过的各种“坑”和探过的各种路。这对于尚未遇到“坑”和打算走新路的朋友来说,多少都会有一些帮助。虽然到今天,我仍然没有当上老师,没能站上讲台,但只要能够起到帮助和引导的作用,做事情的形式还显得那么重要吗?

没错,“坚持初心”这四个在我眼里,并不是说一定要实现某件事。它更像是一种“核心原则”。儿时的我特别向往老师这个职业,觉得教书育人很高尚。虽然最终没有走上老师这条路,但是能把知识分享给需要的人,能真正地帮助到那些需要帮助的人,也是我的价值的体现。换句话说,我的理想,就是学习,然后输出。这样看来,当老师是实现方法,写博客是实现方法,写书也是实现方法。

坦率地讲,这里面也不乏一些“私心”,如果你看过我写的这篇文章,会发现我在其中还摘录了这样一段话:

说到“世俗”的一面,我的理想就是提高自己的知名度,让自己在这个世界上留下些许存在过的印记。它或许是一篇文章,或许是一段代码片,或许是一张照片,甚至只存在于某个人或某几个人的记忆中。这和我少年时期想要当一名老师的理想并不冲突。经过成长的洗礼,最初的梦想经过升华变作了某种执念和精神,又化作了条条通往理想之门的大路。我逐渐意识到,自己少年时期的梦想只是一种具象化的结果。在每一次静静的思索之后,在每一次深深的解剖自己之后,慢慢地,知道了自己真正想要的东西;逐渐地,找到了实现它们的途径。能够意识到这些并将其转化为行动,对我而言,已经是莫大的欣喜。

是的,我想我已经很清楚地表明了自己的坚持与态度,其实很简单。

在这条路上,难免会有对于名和利的追逐。但是,我觉得这里要把握好一个尺度。要在行业里、人群中有发言权,需要有标签和成就,需要有让人们信服的东西。但如果痴迷于这些,无异于修炼武林秘籍时走火入魔。所以我会左右权衡,然后做取舍。当然,我也会犯错,甚至双眼也会被诱惑。但这是我选择的路,这些挑战,我就都会接受。

说回工作,其实相对来说,我在广州研究院的工作更加轻松。虽然也在做性能优化,但是一部分业务变成了三方App分析。这部分工作相对容易一些,所以总体来说更加轻松了。

于是乎,不只是博客园。在闲暇时,我开设了知乎专栏和微信订阅号。那个时候的订阅号还叫做“App开发经验谈”。刚开始是把之前写过的文章搬运过来,后来就是新创作的内容多平台同步发,像现在这样。后来还在GitChat上面举行收费Chat,主要是写Flutter技术方面,评价一直是五颗星满星。

再到后来,就有编辑邀请我写一本Flutter相关的书。那个时候Flutter刚刚发布没多久,版本号还没过1.5。在技术圈属于“新兴”的玩意,再加上其描绘的跨平台开发蓝图,吸引了不少开发者。

一开始,我觉得自己一直是读者,技术水平远远达不到写书的高度,就婉拒了那位编辑。后来没过多久,大概也就一周或者两周的时间,就又有一位编辑来找到我,问我有没有写书的意向。

能收到这样的邀请,固然是件开心事。但如果真的要写,就是一份责任。

我回到当时租的房子,和老婆商量这件事。我把我的担心跟她讲了,她劝我试一下,人生总要有第一次。看到老婆这么支持和鼓励我,我最终鼓起勇气开始写作。

由于是我一个人写,再加上不是全职,速度固然比较慢。从3月12日开始规划目录结构,到8月9日完成全部初稿,总共用了5个月。说来也巧,写作这本书的开端是在3月12日,恰好是植树节。写作这本书,就像是种下了树苗。从此之后,我的写作不再是单纯的免费分享,而是终于开始走向盈利了。虽然到今天为止,这棵小树还没长成参天大树,甚至长出了一些不该有的树杈,但它终归是会成长,是会长大的,也终将变成一棵参天大树。

在写作这本书时,我还在书中藏了一些彩蛋。比如相声里的“报菜名”、同事的昵称、老婆的昵称等等。后来这些彩蛋被完整地保留了下载,如果感兴趣的话,可以搜索《Flutter从0基础到App上线》。但是,我不建议大家买来读了,毕竟是几年前的书,技术的更迭已经使这本书变得没什么时效性了。

毕竟是第一次写书,这次合作虽然最后以成功达成告终,但稿酬是按量计算的,而非销量。也就是说,交付、校对、修改、终版稿件后,只有一笔稿酬。无论这本书日后销售情况如何,收益也和我没什么关系了。万一我写出来一本爆款,岂不亏大了?

后来也是一次巧合,清华社的编辑联系到我,看我一直做Android性能优化,问我有没有这方面的意向。那个时候的我有了第一本书的成功,对后续的写作可以说是信心满满,甚至很期待再有一次。不过这次我变聪明了,先确定稿酬支付的方式,再继续往下谈。

第二本书,题目是《打造流畅的Android App》。这本书是面向有一定基础的Android开发者的,讲的内容其实就是我的工作总结,结果销量一般。不过这本书还带来了一个神奇的效应,就是到后来我面试的时候,面试官是拿着这本书进来的,结果自然是技术也没面什么内容,这个收益倒是我之前完全没有预料到的。

如此经历,让我明白:“正确的事,要重复做”。对,又是一个简单到不能再简单的道理。

随着工作年限的增长,我发觉很多类似这样简单的道理,反倒被很多人遗忘了。这就像极了我们买了很多书,或者收藏夹里装满了“干货”,却从没有看过一样。其实,正确的做法根本不是贪多,而是做好,哪怕只是很简单,很容易的小事情。正所谓:“勿以善小而不为”。而且作为程序员,应该很了解问题拆解是咋回事。道理都是一样的:一点一滴地做,汇总起来,就是个宏伟的目标。

除了这类盈利的写作,我的博文很荣幸地被谷歌开发者官方微信公众号转载了。我也收到了平生第一件来自技术社区的纪念品:好像是一件Google的T恤,还有Flutter的贴纸啥的。后来收到的越来越多,我就数不过来,也记不清了。

随着这些成就逐渐达成,博客便慢慢地被我疏远了,公众号也停更了,实在是忙不过来,顾不得它们了。毕竟我有了家庭,总不能回到家还像上班那样吧。

不知不觉,2019年就来到末尾了。

哦,对了,还有件大事。就是广州三星研究院,我所在的部门解体了。于是,我们便决定回天津生活。这是2019年年底发生的事,当然,真正离开是在2020年的春节期间。对,就是那个疫情刚开始大爆发的时候。也正是这样,我的司龄加了0.5,拿到了更多的赔偿金。

说起来,对三星这家公司还是挺感恩。首先是出差的机会,让我不再是单身;然后就是去广州工作生活,不用担心异地的问题;最后就是两次补偿金。这种体验,相信不是大部分都体验过的。当然,会有人觉得很动荡。但我觉得每一步都踩在了正确的节奏上,对于我来说,挺好的。

从前两年开始,每年年末,我都会看罗振宇的跨年演讲。2019年年末,终于有人陪我一起看了。

回顾那一年的跨年演讲内容,给我感触最深的就是灵魂五连问:“你是谁?你干啥?你为谁干?别人需要你吗?社会更好了么”?没错,这是值得每一个忙碌的人、每一个迷茫的人思考的问题。如果一个人,不再被需要,不再对这个社会、这个世界有所贡献,那这个人就已经死了。

抱着这样的态度,我们一起跨入了2020,那个去哪儿都要戴着口罩的一年。

相关文章:

我的十年编程路 2019年篇

随着2018年,三星天津研究院的裁撤,我选择了到广州的三星研究院工作,与最心爱的她开始一起生活。 这一年的开始,我注册了博客园。和2014年类似,在刚注册不久,我写了一篇题为《全新开始,全心出发…...

(蓝桥真题)剪格子(搜索+剪枝)

样例1输入: 3 3 10 1 52 20 30 1 1 2 3 样例1输出: 3 样例2输入: 4 3 1 1 1 1 1 30 80 2 1 1 1 100 样例2输出: 10 分析:这道题目我们直接从(1,1)点开始进行dfs搜索即可,但是需要注意一点的是我们搜…...

Kalman Filter in SLAM (3) ——Extended Kalman Filter (EKF, 扩展卡尔曼滤波)

文章目录1. 线性系统的 Kalman Filter 回顾2. Extended Kalman Filter 之 DR_CAN讲解笔记2.1. 非线性系统2.2. 非线性系统线性化2.2.1. 状态方程f(xk)f(x_k)f(xk​)在上一次的最优估计状态x^k−1\hat{x}_{k-1}x^k−1​处线性化2.2.2. 观测方程h(xk)h(x_k)h(xk​)在这一次的预测…...

关于vertical-align的几问

vertical-align属性可以给我讲解一下吗? 当使用table-cell布局或inline元素时,可以使用CSS的vertical-align属性控制元素的垂直对齐方式。该属性可应用于元素本身以及其父元素(例如,td、th、tr和table)。 以下是vertic…...

【拜占庭将军问题】这一计谋,可以让诸葛丞相兴复汉室

我们都知道,诸葛亮第一次北伐是最可能成功的,魏国没有防备,还策反了陇西,陇西有大量的马匹可以装备蜀国骑兵,可惜街亭一丢,那边就守不住了 当时我不在,只能作诗一首~ 如果穿越过去,…...

【Linux】 -- make/Makefile

目录 Linux项目自动化构建工具 – make/Makefile 背景 依赖关系和依赖方法 多文件编译 项目清理 make原理 Linux项目自动化构建工具 – make/Makefile 背景 一个工程的源文件不计其数 按照其类型、功能、模块分别放在若干个目录当中 Makefile定义了一系列的规则来指定&…...

Forter 对支付服务商应对欺诈的四个建议和Gartner的两个关键结论

Gartner新版2023年度《线上欺诈检测市场指南》发布恰逢其时-企业正面临来自专业黑产和欺诈者与日俱增的压力。而在2023年,许多商户将调整反欺诈策略,对拒付率和转化率进行更严格的监测,以最大限度减少损失并增加营收。以下是Gartn…...

ANR系列(二)——ANR监听方案之IdleHandler

前言 关于IdleHandler,比较多同学错误地认为,这个Handler的作用是主线程空闲状态时才执行它,那么用它做一些耗时操作也没所谓。可是IdleHandler在主线程的MessageQueue中,执行queueIdle()默认当然也是执行在主线程中的&#xff0…...

数学小课堂:数学和自然科学的关系(数学方法,让自然科学变成科学体系。)

文章目录 引言I 数学方法,让自然科学变成科学体系。1.1 天文学1.2 博物学1.3 化学1.4 医药学1.5 物理学II 自然科学的升华过程III 数学方法的意义引言 19世纪初,英国人把采用实验的方法,系统地构造和组织知识,解释和预测自然的学问称为科学。 科学研究的是自然现象和自然…...

[蓝桥杯 2020 省 A1] 分配口罩

思路比较容易想到&#xff0c;因为口罩全部只有15批&#xff0c;因此直接暴力dfs搜索即可 //dfs #include<bits/stdc.h> using namespace std; int ans 9999; int num[] {9090400, 8499400, 5926800, 8547000, 4958200, 4422600, 5751200, 4175600, 6309600, 5865200, …...

第五章:C语言数据结构与算法之双向带头循环链表

系列文章目录 文章目录系列文章目录前言一、哨兵位的头节点二、双向链表的结点三、接口函数的实现1、创建结点2、初始化3、尾插与尾删4、头插与头删5、打印6、查找7、随机插入与随机删除8、判空、长度与销毁四、顺序表和链表的对比1. 不同点2. 优缺点五、缓存命中1、缓存2、缓存…...

一文带你了解,前端模块化那些事儿

文章目录前端模块化省流&#xff1a;chatGPT 总结一、参考资料二、发展历史1.无模块化引出的问题:横向拓展2.IIFE3.Commonjs(cjs)4.AMD引出的问题&#xff1a;5.CMD6.UMD7.ESM往期精彩文章前端模块化 省流&#xff1a;chatGPT 总结 该文章主要讲述了前端模块化的发展历史和各个…...

(六十五)大白话设计索引的时候,我们一般要考虑哪些因素呢?(中)

今天我们继续来说一下&#xff0c;在设计索引的时候要考虑哪些因素。之前已经说了&#xff0c;你设计的索引最好是让你的各个where、order by和group by后面跟的字段都是联合索引的最左侧开始的部分字段&#xff0c;这样他们都能用上索引。 但是在设计索引的时候还得考虑其他的…...

Spring事务管理

文章目录1 事务1.1 需求1.2 原因分析1.3 错误解决1.4 yml配置文件中开启事务管理日志1 事务 1.1 需求 当部门解散了不仅需要把部门信息删除了&#xff0c;还需要把该部门下的员工数据也删除了。可当在删除员工数据出现异常时&#xff0c;就不会执行删除员工操作&#xff0c;出…...

数字化工厂装配线生产管理看板系统

电力企业业务复杂&#xff0c;组织结构复杂&#xff0c;不同的业务数据&#xff0c;管理要求也不尽相同。生产管理看板系统针对制造企业的生产应用而开发&#xff0c;能够帮助企业建立一个规范准确即时的生产数据库。企业现状&#xff1a;1、计划不清晰&#xff1a;生产计划不能…...

vxe-grid 全局自定义filter过滤器,支持字典过滤

一、vxe-table的全局筛选器filters的实现 官网例子&#xff1a;https://vxetable.cn/#/table/renderer/filter 进入之后&#xff1a;我们可以参照例子自行实现&#xff0c;也可以下载它的源码&#xff0c;进行调整 下载好后并解压&#xff0c;用vscode将解压后的文件打开。全局…...

ECharts 环形图组件封装

一、ECharts引入1.安装echarts包npm install echarts --save2.引入echarts这里就演示全局引入了&#xff0c;挂载到vue全局&#xff0c;后面使用时&#xff0c;直接使用 $echartsimport * as echarts from echarts Vue.prototype.$echarts echarts二、写echarts组件这里演示环…...

c++ 怎么调用python 提供的函数接口

在 C 中调用 Python 函数有多种方法&#xff0c;以下是其中的两种常见方法&#xff1a;使用 Python/C APIPython 提供了 C/C API&#xff0c;可以通过该 API 在 C 中调用 Python 函数。使用这种方法&#xff0c;需要先将 Python 解释器嵌入到 C 代码中&#xff0c;然后可以通过…...

【动态规划】背包问题(01背包,完全背包)

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…...

记录 UE5 完全重新构建 UE C++项目

不知道搞了什么&#xff0c;C项目的实时代码编译罢工了&#xff0c;搞了半天都修不好&#xff0c;只能又重建了 UE5 版本为 v5.1.1 删除以下文件夹 /Binaries /Intermediate /SavedBinaries 文件夹是编译后的模块 Intermediate 文件夹里是中间层的C代码&#xff0c;完全由ue…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...