自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

胃小的博客

长风破浪会有时 直挂云帆济沧海

  • 博客(104)
  • 资源 (2)
  • 收藏
  • 关注

原创 springboot 源码解析之 环境加载 配置文件加载

版本2.1.6此篇文章研究springboot环境的加载,包括系统变量的加载,配置文件的加载SpringApplication.run方法中prepareEnvironment 方法,这儿是开始准备环境的地方ConfigurableEnvironment environment = prepareEnvironment(listeners, applicationArguments)...

2019-11-28 15:43:33 585

原创 springboot 源码分析 内嵌式 tomcat 启动

springboot版本2.1.6研究一下springboot 是如何启动内嵌的tomcat 的首先找到springboot 自动配置时引入的类org.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.springframework.boot.autoconfigure.web.embedded....

2019-11-25 22:14:15 432 1

原创 springboot 源码解析之ApplicationContextInitializer

springboot版本2.1.6ApplicationContextInitializer根据名字,这个类是springboot的初始化器,在容器启动时进行一些初始化的工作。首先提出三个问题1 ApplicationContextInitializer 是如何工作的,2 Springboot框架默认的初始化器都有哪些,他们都干了什么3 自定义一个ApplicationCo...

2019-11-22 16:05:52 353

原创 java语言Long/Double类型数据读写原子性测试

在32位的java虚拟中,Long,Double类型的数据写入主内存的动作并不是原子性的,所以在并发环境中可能会出现读取到一半的值的情况,先写一个程序来进行测试package com.demo;/** * @Description: Long类型的变量在32位虚拟机中的读写原子性测试 */public class LongRWIn32Demo implements Runnable...

2019-11-11 17:10:33 211

原创 springboot 源码解析之MVC

研究mvc 要搞清楚的几个问题1 springmvc 整体架构2 springmvc 初始化过程3 springmvc 是如何封装controller 的4 springmvc 是解析封装参数的5 springmvc 是如何封装结果的6 springmvc 拦截器是如何工作的问题1:架构一目了然。问题2:FrameworkServlet 是...

2019-07-31 17:53:56 327

原创 springboot 源码解析之监听器

