记笔记这件事,也许在很多人看来,再普通、简单不过了——从小老师就教育我们要这么做。不同的人有不同的方式,我们最终的目的,还是希望不要停留在只是记录这一层面上,而是将它们转变为我们的知识。作为一个程序员,今天我跟大家聊聊我的一些笔记管理的方法,希望对大家有用。如果大家还有更好的方式,也欢迎留言一起探讨。

知识学习的路径

首先聊聊知识学习的路径。讲得宏大一点,我们得先有方法论。知识学习的途径可以分为以下几个阶段:

接触,可能来源于工作中遇到的一个问题,或者朋友的推荐,或者逛社区、论坛时看到的新鲜内容。在接触之前,我们并不知道,或者并不在意一个知识的存在,以及它是如何存在的。通过接触,它勾起了我们的好奇心,激发了我们的热情,吸引我们去实践。

实践,就是依照别人所描述的内容,或者自己个人的理解,动手去解决问题。只有经历过实践,才能摸清楚细节,才能更加具象、深刻地理解某项知识。而在实践的过程中,我们可能会遇到各种状况,别人未描述的或自己不甚理解的。通过各种其他手段,如查阅、咨询等,最终解决了问题,丰富了知识适用的场景及其内涵。然后我们就需要把实践的过程记录下来,形成我们自己的认知。

总结,就是用自己的话去描述同样一个知识。它的表述形式可能跟别人的不一样,关注的细节点也可能不一样。通过总结,形成我们认识事物的方式。这种方式继而会影响我们在后续的实践过程中的工作流程。一些较复杂的知识点也不是一次实践或总结就能准确理解的,也许有疏漏。在后续的工作、学习中,我们使用这些尚未完全的知识,遇到困难,又继续总结,形成一个反馈循环。直到达到一个较为满意的状态。这个时候,我们就可以考虑“为人师”了。

分享,就是把自己掌握的知识,用更多人能理解的方式讲述、传播出去。它跟总结的区别就是,不再是仅仅以个人能理解的方式去表达知识,而是要辅以通俗的语言、合适的图文来表达。让大家看到还有这样一种角度、思路,成为他们的知识接触点。

结构

这里我们讨论的知识的主要载体,就是笔记。根据知识学习的路径,我们可以对笔记进行分门别类。至少要单独列出分享这一目录。我常用的一级目录为:

  • 分享:包含所有待分享或已分享的文章、素材,使用日期作为子文件夹或文件名前缀。
  • 开发:包含开发相关的知识点,如语言、工具、操作系统、网络、中间件、架构等等
  • 工作:包含各个公司、个人项目的工作内容与日常记录
  • 至于一级目录以下的目录划分,可以根据每个人所侧重的知识面来安排。

工具

那用什么做笔记呢?市面上已经有很多笔记管理软件了,像 EverNote、有道等。不过作为程序员,我们手边的开发工具就能做笔记管理。这里我推荐用 Visual Studio Code。它是一款非常轻量的 IDE 工具,有强大的插件体系。它不光可以用来写代码,还可以用来写文档,尤其是 Markdown 文档。自带 inline 样式渲染,支持格式校验、自动排版(尤其是 table)、PDF 导出等各种功能,还有很多插件可供你选择。

Markdown,我想每个程序员都应该熟悉它的语法。其实核心的、常用的几个语法很简单,包括多级标题、多级列表、Code 等。像我写这一篇文章,用到的也就无非这些语法点,额外多了图片的插入等。根本不需要花多少时间。但是掌握它,不光有助于我们写文章,包括开发中写文档,都是非常有用的。像我们常用的 Github、Gitlab 里,都可以直接渲染 Markdown 文件,Issue 中也能支持 Markdown 语法。学会一招,吃遍天下。很有必要。

也许有的同学会有疑问,那岂不笔记都是本地存储了?这个问题很好。我们还需要一些工具,Git + Gitlab。将整个笔记目录加入 Git 版本控制,这样我们所有的笔记历史都能保存起来。然后,我们可以在http://Gitlab.com的个人账号上创建一个私有项目,同步我们的本地笔记到远端。这样,我们在公司使用公司的电脑,可以顺利地同步;手机端也可以使用浏览器访问 Gitlab 网址在线打开我们的项目,查看笔记。有了 Git 支持,即便多端修改产生冲突,也能很好地去解决。

扩展

用 VSCode + Gitlab 来管理我们的笔记,还有一个好处就是,这些笔记就是我们看得到的文件。那这里我们可以引申一下。把我们的笔记管理作为个人知识仓库,它里面还能包含各种可以执行的脚本(如 Bash、Python)。这些脚本是我们自己编写的、用来方便我们工作的。比如说我就写了很多类似 Git 周报、Gitlab CI 自动化等这样的脚本。它们不光能在我家里的电脑上执行,还能同步到我公司的电脑上,照样执行。而且执行的方式不会有什么变化,不需要额外下载、保存、授权等各项工作,这些都在同步过程中解决了。十分方便。

当然,以上方式也有一些弊端,比如图片不好处理,无法直接粘贴到文章里(也许有这样的 VSCode 插件呢?)。不过至少我个人用起来,还是很舒服的。也希望这些内容,能为大家产生一些”接触“点。

写在最后:

更多关于Java的技术和资讯可以关注我的专栏:

Java架构筑基​zhuanlan.zhihu.com

