摸索AI(一)安装Ollama和本地大模型部署
之前也是花了巨多的时间从Github上下载了一些AI摸索的实践项目,涉及到的有文生图、文生视频、图生图、语音克隆、数字人等,它们的实践对电脑配置的依赖有一定的要求,而且实践的过程复杂程度较高,属于摸索着玩玩而已。本次摸索AI的范围则是面向对擅长领域的代码接入实践。如果你对Java代码交互的AI大模型有一些兴趣,又或者是跟我一样不知从哪里入手,或许看看我这里分享的前后实践过程与实践的案例范围,也是不错的选择。 所以,本系列教程相关的实践是在本地部署大模型,并且使用Java代码与本地的大模型进行交互。除了本地部署的大模型以为,也是可以付费接入网络上的一些付费大模型,比如Deepseek、千问等等,但是对我个人来讲,私有化的本地大模型更加有意义,毕竟可以免费的集成到企业级应用实践当中。 1.安装Ollama (1)Ollama 是一个用于简化本地大模型部署和使用的平台或工具。它的主要作用是帮助用...
文章分类:经验分享 技术知识
Spring Ai使用Jxls1.0导出Excel文件
很早很早就想写这么一篇文章了,但是觉得太简单了,就一直没写,直到昨天一个紧急的功能调整用到了此功能中的某项,由于时间太长记不大清楚了,随补上。在实现一些小型数据报表的时候,jxls是一个非常方便的实现方案,如果你还不了解,那正好就跟着我来熟悉一下吧。有人说我直接就用POI就可以实现,实际上jxls就是在poi的基础之上做的封装,它采用Excel模板的方式实现,配合el表达式来处理逻辑,也就是说我们的报表实现是基于事先创建一个最终效果的模板文件,在模板的基础上按照el规范去填充数据,最终显示效果。 组件优势 基本模板实现,Excel的报表易于维护 如果想修改某个单元格的显示样式,比如文本颜色、背景颜色、文本各种显示位置、边框、字体大小、千分位显示、百分百显示等等,都可以只需要修改模板,而不需要调整后台代码,也就省去了升级部署的一些问题。 API调用简单,表达式规范学习成本较低 生成报表时的A...
文章分类:经验分享 技术知识
Jxls2MyBatis在普通Java中的应用
接着上一篇的quartz来说,背景都一样,涉及到dao层模块,最先是把以前封装的apache-dbutils组件拿过来,后来越来越觉得在代码里写一堆sql日后肯定会很蛋疼的,在能力范围内将代码写到最好,我理解的最好是可维护性最佳,毕竟niubility的人写出来的代码渣渣水平都是能改的,而渣渣写出来的代码反而niubility的人都改不了的,不废话了。 强烈建议按着这里过一遍http://www.mybatis.org/mybatis-3/zh/index.html,基本上你就都了解了,MyBatis的介绍说SqlSessionFactory对象只能适于一个环境,换句话说,如果你想适用于两个数据库,那么需要创建两个SqlSessionFactory实例,每个数据库对应一个;如果是三个数据库则需要三个实例,以此类推。 这里有一个概念需要说明一下,普通Java程序的意义这里解释的有些不科学,其...
文章分类:经验分享 技术知识
MyBatisPlusquartz在普通Java中的使用
现在使用定时任务太普遍了,以前使用都是集成了spring环境,使用起来简单配置一下即可,功能强大,易于维护,这次工作中需要做一款小软件程序,并未集成spring,考虑使用jdk自带的Timer或者是使用quartz组件,由于现在常用的技术平台中也是使用到了quartz组件,也是基于包装后的使用(类似于普通Java类的方式调用),而非与spring集成,于是我就准备也使用Java普通类的方式进行使用。这里所说的Java普通类的含义是想表明非集成框架的方式,如果你也需要这种基于普通类的方式调用,那么这里你值得拥有,东西比较简单,直接上代码。 我们可在http://www.quartz-scheduler.org/;下载,下载来的文件包里面有一些例子,可以打开瞅上一眼,基本都是围绕创建调度工厂再创建一个调度任务,然后执行一个任务的逻辑处理,下文中我也是围绕只创建一个调度工厂的方式进行封装,参考如...
文章分类:经验分享 技术知识
quartz定时任务小小的整理一下OCR的实现
OCR以前偶尔看到过,从来没想过项目中会用得到这东西,感觉很高大上的样子。最近有一个需求是从一个PDF文件中读取数据,而PDF文件的内容为图片(相当于文件中没有文本,无法用鼠标选中复制),并且给了一个OCR的商业实现方案“泰比”,下载了它的应用软件试用了一下确实很强大,但是它的SDK需要线上申请,由他们销售联系注册申请试用,最后一步给了一个英文的网页让去填写什么什么的(没仔细看,你懂得)。由于是分析实现可行性,所以也查阅着一些开源组件的实现方案,感觉合适的大致上有两种:一、使用tesseract-ocr组件;二:使用tess4j实现; 对于这种高大上东西的如何实现不是我考虑的,对于我这种小渣渣选手来说,找到一个最合适的组件来满足需要就已经是最好的了。所以我重点关注方案的选型、使用角度。 tesseract-ocr是什么大家可以自行寻找理论,如果想在程序中使用,需要安装tesseract-o...
文章分类:经验分享 技术知识
报表导出Word与Excel的实现
也算是做过不少报表导出了,最多的导出类型为Word与Excel两种。下面容我来分析一下这些导出的实现方式。 一、导出Word的实现 1、使用 freemarker模板实现 此种实现是最普遍的,预先按照最终的需要调整好一个doc格式的文件,填上相关数据后,将此doc格式的文件转换为Word格式的xml文件,再编辑xml文件,将需要替换的位置写上一些变量、循环判断逻辑等,在后台使用freemarker实现为其填充数据,并将此文件的后缀格式保存为doc类型。 优点: 1)实现简单、易于维护,推荐使用; 2)可借助于freemarker技术对相关字段进行格式化、逻辑处理等; 3)导出效果可与实际操作Word效果一致; 缺点: 1)导出的格式为doc类型(docx的格式简单试了一下不行,没有继续深入); 2)如果后期导出的样式需要调整将会很痛苦,相当于模板需要重新维护一次; 2、使用拼html标签代...
文章分类:经验分享 技术知识
根据JSON生成JavaBean
根据json格式数据生成一个javabean对象,首先这是一个简单的功能,但是要写出一个比较好的版本实际还是有些难点的,这里跟大家分享一种实现,基于fastjson、freemarker。 实现要求 1. json格式中可包括boolean类型、String类型、int类型、金额类型等常见类型; 2. json格式中可出现其它关联对象,包括其对象类型、集合类型; 3. 相关联的对象类不能作为一个单独的类创建,作为子类创建在内部; 4. 理论上支持无限极JSON对象格式(可能会出现子类、孙子类、重孙子类等); 测试示例 一.最简单的json对象创建 1.json文本 { "active": true, "date": "2016-12-20", "id": 1001, "money": 5.25, "name": "china" } 2.生成的Java类 package com.vo; im...
文章分类:经验分享 技术知识
网页中的录音实现方案
前几天逛了逛论坛,发现了一个网页中录音的实现方案,基于flash实现,即在页面中嵌入一个flash实现录音,然后将录音的文件上传至服务器中,可以搜索一下该组件FlashWavRecorder,给出我看到的原文地址:http://uikoo9.com/blog/detail/java-flashwavrecorder-new,文章中有github地址的源码下载,此为背景。 作为储备的知识,我觉得研究研究还是挺不错的,故将此代码整理整理,摘出来一份儿干净的代码跟大家分享出来。注:此组件的API并未研究,如需正式使用需关注下flash与后台上传时的细节问题。 下面给出运行效果、下载地址,如下: ...
文章分类:经验分享 技术知识
使用SMB/CIFS做文件服务器
背景介绍 SMB/CIFS组件是一种Java访问共享文件夹的实现,使用它也是可以很方便的管理上传下载的文件,先闲话一些别的吧。很久以前有遇到文件的上传下载时,很“单纯”的将文件写至servletContext.getRealPath("/files");目录下,然后就没有然后了,后来慢慢的将某个服务器的共享文件夹以磁盘映射的方式作为本地的磁盘进行访问,也就是说访问时以Z:\\shares......去访问共享文件......在之前的项目中新做的文件上传下载有要求写入一个服务器上,而使用的技术实现则是从一个老系统中迁移出来的,我还一直以为用到的实现时上传的文档服务器提供的接口,并未多想,如果不是前段时间又遇到此种问题了,或许也就没有下文了。最近我找了找它还真的是一个开源组件,基于smb协议的文件访问。 一般项目当中的文档管理,基本的功能是对文档目录的列表读取、文件(夹)的增删改查以及文件的上...
文章分类:经验分享 技术知识
将Java程序制作成exe文件
背景介绍 以前关注过一段时间的制作Java安装程序的实现,当时找的是install4j,也跟着教程实现了一下,给我的感觉就是过程太复杂了,业余了解一下就够了,而前段时间的制作俄罗斯方块的安装包时发现了exe4j的实现,感觉制作过程简单多了。现在说一下这两个软件给我的感觉:install4j感觉是重量级的,制作出的安装程序有下一步下一步的安装功能,跟一般软件的安装过程差不多,而exe4j貌似比较轻量级了,就是将一套程序包写入exe文件,直接双击打开exe文件就是程序的执行文件,无需下一步一下一步的安装了(了解的有点片面了,有不当之处可指出),可按自己所需进行选择。 最近有个需求决定使用swing实现,swing这种东西用的太少了,但是一直都没丢,时不时的还用它写个小玩意儿,所以面对使用swing做一个程序问题不大,而开发工具就使用熟悉的MyEclipse自带的插件,之后再找一套swing的皮...
文章分类:经验分享 技术知识
RandomAccessFile分割、还原文件(三)
背景介绍 关于前面两篇分割、还原文件的介绍,示例代码运行无误,但发现遇到分割3.xxG大小的操作系统文件时,却出现错误,错误原因为:Exception in thread "main" java.io.IOException: Negative seek offset 意思是说指针位置指向的错了,后来分析半天代码发现在代码实现中定义的分割文件的大小用的int类型,而在参与指针位置计算的时候有long类型的参与,但结果还是ing类型的,可能是int越界吧,成了负数导致,将int修改为long类型的即可。另外还有一个地方计算分割文件的开始、结束位置时采用另外一种运算,感觉这种begin、end范围更加科学,代码参考如下: package com; import java.io.BufferedOutputStream; import java.io.File; import java.io.F...
文章分类:经验分享 技术知识
RandomAccessFile运营时间: 天
用户数量: 人
文章数量: 篇
评论数量: 条
点赞个数: 个
最后更新:
欢迎来到陈冬冬的学习天地 | 学习与经验整理分享平台