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

Python之xToolkit库

文章目录

  • 一、xToolkit是什么?
  • 二、准备工作
    • 1.引入库
    • 2.导入数据
  • 三、使用
    • 时间模块-xdatetime
      • 判断时间格式是否正确
      • get方法
        • 获取时间戳
        • 获取年月日时分秒
        • 时间推移计算
        • 时间替换
        • 时间扩展
          • 两个时间的差值
          • 开始与结束时间
          • 时间是否在指定区间中
    • 字符串模块-xstring
      • 字符串格式校验
      • 多种姿势的字符串处理
    • 多线程模块-xthread
    • 列表模块-xlist
      • 值的频率
    • 文件模块-xfile


一、xToolkit是什么?

xToolkit是python内置库的一个扩展库.把python的datetime,string,list,dist等数据结构重新进行了封装,扩展了部分功能.

库xToolkit的中文名字叫X工具集.是python内置库的一个扩展库.把python的datetime,string,list,dist等数据结构重新进行了封装,扩展了部分功能.
说明文档:https://www.showdoc.com.cn/xToolkit?page_id=2133295307421808

二、准备工作

1.引入库

代码如下(示例):

pip install xToolkit -i https://mirrors.aliyun.com/pypi/simple/

更新

升级方法
pip install --upgrade xToolkit -i https://mirrors.aliyun.com/pypi/simple/

2.导入数据

from xToolkit import xstring, xdatetime, xthreading, xlise, xfile

三、使用

时间模块-xdatetime

判断时间格式是否正确

支持判断的类型包括 date,datetime,time,int,float,str 其他类型默认为False

# 判断时间格式"1988-07-20"是否合规
xdatetime.shape("1988-07-20")
>>True# 判断时间格式"1988-07-88"是否合规
xdatetime.shape("1988-07-88")
>>False# 判断时间格式"98787987"是否合规
xdatetime.shape("98787987")
>>Truexdatetime.shape("2020-03-")
>> Falsexdatetime.shape("english")
>> Falsexdatetime.shape("258741")
>> Truexdatetime.shape("2020/03/20T10:09:06.252525+0800")
>> Truexdatetime.shape(datetime.datetime(2020, 9, 29, 8, 12))
>> Truexdatetime.shape(datetime.date(2020, 9, 29))
>> Truexdatetime.shape(datetime.time(8, 9, 29))
>> True

get方法

并且创建的方法还比较多,可以传入时间戳,时间字符串,datetime对象,date对象等

