平凡之路

莫问收获,但问耕耘


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索

学习上的那些事儿(一)

发表于 2019-01-04 | 分类于 个人 , 学习感悟

学而不思则罔,思而不学则殆


瞎聊

  很多时候,我们学习Java,开始的时候觉得很容易,越到后面,内容越多,反而心烦气躁起来,学了忘,忘了学,依然会忘,总是摸不到窍门,再看到社会上和身边都是搞Java的,竞争压力可想一般,看到github上人家写的牛逼哄哄的程序,自己又什么都不会,只会一些简单的Demo,更复杂的逻辑想想都头大,当学到框架之后,自己慢慢变得只会套用框架,玩玩CRUD,导致很多人认为,只要会crud,只要会写关于crud之类的业务就可以了,其他都是在 一味的调用api来完成各种组合。于是,你慢慢就害怕咯,后来者学的太快,而且还是全新的知识,自己只会所谓的业务,这些业务的生命周期,不过就是几年光景,当自己想跳槽的时候,一点底气都没。

  将话题回归,面对日益更新的编程行业,每天都会有全新的概念,全新的技术诞生,如何立之于不败,其实大家都懂,以不变应万变,以静制动。就好比我们高中时做题一样,无论题型如何变,如何复杂,不都还是书中的那些基础知识,于是我们老师一直在给我们强调基础的重要性,我们也在一遍一遍的通过做题来加强我们对于基础的理解。这些基础就是不变的东西,也是静物。

  同样,对于编程语言来讲,其首先是一门语言,我很纳闷国内大学为什么不把编译原理放在大二的时候就开始讲的,哪怕讲的简单一点,可以让学生知道你们是在学习和汉语英语一样的东西,都有词法分析,语法分析,语义分析。而语言是用来表达思想的,没有思想,你只能是一个行尸走肉,这就是国人学习编程最可悲的地方,无视算法的重要性,它是我们组织逻辑的基础,我们的思维需要这些逻辑和相应的语言来表达,而国内太多的培训机构两者皆可抛,大学教育同样如此,只是大家都知道重要,都不去做,因为知道,它不能给你带来短期快速收益,它在你看来不是前沿的东西,殊不知,这些才是最前沿的,经久不衰,各种技术换汤不换药,用的都是他们。

  总结出来,论数据结构和算法的重要性,论基础的重要性,有时候自己迷茫的时候,回归下算法,回归下基础,Java的话,我们可以深入一些我们平时使用的API,其内部用了什么样的算法,一个小程序内部是算法,几个类组成的大点的程序,可能是按照设计模式来进行的,而设计模式,又何尝不是一种别样的算法,属于我们抽象出来的解决事情的标准。不扯更多了,沉淀自己,坚持学习,就这么简单,仅此而已。

走过2018来到2019

发表于 2019-01-01 | 分类于 个人

时间是最真实的记忆,真实得让人不敢面对。


2018

  2018,如果要用一个词语来形容,那就是魔幻,迄今为止记忆最深刻的一年。

