10 NullPointerExcept

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 2k+

springboot2 用lettuce客户端配置多个redisTemplate

MAVEN依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId></dependency><dependency> &l...

2019-09-11 10:12:50

延迟任务的实现总结

实现延迟任务的方式有很多,各有利弊,有单机和分布式的。在这里做一个总结,在遇到这类问题的时候希望给大家一个参考和思路。延迟任务有别于定式任务,定式任务往往是固定周期的,有明确的触发时间。而延迟任务一般没有固定的开始时间,它常常是由一个事件触发的,而在这个事件触发之后的一段时间内触发另一个事件。延迟任务相关的业务场景如下:场景一:物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,...

2019-09-08 16:04:40

Log4j2异步日志配置

简介Apache Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides many of the improvements available in Logback while fixing some inherent...

2019-08-28 17:29:26

Log4j2的性能为什么这么好?都是因为disruptor

一、logback和log4j2压测比较1、logback压测数据logback压测数据,50个线程,500万条日志写入时间。logback:messageSize = 5000000,threadSize = 50,costTime = 27383mslogback:messageSize = 5000000,threadSize = 50,costTime = 26391ms...

2019-08-28 17:28:00

Vue CLI 3搭建vue+vuex 最全分析

一、介绍Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统。有三个组件:CLI:@vue/cli全局安装的 npm 包,提供了终端里的vue命令(如:vue create 、vue serve 、vue ui 等命令)CLI 服务:@vue/cli-service是一个开发环境依赖。构建于webpack和webpack-dev-server之上(提供 如:ser...

2019-06-25 11:30:57

Vue CLI 2.x搭建vue,目录最全分析

一、vue-cli介绍vue-cli是一个用于快速搭建vue项目的 脚手架。二、vue-cli安装、更新安装过nodeJs 、cnpm 后,全局安装vue-cli(以后其他项目可直接使用):cnpm install -g vue-cli更新:cnpm update vue-cli查看安装成功否(有版本号就是成功,V大写)vue -V查看npm注册表里vue...

2019-06-25 11:29:54

vue-cli的webpack模板项目配置文件分析

由于最近在vue-cli生成的webpack模板项目的基础上写一个小东西,开发过程中需要改动到build和config里面一些相关的配置,所以刚好趁此机会将所有配置文件看一遍,理一理思路,也便于以后修改配置的时候不会“太折腾”。一、文件结构本文主要分析开发(dev)和构建(build)两个过程涉及到的文件,故下面文件结构仅列出相应的内容。├─build│ ├─build.js...

2019-06-23 10:02:33

idea如何安装使用jetty runner

在IDEA中运行web应用,可以安装jetty runner插件。File-setting...点击 install。Run-edit configurations找到jetty runner ,按左上角 + 号,新建一个应用,配置如上。然后点击run 即可运行成功。...

2019-06-18 16:08:55

IntelliJ IDEA 2018.3常用配置图解

软件版本IntelliJ IDEA 2018.3简介IDEA的优势(相对Eclipse)1.强大的整合能力。比如:Git、Maven、Spring等2.提示功能的快速、便捷3.提示功能的范围广4.好用的快捷键和代码模板5.精准搜索安装目录结构bin容器,执行文件和启动参数等help快捷键文档和其他帮助文档jre6464 位java 运行环境libidea ...

2019-06-18 15:17:28

阿里是如何处理分布式事务的

分布式事务中的TCC模式,貌似是阿里提出来的,所以阿里自研的分布式事务框架总是少不了TCC的影子。服务拆分很多系统早期都是单系统服务架构,所有业务聚合在少数几个系统中对外提供服务。随着业务发展,服务之间耦合比较严重,一般会对服务进行重构,重构的主要思想也就是围绕“拆分”展开。比如按照功能进行解耦的垂直拆分,拆分之后原有系统中的业务调用,就变成了分布式的调用了,但是由于网络的不可靠性,数...

2019-06-13 10:15:43

Redis 的持久化机制RDB和AOF有什么区别?

前言Redis作为内存级缓存,当redis实例发生问题时,内存数据容易丢失,所以需要用到持久化技术。在Redis里,提供了两种持久化方式:RDB和AOF,两种持久化方式各有优势,本篇文章为你解密redis持久化的两种方式redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。RDB,简而言之,就是将存储...

2019-05-31 17:35:52

JAVA并发包的Volatile和CAS如何不用锁保证线程安全?

前言从JDK1.5以后,引入了java.util.concurrent并发包,其中java.util.concurrent.atomic包,方便在无锁的情况下,进行原子操作。在JUC中大部分都是利用volatile关键字+CAS在不用锁的情况来保证线程安全的。本篇文章把这两个知识点给大家一个清晰的解析,只有掌握了关键字volatile和CAS机制,你才能对JUC包有一个彻底的理解。...

2019-05-31 16:24:53

从Header中X-Forwarded-For获取的IP一定是真实IP吗?

前言在实际项目中,用户ip的获取很重要。通过报障用户的ip来快速定位用户的请求日志,还可以通过ip访问频率来进行防盗链处理。在有些项目中,比如之前我们说过的升级,通过用户ip尾号进行一部分用户的灰度升级,还比如通过ip来区分用户的地域,进行个性化的推荐等。一般获取ip的方式。都是通过Header中的X-Forward-For、X-Real-IP或Remote addr等属性获取,但是如果确保获...

2019-05-31 14:59:21

Interceptor、Filter、Servlet有什么区别?执行顺序是什么?

前言JAVA WEB项目中,Interceptor和Filter都拦截并处理请求,都是一种面向切面的编程思想,但是他们有什么区别呢?一个工程中有很多Interceptor和Filter,他们执行顺序如何?与Servlet又有什么区别呢?本篇文章为你解密!过滤器(Filter)我们知道Filter是配置在web.xml时,比如配置如下面一段字符编码Filter:<...

2019-05-30 14:43:24

Cookie->Session->Token的发展旅程(二)

前言上一篇讲了为了维持HTTP协议的状态,采用了Cookie与Session机制,但是这两种机制都有自己的局限性。Cookie保存在客户端有可能被篡改,而且浏览器可以手工禁止Cookie。Session对每个用户产生一个SessionId,可以通过url或者header传递。但是Session存储在服务器端的内存中,当数据量大的时候容易发生OOM,而且不利于扩展,从一台机器扩展到两台时,就需要...

2019-05-29 15:57:21

Cookie->Session->Token的发展旅程(一)

前言JAVA WEB项目可分为无状态与有状态。一个商城,用户添加购物车或者下订单这种操作,都是有状态的,服务器为了区分不同用户的操作,需要记录一些特殊的信息。当用户再次访问时,携带这些信息,服务器就可以区分出用户做了哪些操作。从最早的Cookie到后来的Session,再到后来的Token,本文带你了解这段发展旅程。Cookie概念你有没有碰到过这种情形,之前在搜索引擎搜索过一些商品,...

2019-05-29 15:53:31

Java字节码4-使用Java-Agent实现一个JVM监控工具

一、概述在前面几节当中,我们构造了多个Agent。Agent由于是在main方法之前执行,我们可以做很多事情。本节中,我们将使用Agent技术来监控应用程序的JVM内存和GC信息。二、实现1、修改pom.xml<dependencies><dependency> <groupId>javassist</groupId> ...

2019-05-28 16:53:15

Java字节码3-使用ByteBuddy实现一个Java-Agent

一、概述在前面两节中,我们实现了Agent,但是其无论在使用方式和功能上面都有一定的局限性。本文我们借助字节码工具ByteBuddy,写出高级的Agent。ByteBuddy不仅仅是为了生成Java-Agent,它提供的API甚至可以改变重写一个Java类,本文我们使用其API实现和第二节一样的功能,给目标类中的函数统计其调用耗时。二、实现1、修改pom.xml本节和上节的不同点,主...

2019-05-28 16:51:57

Java字节码2-instrument初体验

一、概述在上一节中Java字节码1-Agent简单上手中,我们了解了通过一个Agent可以在main方法前执行。本节中,我们将介绍java.lang.instrument,通过instrument可以实现一个Agent来修改类的字节码。下面我们会借助javassist实现一个简单的性能检测工具。目的是检测函数的调用耗时,这里仅仅抛砖引玉,instrument提供的更松耦合的AOP不止于此。...

2019-05-28 16:50:43

Java字节码1-Agent简单上手

一、概述Java Agent是从JDK1.5及以后引入的,其作用相当于你的main函数之前的一个拦截器,即在执行main函数前,先执行Agent中的代码。Agent的代码与你的main方法在同一个JVM中运行,并被同一个类加载器所加载,被同一的安全策略 和上下文所管理。二、简单上手写一个Agent1、编写一个Java类,并包含如下两个方法中的任一个:public static voi...

2019-05-28 16:49:28

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。