一、整理笔记的必要性

长期学习过程中,我发现人脑并不擅长记忆,它更擅长思考问题。程序员每天都要学习很多知识,学得快,忘得快很正常。很多东西并不需要记住,况且知识那么多,怎么可能全部记住?
思考问题:知识点忘记了,该怎么办?
分析问题:是记性太差,还是因为笔记没有归纳整理?经过仔细研究,发现笔记没有整理是最主要的原因。当需要时却找不到复习资料,只能上网搜视频文档重头再学一遍

二、笔记分类的必要性

所有笔记都堆在一起不利于复习,我个人觉得笔记应该分为两类:

1. 系统性 笔记(笔记结合git来做,本文章讲的重点)
2. 非系统性 笔记

非系统性笔记:

  • 记录知识点少,不成体系相对独立,几个小时内就能学完的技术。
  • 记录开发中遇到的问题。
  • 软件的安装(偶尔重装需要用到),分享好用的第三方工具,心得等等
  • 第三方插件的使用(比如swagger)
  • 总之,不经常使用,而且不需要经常复习的,偶尔会用到的都归为非系统性知识

系统性笔记:

  • 记录知识点多,成体系,短时间内学不完的学科或者技术,比如ssm框架,数据结构和算法,Linux操作系统,JVM虚拟机…
  • 系统性笔记需要结合遗忘曲线进行精准复习

三、做笔记的方案

非系统性笔记:

  • 由于直接写在CSDN即可,一方便写,二方便查

系统性笔记:

  • 像数据结构、计算机组成原理等等这些系统学科短时间学不完,直接在CSDN上做笔记很麻烦,而且不好复习。系统性学科笔记整理在一起,查相关概念直接用Ctrl+F快速搜索。
  • 整理笔记摸索了一个多月后,最终决定使用Typora+Gitee+PicGo做系统学科的笔记。

四、系统性笔记:Typora+Gitee+PicGo

简介

Typora+Git+PicGo是什么东西?

Typora是Markdown编辑器,五分钟就能上手,不需要排版,有代码高亮,对程序员非常友好

Gitee/Git:Gitee作为仓库,既可以存放图片又可以存放笔记

PicGo:图床,粘贴图片时自动帮我们生成url

我直接使用word或者有道云笔记不香吗?笔记结合Git有什么好处?

  1. word是二进制文件无法进行版本控制。markdown是非二进制文件可以进行版本控制

    因为git commit -m "" [文件名]时,可以附带一条信息,利用这条信息,我们可以记录当时完成的事。类似书签,既方便复习,下次学习时也能很快找到上次学习到了哪里

    使用git log可以查看历史记录,结合Linux管道符和grep命令,我就知道以前的某一天我干了些什么事了。

    相当于学习历史记录,结合遗忘曲线,就可以精准复习。

    • git log 查看所有学习记录,这是我以前提交的记录

  • ​ 如果想精准查6月份我学了些什么,做了哪些笔记,哪些知识该复习了,可以使用git log|grep 6月


    命令很灵活,grep后面可以跟时间,具体学习内容,遇到的问题等等。

    所以建议git commit 时,提交的信息以时间开头,这样方便自己查,格式自己定。比如

    git commit -m "时间:2020年6月8号 22:33:00 复习:复习了redis的set集合 " .
    git commit -m "时间:2020年6月8号 22:33:00 问题:不太懂redis的锁。。。 " .
    
  1. gitee上可以直接观看我们的笔记(ctrl+F快速定位),笔记可以直接ctrl+a,ctrl+c ,ctrl+v粘贴在博客上。万一打雷把电脑劈了,上博客还能继续看

软件安装

也可以自行去官网搜

typora:安装下一步下一步即可:

picgo:不需要安装最新版,一直下一步

node:因为picgo里面用到了gitee插件,需要用npm包去帮我们下载,而node内置了npm功能

下载node

