【终极版】刷完这100行Python,从新人变成大佬

news2024/12/28 20:54:57

文章目录

      • 基础入门
      • 菜鸟提升
      • 基础晋级
      • 高手之路
      • 内置包库
      • 奇技淫巧

基础入门

1 python
即在命令行输入python,进入Python的开发环境。

2 x = 1+2*3-4/5+6**2
加减乘除四则混合运算,可当作计算器使用,其中**表示乘方。

3 print(x)
输出x的值,如果感觉麻烦,可以直接输入x,然后回车,也能看到x的值。

4 if x>5 : print(x)
简单的判断,如果x>5,则打印x

5 for i in range(10): print(i)
简单的循环,其中range(10)表示创建一个可迭代的自然序列,range(10)表示0,1,2...9

6 'hello '+"world"
python中可用单引号或双引号表示字符串,+可以拼接两个字符串。

7 def addOne(x):return x+1
python中通过def来声明函数,函数名称和函数主体之间用:分隔,声明上式之后可以直接在命令行中调用。

>>> def addOne(x):return x+1
...
>>> addOne(1)
2

8 x = [1,2,'abc',3,2]
[]可创建一个列表,列表中的成员可以为任意数据类型。

>>> x = [1,2,'abc',3,2]
>>> x
[1, 2, 'abc', 3, 2]

9 x[0]
通过方括号和冒号可对列表进行索引,列表的索引值从0开始。

>>> x[0]
1

10 y = set(x)

set为集合,集合中不允许存在相同的元素,所以将一个列表转成集合之后,会删除列表中的重复元素。

>>> y = set(x)
>>> y
{1, 2, 3, 'abc'}

菜鸟提升

11 import antigravity

import用于导入Python模块,antigravity是一个彩蛋性质的模块,导入之后会打开一个反重力漫画

在这里插入图片描述

12 pip install numpy
命令行中运行pip命令,可安装相应的模块,然后在Python中输入import numpy as np,就可以导入numpy包,并给与其np的标识,从而可用np.来调用numpy中的函数。

13 x = np.arange(10)
生成一个自然序列,与range相似,但是np.arange得到的可进行运算的数组(array)。

>>> import numpy as np
>>> x = np.arange(10)
>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

14 x**2
只是演示一下,array可以使用运算符。

>>> x**2
array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81], dtype=int32)

15 x.tolist()

将x从array转成list,由于列表(list)并不支持乘方运算,所以下面第二行代码报了错。

>>> x.tolist()
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x.tolist()**2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'int'

16-18

>>> if len(x)==5:print(x)
... elif len(x)==10: print(x.tolist()+x)
... else: print(x[0])
...
[ 0  2  4  6  8 10 12 14 16 18]

len表示获取x的长度,python用==来判断二者是否相等。上式表示,如果x的长度等于5,则打印x;或者x的长度为10,则打印x.tolist()+x;如果x的长度为其他值,则打印x[0]

由于x的长度是10,所以执行了第2行代码。而且python非常智能地按照array的规则计算了x.tolist()+x。这说明,当表达式中同时存在arraylist的时候,python会自动将list转为array

19-20

>>> d = {"a":1,"b":2,"c":3}
>>> d["a"]
1

d即为字典,可通过键值对的形式进行索引。案例中,"a","b","c"为键(key),1,2,3为值(value),通过key来索引value,非常便利。

基础晋级

21 a = 1,2,3

逗号分隔的变量会默认组成元组,元组会根据等号左边变量的个数来进行赋值。

>>> a = 1,2,3
>>> a
(1, 2, 3)

22 a,b = 1,2

元组可以通过元素对应的位置来进行一一赋值,由此而带来的便利就是可以更快速地交换两个变量的值。

>>> a,b = 1,2
>>> print(a,b)
1 2
>>> b,a = a,b
>>> print(a,b)
2 1

23 print(f"a={a}")

在python中,字符串前面可有四种前缀,其中f代表字符串格式化,即format,在f字符串中,大括号内部会自动转换为变量。

>>> print(f"a={a}")     # a是在22中定义的
a=2

24 a = False if a==2 else True

在Python中,FalseTrue为bool型的两个值。

在python中,可通过if...else构成三元表达式,上式可等价为响应的C语言a = a==2 ? 0 : 1

>>> a = False if a==2 else True
>>> a
False

25 x = [i for i in range(10)]

在python中,可通过for循环来创建元组、列表以及字典。

