自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黄金时代的架构之路

对代码不满足,是任何真正有天才的程序员的根本特征

  • 博客(108)
  • 资源 (4)
  • 收藏
  • 关注

原创 【Redis 神秘大陆】009 案例实践&进阶

- **适用场景**:缓存其他系统的数据、缓存空间有限、低频热点缓存等场景。- **思路**:采用懒加载方式,即首先读取缓存,若不命中则查询数据,然后异步写入缓存并设置过期时间,下次读取将命中缓存。- **注意事项**:- 针对热点数据,可在应用系统上设置较短的缓存时间。- 数据可能存在一段时间的不一致情况,需要根据场景来决定如何设置过期时间。- **应用场景示例**:库存数据

2024-04-16 14:21:23 738

原创 【Redis 神秘大陆】008 常见Java客户端

连接池里面放置的是空闲连接,如果被使用 (borrow)掉,连接池就会少一个连接,连接使用完后进行放回 (return),连接池会增加一个可用连接。如果没有可用连接,便会新建连接。

2024-04-16 14:14:14 345

原创 【Redis 神秘大陆】007 安全&监控

Redis 的关键监控获取方式

2024-04-16 14:11:54 203

原创 【Redis 神秘大陆】006 灾备方案

volatile-lru(默认):从已设置过期时间(Expire)的Key中,删除最近最少使用的Key(LRU算法),且不会考虑Key是否已经过期。volatile-lfu:从已设置过期时间(Expire)的Key中,删除最不常用的Key(LFU算法)。volatile-random:从已设置过期时间(Expire)的Key中,随机删除一些Key。volatile-ttl:从已设置过期时间(Expire)的Key中,根据存活时间(TTL)从小到大排序进行删除。

2024-04-16 14:10:43 650

原创 【Redis 神秘大陆】005 常见性能优化方式

将商品数据按照不同维度进行拆分,并对每个维度进行缓存。对于商品变更,只更新变更的部分数据,而不是整个商品数据。对于频繁变更的维度,如上下架状态,通过维度化缓存可以减少服务压力。

2024-04-16 14:09:45 346

原创 【Redis 神秘大陆】004 高可用集群

分布式系统本质是通过低廉的硬件攒在一起以获得更好的吞吐量、性能以及可用性等。一台设备坏了,可以通过负载均衡和路由到 其他设备上。分布式系统设计有核心四大块:心跳检测: 如何检测你还活着?【注册中心】高可用设计: 如何保证高可用容错性: 服务容错如何处理、怎么做重试负载均衡: 负载均衡策略怎么处理。

2024-04-16 14:08:05 699

原创 【Redis 神秘大陆】003 数据类型&使用场景

通过 Redis 实现对特定操作的限速,如限制用户获取验证码的频率、限制 IP 地址的访问频率等。示例代码如下:

2024-04-16 14:04:43 596

原创 【Redis 神秘大陆】002 简介&特性

为什么单线程这么快1. **纯内存访问:** Redis将所有数据存储在内存中,内存的访问速度非常快,大约在100纳秒左右。这使得Redis能够达到每秒万级别的访问速度。

2024-04-16 14:03:13 493

原创 【Redis 神秘大陆】001 背景&基础理论

缓存:存储在计算机上的一个原始数据复制集,以便于访问——维基百科

2024-04-16 13:58:30 584

原创 rsync - inflate returned -3 (0 bytes) 报错

传输的命令如下nohup rsync -vzrtopgP rsync_backup@xxx::mysql-data /home/xxx/data/mysqldata --password-file=/etc/rsync.password --inplace 2>&1 >/home/xx/data/xx.transferData.log &今天使用rsync来传输数据传输了一般,就发现了这个报错inflate returned -3 (0 bytes)rsync

2021-03-17 12:31:31 636

原创 Mybatis-应用分析和最佳实践2

Mybatis应用分析和最佳实践​ 以下是一些 MyBatis 的高级用法或者扩展方式,帮助我们更好地使用 MyBatis。为什么要动态SQL​ 避免因为前端传入的查询参数不同,所以导致写很多的if else,还需要非常注意SQL语句中的and,空格,逗号和转义的单引号,拼接和调试sql非常耗时。​ Mybatis的动态SQL就解决了这个问题,其是基于OGNL表达式的。动态标签if<select id="findActiveBlogWithTitleLike&

