
java
文章平均质量分 72
博大的Java世界
主要从事Java开发工作,熟悉web前端技术,如JS,JQUERY,DIV CSS,熟悉数据库如oracle,以及流行的后端开发框架,如spring,springMVC,mybatis,微服务,熟悉tomcat,weblogic服务器部署等。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Weblogic10 升级Weblogic12c 关于jersery#1的兼容问题
weblogic12c 与cxf 冲突原创 2022-06-20 22:03:36 · 1285 阅读 · 1 评论 -
windows 系统彻底删除idea残留配置
今天idea 到期,并且想换一个比较新的版本,下载安装后发现显示不正常,没有免费使用选项,估计是上个版本没有卸载干净导致,于是进行清理之路。1 程序卸载(无需描述)2 注册表清理windows + R 输入regedit 打开注册表点击一级菜单 HKEY_CURRENT_USER, 右键查找,输入idea,会找到jetbrains,然后,右键删除点击一级菜单 HKEY_CURRENT_USER, 右键查找,输入jetbrain,会找到jetbrain相关,然后,右键删除。3.系统文.原创 2021-10-17 11:37:29 · 16052 阅读 · 2 评论 -
通过验证证明synchronsyncized 关键字的锁升级
对于java 开发synchronized并不陌生,在我们并发编程中有一定分量,jdk1.5之前为重量级锁,jdk1.6后由于业务需要进行锁优化(具体jdk1.5是否为重量级锁,由于没有使用过不在验证);首先我们要知道我们对象体有2词1补充的说法,什么意思呢?就是MARK WORD ,KCLASS WORD ,填充空间,看网上资料中提到mark最多的一张图:其实,我个人认为不是很准确,这个是可能是32位机器所说明的结构,一下为64位系统,与上述图有不同。结论1:* ----单线程(这里指我.原创 2021-03-09 20:41:18 · 333 阅读 · 0 评论 -
简单代码分析线程
public class Test1 { private static boolean running=true; static int i=0; public static void main(String[] args) throws InterruptedException { runTets(); Thread.sleep(100);//增加sleep 主线程休眠,此时running =true 因此线程一直运行 runnin.原创 2021-03-02 22:55:17 · 198 阅读 · 0 评论 -
Excel大批量数据的导入和导出,如何做优化?
Java对Excel的操作一般都是用POI,但是数据量大的话可能会导致频繁的FGC或OOM,这篇文章跟大家说下如果避免踩POI的坑,以及分别对于xls和xlsx文件怎么优化大批量数据的导入和导出。一次线上问题这是一次线上的问题,因为一个大数据量的Excel导出功能,而导致服务器频繁FGC,具体如图所示可以看出POI的对象以及相关的XML对象占用了绝大部分的内存消耗,频繁FGC说明这些对象一直存活,没有被回收。原因是由于导出的数据比较大量,大概有10w行 * 50列,由于后台直接...转载 2021-02-19 14:59:52 · 699 阅读 · 0 评论 -
解密Springboot starter
Springboot 目前是一个非常火的框架,它能快速开发,快速集成等优点,打破传统的一些繁琐配置以及各种配置。(在这里注意只是跟以前开发过程相比)那么springboot 具体怎么做的,现在通过自己看源码来学习一下,有不得当的地方请各位同行指出、交流。首先我们知道在我们进行springboot 搭建的时候,在pom 文件中导入各种jar 中有一个特别亮眼的词:Starter,那么今天看一下就看下它的源码,看一下它做了什么事情。下面就以我们非常熟悉的mybatis starter 为例:首先我们原创 2021-01-23 13:28:26 · 177 阅读 · 1 评论 -
JAVA 简单单例模式
单例模式其实我们并不陌生,在学习语言编程时就已接触过,原创 2020-12-13 08:49:49 · 252 阅读 · 1 评论 -
Jersey Rest 异常统一处理机制
前言: 异常分为运行时异常和非运行时异常,所谓的运行时异常是指那些不需要异常捕获的异常,总是交由虚拟机接管,如:ArrayIndexOutOfBoundsException,我们在写程序时,并没有使用try..catch来捕获它。 以前,我们进行项目开发时,习惯性的喜欢使用大量的try...catch...finally方法来进行异常处理,并且,只是将异常信息保存到log日志中即可,并没有将一些异常信息以可读性的方式返回给前端用户。而在一些比较大的项目中,进行异常统一处理是架构师...转载 2020-12-01 10:31:34 · 398 阅读 · 0 评论 -
jstack:将Process Explorer中看到的进程ID做16进制转换,到ThreadDump中加上0x 前缀即能找到对应线程
症状:使用Eclipse win 64位版本,indigo及kepler都重现了,使用tomcat 6.0.39,jdk1.6.u45及1.7u45均尝试了,也重现。重现步骤很简单,使用debug模式启动时较容易出来,debug启动tomcat,(我的是webapp)然后在页面上随便点点即发现eclipse僵死,且任何从浏览器发出的请求都卡住不能被接收执行。1、然后从任务管理器直接杀掉...转载 2020-04-19 16:41:09 · 832 阅读 · 0 评论 -
Java HttpClient 发送https post请求
我们在使用java jdk的net包中HttpURLConnection,发送http post请求时ok,但是要发送给https post请求的时后,就不行,往往会报下面的错误:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building fa...转载 2020-04-12 22:38:01 · 4298 阅读 · 0 评论 -
github 微服务资源及工具汇总
名称类型描述地址Eureka源码服务发现https://github.com/Netflix/eurekaFeign源码声明式服务调用https://github.com/OpenFeign/feignHystrix源码服务熔断https://github.com/Netflix/Hystrixspring-boot源码SpringBoothttps://github.com/spri...原创 2020-04-11 17:54:59 · 970 阅读 · 0 评论 -
MySQL数据库面试题(2020最新版)
2020各个知识点面试地址:https://blog.youkuaiyun.com/ThinkWon/article/details/104778621?depth_1-utm_source=distribute.pc_feed.none-task-blog-alirecmd-1&request_id=&utm_source=distribute.pc_feed.none-task-blog-...转载 2020-04-09 00:08:04 · 293 阅读 · 0 评论 -
eureka 启动提示:Address already in use: bind
首先确认一点就是我们配置的端口被占用了,首先我们找到占用进程:1.进入cmdnetstat -ano|findstr “10000”2.打开任务管理器,通过进程id 查找服务查看确实有服务占用,所以我们如果是无非紧要服务可以进行结束,同时也可以修改我们服务端口配置...原创 2020-03-21 11:14:33 · 954 阅读 · 0 评论 -
Jersey写Restful接口获取参数的问题
一:PathParam@PathParam使用该注释获取参数时可以获取URI中制定规则的参数例如: //该类的路径为/user @GET @Path("{username"}) @Produces(MediaType.APPLICATION_JSON) public User getUser(@PathParam("user...转载 2020-03-16 13:33:03 · 303 阅读 · 0 评论 -
Springboot 自定义项目异常,错误页面错误数据
一个系统中避免不了一个就是错误信息,所以我们有必要自己定义灵活的友好的错误信息,在此之前我们有必要了解一下springboot 的错误处理机制。首先我们知道在springboot 应用中我们@SpringBootApplication 注解,其中最主要的就是我们自动配置类,它启动了一个选择器AutoConfigurationImportSelector这个类中selectImports ...原创 2020-03-15 22:23:31 · 664 阅读 · 0 评论 -
springboot 使用国际话自定义localeResolver 不生效
今天闲着没事,搞一下springboot ,当阅读官方文档i18n 时,闲来没事想搞一下。下面简单步骤:关键步骤:我们首先想到国际化跟locale 有关,使用springboot 最关键的就是看自动配置,那么我们首先看下webmvc 自动配置类,国际化关键配置,大概意思就是如果容器中没有LocaleResolver 对象,如果没有该对象就创建一个LocaleResolver 。这点是关键,...原创 2020-03-14 20:56:45 · 2270 阅读 · 1 评论 -
spring boot 为什么扫描不到相关类问题
在网上看到了一些博客,都是说创建类的包 路径不对,有2种方法:1.创建类路径在application 级别目录下2.增加@ComponentScan配置。这里只是说处理办法,但是基本都没有说为什么这样,下面根据跟踪源码的方式解密为什么这样。首先我们找到一个我们非常熟悉的一种方式,使用注解类来测试bean 的获取,在这里不在复述AnnotationConfigApplicati...原创 2020-03-09 11:42:01 · 2237 阅读 · 0 评论 -
pom 配置最全详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_...转载 2020-03-08 11:30:32 · 2319 阅读 · 0 评论 -
spring boot不用parent引入,采用dependencyManagement方式
项目背景采用IDEA+Maven+Spring boot+Spring Cloud搭建了以微服务为框架的系统。由于各个子项目需要继承自己写的父pom,于是把原本spring boot的parent去掉,改为用dependencyManagement引入,代码如下://去掉原本的parent<!--<parent> <groupId>org.sp...转载 2020-03-08 11:22:39 · 2240 阅读 · 0 评论 -
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。一、PDF搜索网站推荐对于大部...转载 2020-02-27 08:25:55 · 389 阅读 · 0 评论 -
常用SQL 命令
1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server---创建 备份数据的deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'---开始 ...原创 2020-02-26 12:52:01 · 236 阅读 · 0 评论 -
Spring整合Quartz定时任务,在集群、分布式系统中的应用
一、概述虽然单个Quartz实例能给予你很好的Job调度能力,但它不能满足典型的企业需求,如可伸缩性、高可靠性满足。假如你需要故障转移的能力并能运行日益增多的 Job,Quartz集群势必成为你应用的一部分了。使用 Quartz 的集群能力可以更好的支持你的业务需求,并且即使是其中一台机器在最糟的时间崩溃了也能确保所有的 Job 得到执行。二、Quartz 中集群如何工作一个 Qu...转载 2020-02-25 13:35:03 · 258 阅读 · 0 评论 -
linux开放指定端口命令
方式一 CentOS:1、开启防火墙 systemctl start firewalld2、开放指定端口 firewall-cmd --zone=public --add-port=1935/tcp --permanent命令含义:--zone #作用域--add-port=1935/tcp #添加端口,格式为:端口/通讯协议--permane...原创 2020-01-19 22:09:17 · 782 阅读 · 0 评论 -
ECLIPSE 针对于错误:Description Resource Path Location Type Archive for required library:
下图是错误:解决办法:问题描述:主要是在maven中添加库的时候一直出现如下图所示的错误上图的大概意思是该库文件不可读取,并且获取是无效的压缩文件。并且我进入电脑目录中查看自己的该库文件,也出现了很多错误。解决方法:删除该库的目录下所有的文件,然后在eclipse中重新加载该库文件既可以解决问题。...转载 2020-01-18 22:49:15 · 856 阅读 · 0 评论 -
Redis 5.0 Stream 新特性
众所周知,redis 是行业的宠儿,下面是我对redis stream 的理解,如果有错误和不完整的地方,请大牛指教,互相学习。首先在我们开始其命令之前,需要明白stream 的大致数据结构及场景。比如一个消息订单,物流、支付等服务模块需要消费,那么这种场景我们不妨使用stream 实现,在了解之前需了解其数据结构,看下图大致讲解一下:首先我们生成一个stream 消息,它是以KE...原创 2020-01-18 13:05:04 · 419 阅读 · 0 评论 -
Fork/Join框架原理和使用探秘
什么是Fork/Join框架Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。也是当前执行速度最快的并发框架。工作窃取算法工作窃取(work-stealing)算法是指某个线程从其他队列里窃取任务来执行。工作窃取的运行流程图如下:那么为什么需要使用工作窃取算法呢?假如我们需要做...转载 2020-01-05 18:03:01 · 354 阅读 · 0 评论 -
Semaphore原理分析
信号量,个人理解它向一个限制的意思,比如超过了某一设定好的标准就会无效,比如我们的在大学上学的时候,每年都举行运动会,比如男子400米比赛,4个跑到,比如报名不足4个人则我们可以一次性跑完,但是如果多了,那么多的只能等上一组跑完之后才能进行。闲话不多说,看下面几个重要的实现。信号量底层实际使用了AQS(AbstractQueuedSynchronizer) ,有一个内部类SYC,这个是实现的关...原创 2019-12-30 00:15:17 · 189 阅读 · 0 评论 -
Synchronized 你了解多少
对于我们开发者来说,Synchronized 最熟悉了,那么你真正了解它吗?Synchronized 给我们第一印象就是加锁,其实Synchronized 做了很多优化,现在也是性能很好的锁机制。首先有必要了解Synchronized 的锁对象,对于Synchronized 在普通方法上,这种是锁为当前对象也就是this,如果修饰静态方法Synchronized修饰的为当前类的class ,...原创 2019-12-22 22:18:52 · 185 阅读 · 0 评论 -
JVM参数使用手册
JVM提供了大量的参数配置,可以通过配置这些参数对JVM进行调优、记录GC日志等等,本章只罗列我自己用到过和了解过的参数,根据功能划分。内存相关通过这些参数可以对JVM的内存分配做调整Xms英文解释:Initial heap size(in bytes)中文释义:堆区初始值使用方法:-Xms2g或-XX:InitialHeapSize=2048mXmx英文解释:Maxi...转载 2019-12-17 21:03:37 · 317 阅读 · 0 评论 -
JAVA ThreadPoolExecutor 线程池keepAliveTime的终极含义
关于这些参数最好的学习方法是看官方文档资料,这是地址http://www.matools.com/api/java8链接我们找到ThreadPoolExecutor 类,查看API 说明如下:文档是不是解释的很清楚,针对这个参数简单理解就是如果线程超过了我们的核心线程数,那个对于闲置状态的线程最大的存活时间。...原创 2019-12-12 00:32:25 · 413 阅读 · 0 评论 -
Jvm参数调优
常见参数示例参数 描述 -Xms20m 堆初始值20M -Xmx20m 堆最大可用值20M -Xmn5m 新生代最大可用值5M -Xss10m 指定每个线程的私有栈大小10M -XX:PrintGC 触发GC时日志打印 -XX:PrintGCDetails 触发GC时日志打印更详细 -XX:UseSerialGC 串行...转载 2019-12-10 22:26:32 · 282 阅读 · 0 评论 -
Java生成短链接
因公司推广需要,需要一套短链接生成方案,正好前几天在MSDN看到有人发了一个.net版的短链接算法,我就把它转换成java版,拿出来共享一下生成思路:1.将"原始链接(长链接)+key(自定义字符串,防止算法泄漏)"MD5加密2.把加密字符按照 8 位一组 16 进制与 0x3FFFFFFF 进行位与运算,把得到的值与 0x0000003D 进行位与运算,取得字符数组 chars 索引...转载 2019-12-08 23:30:01 · 2170 阅读 · 0 评论 -
Springboot 常用注解总结
一、注解(annotations)列表@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。@Configuration 等同于spring的XML配置文件;使用...原创 2019-12-08 10:25:12 · 187 阅读 · 0 评论 -
定制自己的springboot start
1.首选通过springboot 源码我们要知道其规范spring 提供的startspring-boot-strat-XXX.jarsprng-boot-xxx-autoconfig-x.y.z.jar第三方startxxx-spring-boot-x.y.jarxxx-spring-boot-autoconfig-x.y.jar2.定制自己的start1)创建...原创 2019-12-04 00:42:55 · 650 阅读 · 0 评论 -
javax.annotation 注释类型 PostConstruct
*/@Documented@Retention (RUNTIME)@Target(METHOD)public @interface PostConstruct {}这是元注解,PostConstruct 注释用于在依赖关系注入完成之后需要执行的方法上,以执行任何初始化。此方法必须在将类放入服务之前调用。支持依赖关系注入的所有类都必须支持此注释。即使类没有请求注入任何资源,用 P...转载 2019-12-02 22:35:25 · 3982 阅读 · 0 评论 -
Java 压缩20M文件从30秒到1秒的优化过程
有一个需求需要将前端传过来的10张照片,然后后端进行处理以后压缩成一个压缩包通过网络流传输出去。之前没有接触过用Java压缩文件的,所以就直接上网找了一个例子改了一下用了,改完以后也能使用,但是随着前端所传图片的大小越来越大的时候,耗费的时间也在急剧增加,最后测了一下压缩20M的文件竟然需要30秒的时间。压缩文件的代码如下。 public static void zipFileNo...转载 2019-11-12 00:02:52 · 1314 阅读 · 0 评论 -
spring aop 代理生成入口剖析
spring 容器初始化是一个很复杂的过程,今天我们就简单追踪一下spring aop 的入口,网上也有很多的博客说明,但是有的阐述的不是很准确。对于容器初始化其实有很多入口,但是不管从那个入口初始化,最终会调用AbstractApplicationContext 类中refresh()。这个是容器初始化核心,通过finishBeanFactoryInitialization()方法进行类的创建及...原创 2019-11-09 21:49:23 · 730 阅读 · 1 评论 -
webAppRootKey作用
log4j是很好用的一个工具,在目前的WEB项目中经常使用。配上jakarta的common logging和Eclipse的插件Log4E很好用。不过还是有几个不太方便的地方:1 Log4j的配置文件修改了之后必须重启才能生效2 配置文件只能放在WEB-INF/classesSpring对于Log4j有了更好的增强,配置文件修改后不需要重启,不用再放到WEB-INF/cla...转载 2019-11-09 13:17:10 · 177 阅读 · 0 评论 -
Spring解决单例bean线程不安全问题
首先我们应该知道线程安全问题一般发生在成员变量上,这是为什么啦?因为成员变量是存放在堆内存中,而堆内存又是线程共享的,这就造成了线程安全问题因为Spring中的Bean默认是单例的,所以在定义成员变量时也有可能会发生线程安全问题。下面我们就来研究下如何解决Spring中单例Bean的线程安全问题@RestController//@Scope("prototype")public...转载 2019-11-05 23:49:45 · 1116 阅读 · 1 评论 -
Spring 中IOC,DI等源码分析
今天没事看了一下spring源码,花了半天时间整理的spring 容器启动的流程分析,总结了一个思维导图,通过这个导图可以清晰的了解spring内部流程,一下部分导图,如果想要请下载,有了这个思维导图,可以帮助大家进行源码分析及内部实现。下载地址:https://download.youkuaiyun.com/download/xiaocai9999/11954692...原创 2019-11-03 17:12:51 · 250 阅读 · 0 评论