>>> x = [i for i in range(10)]
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

26-30 函数封装

def fac(n):
    if n == 0:
        return 1
    else:
        return n*fac(n-1) 

这是一个阶乘函数。在pyhton中,代码块以空格的形式存在。

31 conda activate
anaconda内置了Python中许多科学计算模块,用了之后非常省心,而anaconda中默认提供了conda环境,通过conda activate可激活基础Python环境。相应地,退出环境的命令为conda deactivate

32 conda create -n py311 python=3.11
此为conda创建python环境的语句,create -n表示创建一个新的环境,py311为新环境的名字,python=3.11表示新环境的python版本为3.11

33 jupyter notebook
这行代码用于开启jupyter notebook服务,jupyter notebook是一个交互式笔记本,可以像写文档一样敲代码。

34 for i,x in enumerate(xs, N): print(i,x)\

enumerate可以逐次返回由列表索引和元素构成的元组,其中N表示起始序号,默认为0,效果如下

>>> xs = np.arange(5)
>>> for i,x in enumerate(xs, 1) : 
...     print(i,x)
...
1 0
2 1
3 2
4 3
5 4

35 [*a,*b]

*可以取出列表中的元素,所以[*a,*b]可以合并列表。

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> [*a,*b]
[1, 2, 3, 4, 5, 6]

星号索引的用途不止于此,在函数传参时也有意想不到的后果

>>> def addd(a,b,c):
...     return a+b+c
...
>>> addd(*a)
6

36 {**a,**b}

双星号可以取出字典中的元素,实现字典合并的功能。

>>> a = {"b":1,"c":2}
>>> b = {"d":3,"e":4}
>>> {**a,**b}
{'b': 1, 'c': 2, 'd': 3, 'e': 4}

37 s == s[::-1]

python支持:索引语法,a:b指的是从a到b的数据;a:b:c表示从a到b,间隔为c的数据。

据此,可以得到::-1表示从头到尾,间隔为-1,换言之可将字符串或列表颠倒过来,据此可以判断一个字符串是否为回文结构。

38 for i,j in zip(xs, ys): print(i,j)

zip像拉链一样将数组中对应的值缝合起来,根据这个特性,可以达到同步打印xs, ys中元素的效果

>>> xs = np.arange(5)
>>> ys = np.arange(5,0,-1)
>>> for i,j in zip(xs, ys): 
...     print(i,j)
...
0 5
1 4
2 3
3 2
4 1

39 for i,j in product(xs, ys):print(i,j)

productitertools中的迭代工具,可以实现xsys中元素的排列组合,这行代码等价为

for i in xs:
    for j in ys:
        print(i,j)

效果为

>>> from itertools import product
>>> for i,j in product(xs, ys):print(i,j)
...
0 5
0 4
0 3
0 2
0 1
# 太长就不粘贴了

40 fac = lambda n : 1 if n==0 else n*fac(n-1)

这同样是一个阶乘算法,与26-30表示的是同一个函数。此即lambda表达式,可以更加方便地创建函数。

41 a<b<c

比较运算符可以像普通运算符一样链式使用,但其运算顺序类似于“并行”,对于类似a<b<c的代码,其结果等价于(a<b)&(b<c)

>>> 1<2<3<4>3>2
True
>>> 3<5<4
False

42 max(set(lst),key=lst.count)

通过调用list中的count方法,来统计元素个数,然后找到个数最多的元素所对应的值,用这种方法得到的是众数。

>>> lst = [1,2,3,4,5,2,3,2,1,2,4]
>>> max(set(lst),key=lst.count)
2

43 迭代器 next(gen)

一般来说,初学python很快就会接触推导式,但对其内涵并不理解,实际上for ... in语句生成的是一个迭代器,可通过next来逐个调用迭代器中的值

>>> gen = (x**2 for x in range(10))
>>> next(gen)
0
>>> next(gen)
1
>>> next(gen)
4
>>> list(gen)
[9, 16, 25, 36, 49, 64, 81]

44 list(set(A).difference(B))

集合set提供了类似做差集的操作difference。对于集合AB而言,若想实现A-B的功能,可采取A.difference(B)的方案。

对于其他数据结构,可先转为set再行做差。且difference会自动将输入变量转为set

>>> A = [1,2,3]
>>> B = [1,2,4]
>>> list(set(A).difference(B))
[3]

45 list(filter(lambda x : x%2==0, [1,2,3,4,5]))

