python编程基础

news2024/11/29 4:50:18

python编程基础

1、什么是编程语言?

编程语言是用来控制计算机的一系列指令(Instruction),它有固定的格式和词汇(不同编程语言的格式和词汇不一样),必须遵守,否则就会出错,达不到我们的目的。

习惯上,我们将这一条条指令称为代码,这些代码共同组成一个计算机程序,而用编程语言来编写程序的过程称为编码

使用编译器将自身转换成机器语言的高级语言,通常称为编译型语言;而使用解释器将自身转换成机器语言的高级语言,称为解释型语言,Python 就是一种解释型编程语言。

2、编译型语言与解释型语言的区别?

  • 有的编程语言要求 必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序(比如 Windows 下的 .exe 文件),比如C语言、C++、Golang、汇编语言等,它们都属于编译型语言,使用的转换工具称为编译器

  • 有的编程语言可以一边执行一边转换,需要哪些源代码就转换哪些源代码,不会生成可执行程序。

    比如 Python、JavaScript、PHP、Shell 等,这类编程语言称为解释型语言,使用的转换工具称为解释器

简单地理解,编译器和解释器其实就是一个“翻译工具”。

在这里插入图片描述

除编译型和解释型语言外,还有一种半编译半解释型语言,比如 Java和 C# 等,这类语言将源代码先转换成一种中间文件(字节码文件),然后再将中间文件拿到虚拟机中执行。

编译型语言特点:

  • 一次编译,无限次运行
  • 可执行程序不能跨平台。
  • 源代码不能跨平台。
  • 执行效率高。一般闭源。
  • 可移植性差,不够灵活。

解释型特点:

  • 效率较低,且是数量级差距。
  • 一般开源。
  • 一次编写,到处运行。
  • 一边执行一边转换,效率较低。

3、python特点:

Python 是一种开源的解释型脚本编程语言,它之所以非常流行,主要有三点原因:

  • Python 简单易用,学习成本低,看起来非常优雅干净;
  • Python 标准库和第三库众多,功能强大,既可以开发小工具,也可以开发企业级应用;
  • Python 站在了人工智能和大数据的风口上,站在风口上,猪都能飞起来。

优点:

  • 语法简单。
  • 具有伪代码的特点。(伪代码必须结构清晰、代码简单、可读性好,并且类似于自然语言。)
  • 开源、免费、高级语言。
  • 面向对象、能跨平台、模块多(第三方库)、可扩展性强。

缺点:

  • 运行数度慢;
  • 代码加密困难。

4、python应用领域:

  • web开发(Django、Flask)
  • 自动化运维。
  • 网络爬虫。
  • 人工智能
  • 科学计算
  • 游戏开发。

python是严格区分大小写的。

# 编程之歌
print(" "*5+"程序员之歌")
print(" "*15+"——《江城子》改编\n")
print("十年生死两茫茫,写程序,到天亮,")
print("千行代码,Bug何处藏。")
print("纵使上线又怎样,朝令改,夕断肠。")
print("领导每天新想法,天天改,日日忙。")
print("相顾无言,惟有泪千行")
print("每晚灯火阑珊处,程序员,加班狂。")

在这里插入图片描述

5、变量:

1、python注释:

注释用来向用户提示或解释某些代码的作用和功能,它可以出现在代码中的任何位置。

  • 单行注释:#

    # 这是单行注释
    
  • 多行注释:三个连续的双引号或 单引号

    """
    使用 3 个双引号分别作为注释的开头和结尾
    可以一次性注释多行内容
    这里面的内容全部是注释内容
    """
    

    注意:多行注释中不可以嵌套多行注释。

2、缩进:

python 采用代码缩进和冒号( : )来区分代码块之间的层次。

  • 注意,Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现。
  • 一个 Tab 键就表示 4 个空格。
  • Python 对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样,否则解释器会报 SyntaxError 异常错误。

3、编程规范:

Python 采用 PEP 8 作为编码规范。

  • 每个 import 语句只导入一个模块,尽量避免一次导入多个模块。
  • 不要在行尾添加分号,也不要用分号将两条命令放在同一行。
  • 建议每行不超过 80 个字符,如果超过,建议使用小括号将多行内容隐式的连接起来,而不推荐使用反斜杠 \ 进行连接。
  • 使用必要的空行可以增加代码的可读性。
  • 在运算符两侧、函数参数之间以及逗号两侧,都建议使用空格进行分隔。

4、标识符与命名规范:

标识符 主要作用就是作为变量、函数、类、模块以及其他对象的名称。

  • 标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字。(中文也可以,但是不推荐)。
  • 标识符不能是python中的关键字。
  • Python中的标识符中,不能包含空格、@、% 以及 $ 等特殊字符。
# 查看python中的关键字
help("keywords")

False               class               from                or
None                continue            global              pass
True                def                 if                  raise
and                 del                 import              return
as                  elif                in                  try
assert              else                is                  while
async               except              lambda              with
await               finally             nonlocal            yield
break               for                 not                 

标识符的命名,除了要遵守以上这几条规则外,不同场景中的标识符,其名称也有一定的规范可循,例如:

  • 当标识符用作模块名时,应尽量短小,并且全部使用小写字母,可以使用下划线分割多个字母,例如 game_mian、game_register 等。
  • 当标识符用作包的名称时,应尽量短小,也全部使用小写字母,不推荐使用下划线,例如 com.mr、com.mr.book 等。
  • 当标识符用作类名时,应采用单词首字母大写的形式。例如,定义一个图书类,可以命名为 Book。
  • 模块内部的类名,可以采用 “下划线+首字母大写” 的形式,如 _Book;
  • 函数名、类中的属性名和方法名,应全部使用小写字母,多个单词之间可以用下划线分割
  • 常量命名应全部使用大写字母,单词之间可以用下划线分割;

5、内置函数:

Python解释器自带的函数叫做内置函数,这些函数可以直接使用,不需要导入某个模块。

内置函数

注意,不要使用内置函数的名字作为标识符使用(例如变量名、函数名、类名、模板名、对象名等),虽然这样做 Python 解释器不会报错,但这会导致同名的内置函数被覆盖,从而无法使用。

6、变量的使用:

n = 10
print(n)  #将变量传递给函数

m = n * 10 + 5  #将变量作为四则运算的一部分
print(m)

print(m-30)  #将由变量构成的表达式作为参数传递给函数

m = m * 2  #将变量本身的值翻倍
print(m)

url = "http://c.biancheng.net/cplus/"
str = "C++教程:" + url  #字符串拼接
print(str)

python 是弱类型语言。

  • 变量无须声明就可以直接赋值,对一个不存在的变量赋值就相当于定义了一个新变量。
  • 变量的数据类型可以随时改变,比如,同一个变量可以一会儿被赋值为整数,一会儿被赋值为字符串。
  • type() 内置函数可以检测某个变量或者表达式的类型。

6、数据类型:

1、整型:

不管对于多大或者多小的整数,Python 只用一种类型存储,就是 int。

当所用数值超过计算机自身的计算能力时,Python 会自动转用高精度计算(大数计算)。

进制的表示:

  • 十进制:0-9阿拉伯数字
  • 二进制:0b 或者 0B开头。
  • 八进制:0o 或者 0O开头。
  • 十六进制:0f 或者 0F开头。

数字分隔符:为了提高数字的的可读性,Python 3.x 允许使用下划线_作为数字(包括整数和小数)的分隔符。

click = 10_000_000
num = 14_900_400_000

print("python阅读量:", click)   # python阅读量: 10000000
print("中国人口数:", num)     # 中国人口数: 14900400000

2、浮点数:

浮点数和定点数是相对的:小数在存储过程中如果小数点发生移动,就称为浮点数;如果小数点不动,就称为定点数。

表示形式:

  • 十进制形式:45.6、 56.2、 23.6等。

  • 指数形式:2.1e5、 4e3等。

    注意:只要写成指数形式就是小数,即使它的最终值看起来像一个整数。例如 4E3 等价于 4000,但 4E3 是一个小数。

Python 只有一种小数类型,就是 float。

