python入门基础

news2024/11/15 8:29:50

1 变量和简单数据类型

变量命名格式:变量名 = “赋值”

1.1 变量使用规范

使用变量时,需要遵守一些规则。违反这些规则将引发错误。

~变量名只能包含数字、字母、下划线。变量名不能以数字开头以及不能包含空格。

~变量名不能将Python保留字和函数名作为变量名。如print等

如下是python3的33个保留字列表:

~变量名要简单又具有描述性。如name比n好,user_name比u_n好。

~慎用大写字母I和O,避免看错成数字1和0。

1.2 字符串

字符串就是一系列字符。在Python中,用引号括起的都是字符串,其中引号包括单引号和双引号。这种灵活性能够在字符串中包含引号和撇号,如:

>>> str = "I'm David"
>>> str1 = 'I told my friend,"i love Python"'

常用字符串操作方法

以首字母大写的方式显示每个单词:

>>> name = "hello python world"
>>> print(name.title())
Hello Python World

 将字符串改为全部大写或全部小写:

>>> str1 = "I love python"
>>> print(str1.upper())  #将字符串改为全部大写
I LOVE PYTHON
>>> print(str1.lower())   #将字符串改为全部小写
i love python

 字符串合拼(拼接)

Python使用加号(+)来合拼字符串,如:

>>> first_name = "Guido"
>>> last_name = "van Rossum"
>>> full_name = first_name + " " + last_name
>>> print(full_name)
Guido van Rossum

使用制表符\t或换行符\n添加空白:

>>> print("Languages:\n\tPython\n\tC++\n\tPHP")
Languages:
    Python
    C++
    PHP

 删除字符串的空格:

>>> name = " p y t h o n "
>>> print(name.rstrip()) #删除字符串右端空格
 p y t h o n
>>> print(name.lstrip())  #删除字符串左端空格
p y t h o n 
>>> print(name.strip())   #删除字符串两端空格
p y t h o n
>>> print(name.replace(' ',''))  #删除字符串全部空格包括制表符和换行符
python

 字符串的序号

 字符串是字符的序列,可以按照单个字符或字符片段进行索引。

>>> name = "Hello World"
>>> print(name[0])
H
>>> print(name[0:-1])
Hello Worl
>>> print(name[-1])
d
>>> print(name[::])
Hello World
>>> print(name[0:11])
Hello World

 找到字符串中最低字符索引号:S.find(sub [,start [,end]]) -> int  

失败时返回-1

>>> name = "hello world"
>>> print(name.find('d'))
10

返回某些字符出现的次数:S.count(sub[, start[, end]]) -> int

>>> name = "hello world"
>>> print(name.count('l'))
3

 把字符串由分隔符返回一个列表:S.split([sep [,maxsplit]]) -> list of strings,如果给定maxsplit,则最多为maxsplit

>>> name = "hello world"
>>> print(name.split(' '))
['hello', 'world']
>>> print(name.split(' ',0))
['hello world']

 字符串格式化输出(format和%用法)

%方法格式代码

>>> "{}:计算机{}的CPU占用率为{}%".format('2019-03-25','python',10)  #S.format(*args, **kwargs) -> string
'2019-03-25:计算机python的CPU占用率为10%'
>>> "%s:计算机%s的CPU占用率为%d%%" % ('2019-03-25','python',10)   #%用法
'2019-03-25:计算机python的CPU占用率为10%

小结:可以用help函数查看字符串的相关操作,比如help(str.find)

2 组合数据类型

2.1 集合类型

集合的定义及操作

~集合用大括号{}表示,元素间用逗号分隔;

~建立集合类型用{}或set();

~建立空集合类型,必须用set();

~集合元素之间无序;

~集合中每个元素唯一,不存在相同元素

>>> A = {"python",'666',("wenwei-blog",666)}
{'python', '666', ('wenwei-blog', 666)}
>>> B = set("pypy")
{'y', 'p'}
>>> C = {"python",123,"python",123}
{'python', 123}

