python基础运用例子
python基础运用例子
- 1、⼀⾏代码交换 a , b :`a, b = b, a`
- 2、⼀⾏代码反转列表 l[::-1]
- 3、合并两个字典 res = {**dict1, **dict2}
- **操作符
- 合并两个字典
- for循环合并
- dict(a, **b) 的方式
- dict(a.items() + b.items()) 的方式
- dict.update(other_dict) 的方式
- 4、⼀⾏代码列表去重set([1,1,1])
- ⼀⾏代码求多个列表中的最⼤值
- max
- ⼀⾏代码⽣成逆序序列
- python内置函数
- all()函数 all([1, 0, 3, 6])
- any()函数
- bool函数
- 面向对象
- 构造方法 def __init__(self, name)
- "__成员名"定义私有成员
- 内部私有成员的调用 同Java、C++通过公有成员函数调用
- 创建对象 构造函数两个以上参数,不指明参数就要按顺序,想不按顺序就可以声明参数
- str()函数和repr() 函数
- str()函数
- repr() 函数
- __repr
- 格式化字符串
- %-- 'Hello %s' % 'Python'
- format()-- '{0} {1}'.format('Hello', 'Python')
- f-string-- f'User {username} has logged in and did an action {action}.'
1、⼀⾏代码交换 a , b :a, b = b, a
a = 1
b = 2
a, b = b, a
print(a, b) # 2 1
2、⼀⾏代码反转列表 l[::-1]
l=[1,2,3]
print(l[::-1] ) # [3,2,1]
3、合并两个字典 res = {**dict1, **dict2}
# {**{'a':1,'b':2}, **{'c':3}}
d1={'a':1,'b':2}
d2={'c':3}
print({**d1,**d2})# {'a': 1, 'b': 2, 'c': 3}
**操作符
函数形参汇聚 —— 打包
*args 和 **kwargs 常作为 魔法变量 出现于函数定义中,用于将不定量实参传递给函数。其中:
*args 的本质是将 位置形参 汇集为 tuple 然后由变量 args 接收,:
>>> def test1(x, *args):''' 将除首个元素 x 外的位置参数 args 汇聚为一个 tuple '''print(x, args) >>> test1('a', 'b', 'c', 'd')
'a' ('b', 'c', 'd')>>> test1(1, 2, 3, 4)
1 (2, 3, 4)
**kwargs 的本质则是将 关键字形参 汇集为 dict 然后由变量 kwargs 接收:
>>> def test2(**kwargs):''' 将所有关键字参数汇聚为 dict ''' for key, value in kwargs.items():print("{0} = {1}".format(key, value))>>> test2(a=1, b=2, c=3, d=4)
a = 1
b = 2
c = 3
d = 4
注意,单星操作符 * 无法汇集关键字参数,双星操作符 ** 才可以
合并两个字典
for循环合并
a = {1: 'a', 2: 'aa'}
b = {3: 'aaa', 4: 'aaaa'}
for k, v in b.items():a[k] = v# print(k)print(a)
# {1: 'a', 2: 'aa', 3: 'aaa', 4: 'aaaa'}
dict(a, **b) 的方式
d1={'a':1,'b':2}
d2={'c':3}
print(dict(d1,**d2))
dict(a.items() + b.items()) 的方式
dict.items() 能够得到一个包含以该字典的键与值为元素组成的元组的列表:
>>> a = {1: 'a', 2: 'aa'}
>>> a.items()
[(1, 'a'), (2, 'aa')]
两个列表实现 + 运算, 即是将两个列表合并, 而 dict() 方法可以接收类似于上面例子中的数据结构来组装并返回一个字典类型的数据, 所以我们可以使用 dict(a.items() + b.items()) 的方法来合并 a、 b 两个字典:
>>> a = {1: 'a', 2: 'aa'}
>>> b = {3: 'aaa', 4: 'aaaa'}
>>> dict(a.items() + b.items())
{1: 'a', 2: 'aa', 3: 'aaa', 4: 'aaaa'}
dict.update(other_dict) 的方式
直接调用字典的 update() 方法, 同样可以将两个字典合并:
>>> a = {1: 'a', 2: 'aa'}
>>> b = {3: 'aaa', 4: 'aaaa'}
>>> a.update(b)
>>> a
{1: 'a', 2: 'aa', 3: 'aaa', 4: 'aaaa'}
4、⼀⾏代码列表去重set([1,1,1])
set([1,2,2,3,3,3])
# {1, 2, 3}
⼀⾏代码求多个列表中的最⼤值
a=max(max([ [1,2,3], [5,1], [4] ], key=lambda v: max(v)))
print(a)
# 5
解释:比较列表大小的规则是 根据 每个列表中最大值
传入命名参数key,其为一个函数,用来指定取最大值的方法
max
max函数的作用是返回可迭代序列中的最大项或两个或多个参数中的最大项。
多个参数中的最大项
print(max(1,2,3,4)) # 输出4
注意:函数至少传入两个参数,但是有只传入一个参数的例外,此时参数必须为可迭代对象,返回的是可迭代对象中的最大元素。
可迭代对象,如s = '12345'
、[1,2,3,4,5]
s = '12345'print(max(s))
- 以默认的比较方式直接获得最大项
# 求序列最大值
>>> max([1,2,3,4,5])
5
- 指定比较方式func获取最大值
# 元组之间的比较默认是从左到右比较
>>> max([(1, '5'), (2, '4'), (3, '3'), (4, '2'), (5, '1')])
(5, '1')
# 我自定义的比较方式是比较第二个键值的大小
>>> max([(1, '5'), (2, '4'), (3, '3'), (4, '2'), (5, '1')], key=lambda x: x[1])
(1, '5')
s = [{'name': 'sumcet', 'age': 18},{'name': 'bbu', 'age': 11}]
a = max(s, key=lambda x: x['age'])
print(a)
# {'name': 'sumcet', 'age': 18}# 输出
# {'name': 'sumcet', 'age': 18}
⼀⾏代码⽣成逆序序列
list(range(10,-1,-1))
#输出结果为:[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
python内置函数
all()函数 all([1, 0, 3, 6])
接受⼀个迭代器,如果迭代器的 所有元素 都为真,那么返回 True,否则返回 False
python内置函数all可用于判断传入的可迭代参数 iterable 中的所有元素是否都为True,如果是则返回True,反之返回False。如果可迭代对象是空的,也会返回True
res = all([1, 0, 3, 6])
print(res)
# false
res = all([1,2,3])
print(res)
# true
print(all([True, 4, 7])) # True
print(all((True, False))) # False, 因为有一个元素不是Trueprint(all([])) # True
any()函数
接受⼀个迭代器,如果迭代器⾥ ⾄少有⼀个 元素为真,那么返回 True,否则返回 False
print(any([0,0,0,[]]))
# false
print(any([0,0,1]))
# true
bool函数
- 参数如果缺省,则返回False
- 传入布尔类型,按原值返回
- 传入字符串,空字符串返回False,否则返回True
- 传入数值时,0值返回False,否则返回True
- 传入元组,列表,字典等对象时,元素个数为空返回False, 否则返回True
- Tips:
字符串的’0’,是字符串,但不是空字符串,因此返回bool(‘0’)返回True
>>>bool()
False
>>> bool(0)
False
>>> bool(1)
True
>>> bool(2)
True
>>> issubclass(bool, int) # bool 是 int 子类
True
print(bool([0,0,0]))
# Out[1]:True
print(bool([]))
# Out[2]: False
print(bool([1,0,1]))
# Out[3]: True
面向对象
构造方法 def init(self, name)
构造方法 init() 会在类实例化时自动调用。无论构造方法还是其他方法都需要将 self 作为第一个参数,它代表类的实例。
class Cat:# 属性color = 'black'# 构造方法def __init__(self, name):self.name = name# 自定义方法def eat(self, food):self.food = foodprint(self.name, '正在吃'+food)
"__成员名"定义私有成员
面 Cat 类中定义的属性和方法都是公开的,除此之外我们还可以定义私有属性和方法,声明方式为:在属性名或方法名前加两条下划线,示例如下所示:
class Cat:__cid = '1'def __run(self):pass
需要强调一点是:外部不能访问私有属性和调用私有方法,自然 Cat.__cid 是会报错的。
内部私有成员的调用 同Java、C++通过公有成员函数调用
class Cat:__cid = '1'def __run(self, speed):print('__cid是'+self.__cid+'的猫', '以'+speed+'的速度奔跑')def run(self, speed):self.__run(speed)c.run('50迈')
创建对象 构造函数两个以上参数,不指明参数就要按顺序,想不按顺序就可以声明参数
# 创建对象
c = Cat('Tom')
class Student():def __init__(self, id, name):self.id = idself.name = name# xiaoming = Student(id='001', name='xiaoming')
xiaoming = Student('001', 'xiaoming')
xiaoming = Student(name='xiaoming', id='002')
str()函数和repr() 函数
class Student():def __init__(self, id, name):self.id = idself.name = namedef __repr__(self):return 'id = ' + self.id + ', name = ' + self.name
# xiaoming = Student(id='001', name='xiaoming')
xiaoming = Student('001', 'xiaoming')
xiaoming = Student(name='xiaoming', id='002')
print(xiaoming)
# id = 001, name = xiaoming
ascii(xiaoming)
# 'id = 001, name = xiaoming'
str()函数
str() 函数将对象转化为适于人阅读的形式。
s = 'RUNOOB'
print(str(s))
# 'RUNOOB'
dict = {'runoob': 'runoob.com', 'google': 'google.com'};
print(str(dict))
# "{'google': 'google.com', 'runoob': 'runoob.com'}"
repr() 函数
repr() 函数将对象转化为供解释器读取的形式
s = 'RUNOOB'
print(repr(s))
# "'RUNOOB'"
dict = {'runoob': 'runoob.com', 'google': 'google.com'};
print( repr(dict))
# "{'google': 'google.com', 'runoob': 'runoob.com'}"
repr() 方法可以将读取到的格式字符,比如换行符、制表符,转化为其相应的转义字符。
# coding=UTF-8s="物品\t单价\t数量\n包子\t1\t2"
print(s)
print(repr(s))
一个面向用户一个面向机器
repr(str) 输出字符串会加上引号''
str = '3.14'
print('原型:', str, '类型:', type(str), '长度:',len(str))# repr()转换
repr1= repr(str)
print('repr()转换:', repr1, '类型:', type(repr1),'长度:', len(repr1))
# str()转换
s = '3.14' #使用str()函数要注意字符串不要占用变量名str,否则报错
str1 = str(s)
print('str()转换:', str1, '类型:', type(str1),'长度:', len(str1))
print(str(3.14))
print(str('3.14'))
print(repr(3.14))
print(repr('3.14'))
输出字典的效果一致
__repr
class A(object):def __init__(self, name, age):self.name = nameself.age = agedef __repr__(self):return f'name:{self.name},age:{self.age}'my_list = [A('张三', 8), A('李四', 9)]
print(my_list)
class A(object):def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f'name:{self.name},age:{self.age}'my_list = [A('张三', 8), A('李四', 9)]
print(my_list)
运行可以发现,有没有__str__函数输出结果一致,
通过简单的对⽐,我们发现,直接输出对象,调⽤的__repr__ ⽅法。
另外还需要注意的是,如果将对象放在容器中进⾏输出,调⽤的是__repr__ ⽅法。
总结
Python 中的 str 和 repr ⽅法都是⽤来显示的,即描述对象信息的。
如果重写__str__ ⽅法,也重写了 repr ⽅法时,则默认调⽤ __repr__⽅法。
原文链接:https://blog.csdn.net/qq_41564918/article/details/109014354
格式化字符串
%-- ‘Hello %s’ % ‘Python’
当我们需要输出的内容中含有变量时,比如:Hello xxx,xxx 为变量,此时便需要一种格式化字符串的方式,Python 使用 % 格式化字符串,常用占位符如下表所示:
占位符 描述
%s 格式化字符串
%d 格式化整数
%f 格式化浮点数
以字符串为例,如下所示:
print('Hello %s' % 'Python')
输出结果:
Hello Python
format()-- ‘{0} {1}’.format(‘Hello’, ‘Python’)
我们也可以使用字符串的 format() 方法进行格式化,先看下示例:
print('{0} {1}'.format('Hello', 'Python'))
这种方式是
用传入的参数依次替换字符串内的占位符{0}、{1} ...
f-string-- f’User {username} has logged in and did an action {action}.’
f-string 除了提供强大的格式化功能之外,还是这三种格式化方式中性能最高的实现。
# %s
username = 'tom'
action = 'payment'
message = 'User %s has logged in and did an action %s.' % (username, action)
print(message)# format
username = 'tom'
action = 'payment'
message = 'User {} has logged in and did an action {}.'.format(username, action)
print(message)# f-string
username = 'tom'
action = 'payment'
message = f'User {username} has logged in and did an action {action}.'
print(message)print(f"{2 * 3}")
# 6comedian = {'name': 'Tom', 'age': 20}
print(f"The comedian is {comedian['name']}, aged {comedian['age']}.")
# The comedian is Tom, aged 20.
相比于常见的字符串格式符 %s 或 format 方法,f-strings 直接在占位符中插入变量显得更加方便,也更好理解。
方便的转换器
f-string 是当前最佳的拼接字符串的形式,拥有更强大的功能,我们再来看一下 f-string 的结构。
f ’ < text> { < expression> <optional !s, !r, or !a> } < text> … ’
其中 ‘!s’ 调用表达式上的 str(),‘!r’ 调用表达式上的 repr(),‘!a’ 调用表达式上的 ascii().
默认情况下,f-string 将使用 str(),但如果包含转换标志 !r,则可以使用 repr()
没有很懂 !r 这些转化标志 ,但f-string 应该是可以把数字转化为字符串,为什么呢
class Person:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f'str - name: {self.name}, age: {self.age}'def __repr__(self):return f'repr - name: {self.name}, age: {self.age}'p = Person('tom', 20)
print(f'{p}')
# str - name: tom, age: 20print(f'{p!r}')
# repr - name: tom, age: 20
# 转换标志 !a
a = 'a string'
print(f'{a!a}')
# "'a string'"
# 等价于
print(f'{repr(a)}')
# "'a string'"
class Student():def __init__(self, id, name):self.id = idself.name = namedef __repr__(self):return 'id = ' + self.id + ', name = ' + self.name
# xiaoming = Student(id='001', name='xiaoming')
xiaoming = Student('001', 'xiaoming')
xiaoming = Student(name='xiaoming', id='002')
print(xiaoming)
class A(object):def __init__(self, name, age):self.name = nameself.age = agedef __repr__(self):return f'name:{self.name},age:{self.age}'# def __repr__(self):# return 'name = ' + self.name + ', age = ' + self.agemy_list = A('张三', 8)
print(my_list)
my_list = [A('张三', 8), A('李四', 9)]
print(my_list)
def __repr__(self):return f'name:{self.name},age:{self.age}'# def __repr__(self):# return 'name = ' + self.name + ', age = ' + self.age
用下面这种输出字符串,只能接收字符串拼接,即需要输出的参数都是字符串类型,否则报错,
但用上面这种,f-string大概是可以将int类型转化位字符串类型
相关文章:

python基础运用例子
python基础运用例子 1、⼀⾏代码交换 a , b :a, b b, a2、⼀⾏代码反转列表 l[::-1]3、合并两个字典 res {**dict1, **dict2}**操作符合并两个字典for循环合并dict(a, **b) 的方式dict(a.items() b.items()) 的方式dict.update(other_dict) 的方式 4、⼀⾏代码列…...

k8s基本概念
一、什么是Kubernetes二:Kubernetes部署方式的演变三、为什么要用K8S四、K8S的特性五、Kubernetes 集群架构与组件5.1 Master 组件① Kube-apiserver② Kube-controller-manager③ Kube-scheduler④ AUTH 认证模块 5.2 配置存储中心5.3 Node 组件① Kubelet② Kube-…...
Python exp() 函数
描述 exp() 方法返回x的指数,ex。 语法 以下是 exp() 方法的语法: import mathmath.exp( x ) 注意:exp()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。 参数 x -- 数值表达式。 返回值 返回x的指数,ex。 实例 以下展…...
Day 34 贪心算法 part03 : 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
134. 加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas…...

气象站的构成及功能应用
气象站是一种用于观测、记录和报告天气数据的设备。它是由数据采集系统、通讯系统、供电系统和立杆支架构成。 一、气象站的构成: 数据采集系统:用于测量气温、湿度、风速、风向、气压、降雨量、雪深等气象参数。 通讯系统:收集和处理传感…...

