python笔记-1(import导入、time/datetime/random/os/sys模块)

python笔记-6(import导入、time/datetime/random/os/sys模块)

一、了解模块导入的基本知识

此部分此处不展开细说import导入,仅写几个点目前的认知即可。其它内容待日后有深入理解了再来细说

1、import可以导入的两种不同的内容

1.1 *.py文件结尾的文件

1.2 package文件

package和文件夹图标类似,package中又__init__.py的文件

2、模块导入的几种导入方式

2.1 from xxx import xxx as xxx 

2.2 from xxx import xxx as xxx as xxx 别名

2.3 import xxx

3、import 和 from xxx import 的区别

import xxx的本质是执行py文件,import package是执行__init__.py

from xxx import xxx 的本质是将xxx部分的内容复制到本地,进行调用。

4、需要重点掌握给sys(python解释器)添加环境变量的方法

4.1 os.path.abs(文件)

4.2 os.path.dirname(绝对路径)

4.3 sys.path.append()/sys.path.insert()

 

二、time模块-->时间模块

1、要熟悉时间的三种表示方式

1.1、格式化字符串 ‘2018-2-1 11:11:12’

   此处的格式我们可以随意去自定义,其实质是按照固定的格式,从时间的9元组中获取需要的变量,根据定义的格式输出字符串

1.2、时间戳

一串数字,用来表示和1970年的时间间隔,单位为s。

注意点:一个时间戳所换算成的时间九元组是固定的。但是,根据时区的不同,python会进行相应的转换,转换成当地的时间。在熟悉了这个情况后,在后面的时间表示方式的转换中,要明确我要转换成的是标准时间还是当地时间。

1.3、元组 struct_time 9个元素

year (including century, e.g. 1998) 

month (1-12)

day (1-31)

hours (0-23)

minutes (0-59)

seconds (0-59)

weekday (0-6, Monday is 0)一周第几天注意星期一是第0天

Julian day (day in the year, 1-366)一年第几天,从1开始计

DST (Daylight Savings Time) flag (-1, 0 or 1)是否是夏令时,0代表不是,1代表是

例子

?
1
time.struct_time(tm_year=2017, tm_mon=12, tm_mday=31, tm_hour=23, tm_min=27, tm_sec=2, tm_wday=6, tm_yday=365, tm_isdst=0)

4、time模块的几个变量

4.1 timezone 

表示世界标准时间utc和本地时间的差值,单位为秒。中国的时区比时间标准时间快8小时。

utc - (utc+8)

?
1
2
3
4
5
6
7
>>> time.timezone
-28800
>>> 28800/3600
8.0

4.2 altzone

UTC和本地夏令时直接的差值,单位为s 我们不使用夏令时,所以此处不做深究,了解即可

?
1
2
3
>>> time.altzone #夏令时和utc的时间差值
-32400

4.3 time.daylight

是否使用了夏令时,0为不使用

?
1
2
3
>>> time.daylight 是否使用了夏令时
0

5、time的函数

5.1 time.time() 获取时间戳

此处获取的时间戳为utc标准时间与1970的时间间隔。

5.2 time.sleep()

延时多少秒,单位为秒

5.3 time.gmtime() 

gmtime() -- convert seconds since Epoch to UTC tuple

将时间戳转换为utc时间

5.4 time.localtime()

localtime() -- convert seconds since Epoch to local time tuple

将时间戳转换成本地时间

?
1
2
3
4
5
6
7
8
9
10
11
12
13
>>> time.time()
1520614121.487381
>>> time.gmtime(time.time())
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=9, tm_hour=16, tm_min=49, tm_sec=4, tm_wday=4, tm_yday=68, tm_isdst=0)
>>> time.localtime(time.time())
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=10, tm_hour=0, tm_min=49, tm_sec=14, tm_wday=5, tm_yday=69, tm_isdst=0)
>>>

此程序的说明:注意time.gmtime()与time.localtime()的对比

