Spring Security启动加载流程分析

主要参考博文:Spring Security启动加载流程梳理 补充博文:DelegatingFilterProxy的作用与用法 <filter> <filter-name>springSecurityF...

2019-01-24 13:35:27

阅读数 47

评论数 0

Springboot中创建Filter的两种方式

传统的javaEE增加Filter是在web.xml中配置,如以下代码: <filter> <filter-name>TestFilter</filter-name&...

2019-01-24 11:31:58

阅读数 28

评论数 0

为什么Java多线程同步机制中wait/notify操作要先获取到锁?

首先,我们要清楚的是wait/notify操作是一种线程间同步机制。 为什么要同步?因为多个线程要并发的访问同一共享变量,所以需要线程间同步,防止他们之间相互冲突。 同步的关键字是synchronized,并没有明确的锁的语义。 下面是一张线程的生命周期的图: 根据上面的线程生命周期,我大概画了...

2018-12-08 10:30:39

阅读数 207

评论数 0

面试中被问到的红黑树

在微信公众号上看到了一篇文章觉得写的不错: 2-3-4树是如何解决二叉树中非平衡问题的? 为什么我觉得这篇文章写的不错,因为我知道红黑树是从2-3-4树转化过来的。 2-3-4树和红黑树 大家也可以找一些相关的文章看一下。 为什么我觉得红黑树很重要,因为我在面试的时候被问到过,问的是HashMap...

2018-11-06 12:22:09

阅读数 267

评论数 0

Java 8:StampedLock、ReadWriteLock以及synchronized的比较

前面写的关于锁的文章太抽象,下面这篇文章给出了不同加锁方式之间的差距。Java 8:StampedLock、ReadWriteLock以及synchronized的比较 我觉得这样的对比才能够更加深刻的理解不同枷锁方式的异同,以及乐观锁和悲观锁的区别。 下面一篇文章也写的非常好: Java8...

2018-11-04 14:13:14

阅读数 75

评论数 0

项目系统性管理

前面的文章从架构上探讨了一下微服务的设计思想,虽然我们理解了微服务的整个架构,但是在实际工作中如何落地呢?这才是最主要的问题。就像现在很火的DevOps和敏捷开发的思想,如果不能在实际工作中用起来,那他们也只能是一个概念而已。 幸好现在有一个可以把这些理念都融合在一起的,可以落地的一个企业级数字...

2018-11-03 11:31:20

阅读数 49

评论数 0

关于架构演进的一点思考

首先,架构的演进是为了解决什么问题?是为了解决软件系统日益增长的复杂性。通过什么方式解决的?通过分拆业务层(对每一层进行纵向划分)或增加一层(对每一层进行横向划分)来对系统进行更加细粒度的划分,便于理解系统的每一部分功能。 计算机系统软件体系结构采用一种层的结构,有人说过一句名言: “计算...

2018-10-31 10:35:57

阅读数 29

评论数 0

Why Spring Cloud?

一提到微服务,大家就会谈到Spring Cloud,那么什么是Spring Cloud,他和Spring Framework有什么关系?下面我给出一些我自己的理解。 我们对Spring框架已经非常熟悉了,它主要是一个Bean的容器,主要的特点是IOC和AOP,解决了Bean和Bean之间的依赖问题...

2018-10-30 19:03:20

阅读数 155

评论数 0

关于Java中锁的几点思考

当对共享资源进行访问的时候必须使用锁对资源进行独占式声明,保证同一时间只有一个线程对共享资源进行访问。而一个线程可以多次访问加锁的共享资源,因为一个线程对共享资源的访问都是顺序的,不可能发生并发访问共享资源导致的问题。所以,所有的锁对于一个线程来说都是可重入的,只要当前线程获取到了锁。为此,Jav...

2018-10-30 18:22:05

阅读数 59

评论数 0

Java架构及面试相关的几篇博文整理