Qt中布局管理使用总结
目录 1. 五大布局 1.1 QVBoxLayout垂直布局 1.2 QHBoxLayout水平布局 1.3 QGridLayout网格布局 1.4 QFormLayout表单布局 1.5 QStackedLayout分组布局 1.6 五大布局综合应用 2. 分割窗口 3. 滚动区域 4. 停靠区域 1. 五大布局 1.1 QVBoxLayout垂直布局 #include <…...

(位运算) 剑指 Offer 15. 二进制中1的个数 ——【Leetcode每日一题】
❓ 剑指 Offer 15. 二进制中1的个数 难度:简单 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。 提示ÿ…...

基于SSM的新能源汽车在线租赁系统
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
CTF 代码审计之绕过过滤的空白字符
题目 <?php header("Content-Type:text/html;charsetutf-8"); highlight_file(02kbzf.php);//引入名为 flag2.php 的文件。 include(f . lag2 . .php);//初始化变量 $info 和 $req。 $info ""; $req [];//读取文件 flag2.php 的内容到变…...

【Vue】 Vue3 安装说明,适合小白新手
1、独立版本 我们可以在 Vue.js 的官网上直接下载最新版本, 并用 下载 Vue.js https://unpkg.com/vuenext 2、使用 CDN 方法 以下推荐国外比较稳定的两个 CDN,国内还没发现哪一家比较好,目前还是建议下载到本地。 Staticfile CDN(国内&am…...