2021-01-17 10:48:36 358

原创 Mybatis-应用分析和最佳实践-核心配置

为什么要用Mybatis代码重复结果集处理太复杂连接管理常见的工具DbUtils数据源的支持QueryRunner直接使用QueryRunner来查询提供了Resulthandler通过反射来做属性的映射JDBCTemplate提供了数据源的支持RowMapper来使用结果的处理RowMapper提供泛型,避免每次创建对应的实现类mapRow上述没有解决的问题直接把SQL写在了代码里面条件只能按照顺序传入没有实现实体类到数据库记录的映射

2021-01-16 16:22:33 241

原创 设计模式-命令模式

命令模式定义命令封装每一个命令是一个操作解耦请求方和接收方请求方只需要请求执行命令,不需要关心命令是怎么被接受,操作和是否被执行行为型模式生活中的场景遥控器餐厅点菜把需求和执行解耦适用场景现实语义中具备命令的操作shell命令命令菜单调用者和请求的接受者需要解耦调用者不需要关心具体命令的执行细节,只需要把对应的命令传递出去就行了需要抽象出等待执行的行为撤销恢复等操作需要支持命令宏命令组合操作shell 中的help命令通用类图

2021-01-09 00:44:48 144

原创 设计模式-迭代器模式

迭代器模式定义迭代器模式又称为游标模式它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节本质什么是容器,能够容纳对象的所有类型的都可以称为容器Collection集合类型Set类型等抽离集合对象迭代行为到迭代器中,提供一致的访问接口组合模式也是为了提供一致的访问接口,关心整体和个体一致属于行为型模式生活中的例子快递迭代分发刷脸刷票进展适用场景访问一个集合对象的内容不需要暴露他的内部表示为遍历不同的集合结构提供统一的方式通用结构

2021-01-09 00:31:05 100

原创 设计模式-责任链模式

责任链模式定义把链中每一个节点看做一个对象,每个节点处理的请求都不一样。内部自动维护一个下一个节点对象。当一个请求从链的请求首段发出的时候,会沿着链的路径一次传递给每一个节点对象,直到某个对象就结束。行为模式生活中的场景生活中的审批流程部门的申请适用场景多个对象可以处理同一个请求,单具体由那个对象处理则在运动时动态决定在不明白知道你个接受者的情况下,向多个对象中的一个提交一个请求可以动态指定一组对象处理请求通用类图可以看到责任链主要包含两种角色:Handler抽象

2021-01-07 20:44:05 145

原创 设计模式-策略模式

策略模式​ 能够帮助我们消除程序中大量的if else 和switch语句​ 能够消除程序中大量冗余代码和多重条件转移语句​ 是指定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化不会影响到使用算法的用户。通用类图Context上下文角色用来操作策略的上下文环境,屏蔽高层模块对策略,算法的直接访问,封装可能存在的变化抽象策略角色Strategy规定策略或者算法的行为具体策略角色ConcreteStrategy具体的策略或者算法实现

2021-01-07 19:56:43 112

原创 设计模式-模板模式

模板模式简介​ 参考文档:https://en.wikipedia.org/wiki/Template_method_pattern​ 通常叫模板方法模式定义一个算法的骨架,并允许子类为一个或者多个步骤提供实现。​ 能够使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。​ 属于行为性设计模式通用的类图public abstract class AbstractClass { protected void step1() { Syst

2021-01-07 17:37:59 107

原创 设计模式-委派模式

委派模式​ 精简程序逻辑,便于阅读​ 其基本作用是负责任务的调度和分配任务,和代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,但是委派模式注重结果。​ 是一种行为型模式。​ 一般Delegate,Dispatcher结尾的都是委派不属于GOF23种设计模式通用类图Delegate 委派角色负载在各个具体角色实例之间做出决策,并且判断和调用具体的方法Deletgate委派类,委派类收到任务后,交给对应的集体干活的人事干活pub

