
java编程
文章平均质量分 60
_晓夏_
宇宙万物,从宏观到微观,程序就像人生,有的简单直观,有的丰富还有深度。
男,计算机软件开发爱好者,做一些有意义的事情,做有价值的产品,职业丰富,爱好简单,专注工作,品味生活!
展开
-
【Java SpringBoot Starter】开发一个自己的SpringBoot Starter组件,应该怎么写,需要什么配置
【Java SpringBoot Starter】开发一个自己的SpringBoot Starter组件,应该怎么写,需要什么配置原创 2023-07-17 18:07:58 · 848 阅读 · 0 评论 -
x,y的平面坐标系中,有多个无序的点,想对这些点进行逆时针排序,这样后面就可以根据这些点的顺序画出一个多边形来
x,y的平面坐标系中,有多个无序的点,我们目的的想根据这些点围成一个平面的多边形。但是围成之前需要对这些点进行排序——逆时针排序,这样给出的点就是有序的了,然后按照点的顺序进行绘制多边形。原创 2023-05-18 10:15:47 · 975 阅读 · 0 评论 -
阿里云OSS上传文件,如何通过OSS中的sdk代码OSSClient 进行本地文件的上传
阿里云OSS上传文件,如何通过OSS中的sdk代码OSSClient 进行本地文件的上传。原创 2023-04-23 17:16:14 · 957 阅读 · 0 评论 -
工作中遇到需要把一个平面的数据转换成树状结构数据,实现树状结构的展示
我们这里有2个实体对象,一个是House对象就是相当于从数据库中查询的数据,扁平的数据,现在就是要把House数据转换成树状结构。"parentNodeName": "1栋-10单元-6楼-601""parentNodeName": "1栋-3单元-2楼-203""parentNodeName": "1栋-3单元-2楼-206""parentNodeName": "1栋-10单元-6楼""parentNodeName": "1栋-3单元-2楼""parentNodeName": "1栋-3单元-2楼"原创 2023-03-14 13:42:58 · 270 阅读 · 0 评论 -
mybatis批量插入数据导致系统OOM,微服务内存爆了
今天我们来说说工作中遇到的一个真实案例,由于使用mybatis的批量插入功能,导致系统内存溢出OOM(Out Of Memory), "java.lang.OutOfMemoryError: Java heap space"的报错,导致服务出现短暂的服务不可用,大概一两分钟不可用。1) 上面写的阈值1000 ,需要根据自己的业务场景来设置,比如你插入对象简单,对象属性不读,也不复杂,单个对象的大小也不超过1kb,那你这里的阈值可以设置大些,比如2000, 甚至 可以是 10000;原创 2022-12-02 18:32:40 · 4202 阅读 · 1 评论 -
Java基础-JVM基础知识、JVM原理
因为在定位堆中的对象时JVM会记录下对所有对象的引用,如果在定位对象过程中,有新的对象被分配或者刚记录下的对象突然变得无法访问,就会导致一些问题,比如部分对象无法被回收,更严重的是如果GC期间分配的一个GC Root对象引用了准备被回收的对象,那么该对象就会被错误地回收。STW总会发生,不管是新生代还是老年代,比如CMS在初始标记和重复标记阶段会停顿,G1在初始标记阶段也会停顿,所以并不是选择了一款停顿时间低的垃圾收集器就可以避免STW的,我们只能尽量去减少STW的时间。特别关注在多线程之间的内存可见性。转载 2022-12-01 23:26:27 · 144 阅读 · 0 评论 -
JDK中的fail-fast(快速失败),fail-safe(安全失败) 是什么,有什么用,JDK作者对此的设计思想是什么
fail-fast(快速失败)fail-safe(安全失败)一、快速失败(fail-fast)每个实现了Collection接口的集合类都有一个iterator()方法,该方法返回一个 Iterator对象(这是一种迭代器的设计模式),在Iterator对象中进行 遍历(next),删除(remove)操作的时候,可能会发生ConcurrentModificationException异常 。(所以要理解不是在ArrayList中进行遍历,删除(remove)操作的时候发生Concur..原创 2021-06-30 16:58:31 · 232 阅读 · 0 评论 -
ArrayList扩容原理,有些细枝末节你未必知道,你的同事也不知道
ArrayList的扩容,数组的初始容量是多少,什么时候会触发扩容,每次扩容的新容量是多少,怎么确定的? 针对是JDK1.8 来说的!!1· ArrayList 初始化时,数组默认初始长度为10 -> new ArrayList()2·ArrayList add() 方法的时候,会触发是否需要扩容,即把元素放入数组之前就会检查是否扩容,而不是把元素放入到数组后在扩容。这个和HashMap的扩容是相反的——HashMap是在put()方法把Node节点挂到链表之后再进行扩容。是否...原创 2021-06-30 15:15:59 · 381 阅读 · 0 评论 -
ORM框架的发展,Hibernate、Mybatis框架会是终点吗,还能玩出哪些新花样
ORM框架的发展,Hibernate、Mybatis框架会是终点吗,还能玩出什么新花样《天龙八部》开场,扛着音响出场的乔峰,霸气十足,我们以为这是全剧的武力天花板了,没想到最后出场的少林扫地僧,这才是真正的"王者",这才是真的战力天花板。ORM框架,一端连着应用(application),一端连着数据库(database),当我们使用spring-jdbc,JdbcTemplate已经能完成所有数据库相关操作的时候,也没想过ORM框架,没想到hibernate、mybatis这种框架,让我..原创 2021-06-04 10:32:35 · 837 阅读 · 0 评论 -
JAVA 中内部类的一些用法,以及内部类访问外部变量为什么需要final修饰
JAVA 中内部类的一些用法,以及内部类访问的变量为什么需要final修饰 几个小问题,我们想想看:内部类访问类成员变量,该成员变量需要 final修饰吗?为什么? 内部类访问方法的局部变量,该局部变量需要final修饰吗?为什么?接下来我们来解答这两个问题在java8出现之前,内部类的写法,我们经常这样写:写在某个类中,或者某个类的方法中,或者匿名内部类。但是使用内部内部类经常遇到一个问题,就是内部类有时要访问到方法中的局部变量,或类变量,导致需要变量申明为 fin...原创 2021-05-24 15:39:00 · 410 阅读 · 0 评论 -
springboot开发,注解Annotation和xml配置同时兼容,比如项目中原来的bean xml配置如何通过注解进行使用
springboot开发,常用注解的方式,进行自动装配。但是有时为了同时兼容项目中原来的bean xml配置,那么应该如何把xml文件 加载到 ioc容器中呢,比如 在resources 目录下,有个 springContext.xml 的xml配置文件,我们只需要 加一个注解搞定: @ImportResource(locations = "springContext.xml")代码如下:@Configuration@ImportResource(locations = "sp...原创 2021-05-21 17:46:20 · 417 阅读 · 0 评论 -
java语言Future、FutureTask的使用,对比Callable、Runable的执行过程(三)
前面两篇我们介绍了 线程的基本知识,Thread,Runnable,Callable,今天我们看看FutureTask的使用,为什么要介绍他呢,一方面他提供了线程执行结果的返回值,另外一方面和前面说的callable有些相通性看看源码中FutureTask 的类继承关系:public class FutureTask<V> implements RunnableFuture<V> public interface RunnableFuture<V> ex..原创 2021-04-22 15:48:18 · 212 阅读 · 0 评论 -
java语言 多线程 Callable接口的使用(二)
在前面一篇文章中,我们简单介绍了java语言中,如何创建线程,使用线程,其中也提到了 Callable的使用,这里单独介绍下 Callable这个接口看看他的定义:@FunctionalInterfacepublic interface Callable<V> { /** * Computes a result, or throws an exception if unable to do so. * * @return computed r.原创 2021-04-22 14:45:14 · 262 阅读 · 0 评论 -
java语言 创建线程的几种方式(一)
java语言 线程的6种状态:NEW, Runable, Blocked, Waiting, Timed_Waiting,TERMINATEDjava语言 创建线程的几种方式:public class ThreadDemo { // 线程的六种状态: NEW, Runable, Blocked, Waiting, Timed_Waiting,TERMINATED public static void main(String[] args) { // 1. ...原创 2021-04-21 18:07:18 · 85 阅读 · 0 评论 -
java8 Lambda表达式
1. 函数式接口 —— 接口只有一个方法,但是接口可以用默认方法、静态方法2. 参数定义 —— 可以忽略参数类型,一条语句的时候可以忽略大括号3. 方法引用: 静态方法引用,对象方法引用public class TestDemo{ public static void main(String[] args) { Defaulable defaulable = DefaulableFactory.create( DefaultableImpl:..原创 2021-04-14 10:10:08 · 75 阅读 · 0 评论