封面图片

摸索AI(一)安装Ollama和本地大模型部署

之前也是花了巨多的时间从Github上下载了一些AI摸索的实践项目,涉及到的有文生图、文生视频、图生图、语音克隆、数字人等,它们的实践对电脑配置的依赖有一定的要求,而且实践的过程复杂程度较高,属于摸索着玩玩而已。本次摸索AI的范围则是面向对擅长领域的代码接入实践。如果你对Java代码交互的AI大模型有一些兴趣,又或者是跟我一样不知从哪里入手,或许看看我这里分享的前后实践过程与实践的案例范围,也是不错的选择。 所以,本系列教程相关的实践是在本地部署大模型,并且使用Java代码与本地的大模型进行交互。除了本地部署的大模型以为,也是可以付费接入网络上的一些付费大模型,比如Deepseek、千问等等,但是对我个人来讲,私有化的本地大模型更加有意义,毕竟可以免费的集成到企业级应用实践当中。 1.安装Ollama (1)Ollama 是一个用于简化本地大模型部署和使用的平台或工具。它的主要作用是帮助用...

文章分类:经验分享 技术知识

Spring Ai

拖动式验证码系列(三、接入平台设置)

前两篇文章介绍了如何介入这个验证码平台,本篇主要介绍一下截图平台的后台管理相关功能,围绕验证数据、配置中心、权限管理、快速接入这四块进行说明,首先得登录,这是用户登录后的可见菜单。 验证数据 验证数据栏可以一些图形化统计图标,分别是查看验证通过与拦截(24小时、周、半月)、拦截情况占比(一周、半月)、验证码加载耗时(一周、半月)、一次通过平均尝试次数、一次通过尝试次数分布等,比较方便的知晓被调用的明细情况,给一个图参考如下: 配置中心 配置中心分为3块功能分别是外观配置、安全配置、通用配置,具体如下。 1)外观配置是主题色、语言设置,可以设置验证码的拖动块的主体颜色,比如喜欢大红色就可以设置为红色主体;语言设置可默认设置为简体中文、繁体中文、英文,我想它的自适应应该跟就国际化实现一样,根据浏览器的默认语言去适配的,截图参考如下: 2)安全配置可调整验证码的使用场景、验证策略、恶意拦截等级、...

文章分类:经验分享 技术知识

验证码

拖动式验证码系列(二、进阶示例)

基本介绍 本篇文章所讲的进阶示例只为简单的实现在一个页面中构造多个验证码的示例效果(也就是说在一个页面中生成多个验证码的调用),其实实现(主要是我们是拿来使用)起来比较简单,从官网的说明文档中可以找到另外的一些实现,在登录后的快速接入--定制接入--构造函数中可以看到共有3中构造函数方式的使用,非常简单,这些东西自己必须要亲自去了解一下,由于前文中的hello实现使用的是元素绑定的方式,故我首先使用第二种构造函数的方式实现,比较简单,代码参考如下: <!DOCTYPE html> <html> <head> <title>欢迎来到陈冬冬(雪地里走)的学习天地 | 经验分享整理平台 | 陈冬冬|接入腾讯验证码多实例</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial...

文章分类:经验分享 技术知识

验证码

拖动式验证码系列(一、入门体验)

基本介绍 拖动式验证码现在是越来越流行了,之前我也一直没有去了解它,直到去年有朋友问了我一下,我经过几天的搜索发现好像并没有一些开源的实现,有一些第三方的接入也是收费的,后来也就没有跟进了解了,但时不时的会搜索一下这方面的实现,对于一些前端的canvas的实现也瞅过,就是一直没有找到一个让我有想要去实践的案例,也就没有管它了,然而近期在关注一些“个人博客”的网站时,在“盛悦个人博客”(具体地址见本站的友情链接)中的友情链接页面中点进去了“IT学无止境”的页面中,通过他的留言板功能中见识到了一款滑动式的验证码,顿时我了解了一下这里的实现,发现接入的是腾讯的验证码,于是乎查了一下腾讯验证码,发现竟然还是免费的(每小时验证码加载上限2000次),而且接入的非常简单,于是就找时间将它“浅浅”的了解了一下,就有了本篇文章相关的内容。 闲话少说,如果想了解接入腾讯验证码的功能可接着往后看,首先申请它的...