集合操作符

6个操作符

4个增强操作符

 集合操作方法

集合应用场景

包含关系比较;数据去重。

2.1 序列类型定义

~序列是具有先后关系的一组元素

~序列是一个基类类型(基本数据类型)

~序列类型分为字符串、列表、元组类型

2.2 序列类型之列表

列表由一系列按特定顺序排列的元素组成,用方括号[]来表示列表。

列表的增删改查相关操作

函数或方法

描述

实例

 L[i]=x

 替换列表L第i数据项为x

>>> L = ['Python','PHP','JavaScript','C++']

>>> L[1] = 'Java'

>>> L

['Python', 'Java', 'JavaScript', 'C++']

 L[i:j]=L1

 用列表L1替换列表L中第i到j项数据

 >>> L
['Python', 'Java', 'JavaScript', 'C++']
>>> L1 = ['C','Go']
>>> L[0:2]=L1
>>> L
['C', 'Go', 'JavaScript', 'C++']

 del L[i:j:k]

删除列表L第i到第j项以k为步数的数据

 >>> L
['C', 'Go', 'JavaScript', 'C++', 'Java', 'C#', 'Ruby', 'Lua']
>>> del L[1:6:2]
>>> L
['C', 'JavaScript', 'Java', 'Ruby', 'Lua']

 L+=L1或L.extend(L1)

 将列表L1元素增加到列表L中

 >>> L;L1

['C', 'JavaScript', 'Java', 'Ruby', 'Lua']
['C', 'Go']
>>> L+=L1
>>> L;L1
['C', 'JavaScript', 'Java', 'Ruby', 'Lua', 'C', 'Go']
['C', 'Go']

 L*=n

 将L列表的元素重复n次

 >>> L1*=2
>>> L1
['C', 'Go', 'C', 'Go']

 L.append(x)

 在L列表最好添加元素x

 >>> L
['C', 'JavaScript', 'Java', 'Ruby', 'Lua', 'C', 'Go']
>>> L.append('Python')
>>> L
['C', 'JavaScript', 'Java', 'Ruby', 'Lua', 'C', 'Go', 'Python']

 L.clear()

删除列表L的所有元素

 >>> L
['C', 'JavaScript', 'Java', 'Ruby', 'Lua', 'C', 'Go', 'Python']
>>> L.clear()
>>> L
[]

 L1 = L.copy()

 复制L列表生成新的L1列表

 >>> L
['C', 'JavaScript', 'Java', 'Ruby', 'Lua', 'C', 'Go', 'Python']
>>> L1 = L.copy()
>>> L1
['C', 'JavaScript', 'Java', 'Ruby', 'Lua', 'C', 'Go', 'Python']

L.insert(i,x)

 在列表L的第i位置增加元素x

 >>> L
['C', 'JavaScript', 'Java', 'Ruby', 'Lua', 'C', 'Go', 'Python']
>>> L.insert(2,'PHP');L
['C', 'JavaScript', 'PHP', 'Java', 'Ruby', 'Lua', 'C', 'Go', 'Python']

L.pop(i)

将列表L中的第i项元素删除

>>> L;L.pop(2);
['C', 'JavaScript', 'PHP', 'Java', 'Ruby', 'Lua', 'C', 'Go', 'Python']
'PHP'
>>> L
['C', 'JavaScript', 'Java', 'Ruby', 'Lua', 'C', 'Go', 'Python']

L.remove(x)

 将列表的第一个x元素删除

 >>> L
['C', 'JavaScript', 'Java', 'Ruby', 'Lua', 'C', 'Go', 'Python']
>>> L.remove('C')
>>> L
['JavaScript', 'Java', 'Ruby', 'Lua', 'C', 'Go', 'Python']
>>>

L.reverse(x)

将列表L中的元素反转