1)官网https://nodejs.org/zh-cn/下载安装node.js,我装的是10版本的,下一步即可。

装好后,在Windows环境下,请打开命令提示符,然后使用node -v检查版本

2)配置npm使用淘宝镜像

npm config set registry https://registry.npm.taobao.org

配好后最好重启或者注销一下电脑

新建gitee仓库

用来存图片

gitee插件安装

插件设置,搜gitee,装好node后就可以装gitee插件了,选如下这个

找到gitee,然后在repo处填写你的仓库位置,也就是地址栏gitee.com/后面的


私人令牌在gitee上申请

私人令牌的获取

登录进gitee,右上角设置-私人令牌-创建新令牌


提交后把令牌粘贴到上面的token即可

配置typora

测试

在Typora中新建md文件,并插入图片,看图片url是否会自动变成gitee的url。

最后,笔记可以随时上传到gitee上方便保管,防止弄丢。如果这门学科已经学完,笔记也整理完毕,这时就可以直接粘在CSDN上,因为图片已经上传到gitee上,是合法的URL


最后一次修改时间:2020年7月10日14:32:19

Linux命令小技巧

  • git commit -m “时间:xxx 学习:学习了xxx” xxx.md
    提交笔记时可以顺便记录每天干了些啥,方便我们以后再次复习,查的时候只需要结合管道符 | 和grep 过滤
    git log |grep “6月”

  • ls -v * > README.md
    这条命令是把当前路径下的所有文件名写到markdown文件中(以数字排序从小到大)


这周做尚硅谷jvm的笔记时,我在想能不能对应着视频做笔记,一节视频对应一节笔记,好处就是只需要记一些课件里没有的知识,我也不需要花大量时间做笔记了,毕竟程序员还是以敲代码为主的。
类似这样子
我需要记一些课件里没有的知识即可,重难点都可以记上去。
下载下来的视频是这样子的

可是我一行行的把文件名粘在笔记上很麻烦,结合所学的linux知识,

  • 我先ls > README.md,确实可以,但是只显示目录名,我需要视频的文件名
  • 再试 ls * > README.md,我发现顺序会错
  • 于是百度ls 命令,我想看看有没有排序的参数,一看果然有-v
    ls -v * > README.md

一条命令搞定,以后看视频的时候可以把重点都记在这里,就相当于课堂笔记了哈,主要记一些学习主线,理念,很重要的思路等等。如果觉得下面的.avi很干扰的话,直接在topora里ctrl+F替换成空格就行~