事件发布的入口applicationContext.publishEvent(new BlackListEvent());实际上是AbstractApplicationContext 类的方法执行@Override public void publishEvent(ApplicationEvent event) { publishEvent(event, null...

2019-07-31 14:37:49 493

原创 java8时间工具类

package com.example.util;import org.apache.commons.lang.StringUtils;import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.tim...

2019-03-07 13:58:02 558

原创 错误日志:SpringBoot @autowired 注入为null

springboot整合了netty,将handler交与spring容器管理,在自定义的handler中使用了Service,企图使用依赖注入对应的组件,启动程序后发现注入为null,找了很多资料,最后得出结论;netty中使用的handler不是springboot容器创建的handler,故netty使用的handler无法自动注入service,如图,启动项目后这个Servic...

2019-02-15 09:21:14 3369

原创 深入学习 java jpa (一)实体关系

jpa是完全体对象关系映射的接口规范,其中实体关系分为@OneToOne, @OneToMany, @ManyToOne, @ManyToMany等下面的user实体,使用到了以上的各注解,分别维护了各种关系,构建好实体对象后,直接使用entitymanager进行各种操作即可。@Entity@Table(name = "user")@Datapublic class U...

2019-02-14 16:34:29 685

原创 java netty学习之(三)使用netty实现简单的RPC

dubbo的底层框架使用的就是netty,写一个netty的rpc小demo可以更好的理解对象在网络中的传输和netty的编解码器的使用。具体的实现思路是:1、定义一个ClassInfo包装类,将方法调用的必要条件进行封装,具体指接口名,方法名,方法参数,方法参数类型;2、服务端通过反射,将ClassInfo对应的方法执行并返回结果;3、客户端通过动态代理,构造Proxy,得到Se...

2019-02-10 12:28:17 530

原创 java netty学习之(二)网络通信的简单例子tcp长连接心跳机制

maven依赖  <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.25.Final</version> </dependency&

2019-02-08 13:15:26 591

原创 java netty学习之(一)简述

Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。通过使用netty,可以更好的聚焦到业务,而不必纠结于底层实现,netty提供了默认的包括心跳机制,编解码等handler可以直接使用,实现业务时只需要编写自定义handler即可完成操作;值得注意的是,netty5的两个版本已经不提...

2019-02-08 13:07:32 200

原创 java nio学习之(三)网络编程

服务端package com.example.demo.nioSocket;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.chan...

2019-02-08 11:56:20 132

原创 java nio学习之(二)文件操作

本文展示使用nio操作文件的例子;package com.example.demo.file;import org.apache.commons.lang3.StringUtils;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.nio....

2019-02-08 11:52:35 248

原创 java nio学习之(一)简述

java nio是jdk1.4新增加的特性,之前的io成为bio,是阻塞式同步io -- blocking,他是面向流的,而nio 意思是非阻塞式同步io -- non-blocking IO 是面向通道channel和缓冲区buffer的。当然,很多同学也听说过aio 意思是非阻塞异步io --  Asynchronous io ,那么bio,nio,aio他们在模型上有什么区别呢?我在...

2019-02-08 11:47:12 141

原创 Springboot整合Socket长连接

Socket长连接的实现就是在通讯完后不关闭socket及输入输出/** * @author :zhaoyu * @date :Created in 2019/1/24 8:45 */@Data@Component@PropertySource("classpath:socket.properties")public class DelongServerSocket { ...

2019-01-25 14:26:06 27625 9

原创 代码重构概要

一、重新组织函数1、提炼函数,将一段代码放入独立的函数中,函数名称解释用途;这是最常用的重构手法;2、内联函数此方法与提炼函数相反,是将不必要的函数放进调用他的函数中,并将其删除;3、内联临时变量将对变量的引用操作,替换为对他赋值的那个表达式自身;4、以查询取代临时变量如果程序中以一个临时变量保存其一表达式的运算结果,将这个表达式提炼到一个独立的函数,将这个临时变量的所有引用替换...

2018-11-24 18:40:44 757

原创 内存泄漏排查

最近生产环境某项目突然崩溃,查看堆栈发现虚拟堆已经满了,查看配置,jmap -heap [pic]堆内存为2G,理论上应该是够用的,所以怀疑为内存泄漏,使用jmap -histo:live [pid]打印堆中的对象,发现无法打印,使用jmap -dump:format=b,file=filename.hprof [pid]导出hprof 文件,之后在HeapAnal...

2018-10-12 13:54:52 315

原创 数据库设计(实用技巧)

id 一般是bigint(12)code 一般是varchar(20)状态一般用int(1)如果考虑扩展性,可以使用int(11)日期一般是date时间一般是time创建时间和更新时间一般是datetime能使用int就是用int 因为创建索引的时候效率高很少使用char类型,因为占用空间,而且hibernate映射的时候如果是null 则会抛异常金钱一般使用dec...

2018-10-04 23:40:31 199

转载 java多线程协作Exchanger

一、简介   Exchanger是自jdk1.5起开始提供的工具套件,一般用于两个工作线程之间交换数据。在本文中我将采取由浅入深的方式来介绍分析这个工具类。首先我们来看看官方的api文档中的叙述:A synchronization point at which threads can pair and swap elements within pairs. Each thread prese...

2018-09-27 15:18:18 137

原创 java多线程协作CyclicBarrier

CyclicBarrier 字面意思是循环拦截器, 是java current包下的多线程协作的类, 创建此类必须出入一个 parties 值, 如果拦截的线程数达到 parties 值, 则会释放拦截的锁, 相关线程得以继续执行, 另外创建类对象时也可以在传入一个 Runnable 对象, 表示如果CyclicBarrier  达到释放锁的条件, 首先会开启 Runnable 线程 , 等此线程...

2018-09-27 14:48:42 160

原创 java多线程协作Semaphore

Semaphore的意思是信号量, 多线程中使用此类控制并发量, 常用的方法有acquire() 和 release() Semaphore没有空参构造, 创建对象时必须传入一个permits 值, 代表最大并发数; 当permits = 1 时 ,代表单线程下面看一个例子package _Semaphore;import java.util.concurrent.Executo...

2018-09-27 13:59:10 176

原创 java多线程协作CountDownLatch

CountDownLatch 是current 包下的常用的同步多线程行为的类, 构造中需要输入一个计数值, 当这个值不为零时, 执行 await() 的线程会阻塞, 线程每次执行 countDown() 方法都会是计数值减一;已多人赛跑为例, 建立多线程模型, 演示CountDownLatch 的功能package _CountDownLatch;import java.util....

2018-09-27 12:02:48 178

原创 java多线程类锁与对象锁的研究

静态方法上的同步锁使用的是当前类.class 作为锁对象,实际上是Class对象, 当使用勒种的同步静态方法时会受到类锁的影响,会出现锁的挣用, public synchronized static void eat() throws Exception非静态方法上的锁 , 默认使用的是对象本身  也就是this 作为同步锁, 与同步静态方法对应的锁不冲突;public synch...

2018-09-27 09:37:11 169

原创 jackson高级应用 2.9.x

基于jackson 版本 2.9.xjackson转换json xml 依赖的完整的jar 如果需要maven依赖, 可访问:http://mvnrepository.com/json转换主要类为objectmapper 对象转json的常用方法为writeValueAsString , 此类中以write开头的都是将对象转换成json的;json转对象常用的方...

2018-09-26 20:34:26 2703

原创 java多线程异常的捕获

在多线程中,如果子线程抛出了异常,在main中并不能捕获到;看一个例子package _Executors;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ExceptionRunnable implements Runnable{ ...

2018-09-20 15:20:03 1528

原创 springboot之整合httpclient

  springboot整合httpclient  pom.xml 配置<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> ...

2018-09-16 18:38:43 2435 3

原创 springboot之整合log4j2

sprongboot使用的默认日志框架是Logback, 本文展示整合 log4j2 的操作;pom配置, 要将默认的logging去掉 , <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte...

2018-09-16 14:39:51 327

原创 HttpClient学习之GET&POST

版本httpclient-4.5.3引入三个包, 下面展示一个工具类 , 可以实现简单的post与getpackage _HttpClient;import java.io.IOException;import java.net.URI;import java.util.ArrayList;import java.util.List;import java.util...

2018-09-13 19:55:25 146

原创 springboot之整合jackson

springboot默认配置json转换工具就是jackson, 本文介绍自定义各种配置的方法, 废话不多说 直接上代码配置文件:#jackson#日期格式化spring.jackson.date-format=yyyy-MM-dd HH:mm:ss#spring.jackson.date-format=yyyy-MM-dd#格式化输出 spring.jackson.seria...

2018-09-09 21:34:03 19319 3

原创 springboot之整合kakfa

springboot使用的是2.0.0 使用docker快速搭建环境请看上篇 深入学习docker之部署zookeeper与kafka引入pom依赖<dependency> <groupId>org.springframework.kafka</groupId> <artifactId&gt...

2018-09-09 20:19:43 358 1

原创 深入学习docker之部署zookeeper与kafka

使用 wurstmeister 下的zookeeper 与kafkadocker pull wurstmeister/kafkadocker pull wurstmeister/zookeeper 然后使用启动两个容器docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeperdocker ...

2018-09-09 18:44:07 1536 1

原创 springboot之整合mongodb

使用springboot 2.x版本首先引入mongo依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId...

2018-09-03 21:34:40 136

原创 springboot之整合redis

使用springboot 2.0版本引入pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency&...

2018-09-02 11:51:04 103

原创 springboot之jpa高级查询

springboot的jpa可以根据方法名自动解析sql 非常方便, 只需要在 dao接口中定义方法即可;下面是一个 demopackage com.bus365.root.dao;import java.io.Serializable;import java.util.List;import org.springframework.data.jpa.repository.J...

2018-08-13 22:36:55 3070

原创 springboot之整合jpa

本文展示一个springboot通过jpa查询数据库的例子, springboot版本 1.5.9 首先引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</art...

2018-08-12 21:12:45 192

原创 springboot之热部署

在pom中添加配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> &amp

2018-08-12 12:53:38 84

原创 springboot之页面跳转thymeleaf

本文介绍springboot页面跳转相关的配置与方法首先在pom中添加配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </d...

2018-08-12 12:48:23 1215

原创 springboot之快速入门helloworld

本文介绍使用springboot快速搭建项目,并返回helloworld串环境  jdk 1.8 maven:3.3.9  springboot:1.5.9.RELEASE快速创建maven项目注意是jar类型的项目;创建完成后引入pom<parent> <groupId>org.springframework.boot</groupId>...

2018-08-12 12:29:11 177

原创 深入学习docker之入门

什么是docker    Docker 是一个开源的应用容器引擎,可以将应用打包放置到不同的环境并运行,他可以解决环境,标准话,隔离等问题,随着多年的发展,docker已经成为主流开发技术,作为程序员不会点儿docker都不好意思出去打招呼;    本文介绍在windows 下docker的使用,以及常用命令;    下载地址:https://www.docker.com/docker...

2018-07-15 17:12:15 371

kafka权威指南

(高清,非扫描,带目录,最新版) 每个应用程序都会产生数据,包括日志消息、度量指标、用户活动记录、响应消息等。如何移动数据,几乎变得与数据本身一样重要。如果你是架构师、开发者或者产品工程师,同时也是Apache Kafka新手,那么这本实践指南将会帮助你成为流式平台上处理实时数据的专家。   本书由出身于Linke

2018-04-03

空空如也

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

TA关注的人

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