filter是python的内置函数,用于过滤不符合条件的数据。list(filter(func,myList))等价于[e for e in myList if func(e)==1]

>>> list(filter(lambda x : x%2==0, [1,2,3,4,5]))
[2, 4]

46 "python".title()

title()是字符串内置方法,可以将每个词进行首字母大写。

"python".title()
# 'Python'

此外,字符串还支持.lower.upper函数,可以进行大小写转换。

47 '-'.join(['2023','7','1'])

可以通过字符串的内置函数join将一个字符串加入到列表中的多个符串中

>>> '-'.join(['2023','7','1'])
'2023-7-1'

48 len(string.encode('utf-8'))

将字符串转化为utf-8编码后,其长度即为字节数,据此可判断文本文件大小

len("我爱你".encode('utf-8'))
# 9

49 sys.getsizeof(v)

sys中的getsizeof函数可以检查变量所占内存大小。

import sys
v = 30
print(sys.getsizeof(v)) # 24

50 id(v)

id函数可以返回变量在内存中的位置。

>>> v = "abcde"
>>> id(v)
1803924712368

高手之路

51 itertools.list(chain(*[[1,2],[3],[4,5,6]]))

chain也是itertools中的一个函数,可以拼接列表。

from itertools import chain
>>> list(chain(*[[1,2],[3],[4,5,6]]))
[1, 2, 3, 4, 5, 6]

52 op = {"add":lambda a,b:a+b, "minus":lambda a,b:a-b}

op["add"]表示调用函数lambda a,b:a+b,即加法;op["minus"]表示调用函数lambda a,b:a-b,即减法。

正因lambda表达式并不需要命名,所以也称匿名函数。

>>> op = {"add":lambda a,b:a+b, "minus":lambda a,b:a-b}
>>> op["add"](3,4)
7
>>> op["minus"](3,4)
-1

53-54 while...else

while a<5:a+=1
else: print(f"a={a}")

while循环大家都十分了解,即当a<5时执行a+=1的程序。else表示当a<5不满足时执行的代码。

>>> while a<5:
...     a+=1
... else: 
...     print(f"a={a}")
...
a=5

55-57 for...else

xs = []
for x in range(10): xs.append(x)
else : print(xs)

while..else相似,for也有和else的组合,其语义也很雷同,表示当执行完for循环之后执行else的语句。

>>> xs = []
>>> for x in range(10): xs.append(x)
... else : print(xs)
...
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

58-60

from matplotlib import pyplot as plt
plt.plot(np.random.rand(10))
plt.show()

from...import表示从matplotlib中导入pyplotmatplotlib是python中最常用的画图包,功能非常强大。

plt.plot是最常用的绘图函数。python在执行绘图函数之后,会将图片放入内存,当使用plt.show()之后,才会将其显示到屏幕上。

>>> from matplotlib import pyplot as plt
>>> plt.plot(np.random.rand(10))
[<matplotlib.lines.Line2D object at 0x00000232FA511B10>]
>>> plt.show()

在这里插入图片描述

61-68

class person:
    def __init__(self,name): 
        self.name = name
    def selfIntro(self): 
        print(f"my Name is {self.name}")
    @staticmethod
    def say(string): 
        print(string)

尽管主打函数式,但在python中,一切皆对象。

class则可以声明一个类,在类中,__init__为python内置的初始化函数,在类实例化之后,会首先运行这个函数。

self用来声明类成员。

@staticmethod为静态类标识,静态类可以不经实例化而调用。

>>> person.say("hello")
hello
>>> person.selfIntro()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: person.selfIntro() missing 1 required positional argument: 'self'
>>> Li = person("Li")
>>> Li.selfIntro()
my Name is Li
>>>

69 xs=[i for i in range(10) if i%2==0]

通过推导式来快速筛选内容,并创建列表。

>>> xs=[i for i in range(10) if i%2==0]
>>> xs
[0, 2, 4, 6, 8]

70 d = dict([[1,2],[4,5],[6,7]])

dict可将列表转为字典,前提是列表中的元素必须为二元组。

>>> d = dict([[1,2],[4,5],[6,7]])
>>> d
{1: 2, 4: 5, 6: 7}

内置包库

71 time.time()

当然前提是要导入import time,这其实是个很常用的函数,以时间戳的形式返回当前的时间。

>>> import time
>>> time.time()
1634558595.5172253

72 calendar.prmonth(2021,10)

可打印日历。。。