Time.time()为获取一个时间戳,需要明确 时间戳其实就是utc与1970的时间差

Time.gmtime(time.time())将时间戳转换为utc九元组

Time.localtime(time.time())将时间戳转换为本地时间的九元组,实际就是转换为标准的九元组后,根据timezone进行换算的

5.5 如何取用时间struct_time-9元组的值

时间元组赋值给变量,变量用.来引用

?
1
2
3
4
5
6
7
8
9
10
11
import time
x=time.gmtime()
print(x)
print(x.tm_year,x.tm_yday)
----------------------------------------
time.struct_time(tm_year=2018, tm_mon=2, tm_mday=26, tm_hour=17, tm_min=22, tm_sec=23, tm_wday=0, tm_yday=57, tm_isdst=0)
2018 57

5.6  strftime() 

将元组转换为标准格式输出

这里的元组默认为localtime,如果给出元组,则从元组中取值

Time.strftime(格式,元组)

?
1
2
3
>>> time.strftime('%Y %m %d %X')
'2018 02 10 01:21:43'

 

5.7 strptime()

将文本格式转换为元组

Time.strptime(文本,格式)

?
1
2
3
4
5
>>> time.strptime('2018 02 10 01:21:43','%Y %m %d %X')
time.struct_time(tm_year=2018, tm_mon=2, tm_mday=10, tm_hour=1, tm_min=21, tm_sec=43, tm_wday=5, tm_yday=41, tm_isdst=-1)
>>>

注意:tm_isdst这个部分,转换之后夏令时为-1

5.8 Time.ctime(时间戳)

会转换为本地时区的 文本形式时间

?
1
2
3
>>> time.ctime(time.time())#默认传入time.time()
'Sat Mar 10 01:31:45 2018'                                         

5.9 Time.asctime(time.localtime())默认传入localtime

从元组取值转换成固定的格式输出,和strftime类似

?
1
2
3
4
5
6
7
8
9
10
11
>>> time.asctime(time.gmtime())
'Fri Mar  9 17:33:26 2018'
>>> time.asctime(time.localtime())
'Sat Mar 10 01:33:32 2018'
>>> time.asctime()
'Sat Mar 10 01:33:39 2018'

5.10 time.mktime() -- convert local time tuple to seconds since Epoch

本地的时间的元组转换为时间戳

Localtime->转换为标准的时间戳->utc->local

?
1
2
3
4
5
>>> time.localtime(time.mktime(time.localtime()))
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=10, tm_hour=1, tm_min=37, tm_sec=31, tm_wday=5, tm_yday=69, tm_isdst=0)
>>>

5.11 tzset() -- change the local timezone

改变timezone变量,调整时区,一般不使用

 

三、datetime模块的使用

1、获取当前时间的方法 datetime.datetime.now()

以字符串形式输出

?
1
2
3
print(datetime.datetime.now())当前时间
2018-01-04 02:11:37.867479

2、知道datetime.datetime.now()的类型

?
1
<class 'datetime.datetime'>

3、定义输出格式 与strftime结合

?
1
2
3
4
5
6
7
print(datetime.datetime.now())
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))<br>-----------------------------------------
2018-03-10 09:46:28.106559
2018-03-10 09:46:28

4、str格式时间转成datetime.datetime类

?
1
2
3
4
5
6
7
8
d1 = datetime.datetime.strptime('2015-03-05 17:41:20', '%Y-%m-%d %H:%M:%S')
d2 = datetime.datetime.strptime('2015-03-02 17:31:20', '%Y-%m-%d %H:%M:%S')
Print(d1)
--------------------------------
2015-03-05 17:41:20

5、计算时间差的方法

?
1
2
3
4
5
6
7
8
9
10
11
for i in range(20):
   d3 = datetime.datetime.now()
   print(d3-d1)
   time.sleep(1)<br>----------------------------------
2015-03-05 17:41:20
1100 days, 16:05:16.123119

