-
内部类解析
成员内部类 1.普通内部类可以使用任意的访问修饰符; 2.普通内部类可以访问Outer类中的对象,不受访问控制符的影响; 3.内部类 内部类对象 = 外部类对象.new 内部类(); Outer out = new Outer(); Inner inner = out.new Inner(); 4.如果内部类和外部类的成员变量名字相同,则可以通过this指针来访问外部类成员变量。 System.out.println(Outer.this.s); p...…
-
分布式Session管理
参考博文为什么要使用分布式Session分布式Session的集中实现方式为什么要使用分布式Session 分布式架构或者微服务架构环境下多个应用服务共享Session信息。分布式Session管理实现方案 Session复制:利用支持Session复制的web服务器,达到同步Session信息到多个服务器的目的。适用于Web服务器比较少且Session数据量少的情况。 Session粘滞:将用户请求强制转发到某一个保存了Session信息...…
-
Mybatis分页原理
博文参考MyBatis - 分页之四大方式(数组、SQL、拦截器,RowBounds)MyBatis - 拦截器分页(原理机制 + 功能进阶)数组分页数据库查询并返回所有的数据,而我们需要的只是极少数符合要求的数据。当数据量少时,还可以接受。当数据库数据量过大时,每次查询对数据库和程序的性能都会产生极大的影响。 @Override public List<Address> queryAddressByArray(int currPage, int pageSize)...…
-
布隆过滤器
博文参考浅谈布隆过滤器位图法实现的两种方法布隆过滤器Bloom Filter算法的Java实现问题背景 面试官:10亿URL + 100M内存空间 + 实现一个高效的过滤器。 我:这是一个典型的位图法处理海量数据的问题,具体可使用布隆过滤器求解。具体介绍 布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的。 原理:实际上是一个很长的二进制矢量和一系列随机映射函数。 作用:可以用于检索...…
-
什么是HTTPS协议
文章参考什么是HTTPS协议?HTTPS几个重要的概念HTTPS HTTPS = HTTPS + SSL(Secure Socket Layer) HTTPS = HTTPS + TLS(Transport Layer Secure) HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。 对称加密 对称加密指加密和解密使用相同密钥的加密算法【百度百科】。 非对称加密 公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应...…
-
Spring容器初始化过程
参考博文Spring容器初始化过程Spring容器初始化过程210分钟详解Spring全家桶7大知识点附图说明 代码说明@Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. prepareRefresh(...…
-
SpringAOP的使用方式
参考博文Spring之AOP详解…
-
SpringAOP的实现原理
博文参考Spring AOP实现原理动态代理之CGLIBAOP(Aspect Orient Programming) 系统是由很多不同组件构成的,每个组件都负责特定的功能,除了自身核心功能外,还有诸如日志、缓存、安全、事务管理等额外的功能,它们称之为横切关注点,相同类型的横切关注点构成了一个切面。 SpringAOP实现动态代理的两种方式:JDK动态代理和CGLIB动态代理。 基于反射的JDK动态代理package cn.edu.xidian.ictt.yk.spring...…
-
Spring中的设计模式之装饰设计模式
参考博文装饰器模式装饰器模式模式简介 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。附图说明 具体角色 Component 抽象实体类 ConcreteComponent 实体类 Decorator ...…
-
Spring中的设计模式之适配器设计模式
参考博文Java设计模式之《适配器模式》及应用场景Spring之AOP适配器模式附图说明 类适配器模式 对象适配器模式 接口适配器模式 工作原理 类适配器模式 原理:通过继承实现适配器功能。 对象适配器模式 原理:通过组合来实现适配器功能。 接口适配器模式 原理:通过抽象类来实现适配器功能。Advice体系结构图 Spring适配过程代码package org.springframework.aop....…
-
Spring中的设计模式之模板设计模式
参考博文Java 设计模式 —— 模板设计模式设计模式之 - 模板模式(Template Pattern)附图说明 代码说明public abstract class Template { //这是我们的模板方法 public final void TemplateMethod(){ PrimitiveOperation1(); PrimitiveOperation2(); PrimitiveOperation3(); } ...…
-
Spring中的设计模式之观察者模式
参考博文观察者模式JAVA设计模式之观察者模式面试官:谈谈Spring中都用到了哪些设计模式?附图说明 观察者作为被观察者的成员变量 被观察者作为观察者的成员变量 代码说明 被观察者1package com.jstao.observer;import java.util.ArrayList;import java.util.List;/** * 被观察者,也就是微信公众号服务 * 实现了Observerable接口,对Observerable接口的三个方法进行了具体实现 * @...…
-
Spring中的设计模式之工厂设计模式
参考博文JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)JAVA设计模式之工厂模式—Factory Pattern工厂模式附图说明 简单工厂模式 工厂方法模式 抽象工厂模式 代码说明 简单工厂模式 工厂方法模式 抽象工厂模式 设计思想 工厂模式用于对象的创建,使得客户从具体的产品对象中解耦。 Spring应用场景 Spring使用工厂模式可以通过 `BeanFactory` 或 `Appli...…
-
Spring中的设计模式之代理设计模式
转载博文10分钟看懂动态代理设计模式Java设计模式之代理模式(Proxy)附图说明 静态代理 动态代理 …
-
JDK1.7的HashTable
参考博文Hashtable 的实现原理构造方法// JDK1.7和JDK1.8public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable public Hashtable() { this(11, 0.75f); } public Hashtable(int in...…
-
JDK1.7的HashSet
参考博文HashSet 的实现原理构造方法 从源码可以看出,HashSet底层通过HashMap实现。private transient HashMap<E,Object> map;// Dummy value to associate with an Object in the backing Mapprivate static final Object PRESENT = new Object(); public HashSet() { map = n...…
-
JDK1.7的HashMap
参考博文线程不安全的HashMappput操作 节点Entry特征 static class Entry<K,V> implements Map.Entry<K,V> { final K key; V value; Entry<K,V> next; int hash; } 初始化(以默认构造方法为例) public HashMap() { this(DEFAULT...…
-
JDK1.7的ConcurrentHashMap
参考博文https://www.bilibili.com/video/av55783082/HashMap与ConcurrentHashMap 详解构造方法public ConcurrentHashMap() { this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_CONCURRENCY_LEVEL); } public ConcurrentHashMap(int initialCapacity,...…
-
JDK1.7的线程不安全问题
参考博文线程不安全的HashMapJDK1.7的扩容原理及多线程环境下出现的死循环 void addEntry(int hash, K key, V value, int bucketIndex) { if ((size >= threshold) && (null != table[bucketIndex])) { // 扩容后长度将变为原来的2倍 resize(2 * table.length); ...…
-
HashMap和LinkedHashMap的区别
参考博文HashMap和有序LinkedHashMap实现对比使用差别 System.out.println("HashMap:"); HashMap<String, Integer> hashMap = new HashMap<>(); hashMap.put("e", 1); hashMap.put("b", 1); hashMap.put("f", 2); hashMap.pu...…