>>> import calendar
>>> calendar.prmonth(2021,10)
    October 2021
Mo Tu We Th Fr Sa Su
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
>>>

73 os.listdir(r"c:\Windows")

返回文件列表,其中r字符串中的\不用于转义。

>>> import os
>>> os.listdir(r"c:\Windows")
['addins``appcompat``apppatch``AppReadiness``assembly``bcastdvr``bfsvc.exe', ...

74 os.path.join(r"C:\Windows", "python.exe")

合并路径,自动处理\\

>>> os.path.join(r"C:\Windows", "python.exe")
'C:\\Windows\\python.exe'

75 glob.glob(r"c:\Windows\*.ini")

可通过通配符返回文件列表。

>>> import glob
>>> glob.glob(r"c:\Windows\*.exe")
['c:\\Windows\\bfsvc.exe``c:\\Windows\\explorer.exe``c:\\Windows\\HelpPane.exe``c:\\Windows\\hh.exe``c:\\Windows\\notepad.exe``c:\\Windows\\py.exe``c:\\Windows\\pyw.exe``c:\\Windows\\regedit.exe``c:\\Windows\\splwow64.exe``c:\\Windows\\Wiainst64.exe``c:\\Windows\\winhlp32.exe``c:\\Windows\\write.exe']
>>>

76-77 urllib

res = urllib.request.urlopen('https://blog.csdn.net/')
html = res.read()

urllib是python内置的http解析请求库,是大多数爬虫学习者接触的第一个工具。

其中,read()用于读取网页数据,当然,得到的网页数据是未解码数据。

import urllib.request
res = urllib.request.urlopen('https://blog.csdn.net/')
html = res.read()

78-79 正则表达式re

content = html.decode('utf-8')
cn = re.findall(r"[\u4e00-\u9fa5]+", content)

此为正则表达式的简单应用,re.findall表示从字符串content中筛选出符合r"[\u4e00-\u9fa5]+"要求的值。所以第一步,是通过utf-8对content进行解码。

而在utf-8中,汉字的序号为\u4e00-\u9fa5;在正则表达式中,[]表示符合条件的集合,+表示出现任意多个符合条件的字符。

>>> import re
>>> content = html.decode('utf-8')
>>> cn = re.findall(r"[\u4e00-\u9fa5]+", content)
>>> cn[:20]
['博客``专业``技术发表平台``博客为中国软件开发者``从业人员``初学者打造交流的专业``技术发表平台``全心致力于帮助开发者通过互联网分享知识``让更多开发者从中受益``一同和``开发者用代码改变未来``头部``广告``频道首页右侧``打底``头部``广告``题目征集``你出我答``做']
>>>

80 Thread(target=print,args=["hello thread"]).start()

这是最简单的多线程程序,target是将要调用的函数,args为参数列表。

>>> from threading import Thread
>>> Thread(target=print,args=["hello thread"]).start()
hello thread

81-83 线程池

concurrent.futures中的ThreadPoolExecutor可快速创建线程池,其输入参数为线程池中可以容纳的最多线程数,

from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(max_workers=5) as ex:
    for i in range(15):
        ex.submit(print,f"{i}")

84-86 进程池

创建单个进程的方法和创建多个线程的方法并无区别,只是把threading中的Thread换成multiprocessing中的Process而已,故不赘言了。

from multiprocessing import Pool

def over(cb):
    print("完成")

# 下面3行为创建进程池的函数
p = Pool(5)
for i in range(15):
    p.apply_async(func=print, 
        args = [f"{i}"], callback=over)

87-88 创建窗口程序tkinter

frame = tkinter.Tk()
frame.mainloop()

其中frame即为tkinter创建的窗口,而mainloop表示进入窗口的消息循环。

>>> import tkinter
>>> frame = tkinter.Tk()
>>> frame.mainloop()

89-90 通过ctypes调用C语言动态链接库

>>> import ctypes
>>> libc = ctypes.CDLL("msvcrt")
>>> libc.printf("%s".encode(), "Hello ctypes\n".encode())
Hello ctypes
13      #此为该函数的返回值

奇技淫巧

91 judge = lambda a,b,f1,f2 : (f1 if a>b else f2)(a,b)

表示,如果a>b则执行f1(a,b),否则执行f2(a,b)

92 eval('[a,b,c]')

eval函数会把字符串转为可执行的表达式,由于这个功能不太安全,所以尽管使用门槛很低,但不建议初学者使用。

93 list(zip(*lst))

zip可以像拉链一样将数组中对应的值缝合起来,以元组的形式重新存储。根据这个特性,可完成列表的"转置"。

>>> lst = [[1,2], [3,4], [5,6]]
>>> list(zip(*lst))
[(1, 3, 5), (2, 4, 6)]

94 max(set(lst),key=lst.count)

其中lst为列表,count(i)是列表的内置函数,表示统计i出现的个数。set表示将lst转为集合,从而剩排除重复值。

max(set(lst),key=lst.count)表示通过lst.count这个指标来得到set(lst)中出现次数最多的那个值——即求众数。

95 dict(zip(myDict.values(),myDict.keys()))

通过zip实现字典的键值对互换操作。

96 map(lambda x: lst[x * size:x * size + size], list(range(0, ceil(len(lst) / size)))))

