当前位置: 首页 > news >正文

Day 04 python学习笔记

Python数据容器

元组

元组的声明
变量名称=(元素1,元素2,元素3,元素4…….)   (元素类型可以不同)

eg:
tuple_01 = ("hello", 1, 2,-20,[11,22,33])
print(type(tuple_01))结果:
<class 'tuple'>

元组的定义

定义空元组
变量名称=()
变量名称=tuple()

元组的嵌套

((),())
下标索引取出元素====与列表相同

元组的强制转换

typle()  强制转换

元组与列表的区别:

  1. 符号:元组( )         列表[ ]
  2. 元组的元素一旦定义,不可更改     而列表可以   (最大的区别)
eg:
tuple_01[1] = "l love you"结果:
Traceback (most recent call last):File "D:\pycharm\main.py", line 5, in <module>tuple_01[1] = "l love you"
TypeError: 'tuple' object does not support item assignment因为元组的元素一旦定义,不可更改

但是:元组里列表元素里的值可以改变

eg:
tuple_01 = ("hello", 1, 2,20,[11,22,33])
print(tuple_01)
tuple_01[-1][0] = "l love you"
print(tuple_01)结果:
('hello', 1, 2, 20, [11, 22, 33])
('hello', 1, 2, 20, ['l love you', 22, 33])

元组切片

元组的切片和字符串、列表的切片是一样的

eg:
tuple_01 = ("hello", 1, 2,-20,[11,22,33])
print(tuple_01[1:4])   结果:
(1, 2, 20)

推荐网站:python在线演示  Python compiler - visualize, debug, get AI help from ChatGPT

这个可以让你清晰的观看到python的运行过程   (这是python官方网站,用图清晰的表示代码的运行顺序)

元组、列表、字符串公用的方法

len ()           求元组的长度(与字符串、列表用法相同)

eg:
tuple_01 = ("hello", 1, 2,20,[11,22,33])
len(tuple_01)
print(len(tuple_01))结果:
5

max (列表/字符串/元组名)        求最大 值 (若是字符、字母按照ASCII码表进行比较)

min (列表/字符串/元组名)         求最小值(若是字符、字母按照ASCII码表进行比较)

元组的注意事项:

元组的特殊写法:t = 1,  2, 3  也是元组

eg:
t = (1, 2, 3)
print(type(t))
t1 = 1, 2, 3
print(type(t1))结果:
<class 'tuple'>
<class 'tuple'>

单个数字  t = (2)     这是整型,因为解释器认为 () 是运算符

解决方法  t = (2, )   这即是元组

结论:只有一个元素时,元组后面必须带 ,

eg:
t1 = (2)
print(type(t1))
t2 = (2, )
print(type(t2))结果:
<class 'int'>
<class 'tuple'>

元组的乘法

eg:
>>> t=(22,)
>>> t*10
(22, 22, 22, 22, 22, 22, 22, 22, 22, 22)
>>>

元组的方法:

index

元组.index(元素)        查询某元素下标

eg:
>>> t=(75,23,22,12,1)
>>> t
(75, 23, 22, 12, 1)
>>> t.index(22)
2          #索引下标为2时为22
>>> t.index(222)    #没有时报错
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple
>>>

count

元组.count(元素)        统计某元素在列表中的数量

eg:
>>> t1=(1,2,3,4,2,2,2,3)
>>> t1
(1, 2, 3, 4, 2, 2, 2, 3)
>>> t1.count(2)
4
>>>

因为元组不能更改,所以他的方法只有两种

并且看过我Day 03学习笔记的应该了解,这两种方法在列表里也有

集合

不支持元素重复,内部元素无序   (可用于去重)
变量名称={元素,元素,元素..........}   
变量名称=set()  (创建空集合的唯一办法)

注意:{ 元素 }    { }内至少有一个元素,此时才是集合,无元素为空集合

