一、博客的重要性
1.博客,英文名Blog,正式名称为网络日记
2.为什么要写博客?
- 需要总结和思考
- 提升文笔组织能力
- 提升学习总结能力
- 提升逻辑思维能力
3.注册博客
博客园、CSDN、知乎、简书、掘金、购买服务器搭建个人网站。。。
wordpress搭建个人网站很简单:wordpress.com
typecho小巧简约速度比较快:Typecho Official Site
Halo个人博客系统也挺不错:Halo
codesheep有hexo教程
二、MarkDown语法
MarkDown,纯文本格式标记语言,跟普通的txt、word是一样的
MarkDown有一些标记,开以使普通的文本具有一定的标记
推荐文本编辑器:Typora Typora — a markdown editor, markdown reader.
文件后缀:md
语法:
1.标题:
# 一级标题
## 二级标题
###### 六级标题
一级标题
二级标题
六级标题
2.字体:
**粗体**(ctrl+B)
*斜体*(ctrl+I)
~~删除线~~
粗体(ctrl+B)
斜体(ctrl+I)
删除线
3.引用
> 引用
引用
4.分割线
---
***
5.图片
![java](https://cdn.jsdelivr.net/gh/327506144/picx-xpoet-cn@master/20210626/java.png)
6.超链接
[Java Software | Oracle](https://www.oracle.com/java/)
Markdown本身的语法不支持在链接里面打开新页面
7.列表
1. 有序列表
- 无序列表
- 有序列表
- 无序列表
8.表格
|姓名|年龄|
|-|-|
|张三|12|
姓名 | 年龄 |
---|---|
张三 | 12 |
9.代码块
```bash
三、什么是计算机
- Computer:全称电子计算机,俗称电脑
- 能够按照==程序==(电脑跑的东西统称程序)运行,自动、高速处理海量数据的现代化智能电子设备
- 由==硬件和软件==所组成
- 常见:台式计算机、笔记本计算机、大型计算机等
- 广泛应用:科学计算(卫星)、数据处理(大数据时代)、自动控制(无人机)、计算机辅助设计(平面设计)、人工智能(AI)、网络(互联网时代)等领域
四、硬件及冯·诺依曼结构
1.计算机硬件
- 一些物理装置按系统结构的要求构成一个有机整体为计算机软件提供物质基础
- 计算机硬件组成:CPU(计算机所有的计算都是靠CPU执行的)、主板(Motherboard)、内存(Memory)、电源、主机箱、硬盘、显卡(图形界面操作)、键盘、鼠标、显示器等
- 装机
- 所有的程序都在拼尽全力节省内存,都在不遗余力提高内存使用效率,计算机的整个发展过程都在围绕内存打转,不断地优化内存布局,以保证可以同时运行多个程序
2.冯·诺依曼体系结构
五、软件及软件开发
- 计算机软件可以使计算机按照事先预定好的顺序完成特定的功能
- 计算机软件按照功能划分为==系统软件(Dos(磁盘操作系统Disk Operating System)、Windows、Linus、Unix、Mac、Android、IOS安装在硬盘里)与应用软件==(QQ)
- 软件、开发(制作软件的过程)、软件开发(借助一些开发工具和计算机语言制作软件的过程)
- 人机交互(图形化界面,命令行)
六、常用快捷键
- Tab:切换菜单键,空四个格子
- Shift:功能键
- Shift+Delete:永久删除
- Ctrl:控制键
- Ctrl+Shift+Esc:打开任务管理器
- Window:窗口键
- Alt:组合键
- Alt+F4:关闭窗口,桌面关机
七、Dos命令
1.开启DOS控制台(cmd)的几种方式
- 菜单 - Windows系统 - 命令提示符
- Window+R - cmd
- Shift+鼠标右键 - 在此处打开Powershell窗口
- 资源管理器地址栏中,地址前面输入cmd+空格+地址
2.管理员方式运行
- 菜单 - Windows系统 - 命令提示符 - 右键 - 以管理员身份运行
3.常见DOS命令
d: #盘符切换,C盘切到D盘(默认C盘)
dir #查看当前目录下的所有文件
cd #切换目录
cd /d #跨盘符切换目录
cd .. #返回上一级
cls #清屏(clear screen)
exit #退出
ipconfig #查看ip
ipconfig/all #查看ip详细
calc #计算器
mspaint #画图
notepad #记事本
ping www.baidu.com #得到ip地址,测试网络是否正常
鼠标右键 #粘贴
md test #创建test文件夹
cd>test.txt #创建test文件
del test.txt #删除文件
rd test #删除目录
八、计算机语言发展史
- 任何产品的发展规律都是向着人更加容易使用、功能越来越强大的方向发展
1.第一代语言
- 机器语言
- 计算机的基本计算方式都是基于二进制(0、1)的方式
- 这种代码是直接输入给计算机使用的,不经过任何转换
2.第二代语言
-
汇编语言
- 解决人类无法读懂机器的问题
- 指令代替二进制
-
应用
- 逆向工程(破解游戏)、机器人、病毒
3.第三代语言
- 摩尔定律
- 高级语言:C语言(现代语言的鼻祖,有高级语言的特点也有汇编语言的特点,用于操作系统、应用程序、工作系统等一些不依赖计算机硬件的一些应用程序,有很强的数据处理能力)、C++(C语言面向对象的版本)、Java(以C和C++为原型开发的)、C#(C sharp)、Python(大数据分析、人工智能相关)、PHP(快速构建网站)、JavaScript等
- 大体分为:面向过程和面向对象
- C语言是典型的面向过程的语言,C++、Java是典型的面向对象的语言(面向对象和面向过程是相辅相成的,在面向对象的编程中也离不开面向过程)
九、计算机底层:二进制到汇编
1.语言
机器语言
-
目前主流的电子计算机:只有两个状态(0和1)
-
最早的程序员:穿孔卡带
加减乘除的本质就是加法 加 INC 0100 0000 减 DEC 0100 1000 乘 MUL 0100 1000 0100 1000 除 DIV 0100 1000 1100 1000
-
简化复杂的机器语言:助记符 --编译器–> 汇编语言(人能够理解的语言转换成为机器能够理解的语言)
-
汇编一般用于底层的编写、单片机……
C语言
-
在汇编语言基础上进行简化
加 A+B 0100 0000 减 A-B 0100 1000 乘 A*B 0100 1000 0100 1000 除 A/B 0100 1000 1100 1000
2.进制
-
二进制:0和1
-
学习进制的障碍:10进制(人类天然的选择的就是10进制。跳出固有思维的方法)
-
进制(每一种进制都是完美的,都有自己的计算方式):一组符号:逢几进几(查数)
- 1进制:逢1进1(结绳记事:1 1)
- 2进制:逢2进1(计算机:0 1)
- 8进制:逢8进1(8个符号组成:0 1 2 3 4 5 6 7)
- 10进制:逢10进1(10个符号组成:0 1 2 3 4 5 6 7 8 9)
- 16进制:逢16进1(16个符号组成:0 1 2 3 4 5 6 7 8 9 a b c d e f)
#一进制(1~20) 1 1 1 1 …… #三进制(1~20) 0 1 2 10 11 12 20 21 22 100 101 102 100 101 102 110 111 112 120 121 # 二进制(1~10) 0 1 10 11 100 101 110 111 1000 1001 # 七进制(1~20) 0 1 2 3 4 5 6 10 11 12 13 14 15 16 20 21 22 23 24 25 26
-
进制的加密:数字量一大,总是有规律的
3.进制怎么运算
-
运算的本质就是查数
# 八进制计算下面的结果 2+3=5(2往后移3位) 2*3=6(3个2) 4+5=11 (4往后移5位) 4*5=24(4个5) # 运算的本质就是查数 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 27
-
八进制的乘法表
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=11 1*4=4 2*4=10 3*4=14 4*4=20 1*5=5 2*5=12 3*5=17 4*5=24 5*5=31 1*6=6 2*6=14 3*6=22 4*6=30 5*6=36 6*6=44 1*7=7 2*7=1 3*7=25 4*7=34 5*7=43 6*7=52 7*7=61 -
八进制的加法表
1+1=2 1+2=3 2+2=4 1+3=4 2+3=5 3+3=6 1+4=5 2+4=6 3+4=7 4+4=10 1+5=6 2+5=7 3+5=10 4+5=11 5+5=12 1+6=7 2+6=10 3+6=11 4+6=12 5+6=13 6+6=14 1+7=10 2+7=11 3+7=12 4+7=13 5+7=14 6+7=15 7+7=16 -
练习:查表计算下面结果
277+333=632 277 333 + ----- 632 276*54=20250 276 54 * ------- 1370 1666 + ------- 20250 # 减法的本质其实就是加法 237-54=237+(-54)=163 # 除法的本质,除数乘以那个数最接近结果即可 234/4=47 47 --- 4/234 20 ----- 34 34 ----- 0
-
结论:无论什么进制,本身都有一套完美的运算体系,都可以通过列表的方式计算出来
4.二进制
-
计算机使用二进制:0 1(通过电控制,只有两种状态:有电 无电)
-
物理极限:摩尔定律(追求语言的极限:并发语言)
-
量子计算机:可以实现量子计算的机器
- 传统计算机:通过集成电路来实现电路的中断(0 1),硬件为硅晶片
- 量子计算机的单位:昆比特(量子比特),使用量子的两态来表示
- 光子:正交偏振方向
- 磁场:电子的自旋方向
- 量子计算机的核心:提高计算机的计算力
- 量子比特、量子叠加态、量子纠缠、量子并行原理……
- 2019年,Google研究人员展示其最新54比特量子计算机,该计算机只用200秒便可计算完毕当前世界最大的超级计算机需1万年进行的运算
- 2020年,量子体积64的量子计算机。霍尼韦尔还表示,将在一年之内得到至少10个有效量子比特,相当于1024个量子体积
-
二进制能否简写
# 二进制: 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 # 简写2进制 ==》16进制 0 1 2 3 4 5 6 7 8 9 a b c d e f
-
汇编入门理解的基础:寄存器、内存、位(底层的每一个位都是有含义的)
-
汇编高级:了解程序的深层、操作系统的内核
5.数据宽度
-
计算机:内存有限制(给数据增加数据宽度)
- bit(位):1位(0 1)
- Byte(字节):8位(0~0xFF)
- Word(字):16位(0~0xFFFF)
- DWord(双字):32位(0~0xFFFFFFFF)
-
C、C++、Java都需要定义数据的类型,计算机底层需要给这些数据定义宽度
-
在计算机中,每一个数据都需要定义类型(定义在内存中的宽度)
6.有符号数和无符号数
-
数据都是有宽度的
-
二进制解码增加一个规则
- 无符号数规则:数字是什么,那就是什么
- 有符号数规则:最高位是符号位:1(负数)0(正数)
7.原码反码补码
-
有符号数的编码规则
- 原码: 最高位符号位,对其它的位进行本身绝对值即可
- 反码
- 正数:反码和原码相同
- 负数:符号位一定是1,其余位对原码取反
- 补码
- 正数:补码和原码相同
- 负数:符号位一定是1,对反码+1
# 如果是正数,原码反码补码都一样(8位) 1 #原码 0 0 0 0 0 0 0 1 #反码 0 0 0 0 0 0 0 1 #补码 0 0 0 0 0 0 0 1 # 如果是负数(8位) -1 #原码 1 0 0 0 0 0 0 1 #反码 1 1 1 1 1 1 1 0 #补码 1 1 1 1 1 1 1 1 -7 #原码 1 0 0 0 0 1 1 1 #反码 1 1 1 1 1 0 0 0 #补码 1 1 1 1 1 0 0 1
-
如果看到一个二进制的数字,需要了解是有符号数还是无符号数
# 二进制的标志 2 10 4 100 8 1000 16 10000
-
寄存器:
mov 寄存器,值
8.位运算
- 计算机现在可以存储所有的数字(整数,浮点数、字符……)
- 2*8最高效计算方式:位运算
- 很多底层的调试器,需要通过位来判断CPU的状态
1.与运算(双目运算符 and &)
-
两个都为1,结果为1
1011 0001 1101 1000 # 与运算 1001 0000
2.或运算(双目运算符 or |)
-
只要有一个1,结果为1
1011 0001 1101 1000 # 或运算 1111 1001
3.异或运算(双目运算符 xor ^)
-
不一样就是1
1011 0001 1101 1000 # 异或运算 0110 1001
4.非运算(单目运算符 not ~)
-
取反
1101 1000 # 非运算 0010 0111
5.位运算(移动位)
-
左移:(shl <<)(*2)
0000 0001 # 所有二进制位全部左移若干位,高位就丢弃了,低位补0 0000 0010
-
右移:(shr >>)(/2)
0000 0001 # 所有二进制位全部右移若干位,低位就丢弃了,高位补0/1(符号位决定) 0000 0000
6.位运算的加减乘除
-
计算机只认识0和1,基本数学是建立在加减乘除(加法)
-
加(4+5):计算机是不会直接加的
0000 0100 4 0000 0101 5 # 计算机是不会直接加的 0000 1001 9 # 计算机的实现原理 # 第一步:异或运算(如果不考虑进位,异或运算就可以直接出结果) 0000 0100 0000 0101 --------- 0000 0001 # 第二步:与运算(判断进位,如果与运算结果为0,没有进位) 0000 0100 0000 0101 --------- 0000 0100 # 第三步:将与运算的结果,左移一位(进位的结果) 0000 1000 # 第四步:异或运算(第一步异或运算的结果和第三步与运算的进位结果进行异或运算) 0000 0001 0000 1000 --------- 0000 1001 # 第五步:与运算(判断进位,如果与运算结果为0,没有进位) 0000 0001 0000 1000 --------- 0000 0000 # 所以最终的结果就是与运算为0的结果的上一个异或运算
-
减(4-5):计算机是不会直接减的
# 4+(-5) 0000 0100 4 1111 1011 -5 # 计算机是不会直接减的 1111 1111 -1 # 计算机的实现原理 # 第一步:异或运算(如果不考虑进位,异或运算就可以直接出结果) 0000 0100 1111 1011 --------- 1111 1111 # 第二步:与运算(判断进位,如果与运算结果为0,没有进位) 0000 0100 1111 1011 --------- 0000 0000 # 所以最终的结果就是与运算为0的结果的上一个异或运算
-
乘(4*5):5个4相加,还是加法
-
除(4/5):本质就是减法,就是4能减去多少个5
-
结论:计算机只会做加法
-
机器语言就是位运算。都是电路来实现的。这就是计算机的最底层的本质
-
通过机器语言来实现加法计算器==》设计电路
9.汇编语言
1.环境说明
-
通过指令代替二进制编码
-
通过汇编指令可以给计算机发一些操作,然后让计算机执行
-
在学习汇编之前,需要先掌握环境的配置:
- Vc6(程序到汇编的理解)
- OD(OllyDbg)
- 抓包工具
- 加密解密工具
-
学汇编不是为了写代码,是为了理解程序的本质
-
《汇编语言》(16位的汇编)
-
32位(建议直接学习32位汇编)
-
64位(32位演化过来的,本质架构区别不大,寻址能力增加)
-
汇编入门:了解汇编和程序的对应关系,程序的本质即可
2.通用寄存器
-
存储数据:CPU>内存>硬盘
- 32位CPU:8 16 32(寄存器)
- 64位CPU:8 16 32 64(寄存器,多了寻址能力)
-
通用寄存器,可以存储任意的东西
- 32位的通用寄存器只有8个:
EAX ECX EDX EBX ESP EBP ESI EDI
(存值范围:0~FFFFFFFF)
- 32位的通用寄存器只有8个:
-
计算机向寄存器存值
-
对于二进制来说,直接修改值
-
mov
指令# 将数字写入到寄存器 mov 存的地址,存的数 # 将一个寄存器中的值写到另一个寄存器中 mov 目标地址,源地址
-
-
不同的寄存器
32位(FFFFFFFF) 16位(FFFF) 8位(FF)(L低位/H高位) EAX AX AL ECX CX CL EDX DX DL EBX BX BL ESP SP AH EBP BP CH ESI SI DH EDI DI BH 高8位+低8位=16位
- 除了这些通用寄存器之外,其他的寄存器每一位都有自己特定的功能
3.内存
-
寄存器很小,不够用。所以把数据放到内存中
- 每个应用程序进程都有4GB的内存空间(虚拟内存)
-
程序真正运行的时候,才会用到物理内存
1B = 8bit 1KB = 1024B 1MB = 1024KB 1GB = 1024MB
4GB(4096MB)的内存,最终计算为位,就是可以存储的最大容量
-
计算机中内存地址很多,空间很大
内存地址
-
存一个数:占用大小(数据宽度 ),存到哪里
-
计算机中内存地址很多,空间很大,每个空间分配一个地址
-
给内存起的编号,就是内存地址。32位:8个16进制的值(0xFFFFFFFF)
-
32位:决定寻址能力(位限制内存大小)
- 内存上限4GB
- 最大的内存地址:FFFFFFFF + 1 = 100000000
- 内存地址 * 8 = 800000000位
- 转换为10进制 / 8 = 4294967296字节
- 字节 / 1024 / 1024 / 1024 = 4GB
- 64位的寻址能力非常大
- 所以每个内存地址都有一个编号,可以通过这些编号向里面存值
-
内存存值:
- 数据宽度:Byte Word DWord
- 地址位置:0xFFFFFFFF(不是任意地址都可以写东西,只有程序申请过的内存地址才可以使用)
# 汇编如何向内存中写值 mov 数据宽度 内存地址,值 mov byte ptr ds:[0x19FF70],1 # 传递的值的大小一定要和数据宽度相等
-
内存地址有多种写法
# 内存地址偏移:+ ds:[0x19FF70+4] # 寄存器 ds:[eax] # 寄存器偏移 ds:[eax+4] # 数组:[] ds:[eax+eax*{1,2,4,8}] # 偏移 ds:[eax+eax*{1,2,4,8}+4]
10.汇编指令
- 操作内存中的值
11.内存复制
12.堆栈的指令
13.汇编如何写函数
14.堆栈传参
15.堆栈平衡
16.外挂
十、信息检索
1.搜索需求的分类
-
搜索什么
- 信息资讯(新闻大事件)
- 知识技能(概念文章教程)
- 素材文件(视频音频图片文稿设计文档)
- 工具软件(在线工具插件)
-
为什么搜索
- 知道一些东西
- 学习一些东西
- 创作一些东西
- 完成一些东西
2.搜索信息资讯
- 如何做到又快又准
- 搜索效率:谷歌>公众号>短视频>百度
- 搜索语法:(可以相互组合)
""
:限定关键词intitle:
:限定标题allintitle:
:限定标题多个关键词intext:
:限定内容关键词inurl:
:限定网址关键词(一个可以根据输入的网址找出很多其它类似的网站:sitesimilar、similarsites)site:
:限定网址来源(完整的域名:xxx.com
、xxx.net
、xxx.cn
)- 常规网站的域名:
- 发布研究报告:互联网数据资讯网(199it.com)
- 知乎:知乎 (zhihu.com)
- 高清图片:免费素材图片 (pexels.com)
- 高清图片:免费正版高清图片素材库(pixabay.com)
- 高清图片:视觉中国(vcg.com)
- 常规网站的域名:
imagesize:
:限定图片尺寸filetype:
:限定文件格式
- 搜索信息源头:能最大程度的保证信息资讯的准确性
3.搜索知识技能
-
知识储存位置:
- 组织内部:(专业知识)
- 组织外部:
- 网页
- 电子书(鸠摩搜索、Z-Librar(singlelogin.site)、Z-Librar(singlelogin.se)、Manybooks、pdfbooksworld、谷歌图书Kindle)
- 电子文档
- 学术论文(搜索论文的完整题目:Sci-Hub)
- 笔记
- 知识平台
- 视频网站
- AI大脑:ChatGPT
- 他人
-
获取知识:
- 蹭会涨知识
- 群文件扫盲
- 搜索后请教
-
网络获取知识的转变
- 从电脑端转向移动端:搜索知识会更加快捷方便
- 从文字转向视频:不仅可以交付知识,还能交付一些很多操作的技能
- 音频交付适应碎片化学习:碎片化学习
-
知识技能的搜索渠道的选择:
- 看你要的知识技能最有可能附着在哪类载体上?
- 网页
- PDF文档
- 电子书
- 视频教程
- 看你搜索知识技能是为了什么?
- 知道一些东西
- 学习一些东西
- 创作一些东西
- 完成一些东西
- 看你要的知识技能最有可能附着在哪类载体上?
4.搜索素材文件
- 视频:pexels、pixabay、videvo、Mixkit
- 视频下载器:save.tube
- 音频:pixabay
- 图片:pexels、pixabay、unsplash
- 图片下载器:GettyImagesDownloader
- icon图标:iconfont
- 文件:
- PPT模板:iSlide插件、canva
5.搜索工具软件
-
选择顺序:在线工具>下载软件>安装插件
- 在线设计:canva
- 在线抠图:remove.bg
- 文字转语音:腾讯智影、Azure
- 脑图/概念图:miro、canva
- 找台词:找台词
- 在线剪辑视频:Clipchamp、flexclip
- 测网速:fast.com
- 检测陌生链接安全性:virustotal.com
- 生成不存在真实人像图:thispersondoesnotexist.com
- 造词:litscape.com
- 给未来的自己写封信:futureme.org
- (搜索关键词:
xx需求+online
)
-
电脑软件:
- 寻找替代软件:alternativeto.net
-
APP:
-
浏览器插件(Extension):(搜索关键词:平时在用的软件、
xx需求+online
) -
电脑软件插件(Plugin):
- PPT:iSlide插件
- PR:beauty box美颜插件
6.平台:搜索+(学习+创作)
- 搜索+学习:得到APP
- 搜索+创作:canva
7.ChatGPT搜索
- 特点:
- 直接给答案
- 对答案进行追问
- 方便对比
- 推理能力
- 回答组合的定制问题