热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【转载】Python简介及入门

原文出处:https:www.cnblogs.comzhangyafeiarticles10107110.html计算机原理基础?1234567前提:简述cpu内存硬盘操作系统应用

原文出处:https://www.cnblogs.com/zhangyafei/articles/10107110.html


计算机原理基础


?








1
2
3
4
5
6
7

前提: 简述 cpu 内存 硬盘 操作系统 应用程序
cpu: 计算机的运算核心和控制核心,就好像人类的'大脑'
内存: 负责数据与cpu直接数据交流处理,将临时数据和应用程序加载到内存,然后交由cpu处理。
      4g,8g,16g,32g
      造价高,断电即消失
硬盘: 磁盘(d盘,e盘)长久的存储数据:文件,应用程序。片二等数据,断电不消失
操作系统: 控制调度 硬件与软件资源额计算机程序,它是计算机最大的软件

一、Python的由来

  python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。  

  最新的TIOBE排行榜,Python重回前三

  

  

  由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!!

  Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事一般有:自动化运维、自动化测试、大数据分析、爬虫、Web 等。


1.为什么是Python而不是其他语言?


?








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

C 和 Python、Java、C#等
 
    C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作
 
其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行
 
Python 和 C  Python这门语言是由C开发而来
 
  对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
  对于速度:Python的运行速度相较与C,绝逼是慢了
 
Python 和 Java、C#等
 
  对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
  对于速度:Python在速度上可能稍显逊色

所以,Python和其他语言没有什么本质区别,其他区别在于:擅长某领域、人才丰富、先入为主。


2.Python的种类


?








1
2
3
4
5
6
7
8
9

Cpython
    Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
Jyhton
    Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
IronPython
    Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
PyPy(特殊)
    Python实现的Python,将Python的字节码字节码再编译成机器码。
RubyPython、Brython …

3.python的语言分类


?








1
2
3
4
5
6
7
8

解释型:将代码一行一行的解释成二进制,然后逐行执行。
    缺点:执行效率低。
    优点:开发效率高,可以跨平台。
    代表语言:python。
编译型:将代码全部一次性编译成二进制,然后在执行。
    缺点:开发效率低,不能跨平台。
    优点:执行效率高。
    代表语言:C。

4.python的优缺点


?








1
2
3
4
5
6
7
8
9
10
11
12

优点:
    1,优美清新简单,入门容易,如果深入研究,可以写出非常非常复杂的程序。
    2,开发效率高。
    3,高级语言。
    4,可移植性。
    5,可嵌入性。
    6,可拓展性。
 
缺点:
    1,运行速度慢。
    2,源码不能加密。
    3,由于有GIL锁的存在,不能利用多线程。

5.python2和python3的区别


?








1
2
3
4
5
6
7

源码上的区别:
    pyhton2x:源码不规范。源码重复率较高。源码冗余。
    python3x:源码识重新整合,符合优美清晰简单的原则。
 
编码方式的区别:
    python3x:编码方式默认是utf-8,可以支持中文,英文。
    python2x:编码方式默认是ASCII,只包含英文字母,数字,特殊字符如果想显示中文:在首行加上# -*- encoding:utf-8 -*-。

二、Python环境

  1.安装Python

  windows


1.下载安装包:
  https://www.python.org/downloads/ 选择对应版本的Python下载即可
2.安装路径:默认C盘
  路径也可以选择。比如D:/python3
3.配置环境变量
  不过要记得配置环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】

  linux

    无序安装,系统自带

  2.更新Python

   windows:卸载重装即可

  3.安装第三方包

    pip install package_name  或者 在pycharm中settings中安装


三、Python入门

  1.第一个python程序


#coding=utf-8
#-*- coding:utd-8 -*-
print("hello haha")
#以下代码用来打印一个信息
# 单行注释 # 多行注释
'''
print("hello world")
print("hello world")
print("hello world")
print("hello world")
'''

 第一个Python程序注意点:
运行方式有两种:
(1)在编辑器中编辑好py文件,保存。在命令行下到当前目录执行python 文件名.py
(2)在有python编译环境的编辑器里直接点解运行即可。如eclipse,pycharm。

  Python内部执行流程

2.

 

  2.pyc文件

    执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

    ps:代码经过编译

    可以产生字节码;字节码通过反编译也可以得到代码。

  3.变量的定义和使用 

  变量的定义
  name = zhangyafei #定义了一个变量,这个变量的名字叫做name,它里面存储了一个数值zhangyafei

  变量的作用:昵称,其代指内存里某个地址中保存的内容

变量定义的规则

1.变量名只能是 字母、数字或下划线的任意组合
2.变量名的第一个字符不能是数字
3.以下关键字不能声明为变量名
  ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

 