专栏免费给大家分享Java架构的学习资料和视频

写笔记插件_Java程序员笔记(知识)管理的一点经验相关推荐

  1. chrome java插件_Java程序员喜欢的10款软件里有你在用的吗?

    作为一名Java程序员,日常开发的过程中,我们需要借助很多工具来进行编码.好的工具可以极大的提升程序员的工作效率,今天我们来认识下大多数程序员喜欢的10款软件.持不同意见或有想要补充的小伙伴,欢迎评论 ...

  2. java中sql语句怎么把开始和结束时间作为参数写sql查询_java程序员跳槽的一道坎,大公司面试官都会问的Mybatis...

    一.什么是Mybatis? 1. Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动.创建连接.创建statement ...

  3. 30岁程序员转行做管理:没经验焦虑不安怎么办?

    小编是一个多年开发经验的程序员,前端.Java.Python我都懂, 作为程序员,如果有一天厌倦了枯燥无味的代码,再加上年龄随着工作年限的增加而增加,不少人选择了转行做管理. 近日,在脉脉上看到一位网 ...

  4. 【读书笔记】-《程序员的思维锻炼-开发认知潜能的九堂课》

    2018年10月19日23:20:54 序言: 看这本书断断续续花费了5天时间,主要是在上下班公交车地铁,睡前.很享受这样感觉,感觉终于让大脑放松起来,并且心理作用下,让自己觉得很有成就感. 当看到这 ...

  5. ZooKeeper官方文档学习笔记03-程序员指南03

    我的每一篇这种正经文章,都是我努力克制玩心的成果,我可太难了,和自己做斗争. ZooKeeper官方文档学习笔记04-程序员指南03 绑定 Java绑定 客户端配置参数 C绑定 陷阱: 常见问题及故障 ...

  6. 【读书笔记】【程序员的自我修养 -- 链接、装载与库(三)】函数调用与栈(this指针、返回值传递临时对象构建栈、运行库与多线程、_main函数、系统调用与中断向量表、Win32、可变参数、大小端

    文章目录 前言 介绍 内存 内存布局 栈与调用惯例 堆与内存管理 运行库 入口函数和程序初始化 C/C++运行库 运行库与多线程 C++全局构造与析构 fread 实现 系统调用与API 系统调用介绍 ...

  7. 免费又好用的程序员笔记应用Boostnote for mac

    此文为原文转载 Boostnote笔记可以快速清晰的棒程序员创建一个组织良好的文章,并且轻松地记录开发知识的备忘录,会议笔记等,是专业为程序员设计的笔记本开源应用,另外,它识别超过100种语法高亮使其 ...

  8. 简单计算机java程序_JAVA程序员需要知道的计算机底层基础10-操作系统引导程序的简单...

    JAVA程序员需要知道的计算机底层基础10-操作系统引导程序的简单 JAVA程序员需要知道的计算机底层基础10-操作系统引导程序的简单制作 汇编实现引导程序 ; 文件名 boot.asm org 7c ...

  9. 如何看待简书大V饱醉豚 写的《为什么程序员是出轨率最高的群体》?

    今天惊闻一篇文章<为什么程序员是出轨率最高的群体(支持双十一程序员脱单专场)>.本身言论自由,总是有傻逼会发出傻逼的言论,不过文章满篇胡言,像我这种还没女朋友的就被出轨了感觉实在生气.来一 ...

最新文章

  1. 特斯拉「断网」致500名车主被锁车外,最长5小时,网友:有些东西就不该经过网络...
  2. linux中安装vsftpd出现的问题
  3. 前后端数据交互方法 汇总
  4. 交互输入与for语句
  5. 无头结点单链表的逆置_第1章第2节练习题11 就地逆置单链表
  6. java monitor 翻译_管程(Monitor)概念及Java的实现原理
  7. [COCI2011-2012#7] KAMPANJA
  8. 51社区房间怎么用挂号器_冬季艾灸时,房间怎么排烟?
  9. 归纳下js面向对象的几种常见写法
  10. 读书笔记——5建造者模式(转)
  11. 初中计算机学业水平考试时间安排,2019年起全面实施初中信息技术学业水平考试(和毕业证书有关)...
  12. android ConstraintLayout布局 详解
  13. android6刷机教程,安卓手机刷机步骤
  14. ProcessOn画斜箭头、写公式方法记录
  15. bat批处理与adb命令的配合
  16. SPSS Modeler KNN分类器(第十七章)
  17. python pandas合并单元格_python pandas拆分单元格
  18. 如何用 Python 可视化《三国》人物与兵器出现频率?(视频教程)
  19. 自然语言处理——金庸小说的信息熵计算
  20. 发明专利、实用新型专利——下载步骤

热门文章

  1. 青云QingCloud携手伟仕佳杰打造专业企业级云服务
  2. Skype for Business Server 2015-04-前端服务器-5-创建DNS记录
  3. CCNA学习指南十三章
  4. 编写一个文件目录常用操作的类
  5. 华硕 WL-566gM之信号强度
  6. 01 | 研发工程师想提升面试竞争力,该具备这三个技术认知
  7. FreeRTOS源码分析与应用开发04:消息队列
  8. mysql 1016 145_Mysql中出现 errno:145的解决方法
  9. 单片机STM8S测量电压电路_STM32单片机的高精度超声波测距系统的设计
  10. 编写一个计算机程序用来计算一个文件的 16 位效验和(Java实现)