自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

what are you living for ?

persue constantly.

  • 博客(49)
  • 问答 (9)
  • 收藏
  • 关注

原创 初步了解 java 8 stream 原理

1、为什么使用 Streamfor 循环或者 Iterator 循环的不足如果想要在一次循环迭代中完成多次操作(例如,在一次循环中,进行去重、过滤、元素转换、排序操作),会比较繁琐,甚至需要多次循环才能达到自己的目标。造成的不好的结果,一个是代码比较繁琐,一个是多次循环迭代会有性能损失(局部变量会增加,增加了内存的开支)如果希望使用并行处理,需要自己编写代码如果需要进行一些统计操作,需要自己编写相关代码,而这些代码往往又是比较繁杂的Stream 的优势一次迭代中支持多种操作使用 Fork

2021-04-21 22:21:31 294

原创 springmvc(三)Handler、HandlerMapping和HandlerAdapter

前言DispatcherServlet 通过 HandlerMapping 查找到 Handler,然后委托 HandlerAdapter 去执行 Handler,生成 ModelAndView。为什么需要 Handler、HandlerMapping和HandlerAdapter日常开发中的Handler、HandlerMapping和HandlerAdapter回想下,日常的开发中,我们需要针对 HttpServeletRequest 做各种处理,我们的处理逻辑,其实就是一个 Handler。

2020-05-29 01:24:43 715

原创 jdk8 java.util包整体学习(二)concurrent.atomic包下的类

