
Java
肉装法师
读书人的事能算偷
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
thingsboard学习过程记录
thingsboard学习过程记录。原创 2023-04-28 13:58:49 · 383 阅读 · 0 评论 -
MR Shuffle过程归并排序和快速排序
最近回顾hadoop,一个简单MapReduce shuffle过程,MapTask经历了一次快排和一次归并,ReduceTask经历了一次归并排序,回顾一下两个排序算法。原创 2023-03-14 16:35:00 · 434 阅读 · 0 评论 -
scala.Product.$init$(Lscala/Product;)V 问题解决
问题描述: 升级spark3.0.2 后 也升级了scala 2.12.10 项目对应的pom文件也更新至scala、spark对应版本。linux环境spark 3.0.2 jdk8u281scala2.12window开发环境linux本地pom.xml文件 也配置正确 类似如下按照网上查看spark 和scala版本对应 ,没有问题,查看开发环境与集群环境一致,都没有问题。然后查看了开发环境的jdk 1.8u121Spark 在 Java 8/11、Scala 2.原创 2022-01-20 09:41:16 · 4399 阅读 · 0 评论 -
21年了,Idea springboot打jar包发布linux还能不会吗?
一 、启动类二、其他层类注解controller@Controllerpublic class DashboardController {}service /implservicepublic interface DashboardService extends IService<Dashboard> {}impl@Servicepublic class DashboardServiceImpl extends ServiceImpl<Dashboard原创 2021-11-19 08:38:07 · 113 阅读 · 0 评论 -
springboots2+lettuce 将List<T>、复杂json传入redis
本人需将查询结果处理拼接成jsonObject传入js,echarts生成图表每个图表所需拼接返回的json数据格式不一样。比如如下格式json 和List{ "@class": "com.alibaba.fastjson.JSONObject", "result_data": [ "java.util.ArrayList", [ { "@class": "com.alibaba.fastjson.JSONObject", "titl原创 2021-11-17 08:05:59 · 1382 阅读 · 1 评论 -
将对象List根据对象某个属性进行排序
List存储对象TradeData,将List根据对象属性值进行排序@Datapublic class TradeData { private String sshy; private Integer numsofnsr; private Integer numsofinvoice;}/** getNumsofinvoice TradeData的getset方法*/List<TradeData> tradeInfo = 某查询返回结果;List&原创 2021-11-10 15:49:43 · 171 阅读 · 0 评论 -
中国省市代码及坐标
110000 北京市110100 北京市120000 天津市120100 天津市130000 河北省130100 石家庄市130101 石家庄市130200 唐山市130201 唐山市130300 秦皇岛市130301 秦皇岛市130400 邯郸市130401 邯郸市130500 邢台市130501 邢台市130600 保定市130601 保定市130700 张家口市130701 张家口市130800 承德市130801 承德市13090原创 2021-11-01 09:38:40 · 11135 阅读 · 1 评论 -
resource下文件被打进jar包但是读不到问题
问题描述:今天打了个小Jar包pom中打包插件如下 <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.原创 2021-03-18 16:55:21 · 538 阅读 · 0 评论 -
hive.jdbc不支持addBatch()方法
问题描述:想通过for 循环将PreparedStatement addBatch()后再执行executeBatch()但是报错java.sql.SQLFeatureNotSupportedException: Method not supportedat org.apache.hive.jdbc.HivePreparedStatement.addBatch(HivePreparedStatement.java:78)查看源码后发现此方法不支持 public void addBatch(原创 2021-03-11 14:07:55 · 2138 阅读 · 1 评论 -
将外部jar添加到本地项目并打包出错问题解决Error:(4,21) java: 程序包com.xxx.xxx不存在
问题描述:一个本地项目引入一个外部包:idea运行正常但打包后报错:Error:(4,21) java: 程序包com.shdzfp.ca不存在解决办法:添加pom依赖可以查看jar包内的pom文件获取groupId artifactId version信息scope为system 从本地扫${project.basedir} 本地项目根目录在本地项目pom文件中添加外部jar包<dependency> <groupId>com.xxx.xx原创 2021-03-11 09:48:08 · 226 阅读 · 0 评论 -
prepareStatement执行更新语句返回0,但sql拿出来单独跑正常更新。
记一个很蠢问题问题描述:欲使用prepareStatement执行拼接sql更新数据库。但返回结果有0有1,但大部分为0(失败)。将sql补齐Navicat执行没有问题。部分代码如下String sql = "UPDATE tbl_ghfxx SET MARK = ?, CREATE_DATE = ? WHERE MC = ?;";spmt = con.prepareStatement(sql);spmt.setInt(1, Integer.parseInt(mark));spmt.setS原创 2021-03-04 13:59:12 · 516 阅读 · 1 评论 -
java将元素为Json格式的列表转换为字符串
调用接口返回response1格式字符串response1 字符串格式为:[{"qydm":"xxx","qymc":"上海"},{"qydm":"yy","qymc":"bj"},{"qydm":"zz","qymc":"dd"}]用fastjson 将string转JsonArray对象pom.xml <dependency> <groupId>com.alibaba</groupId> <原创 2021-02-25 10:11:33 · 350 阅读 · 0 评论 -
记@Pointcut(“execution(public * com..dynamic.datasource.controller.*.*(..))“)含义
@Pointcut(“execution(public * com.dynamic.datasource.controller..(…))”)拦截public * [公共] com.dynamic.datasource.controller [包路径] .* [所有类] .* [所有方法](…)[所有参数]原创 2020-07-03 15:22:42 · 2956 阅读 · 0 评论 -
Springboot注解@RequiredArgsConstructor(onConstructor_ = @Autowired)报错
记一次注解错误第一次接触lombok,没装插件装完就不会错了原创 2020-06-24 15:14:02 · 12249 阅读 · 10 评论 -
linux 开机自启java项目
有一个定时项目跑在linux上,想实现linux开机自启创建一个shell脚本vim /home/publicService/start.sh# !/bin/bash# program# file preview server startexport JAVA_HOME=/usr/local/java/jdk1.8.0_102export JRE=$JAVA_HOME/jreexport CLASSPATH=$JAVA_HOME/lib:$JRE/lib:.export PATH=$J原创 2020-06-24 14:13:12 · 1608 阅读 · 0 评论 -
mybatis动态连接多数据库
欲通过数据中的特殊标记,将数据存放在不同数据库中。情节描述:项目中数据库操作都相同,就是库 不一样。网上很多都是AOP切换DataSource,之前博文也写了个Springboot+AOP实现。但是这个项目只需要处理点数据然后 存入数据库,感觉太费事。原来想将数据中的标记,作为参数传入最后Dao层。但是需要修改地方过多,所以想用Threadlocal试试。对应线程,将数据标记存入其Threadlocal中,在Dao层操作的时候,获取Threadlocal中的数据标记,建立对应session连接,将数原创 2020-05-27 11:32:03 · 823 阅读 · 0 评论 -
SpringBoot启动报错Error creating bean with name 'xx': Unsatisfied dependency expressed through field xx
错误如下:2020-05-11 08:55:21.333 WARN 937516 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException:原创 2020-05-11 09:17:31 · 3295 阅读 · 0 评论 -
Springboot使用ApplicationRunner
继动态切换数据源后,想要利用springboot构建普通java项目。启动类需实现ApplicationRunner 或者CommandLineRunner。run方法在springboot初始化时只执行一次。代码如下:@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class})@MapperScan("com.multiple.demo.dao")public class SpringbootAppl原创 2020-05-09 09:43:08 · 981 阅读 · 0 评论 -
springboot+AOP实现动态修改注解并切换数据源
项目结构情景描述异源数据,在一个工程中处理后,传入不同数据库中保存。类似下图所想完成pom.xml不耍流氓,贴pom。有的没的都导了。<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o...原创 2020-05-08 15:50:09 · 3051 阅读 · 1 评论 -
springboot修改注解
封装成类方法,根据传入的值修改注解value;import com.multiple.demo.Service.UserServiceImpl;import java.lang.reflect.Field;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang...原创 2020-04-29 13:36:54 · 1223 阅读 · 0 评论 -
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})禁止springboot自动注入数据源配置。为了后续利用注解动态传入的参数,对应连接相应数据库。为多数据源连接使用。...原创 2020-04-17 15:47:39 · 1895 阅读 · 0 评论 -
Java发送post请求并返回值
public static String sendPost(String message) { String response= ""; String url = ""; CloseableHttpClient httpClient = HttpClients.createDefault(); ResponseHandler<...原创 2020-04-09 10:42:26 · 1360 阅读 · 0 评论 -
判断mybatis插入数据成功并返回该数据在mysql中的自增id
<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.siger.storm.model.CheckSnTrace"> insert into siger_check_sn_trace (ID, SN, ProductID,MaterialID, Section...原创 2020-04-02 15:34:34 · 1855 阅读 · 0 评论 -
servlet中文乱码解决
写一个servlet继承httpServletget请求//doGet()方法中request.setCharacterEncoding("utf-8");String username = request.getParameter("username");System.out.println(username);必须在请求之前设置post请求手动编解码解决乱码//doPost...原创 2020-03-25 17:37:53 · 106 阅读 · 0 评论 -
Servlet调用过程及生命周期
Servlet调用过程继承一个实现了servlet的类GenericServlet,实现Service方法,在其中写处理请求的代码。配置web.xml其中,servlet-class中为配置的Servlet类的全路径名。servlet-name是为该servlet配置的名称,此名称没有特殊要求,为了便于识别此处取名和类名相同。url-pattern是为该名称的servlet配置对外访...原创 2020-03-25 17:11:04 · 323 阅读 · 1 评论 -
http请求状态码
状态码:是3位的十进制数,通过不同的状态码表示服务器对请求的不同处理结果。响应状态码分为5类。状态码状态码100~199表示接收的请求正在处理200~299表示成功接收请求并已完成整个处理过程,常用200300~399需要进行附加操作以完成请求。例如: 请求的资源已经移动一个新地址,常用302、307和304400~499客户端的请求有错误,常用4...原创 2020-03-25 16:45:54 · 91 阅读 · 0 评论 -
java基础-jdbc连接
最基本连接mysql数据库。 Connection conn = null; Statement stat = null; ResultSet rs = null; try { //1.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //2.获取连接 conn = D...原创 2020-03-25 16:20:22 · 182 阅读 · 0 评论 -
java基础集合-HashMap 和 HashTable、ConcurrentHashMap区别
HashMapHashMap的底层是用hash数组和单向链表实现的 ,当调用put方法是,首先计算key的hashcode,定位到合适的数组索引,然后再在该索引上的单向链表进行循环遍历用equals比较key是否存在,如果存在则用新的value覆盖原值,如果没有则插入到链表linkedlist的头部。HashMap的两个重要属性是容量capacity和加载因子loadfactor,默认值分布为...原创 2020-03-25 14:33:44 · 370 阅读 · 1 评论 -
ArrayList,Vector,LinkedList存储性能和特性
ArrayList采用数组形式保存数据,将对象放在连续位置中,所以最大缺点是插入删除时非常麻烦。默认初始容量是10,每次扩容默认增加一半,基于了右移。数组扩容时候调用Arrays.copyOf(),所以存储未知数量的对象时没有LinkedList快速。而且是一个线程不安全的列表。LinkedList采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引。LinkedList使...原创 2020-03-25 14:06:27 · 294 阅读 · 0 评论 -
Java简单获取反射三种方法
public class Student { private int id; String name; protected boolean sex; public float score; }public class Get { //获取反射机制三种方式 public static void main(String[] args) th...原创 2020-03-25 10:49:42 · 302 阅读 · 0 评论 -
java枚举覆盖
java枚举类 覆盖用法public enum StatusType { //运行 Run(1), //调试 Debug(2), //空闲 Free(3), //报警 Warn(4), //关机 Stop(0); private int key; StatusType(int i) { ...原创 2020-03-23 11:05:39 · 542 阅读 · 0 评论 -
单例模式的实现
单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。应用场景: 日志,数据库连接池,网站技术,多线程线程池。饿汉式//饿汉式单例类.在类初始化时,已经自行实例化 public class Singleton1 { ...原创 2020-02-05 23:46:17 · 132 阅读 · 0 评论 -
java中一个对象从创建到销毁的过程
Student stu = new Student(“zhangsan”); stu.add(); stu=null; 用户创建了一个Student对象,运行时JVM首先会去方法区寻找该对象的类型信息,没有则使用类加载器classloader将Student.class字节码文件加载至内存中的方法区,并将Student类的类型信息存放至方法区。接着JVM在堆中为新的Student实例分...原创 2020-02-05 23:35:00 · 2936 阅读 · 0 评论 -
内存溢出排错
首先控制台查看错误日志然后使用jdk自带的jvisualvm工具查看系统的堆栈日志定位出内存溢出的空间:堆,栈还是永久代(jdk8以后不会出现永久代的内存溢出)。如果是堆内存溢出,看是否创建了超大的对象如果是栈内存溢出,看是否创建了超大的对象,或者产生了死循环。...原创 2020-02-05 23:11:37 · 1137 阅读 · 0 评论 -
JVM加载class文件过程
JVM加载Class包括3个阶段:类加载,链接,初始化1. 类加载JVM通过类的全限定名(包命+类名)找到类的.class文件。然后把这个.class文件加载进来,这个过程需要通过ClassLoader来实现。ClassLoader包括:Boostrap ClassLoaderExtendsion ClassLoaderSystem ClassLoaderBoostrap Clas...原创 2020-02-05 23:03:10 · 314 阅读 · 0 评论 -
string,stringBuilder,stringbuffer区别及使用场景
三者在执行速度方面的比较:StringBuilder > StringBuffer > StringStringBuilder:线程非安全的。StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用。StringBuffer:线程安全的。StringBufferd支持并发操作,线性安全的,适合多线程中使用。StringBuilder类不是线程安全的,但...原创 2020-02-05 22:46:52 · 269 阅读 · 0 评论 -
String不可变的好处
String是不可变的、final的。Java在运行时也保存了一个字符串池(String pool),这使得String成为了一个特别的类。好处:只有当字符串是不可变的,字符串池才有可能实现。字符串池的实现可以在运行时节约很多heap空间,因为不同的字符串变量都指向池中的同一个字符串。但如果字符串是可变的,那么String interning将不能实现(译者注:String internin...原创 2020-02-05 22:34:10 · 313 阅读 · 0 评论 -
Java线程池及newCacheThreadExecutor使用
为什么要用线程池:减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消耗的内存也就越大,最后死机)。我们知道使用线程池可以大大的提高系统的性能,提高程序任务的执行效率,节约了系统的内存空间。在线程池中,每一个工作线程都可以被重...原创 2020-02-03 17:36:34 · 2534 阅读 · 0 评论 -
线程局部变量
线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。Java 提供 ThreadLocal 类来支持线程局部变量,是一种实现线程安全的方式。但是在管理环境下(如 web 服务器)使用线程局部变量的时候要特别小心,在这种情况下,工作线程的生命周期比任何应用变量的生命周期都要长。任何线程局部变量一旦在工作完成后没有释放,Java 应用就存在内存泄露的风险。...原创 2020-02-03 16:47:30 · 1131 阅读 · 0 评论 -
volatile与synchronized的区别,底层实现
首先两者都是用来确保数据的一致性的,volatile它能够使变量在值发生改变时尽快让其他线程知道,为什么要这么做呢?编译器为了加快程序运行速度,对一些变量的写操作会先在寄存器或者是cpu缓存上进行,最后才写入内存,这个过程,变量的新值对其他线程是不可见的,而volatile的作用就是使它修饰的变量的读写操作都必须在内存中进行。区别:Volatile本质是告诉jvm当前变量在寄存器中的值是不安全的...原创 2020-02-03 16:43:33 · 468 阅读 · 0 评论