- 博客(252)
- 资源 (1)
- 收藏
- 关注
原创 多到爆炸!你的 AI 超能力已就位!(Gemini、Grok、通义...一次解锁!)
优点:谷歌出品,必属精品!信息检索能力杠杠的,知识面广到没朋友,妥妥的“AI百科全书”!缺点:有时候回答过于严谨,缺少一点“皮”劲儿~优点:马斯克家的“叛逆小子”,自带幽默感,怼人功力一流,想要一个风趣的AI伙伴?选它就对了!缺点:有时候过于放飞自我,容易跑偏~优点:阿里家的“全能选手”,中文理解能力一流,擅长各种生活场景,是你的“AI生活小助手”!缺点:在一些前沿技术领域,可能不如海外模型那么深入。优点: 专注编程优化,代码生成能力飞起,是程序员们的一把利剑。
2025-02-26 09:04:29
174
原创 Spring Cloud Alibaba AI实践
在现如今AI时代,spring也对ai进行了各种兼容匹配,推出了Spring AI来支持各大AI厂商,持的模型类型包括聊天和文本到图像,但是由于国内的机制以及各大厂商的限制,Spring AI在国内使用不便,因此阿里巴巴推出了Spring Cloud Alibaba AI ,完成通义系列大模型的接入。项目启动,使用postman请求对应接口路径,可以发现,打印日志中已经做出了回复,证明当前项目已经接入了阿里通义大模型。点击头像位置有个API-KEY管理,获取到,然后配置在项目中。
2024-10-19 14:13:54
530
1
原创 Java可重入锁(GPT编写)
Java可重入锁是Java并发编程中常用的一种锁机制,它可以允许同一个线程多次获取同一个锁,从而避免死锁和其他并发问题。Java可重入锁的实现基于AQS框架,它通过状态变量state和等待队列来实现锁的获取和释放。Java可重入锁支持可重入性,即同一个线程可以多次获取同一个锁,而不会造成死锁或其他并发问题。
2023-10-18 15:55:46
843
原创 程序员开发过程中还是需要写注释的
简单说明:关于注释的问题,一直以来都是两面派,一方面认为在快速迭代的开发过程中,添加注释会浪费很多程序员自己的时间,从而影响开发进度,被问责被丢锅...另一方面认为,注释作为开发功能的赘述,不管是对于leader的review还是对于后面维护的人员,都是很友好的行为。详细论述:代码注释可以帮助其他开发人员更好地理解代码的功能和实现方式,也可以帮助自己更好地维护和修改代码。如果代码没有注释,那么其他人在阅读代码时可能会遇到很多困难,也会增加代码维护的难度。当然,写注释也需要注意适度。
2023-10-12 09:36:48
214
原创 springboot使用http发起远程服务调用,请求参数包含StandardMultipartHttpServletRequest
问题记录方便后续使用
2023-04-27 16:29:26
632
原创 我的创作纪念日
希望自己技能分享类的总结越来越多,问题复盘越来越少,有深度的文章越来越多,浅显记录越来越少。1.提升了一些职业技能,比如说springboot整合系列,更轻松应对多种业务场景。没什么成就,更多还是自己吧,坚持学习,保持进步,每天成长一点点,进步一点点。2.记录了生活工作中遇到的问题,进行复盘分析,更好的让自己学会总结和自省。3.记录了一些常用的小工具类,给他人带来便利。
2023-04-23 09:48:39
113
原创 BeanUtils工具类
public class BeanUtils { private static final String DEFAULT_HYPHEN = "-"; /** * 对象拷贝,先使用Spring的BeanUtils进行浅拷贝,再尝试拷贝属性名称相同、但类型不同的字段 * * @param source 源对象 * @param target 目标对象 */ public static void copyProperties(Objec
2023-04-07 16:13:15
192
原创 Java使用poi解析excel工具类
package cn.com.gome.scot.alamein.business.report.common.util;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;import java.io.FileN
2022-05-18 17:51:09
874
原创 Java常用excel导出实现
最近在做很多报表相关的开发,包括使用shell和hive将大数据汇总,然后页面做展示,还有将结果导出excel发送给相关负责人,由于导出表格的时候,有很多场景,现在针对几种常用场景,进行一些整理,方便以后使用。1.少量数据,使用alibaba.excel.EasyExcelExcelUtils.java:@Slf4jpublic class ExcelUtils { /** * Excel模板导出 * * @param templateInputStream
2022-03-11 14:43:29
2930
原创 近期一些开发规范上的问题记录
1.log打印一定要在接口调用处和数据返回处加上log打印调用方法名和出入参,方便日志排查。在业务逻辑开发处,对一些关键点进行日志打印,方便在逻辑处理时进行问题排查。日志需要精简,不需要过多,能简单明确定位到问题即可。2.精度问题普通的Double类型直接做加减乘除的时候会出现精度缺失,需要用用BigDecimal类。 public double add(double d1,double d2){ BigDecimal bd1 = new BigDecimal(Doubl
2021-12-02 15:18:01
145
原创 Command line is too long
Command line is too long. Shorten command line for SpringBootMainApplication or also for Application找到.idea文件夹下面的workspace.xml文件,搜索到PropertiesComponent,在标签下增加一行:<property name="dynamic.classpath" value="true" />即可解决...
2021-12-02 11:00:13
146
原创 Dubbo远程调用文件上传服务
背景:由于公司内部使用dubbo作为远程服务调用,在使用其他系统的文件上传服务时,系统出现报错。 @ResponseBody @RequestMapping(value = "uploadResourceImg", headers = "content-type=multipart/form-data", method = RequestMethod.POST) public RestResult<ResultDto> uploadImage(@RequestPa
2021-11-04 20:24:54
855
原创 20210907生产问题记录
背景以前写过一个定时任务,每天将mongodb的数据同步到MySQL,使用的是xxjob作为定时任务框架,一直都是正常使用的,今天发现生产环境在7月19日之后就没有了数据,但是使用elk平台还有xxjob的控制台查看定时任务记录,都是正常状态。分析排查首先确定是否写对了数据库,是否有数据库配置的修改,经过确定排除了此种情况。后来查看服务器的日志打印,发现有一条 Could not set property 'id' of 'class com.jpgk.entity.report.OrgWareho
2021-09-07 20:37:53
274
原创 2021-08-26Dubbo踩坑笔记
背景由于项目是多人协作,服务调用使用的dubbo,在定义接口出入参的时候,我自己定义了一个基本入参xxxReq,包含了两个分页属性,后续有其他同事将此类继承了一个BaseReq。base中包含分页字段。本地单元测试,接口都能根据分页数据的值查询出对应的数据,但是dubbo Consumer端查出的数据一直是走的默认数据。而且服务器上,根据分页条目的属性名查询日志,根本查不到日志输出,由于默认数据与数据库条目还是一致的,所以错误的以为触发了dubbo的缓存机制,并没有真正的将请求打到服务器上,也导致排查错
2021-08-27 15:17:47
315
原创 Dubbo原理学习(二)
Dubbo SPI在前面的学习中ServiceConfig中有一段private static final Protocol protocol = (Protocol)ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();点击进入Protocol ,可以看到一个特殊的注解@SPI。学习一下:java spi机制SPI,Service Provider Interface,主要是被框架的开发人员使用,比
2021-08-18 19:52:21
180
原创 Dubbo原理学习(一)
Dubbo简介项目中使用dubbo作为rpc框架,而且以前一直也是有过使用经验,但是没有深入学习过,近期项目进度不紧,就简单学习一下深入原理。dubbo官方文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html开头开始一张众所周知的dubbo原理图:节点角色说明Provider 暴露服务的服务提供方Consumer 调用远程服务的服务消费方Registry 服务注册与发现的注册中心Monitor 统计服务的调用次数和调用时间的监
2021-08-16 16:53:53
369
原创 List聚合
需求:数据库查出一批集合,时间各不相同,但是现在要求对同一天的金额和总数再次叠加处理:@Data@AllArgsConstructor@NoArgsConstructorpublic class ResultDO { private String times; private Double price; private Long count;}public class DataTest { public static void main(String[] a
2021-05-19 14:31:18
533
原创 BeanCopy
package com.example.demo.util;import com.baomidou.mybatisplus.extension.exceptions.ApiException;import net.sf.cglib.beans.BeanCopier;import net.sf.cglib.beans.BeanMap;import org.springframework.objenesis.ObjenesisStd;import java.util.ArrayList;impo
2021-05-13 17:52:46
268
原创 String转换List<JSONObject>
/** * 字符串格式化 */ public static List<JSONObject> getList(String data){ ObjectMapper mapper = new ObjectMapper(); JavaType javaType = getCollectionType(ArrayList.class, JSONObject.class); List<JSONObject> ...
2021-05-12 10:59:25
1651
1
原创 Mybatis-Plus 3.2.0与3.4.0的坑
批量插入3.2.0版本中,IService有一个看着很迷惑人的一个方法boolean saveBatch(Collection<T> entityList, int batchSize);以为这个是批量插入,其实不然,跟随代码进入底层会发现: public boolean saveBatch(Collection<T> entityList, int batchSize) { String sqlStatement = this.sqlStatemen
2021-04-03 15:42:32
1861
1
原创 对List进行分割的几种方式
1、使用google guava对List进行分割需要引入google guava依赖,引入后可以使用,简单方便但是需要引入额外依赖,如果不介意可以使用。//假设查询出很多用户信息List<User> users = userService.findAll();//按每100个一组分割List<List<User>> parts = Lists.partition(users, 100);parts.stream().forEach(list -> {
2021-04-02 13:31:21
37302
原创 java获取一天的起止时间
Calendar calendar = new GregorianCalendar(); // 0可以修改,0代表当前时间,-1代表前一天 calendar.add(Calendar.DAY_OF_MONTH,0); //一天的开始时间 yyyy:MM:dd 00:00:00 calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINU...
2021-03-30 15:27:25
2118
原创 2020-12-28踩坑记录
public static void main(String[] args) { boolean b1 = Boolean.parseBoolean("true"); System.out.println("b1=" + b1);//b1=true b1 = Boolean.parseBoolean("false"); System.out.println("b1=" + b1);//b1=false boolean b2 = Boolean.valueOf("t
2020-12-28 18:07:17
196
原创 HTML简单入门学习(二)
分析一个简单HTML文档样例:<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>我的测试站点</title> </head> <body> <p>这是我的页面</p> </body></html>分析如下:在HTML中应用CSS和JavaScr
2020-12-24 20:39:45
273
原创 HTML简单入门学习(一)
什么是 HTML?HTML (HyperText Markup Language) 不是一门编程语言,而是一种用来告知浏览器如何组织页面的标记语言。HTML 可复杂、可简单,一切取决于开发者。它由一系列的元素(elements)组成,这些元素可以用来包围不同部分的内容,使其以某种方式呈现或者工作。 一对标签( tags)可以为一段文字或者一张图片添加超链接,将文字设置为斜体,改变字号,等等。剖析一个 HTML 元素这个元素的主要部分有:开始标签(Opening tag):包含元素的名称(本例为
2020-12-23 20:52:50
161
原创 有人见星辰,有人见尘埃
思考年前匆匆忙忙的走,匆匆忙忙的离职。以为从北京回到家,就能缓缓休息一下,结果年后的疫情原因,让自己变成了休长假。看似枯燥且无聊的生活,让我找到了生活的一些思考,开始试着读书,去看一些经典文学,哲学文献,也开始对各种各样的人生和世界有了自己的一个认识,慢慢的也就觉得一切都是那么平和与自然。年后匆匆忙忙的回,匆匆忙忙的入职。回到北京的生活,似乎并没有入想象般的那么不堪。由于隔离原因,换了个自己喜欢的环境。刚入职就远程办公的心情,自己孤独一人隔离在屋子里解决食宿问题,与看似自在的生活有着强烈的
2020-12-22 20:46:28
709
1
原创 序列化和反序列化学习(三)
几种常见的序列化和反序列化协议ThriftThrift是Facebook开源提供的一个高性能,轻量级RPC服务框架,其产生正是为了满足当前大数据量、分布式、跨语言、跨平台数据通讯的需求。 但是,Thrift并不仅仅是序列化协议,而是一个RPC框架。相对于JSON和XML而言,Thrift在空间开销和解析性能上有了比较大的提升,对于对性能要求比较高的分布式系统,它是一个优秀的RPC解决方案;但是由于Thrift的序列化被嵌入到Thrift框架里面,Thrift框架本身并没有透出序列化和反序列化接口,这导致
2020-12-21 22:47:44
133
原创 2020-12/18-19停更说明
哈哈和好朋友合作整了点东西,做了两天工具人,不过工具人也是很欢乐的,哈哈收获也很多,更多的是无法表达的,愿我们都能做更好的自己~
2020-12-20 22:45:26
155
原创 序列化和反序列化学习(二)
几种常见的序列化和反序列化协议互联网早期的序列化协议主要有COM和CORBA。COM主要用于Windows平台,并没有真正实现跨平台,另外COM的序列化的原理利用了编译器中虚表,使得其学习成本巨大(想一下这个场景, 工程师需要是简单的序列化协议,但却要先掌握语言编译器)。由于序列化的数据与编译器紧耦合,扩展属性非常麻烦。CORBA是早期比较好的实现了跨平台,跨语言的序列化协议。COBRA的主要问题是参与方过多带来的版本过多,版本之间兼容性较差,以及使用复杂晦涩。这些政治经济,技术实现以及早期设计不成
2020-12-17 19:44:35
187
1
原创 kafka生产者报错Failed to update metadata after 60000 ms.
背景由于新增一个对接渠道,系统要对Kafka的消息进行消费,由于对接方目前没有环境,所以自己本地开发,并且使用环境中的一台kafka作为开发使用,本地自己设置producer和consumer,分别作为生产者和消费者。producerconsumer问题同样的topic和groupid,但是在使用的过程中,在producer提供消息的时候,出现了Failed to update metadata after 60000 ms.网上搜索多数都是要求更改kafka的配置文件中的信息,但是此kaf
2020-12-16 17:17:18
14567
2
原创 序列化和反序列化学习(一)
概述序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中;另一方面,它们会以其他更容易理解的概念出现,例如加密、持久化。然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式、大数据量系统设计里面更为显著。互联网的产生带来了机器间通讯的需求,而互联通讯的双方需要采用约定的协议,序列化和反序列化属于通讯协议的一部分。通讯协议往往采用分层模型,不同模型每层的功能定义以及颗粒度不同,例如:TCP/IP协议是一个
2020-12-15 20:41:46
222
原创 java魔数
背景以前偶尔听朋友说过魔数,但是从来没有深入学习过,最近又开始经常听到这个字眼,所以觉得有必要认真了解一下。。。类型1、标识文件类型的“魔数”大多数情况下,我们是通过扩展名来识别一个文件的类型的,比如一些.java,.txt文件等,我们都能清楚知道它是什么文件,那一旦一个文件的扩展名被修改过,怎么识别一个文件的类型呢,这就是用到了魔数。很多类型的文件,其起始的几个字节内容都是固定的,因此这几个字节的内容也被称为魔数。因为根据这几个字节的内容就可以确定文件类型了,有了这些魔数,我们就可以很方便的区分
2020-12-14 20:45:47
1404
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人