文章分类:经验分享 技术知识

验证码

Java按字节截取字符串的实现

基本描述 本文所描述的按字节截取字符串是指在一个字符串中按指定的长度进行截取,与String的substring不一样的是,这里的字节表示是中文占2个字节,字母与数字等占1个字节,例:字符串“2018年8月31日”按3位截取则为201,按4位截取为2018,按5位截取为2018,按6位截取为2018年...按8位截取为2018年8,按9位截取为2018年8月,等等,主要就是当这个指定位置为中文时,不能出现被截断成半截的乱码情况。 理论上讲,按字节截取字符串可以应用在许多地方,关于此需求的实现从网上找了一些其它的示例,发现本人看不懂(在这个算法方面太渣太渣),于是就自己琢磨着去实现了一下,主要是将字符串转换为Unicode编码的byte数组,再去截取数组中的数据,我们知道中文有几种编码情况,GBK的一个中文字符占2个字节,英文占1个字节;UTF8的一个中文占3个字节,Unicode编码的中文...

文章分类:经验分享 技术知识

ueditor字符串空格替换的问题

本站使用的ueditor编辑器,目前所有的内容存储的为html标签格式的数据,现在想专门再存储一下纯文本字段用于搜索使用,故有以下两种方式: 1)数据库存储的有纯文本,只不过只存储了250个字符长度的数据,将数据库长度扩充,去掉250个长度字符的限制,所有的数据均通过页面重新点击编辑保存,重新存储数据; 2)使用类似Jsoup等html解析组件将数据库存储的html标签数据解析,获取其纯文本后执行update; 显然第二种方式更靠谱,更是专业编码人员的首选,此为背景,在解析html的纯文本时发现文字内容前面有些许空白字符,想去除这些空白字符就有了本篇文章; 这些个空白字符串非常顽强,将它文字前面的空格给替换掉,发现死活替换不了,分别使用了String的replace、replaceAll的\s等正则与apache的StringUtils的deleteWhitespace、trim、stri...

文章分类:经验分享 技术知识

在线编辑器 ueditor

Java导出Excel多列纵向合并的实现

关于导出Excel的文章写的比较多了,今天来分享一款单元格纵向(常见的表格合并以纵向为多)合并效果的实现。 实现优点 代码简单,调用方便; 支持Jxls模板导出Excel的二次单元格合并(模板导出表示数据量不至于太大); 支持Poi内存导出Excel的批量合并(分批次的进行单元格合并); 支持标题占用多行的情况; 合并前提 所有需要合并列的数据需要提前拍好顺序; 特别注意 在大数据量导出时,数据往往需要以分页的实现进行数据导出,此时的分页不应该是传统意义上的分页,而是以一个最大维度的待合并列作为一组数据为前提的分页,保证多个分页中不会出现单元格合并串行的情况(比如读取的第二页的数据需要还需要与第一页末尾处的数据进行合并等),所以我建议的方式可以是先将待合并区域最大维度去重复然后每次循环读取该维度下的内容进行单元格合并,即上文说的Poi创建Row的方式,处理合并区域也只会在当前的数据范围内进...

文章分类:经验分享 技术知识

Jdbc调用oracle存储过程的封装