>>> L;L.reverse();L
['JavaScript', 'Java', 'Ruby', 'Lua', 'C', 'Go', 'Python']
['Python', 'Go', 'C', 'Lua', 'Ruby', 'Java', 'JavaScript']

L.sort()

将列表L的元素按首字母顺序排序

>>> L.sort()
>>> L
['C', 'Go', 'Java', 'JavaScript', 'Lua', 'Python', 'Ruby']

L.index(x)

获取列表L的x元素的索引号

>>> L.index('Python')
5
>>> L
['C', 'Go', 'Java', 'JavaScript', 'Lua', 'Python', 'Ruby']

对列表数字执行简单统计计算

>>> digits = [1,23,434,55,44,67]
>>> min(digits)
1
>>> max(digits)
434
>>> sum(digits)
624

 列表相关练习

练习1:创建一个列表,其中包含数字1-100并打印出来然后计算列表数字的总值。

>>> digits = [value for value in range(1,101)];sum(digits)
5050

练习2:求1-20的奇数

>>> for i in range(1,21,2):
    print(i)
    
1
3
5
7
9
11
13
15
17
19

 练习3: 输出3-30以内能被3整除的数字

>>> lists = [n for n in range(3,31)]
>>> lists
[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]
>>> for i in lists:
    if i % 3 == 0:
        print(i)

        
3
6
9
12
15
18
21
24
27
30

2.3 序列类型之元组

元组其实跟列表差不多,也是存一组数据,只不过它一旦创建便不能修改,所以又叫只读列表

它只有两个方法,一个是count(统计元组某个元素出现的次数tuple.count('str')),一个是index(查看某个元素的索引号tuple.index('str'))

>>> names = ('zhiwenwei','zhouyouxian')
>>> names.index('zhiwenwei')
0
>>> names.count('zhiwenwei')
1

元组练习题

有如下变量,请实现要求的功能

tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])

a. 请问tu变量中的第一个元素 “alex” 是否可被修改?

  元组不可直接被修改,需要转换成列表或字典

b. 请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”

  k2是字典的键,对应的值是列表可修改:tu[1][2]['k2']='Seven'

c. 请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”

  k3是字典的键,对应的值是元组不可修改

2.4 字典类型

字典是包含0个或多个键值对的集合,没有长度限制,可以根据键索引值的内容。

Python语言中通过字典实现映射,通过大括号{}建立,建立模型如下:

{键1:值1,键2:值2,...}

>>> city = {'中国':'北京','美国':'纽约','法国':'巴黎'}
>>> city
{'中国': '北京', '美国': '纽约', '法国': '巴黎'}

拓展:字典是无序的。python语言中,字符串、列表、元组都是采用数字索引,字典采用字符索引。

字典的函数和方法

字典的基本原则

字典是一个键值对的集合,该集合以键为索引,一个键对应一个值信息

字典中的元素以键信息为索引访问

字典长度是可变的,可以通过对键信息赋值实现增加或修改键值对。

2.5 jieba库基本介绍

jieba库提供三种分词模式,最简单只需要掌握一个函数;

jieba是优秀的中文分词第三方库,需额外安装

jieba库的安装方法

pip install jieba

jieba分词的三种模式

精确模式:把文本精确切分,不存冗余单词

>>> word1 = jieba.lcut("python无所不能!除了生不出孩子,我们应该学习使用它!")
Building prefix dict from the default dictionary ...
Dumping model to file cache /tmp/jieba.cache
Loading model cost 1.832 seconds.
Prefix dict has been built succesfully.
>>> print(word1,type(word1))
['python', '无所不能', '!', '除了', '生不出', '孩子', ',', '我们', '应该', '学习', '使用', '它', '!'] <class 'list'>

2.6 实例:文本词频统计

英文文本:hamlet,统计出现最多的英文单词

https://python123.io/resources/pye/hamlet.txt

