随笔分类 -  java

摘要:首先看看什么是Lambda 表达式 Lambda是一个匿名函数,我们可以把Lambda表达式理解为一段可以传递的代码(将代码像数据一样传递);最简单的Lambda表达式可由逗号分隔的参数列表、->符号和语句块组成,例如: Arrays.asList( "a", "b", "d" ).forEach( 阅读全文
posted @ 2021-12-19 19:52 monkjavaer 阅读(1116) 评论(0) 推荐(1)
摘要:Java虚拟机运行时数据区 阅读全文
posted @ 2020-09-02 22:21 monkjavaer 阅读(152) 评论(0) 推荐(0)
摘要:springboot开启声明式事务方式 在Application启动类中加入注解@EnableTransactionManagement(mode = AdviceMode.PROXY) 在需要加入事务的方法上加入注解@Transactional @Transactional(rollbackFor 阅读全文
posted @ 2019-09-04 22:29 monkjavaer 阅读(3368) 评论(0) 推荐(0)
摘要:问题描述: 本地开发环境idea中能正常运行项目,而idea打war包到Linux服务器的Tomcat下却不能正常运行,报如下错误: 问题排查: IDEA 打包环境JDK版本和Linux生产环境JDK版本不一致,导致线上Tomcat无法正常运行 解决方案: 1、确保两边环境安装相同的jdk版本 2、 阅读全文
posted @ 2019-08-09 22:15 monkjavaer 阅读(3894) 评论(0) 推荐(0)
摘要:1、Netty 是怎么创建服务端Channel的呢? 我们在使用ServerBootstrap.bind(端口)方法时,最终调用其父类AbstractBootstrap中的doBind方法,相关源码如下: 我们继续跟进initAndRegister()这个方法,发现是使用channelFactory 阅读全文
posted @ 2019-08-06 22:48 monkjavaer 阅读(334) 评论(0) 推荐(1)
摘要:指数退避 可以理解为每次重连失败时,就把重连时间设置为之前的指数级别。例如 2 秒,4 秒,8 秒...... 亚马逊AWS关于指数退避的两篇文章介绍 "AWS 中的错误重试和指数退避" "Exponential Backoff And Jitter" Netty客户端中使用指数退避方式重连 客户端 阅读全文
posted @ 2019-07-28 22:03 monkjavaer 阅读(753) 评论(0) 推荐(1)
摘要:一、什么是Google Protocol Buffer( "protobuf官方网站" ) 下面是官网给的解释: Protocol buffers are a language neutral, platform neutral extensible mechanism for serializin 阅读全文
posted @ 2019-07-19 22:41 monkjavaer 阅读(852) 评论(0) 推荐(2)
摘要:解码器Decoder和ChannelHandler的关系 netty的解码器通常是继承自ByteToMessageDecoder,而它又是继承自ChannelInboundHandlerAdapter,其实也是一种ChannelHandler和我们自定义的ChannelHandler一样都是来处理进 阅读全文
posted @ 2019-07-19 21:36 monkjavaer 阅读(2462) 评论(0) 推荐(1)
摘要:什么是Netty Netty是一个基于Java NIO的编写客服端服务器的框架,是一个异步事件框架。 官网 "https://netty.io/" 为什么选择Netty 由于JAVA NIO编写服务器的过程过于复杂且不易掌控,所以我们选择Netty框架进行开发。 具有很高的的性能。 且比NIO更容易 阅读全文
posted @ 2019-07-18 22:12 monkjavaer 阅读(1536) 评论(0) 推荐(0)
摘要:传统同步阻塞I/O(BIO) 在NIO之前编写服务器使用的是同步阻塞I/O(Blocking I/O)。下面是一个典型的线程池客服端服务器示例代码,这段代码在连接数急剧上升的情况下,这个服务器代码就会不好使了,因为serverSocket.accept(),以及IO的read(),write()方法 阅读全文
posted @ 2019-07-18 18:16 monkjavaer 阅读(497) 评论(0) 推荐(0)
摘要:JDK 1.8 HashMap是数组+链表+红黑树实现的,在阅读HashMap的源码之前先来回顾一下大学课本数据结构中的哈希表和红黑树。 什么是哈希表? 在存储结构中,关键值key通过一种关系f和唯一的存储位置相对应,关系f即哈希函数,Hash(k)=f(k)。按这个思想建立的表就是哈希表。 当有两 阅读全文
posted @ 2019-07-01 22:47 monkjavaer 阅读(761) 评论(0) 推荐(0)
摘要:一、类继承关系 PriorityQueue只实现了AbstractQueue抽象类也就是实现了Queue接口。 二、类属性 根据transient Object[] queue; 的英文注释: Priority queue represented as a balanced binary heap: 阅读全文
posted @ 2019-06-17 22:24 monkjavaer 阅读(542) 评论(0) 推荐(1)
摘要:树的基本术语 结点(node)由数据元素以及指向子树的地址构成。 若 X 结点有子树,则子树的根结点称为 X 的孩子(child)结点,相应地, X 称为其孩子的双亲(parents)结点,又称父母结点。 同一双亲的孩子结点之间互称兄弟(sibling)结点。 叶子(leaf)结点是指度为 0 的结 阅读全文
posted @ 2019-06-17 20:13 monkjavaer 阅读(276) 评论(0) 推荐(0)
摘要:一、类继承关系 ArrayDeque和LinkedList一样都实现了双端队列Deque接口,但它们内部的数据结构和使用方法却不一样。根据该类的源码注释翻译可知: ArrayDeque实现了Deque是一个动态数组。 ArrayDeque没有容量限制,容量会在使用时按需扩展。 ArrayDeque不 阅读全文
posted @ 2019-06-11 21:12 monkjavaer 阅读(549) 评论(0) 推荐(1)
摘要:一、类继承关系 LinkedList和ArrayList都实现了List接口。所以有List的特性,同时LinkedList也实现了Deque,所以它也具有双端队列和栈的特性。 二、类属性 transient表示该域不能被序列化。first,last初始值都是null. 这里有一个内部类Node: 阅读全文
posted @ 2019-06-03 22:28 monkjavaer 阅读(344) 评论(0) 推荐(0)
摘要:一、描述 队列Queue这种数据结构,通常指先进先出(FIFO)这种容器。可以模拟生活中依次排队这种场景。 下面是集合体系继承树: 二、Queue Queue和List一样都是Collection的子接口。 Queue源码定义: add(E e)/offer(E e) 将指定元素加入到队列尾部 re 阅读全文
posted @ 2019-06-02 20:45 monkjavaer 阅读(811) 评论(0) 推荐(0)
摘要:一、类继承关系 ArrayList继承AbstractList,也实现了List和RandomAccess(一个空接口,也就是标记接口。),Cloneable(可被克隆), Serializable接口。 二、类属性 elementData是transient修饰,所以elementData不能被序 阅读全文
posted @ 2019-06-01 07:10 monkjavaer 阅读(197) 评论(0) 推荐(0)
摘要:一、适用场景 1.解耦 2.最终一致性 3.广播 4.错峰与流控(秒杀业务用于流量削峰场景) "秒杀场景" 二、核心组件,关键点(交换器、队列、绑定) AMPQ消息路由必要三部分:交换器、队列、绑定。 Java核心组件:ConnectionFactory、Connection、Channel、Del 阅读全文
posted @ 2019-05-23 21:13 monkjavaer 阅读(3565) 评论(0) 推荐(2)
摘要:以下是测试了三种图片压缩方式,通过测试发现使用jdk的ImageIO压缩时间更短,使用Google的thumbnailator更简单,但是thumbnailator在GitHub上的源码已经停止维护了。 1、Google的thumbnailator pom.xml中引入依赖 测试源码: 输出:压缩时 阅读全文
posted @ 2019-02-22 22:16 monkjavaer 阅读(7028) 评论(0) 推荐(0)
摘要:通过java原生的@Valid注解和spring的@ControllerAdvice和@ExceptionHandler实现全局异常处理的方法: controller中加入@Valid注解: 接受entity中加入@NotNull注解:(验证还有很多,这里是举例说明) 全局处理工具类加入@Contr 阅读全文
posted @ 2019-01-23 23:03 monkjavaer 阅读(2171) 评论(1) 推荐(0)