主要内容:
软件工程产生
软件产生的发展
软件危机
软件工程
软件工程定义
软件工程学的内容
软件工程的基本原理
软件生命周期
软件过程模型

软件生产的发展

软件是指计算机程序及其有关的数据和文档
软件生产的各个阶段必须完成的有关计算机程序的功能、设计、编制的文字或图形资料,这些资料称为“文档”

软件工程的发展
程序设计时期
软件 = 程序+文档时期
软件工程阶段
软件发展第4阶段

软件危机

软件危机是指在计算机软件开发和维护时所遇到的一系列问题

软件危机的典型表现:
1.对软件开发成本和进度的估计常常很不准确
2.用户对完成的软件系统不满意的现象经常发生
3.软件产品的质量往往靠不住
4.软件常常是不可维护的
5.没有适当的文档资料
6.软件成本在计算机系统总成本中所占的比列逐年上升
7.软件开发生产率提高的熟读跟不上计算机应用的发展趋势

软件危机主要包含的问题:
1.如何开发软件以满足对软件日益增长的需求
2.如何维护数量不断增长的已有软件
3.
软件危机主要表现形式
1.软件本身特点造成
2.软件开发与维护的方法不正确

软件危机产生的原因
A.忽略软件需求分析
B.认为软件开发就是写程序并使之运行
C.轻视软件维护

软件危机的结果:
1.预算超出
2.财产的损失
3.死亡事故

解决软件危机的途径
1)推广使用在实践中总结出来的开发软件的成功技术和方法,并研究探索更有效的技术和方法;
2)开发和使用更好的软件工具;
3)良好的组织管理措施。

软件工程:是软件开发、运行、维护和引退的系统方法
软件工程是指导计算机软件开发和维护的工程学科
软件工程采用工程的概念、原理、技术和方法来开发与维护软件
软件工程的目标是实现软件的优质高产

软件工程生命周期-----软件从提出到最终被淘汰的这个存在期

问题定义-----可行性分析------需求分析------总体设计-------详细设计-------编码与单元测试----综合测试----维护

软件过程—为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

瀑布模型

快速原型模型

增量模型

螺旋模型

喷泉模型

问题定义阶段—很重要,也很容易被忽视。
20190312(2)
搭建python环境

入门python程序 输入输出

20190319(2)

本周任务:
1.回顾上周知识 (5分钟) 安装pycharm
2.学习python基础知识(数据类型)
3.学习软件工程第一章

20190326(2)

理解变量在计算机内存中的表示也非常重要

A = ‘abc’时

Python解释器干了两件事情:

1.在内存中创建了一个‘ABC’的字符串
2.在内存中创建了一个名为A的变量,并把它指向‘ABC’

也可以把一个变量 a 赋值给另一个变量 b,这个操作实际上是把变量 b 指向变量 a 所指向的数据,例如下面的代码:

问?最后一行打印出变量B的内容到底是 ‘ABC’呢还是‘XYZ’????

如果从数学意义上理解,就会错误地得出 B 和 A 相同,也应该是’XYZ’

但实际上B的值是‘ABC’。

我们一行一行地执行代码,就可以看到到底发生了什么事

执行A =‘ABC’时, 解释器创建了字符串‘ABC’和变量A,并把A指向‘ABC’

执行 B = A, 解释器创建了变量B, 并把B指向A指向的字符串‘ABC’

执行A=‘XYZ’,解释器创建了字符串‘XYZ’,并把A的指向改为‘XYZ’但B并没有更改:

所以:最后打印变量B的结果自然是 ‘ABC’了

eg:
a = ‘red’
a = ‘blue’
b = a
b = ‘black’
print(a)

常量:
所谓常量就是不能变的变量,比如常用的数学常数 π 就是一个常量。在 Python 中,通常用全部大写的变量名表示常量

PI = 3.1415
但事实上 PI 仍然是一个变量,Python 根本没有任何机制保证 PI 不会被改变,所以,用全
部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量 PI 的值,也没人
能拦住你

最后解释一下整数的除法为什么也是精确的

总结:

整数除法永远是整数,即使除不尽。要做精确的除法,只需把其中一个整数换
成浮点数做除法就可以

无论整数做除法还是取余数,结果永远是整数,所以,整数运算结果永远是精确的。

1.Python 支持多种数据类型。
2.在计算机内部,可以把任何数据都看成一个“对象”。

3.变量就是在程序中用来指向这些数据对象的。

4.变量赋值就是把数据和变量给关联起来。

字符串和编码

字符编码:

首先我们知道,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题!

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理,最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大整数就是255(二进制11111111 = 十进制255),如果要表示更大的整数,就必须用更多的字节。
比如两个字节可以表示的最大整数是65535,4 个字节可以表示的最大整数是4294967295

由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些字符,这个编码表被称为ASCII编码,比如大写字母A的编码时候65
小写字母a的编码是97.

但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和 ASCII 编码冲
突,所以,中国制定了 GB2312 编码,用来把中文编进去

你可以想得到的是,全世界有上百种语言,日本把日文编到 Shift_JIS 里,韩国把韩文编到 Euc-kr 里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的 文本中,显示出来会有乱码。

因此,Unicode诞生,Unicode把所有语言都统一到一套编码里,这样就不会再出现乱码

Unicode 标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要 4 个字节)。现代操作系统和大多数编程语言都直接支持 Unicode

现在,捋一捋 ASCII 编码和 Unicode 编码的区别:ASCII 编码是 1 个字节,而 Unicode 编码通常是 2 个字节。

字母 A 用 ASCII 编码是十进制的 65,二进制的 01000001;
字符 0 用 ASCII 编码是十进制的 48,二进制的 00110000,注意字符’0’和整数 0 是不同的;
汉字中已经超出了 ASCII 编码的范围,用 Unicode 编码是十进制的 20013,二进制的
01001110 00101101。

你可以猜测,如果把 ASCII 编码的 A 用 Unicode 编码,只需要在前面补 0 就可以,因此,A 的 Unicode 编码是 00000000 01000001。

新的问题又出现了:如果统一成 Unicode 编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用 Unicode 编码比 ASCII 编码需要多一倍的存储空间,在存储和传输上就十分不划算。

所以,本着节约的精神,又出现了把 Unicode 编码转化为“可变长编码”的 UTF8 编码 。
UTF-8 编码把一个 Unicode 字符根据不同的数字大小编码成 1-6 个字节,常用的英文字母被编码成 1 个字节,汉字通常是 3 个字节,只有很生僻的字符才会被编码成 4-6 个字节。如果你要传输的文本包含大量英文字符,用 UTF-8 编码就能节省空间

总结:
在计算机内存中,统一使用 Unicode 编码,当需要保存到硬盘或者需要传输的时候,就转换为 UTF8 编码。

用记事本编辑的时候,从文件读取的 UTF8 字符被转换为 Unicode 字符到内存里,编辑完 成后,保存的时候再把 Unicode 转换为 UTF8 保存到文件:

浏览网页的时候,服务器会把动态生成的 Unicode 内容转换为 UTF8 再传输到浏览器:

所以你看到很多网页的源码上会有类似的信息,表示该网页正是 用的 UTF8 编码。

Python字符串

python中字母与ascii码的相互转换

ord©:参数是长度为1的字符串,简称字符。ord(‘a’)返回整形数值97
chr(i):返回一个字符,字符的ascii码等于参数中的整形数值。例如chr(97)返回字符’a’,该方法是ord()的反方法。参数必须是0-255的整形数值,否则会抛出valueError错误

软件工程第二章 : 可行性研究

2.1可行性研究的任务
可行性研究就是要回答“所定义的问题有可行的解决办法吗?”
可行性研究的目的: 用最小的代价在尽可能短的时间内确定问题是否有解,以及是否值得去解。

可行性研究所需时间取决于工程的规模,所需要的成本要占工程总成本的5%-10%

201904
20190402(2)
pycharm补充:

#!/usr/bin/env python

-- coding: utf-8 --

