摘要: 概览: 两者的作用一样,都是类型转换。 org.springframework.format.Formatter只能做String类型到其他类型的转换。 org.springframework.core.convert.converter.Converter可以做任意类型的转换。 Converter 阅读全文
posted @ 2020-01-20 10:38 reload 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 我们在开发时会用到 @DateTimeFormat 这个注解。 对于从前台接收时间日期格式 很方便。 但如果前台传来的是 "是" “否” “有” "无" 这样的中文时,想要转成boolean 类型时,没有对应的注解,下面我们自己来实现这个注解。 本例基于 springboot 2.x jdk1.8 阅读全文
posted @ 2020-01-20 10:37 reload 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 背景:从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使用@JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题,其次, 阅读全文
posted @ 2020-01-20 10:35 reload 阅读(260) 评论(0) 推荐(0) 编辑
摘要: package com.suncl.test2spring.exception; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework 阅读全文
posted @ 2020-01-20 10:34 reload 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 本文使用 @ControllerAdvice + @ExceptionHandler 进行全局的 Controller 层异常处理。只要设计得当,就再也不用在 Controller 层进行 try-catch 了! 一、经典案例 需求:希望通过全局统一的异常处理将自定义错误码以json的形式发送给前 阅读全文
posted @ 2020-01-20 10:33 reload 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 1.引子 最近看了一篇文章《蚂蚁消息中间件 (MsgBroker) 在 YGC 优化上的探索》 文章涉及JVM的垃圾回收,主要讲的是通过使用「堆外内存」对Young GC进行优化 文章中介绍,MsgBroker消息中间件会对消息进行缓存,JVM需要为被缓存的消息分配内存,首先会被分配到年轻代。 当缓 阅读全文
posted @ 2020-01-20 10:32 reload 阅读(4591) 评论(0) 推荐(0) 编辑
摘要: 前言 前端的面试中经常问的 TCP 和 UDP 的区别,网上也有好多内容,TCP 和 UDP 的区别: TCP 是面向连接的,UDP 是面向无连接的 UDP程序结构较简单 TCP 是面向字节流的,UDP 是基于数据报的 TCP 保证数据正确性,UDP 可能丢包 TCP 保证数据顺序,UDP 不保证 阅读全文
posted @ 2020-01-20 10:32 reload 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。 1. Java NIO和IO的主要区别 下表总结了Java NIO和IO之间的主要差别,我 阅读全文
posted @ 2020-01-20 10:31 reload 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 非阻塞模式与选择器搭配会工作的更好,通过将一或多个SocketChannel注册到Selector,可以询问选择器哪个通道已经准备好了读取,写入等 上面已经分别介绍过SocketChannel和Selector 但是非阻塞模式与选择器搭配工作的代码没有整合。 如下就是非阻塞模式使用选择器的代码: p 阅读全文
posted @ 2020-01-20 10:30 reload 阅读(813) 评论(0) 推荐(0) 编辑
摘要: java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。 打开 DatagramChannel 下面是 DatagramChannel 的打开方式: DatagramChannel chan 阅读全文
posted @ 2020-01-20 10:28 reload 阅读(452) 评论(0) 推荐(0) 编辑
摘要: SocketChannel 1. SocketChannel概述 Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel: 1.1 打开 SocketChannel 下面是SocketChannel的打开方式: Socke 阅读全文
posted @ 2020-01-20 10:27 reload 阅读(2238) 评论(1) 推荐(0) 编辑
摘要: Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使 阅读全文
posted @ 2020-01-20 10:26 reload 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 为什么使用Selector? 仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理通道。事实上,可以只用一个线程处理所有的通道。对于操作系统来说,线程之间上下文切换的开销很大,而且每个线程都要占用系统的一些资源(如内存)。因此,使用的线程越少越好。 但是,需要记住,现代的操作系统和 阅读全文
posted @ 2020-01-20 10:25 reload 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 概述 Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作。 分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,C 阅读全文
posted @ 2020-01-20 10:23 reload 阅读(234) 评论(0) 推荐(0) 编辑
摘要: Buffer的基本用法 使用Buffer读写数据一般遵循以下四个步骤: 当向buffer写入数据时,buffer会记录下写了多少数据。一旦要读取数据,需要通过flip()方法将Buffer从写模式切换到读模式。在读模式下,可以读取之前写入到buffer的所有数据。 一旦读完了所有的数据,就需要清空缓 阅读全文
posted @ 2020-01-20 10:21 reload 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 概述 Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。 正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示: 阅读全文
posted @ 2020-01-20 10:20 reload 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 概述 Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件 阅读全文
posted @ 2020-01-20 10:19 reload 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 主要描述了数据库连接池参数配置的准则,针对常用的数据库连接池(c3p0,dbcp,druid)给出推荐的配置 考虑因素 1:当前连接DB的规模 2:并发情况 3:执行db的响应时间 配置考虑 1:初始化连接:可考虑设置为3个连接 。对于db规模特别大的情况下可考虑设置为1个。避免启动时间过长; 2: 阅读全文
posted @ 2020-01-20 10:13 reload 阅读(1352) 评论(0) 推荐(0) 编辑
摘要: 摘要 如何打造高性能的数据库连接池框架,可以从哪些角度进行优化,连接池的大量优化实践如何为你的系统保驾护航,本专题将带你走进连接池的世界,为你一一揭晓。 大家可能会有这样疑问:连接池类似于线程池或者对象池,就是一个放连接的池子,使用的时候从里面拿一个,用完了再归还,功能非常简单,有什么可讲的。 可能 阅读全文
posted @ 2020-01-20 10:12 reload 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 数据库连接池的工作原理 连接池的工作原理主要由三部分组成,分别为: 连接池的建立 连接池中连接的使用管理 连接池的关闭 第一、连接池的建立。一般在系统初始化时,连接池会根据系统配置建立,并在池中创建了几个连接对象,以便使用时能从连接池中获取。连接池中的连接不能随意创建和关闭,这样避免了连接随意建立和 阅读全文
posted @ 2020-01-20 10:11 reload 阅读(1983) 评论(0) 推荐(0) 编辑