6、与time.timedelta()结合计算时间

?
1
2
3
4
5
6
7
print(d1+datetime.timedelta(3)) 三天后的时间
print(d1+datetime.timedelta(-3)) 三天前的时间
Primt(datetime.now+datetime.timedelta(hour=3)) 三小时后的时间
Primt(datetime.now+datetime.timedelta(second0=-3)) 三秒前的时间

7、时间的修改与替换

?
1
2
3
4
5
6
7
8
9
10
11
12
13
nownow=datetime.datetime.now()
print(type(nownow))
nownow.replace(year=1999)
print(nownow,nownow.replace(year=1999))
-----------------
 <class 'datetime.datetime'>
2018-01-04 02:31:29.952321 1999-01-04 02:31:29.952321

  注意:除非重新赋值给新的变量 不然replace不会去改变变量本身 和字符串类似

 

四、random 模块,随机数模块的使用

 

1、random.random()

生成随机浮点数范围在0-1之间 包括0不包括1

 

?
1
2
>>> random.random()
0.11288859525093142

 

2、random.randint() 

生成随机整数,前数字都包含,即生成的随机数前后数字都可能出现

?
1
2
3
4
5
6
>>> random.randint(1,4)
1
>>> random.randint(1,4)
3
>>> random.randint(1,4)
4

 

3、random.randrange()

顾头不顾尾的range,可以设置步长,不设置step 则step为1.

randint不能设置步长step

 

?
1
2
3
4
5
6
>>> random.randrange(0,11,2)
4
>>> random.randrange(0,11,2)
8
>>> random.randrange(0,11,2)
0

 

4、random.choice()

放入一个非空序列 列表 字符串 元组(有序的,放入字典、集合会报错)

 

?
1
2
3
4
5
6
7
8
9
10
11
12
>>> random.choice((1,2,3,4)) #元组
3
>>> random.choice((1,2,3,4))
2
>>> random.choice(['a','b','c'])
'c'
>>> random.choice(['a','b','c'])
'a'
>>> random.choice('python') #字符串
'y'
>>> random.choice('python')
'o'

 

5、random.sample()取多个,与choice类似,choice取1个,sample取多个

 放入一个非空序列,第二个参数表示抽取多少个,组成列表

 

?
1
2
3
4
>>> random.sample(['a','b','c'],2)
['b', 'c']
>>> random.sample('python',6)
['o', 't', 'h', 'p', 'y', 'n']

 

6、random.uniform() 指定区间的浮点数

和random.random做对比 random只是0和1之间

 

?
1
2
3
4
>>> random.uniform(1,4)
1.5855347763788947
>>> random.uniform(1,4)
3.890550444129729

 

7、洗牌功能 random.shuffle()对列表进行乱序

 

 同时要注意是他可以直接改变列表 不需要重新赋值出来

 

?
1
2
3
4
5
>>> a=[1,2,3,4]
>>> random.shuffle(a)
>>> a
-----------------------------
[4, 1, 3, 2]

 

8、生成验证码的程序一则

 

思路  

    random.randint(0-9)

 

    random.randint(65-90)

 

    Chr(数字)->字符

 

    字符串相加 ‘abc’+’d’=’abcd’

 

?
1
2
3
4
5
6
7
8
9
10
def yanzheng():
   yanzhengma=''
   for i in range(4):
       shuzi_or_zimu = random.randint(0, 1)
       if shuzi_or_zimu:
           yanzhengma+=str(random.randint(0,9))
       else:
           yanzhengma+=chr(random.randint(65,90))
   print(yanzhengma)<br>for i in range(5):
      yanzheng()<br>----------------------------

1F47 YR31 R80M 66FG F6GS 

五、os模块

os模块分两个部分来讲:1、 常用函数 2、os.path

(一)os的常用函数

1、os.getcwd() 相当于pwd

获取当前python程序运行的路径 你这个.py文件在哪 他就显示哪