基本描述 现在有一半的逻辑都是在存储过程中写的,从第一次使用jdbc去调用存储过程时,我就觉得传统的jdbc调用存储过程太“复杂”了,也可以说是繁琐了,复杂的不在于那些调用的代码,而是调用过程中代码里面往往都是由不确定参数个数(不确定输入参数个数、输出参数个数)、输出参数类型、使用索引的形式设置或获取参数引起的太不简便,常常都是一写一大片,别人拷贝过去也是越发感觉太乱,就如同使用传统的jdbc查询数据*作ResultSet对象取值一样,直接这么用太不科学。所以就有了本篇文章,代码封装最大的意义我认为是最大程度上简化调用,先来看一下传统的jdbc调用存储过程是怎样的,并且分析一下如果简化一下封装可能会有哪些问题要解决?调用代码参考如下: 通过上面的代码我们可以看出如果是其它存储过程在调用时同样会存在下列几个问题: 1、调用时sql的?传入参数个数不确定; 2、存储过程的输入和输出参数个数均不...

文章分类:经验分享 技术知识

使用Jxls1.0导出Excel文件

很早很早就想写这么一篇文章了,但是觉得太简单了,就一直没写,直到昨天一个紧急的功能调整用到了此功能中的某项,由于时间太长记不大清楚了,随补上。在实现一些小型数据报表的时候,jxls是一个非常方便的实现方案,如果你还不了解,那正好就跟着我来熟悉一下吧。有人说我直接就用POI就可以实现,实际上jxls就是在poi的基础之上做的封装,它采用Excel模板的方式实现,配合el表达式来处理逻辑,也就是说我们的报表实现是基于事先创建一个最终效果的模板文件,在模板的基础上按照el规范去填充数据,最终显示效果。 组件优势 基本模板实现,Excel的报表易于维护 如果想修改某个单元格的显示样式,比如文本颜色、背景颜色、文本各种显示位置、边框、字体大小、千分位显示、百分百显示等等,都可以只需要修改模板,而不需要调整后台代码,也就省去了升级部署的一些问题。 API调用简单,表达式规范学习成本较低 生成报表时的A...

文章分类:经验分享 技术知识

Jxls2

MyBatis在普通Java中的应用

接着上一篇的quartz来说,背景都一样,涉及到dao层模块,最先是把以前封装的apache-dbutils组件拿过来,后来越来越觉得在代码里写一堆sql日后肯定会很蛋疼的,在能力范围内将代码写到最好,我理解的最好是可维护性最佳,毕竟niubility的人写出来的代码渣渣水平都是能改的,而渣渣写出来的代码反而niubility的人都改不了的,不废话了。 强烈建议按着这里过一遍http://www.mybatis.org/mybatis-3/zh/index.html,基本上你就都了解了,MyBatis的介绍说SqlSessionFactory对象只能适于一个环境,换句话说,如果你想适用于两个数据库,那么需要创建两个SqlSessionFactory实例,每个数据库对应一个;如果是三个数据库则需要三个实例,以此类推。 这里有一个概念需要说明一下,普通Java程序的意义这里解释的有些不科学,其...

文章分类:经验分享 技术知识

MyBatisPlus

quartz在普通Java中的使用

现在使用定时任务太普遍了,以前使用都是集成了spring环境,使用起来简单配置一下即可,功能强大,易于维护,这次工作中需要做一款小软件程序,并未集成spring,考虑使用jdk自带的Timer或者是使用quartz组件,由于现在常用的技术平台中也是使用到了quartz组件,也是基于包装后的使用(类似于普通Java类的方式调用),而非与spring集成,于是我就准备也使用Java普通类的方式进行使用。这里所说的Java普通类的含义是想表明非集成框架的方式,如果你也需要这种基于普通类的方式调用,那么这里你值得拥有,东西比较简单,直接上代码。 我们可在http://www.quartz-scheduler.org/;下载,下载来的文件包里面有一些例子,可以打开瞅上一眼,基本都是围绕创建调度工厂再创建一个调度任务,然后执行一个任务的逻辑处理,下文中我也是围绕只创建一个调度工厂的方式进行封装,参考如...

文章分类:经验分享 技术知识

quartz定时任务
本站信息

 运营时间: 天

 用户数量: 人

 文章数量: 篇

 评论数量: 条

 点赞个数: 个

 最后更新:

标签云