工作

  2018年伊始,就在准备着换工作,而且不单单是换工作,我还要换个城市,从羊城回到天府之国,回到家的方向。这次换工作意味着我要裸辞,而且不会很快找到工作,不过我还年轻,孜然一身,没有那么多羁绊,总要大胆做些什么。

  3月底回到了成都,住在一个好朋友那,川大附近,然后就开始准备简历面试了,期间面过五六家吧,基本上都算过了,有些因为工资问题没去,有些因为公司问题没去,结果不知不觉的和当下互联网金融结缘,这其中还有一段故事。最开始去了一家本土也比较大的互联网金融公司,通过他们公司的专场面试,当时还感觉挺不错的,从面试的专业程度以及面试者的个人性格。但我只上了一天班,因为期间发现它们公司工作环境太封闭和压抑,管理和人事不够专业和认真。报道时就打了一份的合同也没让我马上签,就领着我进了项目组,而且办公环境是每个项目组一个办公室,每个办公桌用那个隔断隔开的。本能的我是排斥这种办公环境,环境压抑,那个隔断就好像隔开了大家之间的所有联系,我知道我在这里呆不下去,所以到了下午,我就直接联系了人事,和他们谈了一些我个人的感受,然后选择了离开。

  祸兮福所倚,福兮祸所伏。没有选择忍耐而离开,却正好进了另一家互联网金融公司,看来我与互金行业很有缘啊,但是这缘分却来的太迟,没有经历红利期,却相遇艰难期,当然这是后话了。这家互金公司是一家以技术为核心驱动力的公司,这也是吸引我的地方,所以我选择了它,也谢谢它选择了我。在这家公司,我个人其实成长了很多,包括但不限于知识深度、知识广度、视野、生活方式、个人能力等。首先,在这家公司以技术为驱动的公司里,我见到了各种技术分享与研究,对于每周的分享会我都会尽量参加,不管服务端还是其他方面,因为这些不都是晦涩难懂的,各位讲解者尽量用通俗的方式表达出来,这对于拓展知识广度有着重要的意义。虽然公司公众号文章质量良莠不齐,但可以去其糟粕,取其精华,公司的一些框架和自研的技术挺有意思的,结合wiki也研究了一些。这些都是知识上的增长,相对于知识,公司的同事其实更有意思,在公司结识了很多同事,他们都是些优秀的人,比我大的人占了绝大多数,通过他们,可以观人生,修自身,铭得失。

  所以说一家公司的企业文化和公司氛围很重要,其实在才进公司的时候,公司整体都还兴兴向荣的,当时我进去的时候公司还冲着上市为当年目标呢,但是呢,互联网金融这个行业整体环境不行,2018又正式国家打压的时间点,其实在2017年就有很多P2P公司暴雷了,没想到这股风持续到了2018年底,最早在10月的时候公司的各种风气就开始不对了,总是出现一些莫名其貌的问题,所以当时我们做技术的也不能专心下来做技术了,公司慢慢多了很多窃窃私语。在12月中下旬的时候,公司总有开始行动了,伴随着整个互联网裁员风,作为成都分公司的我们也遭受到了重大裁员,我理所当然的也受到了波及,不过这一些我早已料想到,所以也能坦然应对。想当初怀着大浪淘沙的心态进入互金,以为待在头部企业有所为,却不知浪太大,石头也能给你祛几层皮。

生活

  决定这次回成都的很大原因是为了买房,然而在魔幻的2018,地方政策瞬息万变,回来的第二个月,更为紧缩的政策让我也丧失了资格,房也买不了了。进入社会的我们生活已被工作所占据,绝大多数的生活都是工作,我没有那种硬要把生活和工作分开来过的态度,也没有讨厌工作的想法,有时候我在想是不是我的生活除了工作就没有什么了呢?为什么那些老大哥们都感觉工作的烦躁?大概是我工作的时间还不够长,又或者是我缺少一个家庭,缺少一个孩子,不过当下,工作可以构成我生活的重要一部分。今年回成都居然意外的重拾了读书的习惯,这算生活中另外一大惊喜,我喜欢读书,喜欢读杂书,涉猎广泛,不求甚解。

感情

  2018最遗憾的事就是感情了,记得在回成都的时候还信誓旦旦的说要真心找个女朋友,这在当时可是和找工作并驾齐驱的目标,可是找女朋友这匹马太会偷懒了,一直跑到年底了都未达成目标。其实在今年也追过一个女孩,一个我真心很喜欢的女孩,可能是一见钟情也可能是再见倾心。当然我也主动了,尽最大的努力释放我的爱意,展现一个真实的我,追求了28天吧,在这28天里让我除了工作还感受到了生活,不知是谁说过太美好的过程都有悲伤的结局,还真被他说中了,可恶。真的不知道为什么越来越难喜欢上一个人了,以前觉得好看就去追求,后面觉得谈得来就可以在一起,但是现在感觉总是差那么一点,喜欢不起来。2018也过去了,记得朋友还问我2019年的目标是什么呢,我说找个女朋友,朋友笑骂到你怎么那么没出息,哎呀没法办,我等屁民,一日三餐,爱情亲情友情维护好就行了,哪有什么宏图伟愿。2019,我还是喜欢你啊!

