自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yaonga的专栏

顾枝:固执,故之,洞察旁人也

  • 博客(97)
  • 资源 (2)
  • 收藏
  • 关注

原创 Ribbon源码分析

Ribbon源码分析1 环境准备1.1 服务生产者集群1.2 服务消费者2 @LoadBalanced源码负载核心源码解析支持负载均衡的restTemplate何时注入?至此,添加了注解LoadBalanced的restTemplate被添加了一个LoadBalancerIntercepter拦截器,之后重点放在LoadBalancerIntercepter的intercept方法上。如何获取均衡器对象?从clientFactory中获取负载均衡器对象,那clien

2022-05-27 09:58:36 135

原创 Nacos源码分析

Nacos源码分析0 读源码0.1 读什么读目的:该框架解决了什么问题?比同类框架相比优劣势是什么?读注释:类、函数和目的、核心逻辑、核心参数说明读思想:设计模式六大原则、高内聚低耦合、优化思想读原理:核心原理和步骤读方案:设计方案0.2 读误区选择难度大、复杂的源码没有规划、毫无目的的源码直接看源码解析,缺乏先自己思考再对照源码0.3 读思想先会使用demo由易入难先整体后局部:先看架构、先看项目结构、先看函数列表从设计者的角度学源码:先猜想后

2022-05-27 09:54:05 500

原创 Eureka源码分析

Eureka源码分析1 Eureka Server启动过程springboot应⽤启动时会加载EurekaServerAutoConfiguration⾃动配置类,先看头配置,如何注入Marker对象,在启动类中要有EnableEurekaServer注解接下来关注核心配置类EurekaServerAutoConfifiguration在 com.netflflix.eureka.cluster.PeerEurekaNodes#start⽅法中,那么,在什么时间点调用PeerEu

2022-05-27 09:48:59 135

原创 ZooKeeper基本理论

文章目录前言一、Zookeeper是什么?二、zk选举理论:paxos算法描述三、Leader选举过程前言一、Zookeeper是什么?zk是一个开源的分布式应用程序协调服务器,为分布式系统一致性服务。其一致性通过基于paxos算法(就某项决议达成一致)实现的zab协议完成的。主要功能有:配置维护、域名管理、分布式同步、集群管理。二、zk选举理论:paxos算法描述paxos算法执行过程分为两个阶段:准备阶段prepare与接受阶段。A、prepare 阶段提案者(Proposer)准备

2021-07-08 09:51:24 161

原创 Netty实现RPC

Netty实现RPC1.服务接口定义public interface CityService{ String getCityName();}2.服务提供者2.1服务接口实现public class CityServiceImpl implements CityService{ @Override public String getCityName() { return "厦门"; }}2.2服务netty server实现pu

2021-05-18 14:20:21 92

原创 Aop原理解析

Aop原理解析准备工作定义aop配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"

2021-03-30 17:20:19 158

原创 Tomcat8源码解析

Tomcat8源码解析系统架构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9lGjgUIJ-1608865091659)(E:\soft\tomcat8\doc\tomcat架构图.png)]一个请求到达tomcat之后,Connector接收该请求并将接收的请求封装为Request,交给Container处理并返回Response处理结果。环境准备下载tomcat8.5.61源码:源码地址https://mirror.bit.edu.cn/apache/to

2020-12-25 10:59:01 321 1

原创 java性能监控

java性能监控jdk命令行工具监控jps -l显示系统运行的所有java进程,以及对应进程的打包的包名或者主程序入口类名称jinfo + pid显示对应的java进程的系统配置和JVM参数jstat查看java进程的class加载信息,编译信息,gc信息gc统计:jstat -gc 6285 250 4 (每隔250ms打印4次)S0C、S1C、S0U、S1U...

2020-04-03 10:43:36 463

转载 AbstractQueuedSynchronizer源码分析

https://yq.aliyun.com/articles/601071

2019-11-29 15:28:50 79

转载 平衡查找树之红黑树

平衡查找树之红黑树转载

2019-10-24 14:48:15 107

原创 jdk8 lambda表达式

lambda表达式旨在简化语法。1 简单应用1.1 应用举例传统写法: Integer[] array = new Integer[]{1,2,3,4}; //匿名内部类方式 Arrays.sort(array, new Comparator<Integer>() { @Override public int compare(Integer o1,...

2019-10-24 14:24:13 154

原创 自定义spring

1.思路加载配置文件;通过反射实例化bean并初始化;2.实现定义applicationContext.xml配置文件:<?xml version="1.0" encoding="UTF-8" ?><beans> <bean id="user" class="com.yalong.User"> <property nam...

2019-10-12 11:07:40 138

原创 jvm字节码指令