set_01={'gouxin','zhangsan','gouxin','zhangsan','gouxin','zhangsan'}
print(set_01)



 

eg:
set_01 = set("12345")  #名称尽量不要起set,这是关键字,set()函数,
print(set_01)          #大部分解释器会报错
set_02 = set("123451111111122223333444")
print(set_02)
set_03 = set([1,2,3,4])  #可能解释器会爆红,这是不推荐,但可以
print(set_03)
set_04 = set([1,2,3,4,1,1,1,1,2,2,2])
print(set_04)
set_05 = set((10,20,30,1,1,1))
print(set_05)d = {"姓名":"zs","年龄":18
}                #简单的字典形式,后面会详细讲
set_06 = set(d)  #转换为集合
print(set_06)结果:
{'2', '3', '4', '1', '5'}  #无序的,你第二遍运行可能就会不同
{'2', '3', '4', '1', '5'}  #去除重复的元素
{1, 2, 3, 4}         #按大小顺序给我们显示出来
{1, 2, 3, 4}         #也会给我们去重
{1, 10, 20, 30}      #按大小顺序给我们显示出来,同时去重
{'年龄', '姓名'}      #会把字典里的键名放在集合里

变量名称 = set( 元素 )    元素数据类型只能是字符串、列表、元组、字典

变量名称 = { 元素}   元素数据类型只能是数字、字符串、元组

集合的方法

常用操作
不支持下标索引访问(因为集合本身是无序的)
允许修改

集合.add(元素)将指定的元素添加到集合内
1集合.update(2集合)将两集合合并,合并到1集合里(2集合不变)
集合.remove(元素)将指定的元素,从集合中移除
集合.pop()随机取出一个元素
集合.discard(元素)删除指定元素,不存在不做任何操作
集合一.intersection(集合二)集合一与集合二的交集,原集合不变
集合一.union(集合二)两个集合进行合并 ,原集合不变
集合一.difference(集合二)差集,取出集合一有而集合二没有的,原集合不改变

集合一.difference_update(集合二)
消除差集:在集合一内,删除和集合二相同的元素 集合一改变,集合二不变
集合.clear()清空集合
len(集合)统计集合中元素的数量
集合.copy()       拷贝集合
for in集合的遍历

add
集合.add(元素)        将指定的元素添加到集合内
eg:
set_01 = {1,2,3,"l love"}
print(set_01)
set_01.add("you")   
print(set_01)结果:
{1, 2, 3, 'l love'}
{'you', 1, 2, 3, 'l love'}    #因为集合本身是无序的

update

1集合.update(2集合)        将两集合合并,合并到1集合里(2集合不变)

eg:
print(set_01)
set_02 =(4,5,6)
print(set_02)
set_01.update(set_02)
print(set_01)
print(set_02)结果:
{1, 2, 3, 'l love', 'you'}
(4, 5, 6)
{1, 2, 3, 'l love', 4, 5, 6, 'you'}  #集合的排列是随机排列的
(4, 5, 6)

remove

集合.remove(元素)        将指定的元素,从集合中移除

eg:
print(set_01)
set_01.remove(4)
print(set_01)
set_01.remove(4)结果:
{1, 2, 3, 4, 5, 6, 'you', 'l love'}
{1, 2, 3, 5, 6, 'you', 'l love'}
Traceback (most recent call last):     #4不存在,报错File "D:\pycharm\main.py", line 39, in <module>set_01.remove(4)
KeyError: 4

pop

集合.pop()        随机取出一个元素

eg:
print(set_01)
set_01.pop()
print(set_01)结果:
{1, 2, 3, 4, 5, 6, 'l love', 'you'}
{2, 3, 4, 5, 6, 'l love', 'you'}

discard

集合.discard(元素)        删除指定元素,不存在,则不做任何操作

