自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计模式 - 观察者observer&& Compasite

观察者observer:事件处理模型事件原对象:产生对象事件观察者:一堆observer事件监听者:事件类型归集:observer和event关联,source和event关联,但是observer和event无关联,所以在event中包含属性:1.普通事件属性2.事件源对象source事件源可以获取到之后,进行源方法类的调用观察者模式demopackage com.fengzi.tank.observer;import java.util.ArrayList;im.

2021-12-27 18:47:37 209

原创 设计模式 - 调停者&&门面&&责任链&&策略

责任链模式:调停者类似于MQ所有类都继承他,公共的全抽象出来门面facade模式,将TankFrame与数据分离工厂模式:生产策略模式:制定各种Collder策略责任链模式:将策略组合起来,形成不同的责任链模式GameModel :即使调停者,也是门面package com.fengzi.tank.tank;import com.fengzi.tank.abstractFactory.BaseTank;import com.fengzi.tank.abstract.

2021-12-27 18:46:07 324

原创 设计模式之-工厂

定义:任何可以产生对象的方法或类,都可以称之为工厂单利也是一种工厂灵活控制成产过程权限,修饰,日志…1.简单工厂可扩展性不好2.扩展产品方便父类抽象的东西尽量少,技巧;MoveableFactory : 产品的产生package com.fengzi.design.factory.factoryMethed;/** * @author: * @Date:2021/12/15/17:12 * @Description 交通工具的父类,管理所有交通工具 *

2021-12-27 18:44:23 172

原创 设计模式之-策略

Comparable接口Comparator接口做某件事情的不同执行方式接口中有一个方法,成为函数式接口,可以用Lamda表达式来写代码应用FireStrategy 接口策略类package com.fengzi.tank;/** * @author: * @Date:2021/12/15/15:39 * @Description 开火策略 */@FunctionalInterfacepublic interface FireStrategy { void fir.

2021-12-27 18:42:35 136

原创 设计模式之-单例模式

1.单利 sigleton1.各种mgr2.各种Factory使用:1.私有化对象2.私有化构造器3.公有化获取对象方法第一种:推荐使用,线程安全:类加载到内存之后,就实例化一个单利,JVM保证线程安全;缺点:类装载时候就会实例化package com.fengzi.design;/** * @author: * @Date:2021/12/15/14:00 * @Description */public class Mgr01 { private

2021-12-27 18:33:34 254

原创 redis常见面试汇总--赶紧收藏

Redis的应用场景总结一计数器可以对 String 进行自增自减运算,从而实现计数器功能。Redis 这种内存型数 据库的读写性能非常高,很适合存储频繁读写的计数量。缓存将热点数据放到内存中,设置内存的大使用量以及淘汰策略来保证缓存的命中率。会话缓存可以使用 Redis 来统一存储多台应用服务器的会话信息。当应用服务器不再存 储用户的会话信息,也就不再具有状态,一个用户可以请求任意一个应用服务 器,从而更容易实现高可用性以及可伸缩性。全页缓存(FPC)除基本的会话toke

2021-11-25 21:58:18 85

原创 10.Disruptor 单机高并发

Disruptor 定义: 1.Disruptor叫无锁、高并发、环形Buffer 2.直接覆盖旧数据,降低GC频率,用于生产者和消费者模式; 3.观察者模式:消费者观察队列里边有没有东西,有的话立马拿出来消费核心: 核心是一个环形的buffer等待策略: 原理:生产者多,消费者来不及消费,生产者生产的就会执行等待策略 等待策略有8种,常用的是BlockingWait消费者异常处理: 默认:disruptor.setDefaultExce

2021-07-30 00:56:14 163

原创 9.JHM

JHM1.maven项目,两个依赖: 1.jmh-core(jmh的核心) 2.jmh-generator-annprocess(注解处理包)2.idea安装JMH插件 file-setting-Plugins-JMH安装3.由于用到了注解,需要打开运行程序注解配置 compile - Annotation Prosessors - Enable Annotation Processing(勾选上)4.写单元测试类@Benchmark:测试必须@warmup(i

2021-07-30 00:55:34 179

原创 8.线程池

自定义线程池:/** * 自定义线程池 */public class UserThreadFactory implements ThreadFactory { private final String namePrefix; private final AtomicInteger nextId = new AtomicInteger(1); public UserThreadFactory(String whatFeatOfGroup) { namePre

2021-07-30 00:55:03 94

原创 7. 详解线程池:自定义线程池,JDK自带线程池,ForkJoin,源码解析等(一)

交替打印1a2v3c4d…synchronizedLockSupportReenrantLockCountDownLatch || 自旋CAS占用CUPBlockQueue使用put和tack方法,放满了阻塞,取完了阻塞Exchange输出谁先执行不一定!!!transferQueue把自己的交给对方打印ThreadPool 线程池三大类Executor:定义了线程的执行接口;ExecutorService:继

2021-07-29 01:43:12 171

原创 6. 线程池可用的各种高并发容器详解

容器使用collection:一个元素一个元素放入Map:一对一对放入,entry对象· Hashtable —> Concurrenthashmap自带锁,老版本,基本不用Vector/Hashtable(方法自带锁) ---> Hashmap ---> SynchionizedHashmap ---> ConcurrenthashmapConcurrenthashmap读取效率非常快· Vector —> Queue面试题:Queue和list的区别

2021-07-29 01:39:49 226

原创 5. 强软弱虚四种引用以及ThreadLocal的原理与源码

https://note.youdao.com/s/QxrycQAS

2021-07-29 01:30:27 120

原创 4.生产消费者,AQS源码,以及源码阅读方法论

面试题1:线程1,添加10个元素到容器中;线程2,实时监控个数,当个数到5个时候,线程2给出提示并结束;方法1:vilatile可见,但是可见的应该是list,而不是list的值,但是本题是值,有点奇怪public class WithOutVolatile01 { volatile List list = new ArrayList();//vilatile可见,但是可见额应该是list,而不是list的值,但是本题是值,有点奇怪 public void add(

2021-07-29 01:26:01 91

原创 3.各种JUC锁

各种锁:ReentrantLock锁、CountDownLatch 倒数、CyclicBarrier 循环栅栏、Phaser阶段、ReadWriteLock读写锁、LockSupport阻塞为什么Atomic比sync块?因为不加锁,而sync有可能要去操作系统申请重量级锁LongAdder为什么比Atomic效率高?因为LongAdder内部做了一个分段锁,每一个都网上递增,算出来结果加到一起ReentrantLock· 可重入锁 。和sync一样· Reentran

2021-07-29 01:21:34 110

原创 2.解析自旋锁CAS操作与volatile

volitilevolatile保证线程的可见性,同时防止指令的重排序,线程可见性在CPU级别使用缓存一致性来保证的,禁止指令重排序是CPU级别,是你禁止不了的,是内部运行的过程,提高效率的,但是在加了volatile之后,这个指令重排序就可以禁止了,严格来说,他是加了读屏障和写屏障,是CPU的一个源语。1.保证线程可见性:如果没有volatile修饰,那么线程不会终止.每个线程都是在自己的运行空间执行操作,何时将flag写会公共区域不可知,加上volatila修饰flag,保证可见性缓

2021-07-29 01:21:02 338

原创 1.线程状态,异常与synchronized锁

1.创建、启动线程的方式public class CreateMyThread { static class MyThread extends Thread{ @Override public void run() { System.out.println("Hello Mythread!"); } } static class MyRun implements Runnable{

2021-07-29 01:20:11 76

原创 3.基于Keepalived的LVS搭建

https://note.youdao.com/s/LAIcppFc

2021-07-29 01:17:54 63

原创 高并发负载均衡:LVS的DR,TUN,NAT模型推导

2.高并发负载均衡:LVS的DR,TUN,NAT模型推导https://note.youdao.com/s/p9IgCzI

2021-07-29 01:16:33 85

原创 1.高并发负载均衡:网络协议原理1

1.高并发负载均衡:网络协议原理1懒得拷贝了,放个链接。https://note.youdao.com/s/aQlnNvvb

2021-07-29 01:15:26 62

实时数仓.xmind

实时数仓.xmind

2022-06-30

空空如也

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

TA关注的人

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