这种丧心病狂的单行表达式十分魔性,感兴趣的朋友可以试着读读看。

97 ['未成年', '成年'][age > 18]

这种写法等价于'成年' if age > 18 else '未成年',其实很容易理解,age>18若为True,则对应1,返回列表中的第1项;否则返回第0项。

98 sum([[1,2,3],[4,5,6]],[])

之前已经讲了用chain拼接列表的方法,sum也可以实现这一功能,而且更加优雅简洁。其原理是,用[]依次加上[1,2,3][4,5,6]。一般来说,[]这一项默认为0,故而适用于数值加法。

但目前来说,并不支持sum(['a','b'],''),但字符串列表有join,所以并不需要这个。

99-100 sys.ps1, sys.ps2=":", "-"

sysps1ps2分别表示,在交互模式下的两个提示符,这个不知道如何描述,但做一下示例就明白了

>>> sys.ps1 = ":"
:sys.ps2 = "-"
:def test():
-  print("Hello")
-
:test()
Hello

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

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

相关文章

2023年中国跨境电商进出口数据及分布占比分析

中商情报网讯&#xff1a;据海关数据&#xff0c;2022年中国跨境电商进出口&#xff08;含B2B&#xff09;2.11万亿元&#xff0c;同比增长9.8%&#xff0c;跨境电商进出口规模首次突破2万亿元关口。其中&#xff0c;出口1.55万亿元&#xff0c;进口0.56万亿元。 2023上半年&a…

基于SSM的快递管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

RBAC——基于角色权限的模型

目录 1、RBAC是什么&#xff1f; 2、为什么要使用RBAC模型&#xff1f; 3、RBAC的适用场景 4、RBAC流程图 5、RBAC各模块功能 6、访问控制流程 7、数据库设计及相关表结构 8、RBAC模型的JPA简单实现-单表及多表查询 9、RBAC模型四级分级 10、总结&#xff08;优缺点&…

Spring Cloud Alibaba系列(6)之nacos集群搭建

传送门 Spring Cloud Alibaba系列之nacos&#xff1a;(1)安装 Spring Cloud Alibaba系列之nacos&#xff1a;(2)单机模式支持mysql Spring Cloud Alibaba系列之nacos&#xff1a;(3)服务注册发现 Spring Cloud Alibaba系列之nacos&#xff1a;(4)配置管理 Spring Cloud Al…

将本地的项目上传到Gitee

目录 1.先在Gitee新建一个仓库,提交即可 2.进入到要上传的项目里面&#xff0c;右键选择 Git Bash Here 3.右键后就打开了Git命令窗口 4.配置你的用户名和邮箱(已经配置过则可跳过) 5.查看你的用户名和邮箱配置&#xff08;可不查看&#xff09; 6.输入git init指令&#…

【第二天】C++类和对象解析:构造函数、析构函数和拷贝构造函数的完全指南

一、类的引出概述 在c语言结构体中&#xff0c;行为和属性是分开的&#xff0c;万一调用错误&#xff0c;将会导致问题发生。c中类将数据和方法封装在一起&#xff0c;加以权限区分&#xff0c;用户只能通过公共方法 访问 私有数据。 二、封装 封装特性包含两个方面&#xff0…

Java 中的 Default 关键字

default 关键字&#xff1a;是在 Java 8 中引入的新概念&#xff0c;也可称为 Virtual extension methods——虚拟扩展方法与public、private等都属于修饰符关键字&#xff0c;与其它两个关键字不同之处在于default关键字大部分都用于修饰接口。 default 修饰方法时只能在接口…

