自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 设计模式——代理模式

代理模式什么是代理模式?首先说什么是代理。记得有这么个神评论“请说出一个最想日本人名字的中文职位”,神评论:房屋中介。代理的作用就类似房屋中介。试想一个业主想要出售自己的房屋,但是业主本身并不是干这行的,对这行的规矩和行情并不了解,因此他将房屋在出售过程中的行使权交给中介,由中介代替他去完成挂牌、引流、洽谈和成交等过程。房屋中介是业主的代理。反过来,中介并没有拥有房屋的所有权,因此对于房屋在出售过程中的签字,证件证明等过程仍需要业主出面提供,所以代理必须要调用被代理(业主)提供的方法。代理起到的作用

2021-09-22 23:18:26 96

原创 JDK8-ArrayList源码分析

ArrayList源码浅析ArrayList是java.uti·包下的一个可以存储任意类型的集合,并且可以存储重复元素,而且能保证元素的顺序,在使用时,如果不添加泛型限制,则可以同时存储多种元素,但是同时也埋下了地雷,当取出来得时候可能导致类型出错。一般使用的时候都会做类型检查,通过“快速失败”机制,防止错误出现在运行阶段造成严重的后果。类继承关系常用API构造方法public ArrayList(int initialCapacity) {// 带初始容量的构造方法 if

2021-09-22 16:57:26 118

原创 并发编程——ReentrantLock

ReentrantLockAbstractQueuedSynchronizer(一般简称AQS)是并发编程中的一个核心类,多线程的锁管理也主要在这个类中得到完美实现。Sync作为ReentrantLock的内部类,继承了AbstractQueuedSynchronizer。说明:为了精简代码,能够简化的地方都是用了Java8的Lamda表达式进行了简化。2.对于try-catch需要捕获的异常,使用lombok插件的@SneakyThrows进行处理。3.代码中使用的注释为行尾注释,属于不优

2021-09-27 17:56:37 203

原创 设计模式——策略模式

策略模式策略模式从表理解,必定是有很多中策略,但是具体采用哪一种策略,那就是策略模式需要解决的问题。策略模式定义了算法家族、分别封装起来,让他们之间可以相互替换,此模式让算法的变化不会影响到使用算法的用户。例如模电商平台基本每个月都在做活动,如返现、打折等,这些算法的变化不需要进行停服维护,而是事先将算法都是想了,只是需要到特定的时间才会将这种算法启用。定义算法的抽象:public interface IPromote { void doPromote();}事先将算法进行实现:p

2021-09-23 14:49:19 123

原创 设计模式——委派模式

委派模式委派模式又叫委托模式,是一种面向对象的设计模式,允许对象组合实现与继承相同的代码重用。他的基本作用就是负责任务的调用和分配任务,是一种特殊的静态代理,可以理解为全权代理,但是代理模式注重过程,而委派模式注重结果。委派模式在生活中的应用像是公司架构中,Boss给Leader下达任务,Leader根据下属员工的能力给员工派发任务,工作完成后再由Leader想Boss进行工作汇报。Leader必须事先知道自己的手下员工能做什么,事先将各个员工对号入座,便于后边分配任务的时候快速找到目标完成任务。p

2021-09-23 14:21:13 155

原创 cglib动态生成的类代码

//// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//package proxy.dynamicproxy.cglib;import java.lang.reflect.InvocationTargetException;import net.sf.cglib.core.Signature;import net.sf.cglib.proxy.C

2021-09-22 22:38:26 5306

原创 JDK动态代理生成的类代码

//// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.lang.reflect.UndeclaredThrowa

2021-09-22 16:55:11 261

原创 单例模式-工厂模式

工厂模式工厂模式是随着应用的发展衍生出来一种编程习惯,用于创建复杂的对象,或者避免编写大量的重复代码的一种解决方案。简单工厂基础工作:public interface Subject { void study();}public class Java implements Subject { @Override public void study() { System.out.println("学习Java"); }}public cla

2021-09-22 10:24:00 99

原创 设计模式——单例模式

单例模式单例模:代码中多次获取一个类的对象,者多次获取的结果都是同一个对象,这个对象就是一个单例对象。常见的单例模式既然单例不允许有多个重复的对象,而一般情况下对象都是通过构造函数创建的,name到哪里模式必定不能让用户能够调用到构造函数。饿汉式单例之所以叫做饿汉式,是因为这个唯一的实例在一开始的时候就会被创建好了,显得很急切,就像一个饿汉一样哪里忍得了把饭放着不吃。// 看红色字体知道必须私有化构造方法public class HungerySingleton { // 私有

2021-09-20 23:36:28 333

原创 关于分布式事务

在长期的学习中,突然发现对于很对技术学习中,如果忽略了技术产生的背景而直接进入技术的学习,到最后会突然惊醒我到底学了个啥。对于分布式事务,零零碎碎学了很多东西之后,才发现内容串不起来,导致的后果就是当出现问题的时候,不能从大脑中迅速构建出解决方案,因此借此特殊的机会,把分布式事务重新系统地总结一番。什么是事务就我个人的理解,事务就是我当前要做的一件事情,比如我要将网页提交给服务器的数据写到数据库,而只有当我成功写入数据库后,这个事情才算是结束了,也就是这个事务完成了。事务的基本特性原子性一致性

2021-09-15 16:29:20 103

原创 Redis-02过期策略及源码分析

过期策略Redis之所以能够有海量数据的高吞吐量,是因为他是基于内存的实现的,而内存的读写速度远远高于磁盘。此外Redis的数据读取设计为单线程,消除了上下文切换和等待阻塞。Redis对于socket的处理采用了IO复用,大大增加每秒处理的连接数。Redis内部实现了多种高效的存储结构,让本身基于内存的应用如虎添翼。但是这种基于内存的应用有一个很明显的瓶颈:内存的空间上限。因此对于本身就不大的空间,能省一点就尽量省一点。因此Redis对于存在内存中的key,会设置过期时间,由cpu开一个定时器进行监控,

2021-08-14 23:42:33 245

原创 Redis-00Redis配置文件主要主要配置项

最后贴上一个带中文的redis的配置文件以供参考:# Redis configuration file example.## Note that in order to read the configuration file, Redis must be# started with the file path as first argument:# 为了能读到配置文件,redis的启动必须指定配置文件# ./redis-server /path/to/redis.conf# Note on

2021-08-14 16:39:56 183

原创 Redis-01基础数据类型和常用数据结构

Redis-01基础数据类型和常用数据结构纵观现在的Java面试,Redis成了必问的点,为什么Redis能这样得到大家的青睐?Redis到底帮我们解决了什么问题提?Redis的优点是有哪些?…概览 Redis官网这样描述自己:开源的内存型数据结构化存储,用作数据库、缓存和消息处理。Redis提供了string,hashes,lists,sets,sorted sets(提供范围查询),bitmaps,hyperloglogs,geospatial以及streams数据结构…Redi

2021-08-14 16:13:05 99

原创 2021-07-18

从零开始实现简易版本SpringIoC&DI&MVCSpring源码进修中,实现一个简易版本的Spring,包含以下主要内容:IoC,DI,MVC,已完成基本的功能。代码量还算一般,特此记录以共勉。首先是整个项目的基本思路。项目实现的功能就是从前端发一个请求,后端根据请求解析到后端的相应方法进行处理,完成后将结果进行返回。代码需要完成请求路径和类+方法的对应。配置阶段配置web.xml:DispatcherServlet设定init-param:contextConfigL

2021-07-18 21:08:46 53

原创 JDK8-HashMap源码浅析

总叙HashMap是Map接口下一个实现,提供键值对的存储。JDK1.7及以前通过数组+链表实现数据的存储,而JDK8开始加入了红黑树,存储结构做了优化,即存在两种存储方式:数组+链表或数组+红黑树。如何实现存储在开始之前可以先看看Hash表的相关内容。Hash表:理解为一个包含了多个格子的表,每个格子存放不同hash值的元素。例如格子1存放hash值为50的对象、格子2存放hash值为100的对象…Hash碰撞:不同的值计算出的Hash值一般情况下应该是不一样的,因而会存放到Hash表中的不

2021-06-21 12:00:50 112

原创 2021-05-21

Spring中怎么检测前端请求携带的参数类型并实现自动转换?这是一道面试题,我曾被问过,但是由于面试时候不可能达到写文章时候的流畅和全面,当时回答也只是算说到了点子上,并没有讲的很清楚,于是回来之后还是认认真真看源码,然后debug学习和记录。先贴出Controller代码(项目启动后,前端请求路径为:http://localhost:8080/test?num=7):@RestControllerpublic class MyController { @RequestMapping

2021-05-21 20:27:56 61

原创 JDK动态代理之SpringAOP

/* * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http:/

2020-12-02 21:03:00 78

原创 JDK动态代理之InvocationHandler接口源码分析

JDK动态代理之InvocationHandler接口源码分析InvacationHandler类是JDK动态代理中需要实现的接口,接口中只有一个方法:invoke。代码package java.lang.reflect;/** * {@code InvocationHandler} is the interface implemented by * the <i>invocation handler</i> of a proxy instance. * * 译文:

2020-12-02 19:30:45 912

原创 Collections源代码解析和总结

老规矩,底部是总结。package java.util;import java.io.Serializable;import java.io.ObjectOutputStream;import java.io.IOException;import java.lang.reflect.Array;import java.util.function.BiConsumer;import j...

2020-03-20 11:56:08 428 2

原创 Arrays源代码解析和总结

Arrays的代码有点长,但是好多都是重载方法,所以亲们知道怎么看了吧。或者想看总结的请划到底部。package java.util;import java.lang.reflect.Array;import java.util.concurrent.ForkJoinPool;import java.util.function.BinaryOperator;import java.u...

2020-03-19 21:09:04 205

原创 HashSet源代码解析和总结

话不多说,看代码。想直接看总结的,门都没有(但是还是有窗的,请拉到最后。)package java.util;import java.io.InvalidObjectException;/** * This class implements the <tt>Set</tt> interface, backed by a hash table * (actu...

2020-03-17 11:10:40 114

原创 ArrayList源代码解析和总结

ArrayList算是我比较喜欢的一个结合容器。Buffer话不多,上代码。package java.util;import java.util.function.Consumer;import java.util.function.Predicate;import java.util.function.UnaryOperator;/** * Resizable-array imp...

2020-03-15 11:03:44 81

原创 HashMap源代码解析和总结

HashMap的底层源码HashMap算是我被我当成对象最多的Map了,用的多了就会产生好奇,到底它底层是怎么样的,今天我来一睹芳容。代码是在是太多了,不过没关系,看中文就行package java.util;import java.io.IOException;import java.io.InvalidObjectException;import java.io.Seria...

2020-03-14 22:07:19 99

空空如也

空空如也

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

TA关注的人

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