java
java世界的奥秘
star_pluss
这个作者很懒,什么都没留下…
展开
-
jvm常用参数
-Xms2g 堆内存初始化大小–Xmx2g 堆内存可分配最大内存-Xmn750m 对-XX:newSize、-XX:MaxnewSize同时配置,新生代大小-XX:+PrintGCDateStamps 打印gc日志时间-XX:+PrintGCDetails 打印gc日志详细信息-XX:+PrintGCApplicationStoppedTime 打印gc停顿时间-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息-Xloggc:/data/jvm/gc.log 打印gc日志到指原创 2022-03-15 10:38:50 · 515 阅读 · 0 评论 -
spring cloud gateway中请求过滤器
spring cloud gateway中请求过滤器package com.zmx.gateway.filter;import com.zmx.gateway.properties.MallAuthProperties;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang.StringUtils;import org.springframework.beans.factory.annotation.Autowired;i原创 2021-11-18 16:53:35 · 384 阅读 · 0 评论 -
spring cloud gateway中跨域问题
spring cloud gateway中跨域问题package com.zmx.gateway.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.we原创 2021-11-18 16:51:47 · 107 阅读 · 0 评论 -
redis与数据库数据一致性问题
采用先更新数据库,再删除缓存方式(推荐) | 如果是热点key比较多情况下,用先更新数据库,再更新缓存方式分布式锁对当前更新数据加锁,保证并发数据一致性修改订单状态此订单加入延时队列中,补偿删除对应缓存中数据删除缓存@Transactional(rollbackFor = Exception.class) public B2cOrderDto updateOrderStatusByCode(String orderCode, OrderStatusEnum orderStatusEnu原创 2021-10-26 11:46:17 · 130 阅读 · 0 评论 -
net.sf.json-lib
net.sf.json-lib分为两个不同版本,注意加入classifier区别版本<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk13</classifier></depen原创 2021-10-26 11:43:30 · 1837 阅读 · 0 评论 -
过滤重复数据
定时任务或者一些需要大量处理数据操作时,传统方式都是查询数据库后进行判断,带来弊端就是大量IO造成数据库连接打满,严重影响性能。基于两级缓存优化数据判重实现代码如下:package com.mingxing.study.common.utils;import com.google.common.collect.Maps;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.A.原创 2021-09-16 17:00:12 · 242 阅读 · 0 评论 -
@Autowired初始化内幕
spring初始化时会将当前bean按照类型和名称注入到ioc容器中@Autowired会根据bean类型取对应对象引用,如果检查到bean类型只有一个就直接取,如果有多个就按照当前bean名称匹配取注意点:一个类B实现或继承类A,在容器中B的类型仍然为A...原创 2021-09-15 16:55:44 · 483 阅读 · 0 评论 -
pojo转换接口说明方法
pojo转换接口说明方法package com.yonyou.convert.service;import com.alibaba.fastjson.JSON;import com.yonyou.convert.dto.ResponseDto;import io.swagger.annotations.ApiModel;import io.swagger.annotations.ApiModelProperty;import lombok.extern.slf4j.Slf4j;import原创 2021-08-24 15:48:25 · 136 阅读 · 0 评论 -
Jackson转换工具类
spring自带 Jackson转换工具类package com.yonyou.convert.common.utils;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.core.type.TypeReference;import com.fasterxml.jackson.databind.DeserializationFeature;import com.faster原创 2021-08-24 15:42:47 · 238 阅读 · 0 评论 -
基于NIO实现Discard服务器
基于NIO实现Discard服务器1.服务端DisCardServerpackage com.netty.redis.zookeeper.netty.unit1.oneday;import lombok.extern.slf4j.Slf4j;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;原创 2021-07-13 11:44:31 · 271 阅读 · 0 评论 -
基于nio的DatagramChannel传输数据
DatagramChannel是一个接受UDP包的通道,不保证数据传输的可靠性1.服务端serverpackage com.netty.redis.zookeeper.netty.unit1.oneday;import lombok.extern.slf4j.Slf4j;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channel原创 2021-07-13 10:30:36 · 259 阅读 · 0 评论 -
基于nio的ScoktChannel数据传输
java中nio的ScoktChannel数据传输1.服务端serverpackage com.netty.redis.zookeeper.netty.unit1.oneday;import lombok.extern.slf4j.Slf4j;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.ServerSocketC原创 2021-07-13 10:28:01 · 230 阅读 · 0 评论 -
基于java nio的channel实现高效率复制文件
基于java nio的channel实现高效率复制文件关键:其中的transferFrom基于零拷贝技术package com.netty.redis.zookeeper.netty.unit1;import lombok.extern.slf4j.Slf4j;import java.io.*;import java.nio.channels.FileChannel;/** * @Description: 第一天练习 * 通过使用 Channel 通道,完成复制文件。 * 本环节的目原创 2021-07-12 16:51:20 · 306 阅读 · 0 评论 -
spring事务传播特性
spring事务传播特性1.Propagation.REQUIRED(spring中@Transactional默认方式)如果当前有事务就加入当前事务,如果没有事务就新建一个事务2.Propagation.SUPPORTS支持当前事务,如果当前没有事务,就以非事务方式运行3.Propagation.MANDATORY使用当前事务,如果当前没有事务,就抛出异常4.Propagation.REQUIRES_NEW新建一个事务,如果当前有事务就将当前事务挂起。外部事务不会影响内部事务5.Prop原创 2021-06-07 15:25:58 · 298 阅读 · 0 评论 -
jdk1.8中常用线程池总结
常用线程池总结1.ThreadPoolExecutor2.newFixedThreadPool3.newCachedThreadPool4.newSingleThreadExecutor5.newScheduledThreadPoolpackage com.example.demo.study.thread;import java.util.concurrent.*;import java.util.concurrent.atomic.AtomicInteger;import stat原创 2021-06-03 17:02:54 · 271 阅读 · 0 评论 -
自定义shiro
重写AuthorizingRealm,自定义登录shiro规则和信息public class UserRealm extends AuthorizingRealm { private static final Logger logger = LoggerFactory.getLogger(UserRealm.class); @Autowired private LoginService loginService; @Override @SuppressWarnings("unchecked"原创 2021-05-17 10:03:18 · 213 阅读 · 0 评论 -
类加载的双亲委派加载原理
java中类加载的双亲委派加载原理原理:类加载时总是寻找自己的双亲进行加载,以此递归向上寻找,直到找不到双亲,如果双亲加载器路径下没有找到这个类,就依次在各自的类下进行查找。优点:1.由于总是向上带有方向的优先级加载方式,可以避免类的重复加载。2.避免jdk核心api被篡改,假设有人定义了java.lang.Integer,如果没有双亲委派,那么是不是jdk的核心类就被认为修改了呢,使用双亲委派原则,类加载器发现java.lang.Integer已经被加载过就不会再加载自定义类,避免被篡改。.原创 2021-05-11 16:26:19 · 137 阅读 · 0 评论 -
hutool工具包导出excel文件filename乱码与中文列宽自适应问题
hutool工具包导出excel文件filename乱码与中文列宽自适应问题*话不多说,直接代码~~~~*修改之前:/** * 导出excel */ public static void downloadExcel(List<Map<String, Object>> list, HttpServletResponse response) throws IOException { String tempPath = SYS_TEM_DI原创 2021-04-20 15:44:25 · 4376 阅读 · 0 评论 -
静态代理和动态代理详解
代理模式(Proxy)是通过代理对象访问目标对象,这样可以在目标对象基础上增强额外的功能,如添加权限,访问控制和日志等功能。Java代理分为静态代理和动态代理和Cglib代理,下面进行逐个说明。1.静态代理接口类AdminService.java接口package com.example.demo.study.proxy.staticProxy;public interface AdminService { /** * 获取用户名称 * @return *转载 2021-03-18 14:03:10 · 412 阅读 · 0 评论 -
使用数组模拟队列-编写一个ArrayQueue类
使用数组模拟队列-编写一个ArrayQueue类package com.zhaomx.demo.algorithm.queue;/** * @author 赵明兴 * @version 1.0 * @description 使用数组模拟队列-编写一个ArrayQueue类 * @create 2021-03-17 20:44 **/public class ArrayQueueDemo { public static void main(String[] args) {原创 2021-03-17 21:48:44 · 112 阅读 · 0 评论 -
二维数组与稀疏数组相互转换
这里写自定义目录标题二维数组与稀疏数组相互转换二维数组与稀疏数组相互转换二维数组转稀疏数组的思路:1.遍历原有数组,得到有效数据的个数sum2.根据sum就可以创建稀疏数组sparseArr int[sum+1][3]3.将二维数组的有效数据存入稀疏数组稀疏数组转回二位数组的思路:1.先读取稀疏数组的第一行,根据第一行的数据创建二维数组,比如上面的charseArr = int[11][11]2.在读取稀疏数组的后几行的数据,并赋值给二维数组即可java代码:package com.原创 2021-03-16 22:22:05 · 223 阅读 · 0 评论 -
java高精度计算类
/** * 用于高精确处理常用的数学运算 */public class ArithmeticUtils { //默认除法运算精度 private static final int DEF_DIV_SCALE = 10; /** * 提供精确的加法运算 * * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ public static double add(d原创 2020-12-27 14:41:00 · 216 阅读 · 0 评论 -
java并发之AbstractQueuedSynchronizer (1)
java并发编程必须了解的一个包java.util.concurrent,我们经常用到的并发工具类,例如:Reentrantlock,CountDownLatch,Semaphore等。这些类的底层都依赖于AbstractQueuedSynchronizer这个类。1.AbstractQueuedSynchronizer 作用Reentrantlock,CountDownLatch,Semaphore等都实现了内部类Sync,该类继承了 AbstractQueuedSynchronizer类,所有锁机原创 2020-12-27 14:29:16 · 125 阅读 · 0 评论 -
设计模式之-单例模式
设计模式之-单例模式整个程序有且仅有一个实例,该类负责创建自己的对象同时确保只有一个对象被创建。通常用于在工具类的实现或创建对象需要消耗资源。特点类构造器私有持有自己类型的属性对外提供获取实例的静态方法痴汉模式public class God{ //类加载时就由类加载器加载,此对象不会作为GC ROOTS,永远不会被GC回收 private static God god = new God(); private God(){ } //私有化构原创 2020-12-25 09:52:28 · 99 阅读 · 0 评论