自我的阶段性总结

随感 阶段性地写一些自己的总结经验至关重要,但是之前却没有任何行动力将之落之行动。这方面可以找到很多原因:没有时间、没有积淀、个人的碎碎念难登大雅之堂……但是归根结底逃不过一个字:懒。时间挤挤总会有的,个人的博客也很难称之为大雅之堂,一些之前的碎碎念很早之后再翻翻看,说不定有着别样的理解。打破自己的懒惰和“矫情”,正是我当前所做的事。 之所以觉得自己非要做总结不可了,也是我近期发现自己的记忆力真的不够用了。“好记性不如烂笔头”真是一句实话,哪怕有一些心得感悟记在心里了,时间一长还是忘的一干二净,就算没忘细节也忘得差不多了。 而魔鬼就在细节中。 之前考虑过个人的IDP,给自己立了这么一项:一定要形成自己的方法论,而不是完全凭借“感觉和经验”。方法论可以不完善甚至是错误的,这个可以通过学习、实践等逐渐完善。如何进行方法论的积累、完善和进化?光靠头脑可不靠谱,阶段性总结必须要做,而且要频繁做,长期做。 要形成方法论,而不是凭借感觉和经验 这一条我认为是最基本的,也是当前我最应该做的。写感想总结就是其中沉淀的总要一环。正如一次个人发展规划学习中学习到的一句话:“这个世界上你遇到的所有问题基本上都有其他人给出了答案,你所需要做的就是去学习。”学习、实践是个人的经验积累,我工作5年多,不管积累多少,总归有些收获。但是只靠经验是完全不行的,会让我陷入经验主义的误区,解决问题的能力完全局限于之前的经历和他人的道听途说,或者一不留神就会陷入“熬资历”的过程,对个人的成长来说也是一个危险的信号。 实践是检验真理的唯一标准,学习、实践、再学习、再实践,归根结底是为了解决问题,而有一套自己的方法论,则是解决一切已有问题和未知问题的利器,也是一个“经验丰富、能力很强”的专业人士的专业壁垒。 方法论的形成不是一蹴而就的,自我方法论的形成不仅仅是表面上的总结那么简单,需要自己不断地总结与完善,在实践和学习中应用和思考。网上也有很多专业人士的心得,但是自我方法论和别人的总结最大的一个区别就在于自我方法论的形成是自己实践过的、经过实际应用检验或者待检验的自己的方法论。正如看一个算法苦思冥想,就算明白了过一段时间也会忘的一干二净;而真正程序中应用过了,就会发现其中的关键所在。看别人的总结学习的过程,应用之时就是经验的积累,而应用之后和知识点结合总结的过程,才是自我方法论的形成。 既然是需要完善,保持谦逊和虚心学习同样重要。在和别人争的面红耳赤差点大打出手,最后发现还是自己的方法论有问题,那么该低头还是得低头,该认错还是得认错。面子不重要,个人成长才是。

golang组合、接口以及反序列化

现在,我想用Go实现一个Event类,有如下的要求: 有多种Event类型,不同的Event类型拥有不同的参数; 这些Event会被持久化到存储中,在需要时反序列化回来; 每个Event都有Process方法,具体的方法实现逻辑存放在不同的Event具体类型中。 ok,看需求并不复杂,不就是面向对象的继承、重载那一套吗,so easy,直接开搞! 但是真正实现时,才发现没有想象中的那么简单… 1. 结构体实现 首先我们使用go来实现结构体Event,然后利用组合的方式实现两个Event:

一次springboot+dubbo的项目实战