成长

  2018,最大的成长就是精神上的成长,懂得了很多道理。让我不再愤青,不再冲动,因为少一些偏见,或许看到的世界就不会被局限。在于世界观上也提升了很多,因为炒股而喜欢上了经济学的东西,因为经济学而了解了更多国际和政策上的东西,因为懂得了更多宏观上的东西而能够对于生活工作和感情上的事情泰然处之。成长不是痛苦的,只要是努力活着,想要自己过的更好的人,没有人不累,没有人没付出过汗水。


2019

  • 技术上多思考,把零散的知识串联起来,形成一张网,查漏补缺。
  • 多学几门语言,python继续,golang开始学习
  • 往架构和中间件方向思考问题。
  • 考项目管理相关证书
  • 找一个喜欢女的朋友
  • 读12本书以上至少一本英语原著
  • 健身(马甲和胸肌)
  • 思考中年出路(方向、计划)
  • 玩

个人简历

发表于 2018-12-19 | 分类于 杂集

杨鹏

  • 17620989328 | yangpeng54@hotmail.com | 成都 | 本科

  • GitHub:https://github.com/imyperial

  • 应聘岗位:高级工程师 | 工龄:3年


专业技能

  • 服务端开发,能够从零开始依托java平台搭建业务服务,熟悉敏捷开发模式。
  • 了解JVM和JMM,掌握JVM调优和相关工具jps、jstack、jmap,jhat、jstat。
  • 熟悉各种工具的使用:项目管理git,自动化CI/CD相关工具,maven,gradle构建工具。
  • 熟悉Spring Boot/Spring cloud/Dubbo 等为服务框架和架构,并有实践经验。
  • 分布式系统的设计和应用缓存、负载均衡等机制的实现。
  • 了解高并发、高可用程序设计和开发经验,熟悉领域驱动模型。
  • 对Java多线程和线程安全问题有一定了解,熟悉并发工具类,对锁机制有一定的理解。
  • 了解service mesh(Istio),对docker和k8s技术保持兴趣。
  • 熟悉 MySQL,能够通过执行计划对sql进行优化。
  • 掌握 Redis、MongoDB,研究过关系、非关系数据库实现。
  • 熟悉常用数据结构和算法,能简单运用算法和数据结构进行实战。

工作学习经历

  • 2018.04 ~ 2018.12 上海点融信息科技有限公司
  • 2016.03 ~ 2018.03 广州广电运通金融电子股份有限公司
  • 2012.09 ~ 2016.06 成都理工大学-信息科学与技术学院-物联网工程 (本科)

主要项目

LCRM(投资管理)

在P2P行业,风控往往分为贷前、贷中、贷后三个部分,虽然三个环节紧密相扣,但最关键的是贷前,换句话说就是标的的项目来源,也就是大家常说的资产端。投资管理这块就是负责资金方和投资客户的管理,包括通过管理制定不同的标、不同等级的客户,并且收集数据给下游其他系统。

工作职责:业务开发,项目优化与重构,架构的更替。

优化经历:
  • 拓展product模块,根据不同的进件适配不同的product,减少开发成本。
  • 优化服务依赖,根据调用链整理服务调用,减少链长。
  • 通过调整服务注册与发现,转为内部域名,为后面逐步移除Spring cloud改为service mesh作准备。
  • 根据业务方需求做客群管理与分析,分配客户给客户经理。

淘淘汽配电子商务平台

淘淘汽配公司依托线下资源开展线上商城,实现商品入库,订单处理,会员 跟踪, 内容管理,支付交易等功能。

工作职责:需求梳理,架构和业务划分,订单模块,部分数据库设计。

优化经历:
  • 通过执行计划优化数据库及sql语句。
  • 利用ack解决服务上线宕机数据丢失问题,如保证数据完整。
  • 项目规范化日志以及日志分析。

广州国资委智慧国资项目

国资委旧系统改造,实现大数据分析和流程平台智能化。

工作职责:团队开发,担任核心开发人员,负责代码 review 及人员调配。

优化经历:
  • Spring cloud项目,通过Data端的批量数据计算模型入库。
  • 统一项目规范,编写项目文档,方便后续人员维护和迭代。
  • 配置 Fastdfs 集群,提取公共 jar 包,开发组件。
  • 因为政府专线问题,配置网络代理服务,构建交互通道,实现与老系统数据传输问题。

深夜一聊(一)

发表于 2018-08-16 | 分类于 个人 , 经济随笔

人皆草木向阳而生


深夜一聊

  不知不觉已经回成都四个月了,这四个月过的很快,但也过得一点也不平静,从广州回来,是有多方面原因的,而原来的广州生活也是我一段难忘的回忆。

  说起来也算是机缘之下,大四上学期当时的我一直很想出川来着,大概是在一个地方生活久了,总想换一种生活,恰巧前一家公司来校招,广州的,莫名的就去了,懵懵懂懂的面完试,没问技术就莫名的就拿到了技术型offer,我从此成了一名程序员。

  后面原来公司在去年重组过后,发生了很大的变化,不管是人员上的或者是工作业务上的,这些变动当然在我们看来是不好的,所以造成了很大的人员流动,不过我和一些小伙伴选择了留下来,初衷之一是公司为了留住我们一些人给予了适当的加薪,另一方面是那时候的我,才毕业一年,而且是那种很菜的类型,就算出去了也不能待价而沽。当然该来的还是会来,差不多多待了多半年,拿了年终奖我还是选择了离开,这点要说下,公司领导对我还是挺好的,年终奖达到了预期有余,而且还给发了优秀员工奖,所以不管怎么说,都得感谢下公司,感谢前辈们。

  回来的另一个原因大概就是现实吧,因为家在四川,而且爸妈只有我这一个孩子,无形中的牵挂让我回来了,大概用”父母在,不远游”,形容较贴切。还有就是为了回成都买房,可惜人算不如天算,万万没想到,购房资格变了,新户口加一年社保,或者两年社保,我成了没资格的人,我无能为力。

  新的工作比较闲,基本上一周的工作两天左右的工作量吧,而且弹性上班,不打卡不考勤,我有了更多的时间去做些其他事情,这点还是极好的,比如国事天下事,哈哈。

  这四个月的不平静表现在国家宏观经济上的,表现在国际形势上的,体现在股市楼市上的,体现在货币市场上的。作为一名年轻的韭菜,我可以说是见证了经济形式从今年年初开始的逐渐严峻,先说股市从年初的3300点到现阶段的2700点,还时不时的摸一下2600的底,我的股票也亏了一万多,所以先抹一把泪。再说说楼市,加之最近一直在看吴晓波的《激荡四十年》系列书,关于楼市对于国家的理解更加深入了点,98和08年两次全球性经济危机我国能够独善其身,房地产和基建充当的关键性的作用,所以也就造就了现阶段房地产的泡沫过大,国家也知道,所以现阶段出台了很多政策来控制它,在可预见的全属性金融危机来临之前稳住,避免到时成为一颗定期炸弹,不过,大家都是投机的,在现阶段各种投资都不景气的情况下,人们还是一窝蜂的投资房产,这也是为什么高压政策下迟迟不见成效,这会是最后的疯狂嚒?

  最后再说一下货币,这就不得不提的是国际形势,现阶段的货币下跌基本上都是源自于美元指数走强,其实分析可以看出,美元的加息是不得已而为之,美国的负债率超乎想象,所以采用加息回流美元的方式控制债率,当然这就苦了其他以美元为外汇的国家,加之作为商人和保守派的特朗普,对各个国家增税来刺激美国工业的复苏,那些工业基础薄弱的国家首先开始扛不住了,有先有伊朗,后有土耳其、阿根廷、南非……汇率出线暴跌,经济一片糟糕。说到这里刚刚推送了一条新闻,离岸人民币破6.95了,前几个月专家还说的年内汇率不可能破七,想想万一明天就一举破七了呢。

  写到这里才发现已经两点半了,所以应该不是明天,可能今天就破七了,唉,睡觉睡觉。

