卷一:Java - 工程师修炼
Stage01:JavaSE
零、Java预热
1.计算机发展历史
计算机的历史始于 19 世纪初的原始设计,并在 20 世纪继续改变世界。计算机的历史可以追溯到 200 多年前。最初由数学家和企业家提出的理论,在 19 世纪,机械计算机的设计和制造是为了解决日益复杂的数字运算挑战。到 20 世纪初,技术的进步使计算机变得越来越复杂,计算机变得更大、更强大。
今天,计算机几乎无法从 19 世纪的设计中辨认出来,例如 Charles Babbage 的分析引擎,甚至是 20 世纪占据整个房间的大型计算机,例如电子数值积分器和计算器。
这是计算机的简史,从最初的数字运算起源到强大的现代机器,它们可以上网冲浪、运行游戏和流式传输多媒体。
1801 年 法国商人和发明家 Joseph Marie Jacquard 发明了一种织布机,该织布机使用打孔木卡自动编织织物设计。早期的计算机会使用类似的打孔卡。
1821 年 英国数学家查尔斯·巴贝奇(Charles Babbage)构想了一种蒸汽驱动的计算机,能够计算数字表。由英国政府资助的名为“差分引擎”的项目由于当时缺乏技术而失败。
1848 年: 英国数学家、诗人拜伦勋爵的女儿 Ada Lovelace 编写了世界上第一个计算机程序。德国明斯特大学理论数学教授 Anna Siffert 称,Lovelace 编写了第一个程序,同时将一篇关于 Babbage 分析引擎的论文从法语翻译成英语。“她还对文本提供了自己的评论。她的注释,简称为“注释”,结果是实际成绩单的三倍,” 伯努利数是计算中经常使用的有理数序列。
1853 年: 瑞典发明家 Per Georg Scheutz 和他的儿子 Edvard 设计了世界上第一台印刷计算器。根据 Uta C. Merzbach 的著作“ Georg Scheutz 和第一个印刷计算器”(史密森学会出版社,1977 年),这台机器是第一个“计算表格差异并打印结果”的机器具有重要意义。
1890 年: Herman Hollerith 设计了一个打孔卡系统来帮助计算 1890 年的美国人口普查。该机器为政府节省了数年的计算,并为美国纳税人节省了大约 500 万美元,该公司后来成立了一家公司,最终将成为国际商业机器公司 ( IBM )。
1931 年: Vannevar Bush 在麻省理工学院 (MIT) 发明并制造了差分分析仪,这是第一台大型自动通用机械模拟计算机。
1936 年: 根据 Chris Bernhardt 的著作《图灵的愿景》(麻省理工学院出版社,2017 年),英国科学家和数学家艾伦·图灵在一篇名为《论可计算数...... )。图灵机能够计算任何可计算的东西。现代计算机的核心概念是基于他的想法。
1937 年: 爱荷华州立大学物理和数学教授约翰·文森特·阿塔纳索夫(John Vincent Atanasoff )提交了一项资助提案,以建造第一台纯电动计算机,无需使用齿轮、凸轮、皮带或轴。
1939 年: David Packard 和 Bill Hewlett 在加利福尼亚州帕洛阿尔托创立了惠普公司。惠普的第一个总部就在帕卡德的车库里。
1941 年: 根据 Gerard O'Regan 的著作《计算简史》(Springer,2021 年),德国发明家和工程师 Konrad Zuse 完成了他的 Z3 机器,这是世界上最早的数字计算机。这台机器在二战期间对柏林的一次轰炸中被摧毁。据 O'Regan 称,Zuse 在击败纳粹德国后逃离了德国首都,后来于 1950 发布了世界上第一台商用数字计算机 Z4。
1941 年: Atanasoff 和他的研究生 Clifford Berry 设计了美国第一台数字电子计算机,称为 Atanasoff-Berry 计算机 (ABC)。这标志着计算机第一次能够在其主存储器上存储信息,并且能够每 15 秒回执行一次操作
1945 年: 宾夕法尼亚大学的两位教授 John Mauchly 和 J. Presper Eckert 设计并制造了电子数值积分器和计算器 (ENIAC)。根据 Edwin D. Reilly 的著作《计算机科学与信息技术的里程碑》(格林伍德出版社,2003 年),该机器是第一台“自动、通用、电子、十进制、数字计算机”。
1946 年: Mauchly 和 Presper 离开宾夕法尼亚大学,并从人口普查局获得资金来建造学校 UNIVAC,这是第一台用于商业和政府应用的商用计算机。
1947 年: 贝尔实验室的威廉·肖克利、约翰·巴丁和沃尔特·布拉顿发明了晶体管。他们发现了如何在不需要真空的情况下用固体材料制作电子开关。
1949 年: 根据 O'Regan 的说法,剑桥大学的一个团队开发了电子延迟存储自动计算器 (EDSAC),这是“第一台实用的存储程序计算机”。“EDSAC 在 1949 年 5 月运行了它的第一个程序,它计算了一个平方表和一个素数列表,”O'Regan 写道。1949 年 11 月,科学与工业研究委员会 (CSIR)(现称为 CSIRO)的科学家们建造了澳大利亚第一台数字计算机,称为科学与工业研究自动计算机委员会 (CSIRAC)。
1953 年: Grace Hopper开发了第一种计算机语言,最终被称为 COBOL,根据美国国家历史博物馆的说法,它代表 COMmon,面向商业的语言。霍珀后来在她追授的总统自由勋章中被称为“软件第一夫人”。IBM 首席执行官 Thomas Johnson Watson Sr. 的儿子 Thomas Johnson Watson Jr. 构想了 IBM 701 EDPM,以帮助联合国在战争期间密切关注韩国。
1954 年: John Backus 和他在 IBM 的程序员团队发表了一篇论文,描述了他们新创建的 FORTRAN 编程语言,
1958 年: 杰克·基尔比和罗伯特·诺伊斯推出了被称为计算机芯片的集成电路。基尔比后来因其工作获得诺贝尔物理学奖。
1968 年: Douglas Engelbart 在旧金山秋季联合计算机会议上展示了现代计算机的原型。他的演讲名为“增强人类智力的研究中心”,其中包括他的计算机的现场演示,包括鼠标和图形用户界面 (GUI) 。这标志着计算机从专门用于学术的机器发展为更容易被公众使用的技术。
1969 年: 贝尔实验室的 Ken Thompson、Dennis Ritchie 和一群其他开发人员生产了 UNIX,这是一种操作系统,背后的团队UNIX 继续使用 C 编程语言开发操作系统,并对其进行了优化。
1970: 新成立的英特尔推出了英特尔 1103,这是第一款动态存取存储器 (DRAM) 芯片。
1971 年: 由 Alan Shugart 领导的 IBM 工程师团队发明了“软盘”,使数据能够在不同的计算机之间共享。
1972 年: 德裔美国工程师 Ralph Baer 于 1972 年 9 月发布了世界上第一台家用游戏机 Magnavox Odyssey 。几个月后,企业家 Nolan Bushnell 和工程师 Al Alcorn 与 Atari 一起发布了世界上第一款商业上成功的视频游戏 Pong。
1973 年: 施乐研究人员的罗伯特·梅特卡夫(Robert Metcalfe)开发了用于连接多台计算机和其他硬件的以太网。
1977 年: Commodore 个人电子交易器 (PET) 在家用电脑市场上发布,采用 MOS 技术 8 位 6502 微处理器,可控制屏幕、键盘和磁带播放器。O'Regan 表示,PET 在教育市场上尤其成功。
1975 年: “大众电子”一月刊的杂志封面强调 Altair 8080 是“世界上第一个与商业模型竞争的小型计算机套件”。看到这期杂志后,两位“计算机极客”保罗·艾伦和比尔·盖茨提议使用新的 BASIC 语言为 Altair 编写软件。4 月 4 日,在第一次尝试成功后,这两个儿时的朋友成立了自己的软件公司微软。
1976 年: 史蒂夫·乔布斯和史蒂夫·沃兹尼亚克在愚人节共同创立了 Apple Computer。据麻省理工学院称,他们推出了 Apple I,这是第一台具有单电路板和 ROM(只读存储器)的计算机。
1977 年: Radio Shack 开始了 3,000 台 TRS-80 Model 1 计算机的初始生产运行——根据美国国家历史博物馆的数据,这台计算机被轻蔑地称为“Trash 80”——售价为 599 美元。
1977 年: 第一届西海岸计算机展览会在旧金山举行。乔布斯和沃兹尼亚克在马戏团上展示了 Apple II 电脑,其中包括彩色图形和用于存储的录音带驱动器。
1978 年: 推出了第一个计算机化电子表格程序 VisiCalc。
1979 年: 由软件工程师 Seymour Rubenstein 创立的 MicroPro International 发布了 WordStar,这是世界上第一台商业上成功的文字处理器
1981 年: 据 IBM 称,IBM 的第一台个人电脑“Acorn”以 1,565 美元的价格投放市场。Acorn 使用 Windows 的 MS-DOS 操作系统。可选功能包括显示器、打印机、两个软盘驱动器、额外内存、游戏适配器等。
1983 年: 根据美国国家历史博物馆 ( NMAH ) 的说法,Apple Lisa 代表“本地集成软件架构”,也是史蒂夫乔布斯女儿的名字,是第一台配备 GUI 的个人电脑。该机器还包括一个下拉菜单和图标。同样在今年,Gavilan SC 发布,它是第一款采用翻盖设计的便携式电脑,也是第一款作为“笔记本电脑”出售的笔记本电脑。
1984 年: Apple Macintosh 在超级碗广告中向全世界宣布。据 NMAH 称,Macintosh 的零售价为 2,500 美元。
1985 年: 据卫报报道,作为对 Apple Lisa 的 GUI 的回应,微软于 1985 年 11 月发布了 Windows 。与此同时,Commodore 发布了 Amiga 1000。
1989 年:欧洲核子研究组织 ( CERN )的英国研究员 Tim Berners-Lee提交了关于万维网的提议。他的论文详细介绍了他对超文本标记语言 (HTML) 的想法,它是 Web 的构建块。
1993: 奔腾微处理器推动了图形和音乐在个人电脑上的使用。
1996 年: Sergey Brin 和 Larry Page 在斯坦福大学开发了 Google 搜索引擎。
1997 年: 微软向苹果公司投资 1.5 亿美元,当时苹果公司正陷入财务困境。这项投资结束了苹果指控微软复制其操作系统的正在进行的法庭案件。
1999 年: Wi-Fi,“无线保真”的缩写词被开发出来,最初覆盖的距离可达 300 英尺(91 米)。
2001: Mac OS X,后来更名为 OS X,然后简称为 macOS,由 Apple 发布,作为其标准 Mac 操作系统的继任者。
2003 年: AMD 的第一款 64 位个人电脑处理器 Athlon 64 向客户发布。
2004: Mozilla Corporation 推出 Mozilla Firefox 1.0。Web 浏览器是微软拥有的 Internet Explorer 面临的首要挑战之一。在最初的五年里,Firefox 的用户下载量超过了 10 亿次。
2005 年: 谷歌收购了基于 Linux 的手机操作系统 Android
2006 年: Apple 的 MacBook Pro 上架。Pro 是该公司首款基于 Intel 的双核移动计算机。
2009 年:微软于 7 月 22 日推出 Windows 7。新操作系统具有将应用程序固定到任务栏、通过摇动另一个窗口来分散窗口、易于访问的跳转列表、更轻松地预览图块等功能。
2010 年: Apple 的旗舰手持平板电脑 iPad 面世。
2011 年: 谷歌发布了运行在谷歌 Chrome 操作系统上的 Chromebook。
2015 年: Apple 发布 Apple Watch。微软发布 Windows 10。
2016 年: 创建了第一台可重新编程的量子计算机。“到目前为止,还没有任何量子计算平台能够将新算法编程到他们的系统中。它们通常都是为攻击特定算法而量身定制的,”研究的主要作者、量子物理学家 Shantanu Debnath 说。马里兰大学帕克分校的光学工程师。
2017 年: 美国国防高级研究计划局 (DARPA) 正在开发一个新的“分子信息学”计划,该计划将分子用作计算机。DARPA 国防科学办公室项目经理 Anne Fischer 在一份声明中说:“化学提供了一组丰富的属性,我们可以利用这些属性进行快速、可扩展的信息存储和处理。” “存在数以百万计的分子,每个分子都具有独特的三维原子结构以及形状、大小甚至颜色等变量。这种丰富性为探索新颖和多价值的编码和处理方式提供了广阔的设计空间超越当前基于逻辑的数字架构的 0 和 1 的数据。”
2.编程语言概况与分类
一、计算机编程语言的分类
1、低级语言
机器语言(二进制代码)、汇编语言(面向机器的程序设计语言)和符号语言。汇编语言源程序必须经过汇编,生成目
标文件,然后执行。
机器语言优缺点如下:
缺点:可读性、可移植性差,编程繁杂; 优点:直接执行,速度快,资源占用少。
汇编语言优缺点如下:
优点:能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源,目标代码简短,占用内存少,执行速度快。
缺点:不同的处理器有不同的汇编语言语法和编译器,编译的程序无法在不同的处理器上执行,缺乏可移植性,难于从汇编语言代码上理解程序设计意图,可维护性差,即使是完成简单的工作也需要大量的汇编语言代码,很容易产生bug,难于调试,使用汇编语言必须对某种处理器非常了解,而且只能针对特定的体系结构和处理器进行优化,开发效率很低,周期长且单调。
2、高级语言
BASIC(True basic、Qbasic、Virtual Basic)、C、C++、PASCAL、FORTRAN、智能化语言(LISP、Prolog)、动态 语言(Python、PHP、Ruby、Lua)等等。高级语言源程序可以用解释、编译两种方式执行。通常用后一种。 我们使用的C语言就是使用的后者。
高级语言的优缺点如下:
优点:高级语言接近算法语言,易学、易掌握,级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;高级语言远离机器语言,与具体的计算机硬件关系不大,可移植性好,重用率高;由于把繁杂琐碎的事务交给了编译程序去做,所以自动化程度高,开发周期短,且程序员得到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高程序的质量。
缺点:运行速度基本上比直接用汇编写的慢,速度和程序大小与编译软件有关。
3、专用语言
CAD系统中的绘图语言和DBMS的数据库查询语言
4、脚本语言
(Script language,scripting language,scripting programming language)是为了缩短传统的编写-编译-链接-运行(edit- compile-link-run)过程而创建的计算机编程语言。脚本语言一般都 有相应的脚本引擎来解释执行。 他们一般需要解释器才能运行。一个脚本通常是解释运行而非编译。脚本语言通常 都有简单、易学、易用的特性,目的就是希望能让程序员快速完成程序的编写工 作。
二、高级语言的分类
1、按转换方式可分为三类:① 编译型语言; ② 解释型语言;③ 混合型语言。
计算机不能直接的理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言的编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。
① 编译型语言
需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件。编译和执行是分开的,但是不能跨平台。 优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。 缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。 代表语言:C、C++、Pascal、Object-C、swift等。
② 解释型语言
解释性语言的程序不需要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才逐行翻译。每一个语句都是执行的时候才能翻译。这样解释性语言每执行一次要翻译一次,效率表较低。 优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。 缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。 代表语言:JavaScript、Python、Erlang、PHP、Perl、Ruby等。
③ 混合型语言
混合型语言也叫半编译型语言。比如java、C#,C#在编译的时候不是直接编译成机器码而是中间码,.NET平台提供了 中间语言运行库运行中间码,中间语言运行库类似于Java虚拟机。.net在编译成IL代码后,保存在dll中,首次运行时由JIT在编译成机器码缓存在内存中,下次直接执行。 java解释器采用生成与系统无关的字节代码指令技术。也就是说,在任何不同的操作系统上,只要正确安装了java运行系统,就有了编写调试java程序的平台,在分布式应用中,java的这个特点使同一个java程序能在不同的系统上运行,从而提高了软件生产效率。可移植性是跨平台特性的一个延伸,即具有了跨平台性,就保证了可移植性。java程序、java类库、java编译器、java系统都具有可移植性。 另外有一个特殊的情况,正常情况下JavaScript属于解释性语言,V8引擎是被设计用来提高网页浏览器内部JavaScript执行的性能,为了提高性能,v8会把js代码转换为高效的机器码,而不在是依赖于解释器去执行。v8引入了JIT在运行 时把js代码进行转换为机器码。这里的主要区别在于V8不生成字节码或任何中间代码。这里的特殊之处在于JIT做代码优化(同时生成编译版本);解释型语言无法做到这些。
- 按照客观系统的描述可分为两类:① 面向过程语言; ② 面向对象语言。
① 面向过程语言
面向过程语言是以过程或函数为基础的,这种语言对底层硬件,内存等操作比较方便,但是写代码和调试维护等会很麻烦。例如:c语言。
② 面向对象语言
面向对象语言(Object-Oriented Language)是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。语言中提供了类、继承等成分。 面向对象语言的发展有两个方向:一种是纯面向对象语言,如Smalltalk、EIFFEL等;另一种是混合型面向对象语言,即在过程式语言及其它语言中加入类、继承等成分,如C++、Objective-C等。
-
按照运行时结构是否改变可分为两类:① 动态结构语言;② 静态结构语言。 主要针对点是:运行是是否能够改变代码结构。动态类型语言和静态类型语言主要针对数据类型检查的时间问题。 ① 动态结构语言
是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。
主要语言:Python、Ruby、Erlang、JavaScript、swift、PHP、SQL、Perl、Object-C、C#。
② 静态结构语言
与动态语言相对应的,运行时结构不可变的语言就是静态语言。静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。
主要语言:C、C++、C#、Java、Object-C。
注意:
通常情况下解释型语言是动态类型语言,编译型语言是静态类型语言。但也不全是,swift是编译型语言但是它也是动态类型语言。C#和Java是解释型语言也是静态类型语言。
-
按照变量是否需要制定类型可分为:① 强类型语言; ② 弱类型语言。
① 强类型语言
强类型语言,一旦一个变量被指定了某个数据类型,如果不经过强制类型转换,那么它就永远是这个数据类型。你不能把一个整形变量当成一个字符串来处理。
主要语言:Java、C#、Python、Object-C、Ruby等。
② 弱类型语言
数据类型可被忽略,一个变量可以赋不同数据类型的值。一旦给一个整型变量a赋一个字符串值,那么a就成字符类型。 主要语言:JavaScript、PHP、C、C++(C和C++有争议,但是确实可以给一个字符变量赋整形值,可能初衷是强类型,形态上接近弱类型)等。
三、脚本语言
动态程序一般有两种实现方式,一是二进制方式,一是脚本方式。 二进制方式是先将我们编写的程序进行编译,变成机器可识别的指令代码(如.exe文件),然后再执行。这种编译好的程序我们只能执行、使用,却看不到他的程序内容。
脚本程序相对一般程序开发来说比较接近自然语言,可以不经编译而是解释执行,利于快速开发或一些轻量的控制。一般的脚本语言的执行只同具体的解释执行器有关,所以只要系统上有相应语言的解释程序就可以做到跨平台。 脚本script是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。脚本通常可以由应用程序临时调用并执行。各类脚本目前被广泛地应用于网页设计中,因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现,如动画、声音等。
脚本简单地说就是一条条的文字命令,这些文字命令是我们可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。 我们上面提到的各种动态语言,如ASP、PHP、CGI、JSP等,都是脚本语言。 按目前的服务规则,虚拟主机网站只能采用脚本语言来实现 脚本英文为Script。实际上脚本就是程序,一般都是有应用程序提供的编程语言。应用程序包括浏览器(javascript、VBScript)、多媒体创作工具,应用程序的宏和创作系统的批处理语言也可以归入脚本之类。脚本同我们平时使用的VB、C语言等的区别主要是:
1、脚本语法比较简单,比较容易掌握;
2、脚本与应用程序密切相关,所以包括相对应用程序自身的功能;
3、脚本一般不具备通用性,所能处理的问题范围有限。
4、脚本语言(JavaScript,VBscript等)介于HTML和C,C++,Java,C#等编程语言之间。 HTML通常用于格式化和链结文本。而编 程语言通常用于向机器发出一系列复杂的指令。
5、脚本语言与编程语言也有很多相似地方,其函数与编程语言比较相象一些,其也涉及到变量。与编程语言之间最大的区别是编程语言的语法和规则更为严格和复杂一些.
6、与程序代码的关系:脚本也是一种语言,其同样由程序代码组成。 注:脚本语言一般都有相应的脚本引擎来解释执行。 他们一般需解释器才能运行。JAVASCRIPT,ASP,PHP,PERL,Nuva都是脚本语言。C/C++编译、链接后,可形成独立执行的exe文件。
7、脚本语言是一种解释性的语言,例如vbscript,javascript,installshield script等等,它不象c/c++等可以编译成二进制代码,以可执行文件的形式存在. 脚本语言不需要编译,可以直接用,由解释器来负责解释。
8、脚本语言一般都是以文本形式存在,类似于一种命令. 举个例子说,如果你建立了一个程序,叫aaa.exe,可以打开.aa为扩展名的 文件. 你为.aa文件的编写指定了一套规则(语法),当别人编写了.aa文件后,你的程序用这种规则来理解编写人的意图,并作出回应.那么,这一套规则就是脚本语言. 脚本是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。
四、新兴编程语言
perl擅长文字处理,python擅长数值处理 Perl 设计之初就是为了方便编写复杂高效的系统脚本,它也是应该最为广泛的脚本 编程语言。它在编程方面相当于瑞士军刀,对字符、文本文件处理能力很强,以前要求 shell+sed+awk+C才能完成的任务,只需perl脚本就可以完成了。而且应用领域一直在拓宽,支持面向对象程序设计。Python 面向对象的动态公共语言,适于脚本编程和快速开发,它最显著的特点是作为编译语言(如C)和脚本语言(如perl)之间的桥接语言,它具有的强大功能,可扩充性及面向对象的特征使其成为大规模应用程序开发工具。*
五、更详细的分类
因为这些需要做一个了解即可,笔者不想做太长的篇幅,如果有需要的,或想详细的了解可以去下面的博客地址,分类较为详细
3.学习方法与学习笔记及笔记工具
学海无涯,每个人的学习方法都不尽相同,适合每个人的方法也不一样,所以笔者在这里只对自己的学习方法进行描述,希望可以给读者带来启发
1.学习方法
我自己的学习方法,首先要感谢pdai大神,我是看到大神的文章后有了触发,进行自己技能树的构建及目标确立,这里推荐大家看一下pdai大神的《个人成长和认知》,构建属于自己的技能树,并对目前自己能力进行剖析,因为只有了解你自己,你才不会因为无法确定边界的盲目学习而无法融汇已获得的知识.
2笔记工具
我在使用的事Notion,使用比较方便,可以对所有文件进行关键字搜索是我比较喜欢的点,每一个页面不同的图标和背景也是我喜欢的点,其他的觅思文档,有道云笔记等都是不错的选择,看自己喜欢的风格挑选.
PS:如需要NOTION安装包,可在下方评论或联系我