最近在从零开始实现一个服务端在线接口项目,项目选型为springboot + dubbo。由于是新项目,没有历史包袱,所以给了自己一次从头开始按照想法进行最优编码实践的机会。 1. 功能实现 项目使用springboot-web暴露网关接口,内部通过dubbo调用服务,比如用户服务。主要组件基本包括两块:gateway和service-provider。其中gateway对外暴露web端口,对内为dubbo的consumer。 通用的启动程序: @SpringBootApplication @EnableAspectJAutoProxy @EnableDubbo @Slf4j public class MainApplication { public static void main(String[] args) { SpringApplication.

Vscode配置cpp外部头文件依赖

最近尝试在vscode中配置加载外部的hpp头文件依赖,记录如下: vscode的settings.json中可以通过配置项C_Cpp.default.includePath配置默认的头文件路径,配置如下: { "files.associations": { "iostream": "cpp" }, "C_Cpp.default.includePath": ["/home/psy"] } 在配置文件c_cpp_properties.

在k8s集群中部署mysql

本篇文章参考了官方kubenetes部署mysql的过程,对如何在k8s环境下安装mysql进行了实践。 首先快速安装一个只有master节点的mysql实例,先有个直观印象。 使用如下yaml: apiVersion:v1kind:ConfigMapmetadata:name:mysqlnamespace:mysqllabels:app:mysqldata:master.cnf:|[mysqld] log-bin---apiVersion:v1kind:Servicemetadata:name:mysqlnamespace:mysqllabels:app:mysqlspec:ports:- name:mysqlport:3306clusterIP:Noneselector:app:mysql---apiVersion:apps/v1kind:StatefulSetmetadata:name:mysqlnamespace:mysqlspec:selector:matchLabels:app:mysqlserviceName:mysqlreplicas:1template:metadata:labels:app:mysqlspec:initContainers:- name:init-mysqlimage:mysql:5.7command:- bash- "-c"- |set -ex [[ `hostname` =~ -([0-9]+)$ ]] || exit 1 ordinal=${BASH_REMATCH[1]} echo [mysqld] > /mnt/conf.

SIGN模型找到天赋

虽然成功的道路有千万条,但成功人士基本上都遵循了一个原则,就是将自身天赋发挥到了极致。 天赋不是少数人的专属,每个人都有自己的天赋。 天赋是一种隐藏的能力,让一个人可以在同样起点的情况下,更加快速地成长。 天赋是一种隐藏能力,是否能够转化为显性的能力,是需要后天刻意练习的。 天赋有四个表现,简称SIGN。 自我效能(Self-efficacy) 对于某些任务,你的信心很强,觉得自己肯定能做好。 当你对某类事非常有信息,觉得自己可以做成功,这就是天赋的其中一个表现。

将知识内化成能力

惰性知识 只待在脑海里,在一些明明可以发挥作用的场合,却不能及时被调取出来,白白占用了大脑内存。 掌握20%的核心 一个领域20%的核心内容,能够解决这个领域80%的问题。 大部分人的思维混乱,都是因为缺乏结构化思维。结构化思维只需要掌握三个特征: 主题鲜明、归类分组、逻辑递进。 每个领域哪些是20%的核心,其实是需要这个领域的专家来指点的。大多数的成功人士,都很擅长找“师傅”。 知识和问题相互相靠 知识向问题靠,问题向知识靠。 知识向问题靠,就是说,每看到一个知识的时候,就去思考这个知识可以用来解决什么问题。

冰山模型

冰山模型定义 如何选择匹配度高的岗位,衡量自己的市场价值。 冰山模型由美国著名心理学家麦克利兰提出,全面描述了一个人的个体素质要素。也就是评判跟一个岗位是不是匹配、匹配程度如何、市场薪资值多少,都可以用这个模型解释。 一、知识和技能 一个人的知识和技能是可以后天习得的,也是非常显性,容易看出来的。 如果你的工作中由很多陌生的内容,觉得每天都信息量很大来不及接收,感觉到慌乱和焦虑,很可能是知识技能跟岗位不匹配。这不是什么大问题,知识和技能比较容易补齐,多学习多实践,一段时间后就能提升。 二、能力 冰山模型中间的要素是能力,或者叫通用能力,比如学习和思考能力,人际交往能力等。

kubernetes之StatefulSet

概述 RC、Deployment、DaemonSet都是面向无状态的服务,它们所管理的Pod的IP、名字,启停顺序等都是随机的,而StatefulSet是什么?顾名思义,有状态的集合,管理所有有状态的服务,比如MySQL、MongoDB集群等。 StatefulSet本质上是Deployment的一种变体,在v1.9版本中已成为GA版本,它为了解决有状态服务的问题,它所管理的Pod拥有固定的Pod名称,启停顺序,在StatefulSet中,Pod名字称为网络标识(hostname),还必须要用到共享存储。 在Deployment中,与之对应的服务是service,而在StatefulSet中与之对应的headless service,headless service,即无头服务,与service的区别就是它没有Cluster IP,解析它的名称时将返回该Headless Service对应的全部Pod的Endpoint列表。 除此之外,StatefulSet在Headless Service的基础上又为StatefulSet控制的每个Pod副本创建了一个DNS域名,这个域名的格式为:

Vert.x线程与Future

Vert.x有两个重要的线程池: Event loop线程池和Worker线程池。 Event loop线程池 在一个标准的反应器实现中,有一个独立的 Event Loop会循环执行,处理所有到达的事件并传递给处理器处理。Vert.x的工作方式有所不同,每个Vertx实例维护多个Event Loop 线程。Event Loop数量默认为核数的2倍,也可以通过如下方式进行设置: