- 博客(47)
- 收藏
- 关注

原创 python开发PC端桌面应用
python开发PC端桌面应用项目场景: 很多情况下需要用很短的时间开发一款在windows上离线运行的小工具,以便解决一些现实问题。比如公司近期有个紧急项目,需要根据算法需求人工标注海量的地址信息,开发周期和工具易用性上都是有些挑战的,此时选择python开发是个明智的选择。 下面对python开发桌面应用工具的步骤做下总结。开发环境准备python开发我选择在Pycharm 上进行,新建工程,配置解释器及venv,这些跟普通的python项目开发一样。安装PyQt5及PyQt5-too
2020-09-09 11:46:32
17874
3
原创 Cython加密多层目录中的Python脚本方案
近期有一个Vue+Java+Docker项目中需要加密Python脚本的需求,调研后决定采用Cython。
2025-04-09 16:09:26
317
原创 Next.js + SQLite 项目 Docker 生产环境部署方案
(date通过以上配置,你将获得:✅ 可复制的生产环境部署✅ 持久化的 SQLite 数据库存储✅ 自动化的迁移流程✅ 完善的监控方案✅ 企业级安全实践。
2025-04-07 15:59:12
465
原创 【翻译】OmniSQL——大规模生成高质量文本转SQL数据
我们提出了一套自动化、可扩展的文本转SQL数据合成框架(如下图所示),并基于该框架发布了首个百万量级文本转SQL数据集SynSQL-2.5M。该数据集包含超过250万条多样化的高质量数据样本,覆盖16,000余个跨领域数据库。在SynSQL-2.5M基础上,我们推出了OmniSQL系列模型(7B/14B/32B三个版本)。微调过程中还融合了Spider和BIRD提供的人类标注高质量数据。论文链接: https://arxiv.org/abs/2503.02240。
2025-03-25 11:04:51
1041
原创 一篇文章入门Next.js:从理论到实战,轻松上手全栈开发
通过本文,你已经掌握了Next.js的核心功能:文件路由、数据获取、API开发和部署。Next.js极大地简化了全栈开发流程,让你能更专注于业务逻辑。现在,尝试用Next.js动手搭建你的第一个项目吧!延伸资源Next.js官方文档Vercel部署指南Next.js实战项目合集动手练习创建一个包含首页、关于页和个人作品集的网站使用SSG生成静态页面添加一个联系表单的API端点部署到Vercel并分享给你的朋友!遇到问题?欢迎在评论区留言讨论!🚀。
2025-02-28 17:32:16
763
原创 Dify:开箱即用的AI Agent工厂——从新手到专家的全景指南
示例:股票查询插件description = "查询实时股票信息"# 调用第三方APIreturn {
2025-02-26 17:30:32
1694
原创 Gradio:零代码构建AI服务的魔法工具箱
""",**kwargs从Weeks到Hours:开发周期数量级缩短从专家到大众:非前端工程师也能构建专业界面从演示到生产:支持从小型Demo到企业级应用行动指南尝试官方教程(30分钟入门)将现有模型转换为Web服务(1小时实践)当AI能力可以像搭积木一样快速组合,我们正站在人工智能普惠化的关键转折点。Gradio这把打开AI服务之门的钥匙,你准备好使用它了吗?
2025-02-25 17:23:50
740
原创 React vs Next.js:前端开发的两把利剑,到底怎么选?
React是“基础工具”,适合自由度高的 UI 开发Next.js是“生产力工具”,适合快速交付生产级应用组合使用:Next.js ≈ React + 路由 + 服务端渲染 + 优化工具最终建议:新手从 React 入门,掌握组件化思维后,直接用 Next.js 开发真实项目!
2025-02-24 17:28:19
1077
原创 一篇文章读懂AI Agent
当大模型还在回答问题时,新一代AI Agent已经能自主订机票、管理股票组合、运营跨境电商店铺——这不是科幻电影,而是正在发生的技术革命。本文将深入解析AI Agent的技术本质与商业应用。
2025-02-21 16:23:19
914
原创 一篇文章读懂多模态大模型
想象一个只会做数学题的天才少年,遇到语文作文就束手无策——这就是传统AI模型的真实写照。多模态大模型(Multimodal Large Model)的诞生,打破了这种"偏科"局面,让AI真正成为能看、会听、懂语言的"全能学霸"。技术定义:多模态大模型是指能够同时处理和理解多种数据模态(文本、图像、语音、视频等)的通用人工智能模型,通过深度学习架构实现跨模态信息的对齐、融合与推理。典型代表包括GPT-4V、Google Gemini、Flamingo等。核心突破视觉理解:准确识别图像中的物体、场景、文字。
2025-02-20 18:07:22
758
原创 一篇文章读懂大模型类型:LLM、TTS、Text-Embedding、Rerank
以下是的定义、核心理解及应用场景的详细说明,帮助你在实际项目中合理选择和应用。
2025-02-19 14:26:44
2073
原创 探究Redis
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。一致性哈希分片:哈希分片的改进,利用扩展节点,有效解决重新分配节点带来的无法命中问题。解决方案:对于查询为空的key,直接设置一个默认值存放到缓存;解决方案有:使用锁或队列、为key设置不同的缓存失效时间、二次缓存。缓存中不存在的数据,每次都需要查询数据库,其实就是缓存失效现象。Redis是一种常见的缓存技术,通常用来改善网站性能。范围分片:按数据范围值来分片。
2024-10-22 18:57:41
351
原创 NaiveUI与ElementUI 比较分析
在前端开发的广阔领域中,Vue.js作为最流行的前端框架之一,为开发者提供了丰富的组件库,其中NaiveUI和ElementUI是两个备受瞩目的选择。本文将深入分析这两个组件库的特点、优劣势以及适用场景,帮助开发者在项目中做出更合适的选择。
2024-07-12 17:13:27
4792
原创 解决CUDA error: no kernel image is availabel for execution on the device
有一种可能,不需要升级cuda版本,直接更新torch版本就可以解决问题。时间原因,不做验证了。
2024-07-12 16:46:50
1363
原创 前端vue项目升级nodejs后无法运行了
排查发现新版本的nodejs使用的openssl和旧版本不同,导致项目启动出错。最方便的方法是在启动命令中环境变量。加上后,运行、和编译打包一次性通过。
2024-07-01 16:05:27
433
原创 解决Elasticsearch 启动失败:max virtual memory areas vm.max_map_count [65530] is too low
以上操作下来,elaticsearch服务正常启动了,重新部署下kibana,报错消失了。到此,问题解决。
2024-06-19 09:41:16
2537
原创 vue组件的生命周期钩子函数
此时,我们可以在created生命周期钩子函数中发起异步请求,然后在请求完成后更新组件的数据。此时,我们可以在beforeRouteUpdate生命周期钩子函数中监听路由变化,并在变化后更新组件的数据。通过对以上生命周期钩子函数的理解和使用,我们可以在不同的阶段执行相应的操作,比如初始化数据、发送网络请求、操作DOM等。在上面的代码中,我们在beforeRouteUpdate生命周期钩子函数中监听路由变化,并在变化后更新组件的数据。此时,组件的数据和方法已经初始化完成,可以进行数据的获取和初始化工作。
2024-05-20 16:23:41
1117
原创 vue项目中定时器使用
在Vue项目开发中,定时器是一种常用的技术手段。setTimeout,是JavaScript中的一个内置函数,可以在指定的时间延迟后执行一段代码;只执行一次;setInterval,是JavaScript中的常用的定时器函数,可以按照指定时间间隔重复执行一段代码;这里我们重点介绍setInerval的用法。当我们要实现定时更新界面或者轮询接口数据时,用setInterval非常合适。
2024-05-20 16:01:05
1625
原创 解决生产环境突然报错“Kibana server is not ready yet‘’
,Kibana上进行数据的增、删、改、查很是方便,但突然有一天在浏览器上打开kibana地址,提示‘Kibana server is not ready yet。确定ElasticSearch服务是否正常:ElasticSearch服务正常,因为接口访问ES正常,日志未看到明显报错。根据网上的办法,删除掉kibana索引后,重新创建Kibana服务并启动,问题解决。目前为止,造成该问题的原因不确定,大概率是因为ES服务异常退出导致。尝试依次重启ElasticSearch、Kibana未解决;
2024-04-28 13:40:26
1133
3
原创 多个gradio服务实现负载均衡
于是,增加了一块GPU,单个服务用两块GPU,测试后发现仅仅是显存分在两块卡上了,速度并未提升。要实现直接跳转到被分发到的服务的 IP 地址,你可以修改 Nginx 配置,使其将被分发到的服务的 IP 地址包含在 HTTP 响应头中。然后,在客户端收到响应后,可以从响应头中提取被分发到的服务的 IP 地址,并将用户重定向到该地址。最后,用户访问入口,在已有的一个前端页面上建个图标,点击图标触发nginx服务地址请求,用fetch API获取到响应头中被分发到的服务的地址,跳转过去即可。
2024-04-15 09:41:33
978
1
原创 Vue和FastAPI实现前后端分离
一个是它的异步处理性能比较好,二是它可以类似java swagger的API交互文档,这个对应前后端分离多人开发非常友好。之前总结过Vue和Flask实现前后端分离,这次同样借个小项目实践、并总结下Vue和FastAPI实现前后端分离。
2024-04-03 15:18:34
3198
1
原创 将算法推理函数封装成Restful API
如果要快速构建一个算法应用,便于用户在线体验算法推理效果,采用gradio是个不错的选择。然而,要集成到业务程序中,比如要支持java等语言去调用(发送请求,获取到推理结果),此时便需要将算法推理函数封装成Restful API。这里,简单总结下快速封装Restful API的步骤。业务端要做一个演示程序,里面包含一个目标检测算法,算法人员如何将自己跑在GPU服务器上的算法程序交付给业务人员呢?将算法推理函数封装成Restful API;
2024-02-27 16:21:24
785
原创 docker使用总结
在平时的工作中,部署软件服务或者多人用一台GPU服务器开发算法模型,为了互不影响,而且便于环境迁移,用docker是很好的选择。这里简单总结下,分享给大家。
2024-02-04 16:04:48
680
原创 ElasticSearch基础用法
Elasticsearch是一个开源的、分布式的、实时的搜索和分析引擎。它允许用户近乎实时地存储、检索大量数据,并能够高效地对其进行全文搜索、聚合和分析。
2024-01-26 11:40:54
818
原创 网络爬虫实践小结
目前只能通过搜寻url规律,发现里面的pageId是9位数字字符,大概确定了范围,进行暴力遍历。第一步:向确定的url发送请求,接收服务器的响应信息;近期工作中要解决两个问题,一个是数据组需要网爬一些图片数据,另外一个是要批量爬取公司用于文档协同的一个网站上的附件。这里附上代码,供参考。python在网络爬虫方面提供了一些框架,Scrapy、Pyspider等,由于我们要实现的都是小功能,用一些现成的库即可。第二步:对接收到的信息进行解析,找到需要的标签内容(通常是我们需要的图片或文件的url);
2023-10-11 17:00:46
1248
原创 gradio初体验
当设置成多线程后,当多个用户并发请求,出现了检测结果和输入的检测项不对应的情况,将concurrency_count设置成1,也就是单线程后问题得到解决。这里遇到一个问题,对于输入的图片点击“检测”后,创建一条记录,当算法结果出来后,用户根据结果进行评价反馈,这些反馈信息要保存到这条记录中。将前端部件、后端业务和算法推理进行了封装,简单清洗,几行代码就可以搭建一个AI算法的应用,在浏览器上检验算法效果,直观高效,消除了算法到应用之间的鸿沟。后续有时可以对gradio框架源码研究下,进行二次开发。
2023-07-25 19:03:05
3813
4
原创 浅谈大模型的出现
ChatGPT的惊人效果让我们不得不重新审视人工智能。对于AI我们需要客观看待,不可过渡夸大,觉得马上机器就可以具备人的情绪和一切思考力,对人类带来威胁之类的;但也不可轻视,要以开放的心态去拥抱新技术,去实现新的可能。
2023-07-13 15:22:29
363
原创 windows上的中文文件名上传到linux上乱码问题解决
至此,两种方法结合,问题基本搞定。部分文件夹中文名无法用convmv转码的原因,初步分析应该是来源和其它的不一样,但用python可以获取到原来的中文名,进行重命名即可解决。附上python批量转码的代码。convmv -r 应该是递归子文件夹,但仍存在部分子文件夹下文件名未进行转码,因此编写bash 脚本批量转码。windows上中文默认编码格式是gbk,而linux默认编码格式是utf-8,因此需要将文件名转码。./gbk2utf8.sh .(文件路径)
2023-02-28 10:26:35
2751
原创 模型评价标准
为了了解模型的泛化能力,即判断模型的好坏,我们需要用某个指标来衡量,有了评价指标,就可以对比不同模型的优劣,对模型进行针对性地调参优化。随着机器学习在不同领域中的应用,其评价方式需要和实际业务相结合,通过确定目标来定量设计评价标准。以下总结出不同类别模型的通用评价指标。
2023-01-18 14:00:37
1924
原创 PyQt5 多线程实例
前言PyQt的所有窗口都在UI主线程中,也就是main函数中执行了QApplication.exec_()的线程中,在该线程中执行耗时较长的操作时,会导致当前窗口停止响应。为了避免上述情况发生,需要用QThread开启一个子线程去完成耗时的操作。问题描述在实现数据清洗工具时,数据量通常很大,清洗过程会比较耗时,当点击执行后,当前窗口会卡住,有个圈不停再转,直到清洗任务执行完成,用户体验非常不好。问题解决通过QThread为清洗操作创建一个线程,在主线程中触发该线程执行。子线程创建:from
2022-03-11 14:53:21
2205
原创 图片数据清洗
前言数据对于深度学习算法模型的效果至关重要。通常,在对采集到的大量数据进行标注前需要做一些数据清洗工作。对于大量的数据,人工进行直接清洗速度会很慢,因此开发一些自动化清洗工具对批量数据首先进行自动清洗,然后再进行人工审核并清洗,可以很大程度上提高效率。工具功能根据收集到的需求,工具主要实现了以下功能:统计数据信息(总占用空间、数量、损坏图片数);去除已损坏图片,去除模糊图片,去除相似图片,机动车车色分类,昼夜分类统计数据信息# 获取数据集存储大小、图片数量、破损图片数量def g
2022-03-10 19:17:44
15293
16
原创 数据结构之哈希表
概念哈希表是一种数据结构,通过哈希函数来组织数据,以支持快速插入和搜索。哈希表的关键思想是使用哈希函数将键映射到存储桶。更确切地说,当我们插入一个新的键时,哈希函数将决定该键应该分配到哪个桶中,并将该键存储在相应的桶中; 当我们想要搜索一个键时,哈希表将使用相同的哈希函数来查找对应的桶,并只在特定的桶中进行搜索。哈希冲突理想情况下,我们设计的哈希表可以将键和桶一一映射,然而很难实现。那要解决哈希冲突,我们可以将桶的结构设计成数组或者链表,如此就可以将冲突的键(或键值对)有组织地
2021-11-10 10:06:12
489
原创 数据结构之链表
和顺序表相对应,有个链式存储的数据结构,命名曰链表。单链表节点中只存储后项节点指针的链表,称为单链表。# 定义节点class LinkNode(object): def __init__(self, data=None): self.data = data self.next = None关于单链表的创建、遍历、插入和删除代码示例如下:# 2021.11.8# 链表# 定义节点class LinkNode(object): d
2021-11-08 12:53:08
278
原创 三个基础排序算法
排序在计算机算法中非常常见也非常基础,不管是准备面试还是纯属兴趣,掌握它都很有必要。选择排序基本思想:预置list[i]为最小,逐个比较range(i,len(list))里的元素,找到最小元素的下标,和刚开始预置的list[i]交换;前部分作为有序区,后面部分作为无序区,知道遍历完所有无序区。冒泡排序基本思想:逐个比较相邻的元素,后者小,则进行交换,最终将最大的数(无序区局部最大值)推送到列表最后端(有序区)。插入排序基本思想:从第2个元素开始,将该元素插入到已排好的有序区内,
2021-11-04 11:52:30
214
原创 python之闭包
前言闭包作为python高级特性中的一个,初学总觉其披着一层神秘的面纱,这里我们来一起揭开这层面纱吧。那什么是闭包呢?闭包,又称闭包函数,和普通的嵌套函数类似,闭包中包含外部函数和内部函数,不同之处是闭包中外部函数返回的不是一个值,而是内部函数,即闭包对象;通常,该返回的函数会被赋值给一个变量,继而被调用执行。为何要是用闭包比如,已知三条直线上某一个点的横坐标x,求其纵坐标y。如果不使用闭包,实现如下:def line1(x): return 2 * x + 1def..
2021-10-27 14:41:51
785
原创 初识Redis
什么是RedisRemote Dictionary Server,即远程字典服务,是一款开源的、可基于内存也支持持久化的key-value数据库,提供多种语言API。通常应用于需要处理大规模数据读写的场景中。和其它关系型数据相比,其有以下优势: 基于内存,读写操作性能优越,可以支持每秒十几万次的读写操作; 支持集群、分布式、主动同步等配置; 具备事务能力,保证了高并发场景下数据的安全和一致性。 数据结构Redis支持五种数据结构: 字符串(string)
2021-10-26 17:09:08
428
原创 docker容器中程序退出异常,GPU未释放
1、问题描述近期在docker容器中对一批数据通过算法进行清洗时,当数据处理完成后发现进程未正常退出,GPU内存未正常释放。[root@ai66 ~]# nvidia-smiSun Sep 26 09:10:45 2021+-----------------------------------------------------------------------------+| NVIDIA-SMI 455.38 Driver Version: 455.38 CUDA V
2021-09-26 13:40:32
1053
原创 python之装饰器
引言软件开发中,当需要创建高度重复的代码时,需要寻求一种优雅的解决方案。python中的元编程即解决这类问题,通过创建函数和类来修改、生成或包装已有的代码。装饰器就是python中用来包装函数的一种机制。内建装饰器python提供了一些内建装饰器,比如我们常用的@staticmethod、@classmethod、@property。装饰器内部的代码一般会涉及创建一个新的函数,利用*args,**kwargs接收任意参数,在该函数内部会调用被包装的函数,并返回被包装函数的结果;最后这个新创建的函
2021-09-24 16:55:40
159
原创 python中大数据文件读取
python中大数据文件读取python中经常会遇到读取大文件的场景。文件较小时,我通常采用下面方法,readlines(),该方法会一次性读取文件的所有行,并将其放入list中,最后存入内存中。可想而知,当文件较大是,内存占用会非常高,甚至造成内存溢出,进程被系统kill掉。# 读取方式一with open(file_path, 'r+', encoding='utf-8') as f: count = 0 for line in f.readlines(): cou
2021-09-16 16:50:38
3746
1
原创 jupyter-notebook二次开发
背景公司内部提供给算法人员用于模型训练的平台开发需求中提出了嵌入Jupyter Notebook模块,而Jupyter Notebook是开源的,方便后续对部分细节进行功能定制和优化,需要对其进行调研,并梳理出二次开发的环境搭建、版本编译、生产环境部署流程,此文档对以上工作内容进行总结。jupyter-notebook简介2.1 功能简介Jupyter Notebook官方介绍是:基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。优点举例如下:1
2021-09-08 17:19:02
4273
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人