Day6 - Python第三方模块xpinyin、faker、pymysql、Redis、rediscluster、xlrd、xlutils、openpyxl、request

2023-11-10

一、第三方模块

安装第三方模块

第一种方式:
1.将pip命令加入到环境变量,且将python的安装目录下scripts目录加入到环境变量里面
2.pip install 数据库名称 : pip install xpinyin
python2:easy_install xpinyin or 先安装pip:easy_install pip
指定版本安装:pip install xpinyin==0.5.6
第二种方式:
找到存在python.exe文件的python路径,执行如下路径:
python.exe -m pip install xxxx
第三种方式,手工安装:
1.下载第三方数据库,xxxx.whl or xxxx.tar.gz
安装whl结尾的模块:pip install xxxx.whl
安装tar.gz结尾的模块:先解压,然后执行python setup.py install

区别python原地址

1.区分国外官方源地址:filts.pythonhosted.org
2.国内python源:https://pypi.doubanio.com/simple/

二、xpinyin模块

1.汉语转拼音 pinyin()方法

a.将xpinyin()类实例化
b.调用get_pinyin()函数
c.默认get_pinyin()是以“-”来连接输出,可以再参数中添加需要的连接符号
get_pinyin() or get_pinyin(xxxx,‘x’)
代码:

import xpinyin
name = "小黑"
p = xpinyin.Pinyin() #将类实例化
print(p.get_pinyin(name)) 
print(p.get_pinyin(name,''))

[reult~]:

xiao-hei
xiaohei
练习:有一批中文名,需要生成账号并保存在文件中,但是名字里面可能有拼音相同的,如果有重复的拼音,那么就名字加1

代码:

import xpinyin
p = xpinyin.Pinyin() #将类实例化
s = """名字字符串"""
#将字符串写到文件中
# all_name_list = s.split()
# with open('all_name_list.txt','w',encoding='utf-8') as f:
#     for name in all_name_list:
#         f.writelines("%s%s"%(name,'\n'))
d = {} #存的是重复的名字和出现的次数
name_pinyin_list = [] #存的是不重复的名字拼音
all_name_list = s.split()
print(all_name_list)
for i in all_name_list:
    name_pinyin = p.get_pinyin(i)
    if name_pinyin not in name_pinyin_list:
        name_pinyin_list.append(name_pinyin)
    else:
        if name_pinyin not in d:
            d[name_pinyin] = 1
        else:
            d[name_pinyin] += 1
for name,count in d.items():
    for i in range(1,count+1):
        new_name = "%s%s"%(name,i)
        name_pinyin_list.append(new_name)
with open("name_pinyin.txt",'w',encoding='utf-8') as name_pinyin:
    for i in name_pinyin_list:
        i = str(i) + '\n'
        name_pinyin.write(i)
print(name_pinyin_list)

三、faker模块

作业:可随机生成姓名,地址,身份证号码,银行卡号码

首先将faker模块实例化 faker.Faker(locale=“zh_CN”)
查看所有函数方法print(dir(xxx))
代码:

import faker
f = faker.Faker(locale="zh_CN") #将faker实例化
print(f.name()) #随机姓名
print(f.city()) #身份证号
print(f.user_name()) #用户名
print(f.ipv4()) #IP地址
print(f.ssn()) #身份证号码
#print(f.user_agent())
#查看方法
print(dir(f))

[result~]:

熊淑英
波市
xliu
49.238.252.121
13052619400530386X

四、操作mysql模块pymysql

操作数据库需要知道如下信息:

1)ip:IP地址
2)user:用户名
3)password:密码,必须是字符串
4)db:数据库名称
5)port:端口号,有默认值:3306,必须有些int类型

1.连接mysql方法connect()

如果连接时添加autocommit=True,则sql语句无须执行commit()

import pymysql
ip = "localhost"
user = "root"
password = "123456"
db = "ben"
port = 3306
#添加autocommit之后就会自动确认,无须执行commit()
#connect = pymysql.connect(host=ip, user=user, password=password, db=db, port=port ,autocommit = True,charset="utf8")
connect = pymysql.connect(host=ip, user=user, password=password, db=db, port=port, charset="utf8")
2.创建数据库操作游标

如果在此处创建有表示加参数pymysql.cursors.DictCursor,返回结果就是字典

# cursor = connect.cursor(pymysql.cursors.DictCursor)#返回结果是字典
cursor = connect.cursor()
3.执行sql语句
sql = "select * from custnew;"
#创建table预期
#sql = "create table fmz (id int primary  key auto_increment,name varchar(50) not null,sex int default 0, phone varchar(11) unique );"
cursor.execute(sql) #执行sql语句
4.打印输出内容fetchall()

可以输出一条、指定条数、全部数据
fetchall() 输出内容是一个二维数组,

result = cursor.fetchall() #打印全部内容
print(result)
print(cursor.fetchone()) #只打印一条数据
print(cursor.fetchmany(5)) #打印指定数量的数据
5.获取表中的字段描述
print(cursor.description)
5.sql执行结果提交commit()

只有sql语句提交完成才会成功在表中添加数据,同时执行多条语句只需要添加一个提交commit()即可

connect.commit() #提交
6.sql语句回滚rollback()

如果多条语句有一个执行失败,需要添加rollback()进行回滚

connect.rollback() #回滚
7.关闭游标
cursor.close()
8.关闭数据库连接

数据库存在允许最大连接数,如果不关闭会导致其他用户无法连接

connect.close
9.直接循环游标:

直接循环游标,每次去的就是表里面的每一条数据

import pymysql
connect = pymysql.connect(host=ip, user=user, password=password, db=db, port=port, charset="utf8")
cursor = connect.cursor()
sql = "select * from custnew;"
cursor.execute(sql) #执行sql语句
for c in cursor:
    print(c)
cursor.close()
connect.close()

[result~]:

(10008, 'wen')
(10009, 'yangwen')
(10010, 'haha')
(10011, '杨文')
(10012, 'zhang')
(10013, 'ying')
(10014, 'ying1')

五、操作Redis数据库的模块redis

1、了解Redis

a.是一个非关系型数据库,nosql类型
b.数据储存类型是K-V类型
c.Redis数据全部放在内存中,读写速度快,每秒最大能支持10W的读写
d.两种数据类型字符串和哈希

字符串string k-v格式:{"name" :1111}
哈希 hash 大字典:{"student" :{"xiaohei": "xxx", "xiaobai": "xxx"}}
list类型

2.Redis 字符串操作

1).Redis连接:
import redis

redis_info = {
    "host": "xxxx",
    "password": "HK139bc&*",
    "port": 6379,
    "db": 4
}
r = redis.Redis(**redis_info)
# r = redis.Redis(host="xxxx", password="HK139bc&*", port=6379, db=4,decode_responses=True)
2).Redis字符串类型的增、删、改、查
#写入(k,v,失效时间)、改也用set方法
r.set("name","xiaowu1",60)
#获取
# 获取的值都是byte类型,需要进行decode()处理转换成字符串
print(r.get("name"))
#删除
r.delete("name")
print(r.get("name"))
3).获取失效时间r.get(“name”)
#TTL值为"-1",代表永久不会失效
print(r.ttl("name"))
4).获取数据库里面的key
# 获取当前数据库里面的所有的key
print(r.keys())
#获取可以加筛选条件
print(r.keys("*_*"))
5).判断数据库里面的key是否存在
#返回0代表不存在,返回1代表存在
print(r.exists("fmz_111"))
6).判断数据库里面key的类型
#查看这个key的类型
print(r.type("name"))

[result~]:

b'string'
7).设置key的失效时间
print(r.expire("name",60))
8).hash中冒号的作用
#冒号相当于文件夹,取值的时候也要有文件夹
r.set("yangwen:info","male")
print(r.get("yangwen:info","male"))

2.Redis hash类型操作

1)Redis写入hash类型数据
先写入大key,在写入小key,最后写入数值
r.hset("students","xiaohei",'{"id":1,"score":99}')
r.hset("students","xiaobai",'{"id":1,"score":99}')
2)Redis获取数据
# 获取的值都是byte类型,需要进行decode()处理转换成字符串
# 获取指定的小key
print(r.hget("students","xiaobai"))
# 把大key里面的数据都获取到 ,
print(r.hgetall("students"))
3)Redis数据删除
# 删除指定的小key
r.hdel("students","xiaobai")
# 删除大key
r.delete("students")
4)Redis判断数据是否存在
# 判断里面的小key是否存在
r.hexists("students","xiaobai")
5)将redis返回结果由byte类型改为字符串类型方法

a.使用decode()将结果改为字符串类型

val = r.hgetall("students")
new_ret = {}
for k,v in val.items():
    k = k.decode()
    v = v.decode()
    new_ret[k] = v
print(new_ret)

b.在连接redis时加入decode_responses=True参数

redis_info = {
    "host": "xxxx",
    "password": "HK139bc&*",
    "port": 6379,
    "db": 4,
    "decode_responses":True
}

r = redis.Redis(**redis_info)

2.Redis list类型操作

1)Redis写入列表
#前/左写入,返回值为列表长度
print(r.lpush("black_list","xiiiiii1"))
#后/右写入
r.rpush("black_list","2")
2)Redis从左区域取值
#从左区域开始范围取值,返回值是一个列表,从0开始取,取到第2个
print(r.lrange("black_list",0,2))
3)Redis删除数据
# #从左面删除和从右面删除,但不能指定值删除
r.lpop("black_list")
# #从右侧删除一个数据
r.rpop("black_list")
# #删除指定的数据具体次数,但要添加删除的具体数量
print(r.lrem("black_list","2","a"))
4)Redis指定位置修改
#指定位置修改
r.lset("black_list",0,"hhhh")
5)Redis查看列表长度
#取这个list的长度
print(r.llen("black_list"))
6)删除除指定范围外的所有数据
#删除列表里面的数据,除了你指定的范围
print(r.ltrim("black_list",0,2))

4.Redis数据库清除

#清空当前数据库
r.flushdb()
#清空所有数据库
r.flushall()

5.Redis集群操作模块rediscluster模块

安装:pip install redis-py-cluster

import rediscluster

startup_nodes = [
    {"host":"118.24.3.40","port":6379,"password":"HK139bc&*","db":4},
    {"host":"localhost","post":6379,"password":"123456","db":4}
]

r = rediscluster.RedisCluster(startup_nodes=startup_nodes)

6.Redis小练习-数据库迁移

import redis

r = redis.Redis(host="localhost", password="123456", port=6379, db=4,decode_responses=True)
r2 = redis.Redis(host="localhost", password="123456", port=6379, db=11,decode_responses=True)

for k in r.keys():
    k_type = r.type(k)
    if k_type == "string":
        value = r.get(k)
        r2.set(k,value)
    elif k_type == "hash":
        dic = r.hgetall(k)
        r2.hmset(k,dic)
    elif k_type == "list":
        length = r.llen(k)
        result = r.lrange(k,0,length-1)
        r2.rpush(k,*result)

六、读excel文件的xlrd模块

xlrd基本用法
book = xlrd.open_workbook("testyangwen.xls")
#根据sheet页的名字获取
sheet = book.sheet_by_name("sheet1")
#根据sheet页的下标获取
# sheet = book.sheet_by_index(1)
# 获取所有sheet页
print(book.sheets())
#获取某一个单元格的内容,第一行的第一列
print(sheet.cell(0,0).value)
#获取整行的数据
print(sheet.row_values(0))
# 获取整列的数据
print(sheet.col_values(0))
# 总共多少行
print(sheet.nrows)
# 总共多少列
print(sheet.ncols)

七、修改Excel文件的xlutils模块

xlutils修改文件内容并验证修改内容
import xlrd
from xlutils import copy #对xls进行修改

book = xlrd.open_workbook("test.xls")
#复制
new_book = copy.copy(book)
#获取内容
sheet = new_book.get_sheet(0)
#改写内容
sheet.write(0,0,"编号No.")
#保存
new_book.save("test.xls") #保存

book1 = xlrd.open_workbook("test.xls")
sheet1 = book1.sheet_by_index(0)
print(sheet1.cell(0,0).value)

八、可对excel进行读、写、修改且超过65536行的openpyxl模块

1.优缺点

优点:可对excel进行读、写、修改且超过65536行
缺点:只能对xlsx文件进行修改

import openpyxl

book = openpyxl.load_workbook("info.xlsx")

#打印所有sheet页名称
print(book.sheetnames)

#打开sheet1页,此处sheet名称区分大小写
sheet = book["Sheet1"]

#获取文件内容
print(sheet["A1"].value)
print(sheet["B1"].value)

#修改文件内容
#方法1
# sheet["A1"] = "标号"
sheet.cell(1,1).value = "编号"
#方法2
book.save("info.xlsx")

#去除所有行的数值,返回值是一个二维数组
print(sheet.max_row) #统计多少行
print(sheet.max_column) #统计多少列

# 打印所有行
# print(sheet.rows)
# 取列表所有行内容,并把行内容生成列表
for row in sheet.rows: #获取每行的数据
    row_data = [col.value for col in row] #列表生成式
    print(row_data)

九.网络请求-request模块

1.get请求、传参、返回值
import requests

# 如果请求报错,加参数verify=False
url = "xxxxxxxxxxxxxx"
# data = {"stu_name":"小黑"}
data = {"stu_name":"小"}
req = requests.get(url,data,verify=False)

# 如果接口在url和data中均有参数则续传params和data两个参数
#params参数是传在url里面的
#data参数是传在body里面的
#data2 = {"version":1}
#req = requests.get(url,params=data2,data=data,verify=False)

#查看请求发出去的url
print(req.url)
#返回字典,如果接口返回的不是json(),次返回会报错
print(req.json())
# 返回的是字符串
print(req.text)
# 返回的是bytes
print(req.content)
#返回状态码
print(req.status_code)
#返回的cookie
print(req.cookies)
#返回的headers
print(req.headers)

#传k-v格式
#params参数是传在url里面的
#data参数是传在body里面的
2.post请求传json类型的数据
#传json格式的
url = "xxxxxxxxxxx"
data = {
      "grade": "飞马座",
      "phone": "22345678993",
      "name":"哈哈哈哈"
}
req = requests.post(url,json=data)
print(req.json())
3.post请求传cookie

上传cookies时需要将cookie转换为字典格式

url = "https://qun.qq.com/cgi-bin/qun_mgr/search_group_members"
data = {
"gc": xxxxxxx,
"st": 0,
"end": 20,
"sort": 0,
"bkn": 1687073782
}
#格式化为字典
d = {}
s = "tvfe_boss_uuid=693bda1ff07b73c5; pgv_pvid=5068220768; RK=79jAxeS6ZU; ptcz=cf8175ad7b47bf88c6f9774fab28c49d9a8af7086da5dcae6adc6f109de1f430; pac_uid=0_1711287852aaf; _qpsvr_localtk=0.5466682079041223; p_uin=o1099276647; traceid=d301e3229d; uin=o1099276647; skey=@v4v69M7g7; pt4_token=mu55nB0StiLBYmuuZ8Q8r9SMqV478hhIydjjtFrGaFQ_; p_skey=hi8DANKhuFE4SmcrwGfemxQvHhnOtUnmblurRtAzWCc_"
for i in s.split(';'):
    k,v = i.strip().split("=")
    d[k] = v
print(d)

