前端六班——基础第一课
方方
华中科技大学
软件工程
2011年开始做前端
毕业拿到百度、腾讯的 Offer
目前就职阿里巴巴
爱好:羽毛球、养狗
为什么不先学 HTML、CSS?
硬件
操作系统
浏览器
HTML / CSS / JS
服务器
渲染引擎
JavaScript 引擎
HTTP 协议
比尔·盖茨
Linus Torvalds
艾伦·图灵,计算机科学之父
布兰登·艾克(Brendan Eich)
John Resig(1984)
TJ Holowaychuk(Node.JS 半边天)
个人推荐
忠告:不要使用缩写,别人看不懂!
忠告:学英文!
1 + 1 = 10
1. 电路中易于实现:高电平为1,低电平为0
2. 物理上易于实现:有孔为1,无孔为0
3. 其实是有三进制计算机的
单位
1 位(bit)
1 字节(byte)
1 KB(kilobyte)
1 MB(Megabyte)
0 或 1
0000 0000 ~ 1111 1111
1024 byte
1024 x 1024 byte
1024 等于 2 的 10 次方
以文本为例
123
495051
001100010011001000110011
313233
原文
编码
二进制
十六进制
以QWERT键盘为例
最简单的 ASCII
字符集的历史
一定要优先使用 Unicode!
字符集不适合计算机
1. 如何才能区别Unicode和ASCII?
计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?
2. 资源浪费
英文字母只用一个字节表示就够了,如果Unicode统一规定,每个符号用四个字节表示,那么每个英文字母前都必然有3个字节是0,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍
字符集只规定了字符对应的数字,却没有规定如何存储
字符编码是字符集的存储方式
字符集只规定了字符对应的数字,却没有规定如何存储
字符编码是字符集的存储方式
举例
已知"严"的unicode是4E25(100111000100101)
根据上表,格式是"1110xxxx 10xxxxxx 10xxxxxx"
从后向前填入格式中的x,多出的位补0
得到了"严"的UTF-8编码是"11100100 10111000 10100101",转换成十六进制就是E4B8A5
算法是做事的步骤
1. 有结果
2. 无歧义
3. 有限步骤
4. 可行性
可以利用的东西
1. 赋值(存储到某个地方)
2. 加减乘除等基本运算
3. 数组
4. 遍历数组
5. 其他……
以选择排序为例
题目:给你一个数组,给我从小到大排好序
输入:[5,2,1,4,3]
输出:[1,2,3,4,5]
回忆一下军训站队
用伪代码描述做事的过程
numbers <- [5,2,1,4,3]
从 0 开始遍历 numbers: index
minNumberIndex <- index
从 index + 1 开始遍历: index2
if(numbers[index2] < numbers[minNumberIndex])
temp <- number[index2]
number[index2] <- number[minNumberIndex]
number[minNumberIndex] <- temp
output numbers
说明了什么?
1. 计算机很傻,只会做几件机械的事情
2. 思路要程序员想
3. 程序员要用无歧义的语言(程序)告诉计算机怎么做
1. 课程安排
2. 任何问题