第1章:JVM与Java体系结构:
01-JVM内存与垃圾回收篇概述.avi
02-如何看待Java上层技术与JVM.avi
03-为什么要学习JVM.avi
04-面向人群和课程特点.avi
05-官方规范下载与参考书目.avi
06-跨平台的语言Java和跨语言的平台JVM.avi
07-字节码与多语言混合编程.avi
08-Java及JVM历史上的重大事件.avi
09-虚拟机与Java虚拟机介绍.avi
10-JVM的位置.avi
11-JVM的整体结构.avi
12-Java代码执行流程.avi
13-区分栈的指令集架构和寄存器的指令集架构.avi
14-JVM的生命周期.avi
15-SUN Classic VM的介绍.avi
16-Exact VM的介绍.avi
17-HotSpot VM的介绍.avi
18-JRockit VM的介绍.avi
19-IBM J9 VM的介绍.avi
20-KVM、CDC、CLDC的介绍.avi
21-Azul VM和BEA Liquid VM的介绍.avi
22-Apache Harmony的介绍.avi
23-Microsoft JVM和TaobaoJVM.avi
24-Dalvik VM及其他虚拟机的介绍.avi
25-Graal VM的介绍.avi第2章:类加载子系统:
26-内存结构概述.avi
27-概述类的加载器及类加载过程.avi
28-类的加载过程一:Loading.avi
29-类的加载过程二:Linking.avi
30-类的加载过程三:Initialization.avi
31-几种类加载器的使用体会.avi
32-引导类、扩展类、系统类加载器的使用及演示.avi
33-为什么需要用户自定义类加载器及具体实现.avi
34-ClassLoader的常用方法及获取方法.avi
35-双亲委派机制的工作原理及演示.avi
36-双亲委派机制的优势.avi
37-沙箱安全机制.avi
38-类的主动使用与被动使用等.avi第3章:运行时数据区概述及线程:
39-运行时数据区内部结构.avi
40-JVM中的线程说明.avi第4章:程序计数器:
41-PC寄存器概述.avi
42-PC寄存器的使用举例.avi
43-解决PC寄存器两个面试问题.avi第5章:虚拟机栈:
44-虚拟机栈的主要特点.avi
45-虚拟机栈的常见异常与如何设置栈大小.avi
46-栈的存储结构和运行原理.avi
47-栈桢的内部结构.avi
48-局部变量表结构的认识.avi
49-字节码中方法内部结构的剖析.avi
50-变量槽slot的理解与演示.avi
51-静态变量与局部变量的对比及小结.avi
52-操作数栈的特点.avi
53-涉及操作数栈的字节码指令执行分析.avi
54-栈顶缓存技术.avi
55-动态链接的理解与常量池的作用.avi
56-方法的绑定机制:静态绑定与动态绑定.avi
57-4种方法调用指令区分非虚方法与虚方法.avi
58-invokedynamic指令的使用.avi
59-方法重写的本质与虚方法表的使用.avi
60-方法返回地址的说明.avi
61-栈桢中的一些附加信息.avi
62-虚拟机栈的5道面试题.avi第6章:本地方法接口:
63-本地方法接口的理解.avi第7章:本地方法栈:
64-本地方法栈的理解.avi第8章:堆:
65-JVM学习路线与内容回顾.mp4
66-堆空间的概述_进程中堆的唯一性.mp4
67-堆空间关于对象创建和和GC的概述.mp4
68-堆的细分内存结构.mp4
69-堆空间大小的设置和查看.avi
70-OOM的说明与举例.avi
71-新生代与老年代中相关参数的设置.avi
72-图解对象分配的一般过程.avi
73-对象分配的特殊情况.avi
74-代码举例与JVisualVM演示对象的分配过程.avi
75-常用优工具概述与Jprofiler的演示.avi
76-MinorGC、MajorGC和FullGC的对比.avi
77-GC举例与日志分析.avi
78-体会堆空间分代的思想.avi
79-总结内存分配策略.avi
80-堆空间为每个线程分配的TLAB.avi
81-小结堆空间的常用参数设置.avi
82-通过逃逸分析看堆空间的对象分配策略.avi
83-代码优化之栈上分配.avi
84-代码优化之同步省略.avi
85-代码优化之标量替换.avi
86-代码优化及堆的小结.avi第9章:方法区:
87-方法区概述_栈堆方法区间的交互关系.avi
88-方法区的基本理解.avi
89-Hotspot中方法区的演进.avi
90-设置方法区大小的参数.avi
91-OOM:PermGen和OOM:Metaspace举例.avi
92-方法区的内部结构1.avi
93-方法区的内部结构2.avi
94-class文件中常量池的理解.avi
95-运行时常量池的理解.avi
96-图示举例方法区的使用.avi
97-方法区在jdk6、jdk7、jdk8中的演进细节.avi
98-StringTable为什么要调整位置.avi
99-如何证明静态变量存在哪.avi
100-方法区的垃圾回收行为.avi
101-运行时数据区的总结与常见大厂面试题说明.avi第10章:对象的实例化内存布局与访问定位:
102-对象实例化的几种方式.avi
103-字节码角度看对象的创建过程.avi
104-对象创建的六个步骤.avi
105-对象的内存布局.avi
106-对象访问定位.avi第11章:直接内存:
107-直接内存的简单体验.avi
108-使用本地内存读写数据的测试.avi
109-直接内存的00M与内存大小的设置.avi第12章:执行引擎:
110-执行引擎的作用及工作过程概述.avi
111-Java程序的编译和解释运行的理解.avi
112-机器码_指令_汇编_高级语言理解与执行过程.avi
113-解释器的使用.avi
114-HotspotVM为何解释器与JIT编译器并存.avi
115-热点代码探测确定何时JIT.avi
116-Hotspot设置模式_C1与C2编译器.avi
117-Graal编译器与AOT编译器.avi第13章:StringTable:
118-String的不可变性.avi
119-String底层Hashtable结构的说明.avi
120-String内存结构的分配位置.avi
121-两个案例熟悉String的基本操作.avi
122-字符串拼接操作的面试题讲解.avi
123-字符串变量拼接操作的底层原理.avi
124-拼接操作与append操作的效率对比.avi
125-intern()的理解.avi
126-new String()到底创建了几个对象.avi
127-关于intern()的面试难题.avi
128-面试的拓展问题.avi
129-intern()的课后练习1.avi
130-intern()的课后练习2.avi
131-intern()的空间效率测试.avi
132-StringTable的垃圾回收测试.avi
133-G1垃圾收集器的String去重操作.avi第14章:垃圾回收概述:
134-垃圾回收相关章节的说明.avi
135-什么是GC,为什么需要GC.avi
136-了解早期垃圾回收行为.avi
137-Java自动内存管理介绍.avi第15章:垃圾回收相关算法:
138-垃圾回收相关算法概述.avi
139-引用计数算法的原理及优缺点.avi
140-Java代码举例_Python的引用计数实施方案.avi
141-可达性分析算法与GC Roots.avi
142-对象的finalization机制.avi
143-代码演示可复活的对象.avi
144-使用MAT查看GC Roots.avi
145-使用JProfiler进行GC Roots溯源.avi
146-使用JProfiler分析OOM.avi
147-标记-清除算法原理及优缺点.avi
148-复制算法原理及优缺点.avi
149-标记-压缩算法原理及优缺点.avi
150-不同指标上对比三种算法.avi
151-分代收集算法的说明.avi
152-增量收集算法原理及优缺点.avi
153-分区算法的说明.avi第16章:垃圾回收相关概念:
154-垃圾回收相关概念的概述.avi
155-System.gc()的理解.avi
156-手动gc理解不可达对象的回收行为.avi
157-内存溢出的分析.avi
158-内存泄漏的分析.avi
159-StopTheWorld事件的理解.avi
160-程序的并行与并发.avi
161-垃圾回收的并行与并发.avi
162-安全点与安全区域的说明.avi
163-Java中几种不同引用的概述.avi
164-强引用:不回收.avi
165-软引用:内存不足即回收.avi
166-弱引用:发现即回收.avi
167-虚引用:对象回收跟踪.avi
168-终结器引用的介绍.avi第17章:垃圾回收器:
169-垃圾回收器章节概览.avi
170-垃圾回收器的分类.avi
171-GC性能指标的整体说明.avi
172-吞吐量与暂停时间的对比说明.avi
173-垃圾回收器的发展迭代史.avi
174-垃圾回收器的组合关系.avi
175-如何查看默认的垃圾回收器.avi
176-Serial与Serial Old垃圾回收器的介绍.avi
177-如何设置使用Serial垃圾回收器.avi
178-ParNew垃圾回收器的介绍.avi
179-如何设置使用ParNew垃圾回收器.avi
180-Parallel与Parallel Old垃圾回收器的介绍.avi
181-Parallel垃圾回收器的相关参数设置.avi
182-CMS垃圾回收器概述与工作原理.avi
183-CMS的特点与弊端分析.avi
184-CMS垃圾回收器的参数设置.avi
185-CMS的小结及后续JDK版本中的变化.avi
186-认识G1垃圾回收器.avi
187-G1垃圾回收器的优势和不足.avi
188-G1的参数设置.avi
189-G1在生产环境的适用场景.avi
190-region的使用介绍.avi
191-G1垃圾回收器的主要回收环节.avi
192-记忆集与写屏障.avi
193-G1垃圾回收过程的详细说明.avi
194-G1垃圾回收的优化建议.avi
195-7种经典的垃圾回收器总结与调优建议.avi
196-常用的显示GC日志的参数.avi
197-GC日志中垃圾回收数据的分析.avi
198-举例说明日志中堆空间数据如何解读.avi
199-日志分析工具的使用.avi
200-新时期的Epsilon和Shenandoah垃圾回收器.avi
201-革命性的ZGC的性能介绍.avi
202-其他的厂商的垃圾回收器.avi
203-最后寄语.avi