2021-01-07 16:17:11 150

原创 设计模式-组合模式

组合模式定义也称为整体部分模式也叫合成模式宗旨是通过单个对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示作用让客户端对单个对象和组合对象保持一致的方式处理属于结构型模式组合和聚合的区别如果是心在一起就是一个团队,人在一起只是团伙头和身体就是组合学生和老师就是聚合没有相互的生命周期生活中的案例公司组织架构电脑的文件管理适用场景如果我们希望客户端代码以相同方式处理简单和复杂元素,可以使用该模式对象层次具备整体和部分,呈树形结构树

2021-01-06 19:59:46 276 4

原创 设计模式-享元模式

享元模式把现有的资源重复利用起来Java中常见的OOm有以下两种内存泄漏无意识的代码缺陷,导致内存泄漏,JVM不能获得连续的内存空 间。对象太多代码写得很烂,产生的对象太多,内存被耗尽。现没有内存泄漏,那只有一种原因代码太差把内存耗尽。有的对象我们用完可以复用的,不用等到oom定义又称为轻量级模式,对象池的一种实现类似于线程池,线程池可以避免不停地创建和销毁多个对象,消耗性能提供了减少对象数量而改善应用所需的对象结构的方式共享细粒度对象,将多个对同一对象的访问

2021-01-06 11:51:36 89

原创 设计模式-适配器模式

适配器模式智者千虑必有一失,愚者千虑必有一得在我们做设计的时候总是会出现一些意外,适配器模式就是帮我们来弥补这些意外的定义变压模式,也叫包装模式,但是包装模式可不止一个。装饰者也是。功能是将 一个类的接口编程客户端所期望的另一个接口,从而使原本接口不匹配而无法在一起工作的两个类能够一起工作属于结构型设计模式例子Switch的港版电压在国内是不适用的,需要两脚转三角插头有点亡羊补牢的感觉通用写法类适配器Target目标角色​ 该角色定义把其他类转换为何种接口,也就是

2021-01-06 11:05:42 140

原创 设计模式-桥接模式

桥接模式定义抽象部分和具体实现部分分离让他们可以独立的变化通过组合的方式建立两个类之间的关系而不是继承结构型模式生活中的场景桥连接了两个维度的东西网络连接桥接模式虚拟网卡和物理网卡连在一起通用的写法里面有几个关键角色Abstraction——抽象化角色​ 它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类。Implementor——实现化角色它是接口或者抽象类,定义角色必需的行为和属性。RefinedAbstraction

2021-01-06 09:48:19 163

原创 设计模式-装饰器模式

装饰器模式定义装饰器模式也叫包装模式在不改变原有对象的基础上,把功能附加到对象上,提供了比继承更有弹性的替代方案能够扩展原有对象的功能属于结构型模式生活中的例子买煎饼我们煎饼可以加鸡蛋,加香肠蛋糕可以加豆沙加各种各样的东西通用结构一般都是在构造方法当中来传入对应需要包装的对象Component是一个接口或者是抽象类,就是定义我们最核心的对象,也就是最原始的对象。ConcreteComponent 具体构件ConcreteComponent是最核心、

2021-01-04 17:53:47 179

原创 设计模式-门面模式

门面模式参考资料图解设计模式大话设计模式设计模式之禅github我见过最好的设计模式http://c.biancheng.net/view/1326.html定义也称为外观模式外观模式是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。让子系统更加容易使用,属于结构型模式例子App订单接口后台提供一个聚合接口在内部分别调用了订单,物流,用户系统能够节省前端的请求适用场景子系统越来越复杂,增加门面模式来提供简单接口构建多层系统结构,利用门

2021-01-04 17:52:56 154

原创 设计模式-代理模式

代理模式参考资料图解设计模式大话设计模式设计模式之禅github我见过最好的设计模式http://c.biancheng.net/view/1326.html定义代理模式为其他对象提供一种代理,用来控制对于这个对象的访问在客户类和目标类之间起到中介作用结构型设计模式类图生活中的代理模式房产中介快递小哥黄牛党使用场景保护目标对象增强目标对象的功能案例静态代理显示声明被代理的对象public class ZhangLaosan implements I