2、os.chdir()

相当于linux的cd 到相应目录项进行操作

注意的是chdir的时候

对于目录\的两种处理方式

2.1、\\

2.2、r

复制代码
>>> os.getcwd()
'C:\\Users\\Raytine'
>>> os.chdir('d:\') File "<stdin>", line 1 os.chdir('d:\') ^ SyntaxError: EOL while scanning string literal >>> os.chdir('d:\\') >>> os.getcwd() 'd:\\' >>> os.chdir(r'c:\') File "<stdin>", line 1 os.chdir(r'c:\') ^ SyntaxError: EOL while scanning string literal >>> os.chdir(r'c:\\') >>> os.chdir(r'c:\a') >>> os.getcwd() 'c:\\a'
复制代码

注意:为什么>>> os.chdir(r'c:\')报错 ,os.chdir(r'c:\')

3、os.curdir 当前目录  os.pardir 上一级目录

>>> os.curdir #只是个变量,并不能引用
'.'
>>> os.curdir
'.' >>> os.pardir

注意点:  os.curdir 和os.pardir 都没有()引用,不是函数

4、os.makedirs(r'c:\a\b\c') 递归创建

5、os.removedirs(r'c:\a\b\c')递归删除

删除原则:目录为空继续删,不能用来删文件及删除非空目录

复制代码
>>> os.removedirs(r'c:\a\b\1.txt')
Traceback (most recent call last):File "<stdin>", line 1, in <module> File "D:\Python36\lib\os.py", line 238, in removedirs rmdir(name) NotADirectoryError: [WinError 267] #目录名称无效。: 'c:\\a\\b\\1.txt' >>> os.removedirs(r'c:\a\b\c') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "D:\Python36\lib\os.py", line 238, in removedirs rmdir(name) OSError: [WinError 145] #目录不是空的。: 'c:\\a\\b\\c' >>> os.removedirs(r'c:\a\b\c')
复制代码

6、os.mkdir() 创建目录

不会递归,如果前面不存在则创建不成功

7、os.rmdir()删除目录

不会递归,为空删除

8、os.listdir(os.curdir) 

列出文件夹下面的所有文件 以列表形式列出

>>> os.listdir('.')
['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'python.pdb' ]

9、os.remove('filename') 删除文件

10、os.rename('oldname','newname')

可以改文件夹名字以及文件的名字

>>> os.makedirs(r'c:a\b\c\d')
>>> os.rename(r'c:a\b\c\d',r'c:a\b\c\e')

11、os.stat() 查看文件的属性

>>> os.stat(r'c:a\b\c\e')
os.stat_result(st_mode=16895, st_ino=1125899906960658, st_dev=2766884258, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1519743765, st_mtime=1519743765, st_ctime=1519743765)

12 os.sep 路径分隔符 windows \\ linux /

13 os.linesep 换行符 windows \r\r linux \n

14 os.pathsep 分割文件路径的分隔符 ;

复制代码
>>> os.pathsep
';'
>>> os.linesep
'\r\n' >>> os.sep '\\' >>>
复制代码

注意点:都没有括号引用

15、os.environ 输出系统的环境变量 为一个字典

和sys.path 不同 sys.path为python的环境变量

environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\linyuming.ESG\\AppData\\Roaming', 'WINDIR': 'C:\\Windows'})

16.os.name 系统名称

windows 为‘nt’  获取系统name针对不同系统做不同操作,增加兼容性

Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。

>>> os.name
'nt'

17.os.system() 用来执行系统指令

复制代码
>>> os.system('dir')驱动器 D 中的卷没有标签。
卷的序列号是 D2E8-6B21
D:\Python36 的目录2017/12/19 02:50 <DIR> . 2017/12/19 02:50 <DIR> .. 2017/12/19 02:50 <DIR> DLLs 2017/12/19 02:50 <DIR> Doc 2017/12/19 02:48 <DIR> include2017/12/19 02:50 <DIR> libs
复制代码

 

(二)os.path 模块

1、os.path.abspath()

获取文件的绝对路径

2、os.path.split() 切割文件路径

切割成目录+文件的形式

print(os.path.split(r'c:\a\b\c\d')) #不论文件是否存在 ('c:\\a\\b\\c', 'd')# 返回二元组,第一部分为目录 第二部分为文件名 #Split=dirname+basename

3、os.path.dirname(r'c:\a\b\c\d.txt')获取文件的目录

不论这个文件是否存在,实质就是切割路径

4 、os.path.basename(r'c:\a\b\c\d.txt') 获取文件名

这个和dirname相对,basename只取文件名

复制代码
>>> os.path.dirname(r'c:\a\b\c\d.txt')
'c:\\a\\b\\c' >>> os.path.basename(r'c:\a\b\c\d.txt') 'd.txt' >>> os.path.split(r'c:\a\b\c\d.txt') ('c:\\a\\b\\c', 'd.txt') #linux windows 对于路径分隔符定义不通 所以运行结果有区别 #上面的路径都可以不存在
复制代码

5、os.path.exists()判断路径是否存在

可以判断文件 或者文件夹

>>> os.path.exists(r'c:\a\b\c\d.txt')
False

6、os.path.is* 判断

复制代码
>>> os.path.isfile(r'c:\a\123')
False #文件不存在 false >>> os.path.isfile(r'c:\a\b') False #不是文件 false >>> os.path.isfile(r'c:\a\b\1.txt') True #存在且是文件 true
复制代码
复制代码
>>> os.path.isabs(r'c:\\')
True
>>> os.path.isabs(r'c:') False #写的格式不对,不是绝对路径则返回false >>> os.path.isabs(r'c:\\ajsdfiouoiw') True #不存在也返回true
复制代码

isabs(s)

Test whether a path is absolute

isdir = _isdir(path, /)

Return true if the pathname refers to an existing directory.

isfile(path)

Test whether a path is a regular file

islink(path)

Test whether a path is a symbolic link.

This will always return false for Windows prior to 6.0.

ismount(path)

Test whether a path is a mount point (a drive root, the root of a

share, or a mounted volume)

7、os.path.join 将多个名字组合成路径

拼接过程不能带分割符 不然会出现问题

>>> os.path.join('root','tmp','abc') 'root/tmp/abc' >>> os.path.join(r'/','root','tmp','abc') '/root/tmp/abc'

8、getatime/getctime获取文件的时间

复制代码
>>> time.localtime(os.path.getatime(r'c:\a\b\1.txt'))
time.struct_time(tm_year=2018, tm_mon=2, tm_mday=27, tm_hour=23, tm_min=33, tm_sec=57, tm_wday=1, tm_yday=58, tm_isdst=0)os.path.getatime(file) #输出最近access访问时间1318921018.0  os.path.getctime(file) #输出文件create创建时间 os.path.getmtime(file) #输出最近修改时间 #返回的是时间戳
复制代码

 

 

六、sys模块-和解释器相关的信息及操作

该部分内容较少。

sys.version 获取python解释器的版本信息

sys.stdout 标准输出

sys.argv 获取参数 第一个参数是py文件路径

sys.exit()标准退出exit(0)

print(sys.version)#输出python的信信息
print(sys.argv)#用来获取参数 第一个元素是程序路径 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] ['F:/my_python_file/20180113_sys_shutil.py']

转载于:https://www.cnblogs.com/di2wu/p/8940019.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式里如何给内存做压力测试?不妨试试memtester

大家好&#xff0c;我是痞子衡&#xff0c;是正经搞技术的痞子。今天痞子衡给大家介绍的是内存读写正确性压力测试程序memtester。在嵌入式系统中&#xff0c;内存(RAM)的重要性不言而喻&#xff0c;系统性能及稳定性都与内存息息相关。关于内存性能有很多个不同指标&#xff0…

一位嵌入式工程师的成长之路

有些事并不是因为有希望才去坚持&#xff0c;而是因为坚持了才有希望。分享一位嵌入式工程师的成长之路&#xff0c;希望能给朋友一点勉励。刚毕业找不着工作2008年大专毕业后&#xff0c;意气风发南下深圳找工作&#xff0c;想找一份电子技术员的工作&#xff0c;白天上班&…

分享GitHub上一些嵌入式相关的高星开源项目

关于GitHub&#xff0c;可能很多人误以为这是互联网人的专属&#xff0c;其实并不是&#xff0c;那上面嵌入式相关的开源项目是有很多的。现分享一些高星开源项目&#xff08;像RT-Thread、AWTK等大家都熟知的就不介绍了&#xff09;&#xff1a;Avem项目链接&#xff1a;https…

安全四部曲之一---***工具简单使用

所需工具&#xff1a;ASP小旋风5.asp(黑防)鸽子2006ie_xpsp2网马生成器##############Michael分割线################先给大家几个外网路由的地址你们进去捣乱捣乱,没事的,因为没有日志记录用户名密码 全都是admin,别搞太破坏哦如果改动里面的设置,记得把登录密码改了,否则他们…

第 8 章 配置listener监听器

第 8 章 配置listener监听器注意 还记得我们之前讲过的在线列表吗&#xff1f;第 4.2 节 “例子&#xff1a;在线列表”。我们曾经说过那个在线列表无法判断用户非法退出&#xff0c;很可能造成在线列表无限增大&#xff0c;现在我们可以用listener来弥补这一问题了。如果你不满…

集合(collection)

使用数组存放数据的弊端&#xff1a;长度不可变&#xff0c;而集合可以动态的添加值 java集合类不仅可以存储数量不等的多个对象&#xff0c;还可以保存具有映射关系的关联数组 /* * 1.存储对象可以考虑&#xff1a;①数组 ②集合 * 2.数组存储对象的特点&#xff1a;Student[]…

聊培训跳槽的事

■原来跟我沟通有压力这是我最近跟一个微信好友聊天才知道的事情&#xff0c;说跟我沟通还挺有压力的。实话说&#xff0c;我多少对这样的感觉感同身受&#xff0c;记得刚毕业那会&#xff0c;跟我师傅聊天说事情&#xff0c;总担心自己会说错了什么&#xff0c;有问题的时候也…

iOS开发针对对Masonry下的FPS优化讨论

今天博客的内容就系统的讨论一下Masonry对FSP的影响&#xff0c;以及如何更好的使用Masonry。如果你对iOS开发足够熟悉的话&#xff0c;那么对Masonry框架应该不陌生。简单的说&#xff0c;Masonry的诞生让AutoLayout的使用更为优雅&#xff0c;让控件的布局更为方便。使用辩证…

导师带学生卡Bug,这波操作~

本文来自知乎https://www.zhihu.com/question/455891395/answer/1847953969事情的起因是明尼苏达大学计算机科学&工程系的助理教授 Kangjie Lu 和他的 Ph. D. 学生 Qiushi Wu 的论文《通过伪君子提交在开源软件中隐蔽地引入漏洞的可行性》&#xff0c;据称将在 2021 年五月…

我想做个MP3,要怎么入手?

从我更新的频率&#xff0c;大家应该猜出来了&#xff0c;最近有点忙。忙完了设备调试的工作&#xff0c;又来了个画图的活。本来改动不大&#xff0c;但怎料...哎&#xff0c;一言难尽。今天回答一个粉丝的提问&#xff1a;看完这个回复&#xff0c;我依然没明白他到底想做哪部…

[内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析

关于进程上下文&#xff0c;中断上下文&#xff0c;请看这篇文章Linux进程上下文和中断上下文内核空间和用户空间自旋锁的初衷&#xff1a;在短期间内进行轻量级的锁定。一个被争用的自旋锁使得请求它的线程在等待锁重新可用的期间进行自旋(特别浪费处理器时间)&#xff0c;所以…

网络流24题 洛谷 3355 骑士共存

转换成最小割&#xff1b; #include <bits/stdc.h>using namespace std ;const int mx [ 9 ] { 2 , 2 , -2 , -2 , -1 , 1 , -1 , 1 } ; const int my [ 9 ] { -1 , 1 , -1 , 1 , 2 , 2 , -2 , -2 } ; const int N 100000 10 , inf 1e8 7 ;queue < int …

从零开始设计CPU

CPU&#xff0c;中文全称为中央处理单元&#xff0c;简称处理器&#xff0c;是现代电子计算机的核心器件。如果你想了解一台计算机是如何构建并工作的&#xff0c;那么深入了解CPU的设计非常有用。不过&#xff0c;这个美好的愿望是否会遭遇“骨感”的现实呢&#xff1f;毕竟一…

嵌入式OS入门笔记-以RTX为案例:一.简介

嵌入式OS入门笔记-以RTX为案例&#xff1a;一.简介 最近在做OS相关的项目&#xff0c;一方面涉及到大量&#xff08;通用&#xff09;操作系统的概念和理解&#xff0c;另一方面要深入到一个小实时操作系统的源代码中&#xff0c;并在此操作系统上开发应用。虽然说内容上并不难…

Linux进程O(1)调度算法,面试必考哦

进程调度有很多方法&#xff0c;这里只讨论Linux下的进程调度&#xff0c;先说下&#xff0c;这个是高端面试必考题&#xff0c;既然我发文了&#xff0c;大家最好看看&#xff0c;而且目前看到的写得最好的文章&#xff0c;推荐给大家。Linux是一个支持多任务的操作系统&#…

让Visual Studio 也支持JS代码折叠 —— 续 [ Visual Studio | Js | ScriptOutline | SmallOutline ]...

前言 上文让JS代码折叠的功能能用了&#xff0c;本文将对代码继续改进以期更好用、更实用&#xff0c;随后有介绍Visual Studio JS方面的几个插件。 文章 1. VS2003折叠代码的Micro 2. MSDN 3. Document Outline for Client Script in Visual Studio 2005 正文 …

嵌入式OS入门笔记-以RTX为案例:二.快速移植到RTX

嵌入式OS入门笔记-以RTX为案例&#xff1a;二.快速移植到RTX本篇笔记将简单介绍RTX&#xff0c;包括基本架构&#xff0c;如何在Keil中配置。需要安装ARM-MDK和一块硬件板&#xff0c;笔记以STM32F4Discovery为例子。1.为什么要用RTOS&#xff1f;尽管把所有程序放在一个大的循…

再解析下内核自旋锁和优先级翻转问题

[内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析漫画|Linux 并发、竞态、互斥锁、自旋锁、信号量都是什么鬼&#xff1f;Linux内核自旋锁之前写的自旋锁的文章&#xff0c;现在再加一篇&#xff0c;可能单纯的一两次说明不能把问题说清楚。所以再写一篇文…

ios 逆向编程(环境搭建)

首先如果你想要逆向其他的APP 动态的查看 或者修改人家APP里面的东西 1&#xff0c; 首先要有一台越狱的手机 最好是9.1以下的&#xff0c;因为9.2以上&#xff08;包括9.2&#xff09;就不能完美越狱了 2&#xff0c;手机也要5s以上的&#xff08;因为从5S开始支持arm64架构&…

最大、最小堆的实现

最大最小堆 堆是一种经过排序的完全二叉树&#xff0c;其中任一非终端节点的数据值均不大于&#xff08;或不小于&#xff09;其左子节点和右子节点的值。 最大堆和最小堆是二叉堆的两种形式。 最大堆&#xff1a;根结点的键值是所有堆结点键值中最大者。 最小堆&#xff1a;根…