2020年12月28日19:34:21 开始学习jvm中篇
自从学了正则表达式之后,可以很快速地替换文本
按照以上的步骤,会得到

第十八章:Class文件结构01-JVM中篇内容概述02-字节码文件的跨平台性
03-了解Java的前端编译器
04-透过亨节码看代码执行细节举例1
05-话过字节码看代码执行细节举例2
06-透过字节码看代码执行细节举例3
07-解读Class文件的三种方式
08-Class文件本质和内部数据类型
09-Class文件内部结构概述
10-字节码数据保存到excel中的操作
11-Class文件的标识:魔数
12-Class文件版本号13-常量池概述
14-常量池计数器
15-常量池表中的字面量和符号引用
16-解析得到常量池中所有的常量
17-常量池表数据的解读1
18-常量池表数据的解读2
19-常量池表项数据的总结
20-访问标识
21-类索引、父类索引、接口索引集合
22-字段表集合的整体理解
23-字段表数据的解读
24-方法表集合的整体理解
25-方法表数据的解读
26-屈性表集合的整理理解
27-方法中Code属性的解读
28-LineNumberTable和LocalVariableTable属性的解读
29-SourceFile属性的解读
30-Class文件结构的小结
31-javac -g操作的说明
32-javap主要参数的使用
33-javap解析得到的文件结构的解读
34-javap使用小结第十九章:字节码指令集与解析举例35-字节码指令集的概述
36-指令与数据类型的关系及指令分类
37-加载与存储指令概述
38-再谈操作数栈与局部变量表
39-局部变量压栈指令
40-常量入栈指令
41-出栈装入局部变量表指令
42-算术指令及举例
43-算法指令再举例
44-彻底搞定++运算符
45-比较指令的说明
46-宽化类型转换47-窄化类型转换
48-创建类和数组实例的指令
49-字段访问指令
50-数组操作指令
51-类型检查指令
52-方法调用指令
53-方法返回指令
54-操作数栈管理指令
55-比较指令
56-条件跳转指令
57-比较条件跳转指令
58-多条件分支跳转指令59-无条件跳转指令
60-抛出异常指令
61-异常处理与异常表
62-同步控制指令第二十章:类的加载过程详解63-类的生命周期概述
64-加载完成的操作及二进制的获取方式
65-类模型与Class实例的位置
66-链接之验证环节
67-链接之准备环节
68-链接之解析环节
69-初始化过程与类初始化方法
70-初始化阶段赋值与准备阶段赋值的对比
71-类初始化方法clinit(的线程安全性
72-何为类的主动使用和被动使用
73-类的主动使用1
74-类的主动使用275-类的主动使用3
76-类的主动使用4
77-类的被动使用
78-类的使用介绍
79-类的卸载相关问题第二十一章:再谈类的加载器80-类加载器的概述
81-命名空间与类的唯一性
82-类的加载器的分类
83-引导类加载器的说明
84-扩展类加载器的说明
85-系统类加载器的说明
86-用户自定义类加载器的说明
87-测试不同类使用的类加载器
88-ClassLoader与Launcher的初步剖析
89-ClassLoader的源码解析1
90-ClassLoader的源码解析2
91-ClassLoader子类的结构剖析91-ClassLoader子类的结构剖析
92-双亲委派机制的优势与劣势
93-三次双亲委派机制的破坏
94-热替换的代码实现
95-沙箱安全机制
96-自定义类加载器的好处和应用场景
97-自定义类加载器的代码实现
98-Java9的新特性

我们想要在每一行的前面加个#,意思是一级标题,使用正则表达式轻而易举的事

效果图

代码:用之前的代码随便改了下
主要是正则表达式的匹配规则
分隔符(\r?\n)(?=[\d第])

import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.io.file.FileWriter;
import org.junit.Test;import java.util.Arrays;
import java.util.Scanner;
import java.util.regex.Pattern;public class Test2 {public static void main(String[] args) {//        String src ="D:\\太阳路\\正则表达式\\正则表达式.md";//String dest ="D:\\workspace\\jvm\\chapter05\\src\\main\\java\\c.md";Scanner scanner = new Scanner(System.in);System.out.println("请输入文件的全路径:");String src = scanner.next();System.out.println("请输入文件的保存路径:");String dest = scanner.next();new Test2().mdClean(src,dest);}/*** 英文标点符号替换成中文的** @param str* @return*/public String punctuationMarksAlter(String str) {str = str.replaceAll("(", "(").replaceAll(")", ")").replaceAll(";", ";").replaceAll("‘", "'").replaceAll("’", "'").replaceAll("“", "\"").replaceAll("”", "\"").replaceAll(":", ":").replaceAll("?", "?").replaceAll("【", "[").replaceAll("】", "]").replaceAll("!", "!").replaceAll(".", ".").replaceAll(",", ",");System.out.println("标点符号替换完毕");return str;}/**** @param src  文件的来源* @param dest  文件目的地*/public void mdClean(String src,String dest){//默认UTF-8编码,可以在构造中传入第二个参数做为编码//hutool工具包,读取文件到String中FileReader fileReader = new FileReader(src);String result = fileReader.readString();//输出流StringBuilder sb=new StringBuilder();FileWriter writer = new FileWriter(dest);//md标题一共有6级,#空格后面写标题内容,我们想匹配到这个位置,所以是(?=(^#{1,6}\s+))
//            Pattern p =Pattern.compile("^\\r?\\n(?=(^#{1,6}\\s+))",Pattern.MULTILINE);Pattern p =Pattern.compile("(\\r?\\n)(?=[\\d第])",Pattern.MULTILINE);String[] split = p.split(result);for (int i = 0; i <split.length ; i++) {if (split[i].equals("")){//如果是空字符串,什么都不处理continue;}//先清除字符串前后的所有空格,空行,再加4个\r\n,相当于每个标题之间空三行if (i!=split.length-1){sb.append("# ").append(split[i].trim()).append("\r\n\r\n\r\n\r\n");}else {//文章最后一行不需要空空行sb.append("# ").append(split[i].trim());}}System.out.println("文档标题的格式整理完毕!");//中文标点换成英文的String string = this.punctuationMarksAlter(sb.toString());writer.write(string);}
}

巧用git commit搭建云笔记+历史记录本相关推荐

  1. Node.js Git Server搭建及Git常用操作笔记

    Node.js Git Server搭建及Git常用操作笔记 安装Git工具即可在本地进行Git仓库的管理,如果要实现远程仓库则需要搭建Git Server.通过Node.js搭建Git Server ...

  2. Gitea——私有git服务器搭建详细教程

    本文将从源代码和docker安装两种方式带大家从0-1通过Gitea搭建一个私有git服务器 Gitea--私有git服务器搭建教程 什么是Gitea 一.源代码安装方式 1. 前置环境要求 2. 下 ...

  3. git服务器搭建问题

    CentOS6.5本地搭建. 对于图形化的系统,可以联网,然后CTRL+ALT+F2可以切换到命令行,CTRL+ALT+F1可以切换回桌面图形化. 可以用SSH和FTP来连接服务器和传文件.   (1 ...

  4. Git环境搭建及简单的本地、远程 两库关联

    这里讲下我从拿到新的Mac后怎么一步一步搭建Git环境的. 首先让我们打开终端    在终端输入 git 如果说你卡到下面的结果说明你没有安装个git,去安装. The program 'git' i ...

  5. git commit —amend_Git之修改commit记录

    在很多影视作品里,就算主人公乘上了时光鸡,还是无法修改历史(或者说修改后造成十分严重的后果):而现在,在 Git 的强力驱动下,修改历史变得简单又相对安全. 本文叨叨修改 commit 历史的问题 应 ...

  6. git commit -amend_Github标星3W+,这份Git飞行规则你值得拥有

    开源最前线(ID:OpenSourceTop) 猿妹综合整理 项目链接:https://github.com/k88hudson/git-flight-rules 飞行规则,顾名思义是记录在手册上的来 ...

  7. GIT服务器搭建(转载)

    一.GIT服务器的搭建 1. 安装Git <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap ...

  8. 信步漫谈之Git—环境搭建及入门

    一.初识Git Git是一套优秀的分布式版本控制系统(区别于SVN和CVS,这两者是集中式版本控制系统). 分布式和集中式版本控制系统的区别: 1)集中式版本控制系统:版本库是集中存放在中央服务器的, ...

  9. 如何规范你的Git commit?

    简介:commit message应该如何写才更清晰明了?团队开发中有没有遇到过让人头疼的git commit?本文分享在git commit规范建设上的实践,规定了commit message的格式 ...

最新文章

  1. java中字符与字节的编码关系
  2. linux下通过inotify-tools监控文件系统
  3. 基于Git rebase修改历史提交信息
  4. 你真的会使用assert吗?
  5. chromium浏览器_Chromium版Edge浏览器正式上线:安装包仅2.2MB
  6. SAP CRM IBASE structure的读取逻辑
  7. 引发外国网友刷屏的“大国重器”到底什么水平?
  8. ipython和jupyter_IPython与Jupyter Notebook以及Anaconda
  9. Centos7选定默认启动的内核版本
  10. [转]B树(多向平衡查找树)详解
  11. 程序员的代码为什么永远写不完?
  12. MVVM MVC MVP
  13. React项目中第三方使用微信扫码登录
  14. compoundbutton调用setChecked触发onCheckedChanged的终极解决方案;
  15. iOS开发 在图片上添加文字,图片合成文字,图片上添加富文本,美图秀秀,美颜相机文字编辑
  16. CSS知识全面汇总——速查手册
  17. c语言stract函数是什么,您好,这个函数该怎么办,是关于C语言strcat函数?
  18. 紫外线消毒器的催化反应工艺指南
  19. js字符与ascii码转换
  20. [附源码]计算机毕业设计Python+uniapp汽车票管理系统APP65qfl(程序+lw+APP+远程部署)

热门文章

  1. 如何缩小安全漏洞爆炸半径,实现服务间零信任安全?
  2. iBatis 的简单入门
  3. Spring Boot 2.0.0参考手册_中英文对照_Part I
  4. Office 365 - Mac上OneNote无法登录的解决方案
  5. Joel有很多好的文章
  6. 我的2017云栖之行
  7. Android 11 WebView 打开html文件,加载时报错:ERR_ACCESS_DENIED
  8. 【洛谷】 P5716 月份天数
  9. Android调用相机拍照录视频录音以及存储,7.0以上及以下都可使用。
  10. 近距离的了解EDIUS非线性编辑软件