Java
文章平均质量分 57
神秘的凯
一位不愿透露姓名的APICV工程师
展开
-
SpringBoot jar启动方式 指定外部yml文件不生效问题
我的目录其中 config是放的是yml文件此时启动命令source /etc/profile && java -Xms1024m -Xmx1024m -XX:+PrintGC -XX:+PrintGCDetails -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8080 -Dcom.sun.management.jmxremote.authenticate=false -Dco..原创 2021-09-11 15:40:55 · 4057 阅读 · 1 评论 -
java8中lambda的用法(map转list,list转map等等)
注意List 使用前需要做非空处理1.以某个属性分组Map<String,List<User>> map= userList.stream().collect(Collectors.groupingBy(User::getName));2.获取集合中的某个属性转为集合pictureList.stream().map(Picture::getSrc).collect(Collectors.toList());3.根据集合中的某个属性进行升序重排roomLis.原创 2021-07-27 16:41:27 · 3537 阅读 · 0 评论 -
java NIO AIO 区别
AIO 是彻底的异步通信。NIO 是同步非阻塞通信。有一个经典的举例。烧开水。假设有这么一个场景,有一排水壶(客户)在烧水。AIO的做法是,每个水壶上装一个开关,当水开了以后会提醒对应的线程去处理。NIO的做法是,叫一个线程不停的循环观察每一个水壶,根据每个水壶当前的状态去处理。BIO的做法是,叫一个线程停留在一个水壶那,直到这个水壶烧开,才去处理下一个水壶。可以看出AIO是最聪明省力,NIO相对省力,叫一个人就能看所有的壶,BIO最愚蠢,劳动力低下。简单的描述一下BIO的服务端通信模型:原创 2021-03-15 15:15:23 · 418 阅读 · 0 评论 -
Feign使用RequestInterceptor拦截器实现路由分发和跳转(动态路由)
获取请求内容最近项目中需要用到feign还要能实现转发,在网上找了很多基本都是一个模板。比如下面这种:https://www.jianshu.com/p/919d066a07aahttps://blog.csdn.net/xdsm1234/article/details/78834893但是这种写法实际上是url字符串拼接的方式进行转发参数。虽然低级了点,但是大多数情况下也满足我们的需要。最近在使用过程中发现特殊字符在转发之后全变成空格了。比如+&>这些,在业务端都不能正常接收到。在网原创 2020-11-24 11:24:01 · 2655 阅读 · 0 评论 -
关于 MappedByteBuffer文件句柄释放问题
今天在做大文件上传时遇到了一个bug 多次上传一个大点的文件会出现一个异常 异常表现为核心代码 上传 @Override public void uploadFileByMappedByteBuffer(MultipartFileParam param) throws IOException { //获取文件名称 String fileName = param.getName(); //获取文件上传路径与文件名 S原创 2020-11-17 14:48:25 · 1370 阅读 · 0 评论 -
Java对Android apk进行编辑 添加渠道标识 等三方信息
前言 项目中的手机客户端需要根据下载用户的不同附带不同的信息,所以就需要在WEB服务器端动态生成APK,于是有了下面的经历。历程 1.一开始的想法就是在APK本身就是个ZIP压缩包嘛,我把他解压缩,在里面中放一个配置文件,然后下载的时候,WEB服务器根据用户信息的不同动态替换这个配置文件,最后重新压缩成apk,然后APP运行的时候,读取这个配置文件就可以了。代码写好了,生成的安装包放手机一安装,安装包解析失败! 2.于是各种找资料,好多博客里面也都写Java动态往APK中添加配置文件,原创 2020-11-11 16:29:36 · 1715 阅读 · 19 评论 -
阿里云诊断工具Arthas的简单使用
一。 安装切换到要诊断的jdk使用的用户:su - test安装 arthas :curl -L https://alibaba.github.io/arthas/install.sh | sh查看java进程的pid :ps -ef | grep java对此pid执行 as.sh命令./as.sh pid出现以下界面表示运行成功:输入 dashboard命令就可以查看当前 系统的实时数据面板二。 下面是一些基本命...原创 2020-07-14 16:17:44 · 1560 阅读 · 0 评论 -
JVM日志分析
JVM故障分析及性能优化系列之四:jstack生成的Thread Dump日志线程状态2017年10月25日Jet MaJavaPlatformJVM故障分析及性能优化系列文章JVM故障分析及性能优化系列之一:使用jstack定位线程堆栈信息JVM故障分析及性能优化系列之二:jstack生成的Thread Dump日志结构解析JVM故障分析及性能优化系列之三:jstat命令的使用及VM Thread分析JVM故障分析及性能优化系列之四:jstack生成的Thread Dump日志线程状...原创 2020-06-24 17:44:10 · 623 阅读 · 0 评论 -
JAVA代理模式详解
代理模式(Proxy)是通过代理对象访问目标对象,这样可以在目标对象基础上增强额外的功能,如添加权限,访问控制和审计等功能。代理模式代理(Proxy)模式结构图Java代理分为静态代理和动态代理和Cglib代理,下面进行逐个说明。1.静态代理接口类AdminService.java接口package com.lance.proxy.demo.service;public interface AdminService { void update();..原创 2020-06-11 16:49:50 · 319 阅读 · 0 评论 -
jvisualvm 工具使用
VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe)。 https://visualvm.dev.java.net/ 一、介绍VisualVM,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的). 从界面上...原创 2020-05-15 18:10:32 · 1114 阅读 · 0 评论 -
深入浅出JVM调优
深入浅出JVM调优基本概念:JVM把内存区分为堆区(heap)、栈区(stack)和方法区(method)。由于本文主要讲解JVM调优,因此我们可以简单的理解为,JVM中的堆区中存放的是实际的对象,是需要被GC的。其他的都无需GC。下图文JVM的内存模型 从图...原创 2020-01-06 16:42:20 · 398 阅读 · 0 评论 -
根据实际情况设置分析GC参数
当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化。但GC算法复杂,影响GC性能的参数众多,且参数调整又依赖于应用各自的特点,这些因素很大程度上增加了GC优化的难度。即便如此,GC调优也不是无章可循,仍然有一些通用的思考方法。本篇会介绍这些通用的GC优化策略和相关实践案例,主要包括如下内容:优化前准备: 简单回顾JVM相...原创 2020-01-06 11:09:16 · 898 阅读 · 0 评论 -
TomcatGC调优
tomcat启动参数,将JVM GC信息写入tomcat_gc.log CATALINA_OPTS='-Xms512m -Xmx4096m -XX:PermSi...原创 2020-01-03 14:37:03 · 1078 阅读 · 0 评论 -
TomcatGC调优
各个参数含义,以及GC机制,参考下文:一、相关概念基本回收算法引用计数(Reference Counting)比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep)此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段...原创 2020-01-03 14:31:47 · 241 阅读 · 0 评论 -
JAVA JVM设置分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同...原创 2019-12-30 11:41:04 · 169 阅读 · 0 评论 -
Java中的等待池和锁池
wait() ,notifyAll(),notify() 三个方法都是Object类中的方法. 锁池:假设线程A已经拥有了某个对象(注意:不是类)的锁,而其它的线程想要调用这个对象的某个synchronized方法(或者synchronized块),由于这些线程在进入对象的synchronized方法之前必须先获得该对象的锁的拥有权,但是该对象的锁目前正被线程A拥有,所以这些线程就原创 2016-10-14 10:49:47 · 3268 阅读 · 0 评论 -
java根据文件日期排序删除保留最新的三个文件
package com.op.defile;import java.io.File;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class ddd { /** * @param args原创 2017-01-05 08:35:09 · 4707 阅读 · 0 评论 -
java正则匹配指定文件名称动态删除(保留最新的三个文件夹)升级版
java正则匹配指定文件名称动态删除(保留最新的三个文件)升级版获取指定文件名public static void main(String[] args) { ".* 你指定的文件名称字符.*" //为正则表达式 final String fileName = ".*JSMY_backup.*"; File path = new File("D://Demo");原创 2017-01-06 10:02:17 · 3033 阅读 · 0 评论 -
酷派云盘关闭 不能批量转移文件 通过模拟请求方式下载所有文件
联系方式 qq 4697********** 12月28日 服务器已被回收 原存放于百度云上的资料 appkey过期 数据截止8月份为止无法恢复了 各位节哀 (酷派云真坑)原创 2018-08-10 10:18:05 · 3091 阅读 · 0 评论 -
java JVM垃圾回收机制
什么是自动垃圾回收?自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。在用 C 之类的编程语言时,程序员需要自己手动分配和释放内存。而 Java 不一样,它有垃圾回收器,释放内存由回收器负责。本文...原创 2019-06-11 17:30:17 · 278 阅读 · 0 评论 -
HashTable和HashMap的区别详解
一、HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。 HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。 HashMap 实现了Serializable接原创 2016-06-04 19:35:53 · 119153 阅读 · 11 评论