eg:
print(set_01)
set_01.discard("you")
print(set_01)
set_01.discard("you")    #不存在,也不会报错
print(set_01)结果:
{1, 2, 3, 4, 5, 6, 'you', 'l love'}
{1, 2, 3, 4, 5, 6, 'l love'}
{1, 2, 3, 4, 5, 6, 'l love'}    #不存在,则不做任何操作

交集和并集

&   交集          求相交的(共有的)

|    并集          求合并的(两集合合并,并且去重)

eg:
set_01 = {1,2,3,5,6,"l love"}
set_02 = {4,5,6,"l love","you"}
print(set_01 & set_02)    #求相交的(共有的)
print(set_01 | set_02)    #求合并的(两集合合并,并且去重)
print(set_01)
print(set_02)结果:
{'l love', 5, 6}   
{1, 2, 3, 'you', 5, 6, 4, 'l love'}
{1, 2, 3, 5, 6, 'l love'}    #不会改变集合本身
{'you', 4, 5, 6, 'l love'}

intersection

集合一.intersection(集合二)        求集合一与集合二的交集

eg:
print(set_01)
print(set_02)
set_01.intersection(set_02)  #与&的效果相同
print(set_01.intersection(set_02))
print(set_01)    #不会改变集合本身
print(set_02)结果:
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 6, 'l love', 'you'}
{'l love', 5, 6}
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 6, 'l love', 'you'}

union

集合一.union(集合二)      两个集合进行合并 ,原集合不变  

eg:
print(set_01)
print(set_02)
set_01.union(set_02)
print(set_01.union(set_02))
print(set_01)      #不会改变集合本身
print(set_02)结果:
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 'l love', 6, 'you'}
{1, 2, 3, 4, 5, 6, 'l love', 'you'}  #与 | 的效果相同,会去重
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 'l love', 6, 'you'}

difference

集合一.difference(集合二)       差集,取出集合一有而集合二没有的,原集合不改变 

eg:
print(set_01)
print(set_02)
set_01.difference(set_02)
print(set_01.difference(set_02))
print(set_01)
print(set_02)结果:
{1, 2, 3, 'l love', 5, 6}
{'l love', 4, 5, 6, 'you'}
{1, 2, 3}        #取出合一有而集合二没有的,原集合不改变
{1, 2, 3, 'l love', 5, 6}
{'l love', 4, 5, 6, 'you'}

difference_update

集合一.difference_update(集合二)        消除差集:在集合一内,删除和集合二相同的元素 集合一改变,集合二不变

eg:
print(set_01)
print(set_02)
set_01.difference_update(set_02)   
print(set_01.difference_update(set_02))
print(set_01)
print(set_02)结果:
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 6, 'l love', 'you'}
None         #因为已经进行过一次了,使集合一已经发生改变,无操作返回None
{1, 2, 3}    #集合一改变
{4, 5, 6, 'l love', 'you'}   #集合二不变

clear

集合.clear()        清空集合

eg:
print(set_01)
print(set_02)
set_01.clear()
print(set_01)
print(set_01.clear())
print(set_01)
print(set_02)结果:
{1, 2, 3, 5, 6, 'l love'}
{'you', 4, 5, 6, 'l love'}
set()    #清空集合后返回一个set()函数,表示空集合
None     #空集合无可清空,即返回None
set()    #返回一个set()函数,表示空集合
{'you', 4, 5, 6, 'l love'}

len

len(集合)        集合中元素的数量

eg:
print(set_01)
len(set_01)     #统计集合中元素的个数,不会直接打印
print(len(set_01))   
print(set_01)结果:
{1, 2, 3, 'l love', 5, 6}
6
{1, 2, 3, 'l love', 5, 6}    #不改变集合本身

copy

集合.copy()        拷贝集合

eg:
print(set_01)
set_01.copy()   #拷贝集合的内容,不打印
print(set_01.copy())
print(type(set_01.copy()))    
print(set_01)结果:
{1, 2, 3, 'l love', 5, 6}
{1, 2, 3, 'l love', 5, 6}
<class 'set'>     #类型还是集合
{1, 2, 3, 'l love', 5, 6}   #不改变集合本身

