
java
limeOracle
这个作者很懒,什么都没留下…
展开
-
Java线程池ThreadPoolExecutor使用和分析(一)
相关文章目录: Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理 Java线程池ThreadPoolExecutor使用和分析(三) - 终止线程池原理 线程池是可以控制线程创建、释放,并通过某种策略尝试复用线程去执行任务的一种管理框架,从而实现线程资源与任务之间的一种平衡。 以下分析基于 JDK1.7 以下是本文的目录大纲:...转载 2022-03-24 15:59:50 · 714 阅读 · 0 评论 -
Spring-TX-Propagation-事务传播行为
Spring-Tx传播行为propagation提交异常捕获后异常required (rollbackOnly)do nothing / commitsetRollbackOnly / rollbacksetRollbackOnly / rollbackrequired_new (isNewTransaction)commit / commitrollback / rollbackrollback / commitcommit / rollbackn原创 2022-01-18 21:01:35 · 357 阅读 · 0 评论 -
菜单目录-行转树
listProjectVOSForFeishu: @Override public List<DashMenuTreeNodeVO> listProjectVOSForFeishu() { List<ProjectDashboardTabChartVO> projectDashboardTabChartVOList = dashboardMapper.listProjectDashboardTabChart(true); if (.原创 2022-01-06 12:48:09 · 739 阅读 · 0 评论 -
日志打印 - 命令模式、模版方法模式
1. logback-spring.xml <appender name="monitorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>%msg%n</pattern> </encoder> <file>${logging.fil原创 2021-11-16 10:48:10 · 522 阅读 · 0 评论 -
SpringBoot - Idea - 远程Debug
配置Idea Run ->Edit Configurations... "+" -> Remote Name 填写 配置名称(branch-remote) Transport 选中 Socket Debugger mode 选中 Attach Host 填写 远程IP(被Debug的服务器ip) Port 填写 连接端口 (被Debug的服务器暴露的端口) 服务器项目启动(-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspen.原创 2021-01-21 10:53:24 · 181 阅读 · 0 评论 -
深递归拷贝
内省方式拷贝对象属性org.springframework.beans.BeanUtils/** * Copy the property values of the given source bean into the given target bean. * <p>Note: The source and target classes do not have to match or even be derived * from each other, as long as.原创 2020-09-28 19:25:02 · 144 阅读 · 0 评论 -
Centos 7.4 修改时区
1. 查看系统当前的时区timedatectl2. 展示所有的时区timedatectl list-timezones3. 修改系统使用的时区timedatectl set-timezone Asia/Shanghai原创 2020-09-23 17:58:17 · 430 阅读 · 0 评论 -
OSS 对象存储 架构模式
1. 类名解释OssService : 对象存储业务定义接口,定义业务中使用Oss功能的方法定义。具体实现方法由实现类定义。String getDownloadUrl(Long resourceId);@param resourceId:业务资源id@return 对应资源的下载地址OssQiNiuService:对象存储业务定义实现方法,实现OssService接口定义的具体逻辑。OssQiNiuBucketZoneEnum:对象存储空间位置,用来初始化OssQiNiu配置信息hu原创 2020-09-23 11:10:13 · 1503 阅读 · 0 评论 -
货币汇率转换策略
货币汇率转换表结构CREATE TABLE `currency_symbol` ( `currency_code` CHAR(5) NOT NULL COMMENT '货币代码', `currency_symbol` CHAR(5) NOT NULL COMMENT '货币符号', `from` DECIMAL(10,5) NOT NULL COMMENT '英镑转其他货币汇率', `to` DECIMAL(10,5) NOT NULL COMMENT '其他货币转英镑汇率', P原创 2020-09-23 09:42:41 · 495 阅读 · 0 评论 -
Java 动态修改注解的属性值
以往来看,注解的属性值一般都是“硬编码”。但最近在开发过程中遇到了需要根据运行环境来设置注解属性值的需求。举个例子:package com.das.common.util.csv;import java.lang.annotation.*;/** * @Author liangmy * @Date 2018/10/15 */@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.FIELD})pub原创 2020-09-14 19:26:43 · 1644 阅读 · 0 评论 -
String.format(“%tx“, date)
1.%tx1.1 常见日期和时间组合 c 包括全部日期和时间信息 星期二 九月 01 15:24:29 CST 2020 F "年-月-日"格式 2020-09-01 D "月/日/年"格式 09/01/20 r "HH:MM:SS PM"格式(12时制) 03原创 2020-09-01 18:07:09 · 631 阅读 · 0 评论 -
Think In Java 21.4.1 装饰性花园
package lime.tij._021._004._001.me;import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;im...原创 2020-02-17 21:27:03 · 183 阅读 · 0 评论 -
Think In Java 21.2.14 捕获异常
package lime.tij._021._002._014;import java.util.concurrent.*;/** * @Author : Liangmy * @Description : * @Date : Created in 2020/2/6 下午1:58 * @Modified By : * * * 01. 任务 * Thread.y...原创 2020-02-12 13:38:38 · 210 阅读 · 0 评论 -
Think In Java 21.3.5 临界区
有时,你只是希望防止多个线程同时访问方法内部的部分代码而不是防止访问整个方法。通过这种方式分离出来的代码段被称为临界区(critical section),它也使用synchronized关键字建立。这里,synchronized被用来指定某个对象,此对象的锁被用来对花括号内的代码进行同步控制:synchronized(syncObject){ // This code ca...原创 2020-02-10 12:18:10 · 239 阅读 · 0 评论 -
Think In Java 21.2.12 创建有响应的用户界面
package lime.tij._021._002._012;import java.io.IOException;/** * @Author : Lime * @Descri : * @Notice : * 01. 任务 * Thread.yield() : 1. 仅使当前线程从运行状态转到可运行状态,而不是等待或阻塞状态。 * Thread.yield() : 2. ...原创 2020-02-05 21:19:35 · 141 阅读 · 0 评论 -
代码清单3-8 动态对象年龄判定《深入理解Java虚拟机》周志明
package lime.jvm._003._006._005;/** * @Author : Liangmy * @Description : * @Date : Created in 2020/1/6 下午8:56 * @Modified By : * VM Args : -Xms20M -Xmx20M -Xmn10M -XX:SurvivorRatio=8 -XX:+Prin...原创 2020-01-06 21:20:27 · 194 阅读 · 0 评论 -
代码清单3-8 动态对象年龄判定《深入理解Java虚拟机》周志明
为了能更好地适应不同程序的内存状况,虚拟机并不是永远地要求对象的年龄必须达到了MaxTenuringThreshold才能晋升老年代,如果在Survivor空间中相同年龄所有对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象就可以直接进入老年代,无须等到MaxTenuringThreshold中要求的年龄。执行代码清代3-8中的testTenuringThreshold2...原创 2020-01-05 22:51:53 · 422 阅读 · 0 评论 -
代码清单3-7 长期存活的对象将进入老年代《深入理解Java虚拟机》周志明
既然虚拟机采用了分代收集的思想来管理内存,那么内存回收时,就必须能识别哪些对象应放在新生代,哪些对象应放在老年代中。为了做到这点,虚拟机给每个对象定义了一个对象年龄(Age)计数器。如果对象在Eden出生并经过第一次Minor GC后仍然存活,并且能别Survivor容纳的话,将被移动到Survivor空间中,并且对象年龄设为1。对象在Survivor区中每“熬过”一次Minor GC,年龄就增加...原创 2020-01-05 15:08:34 · 737 阅读 · 0 评论 -
代码清单3-6 大对象直接进入老年代《深入理解Java虚拟机》周志明
Java Code:package lime.jvm._003._006._002;/** * @Author : Liangmy * @Description : * @Date : Created in 2020/1/1 下午10:58 * @Modified By : *//** * VM Args : -verbose:gc -Xms20M -Xmx20M -Xm...原创 2020-01-01 23:07:46 · 224 阅读 · 0 评论 -
代码清单3-5 新生代Minor GC《深入理解Java虚拟机》周志明
使用Client模式虚拟机运行,验证默认的Serial/Serial Old收集器下(ParNew/Serial Old收集器组合的规则也基本一致)的内存分配和回收的策略大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC代码清单3-5的testAllocation()方法中,尝试分配3个2MB大小和1个4MB大小的对象,在运行时...原创 2020-01-01 22:10:46 · 316 阅读 · 2 评论 -
深入理解Java虚拟机示意图集合
图3-2 “标记-清除”算法示意图图3-3 复制算法示意图图3-4 “标记-整理”算法示意图图3-6 Serial/Serial Old收集器运行示意图图3-7 ParNew/Serial Old收集器运行示意图图3-8 Serial/Serial Old收集器运行示意图图3-9 Parallel Scavenge/Parallel Old收集器运行示意图图3-10 Conc...原创 2019-12-30 23:20:07 · 248 阅读 · 0 评论 -
JVM -XX: 参数介绍
功能开关:参数 默认值或限制 说明 参数 默认值 功能 -XX:-AllowUserSignalHandlers 限于Linux和Solaris,默认不启用 允许为java进程安装信号处理器,信号处理参见类:sun.misc.Signal, sun.misc.SignalHandler -XX:+DisableExplicitGC 默认启用...转载 2019-12-29 17:58:34 · 364 阅读 · 0 评论 -
HotSpot的准确式GC
前言在上一篇文章我们学习到了Java虚拟机是如何利用可达性算法判断对象是否需要回收的,由于在GC进行时,必须暂停所有的Java执行线程(Sun称之为“Stop The World”),所以,虚拟机必须尽量的优化GC过程的效率,减少暂停的时间。那么对于GC Roots,HotSpot是如何快速确定的呢?对象的创建首先,我们需要知道在JVM中,对象是如何被创建的。而对象的创建通常是通过ne...转载 2019-12-28 23:32:55 · 947 阅读 · 0 评论 -
JDK1.6 新生代(Young(Eden、From、to))、老年代(Old)、持久化区(premanent)
堆内存Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区...转载 2019-12-28 19:10:40 · 2176 阅读 · 0 评论 -
一次对象自我拯救的演示(GC、finalize()、F-Queue、finalilzer)
Java Code:package lime.jvm._003._002._004;import java.util.concurrent.TimeUnit;/** * @Author : Liangmy * @Description : * @Date : Created in 2019/12/28 下午4:34 * @Modified By : */public...原创 2019-12-28 16:48:20 · 727 阅读 · 0 评论 -
javap 指令集
栈和局部变量操作将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入栈iconst_2 将int类型常量2压入栈iconst_3 将int类型常量3压入栈iconst_4 将int类型常量4压入栈iconst_5 将int类型常量5压入栈...转载 2019-12-28 00:47:07 · 196 阅读 · 0 评论 -
Java虚拟机栈之操作数栈
JAVAP指令集环境:jdk1.8首先来一张图看看jvm的运行时数据区如下(有个印象即可):什么是操作数栈?- 与局部变量表一样,均以字长为单位的数组。不过局部变量表用的是索引,操作数栈是弹栈/压栈来访问。操作数栈可理解为java虚拟机栈中的一个用于计算的临时数据存储区。- 存储的数据与局部变量表一致含int、long、float、double、reference、ret...转载 2019-12-28 00:45:28 · 849 阅读 · 0 评论 -
Java中的Unsafe
ava和C++语言的一个重要区别就是Java中我们无法直接操作一块内存区域,不能像C++中那样可以自己申请内存和释放内存。Java中的Unsafe类为我们提供了类似C++手动管理内存的能力。Unsafe类,全限定名是sun.misc.Unsafe,从名字中我们可以看出来这个类对普通程序员来说是“危险”的,一般应用开发者不会用到这个类。Unsafe类是"final"的,不允许继承。且构造函数是...转载 2019-12-27 22:12:50 · 149 阅读 · 0 评论 -
JVM 常量池、运行时常量池、字符串常量池
常量池: 即class文件常量池,是class文件的一部分,用于保存编译时确定的数据。 保存的内容如下图:package lime;/** * @Author liangmy * @Date 2019/1/22 *//** * 常量池: * <p> * 即class文件常量池,是class文件的一部分,用于保存编译时确定的数据。...转载 2019-12-27 18:40:22 · 201 阅读 · 2 评论 -
Java对象头详解
由于Java面向对象的思想,在JVM中需要大量存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记字段用于增强对象功能,这些标记字段组成了对象头。1.对象头形式JVM中对象头的方式有以下两种(以32位JVM为例):1.1.普通对象|--------------------------------------------------------------|| ...转载 2019-12-23 14:48:36 · 338 阅读 · 0 评论 -
大杂烩 -- Java内存布局【图】以及java各种存储区【详解】
基础大杂烩 -- 目录-- -- ---- -- ---- -- ---- -- ---- -- ---- -- ---- -- --一、Java内存布局浅谈1. 总述我们知道,线程是操作系统调度的基本单元。所有线程共享父进程的堆空间,而每个线程都有自己的栈空间和程序计数器。所以,Java虚拟机也看以看作是一个独立的进程,里面的内存空间分为线程共享空间和线程独...原创 2017-06-26 19:12:00 · 114 阅读 · 0 评论 -
常量相关的方法(枚举类型):Thing In Java
常量相关的方法Java的enum有一个非常有趣的特性,即它允许程序员为enum实例编写方法,从而为每个enum实例赋予各自不同的行为。要实现常量相关的方法,你需要为enum定义一个或多个abstract方法,然后为每个enum实例实现该抽象方法。参考下面的例子:package lime.tij._019._010._000;import java.text.DateFormat;...原创 2019-10-11 11:02:15 · 180 阅读 · 0 评论 -
使用EnumMap实现多路分发(multiple dispatching):Thing In Java
EnumMap是一种特殊的Map,它要求其中的键(key)必须来自一个enum。由于enum本身的限制,所以EnumMap在内部可由数组实现。因此EnumMap的速度很快,我们可以放心地使用enum实例在EnumMap中进行查找操作。不过,我们只能将enum的实例作为键来调用put()方法,其他操作与使用一般的Map差不多。下面的例子演示了命令设计模式的用法。一般来说,命令模式首先需要一个只有...原创 2019-10-10 18:10:25 · 219 阅读 · 0 评论