——2018-08-16 02:25:10

由类的动态加载和AOP到插件化思想

发表于 2018-07-25 | 分类于 idea

孔子曰: 与善人居,如入芝兰之室,久而不闻其香,即与之化矣。


写在前面

  web应用的升级和改造一般都需要重启应用,作为线上的应用,重新部署不免会影响用户的使用,当然现在运维技术高速发展,已经可以实现灰度等平滑过渡方式,但总的来说还是通过重新部署的方式。
  以前接触jenkins的时候,觉得这个东西真的好用啊,持续集成,节约了我们大部分时间,后面发现jenkins优秀的不止那么一点点,它的另一个功能引起了我的注意,插件管理,通过插件功能,可以实现在线升级和安装新应用。
  所以我就想能不能实现一个类似的功能,通过基于远程web端的插件下载和更新,在不重启应用的情况下装载运行,并且提供相应的插件控制台,实现插件的输出展示等?当然可以,下面我们就来一起实现。

项目设计

  废话不多说,根据设想绘制项目体系结构图:
image

  考虑到web插件的适用性,设计为远程插件仓库,通过类似于maven的方式实现下载安装,并且项目集成的插件可以随时卸载、暂停与启用,所以,相应的UML类图可绘制:
image

  基本思路我们又了,下面我们就来开发它吧。