#cookie = {'RK': 'XYYhgDpPfy', 'ptcz': 'a5b23b4f93bc2f304119957286b77b21be95814358d482ef0a2bf216733e57ba', 'pgv_pvid': '5931324545', 'uin': 'o0511402865', 'skey': '@HHempil2m', 'p_uin': 'o0511402865', 'pt4_token': 'tkeLBl-znMjpBJxIv1Chj*kLx7p0dsh4BkZfF39cpDk_', 'p_skey': 'OS7gS9Zw8*r*aIpqd5-S5BUo65EJMNWRkLLMO1Vpu5o_', 'traceid': '5b35fe5632'}
#上传cookie
req = requests.post(url,data,cookies=d)
print(req.json())
4.上传headers
#传headers方式,也可以用来传cookie,直接把cookie内容传到herders里面
url = "https://qun.qq.com/cgi-bin/qun_mgr/search_group_members"
data = {
    "gc": 29306799,
    "st": 0,
    "end": 20,
    "sort": 0,
    "bkn": 1687073782
}
header = {"cookie":"tvfe_boss_uuid=693bda1ff07b73c5; pgv_pvid=5068220768; RK=79jAxeS6ZU; ptcz=cf8175ad7b47bf88c6f9774fab28c49d9a8af7086da5dcae6adc6f109de1f430; pac_uid=0_1711287852aaf; _qpsvr_localtk=0.5466682079041223; p_uin=o1099276647; traceid=d301e3229d; uin=o1099276647; skey=@v4v69M7g7; pt4_token=mu55nB0StiLBYmuuZ8Q8r9SMqV478hhIydjjtFrGaFQ_; p_skey=hi8DANKhuFE4SmcrwGfemxQvHhnOtUnmblurRtAzWCc_"}
req = requests.post(url,data,headers=header)
print(req.json())
5.上传文件
# 上传文件
url = "http://api.nnzhp.cn/api/file/file_upload"
data = {"file":open("testyangwen.xls", 'rb')} #文件打开模式'rb'
requests.post(url,data)
6.下载文件
#下载qq头像并保存
url = "https://q4.qlogo.cn/g?b=qq&nk=xxxxxx&s=140"
req = requests.get(url)
print(req)
with open("a.jpg",'wb') as fw:
    fw.write(req.content)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Day6 - Python第三方模块xpinyin、faker、pymysql、Redis、rediscluster、xlrd、xlutils、openpyxl、request 的相关文章

  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 电子设计大赛作品_电子设计大赛

    为了进一步提高学生对电子和科技的兴趣 培养学生的动手能力和想象能力 增强学生的团队合作意识 提高学生分析和解决问题的能力 现决定开展电子设计大赛 电子设计大赛详情 一 参赛对象 全体全日制在校大学生 1 3人自由组队 并指定队长一名 可自由
  • 华为OD机试 - 简易内存池(Java)

    题目描述 请实现一个简易内存池 根据请求命令完成内存分配和释放 内存池支持两种操作命令 REQUEST和RELEASE 其格式为 REQUEST 请求的内存大小 表示请求分配指定大小内存 如果分配成功 返回分配到的内存首地址 如果内存不足
  • java-map-put方法源码分析

    HashMap是由数组 链表和红黑树组成的数据结构 而其中put方法可以算的上HashMap中的核心方法 这个方法给我们展示了HashMap的大部分精髓 我们首先来看一下map的核心变量 transient Node
  • 2022年一起努力应对互联网寒冬吧,5G音视频时代还不学NDK开发吗

    前言 找工作还是需要大家不要紧张 有我们干这一行的接触人本来就不多 难免看到面试官会紧张 主要是因为怕面试官问的问题到不上来 那时候不要着急 答不上了的千万不然胡扯一些 直接就给面试官说这块我还没接触到 以后如果工作当中遇到的话我可以很快的
  • i2c 编程接口

    1 通信接口 i2c发送或者接收一次数据都以数据包 struct i2c msg 封装 struct i2c msg u16 addr 从机地址 u16 flags 标志 define I2C M TEN 0x0010 十位地址标志 def
  • Vert.X通过Hoverfly满足服务虚拟化

    服务虚拟化是一种用于模拟基于组件的应用程序的依赖关系行为的技术 Hoverfly是用Go语言编写的服务虚拟化工具 可让您模拟HTTP S 服务 它是一个代理 它使用存储的响应来响应HTTP S 请求 并假装它是真正的对应对象 食蚜蝇Java
  • 使用 IO 流 读取 本 地 文 件 (两种方式)

    使用IO 流读取本地文件 public class FileReadWrite public static void main String args FileReader fr null try 1 创建读取文件 fr new FileR
  • [Manjaro] OpenGL 配合着色器实现光线跟踪之引入光线

    概述 本文介绍 GLFW GLAD 在 RayTracing in one weekend 的实现 实验环境 Manjaro Linux 22 0 0 整体思路 使用基于屏幕空间的光线跟踪算法 每个像素点代表一个光线 使用 GLSL 着色器
  • 在IntelliJ IDEA中查看代码覆盖率

    在IDEA中使用Junit测试时 时常需要考虑代码覆盖率 以下是查看代码覆盖率的方法 在test class右键选择 more run debug gt Run Test with Coverage 使用时发现会出现没有Branch Cov
  • ubuntu上安装最新的docker社区版

    如果安装有老的docker先删除老的版本 sudo apt get remove docker docker engine docker io 老的镜像 存储 网络信息保留在 var lib docker 下 可以自行删除 新的社区版本叫d
  • 矩阵的转置怎么编程用C语言,将一个3x3的矩阵转置,怎样用c语言写?

    include
  • 学建模时常遇到的问题(看专业解答)

    常做到一半就卡住 那是不是操作时有问题 没有处理好 选择面数选不中 选择线选不中 还只能用最初始的命令 这些有一种可能就是你操作模型时 按到了空格键 然后界面就会锁死 按空格键就阔以取消啦 还有一个情况就是 进入可编辑模式之后 对模型进行点
  • 权限提升-MYSQL数据库提权

    基础知识 1 需要了解掌握的权限 后台权限 网站权限 数据库权限 接口权限 系统权限 域控权限等 2 权限获取方法简要归类说明 后台权限 SQL注入 数据库备份泄露 默认或弱口令等获取帐号密码进入 网站权限 后台提升至网站权限 RCE或文件
  • zookeeper到nacos的迁移实践

    本文已收录 https github com lkxiaolou lkxiaolou 欢迎star 技术选型 公司的RPC框架是dubbo 配合使用的服务发现组件一直是zookeeper 长久以来也没什么大问题 至于为什么要考虑换掉zook
  • azkaban上传zip报错:Error Chunking during uploading files to db

    上传时页面报 Instalation Failed Error Chunking during uploading files to db 查看web server日志 2021 11 26 11 20 38 253 0800 INFO P
  • vue图片上传组件

    vue图片上传组件 最近在做项目的时候顺便补充了一下公司项目的公共组件库 刚刚手头事情告一段落 就来做个笔记 首先来看看最终效果 1 不允许删除 2 允许用户删除 显示删除按钮 实现的效果就是上图显示内容 接下来说说组件布局那部分直接上代码
  • 循环神经网络-LSTM

    参考 长期以来 隐变量模型存在着长期信息保存和短期输入缺失的问题 解决这一问题的最早方法之一是长短期存储器 long short term memory LSTM Hochreiter and Schmidhuber 1997 它有许多与门
  • 教你如何更改windows10系统默认字体

    以管理员身份运行命令提示符 打开注册表 定位到HKEY LOCAL MACHINE SOFTWARE Microsoft WindowsNT CurrentVersion Fonts 在右边找的Microsoft YaHei Microso
  • 常用继电器模块的PCB设计与实物分享

    今天分享一下自己做的一块继电器模块 因为之前有用到继电器模块的原理图 索性自己画了一下 原理图如图所示 一 原理图 继电器模块还是比较简单的 就是通过三极管的开关作用来使电路导通 从而来控制继电器的磁铁通电吸合内部的衔铁 其高低电平的触发其
  • Day6 - Python第三方模块xpinyin、faker、pymysql、Redis、rediscluster、xlrd、xlutils、openpyxl、request

    一 第三方模块 安装第三方模块 第一种方式 1 将pip命令加入到环境变量 且将python的安装目录下scripts目录加入到环境变量里面 2 pip install 数据库名称 pip install xpinyin python2 e