1.示例package com.yalong.jvmclass;public class Test{ public static void main(String[] args) { int a = 1; int b = 2; int c = a + b; System.out.println(c); ...

2019-08-14 16:41:26 117

原创 MongoDB混合方式部署

1.概念MongoDB Cluster集群由3个角色组成:Router Server(路由服务器):接收client请求,从config server找到对应的在data server对应的分片、分块数据。使用mongos脚本命令启动Config Server(配置服务器):找到data server的数据映射。使用mongod脚本命令启动Data Server(数据服务器、多个副本集[具...

2019-08-05 14:47:38 308

原创 行为型模式-观察者模式

1.观察者模式观察者模式也可以叫发布-订阅模式,是一种事件监听机制,多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。2.示例/** * 抽象主题角色(被观察者/发布者) */public abstract class Subject{ private List<Observer> list = n...

2019-08-01 13:40:17 112

原创 行为型模式-策略模式

1.策略模式将每一个算法封装到具有共同接口的独立类中,客户端自行决定使用 哪一个策略。2.示例public interface Strategy{ public void calculate();}public class StrategyA implements Strategy{ @Override public void calculate() ...

2019-08-01 10:28:46 93

原创 行为型模式-模板模式

1.模板模式/** * 模板设计模式 * * 抽取一个抽象模板类,同时定义模板方法 对于模板方法的实现,在子类中去实现 * * */public abstract class GetTimeTemplate { // 固定流程方法 public long getTime() { // 获取起始时间 long t1 = System.currentTimeMilli...

2019-07-31 14:03:42 87

原创 结构型模式-代理模式

1.代理模式代理就是帮[目标对象]去完成它应该做,但是不想或者不擅长做的事情。代理模式分为静态代理和动态代理* 静态代理:就是编写一个代理类,去代理[目标对象],在程序运行之前静态代理的.class文件已经存在了,只能服务于指定接口而不能服务于其他接口* 动态代理:在运行期间,通过反射,对[目标对象]产生一个[代理对象]2.动态代理动态代理的实现方式分为两种,下面两种方式生成的代理类都...

2019-07-31 10:26:03 104

原创 结构型模式-外观(门面)模式

1.外观模式也叫门面角色,客户端可以调用这个角色的方法,此角色知晓子系统的所有功能和责任,将客户端的请求代理给适当的子系统对象;Subsystem是子系统角色,可以同时拥有一个或多个子系统,每一个子系统都不是一个单独的类,而是一个类的集合,子系统并不知道门面的存在。客户端不需要知道系统内部的复杂联系,整个系统只提供一个“接待员”即可。2.示例//外观类public class Facade...

2019-07-30 16:04:54 77

原创 结构型模式-装饰器模式

1.装饰器模式public interface Phone { void call();}public class IPhone implements Phone { @Override public void call() { System.out.println("使用苹果手机打电话"); }}/** * 装饰模式 * * 1:装饰类,需要去实现被装饰...

2019-07-30 09:51:13 105

原创 结构型模式-适配器模式

1.适配器模式把一个类的接口变换成客户端所期待的另一种接口,使得原本因接口不匹配而无法在一起工作的两个类可以一起工作2.示例//目标接口public interface ObjectTarget{ public void method();}//源接口,被适配的接口public interface ObjectAdaptee{ public void metho...

2019-07-29 10:03:32 105

原创 创建型模式-构建者模式

1.构建者模式灵活地构建多个成员变量的复杂对象。2.示例public class Human{ private String head; private String body; private String foot; public Human(Builder builder) { this.head = builder.head...

2019-07-25 11:57:37 100

原创 创建型模式-单例模式

1.单例模式 示例//单例特点:提供唯一实例,不能由别的对象来new,暴露提供实例的方法//恶汉式,线程安全public class EagerSingleton{ //(虚拟机采用了CAS配上失败重试的方式保证更新更新操作的原子性和TLAB两种方式来解决线程安全问题) private static EagerSingleton instance = new EagerSi...

2019-07-24 16:19:59 89

原创 创建型模式-抽象工厂模式

1.抽象工厂模式定义一个创建产品对象的工厂接口,将实际创建工厂推迟到子类中。简单工厂if…else if…else放在工厂类中,势必造成工厂类无限庞大,抽象工厂模式中,核心工厂类不再负责对象的创建,而是将具体的创建工作交给子类。2.示例//抽象工厂,不负责具体的创建对象工作public abstract class AbstractAnimalFactory{ public a...

2019-07-24 15:46:18 83

原创 创建型模式-简单工厂模式

1.简单工厂模式类的创建模式,又叫静态工厂模式,由一个工厂生产所需的某一类产品。2.使用简单工厂的好处为了解耦。类A多次引用类B后,假如有一个类C和类B实现了同一接口,系统需要把B类修改成C类,程序不得不重写A类代码。有一个办法就是写一个工厂IFactory,A与IFactory耦合,修改一下,让所有的类都实现C接口并且IFactory生产出C的实例就可以了。3.示例public i...

2019-07-24 14:51:28 72

原创 Redis

1.Redis简介是一种可用来更合适地处理高并发、高可用、高扩展的问题的Nosql非关系型数据库。Redis可用作内存数据库(保存登录用户数据)和缓存服务器(保存缓存常用数据:功能分类等)使用。2.Redis数据类型(value的类型)2.1String类型基本操作127.0.0.1:6379> set test 123OK127.0.0.1:6379> get test...

2019-07-22 14:06:48 66

转载 JVM运行原理详解

https://blog.csdn.net/Luomingkui1109/article/details/72820232

2019-07-08 17:00:05 71

原创 Mybatis源码

1.Mybatis初始化流程重点关注如果将xml配置文件解析成Configuration对象的过程: try { reader = Resources.getResourceAsReader("config.xml"); ssf = new SqlSessionFactoryBuilder().build(reader); ...

2019-06-27 10:29:07 90

原创 spring源码

1.总步骤2.Bean什么时候初始化,什么时候实例化?3.为什么要有BeanDefinition?4.依赖注入在什么时候?5.Aop如何实现?6.

2019-06-25 14:47:04 110

转载 HashMap

转载https://www.cnblogs.com/xrq730/p/5030920.html

2019-06-12 15:50:54 102

原创 CopyOnWriteArrayList

1.线程安全的list:CopyOnWriteArrayList,CopyOnWriteArrayList,顾名思义,Write的时候总是要Copy(将原来的array复制到新的array),也就是说对于CopyOnWriteArrayList,任何可变的操作(add、set、remove等等)都是通过ReentrantLock 控制并发并伴随复制这个动作。底层实现机制:public boo...

2019-06-12 14:22:37 1927

转载 LinkedList和ArrayList的对比

LinkedList和ArrayList的对比转载https://www.cnblogs.com/xrq730/p/5005347.html老生常谈的问题了,这里我尝试以自己的理解尽量说清楚这个问题,顺便在这里就把LinkedList的优缺点也给讲了。1、顺序插入速度ArrayList会比较快,因为ArrayList是基于数组实现的,数组是事先new好的,只要往指定位置塞一个数据就好了;Li...

2019-06-12 14:12:05 82

原创 ArrayList

@[TOC]ArrayList1.ArrayList特点数据允许为null,可重复,读取数据的顺序和存放数据的顺序一致,非线程安全2.ArrayList底层实现private transient Object[] elementData;private int size;底层由数组实现,由于增加元素可能需要进行扩容,调用到的是Arrays的copyOf方法,将元素组里面的内容复制到新的...

2019-06-12 11:39:29 75

原创 WebView配置大全

WebView配置大全mWebView.setDrawingCacheEnabled(true); WebChromeClient webChromeClient = new WebChromeClient(); mWebView.setWebChromeClient(webChromeClient); WebSettings webSetting...

2019-05-06 14:14:05 1589

转载 事务注解 @Transactional一般的话为什么都加在service层而不加在dao层

https://blog.csdn.net/panyangxu/article/details/77431873

2019-04-01 16:38:55 3694

原创 LinkedList添加元素链表操作过程

LinkedList添加元素链表操作过程1.LinkedList实现(基于jdk1.8)2.示例操作1.LinkedList实现(基于jdk1.8)底层通过操作双向链表实现数据存储,每个元素都包含有value值,指向前一节点和后一几点的引用; private static class Node&lt;E&gt; { E item; Node&lt;E&g...

2019-02-01 16:16:38 6195

转载 分布式Session的几种实现方式

https://blog.csdn.net/u014352080/article/details/51764311/

2019-01-29 10:12:16 273

原创 Web学习前置内容

Web学习前置内容1.web.xml中servelet、filter、listener、context-param加载顺序2.servelt的url-pattern匹配规则3.Servlet类三大域对象4.get/post的区别5.请求转发和重定向的区别1.web.xml中servelet、filter、listener、context-param加载顺序加载顺序:context-param ...

2019-01-29 10:08:33 323 1

原创 javaweb中Cookie和Session实现

Cookie和Session实现1.核心概念2.Cookie实现3.Session实现1.核心概念Cookie是存在于浏览器的文本,用于保存用户的登录密码等数据;Session存在于服务端,用于跟踪用户登录状态等;2.Cookie实现 Cookie[] cookies = request.getCookies(); if(cookies!=null&amp;&amp;cookies...

2019-01-28 17:20:10 292

原创 weex入门

weex入门1.简介2.环境搭建3.将weex集成到Android项目1.简介weex平台通过编译.we或者.vue文件,生成js脚本文件,使得各个平台可以引入weex包渲染js脚本,达到和React-Native混合开发的目的。2.环境搭建安装nodejs 具体如何安装nodejs请移步官网 https://nodejs.org/en/安装完成后检测是否安装成功命令终端:nod...

2019-01-11 17:18:10 250

韩顺平linux ppt

韩顺平完整授课ppt,详细介绍了linux的基础和小结。

2014-02-08

asp中文文档

asp学习的向导以及大概简述,能清楚地通过此文档了解asp各个功能及其如何制作网站的详细信息

2013-08-29

空空如也

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

TA关注的人

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