扩展:

在python内置解释器里,对于上述操作显示不需要了,可以用于清屏,之前的操作还是存在的

>>>import os
>>>os.system("cls")

字典

字典的定义:

字典:键值对的形式存在 (key(键):value(值))     

关键字(即键)不可变           不重复(重复会爆红)        无下标索引
按照key找到value
键 可以为任意不可变数据(元组,数字,字符串)

eg:
my_dict={
key:value, #键值对
key:value,
key:value
}

创建空字典

my_dict={ }
my_dict=dict()

eg:
dict_00 = {}     #注意:这是字典不是集合
print(type(dict_01))
print(dict_00)dict_01 = {"uname":"zhangsan",   #键是字符串(最常见)"age":18,1:18,                 #键是数字(1,2,3):18            #键是元组
}
print(type(dict_01))
print(dict_01)dict_02 = dict()
print(type(dict_02))
print(dict_02)dict_03 = dict((["uname","zhangsan"],["age",18]))  #赋值方式
print(type(dict_03))
print(dict_03)结果:
<class 'dict'>
{}  
<class 'dict'>     #类型字典
{'uname': 'zhangsan', 'age': 18, 1: 18, (1, 2, 3): 18}   #字典的内容
<class 'dict'>
{}                 #空字典
<class 'dict'>
{'uname': 'zhangsan', 'age': 18}     

字典的方法

字典[key]=value新增元素
del 字典[key]删除元素
字典[key]=value更新元素
字典[key]查询元素(值)
字典.get(key)查询元素(值)
字典.pop(key)删除元素
字典.clear()清空元素
字典.keys()获取全部key
1、for key in keys: 2、for key in 字典遍历字典
len()统计字典的元素数量

字典[key]=value        新增元素

eg:
dict_01 = {"姓名":"张三","年龄":18
}
print(dict_01)dict_01["技能"] = "python"
print(dict_01)结果:
{'姓名': '张三', '年龄': 18}
{'姓名': '张三', '年龄': 18, '技能': 'python'}

删(del关键字)

del 字典[key]                删除元素

eg:
print(dict_01)
del dict_01["姓名"]
print(dict_01)结果:
{'姓名': '张三', '年龄': 18, '技能': 'python'}
{'年龄': 18, '技能': 'python'}

改(重新赋值)

字典[key]=value          更新元素

eg:
print(dict_01)
dict_01["技能"] = "安全渗透"
print(dict_01)结果:
{'年龄': 18, '技能': 'python'}
{'年龄': 18, '技能': '安全渗透'}

字典[key]             查询元素(值)  

eg:
print(dict_01)
print(dict_01["技能"])结果:
{'年龄': 18, '技能': '安全渗透'}
安全渗透

查(get函数)

字典.get(key)               查询元素(值)

get函数用于在字典中获取指定键的值,可以设置默认返回值,在找的键不存在时,就会将默认值返回出来

eg:
print(dict_01)
print(dict_01.get("技能"))
print(dict_01.get("姓名"))
print(dict_01.get("姓名","l love you"))   #修改默认值结果:
{'年龄': 18, '技能': '安全渗透'}
安全渗透
None       #若获取的东西没有时,返回None(表示无)
l love you    #将默认值修改





字典的嵌套

my_dict={
key:{
        key:value, #键值对
        key:value,
        key:value
    }

}

eg:
my_dict={
"王力宏":{"语文":77,"数学":66,"英语":33},
"周杰伦":{"语文":88,"数学":86,"英语":55},
"林俊杰":{"语文":99,"数学":96,"英语":66}
}
print(my_dict["王力宏"]["语文"])结果:
77

练习:

相关文章:

Day 04 python学习笔记