电脑提示“系统找不到指定的文件”怎么办?
“系统找不到指定的文件”对于Windows用户来说是一个很常见的错误,尤其是Win10用户,经常会遇到Win10提示找不到指定文件。在此错误后面有时还会出现错误代码:0x80070002,但是,故障类型或代码在不同的操作系统规范上是不…...

向openssl中添加一个最简单的算法
文章目录 一、尝试在sha.c中添加新的函数二、添加自定义算法2.1 添加对应文件2.2 相关配置2.3 编译运行 一、尝试在sha.c中添加新的函数 在尝试添加新算法前,我先尝试在原有的旧算法中添加一个新函数,看是否能被编译并生成对应的动态链接库。 关于open…...
自己公司开发的ERP系统,怎么对接京东,淘宝等这些电商平台?
得益于互联网基建的成熟及快速发展的电子商贸经济,我国线上零售市场快速增长,2022年全国线上零售额达到13.79万亿元,占社会消费品零售总额的比重为27.2%,也就是说每卖出三件零售商品,就有一件是从线上销售。中大型零售…...

联想集团财报不及华尔街预期,财务业绩恐将继续恶化
来源:猛兽财经 作者:猛兽财经 华尔街对联想集团财报的预测 在联想集团(00992)公布2024财年第一季度财务业绩之前,华尔街分析师就曾预测,联想集团的收入和利润将实现强劲增长。 具体而言,根据S&…...
计网基础面试题
浏览器输入网址之后发生什么 1,DNS解析过程 2,三次握手 3,TLS通信 4,发送数据 5,四次挥手 TCP三次握手和四次挥手 两台计算机通信的过程 局域网通信———交换机——MAC地址 广域网通信———路由器——IP地址 网…...