num01 = 12.5
print(num01)
print(type(num01))   # float

num02 = 0.232132131231
print(num02)
print(type(num02))   # float

num03 = 0.000000000000000021
print(num03)
print(type(num03))   # float

num04 = -13.43232
print(num04)
print(type(num04))   # float

num05 = 12e6
print(num05)
print(type(num05))   # float

num06 = 1.2 * 5.5
print(num06)
print(type(num06))   # float

Python 能容纳极小和极大的浮点数。print 在输出浮点数时,会根据浮点数的长度和大小适当的舍去一部分数字,或者采用科学计数法。

复数(Complex)是 Python的内置类型,直接书写即可。

3、字符串:

python 中的字符串必须由双引号" "或者单引号' '包围。两者没有区别。

注意点:

  • 在使用引号时,需要用转义字符:\
  • 如果字符串内容中出现了单引号,那么我们可以使用双引号包围字符串,反之亦然。

字符串换行:

num = (20 + 3 / 4 +
    2 * 3)
print(num)   # 26.75

str = "hello world! hahaha" \
      "my name is litianyuan" \
      ", is buliangshuai."
print(str)   # hello world! hahahamy name is litianyuan, is buliangshuai.

str02 = ("你好,最近过的咋样?"
         "很好啊。"
         "好的,听说不良人第六季快出来了哎。"
         "是吗,那得好好看看。"
         "哈哈哈。")

print(str02)  # 你好,最近过的咋样?很好啊。好的,听说不良人第六季快出来了哎。是吗,那得好好看看。哈哈哈。

上述代码中,字符串换行更推荐第二种括号()形式的方式。

在普通字符串或者长字符串的开头加上r前缀,就变成了原始字符串。

str03 = r"你好啊\t ,是的,我很好。"
print(str03)   # 你好啊\t ,是的,我很好。

str03 = r'I\'m xiaochuhe, nice to meet you.'
print(str03)  # I\'m xiaochuhe, nice to meet you.

需要注意的是,Python 原始字符串中的反斜杠仍然会对引号进行转义,因此原始字符串的结尾处不能是反斜杠,否则字符串结尾处的引号会被转义,导致字符串不能正确结束。

4、bytes 类型:

bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的。

字节串(bytes)和字符串(string)的对比:

  • 字符串由若干个字符组成,以字符为单位进行操作;字节串由若干个字节组成,以字节为单位进行操作。
  • 字节串和字符串除了操作的数据单元不同之外,它们支持的所有方法都基本相同。
  • 字节串和字符串都是不可变序列,不能随意增加和删除数据。
#通过b前缀将字符串转换成 bytes
b3 = b'http://c.biancheng.net/python/'
print("b3: ", b3)
print(b3[3])
print(b3[7:22])

#为 bytes() 方法指定字符集
b4 = bytes('C语言中文网8岁了', encoding='UTF-8')
print("b4: ", b4)

#通过 encode() 方法将字符串转换成 bytes
b5 = "C语言中文网8岁了".encode('UTF-8')
print("b5: ", b5)  # b5:  b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x918\xe5\xb2\x81\xe4\xba\x86'

bytes 类也有一个 decode() 方法,通过该方法可以将 bytes 对象转换为字符串。

#通过 decode() 方法将 bytes 转换成字符串
str1 = b5.decode('UTF-8')
print("str1: ", str1)

5、布尔类型:

True 和 False 是 Python 中的关键字,当作为 Python 代码输入时,一定要注意字母的大小写,否则解释器会报错。

布尔类型可以当做整数来对待,即 True 相当于整数值 1,False 相当于整数值 0。

在 Python 中,所有的对象都可以进行真假值的测试,包括字符串、元组、列表、字典、对象等。

bool = True + 1
print(bool)

bool02 = False + 1
print(bool02)

但是在实际应用中,尽量避免这样操作。

7、运算符:

1、input() 函数

input()Python的内置函数,用于从控制台读取用户输入的内容。

input() 函数总是以字符串的形式来处理用户输入的内容,所以用户输入的内容可以包含任何字符。