2021-01-04 10:33:23 185

原创 设计模式-建造者模式

建造者模式也叫生成器模式,他是一个创建型模式通用类图Product产品类​ 通常是实现了模板方法模式,也就是有模板方法和基本方法.public class Product { public void doSomething(){ //独立业务处理 }}Builder抽象建造者​ 规范产品的组建,一般是由子类实现。例子中的CarBuilder就属于 抽象建造者。public abstract class Builder { //设置产品的不同部分,

2021-01-03 18:08:14 93

原创 设计模式-原型模式

原型模式​ 原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,并且通过拷贝这些原型创建新的对象​ 调用者不需要知道任何创建细节,不调用构造函数​ 其属于一种创建型模式通用类图优点性能好是在内存二进制流的拷贝,比直接new一个对象性能好,而且循环体内产生大量对象时,可以更好地提现优点逃避构造函数的约束直接在内存中拷贝构造函数是不会执行的适用场景类初始化消耗资源较多new 产生的一个对象需要非常繁琐的过程(数据准备、访问权限等)省略了自己去

2021-01-03 17:47:45 91

原创 设计模式-单例模式

单例模式优点由于单例模式在内存中只有一个实例,减少了内存开支,特别是 一个对象需要频繁地创建、销毁时,而且创建或销毁时性能又无法优 化,单例模式的优势就非常明显。由于单例模式只生成一个实例,所以减少了系统的性能开销,当 一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象 时,则可以通过在应用启动时直接产生一个单例对象,然后用永久驻留 内存的方式来解决(在Java EE中采用单例模式时需要注意JVM垃圾回 收机制)单例模式可以避免对资源的多重占用,例如一个写文件动作,由 于只有一个实例存

2020-12-31 17:04:33 389

原创 设计模式-工厂模式

参考资料图解设计模式大话设计模式设计模式之禅github我见过最好的设计模式设计原则回顾设计原则解释开闭原则对扩展开放,对修改关闭依赖倒置原则通过抽象让哥哥模块互不影响,松耦合,面向接口编程单一职责原则一个接口,类,方法只做一件事接口隔离原则保证纯洁性,不应该依赖于自己不需要的接口,有时候没办法可以通过适配器来解决迪米特法则最少知道原则,一个类对其所依赖的类知道的越少越好里氏替换原则子类可以扩展父类的功能但是不能改变父类原有的功能合

2020-12-30 19:46:26 239 3

原创 设计模式-七大软件设计原则

设计模式参考资料图解设计模式大话设计模式设计模式之禅github我见过最好的设计模式http://c.biancheng.net/view/1326.html基本原则开闭原则在设计的时候尽可能的考虑,需求的变化,新需求来了尽可能少的改动代码,拥抱变化定义:指的是软件中一个实体,如类、模块和函数应该对扩展开放,对修改关闭。面向抽象编程开闭是对扩展和修改的约束强调:用抽象构建框架,用实现扩展细节。优点:提高软件系统的可复用性及可维护性面向对象最基础的设计原则指导我们构建

2020-12-30 16:14:30 182

翻译 Quartz使用大全 (翻译自官方文档)

http://www.quartz-scheduler.org/documentation/quartz-2.2.2/tutorials/tutorial-lesson-01.html1.使用QuartzQuartz Scheduler一旦关闭,无法重启需要重新实例化提供了暂停状态SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();Scheduler sched = schedFact.getS

2020-12-07 15:37:44 1579

原创 Docker RabbitMQ日志映射

RabbitMQ Docker 日志映射的坑最近在做公司项目使用docker 安装rabbitMQ的时候需要映射日志路径出来,查阅文档文档可以直接配置环境变量RABBITMQ_LOG_BASE来指定日志文件路径RABBITMQ_LOGS来指定到精准的日志文件但是实际上我在docker上面配置RABBITMQ_LOGS的时候日志还是没有映射到对应的目录,查阅对应的rabbitMQ的文档github发现他说如果RABBITMQ_LOGS变量是-那么会输出到标准输出上,而不会输出到文件中所以最

2020-11-24 21:43:08 2088

转载 ThreadLocal的坑--ThreadLocal跨线程传递问题

ThreadLocal的坑–ThreadLocal跨线程传递问题转载自: https://www.cnblogs.com/duanxz/p/5444805.html父子线程间的传递问题​ ThreadLocal的子类InheritableThreadLocal其实已经帮我们处理好了,通过这个组件可以实现父子线程之间的数据传递,在子线程中能够父线程中的ThreadLocal本地变量。​ 我们发现InheritableThreadLocal中createMap,以及getMap方法处理的对象不一样

2020-10-29 13:57:21 736

原创 Docker 自定义配置运行redis自动退出

检查配置文件是否设置了daemonize yes,如果是,就要改为daemonize no因为该选项让redis成为在后台运行的守护进程而docker容器必须要有一个前台进程才能留存否则容器会自动退出

2020-10-12 15:29:17 1977

原创 Kafka(1)-初识Kafka

消息中间件的背景介绍消息中间件能够解决的问题异步​ 很多业务场景我们需要把同步的任务变成异步的任务。​ 拿一个电商平台的注册功能来简单分析下,用 户注册这一个服务,不单单只是insert一条数据到数据库里面就完事了,还需要发送激活邮件、发送新人红包或者积分、发送营销短信等一系列操作。假如说这里面的每一个操作,都需要消耗1s,那么整个注册过程就需要耗时4s才能响应给用户。​ 那么我们需要把这些操作拆出来,优化变成异步处理的逻辑。我们可以使用阻塞队列+线程池来实现生产者消费者模式。但是这种方

2020-09-10 11:53:25 322

原创 Dubbo系列-SPI原理

Dubbo SPIDubboSPI贯穿在整个Dubbo的代码中,所以很有必要详细了解SPI的原理。关于Spring SPI的使用SpringFactoriesLoaderorg.springframework.core.io.support.SpringFactoriesLoader#loadSpringFactoriespublic static final String FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories";pr

2020-07-01 19:18:02 213

原创 git The requested URL returned error: 403 解决 (git 操作的时候提示没有权限)

git 操作的时候提示没有权限问题最近使用git pull更新代码的时候没有权限[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hdDC8sId-1589965594251)(https://zzy0-0.oss-cn-shanghai.aliyuncs.com/blog/2020-05-20-084521.png)]报错内容如下remote: You do not have permission to pull the repositoryfatal: unab

2020-05-20 17:08:47 8527 2

原创 Spring入门到放弃篇(1)- Spring国际化

Java原生国际化文档地址java官方文档参考官方文档自定义国际化案例public class LocaleDemo { public static void main(String[] args) { System.out.println(Locale.getDefault()); }}获取本地方言配置本地方言通过启动参数-D命令配置但是这种方式只适合本机...

2020-04-09 20:39:50 1136

原创 Invalid bound statement (not found)

mybatis-plus Invalid bound statement (not found)最近把maven项目变成了多模块的项目模块如下db类的都在dao层下发现报错信息Invalid bound statement (not found),而且出现注入接口的时候@Componentpublic class ModelConverterReceiver { @Autowired...

2020-03-20 11:33:26 571

原创 远程通信协议

远程通信协议​ 那么在分布式架构中,有一个很重要的环节,就是分布式网络中的计算机节点彼此之间需要通信。​ 我们每天都在用浏览器访问各种网站,作为用户来说,只需要需要输入一个网址并且正确跳转就行。但是作为程序员,看到的可能就是这个响应背后的整体流程。​ 所以我想通过一个 http请求的整个流程来进行讲解通信的知识负责域名解析的 DNS 服务​ 首先,用户访问一个域名,会经过 DNS 解析D...

2020-02-14 15:35:21 414

oracle驱动

oracle

2017-07-29

W3School离线手册(2015.07.17).chm

W3School离线手册(2015.07.17).chm

2017-06-29

J2EE(中文帮助文档)(CHM版).chm

J2EE(中文帮助文档)(CHM版).chm

2017-06-29

模拟交通灯java

java 模拟红绿灯,行人过马路按钮式红绿灯系统

2017-06-08

空空如也

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

TA关注的人

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