Spring+mybatisplus 多数据源
本文案例为 sql server,其他数据源切换为相应的驱动即可。
依赖
1 | <dependency> |
配置
1 | # mybatis |
代码
xml 文件省略,保持和 mybatis 一样即可,代码使用上只用在 Mapper 或者 DAO 文件上使用@DS
声明即可。
1 | @Mapper |
默认主库为 db1,因此操作 db1 的接口可不用声明。
本文案例为 sql server,其他数据源切换为相应的驱动即可。
1 | <dependency> |
1 | # mybatis |
xml 文件省略,保持和 mybatis 一样即可,代码使用上只用在 Mapper 或者 DAO 文件上使用@DS
声明即可。
1 | @Mapper |
默认主库为 db1,因此操作 db1 的接口可不用声明。
CUDA 版本
经过测试,Llama-3 只有在 CUDA 新版下才可以运行,CUDA Version: 12.4
验证通过。
代理
在公司内网环境,往往需要代理才能下载模型文件。我这里使用 session 模式下全局。~/.bash.rc
1 | export HTTP_PROXY="http://*.*.*.*:*" |
安装依赖
1 | pip install fastapi==0.110.2 |
llama3-8B 是基本模型,基本上只完成输入提示,但 llama3-8B Instruct 针对指令跟随和多轮对话模板进行了微调,用于助理完成作为聊天响应。
如果你的特定目的是为了聊天完成,那么指令是最好的选择,否则如果它是为了简单的输入完成,那么基本模型就可以了
最近想使用一下 llama3,发现 pytorch 版本低不支持,升级 pytorch 版本就需要升级 cuda 版本,升级 cuda 版本需要提前升级 nvidia 驱动版本。
卸载驱动
1 | sudo apt-get purge nvidia-* |
https://www.nvidia.com/Download/driverResults.aspx/224022/en-us/
下载驱动并安装
1 | sudo sh NVIDIA-Linux-x86_64-550.76.run |
还有 1 天就过农历年了,2023 也就永远的离我们而去,我想在农历新年前抓住最后的影子,回顾一下我这一年我想记录的工作与生活。今年是写年终总结的第 3 年,回看过去的两年,内心唏嘘。
我想给 2023 年一个关键词:开心。
虽然病痛折磨了三个月,我依然在坚强的抗争,但我相信免疫力终究会战胜病魔。开心的原因是我有老婆了,想到这个嘴角就会上扬。她虽然很烦人,很气人,脾气差,但不妨碍我爱她,不妨碍我开心的笑,不妨碍我喜欢她笑,我也是那个有老婆的人。
工作少了些许忙碌,多了一些迷茫,大环境不好,公司业绩很差,多了很多别离,剩余的我们还在。说的出来的项目有三个:
相较以前的工作有两点变化:一个是 AI,一个是贴近 Email Marking 业务。AI 是 2023 最火领域,看了一些书和课程,了解了它的机制,但这条路确实还很难走,2024 还要继续加强这方面的投入和学习。
在日常项目开发中活用设计模式,有时候可以做到事半功倍效果,提高代码设计的扩展性。在这篇文章中列举一些我在产线 spring 项目中,真实使用到的设计模式。由于 spring 框架的使用特殊性,我们必须对原生设计模式代码做一定的调整,做到活学活用。
业务场景:
我们有一个系统,event hub,主要用来接受各种平台发来的事件,进而告警和管控。每个系统发来的事件不同,对于不同系统,每个系统我们都需要写一个解析器,最原始最直接的代码是各种 if else if,但扩展性和封装性都很差。
要解决这种 if…else if 场景,可以考虑使用策略模式。
代码
首先定义一个接口EventHandler
1 | public interface EventHandler { |
实现不同系统的处理器,通过实现 EventHandler 接口,可以扩展更多系统,大大增强了系统的扩展性。这里举两个例子:
1 | @Component |
在系统中调用生成的各种处理器
data stream 允许跨多个仅追加的时间序列索引,同时为请求提供单个命名资源。数据流非常适合日志、事件、指标和其他持续生成的数据。
为什么需要 data stream?
单纯 ILM 方案管理时间序列索引较繁琐,需要使用别名,多次操作。使用 data stream 可以简化操作
适合场景
数据流非常适合日志、事件、指标和其他持续生成的数据。
符合如下特点:
最近生了一场病,持续了一个多月,身体渐渐恢复,多次想提笔写点什么,许久没有动笔,不知从何开始。偶然间看到去年写的两篇《关于 Side Project 的思考和想法》和《从 0 到 1 做产品,独立开发者初探之路》文章挺受人欢迎的,索性就动笔写一下最近在病中写完的一个小的个人软件Toolkit,专为程序员设计的极简、插件化的工具集!。
之前看到过两款软件:utools 和 rubick,研究了一下,发现他们都是 electron 写的,比较好奇怎么实现插件化,索性就给自己写个,将自己常用的工具插件化,定位为程序员的插件化工具集。
相似竞品
正常页面面板点击后打开各类工具,通过搜索框快速搜索出想要的工具
好久没有写 java 代码了,持续更新一下自己的脚手架项目smart-spring-boot-project,发现有个更佳的实践,将脚手架以 jar 发布,脚手架项目以后升级版本就好了。
没有用中央仓库发布过 jar,听说也是比较麻烦,看到可以用 github 来实现,索性就来摸索一下。
简单看了一下发现有两种方式:
接下来分别试试看。
如何学习编程?
受George Hotz的影响,比较赞同:Learn by doing,找个自己感兴趣的项目,直接开干,在过程中学习。
很早之前就接触 redis,惊叹作者的代码和设计,如果你想学习数据库或者 cache 系统,推荐你看一下 redis 源码,短小精悍,完美融合了各种数据结构,协议的设计也完美的符合简单哲学。
我想学一下 go 语言,同时还能考虑一下 redis 的设计,这就是这个项目的最初动力。
go cache just for learn redis design and golang
本文所有代码:https://github.com/TrumanDu/the-force
在项目构建期纠结了很久,不知道如何组织 go 项目目录,因为自己的做 java 开发的,自己只能借鉴开源的经验
以下是我开始这个项目前参考的链接:
project-layout 能告诉我目前社区流行的 go 项目都采用什么目录结构。
根据自己的想法,目前构建如下:
1 | ├─api //提供项目的api |
创建
1 | array1 = np.array([1, 2, 3, 4, 5]) |