Python数据容器 元组 元组的声明 变量名称&#xff08;元素1&#xff0c;元素2&#xff0c;元素3&#xff0c;元素4…….&#xff09; &#xff08;元素类型可以不同&#xff09; eg: tuple_01 ("hello", 1, 2,-20,[11,22,33]) print(type(tuple_01))结果&#x…...

Moonbeam Ignite强势回归

参与Moonbeam上最新的流动性计划 还记得新一轮的流动性激励计划吗&#xff1f;Moonbeam Ignite社区活动带着超过300万枚GLMR奖励来啦&#xff01;体验新项目&#xff0c;顺便薅一把GLMR羊毛。 本次Moonbeam Ignite活动的参与项目均为第二批Moonbeam生态系统Grant资助提案中获…...

【改造后序遍历算法】95. 不同的二叉搜索树 II

95. 不同的二叉搜索树 II 解题思路 遍历每一个节点查看以k为根节点的二叉搜索树储存所有左子树的根节点储存所有右子树的根节点将左子树和右子树组装起来 将根节点储存在向量中 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeN…...

栈的基本操作(数据结构)

顺序栈的基本操作 #include <stdlib.h> #include <iostream> #include <stdio.h> #define MaxSize 10typedef struct{int data[MaxSize];int top; }SqStack;//初始化栈 void InitStack(SqStack &S){S.top -1; } //判断栈空 bool StackEmpty(SqStack S)…...

D. Jellyfish and Mex Codeforces Round 901 (Div. 2)

Problem - D - Codeforces 题目大意&#xff1a;有一个n个数的数组a&#xff0c;数m初始为0&#xff0c;每次操作可以删除任意一个数&#xff0c;然后m加上那个数&#xff0c;求n次操作和m的最小值 1<n<5000&#xff1b;0<a[i]<1e9 思路&#xff1a;可以发现&am…...

操作系统内存管理相关

1. 虚拟内存 1.1 什么是虚拟内存 虚拟内存是计算机系统内存管理的一种技术&#xff0c;我们可以手动设置自己电脑的虚拟内存。不要单纯认为虚拟内存只是“使用硬盘空间来扩展内存“的技术。虚拟内存的重要意义是它定义了一个连续的虚拟地址空间&#xff0c;并且 把内存扩展到硬…...

Sui流动性质押黑客松获胜者公布,助力资产再流通

Sui流动质押黑客松于日前结束Demo Day演示&#xff0c;其中有五个团队获奖、六个团队荣誉提名&#xff0c;共有超过30个项目获得参赛资格。此外&#xff0c;有两个团队赢得了Sui上DeFi协议提供的赏金。 本次黑客松的目的是挖掘并奖励将流动质押功能集成到其apps和产品中的开发…...

为什么在使用PageHelper插件时,指定的每页记录数大小失效?显示所有的记录数

1.问题现象&#xff1a; 这里指定每页显示5条&#xff0c;却把所有的记录数都显示出来了 2.分析&#xff1a; 之前是可以的&#xff0c;然后发现&#xff1a;PageHelper.startPage(pageNum,pageSize) 和执行sql的语句 顺序颠倒了&#xff0c;然后就出错了。 3.验证&#xf…...

XML文档基础