name = input("请输入你的名字:")
print(name,type(name))   # str

age = int(input("请输入你的年龄:"))
print(age,type(age))   # int

用 Python 内置函数将字符串转换成想要的类型:

  • int(string) 将字符串转换成 int 类型;
  • float(string) 将字符串转换成 float 类型;
  • bool(string) 将字符串转换成 bool 类型。

2、print() 函数

print() 函数完全可以同时输出多个变量。

语法格式:

print (value,...,sep='',end='\n',file=sys.stdout,flush=False)
  • 从上面可以看出,value可以接收多个变量或值。
name = "萧楚河"
age = 21
email = "12345@qq.com"
print("姓名:",name,"年龄:",age,"邮箱:",email)
  • 改变默认的分隔符,可通过 sep 参数进行设置。
print("姓名:",name,"年龄:",age,"邮箱:",email,sep="||")
# 姓名:||萧楚河||年龄:||21||邮箱:||12345@qq.com
  • 在默认情况下,print() 函数输出之后总会换行。因为 print() 函数的 end 参数的默认值是“\n”,若不想换行,只需要重设end 参数即可。
print(40,'\t',end=" ")
print(50,'\t',end=" ")
print(60,'\t',end=" ")  # 40 	 50 	 60
  • file 参数指定 print() 函数的输出目标,file 参数的默认值为 sys.stdout,该默认值代表了系统标准输出,也就是屏幕,因此 print() 函数默认输出到屏幕。

    实际上,完全可以通过改变该参数让 print() 函数输出到特定文件中,例如如下代码:

f = open("demo.txt","w")  # 打开文件以便写入
print('沧海月明珠有泪',file=f)
print('蓝田日暖玉生烟',file=f)
f.close()
  • print() 函数的 flush 参数用于控制输出缓存,该参数一般保持为 False 即可,这样可以获得较好的性能。

3、格式化字符串

print() 函数使用以%开头的转换说明符,对各种类型的数据进行格式化输出。

在这里插入图片描述

转换说明符只是一个占位符,它会被后面表达式(变量、常量、数字、字符串、加减乘除等各种形式)的值代替。

age = 21
print("我今年%d岁了。" %age)   # 我今年21岁了。

格式化字符串可以包含多个转换说明符,这个时候也得提供多个表达式,用以替换对应的转换说明符;多个表达式必须使用小括号( )包围起来。

age = 21
name = "萧楚河"
email = "12345@qq.com"
print("你好,我叫%s,今年%d岁,邮箱是:%s,有空记得找我玩。" %(name,age,email))  # 你好,我叫萧楚河,今年21岁,邮箱是:12345@qq.com,有空记得找我玩。

总之,有几个占位符,后面就得跟着几个表达式。并且,表达式需要一一对应。

当使用上述的转换说明符时,可以使用下面的格式指定最小输出宽度(至少占用多少个字符的位置):

  • %10d 表示输出的整数宽度至少为 10;
  • %20s 表示输出的字符串宽度至少为 20。
  • 对于整数和字符串,当数据的实际宽度小于指定宽度时,会在左侧以空格补齐;
  • 当数据的实际宽度大于指定宽度时,会按照数据的实际宽度输出。
num = 1234567
print("num(10):%10d." %num)
print("num(5):%5d." %num)

# num(10):   1234567.
# num(5):1234567.

指定对齐方式

-指定左对齐
+表示输出的数字总要带着符号;正数带+,负数带-
0表示宽度不足时补充 0,而不是补充空格。
  • 对于小数,以上三个标志可以同时存在。
  • 对于字符串,只能使用-标志,因为符号对于字符串没有意义,而补 0 会改变字符串的值。
n = 123456
# %09d 表示最小宽度为9,左边补0
print("n(09):%09d" % n)
# %+9d 表示最小宽度为9,带上符号
print("n(+9):%+9d" % n)
f = 140.5
# %-+010f 表示最小宽度为10,左对齐,带上符号
print("f(-+0):%-+010f" % f)
s = "Hello"
# %-10s 表示最小宽度为10,左对齐
print("s(-10):%-10s." % s)

