- 博客(438)
- 资源 (7)
- 收藏
- 关注
原创 《MyBatis 从入门到精通》
我在CSDN博客写了不少和MyBatis相关的博客,2015年时觉得自己写的太零散,不够系统全面,所以在GitBook创建了一本名为MyBatis最佳实践的开源电子书,当时写好了目录大纲,由于维护好几个开源项目,业余时间几乎都被占用,最终也只写了MyBatis Generator部分,也就是博客中的MyBatis Generator 详解。2016年3月份时,博文视点的孙奇俏编辑和我联系,然后就开始
2017-06-21 20:46:33 101193 43
原创 两款强大的SSL证书自动化工具:Certimate vs Certd
无论你选择哪一个工具,它们都能极大地简化SSL证书的管理流程。在这个安全至关重要的时代,使用这些工具可以帮我们节省时间,同时确保网站的安全性。希望这篇文章对大家有所帮助。如果你有使用这两款工具的经验,欢迎在评论区分享你的看法!
2024-09-24 08:00:00 705 1
原创 如何只用 CSS 制作网格?
在看这篇文章时,对其中的网格比较好奇,作者提供了 stackoverflow 的链接,就看到了来源的这个问题和众多回复。本文从里面挑选了一些个人比较喜欢的样式,贴在下面展示。
2024-09-24 07:15:00 1274
原创 群晖(Docker Compose)配置 frp 服务
为了方便远程电脑,访问自己电脑上的ComfyUI等服务,配置了 frp 服务。配置 frp 服务后,发现群晖中的一些服务也可以 stcp 安全的暴露出来。直接在群晖通过 Docker Compose 方式部署 frps 和 frpc,访问者通过 frpc 安全访问暴露的服务。使用的群晖的 Container Manager,可以先在 File Station 的 docker 下面创建 frp 目录,在目录中写好 frps.toml 和 frpc.toml 配置文件。
2024-08-27 07:45:00 2217
原创 MyBatis 通用 Mapper5 来了
通用 Mapper 是一个发布于 2014 年的开源项目,是第一个在 MyBatis 中实现了通用 DAO 的开源框架,发布距今接近 10 年,仍然有一部分开发者在使用,项目仍然在维护,主要通过开发者提交 PR 来进行维护。
2024-08-27 06:45:00 567
原创 使用Obsidian写Hexo博客
整个操作起来挺麻烦的,写到一半我都写不下去了,如果有人喜欢这种方式,或者喜欢我改造的这个博客主题,可以留言给我,我可以把主题以及整个博客整理出一个框架开源出来方便大家使用。直接基于现成环境写的时候,上面所有这些操作都是配置好的,你可以把重点放在内容创作上。博客地址:大家还可以说说你们打开博客的速度怎么样,当我第一篇发出去后,首批打开博客的人说加载速度很慢,图片很多,而且都比较大,打开慢就避免不了。文章内容的图片自动转换为 webp 格式,这种格式的压缩率很高,图片瘦身效果很好。
2024-07-05 07:30:00 1247
原创 我做了个Hexo博客
在了解这个主题的同时,我把 Hexo 官方的几百个主题都打开看过,一半以上的主题都失效了,演示页都打不开,还有很多文档不全,属于精品的最多能有几十个,符合自己需求的挺少,但是有一个。学了hexo文档、API,再学了Stylus和EJS后,改造起来就比较容易了,原来是漫无目的的找,现在直接根据规范来找文件和改造文件。一开始切入的主题就是如何添加边栏,花了不少时间做不出好看的效果,然后就放弃了,之后就是看如何让首屏图片展示的同时多漏出一部分文章的内容,避免一打开博客还以为进入了图站。这个主题是不是真的好看?
2024-06-23 10:37:34 610
原创 ❤️❤️❤️2024-06-23❤️❤️❤️
图生图,不同降噪程度的效果,更多AI图可以点击查看:https://blog.mybatis.io/gallery/517cb361
2024-06-23 10:32:47 148
原创 避免啰嗦,不要多此一举!
看到一段代码,写的比较啰嗦就用GitHub Copilot简化了一下,简化结果很简单,复杂度从273%降低到13%(复杂度使用IDEA插件。配合 IOC 使用时,像上面两个实现这样扩展就能增加新的策略,运行时扫描到就会自动注册,做到真正不修改任何代码,直接扩展新策略。你的判断条件和返回结果一致时,直接返回判断条件即可。,遍历放到 Map 中,没想到 Copilot 给出了一个更简单的实现!上面这个是 Copilot 给出的实现,比我常用的方式更简单,我没想到的地方是。的需求,这种方式很方便,附带消除了。
2024-06-06 09:58:52 493
原创 Redis 异常三连环
调用PageHelper时,你设置的分页信息已经绑定到线程,当满足条件执行 mybatis 查询时,分页信息会被消费并清除,当不满足条件时,分页信息仍然绑定在线程上,相当于埋了个雷,等其他请求再使用这个线程时,只要有查询,就会消费这里的分页信息,你的感受就是我没有调用分页,为什么查询被分页了?和错误1时完全不相关,所以前期处理的重点是错误2和3,这两个错误执行过程看着都是正常的,所以按照经验先解决序列化的问题,解决这个问题后如何问题解决就说明是序列化导致的后续两个问题。,并没有看到上面列的第一个异常。
2024-06-04 07:45:00 1441
原创 AI图 - 卡哇伊Q版 (7)
在看一本如何画Q版人物的绘画书时,收集了一些图片想临摹,收集过程中发现同类图片越来越多,肯定都是AI生成的了,就去搜有没有同款现成的Lora可用,下载了几个效果都很差,就找回以前的经验,准备了一些素材进行炼丹,炼丹很成功效果很好,下面是几个效果图。
2024-06-04 07:00:00 282
原创 来看一段有趣的代码
这段代码是对图片进行缩放,如果宽和高大于500就进行缩放,有意思的地方是明明可以直接计算出缩放倍率,偏偏要从 100%(i++位置调一下也能避免一次无用功)一直尝试到符合为止,我测试的图片是宽795高528,一直尝试到62%才满足,如果图片缩放涉及IO操作,消耗的资源可能会更大,经过查看 itextpdf 源码发现。宽高限制500的情况下和其他PDF格式的发票合并到一起时明显更窄,样式不统一不好看,通过查看PDF的宽高,经过计算将宽度设置为 595 的时候样式是统一的。
2024-05-11 11:32:33 581
原创 Spring AI ETL 流水线
先纠正中的一个错误,当启动 Ollama 之后,Windows会有托盘图标,此时已经启动了 Ollama 的服务,访问 Embedding 时不需要运行,只有访问 chat 时才需要启动一个大模型。Spring AI 提供的 ETL 流水线比较全面,使用很简单。提取、转换和加载 (ETL) 框架是检索增强生成 (RAG) 用例中数据处理的支柱。ETL 管道协调从原始数据源到结构化向量存储的流程,确保数据采用最佳格式,以便 AI 模型进行检索。
2024-04-16 11:45:00 1476
原创 Spring AI 应用 - 智能记者
参考实现: https://github.com/mshumer/ai-journalist上面是通过 Claude 配合 SERP 搜索 API,使用 Python 语言实现的,本文通过 GitHub Copilot 辅助改为了基于 Spring AI 的 Java 版本,本文使用的 OpenAI。
2024-04-11 08:00:00 1108
原创 AI - ComfyUI过程图(3)
ComfyUI 比 Stable Diffusion WebUI更灵活,而且可以看到处理过程,能增加节点进行后续处理,因而更强大。如果没有后续处理的结果,当第一张图出现时就会直接被放弃。当通过后续处理能发生如此大的变化时,等待就有了价值。使用 Ultimate SD Upscale 提升分辨率。脸部比较模糊,使用 FaceDetailer 处理。看看下面一张图的变化,一开始惨不忍睹。
2024-04-06 12:07:15 334
原创 AI - 冰雪兔女王(2)
冰雪兔女王这个流程主要使用了 **Ultimate SD Upscale** 提升图片分辨率,流程已经分享到 openart.ai,地址在文末。
2024-04-04 15:23:20 196
原创 AI - 冰雪兔女王(1)
早期用自己gtx970显卡,出图太慢,显存低,分辨率低。然后白嫖谷歌colab,用了一段时间觉得每次初始化太费时间,就从京东买了个二手2080ti 11g的显卡(1800多,到目前用了一年多),用本地的就方便很多,平时电脑休眠,想用时立马就能用上。除了2022年底ChatGPT很火之外,另一个开源的Stable Diffusion 也非常火,我一开始用的最多的是Stable Diffusion WebUI,再后来就是用ComfyUI。如果有喜欢的图可以留言,我可以分享工作流到 openart.ai。
2024-04-04 11:27:42 335
原创 Ollama 导入自定义模型
在前面 Spring AI 使用本地 Ollama Embeddings 中查找 Embedding 模型的时候,首先看到了 mofanke/dmeta-embedding-zh 模型,这才发现 Ollama 中除了官方模型外还有用户自己上传的其他模型,搜索 dmeta-embedding-zh 找到了抱脸网上的对应模型:https://huggingface.co/DMetaSoul/Dmeta-embedding-zh模型介绍有 MTEB Chinese list 评分排名,打开该地址可以看到排名:
2024-04-03 11:34:48 7043 5
原创 Spring AI 使用本地 Ollama Embeddings
通过 Ollama 的扩展方式,还可以方便我们导入官方仓库不存在的其他模型,后续文章会以。使用 OpenAI 的 Embeddings 接口是有费用的,如果想对大量文档进行测试,使用本地部署的 Embeddings 就能省去大量的费用,所以我们尝试使用本地的 Ollama Embeddings。这个模型包含几个不同的版本,默认为 7b 的版本,可以先试试 7b,如果速度太慢可以换 2b 试试,执行命令。中的参数即可使用其他模型,如果本地下载过 llama2 模型,就可以直接改这里的参数,不需要重新执行。
2024-04-02 08:30:00 5024 1
原创 Spring AI 连续对话
在前面中我们只调用了一次请求,返回了一个结果,我们见过的各种 chat 都是支持连续对话的,AI 需要记住我们的上下文才能让对话连贯起来,通过 API 调用的时候每次对话都是一次无状态的独立请求,想要实现连续对话就需要我们自己记住对话的历史,在每次调用 API 的时候将对话历史传递给 API。本文就简单实现连续对话,并且引申一些相关的扩折或者优化。
2024-03-28 08:30:00 1576
原创 Spring AI Function 的实现原理?
在前面中介绍了 Chat 中的 Function 用法,我很好奇这个 Function 是如何被调用的,就在下面代码中加了断点看执行:执行过程中进入了这个方法,并且符合 Request 类型的参数,这是如何实现的?就像魔法一样神奇,这是 Spring AI 的功能还是 OpenAI 的功能?好奇心引导我必须深入看看。
2024-03-25 08:00:00 1211 2
原创 Spring AI Embeddings 和 Vector 入门
文本嵌入(Embeddings)将文本转换为数值数组或向量,使人工智能模型能够处理和理解语言数据。这种从文本到数字的转换以及反向转换,是人工智能如何与人类语言互动和理解它的关键要素。对于探索人工智能的 Java 开发者来说,没有必要理解这些向量表示背后复杂的技术原理或是具体实现细节。只要基本了解它们在人工智能系统中的作用和功能就足够了,尤其是在将人工智能功能集成到应用程序中的时候。文本嵌入在诸如检索增强生成 (RAG) 模式等实际应用中尤为重要。
2024-03-22 08:15:00 1985
原创 谷歌 Colab:学习 Python 和大模型的利器
谷歌 Colab,又称 Colaboratory,是一个基于 Jupyter 笔记本的免费在线平台,可让您在浏览器中编写和执行 Python 代码。它无需配置,即可轻松访问 GPU 和 TPU 等强大硬件,并支持丰富的文本、代码、图像、视频等格式,非常适合学习 Python 和大模型。网址:https://colab.research.google.com/谷歌colab更简洁,打开后直接新建笔记本使用,也可以使用教程、github等网站写好的笔记本使用。
2024-03-18 08:00:00 785
原创 Spring AI Chat 简单示例
官方文档地址: https://docs.spring.io/spring-ai/reference/index.htmlSpring AI 可以方便 Java 开发者在代码中集成 AI 的功能,通过 Spring 提供的抽象,可以方便的切换不同的AI提供商,Spring AI 是对 AI 的使用,并不涉及 AI 的训练。Spring AI 目前还很不稳定,官方文档还有大量错误,API 也会变动导致不兼容,当前文章示例使用的 0.8.1 版本。
2024-03-16 08:30:00 1671
原创 编码技巧:多条件判断拼接字符串
在写代码业务逻辑的时候,有时候需求稍微变化一下都让代码变的很麻烦,如果只在现有代码基础上硬改,可能会让可读性降低,本文通过一个例子来演示字符串拼接的变化。后来连上面这种写法中如果不满足,前面就是"",此时如果后面条件满足,拼接时会额外带上and导致语法错误,如果不嫌麻烦把and这样倒是能实现功能了,但是不易于阅读,看着就很乱。我们来看看GitHub Copilot会如何解决上面的变化。
2024-03-15 08:00:00 372
原创 GitHub Copilot - Elasticsearch 和 MySQL 单表查询耗时比对
当单表数据库超过百万后,数据库查询明显变慢,为了对比 Elasticsearch 的效果,将百万级的测试数据导入到 Elasticsearch 中对比看看效果。导入和查询 Elasticsearch 的过程完全通过辅助编码。
2023-12-13 11:45:00 587
原创 WSL 配置 Docker 内存和 CPU 资源限制
我用的电脑一共有40G内存,最近发现电脑重启后,VmmemWSL 进程很快就会占用一多半的内存(20+G),电脑中有多个停止运行的容器,正常启动状态的只有一个 MySQL 服务,通过。Docker Desktop 早期版本可以直接配置内存使用,改成 WSL 方式后需要去调整 WSL 的资源使用,参考。查看占用内存也不多,不知道为什么会占用这么多内存,但是必须限制一下。上面配置限制内存和交换内存都是 8G,可以根据自己内存进行调整。),然后启动 WSL 和 Docker,此后占用内存就很少了。
2023-12-06 08:15:00 2434
原创 Windows 系统配置 GraalVM 的 native-image 环境
使用官方文档链接下载的,这个工具安装的 VS CODE 2019 版本,安装的cl.exe版本低,会报下面的错误:Error: On Windows, GraalVM Native Image for JDK 21 requires Visual Studio 2022 version 17.1.0 or later (C/C++ Optimizing Compiler Version 19.31 or later).?
2023-11-30 07:45:00 1604
原创 混淆技术研究笔记(八)扩展yGuard实现签名
中我们使用 hutool 的工具类实现了私钥加密的方法,我们这里直接用,首先添加 hutool 的依赖,在。
2023-10-25 10:04:25 508
原创 混淆技术研究笔记(七)Ant扩展介绍
如果你需要在配置好的对象上进行后续处理,可以使用这个方法,如果想在配置前处理,可以选择前两种方式。当你嵌套的对象需要复杂的创建方式时,可以采用这种方式,这种方式适合初始化对象。对象注入进来了,而且此时该对象是空的,还没有被赋值,这种情况下的参数(如这里的。同时存在时不一定会调用哪一个方法,当你方法中存在逻辑时,就无法保证处理一致。方法,该方法采用带有无参数构造函数的 Object 类型的单个参数。,否则后续无法获取该值。这里返回该对象后,这个对象会被赋值,在后续执行。,实际上不继承也可以,定义一个。
2023-10-19 08:30:00 345
原创 混淆技术研究笔记(六)如何基于yGuard实现?
如果一上来就想着如何设计,万一最后行不通就白费了,而且设计没有尽头,想要完美的设计可能需要纠结很久才有结果,在这种重构调整比较容易的情况下,先动手,后设计。准备工作都已经好了,接下来就该动手实现了,此时我还有一个问题,yguard中是如何创建对象的,xml和类是如何结合的,于是我找到了。这里会使用改后的文件名,那么改后文件名的生效肯定是在这里,这里可能会有写入jar的操作,这非常关键,但是我们先回到前面继续查找。就可以写入文件,而且也不必存在已有的文件,直接加个新的也可以,在。
2023-10-13 09:00:00 359
原创 混淆技术研究笔记(五)混淆后如何反篡改?
有了上一节的基础工具后,接下来要考虑如何反篡改。本文采用的是对混淆后的代码,针对某些关键包的字节码数据计算md5值,对所有类计算完成后对md5值进行排序,排序后拼接字符串再次计算md5值,最后通过私钥对md5进行RSA对称加密,加密后的内容要放到核心的jar包中。
2023-10-12 09:00:00 356
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人