第一行注释是为了告诉 Linux/OS X 系统,这是一个 Python 可执行程序,Windows 系统会忽略这个注释;
第二行注释是为了告诉 Python 解释器,按照 UTF8 编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码

格式化:

我们经常会输出类似’亲爱的 xxx 你好!你xx 月的话费是 xx,余额是 xx’
之类的字符串

而 xxx 的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。```

举例说明:
print(‘Hello, %s’ % ‘world’)

print(‘Hi, %s, you have $%d.’ % (‘Michael’, 1000000))

说出的是什么

总结: %,%s,%d
% -----------------占位符。
%s ----------------表示字符串的占位符。
%d-----------------表示整数的占位符

常见的占位符: %d %f %s

print(’%2d-%02d’ % (3, 1))
print(’%.2f’ % 3.1415926)

总结:
%2d -----表示两个占位符,如果数不够,用空格来站位
%02d-----也表示两个占位符,如果数不够,用0来站位
%.2f ------保留小数点后面两位。

如果你不太确定应该用什么占位符,
%s 永远起作用,它会把任何数据类型转换为字符串

print(‘Age: %s. Gender: %s’ % (25, True))

print(‘Age: %s. Gender: %s,score: %.5s’ % (25, True,89.786))

eg:89.786
%.3s ------表示3个位置,包括小数点,空格等。
89.

%.3f ------表示小数点后面三位。
89.786

有些时候,字符串里面的%是一个普通字符怎么办?

这个时候就需要转义,用%%来表示一个%
print(‘growth rate: %d %%’ % 7)

7%

format()
另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,不过这种方式写起来比%要麻烦得多:
print(‘Hello, {0}, 成绩提升了 {1:.1f}%’.format(‘小明’, 17.125)

练习
小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出’xx.x%’,只保留小数点后1位:显示类容为: hello, XXX,成绩提高了 xx.x%

s1 = 72
s2 = 85
r =
print(’???’ % r)

s1 = 72
s2 = 85
r = (s2 - s1)/s1*100
name = ‘小明’
print(‘hello, %s, 成绩提高了:%.2f %%’ % (name,r))
print(‘hello, %s, 成绩提高了:%.4s %%’ % (name,r))

使用 list 和 tuple

也是一种python内置的数据类型。

Python 内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中
的元素

语法以及定义方式:
a = [] : []------方括号表示集合;【】[]

len(classmates)-1: 表示列表当中最后一个元素的索引。
L[3] = L[len(classmates)-1]

超出列表索引会报错 eg: classmate[4]报错,超出索引

IndexError: list index out of range

添加元素方法:
append() : 在列表最后插入元素 (一个参数)
insert():在指定索引处,插入元素。(两个参数)

classmates = [‘张三’, ‘李四’, ‘王五’,‘小明’]
print(len(classmates))

classmates的长度是多少?

超出列表索引会报错

IndexError: list index out of range

如何将 '小红’加入当classmates这个列表当中

classmates.append(‘小红’)

append(): 向列表当中添加元素。列表当中的方法,用’.'点,调用。

append():添加的元素是在列表的最后。

#如何添加到列表的指定位置,eg:添加到第一个位置

classmates.append(0,‘小白’)

TypeError: append() takes exactly one argument (2 given)

#append(): 只能接受一个参数,我们给了它两个参数,所以会报错
classmates.insert(0,‘小白’)

insert():在指定索引处,插入元素。

删除元素:
#pop() :删除列表当中最后一个元素
#pop(index): 删除指定索引的元素

classmates = [‘张三’, ‘李四’, ‘王五’,‘小明’]
print(classmates)
#删除元素

classmates.pop()
print(classmates)
classmates.pop(1)
print(classmates)

列表内置方法:
pop() :删除列表当中最后一个元素
pop(index): 删除指定索引的元素
append(value) : 在列表最后插入元素 (一个参数)
insert(index,value):在指定索引处,插入元素。(两个参数)

列表插入删除练习:
fruit = [‘苹果’,’香蕉’,’橘子’]
1.添加 ‘西瓜’到fruit列表的最后,打印输出fruit
2.添加 ‘草莓’到苹果的后面,打印输出fruit
3.删除 fruit列表的最后一个元素,然后打印输出fruit
4.删除 fruit列表的第2个元素,然后打印输出fruit
5.打印输出 ‘橘子’
答案:
1.fruit.append(‘西瓜’)
2.fruit.insert(1,‘草莓’)
3.fruit.pop()
4.fruit.pop(2)
5.print(fruit[2])

列表:

list = [1,2,3,True,’小明’,None,3.124, [] ]

二维列表:

练习:

1.请用索引取出下面list的指定元素:

-- coding: utf-8 --

L = [
[‘Apple’, ‘Google’, ‘Microsoft’],
[‘Java’, ‘Python’, ‘Ruby’, ‘PHP’],
[‘Adam’, ‘Bart’, ‘Lisa’]
]

打印Apple:

print(?) L[0][0]

打印Python: L[1][1]

print(?)
PHP: L[1][3]

打印Lisa:

print(?)

20190409(2)
知识点学习:
1.list复习, tuple学习

list列表: 一种数据类型,有序集合,可以任意添加删除元素。 []

tuple元组:也是一种数据类型,有序,不能添加或删除元素,即:tuple一但初始化就不能修改了。没有list 的添加删除方法(没有append(),insert(), pop()等方法)。 定义:L=() ,其他和list相同,eg:索引表示,计算tuple长度:len()。
classmates = (‘zhangsan’,’lisi’,’wangwu ’,’’sdf”)
money=(3000,4000,5000)
tuple的意义优点:tuple一但初始化就不能修改了,代码更安全。如果可能,能有tuple代替list就尽量用tuple。

list = [[]] : 二维列表。
tuple = ([1,2,3],[4,5,6],[7,8,9])
如果tuple里面有list,那么可以改变list的元素。
tuple = ([1, 2, 3], [4, 5, 6], [7, 8, 9])
print(tuple[0])
print(type(tuple[0]))
print(tuple[0].append(122))
print(tuple)
6 --------- tuple[1][2]

tuple 的缺陷:当你定义一个tuple时,在定义的时候,tuple 的元素就必须被确定下来。

eg:

t = (1,2)
t
(1,2)
1.定义一个空tuple: tuple = ()
2.定义只有一个元素的tuple: tuple = (1,)
2. 请问以下变量哪些是tuple类型:
a = ()
b = (1)
c = [2]
d = (3,)
e = (4,5,6)
2.条件判断语句

if…else

比如,输入用户年龄,根据年龄打印输出不同的类容

age = 20
if age >= 18:
print(‘你的年龄是 %s’ % age)
print(“成人”)

根据python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了。

如果if语句判断是False, 就不执行。(否则什么都不做。)

也可以给if添加一个else语句,意思是,如果if判断为False,不要执行if 的内容,

去执行else 里面的内容。

age = 5
if age >= 18:
print(‘你的年龄是 %s’ % age)
print(“成人”)
else:
print(‘你的年龄是 %s’ % age)
print(“未成人”)
注意: 不要少写了冒号 :

可以用else if 缩写: elif

age = 16
if age>=18:
print(“adult”)
elif age >= 10:
print(“青少年”)
elif age >=6:
print(“青少年1”)
else:
print(“kid”)

elif 是 else if 的缩写,完全可以有多个elif。

语法
‘’’
if <条件判断1>:
<执行内容1>
elif <条件判断2>:
<执行内容2>
elif <条件判断3>:
<执行内容3>
else:
<执行内容n>
‘’’
说明: 从上往下判断,如果在某个判断上为True,那么把判断对应的语句执行后,
就忽略掉剩下的elif和else。

练习:
小明身高1.75m,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:
低于18.5:过轻
18.5-25:正常
25-28:过重
28-32:肥胖
高于32:严重肥胖
用if-elif判断并打印结果:

-- coding: utf-8 --

height = 1.75
weight = 80.5
bmi = ???
if ???:
print(“”)
答案:
weight = 80.5
height = 1.75
bmi = weight/(height*height)
if bmi<18.5:
print(“过轻”)
elif bmi<=25:
print(“正常”)
elif bmi<=28:
print(“过重”)
elif bmi<=32:
print(“肥胖”)
else:
print(“严重肥胖”)

改版: 用户自动输入,加格式化练习
name = input(“请输入名字:”)
weight = float(input(“请输入体重:”))
height = float(input(“请输入身高:”))
bmi = weight/(height*height)
if bmi<18.5:
print(name,“的bmi为:%.2f,为 %s” % (bmi,“过轻”))
elif bmi<=25:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “正常”))
elif bmi<=28:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “过重”))
elif bmi<=32:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “肥胖”))
else:
print(name, “的bmi为:%s,为 %s” % (bmi, “严重肥胖”))

改版二: 加上list练习

分别计算 张三、小明和小红的 bmi

classmate = [[‘张三’, 67, 1.75],[‘小明’, 77, 1.80],[‘小红’, 88, 1.90]]
name = classmate[0][0]
weight = classmate[0][1]
height = classmate[0][2]
bmi = weight / (height * height)
if bmi < 18.5:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “过轻”))
elif bmi <= 25:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “正常”))
elif bmi <= 28:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “过重”))
elif bmi <= 32:
print(name, “的bmi为:%.2f,为 %s” % (bmi, “肥胖”))
else:
print(name, “的bmi为:%s,为 %s” % (bmi, “严重肥胖”))#!/usr/bin/env python

-- coding: utf-8 --

‘’’
@author:MT
@file: 0423.py
@time: 2019/4/23 8:54
‘’’

userName = [“1111”,“zhangsan”,“lisi”,“wangwu”,“xiaoming”]

for i in userName:

if “zhangsan” ==i: # i ==“zhangsan”

break;

print(i)

大家给我记住了: 缩进符号很重要,

‘’’
1.如果全篇(就是python代码)没有缩进“tab”,那说明没有for while if
else eilf 等条件(流程)控制语句和循环控制语句。

‘’’

print("-------猜数字游戏-------")

import random # 导入随机数模块

random = random.randint(1, 10) # 生成1到10之间的随机数

print(“random:”,random)

num = int(input(“请输入1-10之间的任意一个数:”))

while True:

num = int(input(“请输入1-10之间的任意一个数:”))

if num >random:

print(“大了,请重新输入:”)

elif num <random and num !=-1:

print(“小了,请重新输入:”)

elif num == -1:

print(“游戏结束”)

break

else:

print(“猜对了”)

break

for i in range(5):

print(" “(5-i),"”*(i+1))

#定义好字典 {键:值,键:值}键:值,以逗号分隔
d = {“zhangsan”: 89, “lisi”: 90, “wangwu”: 78}
print(d)
print(d[“zhangsan”]) # 取字典里面的某个值
#改变字典当中的值
#方式一
d[“zhangsan”]=99
print(d[“zhangsan”])
#如果键不存在于字典当中会报错。

d[“xiaoming”]

KeyError: ‘xiaoming’

#判断键是否存在于字典当中
print("----:",d.get(“lisi1”))

#删除字典当中的wangwu元素
d.pop(“wangwu”)
print(d)

一行一行的输出字典当中的键值

print(d[“zhangsan”])
print(d[“zhangsan”])
print(d[“lisi”])

循环打印字典

d1 = {“zhangsan”: 89, “lisi”: 90, “wangwu”: 78}
for i in d1: # i 表示的是字典当中的键, d[i]—字典当中的值
print("—",i,d1[i])

总结,和list相比,dict的优缺点

‘’’
1.查找和插入的速度快,不会随着key的增加而增加
2.需要占用大量内存,内存浪费
‘’’

list 优缺点

‘’’
1.查找和插入的时间,随着元素的增加而增加
2.占用空间小,浪费内存小。
‘’’
#dict的注意事项
‘’’
字典当中的key是不可变对象,唯一,不能重复
通过key计算位置的算法(字典),我们称为: 哈希算法
‘’’

a = {1:“asd”,1:“qwe”}

print(a)

dic1 = {“zhangsan”:[180,87,98]}
#如何取87
l = dic1[“zhangsan”]
l[1]
print(dic1[“zhangsan”][1])

dic2 = {‘lisi’:{“爱好”:[1,2,3],“score”:98}}
#如何取3
a = dic2[‘lisi’][“爱好”][2]
print(a)

1_28_python基础学习_0427相关推荐

  1. 【转】oracle PLSQL基础学习

    [转]oracle PLSQL基础学习 --oracle 练习: /**************************************************PL/SQL编程基础****** ...

  2. python创建对象的格式为_Python入门基础学习(面向对象)

    python基础学习笔记(四) 面向对象的三个基本特征: 封装:把客观事物抽象并封装成对象,即将属性,方法和事件等集合在一个整体内 继承:允许使用现有类的功能并在无须重新改写原来的类情况下,对这些功能 ...

  3. 虚幻引擎虚拟现实开发基础学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:3.93 GB |时长:5h 15m 了 ...

  4. 动画产业基础学习教程 Rad How to Class – Animation Industry Fundamentals

    如何分类--动画产业基础 大小解压后:6.2G 含课程素材 1920X1080 mp4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 信息: 绘画技巧.解剖学.角色设计.透视和整体讲故事--这门 ...

  5. Blender纹理基础学习视频教程 CGCookie – Fundamentals of Texturing in Blender

    Blender纹理基础学习视频教程 CGCookie – Fundamentals of Texturing in Blender Blender纹理基础学习视频教程 CGCookie – Funda ...

  6. ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course

    ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course! 教程大小解压后:4.96G 语言:英语+中英文字幕(机译)时长 ...

  7. 0基础学好python难不难_零基础学习Python难不难?Python有什么优势?

    原标题:零基础学习Python难不难?Python有什么优势? Python是一种计算机程序设计语言.首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个 ...

  8. 计算机一级ps2019,2019年计算机一级考试PS基础学习点子:PS菜单中英文对照表.docx...

    2019 年计算机一级考试 PS 基础学习点子: PS 菜单中英文对照表 PS菜单中英文对照表 一.File New 2.Open 3.Open As 4.Open Recent Close 6.Sa ...

  9. Java零基础学习难吗

    java编程是入行互联网的小伙伴们大多数的选择,那么对于零基础的小伙伴来说Java零基础学习难吗?如果你是初学者,你可以很好的理解java编程语言.并不困难.如果你的学习能力比较高,那么你对Java的 ...

最新文章

  1. Android StudioDay03-3(键盘导航)
  2. 往事并不如烟@武汉 --- 和同事们一起'诈金花’
  3. IronPython2.7 C# 4.0 互调用备忘
  4. Java 向上类型转换与向下类型转换的理解【复习】
  5. Java简单知识梳理
  6. zend studio安装xdebug调试工具
  7. 中国邮路问题邮递员问题欧拉路径图论C++
  8. linux使用tar命令打包压缩时排除某个文件夹或文件
  9. 第1章:认识Java
  10. 跑路了,在国外当程序员有多爽?
  11. Java 匹配域名正则表达式
  12. 通过汇编程序理解汇编和链接过程
  13. 计算机存储单位的换算关系
  14. shell脚本编程基础(上)
  15. 怎么注册Google账号(使用国内手机号注册)
  16. laravel-excel导出并写入图片
  17. Smali语法学习三
  18. 简洁的HTML5和CSS3免费企业网站模板源码下载
  19. 持续集成:Jenkins Pipeline共享库定义和使用
  20. ios swift MVVM实例(Model-View-ViewModel)

热门文章

  1. Linux关闭防火墙命令(centos 7)
  2. 2022年宣城市商标注册流程以及申请费用
  3. linux 读取u盘数据恢复,Linux 数据恢复
  4. 计算机音乐谱handclap,HandClap钢琴简谱-数字双手-Fitz and The Tantrums
  5. 用python帮你看房子
  6. 百度绿洲、莱茨狗邀请码
  7. 150家老字号将进故宫过大年 推介民族品牌
  8. 【AI芯片】2019年AI芯片产业深度研究报告
  9. 004-银行数据主题划分
  10. ES6新特性常用总结