# 时间戳方法
xdatetime.get(98787987)
>> 1973-02-17T17:06:27+08:00#字符串方式
xdatetime.get("1988-07-20")
>> 1988-07-20T00:00:00# datetime对象
xdatetime.get((datetime(2020, 3, 23, 21, 56, 12))
>> 2020-03-23T21:56:12# date对象等
xdatetime.get(date(2020, 3, 23))
>> 2020-03-23T00:00:00
获取时间戳
# 此方法获取的时间戳没有微妙部分,如果需要获取微妙部分,用time.time()
xdatetime.get().timestamp
>> 1585833834.0xdatetime.get("2020-04-02 21:26:54").timestamp
>> 1585834014.0
获取年月日时分秒
# 年
xdatetime.get().year
>> 2020# 月
xdatetime.get().month
>> 4# 日
xdatetime.get().day
>> 2# 时
xdatetime.get().hour
>> 21# 分
xdatetime.get().minute
>> 37# 秒
xdatetime.get().second
>> 48# 微妙
xdatetime.get().microsecond
>> 70815# 星期
xdatetime.get().weekday
# 返回数字 1-7代表周一到周日
>> 5# 周
xdatetime.get().weed
# 返回整数代表,当前是本年第多少个周
>> 35
时间推移计算

shift方法获取某个时间之前或之后的时间,
关键字参数:years, months, days, hours,minutes,seconds,microseconds, weeks

# 一年以前
xdatetime.get().shift(years=-1)
>> 2019-04-03T21:10:49.095790+08:00# 一年以后
xdatetime.get().shift(years=1)
>> 2021-04-03T21:10:49.095790+08:00#一个月之后
xdatetime.get().shift(months=1)
>> 2020-05-03T21:12:17.332790+08:00#一天以后
xdatetime.get().shift(days=1)
>> 2020-04-04T21:14:30.914443+08:00#一个小时以后
xdatetime.get().shift(hours=1)
>> 2020-04-03T22:14:08.301192+08:00#一分钟以后
xdatetime.get().shift(minutes=1)
>> 2020-04-03T21:17:27.956196+08:00#一秒钟以后
xdatetime.get().shift(seconds=1)
>> 2020-04-03T21:16:45.380686+08:00#一毫秒以后
xdatetime.get().shift(microseconds=1)
>> 2020-04-03T21:16:58.252929+08:00#一周以后
xdatetime.get().shift(weeks=1)
>> 2020-04-10T21:17:11.827210+08:00
时间替换

替换datetime对象,年月日时分秒某一部分,返回一个被替换后的datetime对象,原对象不变
关键字参数:year, month, day, hour,minute,second,microsecond

# 把年替换会成2018
xdatetime.get().replace(year=2018)
>> 2018-04-03T21:23:42.819295+08:00# 把月替换会成10
xdatetime.get().replace(month=10)
>> 2018-10-03T21:23:42.819295+08:00# 把日替换会成7
xdatetime.get().replace(day=7)
>> 2018-04-07T21:23:42.819295+08:00# 把时替换会成22
xdatetime.get().replace(hour=22)
>> 2018-04-03T22:23:42.819295+08:00# 把分替换会成21
xdatetime.get().replace(minute=21)
>> 2018-04-03T21:21:42.819295+08:00# 把秒替换会成21
xdatetime.get().replace(second=21)
>> 2018-04-03T21:23:21.819295+08:00
时间扩展
两个时间的差值

计算二个时间的差值,返回值为秒数
传入的二个时间格式包括,时间字符串,datetime,时间戳等

xdatetime.get("2020-04-28 10:52:52", "1988-07-20 17:31:12").how
>> 1002648100xdatetime.get("2020-04-28", "1988-07-20 17:31:12").how
>> 1002608928xdatetime.get("1975-04-28 14:14:55", "1988-07-20 17:31:12").how
>> -417496577
开始与结束时间

返回 指定时间中,年,月,周的开始时间和结束时间
类型genre Y->年,M->月,W->周
第一个参数:年
第二个参数:年月类型中,代表月,周类型代表周数

# 年
xdatetime.get(2020, 8, genre="Y").begin_end
>> ['2020-01-01', '2020-12-01']xdatetime.get(2021, 5, genre="Y").begin_end
>> ['2021-01-01', '2021-12-01']# 月
xdatetime.get(2020, 8, genre="M").begin_end
>> ['2020-08-01', '2020-08-31']xdatetime.get(2021, 5, genre="M").begin_end
>> ['2021-05-01', '2021-05-31']# 周
xdatetime.get(2020, 35, genre="W").begin_end
>> ['2020-08-24', '2020-08-30']xdatetime.get(2021, 45, genre="W").begin_end
>> ['2021-11-08', '2021-11-14']
时间是否在指定区间中

计算时间是否在指定的时间区间内,返回值为bool型
需要传入二个参数,第一个为需要验证的字符串,第二个是一个时间列表,里面包含二个时间,开始时间和结束时间

xdatetime.get("2027-04-01", ["1988-04-14", "2020-05-14"]).middle
>> False
>
xdatetime.get("2020-04-15", ["2020-04-14", "2020-05-14 12:12:14"]).middle
>> True

字符串模块-xstring

导入

from xToolkit import xstring # 字符串模块

字符串格式校验

进行字符串格式效验,包括车牌格式,身份证号码,整形或浮点型,时间字符串,URL地址,手机号,银行卡,用户姓名,密码,邮箱。

# 车牌号
xstring.check("鄂A96288").is_car_number
>>True# 身份证号码
# 提供中国大陆身份证验证,暂时只支持效验18位身份证
xstring.check("110101199003072316").is_identity_card
>>True# 整形或浮点型
xstring.check("12.5").is_int_or_float
>>True# 时间字符串
xstring.check("1988-07-20").is_datetime_string
>>True# URL地址
xstring.check("https://wwww.baidu.com").is_url
>>True# 手机号
xstring.check("15172383635").is_phone
>>True# 银行卡
xstring.check("6222600260001072444").is_bank_number
>>True# 用户姓名
# 姓名要求为2-4个中文
xstring.check("熊利宏").is_user_name
>>True# 密码
# 包含6-18位字符,必须包含字母与数字,可以包含特殊字符
xstring.check("xlh123456").is_user_password
>>True# 邮箱
# 第一种:只允许英文字母、数字、下划线、英文句号、以及中划线组成
# 第二种:名称允许汉字、字母、数字,域名只允许英文域名
xstring.check("xionglihong@163.com").is_mailbox
>>True

多种姿势的字符串处理

进行字符串处理,比如从身份证提取生日号码,性别等操作

xstring.dispose("11010119900307053X").get_identity_card(True)
>>{'code': '0000', 'msg': '身份证格式正确', 'data': {'birthday': '1990-03-07', 'gender': '男'}}

split 多标签分割

# 主要解决了系统模块split只能用一个分隔符
xstring.dispose("abc,我的-他的,1245*ss").split([",", "-", "*"])
>>['abc', '我的', '他的', '1245', 'ss']

主要解决了系统模块strip只过滤首尾空格

# 如果不传过滤参数,默认去掉所有空格
xstring.dispose("          鄂 A9 62 --8 8---__  ").strip()
>>鄂A962--88---__xstring.dispose("          鄂 A9 62 --8 8---__  ").strip([" ", "-", "_"])
>> 鄂A96288

把字符串转换为emoji表情

emoji表情对应字符串:https://blog.csdn.net/wandugu/article/details/122102481

xstring.dispose('Python is :thumbs_up:').string_to_emoji()
>>Python is 👍

emoji表情转字符串

xstring.dispose('Python is 👍').emoji_to_string()
>>Python is :thumbs_up:

中文分词

# 分词对象 中国人民解放军海军工程大学# 全模式:把文本中所有可能的词语都扫描出来,有冗余 cut_all=True
# ['中国', '中国人民解放军', '中国人民解放军海军', '国人', '人民', '人民解放军', '解放', '解放军', '海军', '海军工程大学', '军工', '工程', '大学']
# 精确模式:把文本精确的切分开,不存在冗余单词 cut_all=False
# ['中国人民解放军', '海军工程大学']
# 默认为精确模式# 精确模式
xstring.dispose('中国人民解放军海军工程大学').part(cut_all=False)
>>['中国人民解放军', '海军工程大学']# 全模式
xstring.dispose('中国人民解放军海军工程大学').part(cut_all=True)
>>['中国', '中国人民解放军', '中国人民解放军海军', '国人', '人民', '人民解放军', '解放', '解放军', '海军', '海军工程大学', '军工', '工程', '大学']

多线程模块-xthread

# 函数一
def function_1(a, b, c):time.sleep(1)return a * 2, b * 2, c * 2# 函数二
def function_2(a, b):time.sleep(1)return a * 2, b * 2# 函数三
def function_3(a):time.sleep(1)return a * 2# 函数四
def function_4():time.sleep(1)return 0st = time.time()
result = xthreading([function_1, 1, 1, 1], [function_2, 2, 2], [function_3, 2], [function_4])
print(result[0])
print(result[1])
print(result[2])
print(result[3])
et = time.time()
print("运行时间:{}".format(et - st))>> (2, 2, 2)
>> (4, 4)
>> 4
>> 0
>> 运行时间:1.0010571479797363# 从上面的运行时间可以看出,如果单线程执行应该是4秒以上,结果为1秒,说明运行时是多线程运行

列表模块-xlist

值的频率

from xToolkit import xlise # 列表模块
# 计算列表中值的频率
xlise.basics(["武汉", "武昌", "武汉", "无聊", "五菱", "武昌"]).values_count()
>>{'武昌': 2, '武汉': 2, '五菱': 1, '无聊': 1}

字典值替换

# 1.字典型列表的值整体替换
# 2.要求传入参数格式为 [{"id": None, "name": "wuhan"}, {"id": 5, "name": "中国"}, {"id": 25, "name": "上号"}, {"id": 5, "name": "测试"}]
# 3.这种形状的参数即可,比如可以传入 django 的 QuerySet 等
# 4.参数:
#    1.需要替换的对象
#    2.kwargs["rules"] 要求元祖,比如 ((None, ''), (45, 47)))value = [{"id": None, "name": "wuhan"}, {"id": 5, "name": "中国"}, {"id": 25, "name": "上号"}, {"id": 5, "name": "测试"}]
xlise.basics(value).dict_to_value(rules=((None, ''), ("中国", "china")))
>>[{'id': '', 'name': 'wuhan'}, {'id': 5.0, 'name': 'china'}, {'id': 25.0, 'name': '上号'}, {'id': 5.0, 'name': '测试'}]

文件模块-xfile

导入:

from xToolkit import xfile

导入的excel表格的格式是这样的:
在这里插入图片描述

# excel转dict# 1.传来的文件可以是文件路径,也可以是二进制文件
# 2.传来的可以是二进制文件,这里以django接收前端传来文件为例:
#     接收用 request.FILES.get("fileName", None) 传入 my_file 即可# kwargs接收的参数有:# sheet索引,0代表第一个表,1代表第二个表,默认0# max表格最大的行数,默认2000行# min表格最小的行数,默认1行# title 表头(用于表头校验)# 表头为选填,如果不填,不进行表头校验
xfile.read("./result/t_excel.xls").excel_to_dict()
>> [{'编号': 1, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},{'编号': 2, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},{'编号': 3, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},{'编号': 4, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},{'编号': 5, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1},{'编号': 6, '时间': '1988-07-21 00:00:00', '年龄': 1, '分数': 63.2, '总分': 1}]

校验表头再进行读取

在这里插入图片描述

xfile.read("./result/t_excel.xls").excel_to_dict(title=["编号", "时间", "年龄", "分数", "总分"])
>> {'code': '0001', 'data': {'data': None}, 'msg': '表头第 3 列错误,错误值为 年龄1 应该为 年龄'}

相关文章:

Python之xToolkit库

文章目录 一、xToolkit是什么?二、准备工作1.引入库2.导入数据 三、使用时间模块-xdatetime判断时间格式是否正确get方法获取时间戳获取年月日时分秒时间推移计算时间替换时间扩展两个时间的差值开始与结束时间时间是否在指定区间中 字符串模块-xstring字符串格式校…...

2w+深度梳理!全网最全NLP面试题总结!

目录 技术交流群 1、命名实体识别常见面试篇2、关系抽取常见面试篇3、事件抽取 常见面试篇4、NLP 预训练算法常见面试篇5、Bert 常见面试篇6、文本分类 常见面试篇7、文本匹配 常见面试篇8、问答系统常见面试篇FAQ 检索式问答系统常见面试篇问答系统工具篇常见面试篇 9、对话系…...

Spring 学习(五)JavaConfig 实现配置

1. 使用 JavaConfig 实现配置 JavaConfig 是 Spring 项目的一个子项目,Spring 4 后成为核心功能。 注意: 如果开启包扫描,加载配置类以后就可以通过反射拿到配置类中的对象了。Bean 只写在方法上,返回的是一个对象,但…...

【Synapse数据集】Synapse数据集介绍和预处理,数据集下载网盘链接

【Segment Anything Model】做分割的专栏链接,欢迎来学习。 【博主微信】cvxiaoyixiao 本专栏为公开数据集的介绍和预处理,持续更新中。 文章目录 1️⃣Synapse数据集介绍文件结构源文件样图文件内容 2️⃣Synapse数据集百度网盘下载链接官网下载登录下…...

【运动规划算法项目实战】Dynamic Window Approach算法(附ROS C++代码)

文章目录 前言一、简介1.1 DWA算法原理1.2 DWA算法的应用场景1.4 DWA算法的优缺点1.4.1 优点1.4.2 缺点二、代码实现2.1 算法细节2.1.1 DWA的控制输入:2.1.2 动态窗口的计算2.1.3 评价函数的优化2.2 程序说明2.21 PathGenerator2.2.2 WaypointAction2.2.3 使用方法2.3 代码演示…...

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 A: 子 2023

[蓝桥杯 2023 国 B] 子 2023 试题 A: 子 2023 【问题描述】 小蓝在黑板上连续写下从 1 1 1 到 2023 2023 2023 之间所有的整数,得到了一个数字序列: S 12345678910111213 ⋯ 20222023 S 12345678910111213\cdots 20222023 S12345678910111213⋯2…...

Unity 场景淡入淡出效果

一. 使用Dotween&#xff0c;建议使用我的方式 FindObjectOfType<SceneFadeInAndOut>().FadeIn(() > { Debug.Log("Fade in MenuStart Scene"); }); using DG.Tweening; using System; using System.Numerics; using UnityEngi…...

快速使用Spring Cache

哈喽~大家好&#xff0c;这篇我们来看看快速使用Spring Cache。 &#x1f947;个人主页&#xff1a;个人主页​​​​​ &#x1f948; 系列专栏&#xff1a;【日常学习上的分享】 &#x1f949;与这篇相关的文章&#xff1a; R…...

Scrum敏捷开发培训内训:提升团队能力和效率的重要途径

在当今软件开发领域&#xff0c;Scrum敏捷开发方法越来越受到重视。Scrum是一种以团队协作为基础&#xff0c;注重灵活性和快速响应变化的方法。 为了帮助团队更好地掌握Scrum敏捷开发&#xff0c;培训变得越来越重要。Scrum敏捷开发方法注重高效协作、快速迭代和持续改进。通…...

kaggle新赛:Optiver 美股价格预测赛题解析

赛题名称&#xff1a;Optiver - Trading at the Close 赛题链接&#xff1a;https://www.kaggle.com/competitions/optiver-trading-at-the-close 赛题背景 证券交易所是快节奏、高风险的环境&#xff0c;每一秒都很重要。随着交易日接近尾声&#xff0c;强度不断升级&#…...

Vue 学习笔记 错误ResizeObserver loop completed with undelivered notifications

环境Vue3 Ts 使用了el-table 后&#xff0c;容易出现如下错误 ERROR ResizeObserver loop completed with undelivered notifications. at handleError (webpack-internal:///./node_modules/webpack-dev-server/client/overlay.js:299:58) at eval (webpack-internal:///./nod…...

Wi-Fi直连分享:Android设备间的高速连接

Wi-Fi直连分享&#xff1a;Android设备间的高速连接 引言 随着无线局域网&#xff08;Wi-Fi&#xff09;的普及和发展&#xff0c;使用Wi-Fi直连技术&#xff08;P2P&#xff09;在没有中间接入点的情况下实现设备间直接互联成为可能。通过Wi-Fi直连&#xff0c;具备相应硬件…...

LeetCode 面试题 05.06. 整数转换

文章目录 一、题目二、Java 题解 一、题目 整数转换。编写一个函数&#xff0c;确定需要改变几个位才能将整数A转成整数B。 示例1: 输入&#xff1a; A 29 &#xff08;或者0b11101&#xff09;, B 15&#xff08;或者0b01111&#xff09; 输出&#xff1a; 2 示例2: 输入&a…...

增强for循环和一般for循环的对比使用

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。个人B站主页热爱技术的小郑 &#xff0c;视频内容主要是对应文章的视频讲解形式。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘…...

云原生之使用Docker部署RSS阅读器Huntly

云原生之使用Docker部署RSS阅读器Huntly 一、Huntly介绍1.1 Huntly简介1.2 Huntly功能2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Huntly镜像五、部署Huntly5.1 创建挂载目录5.2 创建Hun…...

Powershell 实现禁用密码复杂性,空密码

前提条件 开启wmi,配置网卡,参考 实现一键关闭密码策略和远程空密码登录 最近客户需要的一个无法理解的需求,需要远程登录不输入密码,安全性没有了还要实现,没办法客户是上帝,客户怎么开心怎么来都行,安全性问题告知不重视,实际环境不建议一下操作,只要联网你被黑的哦…...

【c语言】详解动态内存管理

目录 关于动态内存分配malloc和calloc函数介绍动态内存回收----freerealloc函数介绍常见的动态内存错误 关于动态内存分配 回想一下我们之前学过的内存开辟方式&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间在学…...

深度学习概念——端对端

目录 1、端对端是什么2、端对端有什么用3、例子4、引用 在读论文的过程中反复遇到端对端的概念&#xff0c;就需要理解深刻一些。在此将收集到的一些资料拿出来辅以自己的拙见&#xff0c;请大家多多批评指正&#xff01; 1、端对端是什么 在计算机学科中有一种算法叫分治法&a…...

苹果触控笔有必要买吗?平价ipad电容笔推荐

其实&#xff0c;市面上的数码类产品很多&#xff0c;有的侧重于美观&#xff0c;有的侧重于功能&#xff0c;有的侧重于性能。与iPad平板电脑搭配使用的电容笔同样也如此。因此&#xff0c;在选购电容笔时&#xff0c;一定要了解有关电容笔的知识。在购买之前&#xff0c;一定…...

React的高阶函数

1.认识高阶函数 高阶组件 本身不是一个组件&#xff0c;而是一个函数函数的参数是一个组件&#xff0c;返回值也是一个组件 高阶组件的定义 import ThemeContext from "../context/theme_context"function withTheme(OriginComponent) {return (props) > {retur…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...