具体开发

  1. 下载安装
      我们把插件信息配置成json格式存在远程,类似于:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    {
    "configs": [
    {
    "active": true,
    "className": "com.frank.plugin.ServerLogPlugin",
    "id": "1",
    "jarRemoteUrl": "file:D:/site/com-frank-log-plugin-0.0.1-SNAPSHOT.jar",
    "name": "参数日志打印"
    }
    ],
    "name": "插件仓库"
    }

      通过下载插件,在服务启动的情况下加载我们定义好的jar包插件,然后把类加载至jvm中,便于调用执行,这里涉及到类的动态加载,那什么是类动态加载呢?
      动态加载指的是每个编写的java拓展名类文件都存储着需要执行的程序逻辑,这些java文件经过Java编译器编译成拓展名为class的文件,class文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的class文件,并创建对应的class对象,将class文件加载到虚拟机的内存。
    image
      我们这里借用idea生成的类图结构看出URLClassLoader中存在一个URLClassPath类.
      通过这个类就可以找到要加载的字节码流,也就是说URLClassPath类负责找到要加载的字节码,再读取成字节流,最后通过defineClass()方法创建类的Class对象。
      从URLClassLoader类的结构图可以看出其构造方法都有一个必须传递的参数URL[],该参数的元素是代表字节码文件的路径,换句话说在创建URLClassLoader对象时必须要指定这个类加载器的到那个目录下找class文件,为了更加便捷的加载类,我们可以通过反射的方式调用其protected方法addURL来加载类。所以代码可以这样写:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    File jarFile = new File(getLocalJarFile(config));
    // 从远程下载plugin 文件至本地
    if (!jarFile.exists()) {
    URL url = new URL(config.getJarRemoteUrl());
    InputStream stream = url.openStream();
    jarFile.getParentFile().mkdirs();
    try {
    Files.copy(stream, jarFile.toPath());
    } catch (Exception e) {
    jarFile.deleteOnExit();
    throw new RuntimeException(e);
    }
    stream.close();
    }
    // 将本地jar 文件加载至 classLoader
    URLClassLoader loader = (URLClassLoader) getClass().getClassLoader();
    URL targetUrl = jarFile.toURI().toURL();
    boolean isLoader = false;
    for (URL url : loader.getURLs()) {
    if (url.equals(targetUrl)) {
    isLoader = true;
    break;
    }
    }
    if (!isLoader) {
    Method add = URLClassLoader.class.getDeclaredMethod("addURL", new Class[] { URL.class });
    add.setAccessible(true);
    add.invoke(loader, targetUrl);
    }
    // 初始化 Plugin Advice 实例化
    Class<?> adviceClass = loader.loadClass(config.getClassName());
    if (!Advice.class.isAssignableFrom(adviceClass)) {
    throw new RuntimeException(
    String.format("plugin 配置错误 %s非 %s的实现类 ", config.getClassName(), Advice.class.getName()));
    }
    adviceCache.put(adviceClass.getName(), (Advice) adviceClass.newInstance());
  2. 插件启用
      在下载安装阶段我们已经通过类的动态加载把插件类加载至jvm中,但是要实现对功能调用和切入,必须得使用AOP的方式。先来看看准备好的一个小插件:

    1
    2
    3
    4
    5
    6
    7
    public class ServerLogPlugin implements MethodBeforeAdvice {
    public void before(Method method, Object[] args, Object target) throws Throwable {
    String result = String.format("%s.%s() 参数:%s", method.getDeclaringClass().getName(),
    method.getName(),Arrays.toString(args));
    System.out.println(result);
    }
    }

      这里用到了AOP,什么是AOP呢?
      AOP是Spring提供的关键特性之一。AOP即面向切面编程,是OOP编程的有效补充。使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。这些系统性的编程工作都可以独立编码实现,然后通过AOP技术切入进系统即可。从而达到了 将不同的关注点分离出来的效果。
      插件类实现了MethodBeforeAdvice接口,这个接口是aop的接口Advice的继承,它是一种前置增强,定义我们的插件在所切入的方法之前执行,能够达到在service方法调用之前打印其传入参数。所以我们在启用插件的时候就是去开始aop的切入,具体的实现方法入下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!-- 接入系统aop配置 -->
    <!-- 插件工厂配置 -->
    <bean id="pluginFactory" class="com.frank.plugin.DefaultPluginFactory" />
    <aop:config>
    <aop:aspect id="aspect" ref="pluginFactory">
    <aop:pointcut id="point" expression="execution(* *.*(..))" />
    <aop:before method="doBefore" pointcut-ref="point" />
    </aop:aspect>
    </aop:config>

      DefaultPluginFactory中的启用插件的方法实现:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    PluginConfig config = configs.get(pluginConfigId);
    Arrays.stream(applicationContext.getBeanDefinitionNames())
    .map(applicationContext::getBean)
    .filter(o -> o!=null).filter(o -> (o instanceof Advised))
    .filter(o -> findAdvice(config.getClassName(), (Advised) o) ==null)
    .forEach(o -> {
    Advice advice;
    try {
    advice = buildAdvice(config);
    ((Advised) o).addAdvice(advice);
    } catch (Exception e) {
    throw new RuntimeException("启用失败", e);
    }
    });
    try {
    config.setActive(true);
    storeConfigs();
    } catch (IOException e) {
    // TODO 需要回滚已添加的切面
    throw new RuntimeException("启用失败", e);
    }
  3. 停用、卸载
      停用和启用插件方法相反,只需移除相关插件类的切面通知即可。卸载判断是否被启用,如果启用则停用后再删除对应插件,代码比较简单,不做阐述。

最终效果

  本文实现的插件系统作为测试使用,功能模块比较简单,有很多不完善的地方,最后实现的功能入下:
image
image

写在后面

  经过本次实践,进一步加深了对类的加载和aop的理解,后面了解到,插件这种类似的功能在安卓开发上有应用,安卓中通过动态代理的方式Hook系统服务,实现各种特定的功能,当然它的做法和实现复杂的多,但是我想他也离不开动态加载等。
  最后关于这web插件的扩展,其实有很多种方式,可以做成平台,也可以在自己公司搭建通用化组件,附上设想的插件体系业务架构:
image

终于开始写博客了

发表于 2018-05-12 | 分类于 杂集

曾国藩有一句至理名言:“不为圣贤,便为禽兽;莫问收获,但问耕耘”


初衷

  其实我一直很懒,也不是一个感性的人,所以并没有写点东西的习惯,这点让我过得没心没肺,但是很多个夜晚,我都被这种空白感所恐惧,随着年龄的增长,这种恐惧的感觉出现的频次越来越高,后来我发现那是一种焦虑,一种对于现实皮囊下的不真实的慌张。

   时间需要去记录,思想需要去记录,学习需要去记录,成长需要去纪录……

