三年努力,我活成了自己喜欢的模样


三年努力,我活成了自己喜欢的模样

1,先唠会嗑吧
   其实最近几年自己还是给自己蛮多压力的,甚至于来不及去回忆一下过去自己所经历的点点滴滴,一直往前走,不敢回头生怕自己会落后很多,所以一直在努力去过自己认知范围的生活,我们都知道程序员,程序媛的工作状态,基本处于一个995的状态,相比于其它行业而言,多多少少还是有那么一点劳累的,但是也可以接受吧,毕竟我们都要去生存,填饱肚子再说其它事情。

2,谈谈我的经历
   17年参加工作之后,在校生的便签还是贴在身上的,可能是由于青涩的脸庞,然而也多了一个标签,它叫作程序员,其实,讲真的,我认为程序员是一个很有意思的人,因此,我称自己为码农。这几年基本上我没有休息过,怎么说呢,大学时认识了很多优秀的人,毕业了在学习的过程中一直以他们为榜样来激励自己继续前进的道路,所以18年是技术增进的一年,休息日基本上也都花在了写代码的过程了,我看过所有人的博客内容,基本上都是自己感兴趣的内容或者工作中需要的内容,这或许就是自己特有的性格使然造成的,下面这是自己18-19年在github上面提交的代码轨迹,粗略计算下来有20-30w行了吧,对,这一段时间完完全全都是输入,没有总结和输出,由于自己是做后端开发的,在应用层层面的内容,自己也比较喜欢,自己的github仓库里涵盖了大部分web技术,由此我也觉得自己是一个码农,不是程序员。

三年努力,我活成了自己喜欢的模样

后面觉得输入的太多了,想着不能就这样吧,因此,慢慢自己也开始了写点自己感兴趣的内容,我的文章不会像很多人文字写的很多,大部分也都是可以看作是一种学习笔记,可能写的时候没有那么多的时间去排版或者用优美的词语注释一下,我觉得吧,写点东西是为了和自己简单的对话一下,加深一下思考问题的内容。到现在也写了300篇文章左右了

三年努力,我活成了自己喜欢的模样


3,谈谈工作吧
     先来说说下面这张图的故事吧,在学习的过程中难免缺少别人的指导,也不可能事事都会有别人的帮助,因为,大家都很忙,顾暇不及你的事情很正常,所以当别人帮不了你的时候不要责怪他或者她,人之常情嘛,因此我们需要一份自己的学习路线图,这样可以在自己开发的道路上辅助辅助自己,不至于迷失方向,况且这也不是一份完整的学习路线,因为它不够详细,也仅仅是学习路线的大致轮廓,对于初学者也足够了,这么多我也是结合自身的学习情况和工作中遇到的问题进行了粗略整理,迷途知返。

三年努力,我活成了自己喜欢的模样

4,谈谈其它
    其实,自己在学习或者过程中难免遇到一些自己不懂或者不会的事情,这个时候搜索技能就体现出来它的作用了,现在的知识很多,如果全靠凭记忆,那估计累个半死不活的也抵挡不住技术更新的速度,如何更好的来迎接未来技术的推陈出新,每个人都有着自己方法论,因此这里不做过多分析我的方法论,况且它本身也不具有可借鉴意义,这里我不得不吐槽一下自己了,大学期间认识了那么多优秀的人,我竟然都不像他们学习,直到大三马上要实习了,自己若不是被周围人刺激了一下,我想估计不会有现在的我,不过那次带给我的也算是一种帮助了,不过现在还好,也没人刺激自己了,自己偶尔反思反思,这样总比别人说自己好。

5,聊一聊最近的事情吧
      最近也没有什么心思去玩,事情有点多,各种事情,洗衣服算不,躺在家里追追剧,打发一下时间算吧,其实,自己偶尔会写一点内容过来的,分享分享一下嘛,毕竟用文字记录的内容都是自己想写的内容,有的时候就是自己对自己内心事情的一种唠嗑版的交流而已,比如下面这张图片内容就在自己的手机便签里存放了很久,这有时间才分享分享,其实,作为程序员,我们每天面对的都是电脑,和人交流的时间太少太少,大部分的时间基本脱离不了这个大致过程【早起,早饭,上班,午饭,午休,上班,晚饭,下班,回家】所以哪有时间说那么长的话呢?没有。

6,最近写过的内容,分享一下

三年努力,我活成了自己喜欢的模样

     
谈论java应用自然而然最先是想到单体应用,此时应用服务器,文件服务器,数据库服务器都放在同一个linux服务器下有序地运行着。

一般现在都采用了前后端分离的形式进行开发,部署,也仅仅以restful接口以一定的数据格式进行交互,如时下最流行的【JSON】格式,这也是人员分配达到合理的应用的体现。

为了提升应用服务器的性能,可以进行垂直扩展机器配置【硬件配置,cpu,memory,磁盘】,使其达到一个合理的配置,进而满足业务需要,使其使用者爽歪歪,产品经理美滋滋。

此时的应用服务器,数据库服务器,文件服务器都存在一个致命问题,单点故障问题,为了解决这个问题,我们可以进行应用服务器集群,数据库集群【master/slave】/【master/master】的搭建,此时还需要引入一下负载均衡【nginx】实现用户请求的分发。

用户请求的分发可以基于各种策略,如轮训,随机分配,加权,最小连接数,ip哈希等一系列均可配置的策略进行设置。

数据库集群可以配置主从模式也可以配置成双主模式,搭建集群的目的是为了解决单点问题,提升服务的性能同时,于此也引入了一些问题,如数据同步延迟问题,资源闲置的问题。

为了可以更加利用闲置资源我们可以使用读写分离的方式来实现写请求到主库,读请求请求从库的方式,当然了,有些业务场景只要满足数据的最终一致性就可以了。

用户对一个系统的基本使用,一般也符合【2/8原则】,即仅仅使用80%的查询操作,20%用作增删改操作,为了提高用户的使用体验,减少对数据库的频繁操作所带来的性能问题,此时我们可以引入缓存来进行解决。

当然了,缓存有本地缓存,分布式缓存之分,各有优缺点,如java应用jvm进程重启了,本地缓存没了,岂不是很sad,分布式缓存可以避免这种问题,分布式缓存服务器目前来看用的最多的当属redis了,于此同时也引入人力资源维护成本,毕竟我们要做成集群模式的分布式缓存,也是为了解决单点故障问题的。

随着系统应用越来越多,我们可能会对系统的整体基于业务划分,使其分布在多个机器部署,实现每个独立的服务可以进行开发,测试,部署,服务之间的交互可以基于消息队列/RPC网络通信的方式进行操作。

消息队列最著名的特点就是异步,解耦,削峰等操作,但与此同时也引入了消息丢失,重复消费的问题,这或许就是告诉我们,事物具有两面性,合理使用才是最重要的,切勿定向思考。

以上所说的也仅仅是个人的一点思考和理解,最终我们还是会回到手写一行行代码,解决一个个bug,吐槽吐槽这该死的需求和那不堪往事的加班日子,这或许就是哭过,笑过所带来的一点点回忆吧