![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
我在北国不背锅
致力于AI大模型、Java、大数据、运维及各类计算机技术为一体的知识架构
展开
-
Qwen2在Java项目中如何实现优雅的Function_Call工具调用
在当今AI技术飞速发展的背景下,大语言模型如Qwen2和GLM-4凭借其强大的语言处理能力,在诸多领域展现出了巨大的潜力。然而,大模型并非全知全能,它们在处理特定任务时,尤其是在需要与外部系统交互或执行具体功能时,会遇到一定的局限性。这主要是因为大模型通常被设计为封闭的文本生成系统,缺乏直接调用外部工具或API的能力。这种局限性凸显了工具调用在实际应用中的必要性,它能够扩展模型的功能边界,使其能够在真实世界场景中执行更加复杂和具体的操作。原创 2024-06-20 17:36:05 · 1220 阅读 · 3 评论 -
使用Java访问大模型API出现响应式编程告警
在使用Java访问大模型服务进行问答过程中,出现Flux的告警信息。原创 2024-06-06 15:33:04 · 371 阅读 · 0 评论 -
Springboot打成JAR包后读取配置文件
2、位置的优先级:config>./>classpath,也就是jar包同级目录config文件夹优先级最高,其次是jar包同级路径,最后是classpath,在classpath中同样也是config路径的优先级大于同级路径;5、application-default.yml > /config/application.properties,default的优先级是大于config目录的。(1)在项目名.jar同级目录,创建一个config文件夹,把application.properties放进去。原创 2023-01-16 10:50:50 · 2533 阅读 · 0 评论 -
解决No EntityManager with actual transaction available for current thread
问题描述:在使用JPA执行删除操作时报错:No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call; nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for原创 2022-01-17 17:17:57 · 6671 阅读 · 0 评论 -
Springboot多数据源+Jpa配置
随着业务复杂程度的增加,单一数据源越来越不满足具体的业务逻辑以及实现。这里我用到了MySQL和Presto两种数据源:多数据源配置GlobalDataSourceConfiguration:@Configurationpublic class GlobalDataSourceConfiguration { @Bean(name = "prestoDataSource") @ConfigurationProperties(prefix = "spring.datasource.pr原创 2022-01-06 11:43:52 · 1640 阅读 · 0 评论 -
Log4j漏洞CVE-2021-45046、CVE-2021-45105、CVE-2021-4104修复
1、漏洞范围远程代码执行漏洞CVE-2021-45046:log4j 2.0-2.15.0版本拒绝服务漏洞CVE-2021-45105:log4j 2.0-2.16.0版本远程代码执行漏洞CVE-2021-4104:log4 1.x版本2、漏洞解决:针对CVE-2021-45046和CVE-2021-45105,需要升级到2.17.0版本进行修复。针对CVE-2021-4104需要从类路径中移除JMSAppender类,可利用如下命令进行删除:zip -q -d log4j-*.jar or原创 2021-12-22 15:50:58 · 2049 阅读 · 0 评论 -
Springboot中@Value注解静态变量赋值
配置文件application.properties中有以下配置:file.dir = ${ZHBR_FILE_DIR:default}某工具类中存在fileDir静态变量:private static String fileDir;在处理静态变量时候,如直接使用@Value注解,是无法获取到配置文件中的数据的,最终fileDir的值为null。如要通过配置文件对该静态变量进行赋值:1️⃣利用IDEA生成该静态变量的set方法,然后删除该方法的static修饰2️⃣然后将注解@Value原创 2021-12-03 17:27:21 · 1816 阅读 · 0 评论 -
Springboot项目自定义日志开头banner图像
一般springboot项目日志开头都是这样的: . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==========原创 2021-12-03 14:53:49 · 478 阅读 · 0 评论 -
MD5、BASE64和DES加密
MD5算法仅能进行加密,不能进行解密;BASE64算法即可进行加密,也可进行解密;package com.zhbr.test;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import java.io.IOException;import java.math.BigInteger;import java.security.MessageDigest;import java.security.NoSuchAlgorit原创 2021-11-30 17:38:44 · 462 阅读 · 0 评论 -
Linux系统Java程序启动/停止/重启shell脚本
启动、停止、重启、查看状态:./xxx.sh start./xxx.sh stop./xxx.sh restart./xxx.sh status以下脚本只需要修改APP_NAME后的jar包,其他代码无需修改:#!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=cq_ljgt_api-0.0.1-SNAPSHOT.jarJVM="-server -Xms512m -Xmx512m -XX:PermSize=64M -XX:MaxNewSize=1原创 2021-11-19 10:05:25 · 1590 阅读 · 0 评论 -
Idea编译:Java找不到符号
在使用idea编译运行程序时,有时会出现‘Java找不到符号’的报错,一般可采取以下几种方法:1、选择相应的模块,使用maven的reload project2、重启idea3、设置统一的编码,一般为UTF-84、重新build5、经过以上操作依旧没有效,直接追溯报错的位置,发现是log,注释这行代码后重新编译,报错显示下面的log,因此基本判断出是日志这块儿的问题。日志我使用的是@Slf4j注解:lombok依赖使用的1.18.2版本<dependency>原创 2021-11-10 17:04:04 · 27719 阅读 · 3 评论 -
Springboot项目:Could not resolve placeholder ‘xxx.xxx.xxx‘ in value “${xxx.xxx.xxx}“
报错信息:java.lang.IllegalArgumentException: Could not resolve placeholder 'hadoop.conf.dir' in value "${hadoop.conf.dir}"问题排查:1、首先排查代码中@Value注解和配置文件application.properties中的是否一致:@Value("${hadoop.conf.dir}")private String hadoop_conf_dir;@Value("${spark原创 2021-11-01 11:08:26 · 1608 阅读 · 0 评论 -
Springboot项目打瘦包(将依赖包放到jar包外)
一般springboot项目我们不做任何配置的话,打包会包含很多的依赖,生成的包过大,动辄100M以上,往生产环境上传很慢。所以把所有用的jar包打到外部,这样生成的小包中只有自已开发的程序,基本可以控制在1M以内,效果甚好。<build> <resources> <resource> <directory>src/main/java</directory> <!--打包时添加src/原创 2021-10-29 16:19:44 · 1610 阅读 · 0 评论 -
Springboot项目jar包外配置文件使用
springboot读取外部配置文件的方法,根据优先级排列依次是:第一种:是在执行命令的目录下建config文件夹。(在jar包的同一目录下建config文件夹,执行命令需要在jar包目录下才行),然后把配置文件放到这个文件夹下。第二种:是直接把配置文件放到jar包的同级目录。第三种:在classpath下建一个config文件夹,然后把配置文件放进去。第四种:是在classpath下直接放配置文件。springboot默认是优先读取它本身同级目录下的一个config/application.pr原创 2021-10-29 16:00:38 · 4261 阅读 · 0 评论 -
RestTemplate的getForObject和postForObject方法的使用
@RestControllerpublic class DiscoveryClientController { @Autowired LoadBalancerClient loadBalancerClient; @GetMapping("/test") public String test() { // 通过spring cloud common中的负载均衡接口选取服务提供节点实现接口调用 ServiceInstance serviceI原创 2021-10-11 15:09:47 · 2061 阅读 · 0 评论 -
Springboot利用SparkLauncher提交Spark任务
Spark-Submit:在一般的Spark项目中,我们通常使用Spark Job的方式提交Spark任务,通过命令行的方式提交Job,使用spark 自带的spark-submit工具提交,官网和大多数参考资料都是已这种方式提交的,提交命令示例如下:$SPARK_HOME/bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-memory 1g --原创 2021-10-08 16:43:49 · 2926 阅读 · 5 评论 -
关于JDBC数据库连接的一些总结
1、如是使用springboot,则首推jdbcTemplateapplication.properties文件添加配置:spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.url=jdbc:oracle:thin:@192.168.1.184:1521/orclspring.datasource.username=xxxspring.datasource.password=xxxsprin原创 2021-09-03 11:36:28 · 390 阅读 · 0 评论 -
Base64对图片进行编码解码
package com.zhbr.util;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import Decoder.BASE64Decoder;import Decode原创 2021-09-02 08:46:21 · 2114 阅读 · 0 评论 -
Java获取图片像素点数组数据
方式一://方式一:通过getRGB()方式获得像素矩阵public static void getPicArrayData(String path){ try{ BufferedImage bimg = ImageIO.read(new File(path)); int [][] data = new int[bimg.getWidth()][bimg.getHeight()]; for(int i=0;i<bimg.getWidth();原创 2021-08-31 17:54:28 · 5055 阅读 · 0 评论 -
将JsonArray数据写入CSV文件
读取一个json文件,并将数据写入csv文件中:package com.zhbr.apig2oracle;import com.alibaba.fastjson.JSONObject;import org.apache.commons.io.FileUtils;import org.apache.commons.lang3.StringUtils;import org.apache.log4j.Logger;import org.json.CDL;import org.json.JSONAr原创 2021-08-06 10:16:50 · 1493 阅读 · 0 评论 -
Java中替换‘\n‘换行符
在替换字符串中的换行符‘\n’的时候,必须要写成下面的方式才能正确执行:str.replace("\\n", "");str.replaceAll("\\\\n","");以下写法均替换失败:str.replace("\n","");str.replaceAll("\\n","");str.replaceAll("\n","");...原创 2021-08-06 10:10:56 · 14794 阅读 · 3 评论 -
Java获取系统属性和环境变量
系统属性//获得用户的目录String userHome = System.getProperty("user.home");System.getProperty()接收参数以及含义如下:Java.version Java 运行时环境版本java.vendor Java 运行时环境供应商java.vendor.url Java 供应商的 URLjava.home Java 安装目录java.vm.specification.version Java 虚拟机规范版本java.vm.spe原创 2021-04-19 11:10:04 · 794 阅读 · 0 评论 -
JDBCUtil与QueryRunner结果集处理方式
JDBCUtil工具类package com.zhbr.api.springboot_huawei_api.util;import com.mchange.v2.c3p0.ComboPooledDataSource;import org.apache.commons.dbutils.QueryRunner;import java.beans.PropertyVetoException;import java.io.File;import java.io.FileInputStream;imp原创 2021-03-02 14:47:51 · 836 阅读 · 0 评论 -
OkHttpClient 设置超时时间
OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .build();原创 2021-02-07 18:37:40 · 10856 阅读 · 1 评论 -
Java代码insert语句插入clob和blob类型数据
CLOB使用CHAR来保存数据。public void insertClob() throws Exception{ String sql="insert into article (JYNRDJ)values(?)"; String dataStr = "aaa"; SerialClob clob=new SerialClob(dataStr); QueryRunner runner=new QueryRunner(JDBCUtils.getDataSource(原创 2020-12-21 19:21:43 · 3941 阅读 · 0 评论 -
java程序打印日志(保存到日志文件)
使用log4j.jar。log4j 是apache 提供的记录日志的。<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency>除了这个包外,还需要另一个jar包:.commons-logging.jar<depende原创 2020-10-28 17:23:44 · 3435 阅读 · 2 评论 -
Java程序当前线程睡眠
try { //睡眠100ms Thread.currentThread().sleep(100);} catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace();}原创 2020-10-28 16:51:10 · 1952 阅读 · 0 评论 -
Linux系统下Java程序读取配置文件
最近在对一个开源项目进行二次的开发,项目目录:自己开发的jar包放到目录jars中,配置文件需要放到etc目录下,方便修改。我们知道的ClassLoader 方式只能读取类路径下的配置文件,当项目打成 jar 包放到服务器后就找不到文件了,打成jar包后必须以流的方式读取文件。// 使用InPutStream流读取properties文BufferedReader bufferedReader = new BufferedReader(new FileReader("../etc/emqx_to原创 2020-10-28 16:46:45 · 3336 阅读 · 0 评论 -
Java分批写入大量数据到kafka,sparkStreaming实时消费kafka,完成数据下沉(Hive到Hive数据迁移/同步)
最近遇到这样的一个场景:存在两个Hadoop集群,需要将一个集群中的hive数据传输到另一个集群的hive中。且源端hive为其他公司数据源,涉及到的一定的安全和保密性。现大致思路为:Java读取源端hive—>我司kafka—>sparkStreaming读取kafka—>目标端hive代码示例:Java获取其他公司hive表数据:package com.zhbr....原创 2020-03-31 11:33:55 · 4763 阅读 · 6 评论 -
使用Java代码调用服务器shell脚本
shell脚本:#!/bin/bashnum=$1if [ $((num%2)) == 0 ];then echo "success";else echo "error";fi连接shell脚本所在服务器:package com.zhbr.dataImport.utils;import java.io.BufferedReader;import java.io.IOE...原创 2020-03-30 17:50:03 · 2273 阅读 · 1 评论 -
Java代码(远程)调用执行Linux命令
方式一:最主要的是这三行代码,将程序打成jar包,上传到Linux服务器上运行,即可以执行想要执行的命令。 Runtime r = Runtime.getRuntime(); Process p = r.exec(" "); p.waitFor();代码示例:Java调用sqoop命令,实现MySQL数据导入Hive。public static void main(String[]...原创 2019-12-06 10:53:56 · 5032 阅读 · 1 评论 -
关于xxx.class.getResource()和xxx.class.getClassLoader().getResource()
在项目中,常常需要加载一些自定义的资源文件,比如各种的XML配置文件,那么就免不了要和getresource()这个方法打交道了。关于getResource()和getClassLoader().getResource()的区别:.getClass().getResource(fileName) :表示只会在当前调用类所在的同一路径下查找该fileName文件;.getClass().ge...原创 2019-11-21 14:26:03 · 1530 阅读 · 0 评论 -
(Java、Scala)读取IDEA maven项目resource下相对路径文件
在使用maven创建的项目中,在编译时会在项目下生成target文件夹,其下面的class文件夹里面生成src->main中的数据如resources中的文件或者是scala文件夹下面的.scala文件的“倒影”。所以寻找文件的相对位置时,要先找到target这个目录下的地址,然后再找具体的文件。如图所示,要读取resource下Excel文件夹下的Excel文件,target目录下已经...原创 2019-11-15 17:36:44 · 7650 阅读 · 0 评论 -
Java项目中各种配置文件的写法(示例)
日志文件log4j.properties## Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file distributed with# this work for additional informati...原创 2019-11-04 09:26:16 · 3213 阅读 · 0 评论 -
关于Java中的NaN
虽然几乎每种处理器和编程语言都支持浮点运算,但大多数程序员很少注意它。这容易理解 ,我们中大多数很少需要使用非整数类型。除了科学计算和偶尔的计时测试或基准测试程序,其它情况下几乎都用不着它。同样,大多数开发人员也容易忽略 java.math.BigDecimal 所提供的任意精度的小数, 大多数应用程序不使用它们。然而,在以整数为主的程序中有时确实会出人意料地需要表示非整型数据。例如,JDBC 使...转载 2019-11-01 14:40:21 · 2655 阅读 · 0 评论 -
JDBCUtil工具类及C3P0Util工具类
JDBCUtil:public class JDBCUtils { private JDBCUtils() {} //获得连接 private static String url; private static String username; private static String password; static { //注...原创 2019-11-01 10:37:14 · 1664 阅读 · 0 评论 -
关于Java中使用split()方法时报ArrayIndexOutOfBoundsException数组越界异常
今天写了个字符串拼接程序,中间用到了split方法。但在测试的时候。总是报数组越界错误:java.lang.ArrayIndexOutOfBoundsException ;代码示例如下://获取数据Map<String,Object> map = rlList.get(1);//获取数据中的key的set集合Set<String> keySet = map....原创 2019-10-31 09:39:21 · 2435 阅读 · 0 评论 -
StringBuilder &&StringBuffer删除最后一个字符的方法
StringBuilder &&StringBuffer删除最后一个字符StringBuffer sb = new StringBuffer("abcdefg,");sb.deleteCharAt(sb.length()-1);System.out.println(sb);原创 2019-10-30 11:03:50 · 1532 阅读 · 0 评论 -
java 实现 Hive 数据导入到 mysql
参考地址:https://blog.csdn.net/lizhihaoweiwei/article/details/77770887代码开源地址:https://github.com/juniorfans/hiveToMysql/blob/master/HiveToMysql.java转载 2019-10-23 16:04:58 · 4467 阅读 · 0 评论 -
关于Unsupported major.minor version 52.0报错问题
问题描述在启动项目工程中,当编译class文件的时候会报错一个 java.lang.UnsupportedClassVersionError: org/apache/activemq/ActiveMQConnectionFactory : Unsupported major.minor version 52.0错误,如图。这个问题既不是代码出错,也不是内存问题,更不是系统抽筋,通常导致很多朋友...转载 2019-10-21 14:16:10 · 1661 阅读 · 0 评论