指定小数精度:

对于小数(浮点数),print() 还允许指定小数点后的数字位数,也即指定小数的输出精度。

精度值需要放在最小宽度之后,中间用点号.隔开;也可以不写最小宽度,只写精度。

%m.nf
%.nf
f = 3.141592653
# 最小宽度为8,小数点后保留3位
print("%8.3f" % f)
# 最小宽度为8,小数点后保留3位,左边补0
print("%08.3f" % f)
# 最小宽度为8,小数点后保留3位,左边补0,带符号
print("%+08.3f" % f)

   3.142
0003.142
+003.142

4、转义字符

\n换行符,将光标位置移到下一行开头。
\r回车符,将光标位置移到本行开头。
\t水平制表符,也即 Tab 键,一般相当于四个空格。
\a蜂鸣器响铃。注意不是喇叭发声,现在的计算机很多都不带蜂鸣器了,所以响铃不一定有效。
\b退格(Backspace),将光标位置移到前一列。
\反斜线
单引号
"双引号
\在字符串行尾的续行符,即一行未完,转到下一行继续写。

5、数据类型转换

函 数作 用
int(x)将 x 转换成整数类型
float(x)将 x 转换成浮点数类型
complex(real,[,imag])创建一个复数
str(x)将 x 转换为字符串
repr(x)将 x 转换为表达式字符串
eval(str)计算在字符串中的有效 Python 表达式,并返回一个对象
chr(x)将整数 x 转换为一个字符
ord(x)将一个字符 x 转换为它对应的整数值
hex(x)将一个整数 x 转换为一个十六进制字符串
oct(x)将一个整数 x 转换为一个八进制的字符串

6、算数运算符:

  • 加:+
  • 减:-
  • 乘:*
  • 除(和数学中的规则一样):/
  • 整除(只保留商的整数部分,向下取整)://
  • 取余,即返回除法的余数:%
  • 幂运算/次方运算,即返回 x 的 y 次方:**

注意:+ 不仅可以进行四则运算,还可以连接字符串。

a = 12
b = 10
sum = a + b
print(sum)

name = "中国惊奇先生"
cartoon = "动漫"
size = 15.6
str = "影片类型:" + cartoon + "影片名称:" + name + "影片大小:" + str(size) + "G"
print(str)

- 除了可以用作减法运算之外,还可以用作求负运算(正数变负数,负数变正数)。

*除了可以用作乘法运算,还可以用来重复字符串,也即将 n 个同样的字符串连接起来。

str1 = "hello "
print(str1 * 4)
  • /的计算结果总是小数,不管是否能除尽,也不管参与运算的是整数还是小数。

  • 当有小数参与运算时,//结果才是小数,否则就是整数。

  • 只有当第二个数字是负数时,求余的结果才是负数。换句话说,求余结果的正负和第一个数字没有关系,只由第二个数字决定。

  • %两边的数字都是整数时,求余的结果也是整数;但是只要有一个数字是小数,求余的结果就是小数。

7、赋值运算符:

赋值运算符用来把右侧的值传递给左侧的变量(或者常量);可以直接将右侧的值交给左侧的变量,也可以进行某些运算后再交给左侧的变量,比如加减乘除、函数调用、逻辑运算等。

  • = 和 == 是两个不同的运算符,= 用来赋值,而 == 用来判断两边的值是否相等。
n = 100
f = 25.2

n -= 80
print(n)   # 20

f *= n-10
print(f)   # 252.0

8、位运算符:

在这里插入图片描述

  • 按位与运算符&的运算规则是:只有参与&运算的两个位都为 1 时,结果才为 1,否则为 0。
  • 按位或运算符|的运算规则是:两个二进制位有一个为 1 时,结果就为 1,两个都为 0 时结果才为 0。
  • 按位异或运算^的运算规则是:参与运算的两个二进制位不同时,结果为 1,相同时结果为 0。
  • 按位取反运算符~为单目运算符(只有一个操作数),右结合性,作用是对参与运算的二进制位取反。例如~1为0,~0为1。

9、比较运算符:

比较运算符,也称关系运算符,用于对常量、变量或表达式的结果进行大小比较。如果这种比较是成立的,则返回 True(真),反之则返回 False(假)。

在这里插入图片描述

== 用来比较两个变量的值是否相等,而 is 则用来比对两个变量引用的是否是同一个对象。

10、逻辑运算符:

在这里插入图片描述

在 Python 中,and 和 or 不一定会计算右边表达式的值,有时候只计算左边表达式的值就能得到最终结果。

另外,and 和 or 运算符会将其中一个表达式的值作为最终结果,而不是将 True 或者 False 作为最终结果。

对于 and 运算符,全真则为真。有假得假:

  • 如果左边为假,那么就不用看右边了,因为不管右边是什么,最终结果都是假,此时 and 会把左边的值作为最终结果。
  • 如果左边为真,那么最终值是不能确定的,and 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。

对于 or 运算符,则是有真则真,全假为假:

  • 如果左边为真,那么就不用看右边了,最终结果都是真,此时 or 会把左边表达式的值作为最终结果。
  • 如果左边表达式的值为假,那么最终值是不能确定的,or 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。

11、三目运算符:

假设现在有两个数字,我们希望获得其中较大的一个,那么可以使用 if else 语句,例如:

if a > b:
    max = a
else:
    max = b

三目运算符的写法为:

max = a if a>b else b

Python 三目运算符支持嵌套,如此可以构成更加复杂的表达式。

max = (a if a > c else c) if a > b else (b if b > c else c)
a = 12
b = 5
c = 30
max = (a if a > c else c) if a > b else (b if b > c else c)

print("最大值为:",max)  # 30

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

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

相关文章

opencv加水印

本文介绍opencv给图片加水印的方法。 目录1、添加水印1.1、铺满1.2、在指定区域添加1.3、一比一铺满1、添加水印 添加水印的原理是调低两张图片的透明度,然后叠加起来。公式如下: dst src1 * opacity src2 * (1 - opacity) gamma; opacity是透明度&a…

UE官方教程笔记02-实时渲染基础下

对官方教程视频[官方培训]02-实时渲染基础下 | 陈拓 Epic的笔记没听懂的地方就瞎写反射实时渲染中反射是一个非常有挑战的特性UE中有多种不同的方案,各有各的优势和缺点反射捕获屏幕空间反射平面反射LumenRT Reflection反射捕获在指定位置捕获一张Cube Map需要预计算…

低代码:助力乡村振兴事业开启“智慧模式”

伴随着脱贫攻坚目标任务的全面完成,我国“三农”工作重心历史性地转向全面推进乡村振兴,这也标志着我国农业农村工作迈上了一个新台阶。 什么是乡村振兴? 乡村振兴是新时代“三农”工作的总抓手,坚持农业农村优先发展,…

windows 下docker 安装clickhouse

docker 下载https://www.docker.com/products/docker-desktop/将下载下来的Docker Desktop Installer.exe文件双击进行安装即可,安装完成后,任务栏会出现一个蓝色的小鲸鱼图标(注意安装完成后可能会重启系统)Docker Desktop如果出…

禁用XXE处理漫谈

前言 近期准备面试题时,XXE漏洞防范措施(或者说修复方式)在一些文章中比较简略, 故本文根据研究进行总结,作为技术漫谈罢了。 简述 XXE漏洞 XXE(XML外部实体注入),程序解析XML数…

国产8K摄像机拍摄回顾与画面数据反馈

本文分析两款国产8K摄像机,一款是全画幅,一款是M43画幅。一、全新国产全画幅8K B1机器参数数据汇总:全画幅8K 60fps,受益于8K全画幅的优势与大幅升级的图像处理系统,BOSMA 8K摄像机系统提升到新的高度。拍摄支持&#…

Ubuntu 安装 CUDA and Cudnn

文章目录0 查看 nvidia驱动版本1 下载Cuda2 下载cudnn参考:0 查看 nvidia驱动版本 nvidia-smi1 下载Cuda 安装之前先安装 gcc g gdb 官方:https://developer.nvidia.com/cuda-toolkit-archive,与驱动版本进行对应,我这里是12.0…

