我的十年编程路 2017年篇
2016和2017,这两年是我飞速发展的两年。一方面是技术、工作能力,另一方面是对人生的思考。
随着技术能力的不断提升,博客也随之更新。在2017年伊始,我收到了CSDN学院的讲师邀请函。没错,那个时候我就有机会做视频课了,只是一直在产出图文内容,也就没想着做视频教程。
现在回想起来,当时应该是觉得既然人家都抛出橄榄枝了,我就接着呗。如果能认证通过的话,还能给自己多一个认证讲师的标签。再加上如果万一日后想要做视频内容,也多一个平台。怎么想都不亏,于是就跑去认证,结果不出所料,还真的通过了。不过直到今天,我也没在CSDN平台上面做过视频内容,而且现在除了CSDN之外,其它的平台似乎更适合输出视频教程。这一点我还没有验证,等到真的做的时候再来分享经验。
说起来,虽然我一直用iPhone,但其实还算是个资深花粉。那个时候公司提供的测试机大部分是华为,而且还有一些经典机型。比如现在大家都熟知的Mate和P系列,我其实是从Mate2开始接触的,后来就是Mate7、8、9。对,Mate系列是没有3、4、5、6这几代的,直接从2到了7。P系列则最早接触P7。现在回想起来,华为手机大概就是从Mate7开始走红的,当时市场上很难买到,要靠抢才行。后来还了解到光那个手机的包装盒,就花了不小的成本,包装的手感和开箱体验都不错。
另外就是华为海思处理器,从拉跨的K3V2,到后来的960、980、990(5G)……这一路走来,无论从性能还是功耗,都有极大的提升。这不只是坚持不懈、努力拼搏那么简单,还有当面对市场的质疑,特别是产品初期的时候,就更需要一颗强大的内心来支撑。这段路,想必华为走得一定很辛苦。
而这样的一段路,像极了那些并没有含着金钥匙出生的孩子。或许等他们长大,拼尽一生,也许才能刚刚追上某些人的起点。我听说过一部纪录片,叫做《人生七年》,大概就是跟拍了几个不同家庭背景的孩子,直到他们老去。结果发现那些出身普通的人,最后还是很普通;而出身寒门的人,终其一生,结局也没有变得多么好。
当人们年轻的时候,总会憧憬未来,觉得自己一定是能够改变世界的人。但随着成长,会慢慢发现,原来那些憧憬或许只是憧憬,终究被现实打败。随着年龄的增长,这些憧憬慢慢地被时光所冲淡,只剩下现实的一地鸡毛。
但是,我不想就此躺平,而且直到今天,我仍然很拼,支撑我的就是想要改变家族现状的使命感。而且我已经成功地扭转了一些状况,迈入了中产阶级的圈子,提高了下一代的起点。而且不只是金钱方面,我博览群书,吸收知识,掌握本领。希望把正确的价值观、人生观和生存技能传承下去。
或许我的下一代会选择躺平,重新让家庭回归贫穷。但作为我这一代,我努力过了。就像《飞越疯人院》里主人公那样:“至少我努力过了”。从某种意义上讲,有时候我感觉自己还挺英雄的。
话说回来,其实2017年的工作,一上来就是维护版本,常规修Bug。后来觉得App太臃肿,很多顽固的Bug已经很不好解决了,于是便决定重构软件。那个时候,同事亲切地称呼我为:“重构奠基人”,你应该直到我在整个重构工作中的位置了。
但随着重构工作的进行,我越来越觉得不对劲。当时的工作又只是单纯地调用API,像搭积木一样的机械编程了。虽然我仍然保持探索精神,尝试没用过的MockPlus等等。可那个时候,我已经懂得了“天花板”的概念,我觉得我已经不能在公司里面以令我满意的速度提升自己了。另一方面,在当时,一些公司的面试邀请很频繁地出现在我的收件箱里。这里不乏像科大讯飞这样前沿技术的公司,这对我来说,吸引力真的很巨大。于是从7月份开始,我就开始寻找新的工作机会了。结果最终确定下来,在国庆节后的10月11日,入职三星通信研究院。
选择三星的原因就是想去500强的外企看看,无论从技术本身还是管理流程,都会比我原先的公司要正规一些。我的部门领导也建议我选择三星,理由大概也差不多。再有就是公司离家近,且薪水增加不少。
也许是被老天眷顾,我入职后不久,公司就邀请包建强进行Android培训。我当时虽然在职能部门上归属测试,但是实际的工作是代码优化,具体来说就是性能优化。所以这场Android培训我所在的小组也都参加了,通过这场培训,拉近了包老师和我的距离。
记得那个时候,包老师建了一个微信群,说自己有一本书,需要将其翻译成英文,让海外的读者感受一下来自中国的插件化开发技术。这个翻译的工作我也参加了,还帮忙复查其他朋友翻译后的章节。
翻译完成后,收到了包老师的赠书,里面有签名和简短的祝福语。巧的是,收到书的那天,正好是我的生日。所以当时我在朋友圈里晒了书的照片,并配上文案:“这是最好的生日礼物”。
后来,这本英文书还上架了海外的Amazon电商,里面有了我的名字。
在三星的工作充满着自由、挑战和舒适。自由是指弹性工作制,没有加班文化;挑战是指性能优化确实有难度,要先看懂现有的代码,然后稍加修改,还不能产生副作用;舒适是指一日三餐公司全包,按照法定支付加班费。
所以,我在入职后,一方面处理工作本身的挑战,另一方面,家里终于装了宽带网络,也终于买了电视。
入职三星后,我很快对工作内容就上手了,很快适应了新的工作。年底的时候,还获得了2017年的“及时奖”。没错,这是我职场生涯中第二个奖。
哦,对了。我当时还萌生了买一台PS游戏机的想法,还注册了PlayStation账号。但是,看纪录片、听音乐、读书已经耗光了我的时间,怕是买来PS也是吃灰。或者它不吃灰,而是我放弃一项爱好。反正不管怎么选,我都要损失,索性就没买,一直到现在。
那段时间由于闲暇时间变长了,我还特意买了盗火纪录片论坛的VIP,下载各种纪录片来看。另外就是CD机隔三岔五地出问题,我就要拆开它修一修。我依稀记得那个时候我特别迷巴赫,特别喜欢他的哥德堡变奏曲,被我个人誉为巴洛克时期的代表作。推荐大家去听一下,我保准很多人都听过,只是不知道它叫什么名字。
或许是从那一年开始,我注册了得到,从那一年起的每年年末都要看罗振宇的跨年演讲。我还成为微信读书的死忠粉,开始看电子书。
也许是读了某些书的缘故,我总会引用一些句子,时常提示自己保持头脑清醒,做个明白人。比如下面这句:
当我们认为自己对这个世界已经相当重要的时候,其实这个世界才刚刚准备原谅我们的幼稚。
这句话让我意识到在这浩瀚的天地间,一个人,或者说是人类的渺小。
还有这段话:
有人说:“我生活在社会土,当然会有需要。”
你有没有认真思考过这个问题:你真的有需要吗?这个需要是真实的吗?你除了需要空气,需要睡觉,需要吃饭,其他的需要都不是真实的。你需要的名誉、金钱、虚荣、认可、尊重,这些外在的事物都不是必需的。刚出生的婴儿,他不需要;人老去的时候,也不需要。你觉得自己需要,只是你被教育成这样,然后你就以为真的需要,而且需要更多,永远没有止境。当你“看见”了,你会知道自己原来不需要。
这段话让我看见自己的欲望多么可笑,自此之后,我就只关注和购买像优衣库(而且是红色价签)之类的价格合理且耐穿的衣服、鞋等等。就在去年,我还买了iPad资源机,而不是买零售版新机。反正都是一年保修,都是没拆封的,所以在我眼里也没有太大区别。
钱要花在值得花的地方,而不是满足欲望。欲望永无止境,真正的需求绝非如此。
家徒四壁的情况也开始改善了。我根据房间的尺寸,不定期地购入一些柜子,用来放书。还换了床上用品,毕竟舒适的睡眠很重要。各种家电也置办上了,比如小冰箱,到了夏天,我就有冰镇的凉茶可以喝了。再比如咖啡机,到了该打鸡血的时候,来上一两杯,人又生龙活虎了……
终于……我的小屋能有点生活的味道了。
与此同时,我的写作也没有停止,简书上时不时地就有新的粉丝和点赞。不过坦率地讲,这一年写的东西变少了,看的东西更多了。
有了这些收获,我的内心非常满足。
闲下来的时候,我回去家后面的天大/南大散步。或者开车去稍微远一点的地方走走,总会拍一些好看的照片。说来也是无心插柳的事,正是因为有了这些照片,我还成为了图库中国的签约摄影师。不过现在这个网站好像已经关停了。
说到底,有了车之后,生活半径确实扩大了。为了感受艺术,我还跑去看了国家地理照片展。幸亏我翻了一下朋友圈,不然我就落下了唯一一次观看照片展的经历。
看似事情很多,我是怎么把它们安排妥当的呢?答案是——滴答清单。我是从2017年开始使用清单类App,刚开始是我同事推荐给我的一款,我现在实在想不起叫什么名字了,后来好像是被微软收购了,反正最终我用的是滴答清单。
虽然我没看过《搞定》,也没看过《清单革命》,但是我确实在践行这两本书中所提倡的做法,多少有点“冥冥之中天注定”的感觉。
哦,对了,我还花重金买了一台电钢琴。琴本体、琴架、座椅、三踏板,加一起4300大洋。虽然我没有什么天赋,但是偶尔乱弹,发挥点创造力还是挺好玩的。如果你看了2022-2023年的罗胖跨年演讲,就会发现他这么大的年纪,竟然还能学着弹钢琴。我还年轻,咋就不行呢?
就这样,丰富的2017年很快就到年底了。这一年的关键词,是“自由”,是“领悟”,是“改变”,更是“进化”。让我不止收获了工作上的成就感,还让我渐渐地领悟生命的真谛,永远感恩这一年。
相关文章:
我的十年编程路 2017年篇
2016和2017,这两年是我飞速发展的两年。一方面是技术、工作能力,另一方面是对人生的思考。 随着技术能力的不断提升,博客也随之更新。在2017年伊始,我收到了CSDN学院的讲师邀请函。没错,那个时候我就有机会做视频课了…...
hadoop有多个输入路径怎么处理
在Hadoop中,可以使用FileInputFormat的addInputPath方法来添加多个输入路径。以下是实现步骤:创建一个Job对象,并设置相关的参数和配置信息。调用FileInputFormat的addInputPath方法添加输入路径。例如:FileInputFormat.addInputP…...
day6 ServletContext
ServletContext 一个Servlet对象对应一个ServletConfig。100个Servlet对象则对应100个ServletConfig对象。 只要在同一个webapp当中,只要在同一个应用当中,所有的Servlet对象都是共享同一个ServletContext对象的。 ServletContext对象在服务器启动阶段…...
Dockerfile部署SpringBoot项目
Dockerfile部署SpringBoot项目 文章目录 利用Dockerfile部署SpringBoot项目 1、创建一个SpringBooot项目并且打成jar包2、在Linux中创建一个文件夹,来做docker测试3、将jar包上传到Linux中4、编写Dockerfile文件5、制作镜像6、启动容器7、查看容器启动日志8、访问接…...
Java面向对象特征之三:多态
一:面向对象三大特征之三:多态 1.多态是什么? 同类型的对象,执行同一个行为,会表现出不同的行为特征。 比如:猫和狗都是动物类型,执行同一个行为,但是会表现出不同的行为特征&…...
基于ATX自动化测试解决方案
在整车开发中,诊断功能实现后需要进行测试验证。测试验证主要分为两个方面:诊断协议层测试和诊断功能测试。诊断协议层测试:需要对服务层服务定义、传输层相关时间参数进行测试验证;诊断功能测试:需要对各诊断功能项&a…...
Qt学习5-Qt Creator文件操作(哔站视频学习记录)
实现文件编辑器代码 目录 一、代码要点 二、重点函数 1、conncet 2、getOpenFileName 3、getSaveFileName 4、读取文件到textEdit 5、textEdit保存到文件 三、全部代码 mainwindow.h mainwindow.cpp 一、代码要点 MainWindow的菜单栏实现;connect函数连接…...
LeetCode15三数之和 容易理解版本
题目: 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三…...
Spring Boot 3.0系列【11】核心特性篇之国际化
有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot版本3.0.3 源码地址:https://gitee.com/pearl-organization/study-spring-boot3 文章目录 前言基础知识国际化简介浏览器语言LocaleMessageSourceMessageSourcePropertiesLocaleResolver案例演示案例一:后台消息国…...
每日学术速递3.7
CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Dropout Reduces Underfitting 标题:Dropout 减少欠拟合 作者:Zhuang Liu, Zhiqiu Xu, Joseph Jin, Zhiqiang Shen, Trevor Darrel 文章链接:h…...
灯具照明行业MES系统,助力企业实现数字化转型
灯具照明行业在制造领域,是典型的高科技离散生产制造模式,大部分企业都设置:电源组件、光源组件、或光电一体组件 ,工艺以SMT、DIP等。 灯罩主要采用吸塑工艺及模具加工;其它金属的面盖、灯体、灯盒基本都是采用压铸、…...
超实用!JavaScript修改CSS变量,达到动态修改样式的目的
在网页开发中,我们通常使用CSS来设置网页的样式。但是,在开发过程中,有时候我们需要根据不同的条件来动态修改样式,这时候就需要使用JavaScript来实现。 在CSS中,有一种变量的概念,可以使用变量来定义颜色…...
解决Vue3 默认槽的非函数值 - Non-function value encountered for default slot 的警告
解决警告⚠️:[Vue warn]: Non-function value encountered for default slot. Prefer function slots for better performance. h函数的第三个参数加上箭头函数 原因分析: 一般 第三个参数如果不是默认插槽的话 就是当作children传下去,…...
【Git】P2 分支(创建分支,合并分支,分支冲突,分支分类)
分支分支的概念2077 与 分支git - 分支分支语句查看与创建分支切换与删除分支合并分支分支冲突分支分类分支的概念 什么是分支? 2077 与 分支 我最喜欢的游戏就是 赛博朋克2077,美国末日 和 GTA,下图是2077的存档。 存档非常多的原因是因为…...
2023年全国最新交安安全员精选真题及答案14
百分百题库提供交安安全员考试试题、交安安全员考试预测题、交安安全员考试真题、交安安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 41.事故隐患泛指生产系统中可导致事故发生的() A.人的不…...
Air101|Air103|Air105|Air780E|ESP32C3|ESP32S3|Air32F103开发板:概述及PinOut
内容均引自合宙官方wiki,详细内容请参考: :LuatOS 文档 。 1、合宙Air101(芯片及开发板) 合宙Air101是一款QFN32 封装,4mm x 4mm 大小的mcu。通用串口波特率,设置波特率为921600。 固件编译可…...
【代码随想录训练营】【Day35】第八章|贪心算法|860.柠檬水找零|406.根据身高重建队列|452. 用最少数量的箭引爆气球
柠檬水找零 题目详细:LeetCode.860 一道非常简单的模拟题,根据题目要求编写程序即可: Java解法(模拟): class Solution {public boolean lemonadeChange(int[] bills) {int money_5 0, money_10 0;fo…...
嵌入式C基础知识(23)
常用C/C代码规范头文件的保护所有的头文件都应该使用#define来避免多次引用,符号格式为:<PROJECT>_<PATH>_<FILE>_H_例如头文件:foo/src/bar/baz.h#ifndef FOO_BAR_BAZ_H_#define FOO_BAR_BAZ_H_...#endif // FOO_BAR_BAZ_…...
一文掌握组织项目等级划分维度,标准和实例
当你遇到多项目怎么管?遇到项目之间的冲突怎么解决?很多公司没有项目优先级的划分,会对企业造成很多严重的问题。首先,会造成不合理的资源分配:缺少项目优先级的情况下,很难确定哪些项目是最重要的…...
【C++】list的使用和基本迭代器框架的实现 vs和g++下string结构的说明
真正的成熟应该并不是追求完美,而是直面自己的缺憾,这才是生活的本质。 文章目录一、初见list1.list的迭代器失效和基本使用2.list的operations操作接口(看起来挺不错的接口,但可惜不怎么实用)3.vector和list的排序性能…...
基于深度学习的轴承寿命预测实践,开发CNN、融合LSTM/GRU/ATTENTION
关于轴承相关的项目之前做的大都是故障识别诊断类型的,少有涉及回归预测的,周末的时候宅家发现一个轴承寿命加速实验的数据集就想着拿来做一下寿命预测。首先看下数据集如下:直接百度即可搜到,这里就不再赘述了。Learning_set为训…...
redis进阶:mysql,redis双写一致性,数据库更新后再删除缓存就够了吗?
0. 引言 最近线上的一个状态修改功能出现了问题,一开始是运营找了过来,运营告知某条数据的状态已经开启了的,但是实际使用起来还是没有生效,于是拿到这个问题后,首先就去数据库查了这条数据,发现确实如他所…...
RTOS中互斥量的原理以及应用
互斥量的原理 RTOS中的互斥量是一种同步机制,用于保护共享资源,防止多个任务同时访问该资源,从而避免数据竞争和不一致性。 互斥量的原理是通过对共享资源进行加锁和解锁操作来实现的。 在RTOS中,互斥量通常是一个数据结构&…...
数据分析:基于随机森林(RFC)对酒店预订分析预测
数据分析:基于随机森林(RFC)对酒店预订分析预测 作者:AOAIYI 作者简介:Python领域新星作者、多项比赛获奖者:AOAIYI首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞…...
【python】序列(列表、元组)、字典、集合的初步认识
一、序列 序列类型(sequence):一组有序的数据集,特点是数据之间存在先后关系,通过序号访问 序列包含以下三种类型: 1.字符串(str)不可修改 2.列表(list)可修改 3.元组(t…...
周赛335(模拟、质因子分解、分组背包)
题解:0x3f https://leetcode.cn/problems/number-of-ways-to-earn-points/solution/fen-zu-bei-bao-pythonjavacgo-by-endlessc-ludl/ 文章目录周赛335[6307. 递枕头](https://leetcode.cn/problems/pass-the-pillow/)模拟[6308. 二叉树中的第 K 大层和](https://le…...
【极致简洁】Python tkinter 实现下载工具,你想要的一键获取
嗨害大家好鸭!我是小熊猫~开发环境本次项目案例步骤成品效果【咱追求的就是一个简洁】界面如何开始?1.导入模块2.创建窗口【这步很重要】功能按键1.创建一个下拉列表2.设置下拉列表的值3.设置其在界面中出现的位置 column代表列 row 代表行4.设置下拉列表…...
npm i 安装报错
npm WARN EBADENGINE Unsupported engine { npm WARN… npm WARN deprecated stable0.1.8: Modern JS… 诸如此类的报错。大部分都是因为 node 版本问题!比如node版本无法满足,对应项目里需要的那些模块和依赖所需要的条件。 有些模块对node版本是有要…...
原腾讯QQ空间负责人,T13专家,黄希彤被爆近期被裁员,裁员原因令人唏嘘。。...
点击上方“码农突围”,马上关注这里是码农充电第一站,回复“666”,获取一份专属大礼包真爱,请设置“星标”或点个“在看这是【码农突围】的第 431 篇原创分享作者 l 突围的鱼来源 l 码农突围(ID:smartyuge&…...
【C++】BloomFilter——布隆过滤器
文章目录一、布隆过滤器概念二、布隆过滤器应用三、布隆过滤器实现1.插入2.查找3.删除四、布隆过滤器优缺五、结语一、布隆过滤器概念 布隆过滤器是由布隆(Burton Howard Bloom)在1970年提出的 一种紧凑型的、比较巧妙的概率型数据结构,特点是…...
做灯具外贸哪个网站好做/海外独立站
源码获取:俺的博客首页 "资源" 里下载! 项目介绍 酒店管理系统共分为三个角色,客房经理、前台管理员、客户,各个角色的权限各不相同; 客房经理功能包括:登录、注册、前台用户管理、客房管理、优…...
广西城乡建设委员会的网站/怎么联系百度客服
原文:https://jingyan.baidu.com/article/5bbb5a1b634cca53eba179ce.html 首先说一下密码必须是6~18位之间的数字,正则表达式为"^[0-9]{6,18}$",其中[0-9]表示必须是数字,{6,18}表示必须在6到18位之间,代码如…...
wordpress微信免签约支付插件/seo教程有什么
1.两台服务器都设置上二进制日志和relay日志:#给服务器命名一个idserver_id140#声明二进制日志的文件为mysql-bin.xxxlog-binmysql-bin#二进制日志的格式:mixed/row/statementbinlog_formatmixed#主主复制时都需要配置relay-logrelay-logmysql-relay2.都…...
外贸网站网站建设/鞋子软文推广300字
不经意间,从事前端开发已经有7年了,慢慢的,我从最开始的写简单的表单验证脚本和滑动效果,过渡到基于OOP的类库开发,然后又经历了长时间的JavaScript模块化开发过程,现在,我开始觉得应该重新整理…...
网站开发语言学习/搜索引擎优化的七个步骤
在小程序开发中,var that this的声明很常见。举个例子,代码如下! 示例代码1 //index.js Page({ data: { toastHidden: true, }, loadData: function () { var that this//这里声明了that;将this存在that里面 wx.request…...
内贸在什么网站做/石家庄限号
支付宝沙箱环境支付demo 下载电脑网站的官方demo: 下载地址:https://docs.open.alipay.com/270/106291/ 解压导入demo项目 3.配置AlipayConfig 3.1 注册蚂蚁金服开发者账号 注册地址:https://open.alipay.com/platform/home.htm ÿ…...