- 博客(37)
- 收藏
- 关注
原创 图解 Spring IoC 原理 源码 主流程 时序图
【IoC】最主要的类:ApplicationContext、BeanDefinition、BeanDefinitionReaderIoc从构造方法开始public ClassPathXmlApplicationContext(String… configLocations)1、定位:在ClassPathXmlApplicationContext中调用setConfigLocations()定位配置文件调用refresh();中的obtainFreshBeanFactory(); new De
2021-02-24 11:34:51 271
原创 Spring注解根据不同参数注入不同实现,@ServiceSelector注解自动选择平台端运营端,同一个接口自动根据系统走不同实现,策略模式
Spring注解根据不同参数注入不同实现,@ServiceSelector注解自动选择平台端运营端,同一个接口自动根据系统走不同实现,策略模式
2021-01-26 16:48:46 1391 5
原创 【RabbitMQ】Spring-Boot 整合 使用教程 可靠性投递 顺序消费 高可用方案 事务消息 幂等性 SET化架构 等等
1. 简介1.1 RabbitMQ定义RabbitMQ是一个消息代理和队列服务器,用来在不同应用之间共享数据,是Relang语言开发的,基于AMQP协议。1.2 AMQP定义是一个二进制协议。1.3 AMQP协议模型1.4 核心概念1. Server:Broker,接受客户端连接2. Connection:连接,应用程序与Broker的网络连接3. Channel:网络信道...
2019-02-27 18:17:31 2199 2
原创 Linux 软件安装目录
/usr:系统级目录。可理解为C:/Windows/,/usr/lib: 可理解为 C:/Windows/System32。/usr/local:用户级的程序目录。可理解为 C:/Progrem Files/。用户自己编译的软件默认安装到这里。/opt:用户级的程序目录,可理解为 D:/Software,opt用于放置第三方大型软件,当不需要时,直接 rm-rf即可。当硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使
2022-06-29 09:12:45 1327
原创 常用设计模式
1.设计模式原则设计原则解释开闭原则对扩展开放,对修改关闭。依赖倒置原则通过抽象使各个类或者模块不相互影响,实现松耦合。单一职责原则一个类、接口、方法只做一件事。接口隔离原则尽量保证接口的纯洁性,客户端不应该依赖不需要的接口。迪米特法则又叫最少知道原则,一个类对其所依赖的类知道得越少越好。里氏替换原则子类可以扩展父类的功能但不能改变父类原有的功能。合成复用原则尽量使用对象组合、聚合,而不使用继承关系达到代码复用的目的。2.简单工厂
2022-05-30 16:42:25 600
原创 Spring事务传播原理及数据库事务操作原理
xml基本配置<!-- 配置事务通知属性 --> <tx:advice id="transactionAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception,RuntimeException,SQLException"/> &l
2021-02-26 18:29:05 195
原创 图解 Spring MVC 原理 源码 主流程 时序图
【MVC】入口:HttpServletBean.init() extends HttpServlet.init()1、初始化1-1:入口:HttpServletBean.init()–>FrameworkServlet.initServletBean()–>FrameworkServlet.initWebApplicationContext()–>configureAndRefreshWebApplicationContext()初始化1-2:configureAndRefres
2021-02-25 15:04:06 275
原创 图解 Spring AOP 原理 源码 主流程 时序图
【AOP】入口:AbstractAutowireCapableBeanFactory的doCreateBean()1、创建代理类1-1:doCreateBean()-->initializeBean()初始容器创建的Bean实例对象,为其添加BeanPostProcessor后置处理器。1-2:initializeBean()-->applyBeanPostProcessorsAfterInitialization()对BeanPostProcessor后置处理器的postProc
2021-02-24 11:33:07 339
原创 图解 Spring DI 原理 源码 主流程 时序图
【DI】最主要的类:AbstractBeanFactory、AbstractAutowireCapableBeanFactory、SimpleInstantiationStrategy、BeanWrapperImpl入口:AbstractBeanFactory的getBean();1、实例化:首先,在AbstractBeanFactory调用了getBean();然后,在SimpleInstantiationStrategy调用了instantiate()中调用了BeanUtils.instant
2021-02-21 12:09:24 174
原创 正向代理 squid
外网服务器:yum -y install squidsquid startvim /etc/squid/squid.conf http_access deny all --> http_access allow all内网服务器:vim /etc/profilehttp_proxy=http://zzf1:mZnAI5pk@172.17.2.164:3128https_proxy=http://zzf1:mZnAI5pk@172.17.2.164:3128export ht
2021-02-05 14:28:32 203
原创 JVM内存 新生代 老年代 垃圾回收
JVM基本结构句柄池JDK8中把存放元数据中的永久内存从堆内存中移到了本地内存(native memory)中,这样永久内存就不再占用堆内存,它可以通过自动增长来避免JDK7以及前期版本中常见的永久内存错误(java.lang.OutOfMemoryError: PermGen)。①类加载子系统:负责从文件系统或网络中加载class信息,存放在方法区中②方法区:存放类信息和静态信息(常量信息、常量池信息、字符串常量和数字常量等)所...
2021-02-05 14:25:01 827 1
原创 JVM 类加载器 双亲委派
JVM自带的三个加载器根类加载器:BootstrapClassLoader由C++编写,没有父加载器,加载JVM核心类库(jdk/jre/lib目录下),没有继承java.lang.ClassLoader扩展类加载器:ExtensionClassLoader由Java实现,父加载器为Bootstrap,加载扩展类库(jdk/jre/lib/ext目录下),继承java.lang.ClassLoader系统类(应用类)加载器:AppClassLoader由Java实现,父加载器为Ext...
2021-02-05 14:21:34 161
原创 【常用设计模式】观察者-模板-策略-责任链-适配器-代理-装饰器-工厂 等13个最常用设计模式
目录1-行为型-6个1-观察者模式2-模板模式3-策略模式4-责任链模式5-状态模式6-命令模式2-结构型-5个7-适配器模式8-代理模式9-装饰器模式10-组合模式11-外观模式3-创建型-2个12-单例模式13-工厂模式前言1. 设计模式分类创建型模式:用来构建对象以便能从实现系统解耦结构型模式:用不同的对象组成大规模的对象结构行...
2019-02-28 11:58:05 479
原创 【Redis】使用教程
1. 安装&amp;amp;amp;配置1.1 安装1. cd /usr/local/software2. wget http://download.redis.io/releases/redis-5.0.3.tar.gz3. tar -xzf redis-5.0.3.tar.gz -C /usr/local/4. ln -s redis-5.0.3 redis5. cd redis6. make ...
2019-02-27 18:05:39 271
原创 【docker】教程 常用命令 基础使用
1. 概念1.1 Docker镜像 - Docker Images容器运行时的只读模板,操作系统 + 软件运行环境 + 用户程序class User { private String username; private Integer age;}1.2 Docker 容器 - Docker Containers容器包含了某个应用运行所需要的全部环境User user ...
2019-02-25 17:59:34 1808
原创 【supervisor】使用教程 配置 作用 服务自动重启
1. 安装 启动 supervisor1.1 安装yum -y install supervisor1.2 生成配置文件并修改配置文件echo_supervisord_conf &amp;gt; /etc/supervisord.conf1.3 创建文件夹,用于放启动程序的配置文件mkdir /etc/supervisor1.4 修改配置文件vim /etc/supervisord....
2019-02-19 16:35:21 484
原创 JDK8 新特性
1.Lambda1.1 Lambda-开启线程new Thread(() -> { // TODO 线程代码}).start();1.2 Lambda-匿名类// 使用 java 7 排序private void sortUsingJava7(List<String> names){ Collections.sort(names, new Comp...
2019-02-10 09:37:47 600
原创 【iTerm】教程 常用命令
• 常用快捷键 a. command + T:创建新窗口 b. command + D:垂直切分 c. command + shift + D:水平切分 d. command + option + E:全局查找窗口 e. 按住command: i. 选中字符串,可以拖拽 ii. 点击URL,调用默认浏览器打开 iii. 点击文件,用程序打开 iv. 同时安装option,...
2019-01-14 09:01:31 1074
原创 Docker 命令
好久没有更新了,生锈了1. 基本操作启动一次性容器:docker run centos echo 'hello world'启动交互式容器:docker run -it centos /bin/bash,exit 退出并停止容器启动守护式容器:docker run -it centos /bin/bash,Ctrl+P/Ctrl+Q 退出并后台运行启动守护式容器:docker run -...
2019-01-12 21:27:10 249
原创 【Spring-Cloud】核心源码分析 高级篇
好几年没有更新博客了,满屋子都是灰尘1. Ribbon源码之负载均衡1.1 分析入口 @LoadBalancedpublic class RibbonLoadBalancerClient implements LoadBalancerClient { public &amp;amp;amp;lt;T&amp;amp;amp;gt; T execute(String serviceId, LoadBalancerRequest&amp;amp;amp;l
2019-01-12 21:01:47 1589
原创 【Spring-Cloud】使用教程 基础篇 Eureka Ribbon Feign Hystrix Zuul Dashboard Sleuth Zipkin Config Bus
虽然用了好久,还是把有道云上的笔记1. Eureka-Server1.1 添加pom依赖&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;dependency&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;group
2019-01-11 09:22:39 352
原创 【Spring-Boot】源码 简解析 之 启动流程
断点源码只分析主要方法 源码版本:1.5.10package com.example.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationp...
2018-05-04 17:53:51 236
原创 【动态多数据源】spring boot mybatis
概述spring boot + mybatis 实现动态多数据源,本文讲解一写两读,更多的配置一样前提:需要做好mysql的主从同步功能 实现的动态数据源的代码,主要在包conf中 DataSourceConfigurer.java ====&amp;amp;amp;gt; 数据源配置类 DataSourceKey.java ====&amp;amp;amp;gt; 数据源key类 DynamicDataSourceAspect...
2018-05-04 16:44:39 278
原创 Java多线程之初阶
线程安全 ① 什么是线程安全? 当多个线程访问某一个类(对象或方法)时,这个类能表现出正确的行为,那么这个类(对象或方法)就是线程安全的 synchronized:就是给对象或方法加锁,而加锁的代码称为“互斥区”或“临界区” ② 示例总结: 当多个线程访问同一个加锁方法时,是以线程排队的形式访问(这个排队的顺序是CPU指定的,不是代码指定的) 当一个线...
2018-04-13 19:41:16 247
原创 JVM类加载 & Tomcat类加载
JVM类加载1.根类加载器:BootstrapClassLoader由C++编写,没有父加载器,加载JVM核心类库(jdk/jre/lib目录下),没有继承java.lang.ClassLoader2.扩展类加载器:ExtensionClassLoader由Java实现,父加载器为Bootstrap,加载扩展类库(jdk/jre/lib/ext目录下),继承java.lan...
2018-04-12 13:51:22 426
原创 【Linux】常用命令 之 vim编辑器
vim编辑器 模式:命令模式、编辑模式、低行命令模式命令模式 i、a、o:进入编辑模式 I、A:在改行的最前/最后插入 gg:跳到文件的首行 G:跳到文件的末行 dd:删除一行 2dd:删除2行 yy:复制一行 3yy:复制3行 p:粘贴 u:undo v:进入字符选择模式,选完后,y复制,p粘贴 ctrl+v:进入块选择模式,选完后,y复制,p粘贴 shift+...
2018-04-10 19:34:09 333
原创 【Linux】常用命令 之 网络&系统
网络操作查看ip cat /proc/net/arp:查看内网ipPID&amp;amp;端口 lsof -i:8080:查看端口被那个进程占用 netstat -nltp | grep 8080:查看端口监听情况 netstat -anp|grep 8080:查看端口被那个进程占用 netstat -nltp:查看网络进程的端口监听情况 jps:查看java端口 kill...
2018-04-10 13:03:33 267
原创 【Linux】常用命令 之 目录&文件
目录操作查看 ll:查看当前目录下的内容 ll -a:查看当前目录下的内容,包括隐藏 ll -h:查看当前目录内容,并显示对应文件的大小 cd/cd ~:切换到当前用户目录下 alias ll=’ls -l’:alias 重命名命令,然后将次命令加入到创建 mkdir aaa:创建aaa文件夹 mkdir -p aaa/bbb:递归创建目录删除 rm -rf ...
2018-04-09 08:52:44 475
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人