什么是XML XML (eXtensible Markup Language&#xff0c;可扩展标记语言) 是一种用于存储和传输数据的文本文件格式。用户可以按照XML规则自定义标记&#xff0c;XML 的设计目标是传输数据&#xff0c;而不是显示数据&#xff0c;因此它是一种通用的标记语言&#xff0c;可用于…...

软考知识汇总-软件工程

软件工程 1 能力成熟度模型&#xff08;CMM&#xff09;2 能力成熟度模型集成&#xff08;CMMI&#xff09;2.1阶段式模型2.2 连续式模型 3 软件过程模型 1 能力成熟度模型&#xff08;CMM&#xff09; 将软件工程成熟度分为5个级别 初始级&#xff1a;杂乱无章&#xff0c;很…...

力扣:119. 杨辉三角 II(Python3)

题目&#xff1a; 给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09…...

指针笔试题(带解析版)

题目2&#xff1a; struct MyStruct {int num;char* pcname;short sdate;char cha[2];short sba[4]; }*p; //结构体大小为32字节 //p0x100000 int main() {p 0x100000;printf("%p\n", p 0x1);//p&#xff1a;结构体指针&#xff0c;1下一个结构体指针&#xff0c;…...

服务器搭建(TCP套接字)-libevent版(服务端)

Libevent 是一个开源的事件驱动库&#xff0c;用于开发高性能、并发的网络应用程序。它提供了跨平台的事件处理和网络编程功能&#xff0c;具有高性能、可扩展性和可移植性。下面详细讲解 Libevent 的主要组成部分和使用方法。 一、事件基础结构&#xff08;event_base&#x…...

斐波那契模型系列【动态规划】

动态规划步骤 1、状态表示 是什么&#xff1a;dp表&#xff08;可能是一维或二维数组&#xff09;里的值所表示的含义。 怎么来&#xff1a; 1、题目要求 2、经验题目要求 3、发现重复子问题 2、状态转移方程 dp[i]... 3、初始化 保证填表不越界 4、填表顺序 5、返回值 写代码时…...

【Java】微服务——Nacos注册中心

目录 1.Nacos快速入门1.1.服务注册到nacos1&#xff09;引入依赖2&#xff09;配置nacos地址3&#xff09;重启 2.服务分级存储模型2.1.给user-service配置集群2.2.同集群优先的负载均衡 3.权重配置4.环境隔离4.1.创建namespace4.2.给微服务配置namespace 5.Nacos与Eureka的区别…...

Redis Cluster Gossip Protocol: PING, PONG, MEET

返回目录 PING / PONG / MEET 的发送 过程 计算freshNodes。freshNodes表示在消息中能携带的&#xff0c;在cluster节点字典中的节点总数&#xff0c;但需要减去myself和对端节点&#xff0c;因为myself的信息会存储在消息头中。实际上&#xff0c;并非所有在cluster节点字典…...

httpserver 下载服务器demo 以及libevent版本的 httpserver

实现效果如下&#xff1a; 图片可以直接显示 cpp h 这些可以直接显示 其他的 则是提示是否要下载 单线程 还有bug 代码如下 先放上来 #include "httpserver.h" #include "stdio.h" #include <stdlib.h> #include <arpa/inet.h> #include…...

构建强大的RESTful API:@RestController与@Controller的对比与应用

构建强大的RESTful API&#xff1a;RestController与Controller的对比与应用 前言什么是RESTful APIRestController&#xff0c;Controller&#xff0c;ResponseBody1. Controller注解&#xff1a;2. RestController注解&#xff1a;3. ResponseBody注解&#xff1a; 示例非thy…...

【Java-LangChain:使用 ChatGPT API 搭建系统-10】评估(下)-当不存在一个简单的正确答案时

第十章&#xff0c;评估&#xff08;下&#xff09;-当不存在一个简单的正确答案时 在上一章中&#xff0c;了解了如何评估 LLM 模型在 有明确正确答案 的情况下的输出&#xff0c;我们可以编写一个函数来判断 LLM 输出是否正确地分类并列出产品。 然而&#xff0c;如果 LLM …...

【微服务的集成测试】python实现-附ChatGPT解析

1.题目 微服务的集成测试 知识点:深搜 时间限制: 1s 空间限制: 256MB 限定语言:不限 题目描述: 现在有n个容器服务,服务的启动可能有一定的依赖性 (有些服务启动没有依赖)其次服务自身启动加载会消耗一些时间。 给你一个 nxn 的二维矩阵 useTime,其中 useTime[i][i]=10 表示…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...