变迁

  以前的种种没有留下什么正式记录,只有年少的QQ空间,朋友圈或者微博留下过只言片语,其实现在想想挺有意思的,以前不管发生什么事,都需要发个说说之类的,虽然现在看起来有些内容显得很傻,但那又岂不是一份宝贵的成长记忆?所以花点时间把那些只言片语整理出来,做个归档,那也挺有意思的。

  现在很少发朋友圈了,原因可能是花在社交网络的时间变少了,又或者是圈子里的人都长大了,有了更加核心的圈子,不会把什么都放在社交网络上,更加注重个人情感。我曾经看过好几个人都是那种宁愿建立一个没有任何人认识的微博小号,每天自己的写一些自己的事,这应该他们最真实的自己,而社交朋友圈和现实中则是换着不同的面具。

  后来做了程序员,半路出家的那种,才知道点滴记录是多么的重要。人的一生成长都在不间断的接触新的事物,都在不断的学习,只是学习的方式和强度不一样而已。姑且我认为要做一个合格的程序员,需要学习的相关知识只多不少,只繁不减,并且是一个持续作战的过程,幸好程序员圈子传承了很多优良的习惯,前有open source,后有blog、论坛、GitHub等,要不说程序员都是好人,单纯善良,无私奉献。

平凡之路

  不是说穷则思变嚒,我是真的穷啊,时不时脑袋里会去想些新奇的idea,关于新的金融方式,关于新的渠道与市场,关于一些奇奇怪怪的创业方案,以前也只是想想而已,没去推敲,没去记录,可能机会就悄悄的溜走了,所以,这些东西还是记录下来好点,万一下次某个行业的改变或者新的市场诞生就是出自于这些idea呢?

   批判精神是人类文明的重要标志之一。我觉得个人应该首先有正确和先进的思想,直白点来说就是应该树立正确的三观,当然思想和三观这些东西都是没有一个天然的界定和划分的,现实也是通过大部分人的思想去界定,但是谁又能说绝大部分又是对的呢?所以应当怀着批判性去看待,努力做个好人吧。

   以前的学习都是被动性的去学习,缺乏了学习中我觉得最重要的“灵性”,学习效率就很低,学习深度很浅,究其根本,我发现自己不自觉太追逐所谓的新技术,太过于追求于快速临摹,以至于对于知识架构了解的不够系统与深入。这就好比武学中的形和意,再好的武学架子,没有理解其意,也不能功力大成。所以接下来将会是一场平凡之路,没有过多的花架子,修炼内功,追求武学真意。当然,我前面不是说了嚒,程序员都是善良和谦虚的,故而我会根据我自己的学习之路添加一些相关的blog,一方面用来记录自己的思考,一方面可供后学者参考。

写在最后

   从毕业起就说写博客的,期间在博客园、CSDN、开发者头条、51CTO等都注册过账号,然而并没有写点什么,怪我这拖拖拉拉的性格。关于文字这块,真的有必要经常写,习惯了以前的社交朋友圈的小段文字,对于blog这种需要内容丰富点的方式,一下子还真适应不了,磕磕巴巴的花费了大约两个小时拼凑的这篇文章,不仅耗费了我许多精力,读起来还怪怪的,不过只能先这样了,相信以后写多了会越来越顺畅的。

   热血经常会有的,但要持续是件不容易的事,就好像以前我读高中的时候,每周回家过后,被父母说教一番,加之自我升华,好不容易攒着一大股子要好好学习的力气,在坐在去学校的公交车上,随着汽车的颠簸,随着窗外流动的世界,就被带走了一大半,到学校就连那仅剩的一点力气也无关痛痒了。所以,写博客,高质量的技术博客这件事,目标一个月一篇吧!

avatar

Hello World

发表于 2018-05-12

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

imyperial

imyperial

Stay Hungry,Stay Foolish!

7 日志
5 分类
7 标签
GitHub 知乎
© 2019 imyperial
由 Hexo 强力驱动
主题 - NexT.Pisces