自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lengyue309的博客

java 项目实战经验分享

  • 博客(74)
  • 资源 (15)
  • 收藏
  • 关注

原创 LinkedHashMap有趣用法

最近在做网关时候,需要对请求url做一个规范验证,当不符合规范时候,自动邮件报警给系统负责人。邮件报警处理方式见https://blog.csdn.net/lengyue309/article/details/97021272。功能做好了,发布到测试环境,过了半天邮箱爆炸了,收到一段的url规范邮件,全是重复的,只要请求一次邮件就发送一次。于是就想如何减少重复发送邮件?用队列?用redis?g...

2019-07-24 16:05:57 445

原创 logback邮件报警--动态发送不同收件人

logback错误邮件告警,相信大家都会,只需在logback的xml文件上配置一下即可,但是如果想根据不同业务场景,邮件告警发送给不同的业务负责人,那么如何实现呢?首先立马能想到的就是基于javax.mail包实现,再用线程池实现多线程处理,那这样项目中就会额外增加部分代码量,于是乎在思考是否可以依然基于logback实现呢?答案就是:Slf4j MDC机制关于这个机制原理,网上资料...

2019-07-23 19:07:11 537

原创 自定义参数验证器

代码中经常会对请求参数是否为空,是否为手机号码,是否为邮件格式,是否为数字等类型判断,对这类处理可以写一个自定义参数验证类即可。第一步:加入依赖包<!--validation校验 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>...

2019-06-11 19:30:48 581

原创 无法获取dubbo目标类名问题