变量的赋值
score=100 #定义了一个变量,这个变量的名字叫做score,它里面存储了一个数值100
high = 180 #单位是cm
appleprice = 3.5 #苹果的价格 元/斤
weight = 7.5 #购买的苹果的重量 斤
mOney= appleprice * weight #如果money是第一次的话,那么就表示定义这个变量
mOney= money - 10 #如果mOney=xxxx不是第一次出现,那么就不是定义一个变量,而是给这个变量附上一个新的值

  4.输入、输出函数input(),print() 


# -*- coding:utf-8 -*-
#1.使用input获取必要的信息
name =input("请输入名字:")
qq=input("请输入qq:")
#2.使用print来打印名片
print("="*20)
print("姓名:%s"%name)
print("qq:%s"%qq)
print("="*20)

  输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:

import getpass

username = input('请输入用户名:')
pwd = getpass.getpass('请输入密码:')
print(username,pwd)

  5.流程控制与缩进

    需求一:用户登录验证  

1 # 提示输入用户名和密码
2
3 # 验证用户名和密码
4 # 如果错误,则输出用户名或密码错误
5 # 如果成功,则输出 欢迎,XXX!

import getpass

name = input('请输入用户名:')
pwd = getpass.getpass('请输入密码:')

if name == "zhangyafei" and pwd == "nb":
print("欢迎,zhangyafei!")
else:
print("用户名和密码错误"
View Code

    需求二、根据用户输入内容输出其权限

1 # 根据用户输入内容打印其权限
2
3 # zhang --> 超级管理员
4 # chen --> 普通管理员
5 # zhao --> 业务主管
6 # 其他 --> 普通用户

1 # -*- coding: utf8 -*-
2
3 name = input('请输入用户名:')
4
5
6 if name == "zhang":
7 print("超级管理员")
8 elif name == "chen":
9 print("普通管理员")
10 elif name == "zhao":
11 print("业务主管")
12 else:
13 print("普通用户"
View Code

  6.基本数据类型

   (1)数字


  2 是一个整数的例子。
  长整数 不过是大一些的整数。
  3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
  (-5+4j)和(2.3-4.6j)是复数的例子。

  int(整型)


    在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647     在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
  long(长整型)    跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。     注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。   float(浮点型)    浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。   complex(复数)     复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
  注:Python中存在小数字池:-5 ~ 257

  (2)布尔值

  真或假
  1 或 0

        详情请看Fslse和None的区别

(3)字符串:用' xx' |"xx" | '''xx'''|"""xx"""连接的在python中叫字符串 


  万恶的字符串拼接:
  python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
    字符串格式化

# -*- coding: utf-8 -*-
"""
Created on Sat Jul 28 20:45:07 2018
@author: Zhang Yafei
"""
"""
格式化字符串的方式
方法一(%)
"""
# 格式的字符串与被格式化的字符串必须一一对应,需格式化的字符串多时,容易搞混
print('hello %s, you sex is %s.' %('tab', 'boy'))
# hello tab, you sex is boy.
print('hello %s, you sex is %s.' %('boy', 'tab'))
# hello boy, you sex is tab.
# 通过字典方式格式化,哪个字符将会格式化到哪里,清晰命了
print('hello %(name)s, you sex is %(sex)s.' %{'name': 'tab', 'sex': 'boy'})
# hello tab, you sex is boy.
args = {'name': 'tab', 'sex': 'boy'}
print('hello %(name)s, you sex is %(sex)s.' %(args))
# hello tab, you sex is boy.
#方法二(.format)
# 跟方法一第一种方式有点类似的格式化方式
print('hello {0}, you sex is {1}.'.format('tab', 'boy'))
# hello tab, you sex is boy.
# 注意:用字典方式格式化时,指定格式化字符时的位置可以调换
print('hello {name}, you sex is {sex}.'.format(sex='boy', name='tab'))
# hello tab, you sex is boy.
# '**'起到解包的作用
args = {'name': 'tab', 'sex': 'boy'}
print('hello {name}, you sex is {sex}.'.format(**args))
#推荐使用 .format 方法进行格式化字符串,一来清晰明了,二来效率更高(format 是字符串
# str 内置的方法)。更多关于 .format 的用法文档,用户可在交互模式下(终端输入 python
# or ipython or bpython ) 输入 help(str.format) 查看
View Code
字符串常用功能:




    • 移除空白 -> strip()

    • 分割 -> split()

    • 长度 -> length

    • 索引 -> []

    • 切片 ->[:]



 (4)列表

  创建列表

nums = [11,22,33,44,55]

基本操作:





    • 索引 -> [index]

    • 切片 ->[start:end]

    • 追加 ->append,extend

    • 删除 -> pop,remove,del

    • 长度 -> len

    • 循环 -> 可迭代对象 

    • 包含 ->contrains



 (5)元组

  创建元组

ages = (11, 22, 33, 44, 55)

ages = tuple((11, 22, 33, 44, 55))
基本操作:




    • 索引 -> [index]

    • 切片 ->[start:end]

    • 循环 -> 可迭代对象

    • 长度 -> len

    • 包含 ->contains



 (6)字典(无序)

person = {"name": "mr.wu", 'age': 18}

person = dict({"name": "mr.wu", 'age': 18})

常用操作:





    • 索引 -> [index]

    • 新增->dict[key]=value

    • 删除 -> del dict[key]

    • 键、值、键值对 -> key,value,key:value

    • 循环:可迭代对象

    • 长度:len


(7)集合

a = {11,22,33,44,55,66,77} a = set(11,22,33,44,55,66,77)

常用操作:



  • 新增 -> add

  • 删除 -> pop

  • 交 -> &

  • 去重 ->重点

  • 并 -> |

  • 补 -> difference


PS:循环,range,continue 和 break
7.运算符
  复合赋值运算(+-*/)
  

    if比较运算符(<    >   <=  >=  !=  <>)

  

    if 逻辑运算符 and or if not

   


sex = input("输入你的性别:")
if sex == "男":
print("你是男性,可以留胡子")
elif sex == "女":
print("你是女性,不可以留胡子")
else:
print("你是中性,想干啥干啥")
if elif 

#1.获取用户的输入
num = int(input("输入一个数字(1-7):"))
#2. 判断用户的数据,并且显示对应的信息
if num==1:
print("Monday")
elif num==2:
print("Tuesday")
elif num==3:
print("Wednesday")
elif num==4:
print("Thursday")
elif num==5:
print("Friday")
elif num==6:
print("Saturday")
elif num==7:
print("sunday")
else:
print("您输入的数字有误")
判断星期几

#如果当前用户是男性的话,难么就输入判断女性的要求
sex = input("输入你的性别:")
if sex == "男":
color = input("你白吗?") #白或者黄
mOney= int(input("请输入你的财产总和:")) #输入1000
beautiful = input("你美吗?") #美 或者不美
#if 白 并且 富 并且 美
#if 白 and 富 and,美:
if color=="白" and money>1000000 and beautiful=="美":
print("白富美……")
print("好羡慕……")
else:
print("黑穷丑……")
else:
print("判断男性的要求在下面")
color = input("你高吗?") #白或者黄
mOney= int(input("请输入你的财产总和:")) #输入1000
beautiful = input("你帅吗?") #美 或者不美
#if 白 并且 富 并且 美
#if 白 and 富 and,美:
if color=="高" and money>1000000 and beautiful=="帅":
print("高富帅……")
print("好羡慕……")
else:
print("矮穷矬……")
实例:白富美

 if条件总结   


if 条件:
xxxx
if 条件:
xxxxxx1
else:
xxxxx2
if 条件1:
xxxx1
elif 条件2:
xxxx2
elif 条件3:
xxxx3
else:
……
嵌套
if 嵌套
if xxx:
print("---1----")
if xxx2:
xxxxxxx

if xxx:
xxxx3
else:
xxxx
if xxx:
elif xxx:
xxxxx2
elif xxxx:
xxxx2
……
else:
xxxx
View Code

三目运算符


?








1

a = A if x>5 else B

 另一种写法


?








1

a = [A,B][x<5]

while 循环 

num = 1
while num <=10:
print(num) #print("%d"%num)
num=num+1

while总结


while 循环
while 条件:
条件满足的时候执行的事情

while 嵌套
while 条件:
条件满足的时候做的事情1
条件满足的时候做的事情2
。。。。
while 条件2:
条件2 满足的时候做的事情。。。。
while 条件:
1.站起来
2.坐下
3.站起来
while 执行5次
4.转1个圈
5.坐下

嵌套实例 


ticket = 1 #q表示有车票 0表示没有车票
knifeLenght = 48 #cm
#先判断是都有车票
if ticket==1:
print("通过了车票的检测,进入到了车站,接下来要安检了")
#盘DAU拿到的长度是否合法
if knifeLenght<=10:
print("通过了安检,进入了候车厅")
print("马上就要见到她了,好开心……")
else:
print("安检没有通过,等待公安处理")
else:
print("兄弟,你还没有买票呢,先去买票,才能进站……")
上火车

i = 1
while i<=9:

j = 1
while j<=i:
print("%d*%d=%d\t"%(j,i,i*j),end=" ")
j+=1
print("")
i+=1
打印99乘法表

for循环

for iterating_var in sequence:
statements(s)

  sequence即可迭代对象,内部实现了__iter__方法,for循环会遍历其中的每个值

例子

nums = [11,22,33,44,55]
for num in nums:
print(num)

神奇的for_else 

简述 英文原文 A break statement executed in the first suite terminates the loop without executing the else clause’s suite. A continue statement executed in the first suite skips the rest of the suite and continues with the next item, or with the else clause if there is no next item. 中文译文 用 break 关键字终止当前循环就不会执行当前的 else 语句,而使用 continue 关键字快速进入下一论循环,或者没有使用其他关键字,循环的正常结束后,就会触发 else 语句。

#触发else
list = [1,2,3,4,5]
for x in list:
print(x)
else:
print("else")

list = [1,2,3,4,5]
i = 0
for x in list:
continue
print(x)
else:
print("else")
#不触发else:
list = [1,2,3,4,5]
for x in list:
print(x)
break
else:
print("else")

总结
for else语句可以总结成以下。
  如果我依次做完了所有的事情(for正常结束),我就去做其他事(执行else),若做到一半就停下来不做了(中途遇到break),我就不去做其他事了(不执行else)。
  只有循环完所有次数,才会执行 else 。
  break 可以阻止 else 语句块的执行。

 

8.初始文件操作

打开文件:
open(文件名,访问模式)
f = open("test.txt","w")

打开文件的方式

r,以只读方式打开文件
w,打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a,打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
w+,打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

读取文件:f.read(),f.readline(),f.readlines()


f = open('test.txt', 'r')
cOntent= f.read(5)
print(content)
print("-"*30)
cOntent= f.read()
print(content)
f.close()

写入文件:f.write()

f = open('test.txt', 'w')
f.write('hello world, i am here!')
f.close()

关闭文件:f.close()

一些案例


#1.获取文件名
old_file_name = input("请输入要备份的文件名(需要后缀):")
#2。打开这个文件("r")
f_read = open(old_file_name,"r")
#new_file_name = old_file_name+"[复件]"
position = old_file_name.rfind(".")
new_file_name = old_file_name[0:position]+"[复件]"+old_file_name[position:]
#3.创建一个文件,xxx[复件].txt
f_write = open(new_file_name,"w")
#4.往源文件中读取内容,写入备份的文件中
#cOntent= f_read.read()
#f_write.write(content)
while True:
cOntent= f_read.read(1024)
if len(content)==0:
break
f_write.write(content)
#5.关闭两个文件
f_read.close()
f_write.close()
文件备份

import os
#1. 获取一个要重命名的文件夹的名字
folder_name = input("请输入要重命名的文件夹:")
#2.获取文件夹中所有的文件名字
file_names = os.listdir(folder_name)
'''
第一种方法
os.chdir(folder_name)
3.对获取的名字进行重命名即可
for name in file_names:
print(name)
os.rename(name,"[京东出品]-"+name)
'''
#第二种方法
for name in file_names:
#print(name)
old_file_name = "./"+folder_name+"/"+name
new_file_name = "./"+folder_name+"/"+"[京东出品]"+name
os.rename(old_file_name,new_file_name)
print(new_file_name)
批量文件重命名

 注:驼峰命名法

englishScore = 100 #小驼峰
english_score = 100 #下划线,推荐
EnglishScore = 100 #大驼峰
englishscore = 100 #不推介

推荐阅读
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 使用Java 1.8 编译兼容1.6 JVM 的Class文件
    本文探讨了如何使用Java 1.8 编译器生成能够在1.6 JVM 上运行的Class文件,并介绍了Spring框架中的相关配置。 ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
  • 本文详细解析了Java类加载系统的父子委托机制。在Java程序中,.java源代码文件编译后会生成对应的.class字节码文件,这些字节码文件需要通过类加载器(ClassLoader)进行加载。ClassLoader采用双亲委派模型,确保类的加载过程既高效又安全,避免了类的重复加载和潜在的安全风险。该机制在Java虚拟机中扮演着至关重要的角色,确保了类加载的一致性和可靠性。 ... [详细]
  • 深入解析CAS机制:全面替代传统锁的底层原理与应用
    本文深入探讨了CAS(Compare-and-Swap)机制,分析了其作为传统锁的替代方案在并发控制中的优势与原理。CAS通过原子操作确保数据的一致性,避免了传统锁带来的性能瓶颈和死锁问题。文章详细解析了CAS的工作机制,并结合实际应用场景,展示了其在高并发环境下的高效性和可靠性。 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • Eclipse中解决JDK源码断点调试失效的问题 ... [详细]
  • Java中不同类型的常量池(字符串常量池、Class常量池和运行时常量池)的对比与关联分析
    在研究Java虚拟机的过程中,笔者发现存在多种类型的常量池,包括字符串常量池、Class常量池和运行时常量池。通过查阅CSDN、博客园等相关资料,对这些常量池的特性、用途及其相互关系进行了详细探讨。本文将深入分析这三种常量池的差异与联系,帮助读者更好地理解Java虚拟机的内部机制。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
author-avatar
彭雅静政颖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有