基于Java+Springboot+Vue前后端分离的商品库存销售管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 当今社会&#xff0c;…

混合专家模型 Mixture-of-Experts (MoE)

大纲 Mixture-of-Experts (MoE)Mixture of Sequential Experts&#xff08;MoSE&#xff09;Multi-gate Mixture-of-Experts (MMoE) 一、MoE 1. MoE架构 MoE&#xff08;Mixture of Experts&#xff09;层包含一个门网络&#xff08;Gating Network&#xff09;和n个专家网…

中文编程开发语言工具编程实际案例:台球棋牌混合计时计费软件使用的编程构件说明

中文编程开发语言工具编程实际案例&#xff1a;台球棋牌混合计时计费软件使用的编程构件说明 上图说明&#xff1a;该软件可以用于桌球和棋牌同时计时计费&#xff0c;在没有开台的时候&#xff0c;图片是处于等待状态&#xff0c;这使用编程工具中的固定图像构件&#xff0c;在…

【经典 PageRank 】01/2 PageRank的基本原理

一、说明 PageRank是Google搜索算法中使用的一种算法&#xff0c;用于确定页面的重要性和排名。 它是通过对网页间的链接关系进行评估来计算的&#xff0c;具有较高的链接权重的网页将获得较高的PageRank值。 PageRank是一个0到10的指标&#xff0c;其中10是最高级别&#xff0…

正点原子嵌入式linux驱动开发——Linux并发与竞争

Linux是一个多任务操作系统&#xff0c;肯定会存在多个任务共同操作同一段内存或者设备的情况&#xff0c;多个任务甚至中断都能访问的资源叫做共享资源。在驱动开发中要注意对共享资源的保护&#xff0c;也就是要处理对共享资源的并发访问。在Linux驱动编写过程中对于并发控制…

前端TypeScript学习day05-索引签名、映射与类型声明文件

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 索引签名类型 映射类型 索引查询&#xff08;访问&#xff09;类型 基本使用 同时查询多个索引的类型…

2023天猫双十一活动时间表 天猫淘宝双11预售几号开始付定金

双十一购物节是生活不可或缺的一部分&#xff0c;不论是满足基本需求还是享受生活乐趣&#xff0c;都需要购物。因此&#xff0c;双十一绝对是一个不容错过的绝佳机会&#xff0c;希望大家能善用这个机会&#xff0c;因为错过了就得再等一整年。 每日领红包&#xff1a;红包有…

基于袋獾优化的BP神经网络(分类应用) - 附代码

基于袋獾优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于袋獾优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.袋獾优化BP神经网络3.1 BP神经网络参数设置3.2 袋獾算法应用 4.测试结果&#xff1a;5.M…

MYSQL第一章节DDL数据定义语言的操作(DDL-数据库操作,DDL-操作表-查询,DDL-操作表-修改,数据库的基本类型)

c知识点合集已经完成欢迎前往主页查看&#xff0c;点点赞点点关注不迷路哦 点我进入c第一章知识点合集 MYSQL第一章节DDL数据定义语言的操作 目录 DDL-数据库操作 查询所有数据库 查询当前数据库 创建数据库 删除数据库 DDL-操作表-查询 查询当前数据库中的所有表 查询表结构…

基于斑马优化的BP神经网络(分类应用) - 附代码

基于斑马优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于斑马优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.斑马优化BP神经网络3.1 BP神经网络参数设置3.2 斑马算法应用 4.测试结果&#xff1a;5.M…

【iOS】MVC模式

MVC&#xff08;Model-View-Controller&#xff0c;模型-视图-控制器&#xff09;模式是相当古老的设计模式之一&#xff0c;ta最早出现在SmallTalk语言中。现在&#xff0c;很多计算机语言和架构都采用了MVC模式。 MVC模式概述 MVC模式是一种设计模式&#xff0c;由3部分组成…

图论05-【无权无向】-图的广度优先遍历-路径问题/检测环/二分图/最短路径问题

文章目录 1. 代码仓库2. 单源路径2.1 思路2.2 主要代码 3. 所有点对路径3.1 思路3.2 主要代码 4. 联通分量5. 环检测5.1 思路5.2 主要代码 6. 二分图检测6.1 思路6.2 主要代码6.2.1 遍历每个联通分量6.2.2 判断相邻两点的颜色是否一致 7. 最短路径问题7.1 思路7.2 代码 1. 代码…

基于SSM的物业管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…