C++语法规则1(C++面向对象 )

C面向对象 面向对象的三大特征是继承,多态和封装,C重面向对象重要的就是这些,我们下面通过一些简单的实例加以理解,从这小节开始,我们将开启新的编程旅途。与 C 语言编程的思想完全不同了,这就是 C!理解概…

[Linux基础]history相关的环境变量设置

目录 背景 简介 命令操作 1. 语法: 2. 功能 3. 参数 环境变量设置 背景 工作中时常收到客户的反馈,我的系统什么也没干,就出现文件丢失,程序错误等等问题;我们在问题排查的时候查看history信息也是重要环节…

大数据导论、Apache ZooKeeper

目录标题1、数据与数据分析2、数据分析基本步骤3、大数据时代4、分布式技术5、 Apache ZooKeeper5.1 ZooKeeper 概述5.2 ZooKeeper 特性5.3 ZooKeeper 集群角色5.4 ZooKeeper 集群搭建5.5 ZooKeeper 数据模型1、数据与数据分析 数据分析是指用适当的统计分析方法对收集来的数据…

零基础小白如何自学网络安全成为顶尖黑客?

在成为黑客之前,你需要做两点准备: 1、学一门编程语言。学哪一门不重要,但你要参考一下下面的条例: C语言是Unix系统的基础。它(连同汇编语言)能让你学习对黑客非常重要的知识:内存的工作原理…

Go爬虫学习笔记(二)

3 进阶路线:如何深入学习Go语言? 时间与复利思维 一万小时定律 - MBA智库百科 (mbalib.com):大量训练。 思维模型 类比:类比旧知识知识组块:将知识拆分知识体系:知识之间的联系:wiki、笔记双链…

漏洞分析丨cve-2012-0003

作者:黑蛋一、漏洞简介这次漏洞属于堆溢出漏洞,他是MIDI文件中存在的堆溢出漏洞。在IE6,IE7,IE8中都存在这个漏洞。而这个漏洞是Winmm.dll中产生的。二、漏洞环境虚拟机调试工具目标软件辅助工具XP-SP3、KaliOD、IDAIE6Windbg组件gflags.exe三…

Java 不同路径

不同路径中等一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径&#xff1f…

直播间与2位优秀创作者分享经历

我是卢松松,点点上面的头像,欢迎关注我哦! 昨天,卢松松的直播间好像又被推荐给了2.9万人观看,讲了一个小时后直播间的人数一直攀升,最终冲破了2万人大关。晚些时候,白杨SEO也来到了我的直播间&…

【数据结构】——树与二叉树

文章目录树二叉树二叉树的性质完全二叉树二叉树的存储遍历二叉树和线索二叉树6.4 树和森林哈夫曼树应用树 树的定义:树是以分支关系定义的层次结构。 D; 树(Tree)是n(n≥0)个结点的有限集。 R 数据关系 有且仅有一个特定的称为根(Root) 的结点 当n>1时&…

FCN网络介绍

目录前言一.FCN网络二.网络创新点前言 在图像分割领域,有很多经典的网络,如MASK R-CNN,U-Net,SegNet,DeepLab等网络都是以FCN为基础进行设计的。我们这里简单介绍一下这个网络。 一.FCN网络 FCN网络介绍   FCN 即全…

【学习笔记】人工智能哲学研究:《心智、语言和机器》

关于人工智能哲学,我曾在这篇文章里 【脑洞大开】从哲学角度看人工智能:介绍徐英瑾的《心智、语言和机器》 做过介绍。图片来源:http://product.dangdang.com/29419969.html在我完成了一些人工智能相关的工作以后,我再来分享《心智…

基于libco的c++协程实现(时间轮定时器)

在后端的开发中,定时器有很广泛的应用。 比如: 心跳检测 倒计时 游戏开发的技能冷却 redis的键值的有效期等等,都会使用到定时器。 定时器的实现数据结构选择 红黑树 对于增删查,时间复杂度为O(logn),对于红黑…

【Unity趣味编程】——c++实现小球的自由移动

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…