代码实现:

#Hamlet词频统计
def getText():
    txt = open("hamlet",'r').read()
    txt = txt.lower() #大写字母转换小写
    for word in '~!@#$%^&*()_+-={}[],./:";<>?':
        txt = txt.replace(word," ")#把多余符号转换为空格
    return txt
hamletTxt = getText()
words = hamletTxt.split() #以空格拆分为列表
counts = {}
for word in words:
    counts[word] = counts.get(word,0) + 1 #以每个词为键,值默认0,,每出现一次累加1
items = list(counts.items())
items.sort(key=lambda x:x[1],reverse=True) #[1]按照第二维排序,reverse=True表示降序
for i in range(10):
    word,count = items[i]
    print("{0:<10}{1:5}".format(word,count))

中文文本:三国,分析人物

https://python123.io/resources/pye/threekingdoms.txt

import jieba
txt = open("Threekingdoms", 'r', encoding="utf-8").read()
excludes = {'将军','却说','荆州','二人','不可','不能','如此'}
words = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word) == 1:
        continue
    #书中同一人物多个名字统一改为一个名字
    elif word == '诸葛亮' or word == '空明日':
        rword = "孔明"
    elif word == '关公' or word == '云长':
        rword = "关羽"
    elif word == '玄德' or word == '玄德日':
        rword = "刘备"
    elif word == '孟德' or word == '丞相':
        rword = "曹操"
    else:
        rword = word
    counts[word] = counts.get(word, 0) + 1
for word in excludes:
    del counts[word]  #去重
items = list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
    word,count = items[i]
    print("{0:<10}{1:>5}".format(word,count))

3 程序的控制结构

3.1 程序的分支结构

根据判断条件结果而选择不同向前路径的运行方式

单分支结构

if <条件> :

  <语句块>

示例:

guess = eval(input("请输入数字:"))
if guess == 88:
    print("猜对了")

 二分支结构

if <条件> :

  <语句块>

else:

  <语句块>

guess = eval(input("请输入数字:"))
if guess == 88:
    print("猜对了")
else:
    print("猜错了")

多分支结构

if <条件1> :

  <语句块1>

elif <条件2> :

  <语句块2>

...

else:

  <语句块N> 

示例

age = 25
count = 0
while count < 3:
    guess_age = int(input("guess_age:"))
    if guess_age == age:
        print("yes,you got it!!!")
        break
    elif guess_age > age:
        print("think smaller...")
    else:
        print("think bigger...")
    count += 1

3.2 程序的循环结构

遍历循环

语法结构:

for <循环变量> in <循环结构>:

    <语句块>

无限循环

由条件控制的循环运行方式

语法结构:

while <条件>:

    <语句块>

循环控制保留字

break 和 continue

-break 跳出并结束当前整个循环,执行循环后的语句

-continue 结束当次循环,继续执行后续次数循环

循环的拓展

当循环没有被break语句退出时,执行else语句。

else语句作为“正常”完成循环的奖励

3.3 异常处理

异常处理的基本使用

示例

try:
    num = eval(input("请输入数字"))
    print(num**2)
except:
    print("你输入的不是数字")

异常处理的高级使用

try:

  语句块1

except:

  语句块2

else:

  语句块3(不发生异常时执行)

finally

  语句块4(最终会执行)

3.4 实例:身体质量指数BMI

体质指数(BMI)= 体重(kg)÷ 身高²(m)

代码实例:

height,weight = eval(input("请输入身体(米)和体重(公斤)[逗号分开]:"))
bmi = weight / pow(height,2)
print("BMI数值为:{:.2f}".format(bmi))#.2f#保留两位小数
who,nat = "",""
if bmi < 18.5:
    who,nat = "偏瘦","偏瘦"
elif 18.5 <= bmi < 24:
    who,nat = "正常","正常"
elif 24 <= bmi < 25:
    who,nat = "正常","偏胖"
