简单快速的上手python
前言
python是一门可以快速上手的语言,原因是它语法简单,api容易使用自由灵活
当我们需要安装任何的三方库时,只需要执行 pip install XX
之后在代码里面import xxx就可以使用python啦。
并且python的代码自由灵活,使用缩进区分作用域,提供了许多灵活的方式解决问题。
在其他高级语言中,如果我们想要解析一段json,一定会想到先封装好一个实体类,但在python中可以不必这么做。我们可以用更灵活的方式,不额外定义任何数据结构去解决问题。
如果不是初次接触编程语言,只需要简单的了解语法,就可以直接开始编写python的代码,如果写程序中遇到的不熟悉的框架内容,再去了解相关的框架如何实现即可
python的开发环境
使用vscode,安装python插件就可以快速的开始python的编译开发
python的基本语法简述
1.变量 通过在变量名称后接:声明类型
a:str
2.条件语句,类似于下面的手敲代码,python的条件判断也是使用缩进来区分作用域
if a< 100:
print("a<100")
elif a>50:
print("a>50")
else:
pritnt(”超出范围“)
如果我们需要在一个条件中放另一个条件
只需要用下面的结构就行了
if a<100:
if a>50:
else:
如果我们需要一个否定的条件只需要写
if not a<100:
3.for循环语句,如果data是一个list
for i in data:
如果需要拿到list的索引:
for index,item in enumerate(data):
4.常用数据结构
map={}
map['A'] = 100
list= []
list.append(map)
开始开发
只需要了解上面的一些简单的语法,就可以开始开发实际的功能,下面是两个实际的开发例子,我会简述开发的过程
1.json格式的转换代码开发
原始数据json是一段json字符串,他包含中国所有城市地区的信息,要做的事情是从这个字符串中拿到所有省会城市以及直辖市的名称并且给他们添加编号,保存成一个新的json
这里需要用到json这个三方库,因此首先在命令行执行
pip install simplejson
json的原始数据是这样的结构,
关键信息如下
[{"name":"北京市",city:["name":"直辖市"]},{"name":"河北省",city:[{"name":"石家庄市"},{}..]}]
如果是直辖市,就直接获取名字,如果是省/区/州,需要拿到二级的city的第一个城市的名称
下面是具体的数据的部分内容
[{"name": "北京市","code": "110000","city": [{"name": "市辖区","code": "110100","area": [{"name": "东城区","code": "110101"},{"name": "西城区","code": "110102"},{"name": "朝阳区","code": "110105"},{"name": "丰台区","code": "110106"},{"name": "石景山区","code": "110107"},{"name": "海淀区","code": "110108"},{"name": "门头沟区","code": "110109"},{"name": "房山区","code": "110111"},{"name": "通州区","code": "110112"},{"name": "顺义区","code": "110113"},{"name": "昌平区","code": "110114"},{"name": "大兴区","code": "110115"},{"name": "怀柔区","code": "110116"},{"name": "平谷区","code": "110117"},{"name": "密云区","code": "110118"},{"name": "延庆区","code": "110119"}]}]},{"name": "天津市","code": "120000","city": [{"name": "市辖区","code": "120100","area": [{"name": "和平区","code": "120101"},{"name": "河东区","code": "120102"},{"name": "河西区","code": "120103"},{"name": "南开区","code": "120104"},{"name": "河北区","code": "120105"},{"name": "红桥区","code": "120106"},{"name": "东丽区","code": "120110"},{"name": "西青区","code": "120111"},{"name": "津南区","code": "120112"},{"name": "北辰区","code": "120113"},{"name": "武清区","code": "120114"},{"name": "宝坻区","code": "120115"},{"name": "滨海新区","code": "120116"},{"name": "宁河区","code": "120117"},{"name": "静海区","code": "120118"},{"name": "蓟州区","code": "120119"}]}]},{"name": "河北省","code": "130000","city": [{"name": "石家庄市","code": "130100","area": [{"name": "市辖区","code": "130101"},{"name": "长安区","code": "130102"},{"name": "桥西区","code": "130104"},{"name": "新华区","code": "130105"},{"name": "井陉矿区","code": "130107"},{"name": "裕华区","code": "130108"},{"name": "藁城区","code": "130109"},{"name": "鹿泉区","code": "130110"},{"name": "栾城区","code": "130111"},{"name": "井陉县","code": "130121"},{"name": "正定县","code": "130123"},{"name": "行唐县","code": "130125"},{"name": "灵寿县","code": "130126"},{"name": "高邑县","code": "130127"},{"name": "深泽县","code": "130128"},{"name": "赞皇县","code": "130129"},{"name": "无极县","code": "130130"},{"name": "平山县","code": "130131"},{"name": "元氏县","code": "130132"},{"name": "赵县","code": "130133"},{"name": "晋州市","code": "130183"},{"name": "新乐市","code": "130184"}]},{"name": "唐山市","code": "130200","area": [{"name": "市辖区","code": "130201"},{"name": "路南区","code": "130202"},{"name": "路北区","code": "130203"},{"name": "古冶区","code": "130204"},{"name": "开平区","code": "130205"},{"name": "丰南区","code": "130207"},{"name": "丰润区","code": "130208"},{"name": "曹妃甸区","code": "130209"},{"name": "滦县","code": "130223"},{"name": "滦南县","code": "130224"},{"name": "乐亭县","code": "130225"},{"name": "迁西县","code": "130227"},{"name": "玉田县","code": "130229"},{"name": "遵化市","code": "130281"},{"name": "迁安市","code": "130283"}]},{"name": "秦皇岛市","code": "130300","area": [{"name": "市辖区","code": "130301"},{"name": "海港区","code": "130302"},{"name": "山海关区","code": "130303"},{"name": "北戴河区","code": "130304"},{"name": "抚宁区","code": "130306"},{"name": "青龙满族自治县","code": "130321"},{"name": "昌黎县","code": "130322"},{"name": "卢龙县","code": "130324"}]},
定义一个json解析相关内容的python文件,我制定了几个参数 path是json文件的路径,ofname:是输出文件的名称,save用来控制是输出到本地
这个的with open(path,encoding="utf-8")是使用utf-8编码读取文件,
with是python的关键字,他的作用如下( 百度内容):
with
关键字主要用于以下场景:
- 文件操作:在处理文件时,使用
with
可以自动管理文件的打开和关闭,即使在发生异常时也能确保文件正确关闭12。 - 异常处理:
with
语句封装了try…except…finally
的编码范式,简化了异常处理流程23。 - 资源管理:适用于任何实现了上下文管理协议的对象,如数据库连接、网络连接等12。
而open是python的标准api他用于打开文件
所以上诉语句是打开本地文件的意思。然后for循环是把以及的name先取出,判断是否是直辖市,入宫是直接存储到 [{}] list嵌套map的数据结构中。(index,并没有用到,因为需要和非直辖市的省会(二级数据)一起添加编码,所以用了单独的count来当作序号)。最后一句判断如果save的值是True。就输出到本地。
编码到本地的代码intent=4是表示增加缩进,ensure_ascii=False ,是指不以ascii码保存,不指定,默认会保存成ascii码。 由于是utf-8编解码没什么问题也不会乱码,但就是json文件无法直接查看文字内容会以unicode编码的格式显示 /u...
import simplejson as json
def parseJson(path:str,ofname:str,save:bool=False):with open(path,encoding="utf-8") as json_file:data = json.load(json_file,encoding="utf-8")count = 0list =[]for index,item in enumerate(data):name:str=item['name']if(name.endswith("市")):print(count,item['name'])map={}map['num']=countmap['name']=item['name']list.append(map)count=count+1elif 'city' in item:# for city in item['city']:# print(index,count,city['name'])# count=count+1print(count,item['city'][0]['name'])map={}map['num']=countmap['name']=item['city'][0]['name']list.append(map)count=count+1if save: encodeJson(list,ofname)def parseCity(path:str):with open(path,encoding="utf-8") as json_file:data=json.load(json_file,encoding="utf-8")for item in data:print(item['num'],item['name'])def printJson(path:str):with open(path,encoding="utf-8") as json_file:data = json.load(json_file,encoding="utf-8")print(data)def encodeJson(list:list,filename:str):with open(filename, 'w', encoding='utf-8') as file:json.dump(list, file,encoding="utf-8", ensure_ascii=False, indent=4)
然后我们在另一个python文件中使用这个封装好的json处理小工具
import parsejson
parsejson.parseJson("cityjson.json",ofname="json-test.json",save=True)
parsejson.printJson("json-test.json")
parsejson.parseCity("json-test.json")
输出结果如下:
2.解析网络数据
这里是一个简单的尝试,将任天堂官网的图片下载到本地,需要用到的库 request,os,re
requests是用于网络请求的,re是正则表达式,os是用于文件管理
这个 funGetHtmlPage是从指定网址读取网页并下载到本地,如果本地已经有这个网页文件,就直接从本地文件读取
主要的应用就是os库,os.mkdia就是创建目录,os.path.join就是给path增加一层目录或者文件
os.curdir是os当前指向的目录,img_dir = os.path.join("D:/python/", dir),指定为 D:/python/目录下的子目录的意思
获取网页内容写起来非常简单,就下面两行就拿到了response
rep=req.get(path)
print(rep.text)
import requests as req
import os
import re
import utildef funGetHtmlPage(dir:str,path:str,name:str,filter:str):if path.startswith(filter):img_dir = os.path.join("D:/python/", dir)html_path= os.path.join(img_dir,name)if not os.path.isfile(html_path):rep=req.get(path)print(rep.text)filestr=rep.textif not os.path.isdir(img_dir):os.mkdir(img_dir)with open(html_path,"w",encoding="utf-8") as f:f.write(rep.text)print("从网页读取:"+name)else:with open(html_path,"r",encoding="utf-8") as f:content=f.read()filestr=content# print(content)f.closeprint("从文件读取:"+name)return filestrelse:return "error"
下面的代码是解析出网页的文件中的图片地址并且将图片下载到本地,主要用到的就是正则表达式的知识,r''前面的小R是使用字符串的原始格式,如果不加会抛出异常
ex=r'<div\s+class="ncmn-thumb"\s+style=".*?"\s*></div>'
tempResultListImg=re.findall(ex,mainPageStr,re.S)
start = "https"
end = "jpg"for urlStr in tempResultListImg:temp:str=urlStrmatch=util.find_strings_between(start=start,end=end,text=urlStr)if(match[0]==True):path="https"+match[1]+"jpg"print(path)img_dir = os.path.join(os.curdir, 'cover_images')#traval_images是文件夹名称if not os.path.isdir(img_dir):os.mkdir(img_dir)# img_path= ["https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png",# "https://images.ctfassets.net/o5v89n4kg6h4/4VUyO3UPXuAXLsNsgvfwkY/31d69035c603d796b2c0e509c33f56bd/topBanner_l_demo_ver.png"]# for path in img_path:# # print(path)img_name = 'cover' + path.split('/')[-1] #图片名称print(img_name)filepath = os.path.join(img_dir, img_name)if not os.path.isfile(filepath):resp = req.get(path)with open(filepath, 'wb') as f:for chunk in resp.iter_content(1024):#限速写入图片f.write(chunk)
这个是我封装的一个小工具,就是通过正则表达式匹配两个字符中间的内容
import re
def find_strings_between(text, start, end):pattern = rf"{start}(.*?){end}"matches = re.findall(pattern, text, re.S)if len(matches) > 0 :return (True,matches[0])else:return (False,"")
结语
python是一门简单易用易上手的开发语言,但如果查看api的源代码,会发现逻辑会复杂很多。和大多数高级语言一样,api封装了大部分的逻辑,可以快速的开发功能。
相关文章:
简单快速的上手python
前言 python是一门可以快速上手的语言,原因是它语法简单,api容易使用自由灵活 当我们需要安装任何的三方库时,只需要执行 pip install XX 之后在代码里面import xxx就可以使用python啦。 并且python的代码自由灵活,使用缩进区…...
PHP和GD如何给图片添加模糊边缘效果
在PHP中,使用GD库给图片添加模糊边缘效果通常涉及几个步骤,包括加载图片、创建模糊效果、应用边缘处理以及保存结果图片。然而,GD库本身并不直接提供边缘模糊的函数,但你可以通过一些技巧来实现类似的效果。 以下是一个简化的步骤…...
PowerShell:查找并关闭打开的文件
Get-SmbOpenFile 打开 Windows PowerShell 并运行 Get-SmbOpenFile | Format-List 若要仅显示特定文件共享的连接,请使用 Where-Object 运行 Get-SmbOpenFile。 Get-SmbOpenFile | Where-Object Path -eq "C:\Data\" | Format-List Get-SmbSession 显…...
SQL进阶技巧:非等值连接--单向近距离匹配
目录 0 场景描述 1 数据准备 2 问题分析 编辑 编辑 3 小结 数字化建设通关指南 0 场景描述 表 t_1 和表 t_2 通过 a 和 b 关联时,有相等的取相等的值匹配,不相等时每一 个 a 的值在 b 中找差值最小的来匹。 表 t_1:a 中无重复值 表 t_1:a 中无重复值 a 1 2 4 …...
【golang】单元测试,以及出现undefined时的解决方案
单元测试 要对某一方法进行测试时,例如如下这一简单减法函数,选中函数名后右键->转到->测试 1)Empty test file 就是一个空文件,我们可以自己写测试的逻辑 但是直接点绿色箭头运行会出问题: 找不到包。我们要在…...
代理IP地址的含义与设置指南
在数字化时代,互联网已经成为我们日常生活不可或缺的一部分。然而,在享受互联网带来的便利的同时,我们也面临着隐私泄露、访问限制等问题。代理IP地址作为一种有效的网络工具,能够帮助我们解决这些问题。本文将详细介绍代理IP地址…...
Qt 2D绘图之三:绘制文字、路径、图像、复合模式
参考文章链接: Qt 2D绘图之三:绘制文字、路径、图像、复合模式 绘制文字 除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontInfo()函数可以获取字体的信息,它返回QFontInfo类对象…...
el-table 纵向 横向 多级表头
<el-table :data"tableData" class"diaTable":span-method"handleSpanMethod"border:header-cell-style"{background:#292929,color:#fff}"><!-- 纵向表头 --><el-table-column label"纵向表头" width"…...
linux perf安装问题解决
WARNING: perf not found for kernel 4.15.0-39 perf安装问题 perf是一个功能强大的linux性能分析工具,其功能依赖于内核,安装perf工具的版本必须与内核版本保持一致。 perf安装问题 使用apt 安装 perf包,运行时提示要安装与内核版本相一致…...
嵌入式Linux无窗口系统下搭建 Qt 开发环境
嵌入式Linux无窗口系统下搭建 Qt 开发环境 本文将介绍如何在树莓派的嵌入式 Linux 环境下,搭建 Qt 开发环境,实现无窗口系统模式(framebuffer)下的图形程序开发。 1. 安装 Qt 环境 接下来,安装核心 Qt 开发库以及与 …...
JSON vs 表单格式:两种常见请求格式的区别与应用
搞iOS UI 自动化的同时涉及到了给后端发送请求,请求数据的格式常用的有json格式和表单格式,这两种格式如何区分,如何使用,特此总结了一下。 表单格式(Form Data) 传统的 HTML 表单使用的请求体格式&#…...
通过torch.utils.data.DataLoader可提高深度学习的10倍运行的速度?
引言 在深度学习的训练过程中,数据加载是一个关键步骤,它直接影响到模型训练的效率。为了提高运行速度,我们通常会采用多种方法,比如数据预处理、多线程加载、缓存策略等。然而,有一个经常被忽视的优化点——调整torc…...
【QT】背景,安装和介绍
TOC 目录 背景 GUI技术 QT的安装 使用流程 QT程序介绍 main.cpp编辑 Wiget.h Widget.cpp form file .pro文件 临时文件 C作为一门比较古老的语言,在人们的认知里始终是以底层,复杂和高性能著称,所以在很多高性能需求的场景之下…...
计算机网络:IP协议详细讲解
目录 前言 一、IP网段划分 二、IP报头 三、解决IP地址不足-->NAT技术 前言 在之前,我们学习了传输层中的TCP和UDP,重点是TCP协议,他帮我们解决具体到主机的哪个应用(端口)、传输的可靠(序列号、校验和…...
Python中使用pip换源的详细指南
在Python开发过程中,我们经常需要安装各种第三方库。pip是Python的包管理工具,用于安装和管理Python库。然而,由于网络原因,有时访问默认的Python包索引(PyPI)可能会比较慢。这时,我们可以通过更…...
【Unity】WebGL全屏问题
1 前言 WebGL项目打包时不可避免的需要面对全屏化问题,或者说是占满网页的问题。这里讨论一下此问题。 2 全屏化 2.1 打包模板 WebGL在打包时可以选择不同的打包模板,其会影响最终打包好的项目在网页中的展现形式。可以在“Project Setting/Player/Set…...
基于大数据python 电商数据分析及推荐可视化系统(源码+LW+部署讲解+数据库+ppt)
!!!!!!!!! 很对人不知道选题怎么选 不清楚自己适合做哪块内容 都可以免费来问我 避免后期給自己答辩找麻烦 增加难度(部分学校只有一次答辩机会 没弄好就延迟…...
基于大数据python 热门微博数据分析可视化系统(源码+LW+部署讲解+数据库+ppt)
!!!!!!!!! 很对人不知道选题怎么选 不清楚自己适合做哪块内容 都可以免费来问我 避免后期給自己答辩找麻烦 增加难度(部分学校只有一次答辩机会 没弄好就延迟…...
MATLAB R2024b软件下载安装教程
软件版本: MATLAB R2024b 软件大小:24G 安装环境:Windows 10/11(64位) 界面语言:简体中文 软件下载:https://pan.xunlei.com/s/VOCut9-UJcX7k3AO7IGXobAiA1?pwdkqkr# 软件参考安装教程 1、使用网盘…...
机器学习算法(六)---逻辑回归
常见的十大机器学习算法: 机器学习算法(一)—决策树 机器学习算法(二)—支持向量机SVM 机器学习算法(三)—K近邻 机器学习算法(四)—集成算法 机器学习算法(五…...
Pareidoscope - 语言结构关联工具
文章目录 关于 Pareidoscope安装使用方法输入格式语料库查询 将语料库转换为 SQLite3 数据库两种语言结构之间的关联简单词素分析关联共现和伴随词素分析相关的更大结构可视化关联结构 关于 Pareidoscope Pareidoscope 是一组 用于确定任意语言结构之间 关联的工具,…...
Java中 HttpURLConnection 和 HttpClient 详解(初学者友好)
Java中HttpURLConnection和HttpClient详解(初学者友好) 在Java开发中,向服务器发送HTTP请求是常见的需求,比如调用API接口或获取远程数据。在JDK中,主要有两种方式实现HTTP通信: 使用 HttpURLConnection&…...
vulnhub-LUPINONE-靶场复盘-题解
靶机的下载连接https://download.vulnhub.com./empire/01-Empire-Lupin-One.zip 下载镜像后解压,然后导入到vmware中,使用的是nat模式 kali的ip地址:10.10.1.128 靶机ip地址:10.10.1.135 1.扫描靶机ip地址 命令:n…...
diff算法
vue的diff算法详解 vue: diff 算法是一种通过同层的树节点进行比较的高效算法 其有两个特点: 比较只会在同层级进行, 不会跨层级比较 在diff比较的过程中,循环从两边向中间比较 diff 算法在很多场景下都有应用,在 vue 中&…...
通过异步使用消息队列优化秒杀
通过异步使用消息队列优化秒杀 同步秒杀流程异步优化秒杀异步秒杀流程基于lua脚本保证Redis操作原子性代码实现阻塞队列的缺点 同步秒杀流程 public Result seckillVoucher(Long voucherId) throws InterruptedException {SeckillVoucher seckillVoucher iSeckillVoucherServi…...
项目整合logback日志打印线程id
项目打印日志能帮助我们解决很多的问题,提示我们出现的问题,通过日志我们可以准确的定位问题快速找到问题点解决问题。 <?xml version"1.0" encoding"UTF-8"?> <!-- 日志级别从低到高分为TRACE < DEBUG < INFO &l…...
WEB开发: 丢掉包袱,拥抱ASP.NET CORE!
今天的 Web 开发可以说进入了一个全新的时代,前后端分离、云原生、微服务等等一系列现代技术架构应运而生。在这个背景下,作为开发者,你一定希望找到一个高效、灵活、易于扩展且具有良好性能的框架。那么,ASP.NET Core 显然是一个…...
爬虫专栏第一篇:深入探索爬虫世界:基础原理、类型特点与规范要点全解析
本专栏会对爬虫进行从0开始的讲解,每一步都十分的细致,如果你感兴趣希望多多点赞收藏关注支持 简介:文章对爬虫展开多方面剖析。起始于爬虫的基本概念,即依特定规则在网络抓取信息的程序或脚本,在搜索引擎信息提取上作…...
SpringBoot3 + Vue3 由浅入深的交互 基础交互教学2
目录 一、这篇文章是基础交互教学系列的续作 二、发送请求时,携带发送的数据json格式的参数:data 三、携带token请求头,进行JWT校验 四、实现throw抛出异常,并交互显示在前端的界面 一、这篇文章是基础交互教学系列的续作 大…...
PID模糊控制算法(附MATLAB仿真程序)
一、基本原理 PID模糊控制算法是一种将传统PID控制与模糊逻辑相结合的控制策略。它利用模糊逻辑处理不确定性和非线性问题的能力,以提高控制系统的性能。以下是PID模糊控制算法的基本原理: 1.1. **误差和误差变化率的计算**: - 首先&…...
云轴科技ZStack助力 “上科大智慧校园信创云平台”入选上海市2024年优秀信创解决方案
近日,为激发创新活⼒,促进信创⾏业⾼质量发展,由上海市经济信息化委会同上海市委网信办、上海市密码管理局、上海市国资委等主办的“2024年上海市优秀信创解决方案”征集遴选活动圆满落幕。云轴科技ZStack支持的“上科大智慧校园信创云平台”…...
分布式集群下如何做到唯一序列号
优质博文:IT-BLOG-CN 分布式架构下,生成唯一序列号是设计系统常常会遇到的一个问题。例如,数据库使用分库分表的时候,当分成若干个sharding表后,如何能够快速拿到一个唯一序列号,是经常遇到的问题。实现思…...
Linux vi/vim
Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。 但是目前我们使用比较多的是 vim 编辑器。 vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。 什么是 vim&…...
二分搜索(二)搜索插入位置
35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: …...
postgresql in模糊查询
postgresql in模糊查询 plsql模糊查询表名 转载 一.简单查询 1.Select 列名,列名…from select e.empno,e.ename,e.job,e.sal from emp e(别名); 2.带条件查询 select 列名,列名,…,列名 from 表名 where –查询名字叫SMITH的员工的信息 select * from emp where ena…...
政府大数据面临的挑战
政府大数据在数据资源标准、共享、应用、评价以及数据资产转化方面面临着严峻挑战,因此需要从保障数据流动性的角度来重构信息体系,从关注流程和业务逻辑的角度转向关注数据流动性和数据价值,遵从信息流动的内在逻辑,发挥数据的最…...
数据结构---链表
1. 简介 链表(Linked List)是一种常见的线性数据结构,它由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针(或引用)。链表的一个主要优点是能够高效地插入和删除元素,尤其是在数组…...
【系统架构设计师】真题论文: 论无服务器架构及其应用(包括解题思路和素材)
更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2017年 试题3)解题思路论文素材参考无服务器架构概念和特点无服务器架构的核心技术组件无服务器架构在不同领域的应用真题题目(2017年 试题3) 近年来,随着信息技术的迅猛发展和应用需求的快速更迭,…...
深度学习模型:BiLSTM (Bidirectional LSTM) - 双向长短时记忆网络详解
一、引言 在深度学习领域,序列数据的处理一直是一个关键任务。循环神经网络(RNN)及其变体在自然语言处理、语音识别、时间序列分析等诸多领域发挥着重要作用。然而,传统的 RNN 面临着梯度消失或梯度爆炸等问题,导致难…...
【计算机网络】实验3:集线器和交换器的区别及交换器的自学习算法
实验 3:集线器和交换器的区别及交换器的自学习算法 一、 实验目的 加深对集线器和交换器的区别的理解。 了解交换器的自学习算法。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、熟悉集线器和交换器的区别 (1) 第一步:构建网络…...
playwright 学习复仇记-2 Selector选择器定位元素
前言 Selector 选择器,也就是通常说的元素定位了,页面上点点点的操作,都是基于元素定位,所以这块是重点需要学的核心内容。 Selector 选择器 说到元素定位,大家肯定会首先想到 selenium 的八大元素定位,其…...
C语言——实现计算房屋总价
//功能:计算房屋总价 //房屋总价 房屋面积 * 单价 //契税 房屋总价 * 0.15% //印花税 房屋总价 * 0.05% //功能:计算房屋总价 //房屋总价 房屋面积 * 单价 //契税 房屋总价 * 0.15% //印花税 房屋总价 * 0.05%#include<stdio.h>void main()…...
Vue3 脚手架扩展
当 yarn dev 运行成功后,我们继续添加扩展 首先我们要安装一些依赖 其中的vue-router和vuex安装最新版的就行,因为项目是vue3 element-plus和less,less-loader最好按照我这个版本来下载 element-plus是一个vue常用的ui组件库 element-plus/…...
Ubuntu 20.04 程序运行导致“段错误 (核心已转储)”的原因分析及解决方案 ubuntu
Ubuntu 20.04 程序运行导致“段错误 (核心已转储)”的原因分析及解决方案 在Ubuntu 20.04系统中,运行程序时出现“段错误 (核心已转储)”是一种常见的错误提示。本文将详细解析导致段错误的原因,并提供完整的解决方案,辅以示例说明ÿ…...
Mysql常用sql语句
数据库操作 # 创建数据库 create database 库名 charsetutf8; # 使用数据库 use 库名; # 退出数据库 quit # 查看所有数据库 show databases; # 查看当前使用的数据库 select database(); # 删除数据库 drop database 库名; 表操作 #查看当前数据库中所有表 show tables;#创…...
SpringBoot 架构下的在线家具商城:规划与实践之路
第1章 绪论 1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广泛运用,以及各种计算机硬件的完善和升…...
request和websocket
当然,可以为你详细介绍 FastAPI 中的 Request 对象。Request 对象在 FastAPI 中扮演着重要的角色,负责封装来自客户端的 HTTP 请求信息。了解 Request 对象的使用方法和属性,有助于你更高效地处理请求数据、访问请求上下文以及进行各种操作。…...
前端【9种前端常见的设计模式】
🌟9种前端常见的设计模式 哈喽小伙伴们,这期给大家整理了一些有关9种前端常见的设计模式,覆盖多方面基础知识,建议大家收藏阅读。 文章目录 🌟9种前端常见的设计模式🌟1. 外观模式🌟 2. 代理模…...
IDEA使用HotSwapHelper进行热部署
目录 前言JDK1.8特殊准备DECVM安装插件安装与配置参考文档相关下载 前言 碰到了一个项目,用jrebel启动项目时一直报错,不用jrebel时又没问题,找不到原因,又不想放弃热部署功能 因此思考能否通过其他方式进行热部署,找…...
【Django-xadmin】
时间长不用,会忘的系列 1、Django-xadmin后台字段显示处理 主要是修改每个模块下adminx.py文件 代码解释:第1行控制表单字段显示第2行控制列表字段显示第3行控制搜索条件第4行控制过滤条件第5行支持单个或多个字段信息修改第6行列表分页,每页显示多少行…...