Redis相关: 漫画 | Redis常见面试问题(一) 漫画 | Redis常见面试问题(二) 漫画 | 数据库设计全过程 深入学习Redis(5):集群 【3y】从零单排学Redis【青铜】 shiro源码篇 - shiro的session共享,你值得拥有 Java自动拆装箱(A...

2018-10-30 16:04:34

阅读数 42

评论数 0

大O记法与排序算法

我们在描述算法的时间复杂度时都会用到大O记法,那么什么是大O记法呢?百度百科(大O符号)给出了比较准确的定义:它是用来描述一个函数的无穷大渐近。举个例子,解决一个规模为 n 的问题所花费的时间(或者所需步骤的数目)可以被求得:T(n) = 4n^2 - 2n + 2,那么当 n 趋近于无穷大的情况...

2018-10-30 10:15:37

阅读数 113

评论数 0

数组、链表和树的演进

我们最常用的数据结构就是树,最基础的数据结构是数组,那么树在数组的基础上解决了什么问题?为什么用树而不用数组?下面我们来详细的剖析一下: 上面的图是数组、链表和树的示意图,可以看到,数组中的元素没有指针,单向链表有一个指针,双向链表有两个指针,它们都是表示的顺序关系,也就是说,数组的下一个元...

2018-10-29 16:59:09

阅读数 137

评论数 0

Java的阻塞与异步模型

From Blog:Java——BIO、NIO、AIO

2018-10-24 17:54:12

阅读数 77

评论数 0

Java继承和多态的底层原理

当子类继承父类以后,子类的对象为什么可以访问到父类中定义的方法?当子类Override了父类中的方法以后,访问的是子类Override以后的方法,这是怎么实现的?当子类Override了父类的方法以后,还有办法得到父类的方法吗?博客:重写(overwrite)、重载(overload)和覆盖(ov...

2018-10-24 17:51:05

阅读数 459

评论数 0

连接的建立与释放

连接的建立分为两端,一个是客户端,一个是服务端。建立连接一般是有客户端主动发起的,而关闭连接也是一般由客户端发起,但是服务端也可以主动关闭长时间没有通信的连接以释放服务器的资源。详细的信息见博客:图解TCP连接建立与释放 如果用户手动管理连接并且在建立连接以后没有主动释放连接,会导致每次都会创建...

2018-10-24 15:06:34

阅读数 48

评论数 0

Java数据库连接池细节探讨

我们知道,数据库连接池可以把数据库的连接缓存起来,下次使用的话可以直接取到缓存起来的数据库连接。那么,在这个过程中有几个细节需要注意: 1、数据库的连接数有没有限制? 2、数据库会不会自动断开已经建立的连接? 假如数据库连接池需要建立的连接数比数据库能够支持的最大连接数要大,那么肯定会导致连...

2018-10-24 12:02:52

阅读数 21

评论数 0

Java线程详解

这篇文章计划讲一下整个Java线程的生命周期。 要了解一个线程,首先要从它的创建说起,然后是线程的执行以及线程与线程之间的交互,最后是线程的销毁。 一、线程的创建 线程的创建有四种方式: 1)继承Thread类创建线程 2)实现Runnable接口创建线程 3)使用Callable和Future创...

2018-10-22 14:41:04

阅读数 27

评论数 0

资源收集贴

一、IntelliJ IDEA导航特性Top20 (介绍了很多使用IntelliJ IDEA的实用方法) IntelliJ IDEA导航特性Top20 二、提高mysql千万级大数据SQL查询优化30条经验(Mysql优化需要考虑的点) 提高mysql千万级大数据SQL查询优化30条经验(M...

2018-10-15 18:11:03

阅读数 85

评论数 0

GC ROOT的真实含义

作者:RednaxelaFX 链接:https://www.zhihu.com/question/53613423/answer/135743258 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 之前看深入理解JVM这本书,对里面的GC ROOT的真实含义不是太清楚,网上查了一大堆资料都...

2018-10-15 17:52:20

阅读数 543

评论数 0

关系和业务的结合:领域驱动设计(DDD:Domain-Driven Design)

一个系统中和某些业务相关的类会自然而然地组合起来,就像人体中的细胞结合形成某个组织器官一样,这种关系在领域驱动设计中是一种聚合关系。 关于DDD的其它详细信息,请参考网上的博文。本文只是一个引子,下面列举一篇博文: 聚合(根)、实体、值对象精炼思考总结 ...

2018-10-15 17:41:13

阅读数 87

评论数 0

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