elif 25 <= bmi < 28:
    who,nat = "偏胖","偏胖"
elif 28 <= bmi <30:
    who,nat = "偏胖","肥胖"
else:
    who,nat = "肥胖","肥胖"
print("BMI指标为:国际'{}',国内'{}'".format(who,nat))

结果展示:

4 函数和代码复用

4.1 函数的定义和作用

def 函数名(o个或多个参数):

    函数体

    return 返回值

-函数是一段代码的表示

-函数是一段具有特定功能的、可重用的语句组

-函数是一种功能的抽象,一般函数表达特定功能

两个作用:降低编程难度和代码重用

函数的调用

4.2 函数的参数传递

可选参数传递

函数定义时可以为某些参数定义默认值,构成可选参数。

def test(n,m=1): #m为可选参数
    s = 1
    for i in range(1,n+1):
        s *= i
    print(s//m)
test(10)
test(10,2)

结果:

可变参数传递

def test(n,*args):#args为可变参数,也可以命名其他值
    s = 1
    for i in range(1,n+1):
        s += i
    for item in args:
        s += item
    print(s)
test(10,3)
test(10,3,1,5)

函数执行结果:

参数组合:*args和**kwargs

def test(*args,**kwargs):
    print("args =",args)
    print("kwargs =",kwargs)
    print("----------------------------------")
if __name__ == '__main__':
    test(1,5,94,564)
    test(a=1,b=2,c=3)
    test(1,2,3,4,a=1,b=2,c=3)
    test('I love python',1,None,a=1,b=2,c=3)

函数执行结果:

参数传递的两种方式:位置传递和名称传递

 

 小结:

函数可以有参数也可以没有,但必须保持括号。*args是可变参数,args接收的是一个tuple**kw是关键字参数,kw接收的是一个dict。在同时使用*args和**kwargs时,必须*args参数列要在**kwargs前面。

4.3 lambda函数

lambda函数是一种匿名函数,即没有名字的函数;lambda函数用于定义简单的、能够在一行内表示的函数。

g = lambda x,y:x*y
print(g(4,5))

6 文件和数据格式化

5.1 文件的使用

Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

常用语法格式

变量名 = open(文件路径(相对或绝对路径),打开模式,encoding=None)

打开模式

打开的文件模式描述
 ‘r’只读模式,默认值,文件不存在返回FileNotFoundError 
 ‘w’ 覆盖写模式,文件不存在则创建,存在则完全覆盖
 ‘x’ 创建写模式,文件不存在则创建,存在则返回FileExistsError
 ‘a’ 追加写模式,文件不存在则创建,存在则在文件最后追加内容
 ‘b’ 二进制文件模式
 ‘t’ 文本文件模式,默认值
 '+' 与r/w/x/a一同使用,在原功能基础上增加同时读写功能

file对象 

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数

file对象描述
f.read(size)读入全部内容,如果给出参数,读入前size长度
f.readline() 读取整行,包括 "\n" 字符。
f.readlines(sizeint) 读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。
f.write(s) 将字符串或字节流写入文件
f.writelines(lines) 将元素全为字符串的列表写入文件
f.close() 关闭文件
f.seed(offset) 调整当前文件操作指针的位置,0-文件开头;1-文件当前位置;2-文件末尾位置
 f.flush() 刷新文件内部缓冲,数据立刻写入文件

5.2 wordcloud库的使用

 词云以词语为基本单位,更加直观和艺术第展示文件。

wordcloud库官网:WordCloud for Python documentation — wordcloud 1.8.1 documentation

github地址:GitHub - amueller/word_cloud: A little word cloud generator in Python

wordcloud下载安装

pip install wordcloud

wordcloud常规方法

w = wordcloud.WordCloud()

方法描述例子
w.generate(text)向wordcloud对象w加载文本text 
w.generate("Python by WordCloud")
w.to_file(filename) 将词云输出.png或.jpg图像文件 
w.to_file("outfile.png") 

 实例

import wordcloud
w = wordcloud.WordCloud()  #设置wordcloud对象
w.generate("Python by WordCloud,is fun and powerful!") #配置对象参数并加载词云文本
w.to_file("outfile.png") #输出词云文件

执行生成图片:

程序执行过程报错:ModuleNotFoundError: No module named 'matplotlib'

解决报错:安装python画图工具第三方库matplotlib:pip install matplotlib

wordcloud工作流程

      1. 分割:以空格分割单词
      2. 统计:单词出现次数并过滤
      3. 字体:根据统计配置字号
      4. 布局:颜色环境尺寸

配置对象参数

w.wordcloud.WordCloud(<参数>)

参数描述例子
 width 指定生成图片宽度,默认400像素 
width=500
 height 指定生成图片高度,默认200像素
height=300
 min_font_size 指定词云字体最小字号,默认4号 
min_font_size=20
 max_font_size 指定词云字体最大字号,根据高度自动调节 
max_font_size=40
 font_step 指定词云单词步进间隔,默认1 
font_step=6
 font_path 指定文件字体的路径,默认None font_path="msyh.ttc"
 max_words 指定词云显示最多单词数量,默认200 
max_words=5
 stopwords 指定词云排除列表,即不显示的单词列表 stopwords={"python"}
 mask 指定词云形状,默认长方形,修改需应用imread函数

 from scripy.misc import imread

mk=imread("pic.png")

mask=mk

 background_color 指定词云图片背景颜色,默认黑色
background_color="white"

实例1

import wordcloud
w = wordcloud.WordCloud()
text = "life is short, you need python"
w = wordcloud.WordCloud(background_color="white",width=500,height=300,
                        min_font_size=20,max_font_size=40,font_step=6,
                        max_words=5)
w.generate(text)
w.to_file("outfile2.png")

 实例2

import wordcloud
import jieba
text = """
wordcloud是python非常优秀的第三方库,词云以词语为基本单位更加直观和艺术的展示文本词云图,\
也叫文字云,是对文本中出现频率较高的关键词予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,\
使得浏览者只要一眼扫过文本就可领略文本的主旨。基于Python的词云生成类库,好用功能强大。\
在做统计分析的时候有着很好的应用。
"""
w = wordcloud.WordCloud(width=800,height=400,font_path="msyh.ttc")
w.generate(" ".join(jieba.lcut(text))) #中文需要先分词并组成空格分隔字符串
w.to_file("outfile3.png")

 实例3

常规图词云

https://python123.io/resources/pye/新时代中国特色社会主义.txt

import wordcloud
import jieba
f = open("新时代中国特色社会主义","r",encoding="utf-8")
text = jieba.lcut(f.read())
text = " ".join(text)
f.close()
w = wordcloud.WordCloud(background_color='white',width=800,height=400,font_path="msyh.ttc")
w.generate(text)
w.to_file("outfile4.png")

实例4

不常规图词云:生成下图五角星形状

import wordcloud
import jieba
from scipy.misc import imread
#图片必须是白色背景色
mask = imread('five-pointed star.png')
f = open("新时代中国特色社会主义","r",encoding="utf-8")
text = jieba.lcut(f.read())
text = " ".join(text)
f.close()
w = wordcloud.WordCloud(background_color='white',width=1000,height=700,font_path="msyh.ttc",mask=mask)
w.generate(text)
w.to_file("outfile5.png")

 效果

 

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

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

相关文章

SpringColud——Eureka注册中心

目录 1、SpringColud概述 1.1、什么是微服务 1.2、什么是SpringColud&#xff1f; 1.3、SpringColud的特点 2、SpringColud环境准备 2.1、创建父工程 2.2、修改pom.xml文件 2.3、服务提供者——创建子工程 2.4、编写启动类 2.5、编写User类 2.6、编写UserMapper接口…

永磁同步电机恒压频比(V/F)开环控制系统Matlab/Simulink仿真分析及代码生成到工程实现

文章目录前言一、 恒压频比&#xff08;V/F&#xff09;控制原理二、永磁同步电机恒压频比开环控制系统Matlab/Simulink仿真分析2.1.仿真电路分析2.1.1.恒压频比控制算法2.1.2.输出处理2.1.3.主电路2.2.仿真结果分析2.2.1.设定目标转速为1200r/min2.2.1.设定目标转速为变化值三…

消息中间件ActiveMQ入门概述

目录 举一反三 思考 背景 消息中间件的作用 MQ的定义 MQ的特点 MQ的缺点 消息中间件已经成为互联网企业应用系统内部通信的核心手段&#xff0c;是目前企业内主流标配技术&#xff0c; 它具有解耦、异步、削峰、签收、事务、流量控制、最终一致性等一系列高性能架构所需…

并发编程详解: 十三个工具类, 十大设计模式, 从理论基础到案例实战

前言 对于 Java 程序员而言&#xff0c;熟练掌握并发编程是判断其卓越性的重要标准之一。因为并发编程是 Java 语言中最晦涩的知识点&#xff0c;它涉及操作系统&#xff0c;内存&#xff0c;CPU&#xff0c;编程语言等的基本功&#xff0c;并且还测试了程序员的内功。 那么如…

【Android App】人脸识别中借助摄像头和OpenCV实时检测人脸讲解及实战(附源码和演示 超详细)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 一、借助摄像头实时检测人脸 与Android自带的人脸检测器相比&#xff0c;OpenCV具备更强劲的人脸识别功能&#xff0c;它可以通过摄像头实时检测人脸&#xff0c;实时检测的预览空间是JavaCameraView 常用方法说明如下 setCvC…

舵机应该如果选择?讲讲模拟舵机,数字舵机和总线舵机的区别

推荐视频&#xff1a;模拟舵机&#xff0c;数字舵机和总线舵机科普 &#xff1b;舵机从入门到放弃&#xff1b; 很多时候&#xff0c;我们购买舵机就只知道考虑扭矩以及控制方式。对舵机的分类有所耳闻&#xff0c;但是不清楚其中的区别。接下来我将详细说明模拟舵机&#xff0…

【机器学习】基于机器学习的反弹shell命令识别

引言 本文介绍一个基于机器学习识别反弹shell的项目。 在主机安全检测中&#xff0c;一般是采用基于原理的方式识别反弹shell, 通过判断socket通信相关特征&#xff0c;可以准确地识别到主机中的反弹shell。 但是在容器场景下&#xff0c;检测反弹shell 的能力&#xff0c;可能…

[附源码]计算机毕业设计springboot疫情物资管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

2022年第十一届认证杯数学中国数学建模国际赛小美赛:C 题 对人类活动进行分类 建模方案及代码实现

2022年第十一届认证杯数学中国数学建模国际赛小美赛&#xff1a;C 题 对人类活动进行分类 建模方案及代码实现 1 题目 人类行为理解的一个重要方面是对日常活动的识别和监控。可穿戴活动识别系统可以在许多关键领域提高生活质量&#xff0c;如门诊监测、居家康复、跌倒检测等。…

[附源码]Python计算机毕业设计Django茂名特产销售商城网站

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

[Java安全]—再探Filter内存马

前言 关于tomcat反序列化注入回显内存马问题中&#xff0c;就是通过filter内存马进行反序列化动态注册的&#xff0c;但filter内存马由于当时学的时候就没有学的很明白&#xff0c;所以打算重新回顾一下。 前置知识 Tomcat 与 Servlet 的关系 Tomcat中有四种类型的Servlet容…

[Python私活案例]24行代码,轻松赚取400元,运用Selenium爬取39万条数据

今天分享一单来自金主爸爸的私单&#xff0c;运用简单的爬虫技巧&#xff0c;可以有效的规避反爬机制&#xff0c;正所谓“你有张良计&#xff0c;我有过云梯”。这个案例也很好的体现了python语音的优势&#xff0c;规避了非常复杂的底层逻辑&#xff0c;所见即所得&#xff0…

你真的看懂扩散模型(diffusion model)了吗?(从DALL·E 2讲起,GAN、VAE、MAE都有)

本文全网原创于CSDN&#xff1a;落难Coder &#xff0c;未经允许&#xff0c;不得转载&#xff01; 扩散模型简单介绍 我们来讲一下什么是扩散模型&#xff0c;如果你不了解一些工作&#xff0c;你可能不清楚它究竟是什么。那么我举两个例子说一下&#xff1a;AI作画&#xff…

分布滞后线性和非线性模型(DLNM)分析空气污染(臭氧)、温度对死亡率时间序列数据的影响...

全文下载链接 http://tecdat.cn/?p23947 分布滞后非线性模型&#xff08;DLNM&#xff09;表示一个建模框架&#xff0c;可以灵活地描述在时间序列数据中显示潜在非线性和滞后影响的关联。该方法论基于交叉基的定义&#xff0c;交叉基是由两组基础函数的组合表示的二维函数空间…

为什么要让img浮动:

为什么要浮动&#xff1a; 图片不浮动的话&#xff0c;图片和文字是像下面这样排版的&#xff1a; 代码&#xff1a; <img src"https://static.maizuo.com/pc/v5/usr/movie/1f25dd6943762288dfd84b961c98f478.jpg" /> <div><div>红发歌姬</d…

OpenAI发布ChatGPT:程序员瞬间不淡定了

OpenAI发布ChatGPT&#xff1a;程序员瞬间不淡定了 12月1日&#xff0c;OpenAI发布了针对对话场景优化的语言大模型ChatGPT。ChatGPT是InstructGPT的兄弟模型&#xff0c;可以以对话的形式与用户交互&#xff0c;这使得ChatGPT能够回答问题、承认错误、质疑假设、拒绝不当问题…

时尚品牌Gucci 的Web3元宇宙营销进行时ing

Gucci 宣布在 The Sandbox 中推出 “Gucci Vault Land” 古驰藏宝阁 —— 元宇宙中心 &#xff0c;成为第一个在 The Sandbox 虚拟世界中拥有专门用于 Web3 产品的主流时尚品牌。Gucci 美学概念空间开放日&#xff1a;10月27日-11月 9 日 2022 年 Gucci Vault Land建立虚拟世界…

数据结构薄弱知识点

数据结构串KMP算法树二叉树二叉树的基本概念二叉树的遍历&#xff08;&#xff01;非递归实现&#xff09;先序遍历中序遍历后序遍历&#xff08;&#x1f538;非递归实现&#xff09;&#x1f536;线索二叉树找先序遍历的前驱节点&#xff08;&#x1f538;&#xff09;和后继…

Spring学习:二、Bean的管理

4. Bean的管理 ​ Spring的基本Bean管理包括Bean配置&#xff0c;Bean实例化和Bean的依赖注入。这些管理可以通过手工编码的方式把每个Bean注册到容器中&#xff0c;也可以通过properties文件和xml文件配置Bean和Bean之间的依赖关系。通常我们的配置方式是XML作为配置文件。 …

基于纳芯微产品的尾灯方案介绍

文章目录1.前言2.方案简介2.1 概述2.2 功能介绍2.3 DEMO资料3.主要器件介绍3.1 LED Driver3.2 LDO3.3 CAN\LIN收发器4.演示视频5.推荐阅读1.前言 最近拜访一些做尾灯模组的客户了解到&#xff0c;目前LED Driver依然紧缺&#xff0c;特别是TPS929120&#xff0c;BD18331这些差…