设置Linux CentOS7桥接模式连网
在虚拟机上安装centos7系统后,首要任务就是设置网络。 我们在文章《设置linux centos7连接网络》中讨论了如何设置NAT模式连网。本文讨论如何在设置好NAT模式后,调换为桥接模式。 仍采用图形化方式设置方法。 一、查看物理机网络 把虚拟机设置为桥接…...

Mysql底层数据结构为什么选择B+树
索引底层采用什么数据结构,为什么使用B树而不是其他数据结构: (1)如果采用二叉树:使用递增字段作为索引时,二叉树会退化成链表,查找效率太低 (2)如果采用红黑树…...
R语言列操作函数
目录 一.dplyr包 1.新增变量和变量重新赋值 2.筛选行 3.筛选列 4.分组计算 5.管道操作符 6.连接数据框 二.tidyr 1.列的分裂 2.列的合并 3.宽数据转长数据 4.长数据转宽数据 一.dplyr包 1.新增变量和变量重新赋值 > head(ToothGrowth)len supp dose 1 4.2 …...

【Unity】VS Code 没有自动补全 MonoBehaviour 的方法
正常来说,在VS Code 输入类似 OnTriggerEnter2D等方法名时,VS Code会根据已经输入的前缀自动提示相关方法。 在不正常的情况下,根据StackOverFlow上面的回答,依次试过了 安装 .NET SDK安装 .NET Framework Dev PackVS Code安装 …...

计算机竞赛 基于深度学习的人脸性别年龄识别 - 图像识别 opencv
文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...