前言java.util.concurrent.atomic 包下共有 17个类。统计代码如下 public static void main(String[] args) throws IOException { JarFile jarFile = new JarFile("/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jd...

2020-05-08 01:30:39 378

原创 jdk8 java.util包整体学习(一)思路

前言最近面试,发现对日常开发使用的 jdk 的一些工具类的方法还不够熟悉,有些方法甚至不知道,所以打算尽量先把 util 中所有的工具类过一遍。计划尽量按照包来总结,如果某个包下类特别多,则先按照字母顺序来看,最后把某个包下所有的类过完之后,再去分类总结。类统计统计代码 public static void main(String[] args) throws IOExcept...

2020-05-02 14:51:51 427

原创 从一些例子看 mysql innodb 在 RR 隔离级别的 next-key 锁的行为

前言如果希望直接获取结论,请看末尾【一些结论】模块mysql 版本 5.7引擎 innodb隔离级别 RR (RepeatableRead)需要了解 mysql 的 next-key 锁(间隙锁 + 索引记录锁)本文加锁使用读取锁定(也可使用 delete/update … where … )设置 innodb_status_output_locks ,然后可以使用 show en...

2020-04-03 22:14:19 184

原创 几个场景下,从 java 线程栈信息看线程状态的变化

准备为了方便,直接使用 visualvm附一张java 线程状态图(来源于知乎:java线程运行怎么有第六种状态? - 山月风成的回答 - 知乎https://www.zhihu.com/question/56494969/answer/556847141)需要注意,java 线程的状态是没有 ready 和 running 这两个状态的,这两个状态其实就是 runnable 状态。...

2020-03-10 23:34:17 161

原创 从源码探究 1.8 ConcurrentHashMap 的几个使用过程中想到的问题

前言水平有限,尽量深入主要关注的点ConcurrentHashMap 的底层结构如何保证并发 put 安全(cas 和 synchronized 的使用)get 方法优化如何扩容链表转红黑树的时机使用 ConcurrentHashMap 中的一些疑问解析ConcurrentHashMap 的底层结构如何保证并发 put 安全...

2020-03-05 01:03:08 151

原创 RocketMQ 入门学习笔记

前言本文主要侧重点在 java 的客户端,具体的如何搭建 RocketMQ 服务端不在本文讨论范围内一、一些概念1.1、rocketMQ 的组成name serverproducer 消息生产者,负责产生消息consumer 消息消费者,负责消费消息push consumer:Consumer的一种,应用通常向Consumer对象注册一个Listener接口,一旦收到消息,Con...

2019-12-17 17:18:14 262

原创 AbstractQueuedSynchronizer 原理 & 源码

看ThreadPoolExecutor 源码的时候,其中 Worker 类是基于AbstractQueuedSybchronizer构建的,所以顺便把这个类一起看了。另外,这个类也是ReenTrantLock 和 Semaphore 的基础,说明足够重要了。一、使用看源码之前,先简单用下这个类,看什么场景下,可以使用。...

2019-12-02 16:41:31 143

原创 源码解析—java线程的工作单元及执行机制

java 将工作单元与执行机制分开,任务通过Callable、Runnable等定义,而执行机制由 Executor 和 Executor 基础上的 ExecutorService 来定义,更是直接提供了完备的执行机制,即 ThreadPoolExecutor 。Executor 接口public interface Executor { void execute(Runnable...

2019-11-20 20:55:02 394

原创 开发中的常见git操作【很全】

一些常规操作一、分支操作1.1、拉取远程的某个分支的几种方式拉取之前,可以使用git branch -a查看所有分支(或者使用git branch -r 查看所有远程分支)。git checkout -b lBranch origin/rBranch 【在本地新建名为 lBranch 的分支,并追踪远程的 rBranch 分支】git checkout --t origin/rBran...

2019-09-29 18:12:45 444

原创 java nio—buffer的简单介绍以及堆外内存的分析

作用NIO提供了一系列buffer类,用作缓存。可以直接从channel中读数据到buffer,也可以从buffer中写数据到channel。缓冲区本质上是一块固定大小的内存,其作用是一个存储器或运输器。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。类图Buffer的四个属性容量(capacity):缓冲区能够容纳的数据元素的最大数量。这一容量在缓...

2019-09-26 16:03:49 699

原创 一个支持跨域访问的web filter

public class DforceCrossDomainFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletR...

2019-08-15 18:14:46 106

原创 sax和dom方式解析xml

一、sax解析xml1.1、sax概述SAX解析方式会逐行地去扫描XML文档,当遇到标签时会触发解析处理器,采用事件处理的方式解析XML (Simple API for XML) ,不是官方标准,但它是 XML 社区事实上的标准,几乎所有的 XML 解析器都支持它。SAX的优点:解析速度快占用内存少SAX的缺点:只能读取XML,无法修改XML流式访问,无法随机访问某个标签(节...

2019-07-11 19:22:08 177

转载 整理一些spring常见的扩展点

一、各种后处理器1.1、BeanDefinition与BeanFactory扩展1.1.1、BeanDefinitionRegistryPostProcessor接口/** * Extension to the standard {@link BeanFactoryPostProcessor} SPI, allowing for * the registration of further...

2019-06-03 18:40:18 2426

原创 FSM(状态机)的JAVA实现

前言有限状态机(英语:finite-state machine,縮寫:FSM)又稱有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。(FROM WIKI)FSM的核心和作用状态机中的核心内容:有限个状态、通过外部操作引起状态的转移。用来对状态的流转进行解耦,使代码逻辑更加清楚和更容易维护FSM的组成和分类组成现态:是指当前所处的状态。...

2019-06-03 16:19:19 8514 2

原创 cglib的简单使用

一、前言最近在看Spring的源码,其中有牵扯到cglib的相关内容,遂简单记录下cglib是如何使用的二、原理(节选自网络)CGLIB原理:动态生成一个要代理类的子类,子类重写要代理的类的所有不是final的方法。在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。它比使用java反射的JDK动态代理要快。CGLIB底层:使用字节码处理框架ASM,来转换字节码并生成新的类...

2019-03-24 15:32:53 3138 2

原创 消失的异常堆栈---jvm的fast throw

fast throw 简介HotSpot VM有个许多人觉得“匪夷所思”的优化,叫做fast throw:有些特定的隐式异常类型(NullPointerException、ArithmeticException( / 0)之类)如果在代码里某个特定位置被抛出过多次的话,HotSpot Server Compiler(C2)会透明的决定用fast throw来优化这个抛出异常的地方——直接抛出一个...

2019-03-11 21:02:19 1447

原创 ThreadLoca的原理以及使用过程中为什么会出现内存泄漏

一、ThreadLocal的实现ThreadLocal源码:public class ThreadLocal<T> { private final int threadLocalHashCode = nextHashCode(); private static AtomicInteger nextHashCode = new AtomicInt...

2019-03-11 01:51:26 599

原创 java中的弱引用 WeakReference

前言最近在看ThreadLoca的实现机制,发现ThreadLocalMap的key是弱引用对象,下面针对弱引用做了一些简单的测试。jvm GC的可达性分析算法理解弱引用,需要先简单了解些jvm gc的一种方法:可达性分析算法可达性分析法定义了一系列称为"GC Roots"的对象作为起始点,从这个起点开始向下搜索,每一条可达路径称为引用链,当一个对象没有任意一条引用链可以到达"GC Roo...

2019-03-10 16:42:23 376

原创 tomcat JMX的配置

在catalina.sh中添加CATALINA_OPTS="$CATALINA_OPTS-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=20002-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authentic...

2019-02-27 18:12:55 589

原创 springmvc(二) springmvc的大脑—DispatcherServlet源码小解

DispatcherServlet的作用上面是网上找的一张图,大概可以说明DispatcherServlet在整个数据流中起到的作用。初始化springmvc所需的组件截获请求,交给springmvc框架处理协调组件处理请求本文不注重源码的分析,只简单分析下是如何截获http请求和如何协调组件进行处理http请求将请求交予springmvc处理的过程首先看下Dispatcher...

2019-02-18 17:07:20 149

原创 springmvc(一) SpringMVC基本介绍以及基本配置

SpringMVC主要做了什么传统的Servlet模型在Servlet模型中,请求-响应的实现依赖于两大元素的共同配合:配置Servlet及其映射关系(在web.xml中)在Servlet实现类中完成响应逻辑使用这个模型时,会有以下问题:项目规模扩大之后,请求-响应的映射关系全部定义在web.xml中,将造成web.xml的不断膨胀而变得难以维护开发效率不高,一些共性的东西需要...

2019-01-16 21:01:26 831 1

原创 java8Stream操作

前言Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、...

2019-01-15 22:47:10 553

原创 JAVA8 函数式编程—function包接口梳理

前言函数式接口(Functional Interface)是Java 8对一类特殊类型的接口的称呼。 这类接口只定义了唯一的抽象方法的接口,并且这类接口使用了@FunctionalInterface进行注解。在jdk8中,引入了一个新的包java.util.function, 可以是java 8 的函数式编程变得更加简便。这个package中的接口大致分为了以下四类:Function: 接收...

2019-01-15 17:20:53 503

原创 Fork/Join框架—以分治的思想使用线程

前言Fork/Join框架依赖于分治的思想,在了解Fork/Join之前需要先了解分治的思想和线程池技术(ThreadPoolExecutor)在分治思想下难以解决的问题一、分治法字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。举个例子,现在我们要计算从1累加到10000的值,利用分治法我们...

2019-01-12 23:35:22 316 1

原创 初探java8的时间API

JAVA8之前时间API的不足Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义。java.util.Date同时包含日期和时间,而java.sql.Date仅包含日期,将其纳入java.sql包并不合理。另外这两个类都有相同的名字,这本身就是一个非常糟糕的设计。java.util.Date这个...

2019-01-10 10:30:47 373 1

原创 Spring学习(三)资源

1、前言这部分内容以前没系统了解过,所以会较仔细的看下spring官方的文档 https://docs.spring.io/spring/docs/5.0.11.RELEASE/spring-framework-reference/core.html#resources2、Spring的资源接口—ResourceSpring的Resource接口是一个强大的接口,用于抽象对低级资源的访问。...

2018-12-10 22:03:19 141

原创 Spring学习(二)IOC

前言IOC主要是为了将Bean之间的依赖抽取到框架层面进行管理。让代码达到面向接口编程是IOC的一个重要目的。1、IOC的作用一个例子不使用IOC:情景一:package com.my.service;import com.my.domain.Good;/** * @description: 订单service * @author: lige * @create: 201...

2018-12-10 20:24:43 320

原创 如何在非Spring管理的对象中获取在Spring中托管的对象

前言熟悉Spring的都知道,IOC容器管理了对象从出生到死亡的各个生命周期。有这样一种情况,如果我们需要在一些非Spring管理的对象中引用Spring管理的bean(这些场景还是挺多的,比如在web servlet中使用Spring管理的bean),其实这种情况下,就是如何获取ApplicationContext对象的问题,这也是本文的重心所在。WEB应用:使用spring工具类WebAp...

2018-12-07 17:20:59 1489

原创 tomcat的日志体系(基于tom7)

前言最近项目上线,日志方面感觉有些薄弱,才有了这篇记录。tomcat的日志类型一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息二是访问日志信息,它记录的访问的时间 ,IP ,访问的资料等相关信息。下面我们分别来了解下这两种类型类型一:运行中的日志Tomcat 运行日志又分为下面5类:catalina 、 localhost 、 manager 、 admi...

2018-12-04 22:22:56 391

原创 js的那些事儿

前言作为一名后端开发,这些前端的事儿也要了解呀1、promise—异步编程的解决方案异步性提高了程序的执行效率,但同时也减少了程序的可读性。如果我们有几个异步操作,并且后一个操作需要前一个操作返回的数据才能执行,那么只能通过一层一层嵌套下去。举个栗子:$.ajax({...,success:funtion(){ $.ajax({ ...., success:funtion(){...

2018-12-03 22:50:34 137

原创 http 和 websocket 的恩恩怨怨

1、websocket和http的keep-aliveHTTP的生命周期通过Request来界定,也就是一个Request 一个Response,那么在HTTP1.0中,这次HTTP请求就结束了。在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。但是请记住 Request = Response , ...

2018-11-17 20:41:32 183

原创 Spring学习(一)、概述

本文主要阐明以下几个问题:1、Spring框架的作用2、了解spring体系3、为什么选择spring一、spring框架的作用先简单了解下Spring的架构。Spring以IOC和Core为基础,向普通的开发者提供了依赖管理的能力在此之上,Spring提供了面向切面编程(AOP)的能力,进一步增强了各POJO的能力Spring框架在Core核心模块和AOP模块的基础上,还为我...

2018-11-05 21:16:26 241

原创 Maven学习之路(五)maven的灵活构建--属性、profile和资源过滤

前言在很多情况下,我们希望项目在不同的阶段有不同的构建,开发的时候,使用开发的环境配置,测试的时候,使用测试的环境配置,上线的时候使用其他的配置,虽然说,每次切换项目运行的环境的时候,我们可以手动更改配置,但这样难免有疏漏之处,导致项目构建的失败。这个时候,我们就需要Maven进行灵活的构建,使用属性、profile和资源过滤三个特性达到根据不同的环境构建项目的目的。一、Maven 属性最常...

2018-11-02 16:03:14 207

原创 解决github访问速度慢的问题

1、在http://tool.chinaz.com/dns查询http://github.comhttp://tool.chinaz.com/dns?type=1&host=github.com&ip=2、找到TTL值最低的响应IP 192.30.253.1133、把本机的hosts文件(mac下,位置在/etc/hosts)增加192.30.253.113 githu...

2018-11-01 14:46:10 127

原创 使用Nexus创建maven私服

一、为什么要创建私服?maven提供的中央仓库不好吗?

2018-10-24 13:13:20 468

原创 logback日志使用

一、logback的介绍Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面下个模块:logback-core:其它两个模块的基础模块logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。本文中,...

2018-10-22 22:08:14 479

原创 react(三)组件

一、组件定义的方式组件定义有两种方式:es5原生方式React.createClass定义的组件es6形式的extends React.Component定义的组件我们只关注第二种方式例子:import React, { Component } from 'react'import ReactDOM from 'react-dom'class Header extends C...

2018-09-30 11:14:04 193

原创 react(二)react虚拟DOM、组件概念以及入门示例

一、虚拟DOM----react核心什么是虚拟DOM?在React中,render执行的结果得到的并不是真正的DOM节点,结果仅仅是轻量级的JavaScript对象,我们称之为virtual DOM。虚拟DOM是React的一大亮点,具有batching(批处理)和高效的Diff算法。这让我们可以无需担心性能问题而”毫无顾忌”的随时“刷新”整个页面,由虚拟 DOM来确保只对界面上真正变化的部...

2018-09-28 17:03:54 330

空空如也

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

TA关注的人

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