day by day
你是我的小毛驴
这个作者很懒,什么都没留下…
展开
-
【2023-05-10】设计模式(代理,装饰器)
代理模式就是你想要访问一个对象,可以通过另一个代理对象来访问这个对象,同时代理对象可以对这个对象进行一个增强操作。代理模式通常分为静态代理模式,动态代理模式,其中动态代理模式又分为jdk动态代理模式和cglib动态代理模式。由于静态代理缺点太明显,所以有了动态代理,动态代理可以不和目标对象实现同一接口或者继承同一个类。静态代理实现同一个接口,将目标对象传递到代理对象里面,代理对象对具体方法进行增强处理。根据名称可知,具体的代理对象是由jdk实现的,在jvm中动态生成代理对象。3、cglib动态代理。原创 2023-05-10 21:40:12 · 570 阅读 · 0 评论 -
【2023-05-09】 设计模式(单例,工厂)
现在有手机和平板,可以使用上述的普通工厂来创建,但现在给手机和平板分了牌子,有华为手机和苹果手机,华为平板和苹果平板,这样一个产品族的概念(分为手机和平板两个产品族,手机产品族里面包含了华为手机和苹果手机两个产品),那么就可以使用抽象工厂模式。每次新增一个FactoryTest时,只需要新增一个对应的CommonFactory工厂实现类就行,对于之前的工厂和对象不影响。工厂模式主要是为了屏蔽创建对象的过程,主要分为三类(静态工厂,普通工厂,抽象工厂)顾名思义,就是整个系统对外提供的实例有且只有一个。原创 2023-05-09 22:34:57 · 648 阅读 · 0 评论 -
【2023-05-01】redis集群(主从、哨兵、cluster集群)
作用:1、监控master节点,slave节点和其他Sentinel节点的运行情况(通过ping命令),2、当master节点宕机,三台Sentinel会选举一个slave节点来充当新的master节点。每个节点上都会维护一部分槽,也知道所有的槽对应的节点,请求的数据不在当前节点时,会根据记录的槽对应的节点上去请求数据。:采用的是一主多从模式,一个master节点可以用有多个slave节点,一个slave节点可以有多个slave节点。 2、master宕机可以自动选举新的,自动切换,增加了可用性。原创 2023-05-01 21:00:00 · 1083 阅读 · 0 评论 -
【2023-04-30】redis-缓存雪崩、击穿、穿透,布隆过滤器
现在有key1、key2和key3三个,假如key1在hash函数上的执行结果为1,3,6,key2在hash函数上的执行结果为2,4,5,key3在hash函数上的执行结果为7,9,10,现在要查询key4,三个hash函数的执行结果为1,5,9,而1,5,9分别是key1,key2,key3在三个hash函数执行时标记为的1,而不是key4,所以说是不一定存在。:redis和数据库都不存在的数据,大量请求访问此类数据,最终也会请求到数据库,数据库压力激增,导致数据库操作长时间阻塞,影响其他服务。原创 2023-04-30 22:49:27 · 955 阅读 · 0 评论 -
【2023-04-26】排序算法:快速排序,选择排序,插入排序,希尔排序,冒泡排序,归并排序
常见的6个排序算法及代码实现:快速排序,选择排序,插入排序,希尔排序,冒泡排序,归并排序。原创 2023-04-26 20:38:01 · 116 阅读 · 0 评论 -
【2023-04-25】Spring Bean 的生命周期
3.如果实现了ApplicationContextAware接口,就调用实现的setApplicationContext方法。 2.如果实现了BeanFactoryAware接口,就调用实现的setBeanFactory方法。 1.如果实现了BeanNameAware接口,就调用实现的setBeanName方法。如果Bean实现了DisposableBean接口,就调用实现的destory方法。如果配置了 destroy-method 属性,就会调用他的销毁方法。5) 处理init-method。原创 2023-04-25 22:26:13 · 417 阅读 · 0 评论 -
【2023-04-24】线、进程切换,redis底层数据结构,DNS解析
由于每个进程都有自己的虚拟地址空间,那么显然每个进程都有自己的页表,那么当进程切换后页表也要进行切换,页表切换后TLB就失效了,cache失效导致命中率降低,那么虚拟地址转换为物理地址就会变慢,表现出来的就是程序运行会变慢,而线程切换不会导致TLB失效,因为线程无需切换地址空间,因此我们通常说线程切换比进程切换快,原因就在这里。而进程则不同,两个不同进程位于不同的屋檐下,即进程位于不同的虚拟地址空间,因此进程切换涉及到虚拟地址空间的切换,这也是为什么进程切换要比线程切换慢的原因。原创 2023-04-24 20:47:00 · 383 阅读 · 0 评论 -
【2023-04-23】 Java BIO 和 NIO
BIO:服务器实现模式为一个连接一个线程,即用户端有连接请求时服务器就需要启动一个线程进行处理,如果这个连接不做任何事情就会造成不必要的线程开销。NIO:服务器实现模式为一个线程处理多个请求连接,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询连接有io请求就进行处理。多个客户端连接到一个服务端。原创 2023-04-23 21:15:41 · 121 阅读 · 0 评论 -
【2023-04-22】 io操作和java io
1)select:进行io操作时会维护一个fdset文件描述符,如果有可写,可读,或异常的状态,会更新到这个fdset,select会阻塞住监视这个fdset,等有数据、可读、可写、出异常或超时就会返回,返回后会遍历整个fdset,找到就绪的fd,进行io操作。:用户在做io请求时,不管有没有完成都立即返回,如果返回结果告知数据未准备好,那么可以立即再次请求,直到io完成。:服务器实现模式为一个线程处理多个请求连接,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询连接有io请求就进行处理。原创 2023-04-22 16:41:05 · 404 阅读 · 0 评论