JAVA
文章平均质量分 95
欢迎来到我们的Java专栏,这里是探索Java编程世界的精彩旅程的起点。无论您是初学者还是资深开发者,无论您对Java有着怎样的热情和需求,我们都将为您提供深度、全面的内容,助您在Java的海洋中航行。
jinglong.zha
路漫漫其修远兮,吾将上下而求索
展开
-
Caffeine本地缓存之道
话说:Java 8的高性能缓存库,干掉GuavaCache:Caffeine才是本地缓存的王Caffeine 是基于Java 8的高性能,接近最佳的缓存库。Caffeine使用Google Guava启发的API提供内存缓存。 改进取决于您设计Guava缓存和ConcurrentLinkedHashMap的体验。LoadingCache<Key,Graph>graphs=Caffeine.newBuilder().maximumSize(10_000)...原创 2021-01-25 10:23:06 · 3244 阅读 · 1 评论 -
8种最坑的SQL错误用法,第一个就很坑?
1、LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。好吧,可能90%以上的 DBA 解决该问题就到此为止。但当 LIMIT 子句变成 “LIMIT 1000000,10” 时,程序员仍然会抱怨:我只取10条记录为什么还是慢?要知道数据库也并不知道第1000000条记录从什么地方开始,即使有索引也需要从头计算转载 2020-10-30 19:57:33 · 166 阅读 · 0 评论 -
mvn command not found(idea for mac)
使用的时候未经允许mvn命令操作如下:第一:vim ~/.bash_profile export IDEA_MAVEN=/Applications/IntelliJ\ IDEA.app/Contents/plugins/maven/lib/maven3 export PATH=$PATH:$IDEA_MAVEN/bin第二:执行mvn -v命令错误,需要添加如下 正确示范:chmod a+x /Applications/IntelliJ\ IDEA.app/Contents/plugin原创 2020-10-09 10:35:50 · 2592 阅读 · 1 评论 -
为什么会产生 java.lang.OutOfMemoryError: Java heap space 错误以及如何解决?
关于 java.lang.OutOfMemoryError: Java heap space 错误,遇到的程序员可能不是很多,但是当你真的遇到的时候,你就会发现我的这篇文章对你的帮助非常的大!引发 java.lang.OutOfMemoryError: Java heap space 错误的主要原因就是在创建新的对象时, 堆内存中的空间不足以存放新创建的对象时发生!所以说,当有人问你:在 Java 中创建一个对象(new 一个正常的类)会不会发生异常?你应该这样回答:当堆内存中的空间不足时,可能会发生翻译 2020-09-23 15:30:31 · 20197 阅读 · 0 评论 -
记:服务器第二次宕机
真正的勇士敢于直面惨淡的人生,敢于正视淋漓的鲜血,真正的程序员勇于面对线上程序出现的BUG,敢于直面错误以及及时解决问题,带来真正意义上的提升与升华。 回想前几个月,也就是2019年,距离这次的记录好像不太远,但是印象比较深刻,也算是项目经自己的手里真真实实的砸手里了,那个时候晴朗的下午,阳光明媚,可以看这篇文章https://blog.csdn.net/cha...原创 2020-04-22 22:51:36 · 261 阅读 · 0 评论 -
阿里规约要求避免使用 Apache BeanUtils 进行属性的拷贝的深层意义?
缘起有一次开发过程中,刚好看到一个小伙伴在调用 set 方法将一个数据库中查询出来的 PO 对象的 20 多个属性拷贝到 Vo 对象中,类似这样:可以看出,Po 和 Vo 两个类的字段绝大部分是一样的,我们一个个地调用 set 方法只是做了一些重复的冗长的操作。这种操作非常容易出错,因为对象的属性太多,有可能会漏掉一两个,而且肉眼很难察觉。类似这样的操作,我们可以很容易想到,可以通过反射来...转载 2020-03-18 15:01:31 · 455 阅读 · 0 评论 -
Nginx+Tomcat搭建高性能负载均衡集群之枯藤老树
天净沙·秋思--枯藤老树昏鸦,小桥流水人家,古道西风瘦马。夕阳西下,断肠人 在天涯。一、 工具 nginx-1.8.0 apache-tomcat-6.0.33二、 目标 实现高性能负载均衡的Tomcat集群: 三、 步骤转载 2018-01-16 19:14:14 · 350 阅读 · 0 评论 -
Spring整合JMS(Java Message Service)
1.1 JMS简介 JMS的全称是Java Message Service,即Java消息服务。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业务逻辑。对于消息的传递有两种类型,一种是点对点的,即一个生产者和转载 2018-01-08 14:25:08 · 315 阅读 · 0 评论 -
Logback+slf4j实现多环境配置
logback的前世今生,作为log4j的大兄弟,据说性能是log4j的十倍,在此不探讨到底比log4j快多少倍,今天做日志处理使用了logback+slf4j作为日志的处理的主要工具,slf4j很好的兼容了logback,作为facade,无缝兼容助推了logback。首先,我们为什么要写日志呢?我们先仔细了解一下logbackLogback 是由 log4j 创始人设计的又一个开源日记组件,L...原创 2018-04-26 21:58:09 · 4108 阅读 · 1 评论 -
Java实现内存可见性的两种方法比较:synchronized 和 Volatile以及涉及到锁的剖析
这篇文中讲述了通过synchronized和 volatile 变量实现内存可见性的方法,这里比较下二者的区别。* volatile 变量是一种稍弱的同步机制在访问 volatile 变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此 volatile 变量是一种比 synchronized 关键字更轻量级的同步机制。* 从内存可见性的角度看,写入 volatile 变量相当于退出同步代码块原创 2017-12-22 17:35:44 · 1808 阅读 · 0 评论 -
抽象类和接口的详解(实例)
抽象类和接口在我们的代码中,生活中息息相关,与上图所示,操纵复杂,密切相关,那么问题来了,何谓抽象类,何谓接口?带着这层薄纱,慢慢揭开这层薄纱;也许在古代,新婚之夜,透过这层薄纱,你看到的或者是惊喜,或许是惊悚,不要怕,无论是惊悚还是惊喜,她都会伴你一生。曾几何时?你还会在面试当中与面试官对答如流的解释抽象类和接口吗? 面试官:解释一下抽象类和接口的区别? me: 1、抽象类和接口都不能直原创 2017-12-20 17:15:17 · 19420 阅读 · 15 评论 -
Java泛型详解
1.为什么需要泛型泛型在Java中有很重要的地位,网上很多文章罗列各种理论,不便于理解,本篇将立足于代码介绍、总结了关于泛型的知识。希望能给你带来一些帮助。先看下面的代码: [java] view plain copy List list = new ArrayList(); list.add("CSDN_SEU_Cavin");原创 2017-11-10 14:55:55 · 315 阅读 · 0 评论 -
京东面试--总结
特别喜欢一句话:不是因为看到了希望才去坚持,而是因为坚持了才会看到希望。1、现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?思路:多线程之间怎么协同工作,如何让一个线程执行完毕后处于什么状态。 Thread t1 = new Thread(new T1()); Thread t2 = new Thread(new T2()); Thr原创 2017-11-07 17:36:36 · 6510 阅读 · 0 评论 -
数据结构(冒泡、快速、插入等排序)PHP && JAVA --面试技巧
1.写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数组。(提示:不能使用系统已有函数,另外请仔细回忆以前学习过的基础知识)php 冒泡排序public funtion sort($array){ $count = count($array); if($count return false; }原创 2016-10-25 22:45:44 · 541 阅读 · 0 评论 -
Map遍历KeySet()和EntrySet的性能差异与源码解析
SetEntryString,String>>entrySet=map.entrySet();SetString>set=map.keySet();`上面就是我们经常用Map进行遍历的两种方式,在此对比一下两者的区别在此我们看一下源码解析:keySet:get方式和getEntry方式的比较 public V get(Object原创 2018-01-29 14:37:43 · 3011 阅读 · 0 评论 -
Java语法糖
Java作为一种与平台无关的高级语言,当然也含有语法糖,这些语法糖并不被虚拟机所支持,在编译成字节码阶段就自动转换成简单常用语法。一般来说Java中的语法糖主要有以下几种: 1. 泛型与类型擦除 2. 自动装箱与拆箱,变长参数、 3. 增强for循环 4. 内部类与枚举类5. switch之String类型泛型与类型擦除Java语言并不是一开始就支持泛型的。在早期的JDK中,只能通过Object类...原创 2018-03-01 15:11:55 · 348 阅读 · 0 评论 -
Spring-Cloud核心组件及底层原理
http://music.163.com/#/song?id=476592630上述为Spring-Cloud的微服务架构集大成者,云计算最佳业务实践。接触spring-cloud有一种男性荷尔蒙的冲动,特别想征服它,我觉得她是喜欢我的,让我想起了辛弃疾的诗:我见青山多抚媚,料青山见我应如是。既然两情相悦,那就让我们去深入了解一下,此处怎么深入…(想什么呢),那就教你一个PUA式的教程...原创 2019-04-17 17:47:13 · 8409 阅读 · 1 评论 -
Spring-data-jpa同时保存entity的问题
在一次开发中,一个很小的问题,spring-data-jpa在一个事务中同时保存entity对象中出现了,unSupport类型,造成保存不成功,看了几篇blog下,发现大家遇到的问题千奇百怪,没有什么解决方案,看了一下stackoverflow,若有所思,避免以后遇到这些问题省略一下探究,若有喜欢自己解决问题的,可以忽略。目的:可以同时保存entity前提:一个事务中根据刚生成的ent...原创 2019-01-11 11:03:43 · 1330 阅读 · 0 评论 -
不可不说的Java“锁”事 - 美团技术团队
前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体...转载 2018-12-29 15:59:49 · 2959 阅读 · 0 评论 -
SpringBoot集成单点登录-“被挤下线”
SpringBoot配置单点登录前言你好,未来!上个周末过的还行,逛街逛到腿发软,生活还是有仪式感,一生要待自己待你最亲近的人,周一休息,顺便看了看04版天龙八部,塑造了三位英雄人物,共同点:热血男儿,助人为乐,乔峰大侠气概,段誉风流倜傥,虚竹严于律己,久久思考金庸在写的时候,思想与灵魂是何尝不是伟大,让我也陷入了沉思,久久不能自拔。中言前言总会自己乱说一通,然后才能进入主题一些相关而有...原创 2018-12-18 15:20:19 · 9190 阅读 · 6 评论 -
代码检查工具--findBugs
“所谓读书的意义,大概就是让人眼界更开阔,对自我有更清醒的认识,而不至于狂妄。一个人读的书越多,越会意识到自己的匮乏。” 偶然看到中国好声音,健哥,语出惊人,建议多读读书籍“读书同样需要自我约束和自我强制。童话读起来毫不费力,但人的一生不可能只是读童话,还是要强迫自己读一些看不懂、不好读的书。《追忆似水年华》《哈扎尔辞典》这类书不像心灵鸡汤那么好读,但强制自己读下来,一定会...原创 2018-08-12 19:56:38 · 38873 阅读 · 8 评论 -
阿里云消息队列
喜欢这句话,人与人的相遇,正是如此偶然,又放佛命中注定。我们或多或少都有一些自己的喜欢的东西,文章,篮球,跑步,有些注定要坚持,用一生的时间来寻找,梦想这件事,注定是一辈子的事情,要用毕生的心血去实现它,一般写文章前,我总会闲谈几句,抒发一下自身情怀的东西,今天想给大家分享一下看到的一篇文章,关于雷军的,听不错的,如果你有时间驻足停留下,静静的读一下,也许对于有帮助,地址放在这里雷军50岁身价破1...原创 2018-06-05 17:31:05 · 4903 阅读 · 0 评论 -
Multiple representations of the same entity are being merged解决方案
在此记录一下,项目中出现的问题:Multiple representations of the same entity are being merged顾名思义:当出现问题的时候,先考虑出现问题的原因,以及发生的场景,还原当时的面貌,这是一个侦探该有的逼格,真相只有一个。 回归正题:不扯淡蛋了,根据经验,首先我想到的,元素重复merge了,但是问题来了,如果元素重复merge就会造成...原创 2018-04-11 16:19:46 · 5045 阅读 · 2 评论 -
Java8新特性
Java8的十大新特性你了解多少呢?JDK1.8继JDK1.5之后号称革命性改革那下面我们来谈谈Java8的新特性:Lambda表达式、接口的默认方法与静态方法、方法引用、重复注解、扩展注解的支持、Optional、Stream、Date/Time API(JSR 310)、JavaScript引擎Nashorn、Base64等等。1、Lambda表达式 Lambda表达式说是Java8最原创 2017-08-31 17:29:30 · 398 阅读 · 0 评论 -
java在linux系统下文件夹出现中文乱码的问题
用java io写个系统的操作日志进txt文件时,遇到这么个问题:在windows系统上测试过了,是没问题的,但是放到服务器(linux系统)上写到文件的中文都变成了乱码!究其原因,原来是这么个情况:linux下默认字符集是utf-8,而windows默认编码是gbk,而java 往文件里面写入中文时是根据系统默认字符集来写的. 最直接的办法就是在使用java io写文件时强制进行转码.是这样原创 2016-05-17 10:46:49 · 9339 阅读 · 0 评论 -
【转】WEB应用中的SESSION知多少?
声明:本文章引用自http://hw1287789687.iteye.com/blog/1968385 看到文章,写的很好,以此表示感谢。【转】WEB应用中的SESSION知多少?作为一名WEB开发程序员,对session的理解是最基础的,但是现状是WEB程序员遍地都是,随便一划拉一大把,不过估计能把session能透彻理解的人应该不是很多,起转载 2016-04-20 15:51:19 · 346 阅读 · 0 评论 -
关于getDefaultInstance和getInstance区别
最近刚做邮箱验证,逐步对邮箱进行解剖,现在做到,在后台修改配置的邮箱,让修改之后的邮箱可以发送邮件,配置的邮箱相当于是一个可移动的接口原创 2016-05-13 10:23:30 · 4683 阅读 · 2 评论 -
怎么提取java代码中的类名、方法名
DescriptionBelow I present you two different ways to get the current Class:Using ThreadUsing getClass()The simplest way to get the name of the class where your code is being executed原创 2016-05-12 10:16:16 · 1436 阅读 · 0 评论 -
mkdir和mkdirs区别
偶然之间,使用到了mkdirs多目录的用法 File fileLogoFolder = new File(imagesPathLogo);//创建logo父目录 if (!fileLogoFolder.isDirectory()) { fileLogoFolder.mkdirs(); } e.setELogo原创 2016-03-13 21:37:47 · 1967 阅读 · 0 评论 -
Spring MVC中的视图解析ViewResolver
在Spring MVC中,当Controller将请求处理结果放入到ModelAndView中以后,DispatcherServlet会根据ModelAndView选择合适的视图进行渲染。那么在Spring MVC中是如何选择合适的View呢?View对象是是如何创建的呢?答案就在ViewResolver中,ViewResolver接口定义了resolverViewName方法,根据viewNam转载 2016-03-12 22:41:59 · 378 阅读 · 0 评论 -
Springmvc框架本地化和国际化
springMVC的本地化和国际化 spring框架的大部分都支持国际化,就像springMVC一样。DispatcherServlet使你能够动态的通过客户端的本地语言进行配置。这是通过LocaleResolver完成的。 当一个请求到达,DispatcherServlet就会寻找LocaleResolver,如果找到就会试图通过它进行本地化。通过RequestContext转载 2016-03-12 22:34:08 · 435 阅读 · 0 评论 -
了解HashMap的get和put内部的工作原理,需要理解透Java HashMap的原理
了解HashMap的get和put内部的工作原理,需要理解透Java HashMap的原理,今天我们单说get和put 的工作原理。一、Put :让我们看下put方法的实现:/** * Associates the specified value with the specified key in this map. If the原创 2016-03-12 22:01:28 · 1921 阅读 · 0 评论 -
COOKIE和SESSION的区别
1. 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务原创 2016-04-05 11:23:30 · 407 阅读 · 0 评论 -
Intelij IDEA 快捷键(整理)
忽然间 发现Intelij IDEA 很多快捷键都没有使用过,先在这里学习一边,也得重新整理,以供大家之需,之后供自己学习。【常规】 Ctrl +Shift+Enter,语句完成 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ OR ],可以跑到大括号的开头与结尾原创 2016-03-17 12:53:17 · 775 阅读 · 0 评论 -
sendEmail:出现的错误
qq邮箱535 535 Authentication failed qq邮箱在测试smtp邮件服务器时,一,在qq邮箱,设置,账户设置中.开启下smtp.二,设置一下独立密码.三,在配置smtp服务器的密码时,注意一定要填你设置的独立密码.不要用邮箱登录密码.否则会提示535 Authentication failed错误.出现错误的原因: 1、用户名或密码原创 2016-02-18 22:10:57 · 1196 阅读 · 0 评论 -
Nginx 与 tomcat 反向代理配置
Nginx 与 tomcat 反向代理配置 由于本人资金有限,所以经常需要一个服务器中同时运行多个网址,但是问题来了,域名解析是只能80端口进入的,不支持其他端口,而且也不能带后缀,所以如何让多个网址都能进行域名解析成了一个问题,后面百度发现有反向代理这个功能,但是一般Nginx服务器的方向代理教程都是教你如何指向一个虚拟目录的,这个对于用tomcat的人来说我不知道到底能不能行,反正我是没转载 2016-10-12 11:33:18 · 4331 阅读 · 0 评论 -
基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建
基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建前言最近做回后台开发,重新抓起以前学过的SSM(Spring+Spring MVC+Mybatis),但是发现配置实在过于复杂,好多东西配置起来麻烦,虽然最终是配置出来了,但是还是感觉开发速度跟不上,本来打算切换到jfianl,但是后来发现需要用的几个框架不转载 2016-10-12 11:35:32 · 4918 阅读 · 0 评论 -
SpringMVC源码分析
今天七夕的,何谓七夕,何谓情人节,我能不能与我的织女相遇呢 ?不扯淡了,直接切入正题,你好,我好,不如大家好,所谓大家好才是真的好。 SpringMVC有三个层次,分别是:HttpServletBean 和 FrameworkServlet、DispatcherServlet SpringMVC 实际上市基于方法(handler:Method)处理模式 所以它可以使用单例 Struts:实际上是原创 2017-08-28 17:17:45 · 478 阅读 · 0 评论 -
手写Tomcat容器加载静态资源
实现tomcat容器加载静态资源1、server.javapackage tomcat3;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;/** *原创 2017-08-28 10:13:30 · 790 阅读 · 0 评论 -
Java 导出Excel实例
@ResponseBody @RequestMapping(value = "export", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"}) public void export(@RequestParam(value = "settleId", required = true) I原创 2017-08-23 20:06:30 · 373 阅读 · 0 评论