在应用端想拦截dubbo client方法的类名,除了实现dubbo 的Filter外,可以使用@Aspect注解和实现MethodInterceptor 接口。但是消费端proxy必须设置jdk,否则获取到的都是“com.alibaba.dubbo.common.bytecode.proxy0”代理类名。1.使用@Aspect注解核心代码段Method method = ((Metho...

2019-05-30 18:04:33 637

原创 spring boot获取本机ip和端口号/请求参数和返回值(ResponseBodyAdvice/RequestBodyAdvice )

获取系统端口号:@Configurationpublic class ServiceInfoUtil implements ApplicationListener&lt;EmbeddedServletContainerInitializedEvent&gt; { private static EmbeddedServletContainerInitializedEvent even...

2019-02-13 18:02:32 8806

转载 轻松学习java可重入锁(ReentrantLock)的实现原理

前言相信学过java的人都知道 synchronized 这个关键词,也知道它用于控制多线程对并发资源的安全访问,兴许,你还用过Lock相关的功能,但你可能从来没有想过java中的锁底层的机制是怎么实现的。如果真是这样,而且你有兴趣了解,今天我将带领你轻松的学习下java中非常重要,也非常基础的可重入锁-ReentrantLock的实现机制。听故事把知识掌握了在一个村子里面,有一口井水,水...

2019-01-16 17:38:31 128

转载 JUC方面脑图

2019-01-16 17:28:07 1313 2

转载 转NIO讲的非常清楚的文章

https://blog.csdn.net/kavu1/article/details/53125667   

2018-11-23 16:52:13 187

转载 NIO编程之ServerSocketChannel用法详解

 之前一直看不懂NIO中的ServerSocketChannel和SocketChannel的区别,看了这篇博文,感觉通俗易懂,于是决定分享一下。。。。在用nio通讯的过程我用以下情景给你模拟: 1. 学校(ServerSocketChannel) 2。 学校教务处(Selector) 3。 老师 (ServerSocket ) 4。 学生 (SocketChannel) 5。 员工...

2018-11-23 16:30:00 2564

转载 wait、notify和notifyAll转换

java中对象锁的模型,JVM会为一个使用内部锁(synchronized)的对象维护两个集合,Entry Set和Wait Set对于Entry Set:如果线程A已经持有了对象锁,此时如果有其他线程也想获得该对象锁的话,它只能进入Entry Set,并且处于线程的BLOCKED状态。对于Wait Set:如果线程A调用了wait()方法,那么线程A会释放该对象的锁,进入到Wait Se...

2018-11-21 20:23:02 132

转载 一文理解Netty模型架构

Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。JDK原生NIO程序的问题JDK原生也有一套网络应用程序API,但是存在一系列问题,主要如下: NIO的类库和API繁杂,使用麻烦,你需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等 需要具备其它的额外技能做...

2018-11-16 17:00:02 245

转载 彻底理解Java的Future模式

先上一个场景:假如你突然想做饭,但是没有厨具,也没有食材。网上购买厨具比较方便,食材去超市买更放心。实现分析:在快递员送厨具的期间,我们肯定不会闲着,可以去超市买食材。所以,在主线程里面另起一个子线程去网购厨具。但是,子线程执行的结果是要返回厨具的,而run方法是没有返回值的。所以,这才是难点,需要好好考虑一下。模拟代码1:package test;public clas...

2018-11-07 15:47:13 131

转载 深入理解Callable

深入理解Callablehttps://blog.csdn.net/qq_19431333/article/details/77483763

2018-11-07 15:41:28 107

转载 转BIO,NIO和AIO讲的很明白的文章

到底什么是“IO Block”很多人说BIO不好,会“block”,但到底什么是IO的Block呢?考虑下面两种情况:用系统调用read从socket里读取一段数据 用系统调用read从一个磁盘文件读取一段数据到内存如果你的直觉告诉你,这两种都算“Block”,那么很遗憾,你的理解与Linux不同。Linux认为: 对于第一种情况,算作block,因为Linux无法知道网络上对方...

2018-10-31 09:53:27 3693 1

转载 EntityFramework之领域驱动设计实践

EntityFramework之领域驱动设计实践 - 前言根据网友的讨论结果,以及自己在实践中的不断积累,在整理的过程中,我会将原文中的描述作相应调整。不仅如此,也有不少关心领域驱动设计的网友在原文的评论栏目中提了问题或作了批注,我也针对网友的问题给予了细致的答复,为了能够让更多的朋友了解到问题的本质,本次整理稿会将评论部分也一一列出,供大家参考。EntityFrameworkEnti...

2018-10-18 17:17:34 312

转载 移动端性能监控方案Hertz

性能问题是造成App用户流失的罪魁祸首之一。App的性能问题包括崩溃、网络请求错误或超时、响应速度慢、列表滚动卡顿、流量大、耗电等等。而导致App性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线程、锁、系统函数、编程范式、数据结构等导致的。即便是最有经验的程序员,也很难在开发时就能避免所有导致性能低下的“坑”,因此解决性能问题的关键是在于能不能尽早地发现和定位这些...

2018-09-29 14:00:13 1144

转载 SpringBoot AOP,收集日志、统计方法执行时长

用过Spring 的开发者都知道它有两大核心功能,1.依赖注入(IOC、DI)、2.面向切面编程(AOP)。AOP:面向切面编程,往往用来实现关注点的分离的技术。系统是由许多不同的组件所组成的,每一个组件各负责一块特定功能。可以很好的集成日志收集、权限拦截、运行监控等功能。同时,它对系统也是无入侵的,无须改动其他业务代码,就能达到收集信息的目的,非常赞。1.在项目中添加AOP引用...

2018-08-24 16:02:01 8058

转载 Spring Boot缓存 Caffeine使用

为什么需要本地缓存?在系统中,有些数据,访问十分频繁(例如数据字典数据、国家标准行政区域数据),往往把这些数据放入分布式缓存中,但为了减少网络传输,加快响应速度,缓存分布式缓存读压力,会把这些数据缓存到本地JVM中,大多是先取本地缓存中,再取分布式缓存中的数据而Caffeine是一个高性能Java 缓存库,使用Java8对Guava缓存重写版本,在Spring Boot 2.0中将取代Guav...

2018-08-24 15:41:26 1894

转载 我是怎么把一个项目带崩的

我是一名项目经理,在过去的四个月里,我把一个项目带崩了(上线后频出问题,用户无法使用)。在最近的几天,我每天都在反思自己,我都在问自己以下几个问题:1.我做错了什么?2.我在其中占有多重的因素?以下内容,我将回答以上问题,并在最后说一下我的补救措施。项目和团队背景首先给大家说明一下项目背景,以便各位对此项目有更清晰的了解:1.该项目是一个二次开发项目,第一个基础版本(打印申报系统...

2018-08-15 17:48:11 146

转载 Eclipse MarketPlace 打不开,对话框闪退

Eclipse的版本更新到了4.8.0(photon版),点击help--&gt;Eclipse MarketPlace 后无任何反应,无报错,打不开  解决办法help--&gt;install new software 输入http://download.eclipse.org/mpc/photon/ 重新安装一下 epp MarketPlace  原文地址:htt...

2018-07-23 15:26:55 348

转载 通过jstack与jmap分析一次线上故障

一、发现问题  下面是线上机器的cpu使用率,可以看到从4月8日开始,随着时间cpu使用率在逐步增高,最终使用率达到100%导致线上服务不可用,后面重启了机器后恢复。二、排查思路 简单分析下可能出问题的地方,分为5个方向:1.系统本身代码问题2.内部下游系统的问题导致的雪崩效应3.上游系统调用量突增4.http请求第三方的问题5.机器本身的问题三、开始排查 1.查看日志,没有发现集中的错误日志,初...

2018-06-06 09:23:10 25201 6

转载 SpringBoot的定时任务两种(Spring Schedule 与 Quartz 整合 )实现

前言最近在项目中使用到定时任务,之前一直都是使用Quartz 来实现,最近看Spring 基础发现其实Spring 提供 Spring Schedule 可以帮助我们实现简单的定时任务功能。下面说一下两种方式在Spring Boot 项目中的使用。Spring Schedule 实现定时任务Spring Schedule 实现定时任务有两种方式 1. 使用XML配置定时任务, 2. 使用 @Sch...

2018-05-25 15:56:51 923

转载 一张图看懂UML类图

面向对象中我们经常使用UML类图演示类之间的关系,记得以前在学《软件工程》的时候那几个符号硬是没记住,今天回过头看看,理一理,见下图:------------------------------------------------------------------ 我是分割线 ------------------------------------------------------------...

2018-05-11 13:43:43 411

转载 UML类图详解

在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)基本概念:类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态...

2018-05-11 11:18:01 324

转载 TCP滑动窗口控制流量的原理

TCP的滑动窗口机制       TCP这个协议是网络中使用的比较广泛,他是一个面向连接的可靠的传输协议。既然是一个可靠的传输协议就需要对数据进行确认。TCP协议里窗口机制有2种:一种是固定的窗口大小;一种是滑动的窗口。这个窗口大小就是我们一次传输几个数据。对所有数据帧按顺序赋予编号,发送方在发送过程中始终保持着一个发送窗口,只有落在发送窗口内的帧才允许被发送;同时接收方也维持着一个接收窗口,只有...

2018-04-28 14:27:30 369

转载 不惑JAVA之JAVA基础 - 锁 -synchronized、Lock解析

锁主要解决线程安全问题。而线程安全问题,即多个线程同时访问一个资源时,会导致程序运行结果并不是想看到的结果。synchronized先来了解一下互斥锁,顾名思义:能到达到互斥访问目的的锁。如果对临界资源加上互斥锁,当一个线程在访问该临界资源时,其他线程便只能等待。  在Java中,每一个对象都拥有一个锁标记(monitor),也称为监视器,多线程同时访问某个对象时,线程只有获取了该对象的锁才能访问...

2018-04-25 20:16:48 128

转载 Netty原理剖析

1. Netty简介Netty是一个高性能、异步事件驱动的NIO框架,基于JAVA NIO提供的API实现。它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。 作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通...

2018-04-24 10:07:16 123

转载 Netty4.0学习笔记系列之六:多种通讯协议支持

上文介绍了如何应用Netty开发自定义通讯协议,本文在此基础上进一步深化,研究如何同时支持不同的通讯协议。此处所谓的通讯协议,指的是把Netty通讯管道中的二进制流转换为对象、把对象转换成二进制流的过程。转换过程追根究底还是ChannelInboundHandler、ChannelOutboundHandler的实现类在进行处理。ChannelInboundHandler负责把二进制流转换为对象,...

2018-04-19 15:16:46 2129

转载 Netty4.0学习笔记系列之五:自定义通讯协议

Netty中,通讯的双方建立连接后,会把数据按照ByteBuf的方式进行传输,例如http协议中,就是通过HttpRequestDecoder对ByteBuf数据流进行处理,转换成http的对象。基于这个思路,我自定义一种通讯协议:Server和客户端直接传输java对象。实现的原理是通过Encoder把java对象转换成ByteBuf流进行传输,通过Decoder把ByteBuf转换成java对...

2018-04-19 15:11:44 255

转载 Netty4.0学习笔记系列之四:混合使用coder和handler

Handler如何使用在前面的例子中已经有了示范,那么同样是扩展自ChannelHandler的Encoder和Decoder,与Handler混合后又是如何使用的?本文将通过一个实际的小例子来展示它们的用法。该例子模拟一个Server和Client,两者之间通过http协议进行通讯,在Server内部通过一个自定义的StringDecoder把httprequest转换成String。Serve...

2018-04-19 14:32:46 116

转载 Netty4.0学习笔记系列之三:构建简单的http服务

本文主要介绍如何通过Netty构建一个简单的http服务。想要实现的目的是:1、Client向Server发送http请求。2、Server端对http请求进行解析。3、Server端向client发送http响应。4、Client对http响应进行解析。在该实例中,会涉及到http请求的编码、解码,http响应的编码、解码,幸运的是,Netty已经为我们提供了这些工具,整个实例的逻辑图如下所示:...

2018-04-19 14:24:32 146

转载 Netty4.0学习笔记系列之二:Handler的执行顺序

Handler在netty中,无疑占据着非常重要的地位。Handler与Servlet中的filter很像,通过Handler可以完成通讯报文的解码编码、拦截指定的报文、统一对日志错误进行处理、统一对请求进行计数、控制Handler执行与否。一句话,没有它做不到的只有你想不到的。Netty中的所有handler都实现自ChannelHandler接口。按照输出输出来分,分为ChannelInbou...

2018-04-19 14:19:22 308

转载 Netty4.0学习笔记系列之一:Server与Client的通讯

本文是学习Netty的第一篇文章,主要对Netty的Server和Client间的通讯机制进行验证。Server与Client建立连接后,会执行以下的步骤:1、Client向Server发送消息:Are you ok?2、Server接收客户端发送的消息,并打印出来。3、Server端向客户端发送消息:I am ok!4、Client接收Server端发送的消息,并打印出来,通讯结束。涉及到的类有...

2018-04-19 14:03:55 176

转载 通俗易懂地讲解TCP建立连接的三次握手和释放连接的四次挥手

TCP建立连接时,为什么要进行三次挥手?  每一次TCP连接都需要三个阶段:连接建立、数据传送和连接释放。三次握手就发生在连接建立阶段。 在谢希仁著《计算机网络》第四版中讲三次握手的目的是为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。在另一部经典的《计算机网络》一书中讲三次握手的目的是为了解决网络中存在延迟的重复分组的问题。   这两种不用的表述其实阐明的是同一个问题。  谢希...

2018-04-19 13:51:54 161

转载 Java并发编程:阻塞队列

在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。  使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样了,它会对当前线程产生阻塞,比如一个线程从一个空...

2018-04-19 10:03:04 88

转载 UML系列——时序图(顺序图)

引言用例图、类图、活动图、时序图之间是什么关系?时序图有什么作用?      先来模拟一下三国演义的赤壁之战的时序图,先知道它到底长什么样子,再深入介绍: 小伙伴惊呆了,这样画战略图,一目了然,原来著名的战役是这么回事。这样看三国演义再也不会睡着了......再看看各个大人物的主要操作:代码模拟各任务操作: 1 public class 关羽 2 { 3 Public void 防守荊州...

2018-04-18 15:06:52 5361

转载 那些提升开发人员工作效率的在线工具

作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工具是我们在日常开发及学习过程中要经常使用到的。Hollis偏爱使用在线工具,因为个人觉得这样比较方便。本文就总结了一下我常用的在线工具。欢迎纠正及补充。Java源代码搜索http://grepcode.com/Grepcode是一个面向于Java开发人员的网站,在这里你可以通过Java的projec...

2018-04-18 11:23:26 210

转载 Java之——使用JMX监控Tomcat

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/515474082016年5月的最后一天,今天我将和大家分享Java中如何使用JMX来监控Tomcat的各种状态。好了,不多说了,我们直接进入主题一、激活Tomcat的JMX远程配置要通过JMX远程监控Tomcat,首先需要激活Tomcat的JMX远程配置。① 修改脚本先修改Tomca...

2018-04-17 17:25:17 149

转载 Netty 线程模型

1 Proactor和ReactorProactor和Reactor是两种经典的多路复用I/O模型,主要用于在高并发、高吞吐量的环境中进行I/O处理。I/O多路复用机制都依赖于一个事件分发器,事件分离器把接收到的客户事件分发到不同的事件处理器中,如下图:1.1 select,poll,epoll在操作系统级别select,poll,epoll是3个常用的I/O多路复用机制,简单了解一下将有助于我们...

2018-04-14 18:31:44 171

转载 使用spring-boot-admin对spring-boot服务进行监控

spring-boot-admin,简称SBA,是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。他可以:在列表中浏览所有被监控spring-boot项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level。官网:https://github.com/codec...

2018-04-12 11:17:33 1898

精通 EJB3.0

精通 EJB3.0精通 EJB3.0

2007-09-07

EJB3.0第五版

EJB3.0第五版EJB3.0第五版EJB3.0第五版

2007-09-07

企业级EJB3.0

企业级EJB3.0企业级EJB3.0

2007-09-07

实战EJB

实战EJB实战EJB实战EJB实战EJB

2007-09-06

DOM文档对象中文手册

DOM文档对象中文手册 CHM格式

2007-09-04

CSS中文手册

CSS中文手册- CHM格式

2007-09-04

JavaScript语言参考手册

JavaScript语言参考手册 CHM格式

2007-09-04

Hibernate参考文档

Hibernate参考文档 CHM格式

2007-09-04

Hibernate_api

Hibernate_api CHM格式,想学习Hibernate必须要有的参考资料.

2007-09-04

HTML中文帮助指南

HTML中文帮助指南 CHM格式

2007-09-04

JAVA设计模式

JAVA设计模式 CHM格式 好电子书,不要错过哦

2007-09-04

EJB基础

EJB基础 CHM格式 好书啊

2007-09-04

在线投票系统详细设计(JSP)

在线投票系统详细设计(JSP)

2007-06-16

struts+hibernate+spring网上书店1

struts+hibernate+spring网上书店1

2007-06-16

PDG好软件

PDG软件.软件超级好,大小只有几K是我见到的最好的软件

2007-06-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除