- 博客(183)
- 资源 (3)
- 收藏
- 关注

原创 Arthur系统性详解微服务-完善中
第一篇:微服务的意义1、常见架构对比2、再次明确微服务的适合场景及优缺点第二篇:微服务的构建1、微服务建模关注点及方法论 1.1服务分类 1.2服务模型 1.3服务边界 1.4服务数据2、服务拆分和集成 2.1服务拆分及方法论 2.1.1服务拆分的维度、策略、依赖关系、数据及边界 2.1.2服务拆分的方法论 2.2...
2021-11-20 22:20:02
2078

原创 idea快捷键
自动创建测试类:https://blog.youkuaiyun.com/m0_37840000/article/details/81590784打开/关闭outline: https://blog.youkuaiyun.com/m0_37840000/article/details/81591229
2018-08-11 20:50:26
153
原创 基于Spring自带的调度机制实现动态任务管理
传递的数据不同存在调度实时性不同,所以,需要一个调度池能够实现配置动态调度,且避免引入第三方调度工具减少维护成本。维护当前运行的任务,确保任务集合的线程安全,在更新任务时,先取消旧任务再注册新任务。:使用ScheduledTaskRegistrar动态注册任务。在注册任务前校验cron表达式合法性,避免无效表达式导致调度失败。:通过定时任务定期检查数据库变化,动态更新调度。:维护一个内存中的任务集合,管理任务状态。避免默认单线程池导致任务阻塞。提供任务执行线程池。
2025-02-25 19:39:15
442
2
原创 Manticore Search(es轻量级替代)
这一切使 Manticore Search 成为一个现代,快速,轻量级和功能齐全的数据库,具有出色的全文搜索功能。它还提供了丰富的查询语法和功能,以满足不同的搜索需求。社交媒体应用: 对于需要实时搜索和过滤大量用户生成的内容的社交媒体应用程序,Manticore也是一个合适的选择。日志分析: 由于其实时索引更新和高性能特性,Manticore适用于处理大规模的日志数据,支持快速的搜索和分析。在线文档搜索: 对于需要在大量文档中进行快速搜索的应用,Manticore可以提供高效的解决方案。
2024-07-23 08:40:36
1489
原创 AQS共享模式之CyclicBarrier
假如公司团建,大家一起做大巴车,在大巴车出发之前,肯定是需要点名的,只有大家都到车上之后,才会发车,然后到了到了目的地之后,肯定是所有人都下车了,司机才能把车开走,这个过程中涉及了2次大家都就位之后,司机才能继续操作,可以证明CyclicBarrier可以循环使用计数器。:CyclicBarrier翻译为循环(屏障/栅栏),当一组线程到达一个屏障(同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会打开,所有被屏障拦截的线程才会继续工作。1、【某一个线程需要其余线程执行完之后再执行 (一个等多个)】,
2024-04-30 17:31:22
175
1
原创 中介者模式
SqlSession是mybatis中用于与数据库交互的核心对象,而SqlSessionFactory则是创建SqlSession对象的工厂类。通过将SqlSession对象的创建和管理职责交由SqlSessionFactory统一管理,不仅可以保证SqlSession对象的有效性和一致性,同时也可以避免重复创建和销毁SqlSession对象的开销,提高系统性能和稳定性。用一个中介对象封装一系列的对象交互,中介者使各对象不需要显式的相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
2024-02-28 19:28:38
533
原创 分布式锁注解SyncLock
通过springAOP和order注解在方法上切入解决事务和锁的优先级,提供统一开关锁接口loackManager集成不同分布式锁作为锁管理器,使用springEL表达式规范锁的命名和异常信息内容。五、代码实现:(目前暂实现concurrentHashMap和redis,如有需要自己拓展)锁的命名、异常信息、锁等待时间、快速失败、异常是否抛出。4、避免事务大于锁的优先级,造成。3、规范锁的命名和异常信息内容。1、简化手动开关锁的重复代码。2、集成不同分布式锁解决方案。四、常规分布式锁实现方案。
2024-01-20 10:42:57
673
2
原创 访问者模式
2、条件、分支语句的代替者,且这些分支依赖于该对象的状态。2、电商网站的商品分类可以看作是一个访问者对象,它可以访问不同类型的商品对象,例如数码产品、服装鞋帽、家居用品等。不同类型的商品对象可以有不同的属性和方法,例如价格、尺码、颜色、品牌等。1、医院的门诊部: 门诊部是一个类似于访问者的对象,它可以访问不同类型的病人对象,例如普通病人、急诊病人、儿科病人等。将算法与其所作用的对象分离开来,封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于其内部各个元素的新操作。
2023-12-20 09:27:23
658
原创 状态模式-
这使得你可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依赖于其他对象而独立变化。3、状态模式对"开闭原则"的支持并不太好,对于可以切换状态的状态模式,增加新的状态类需要修改那些负责状态转换的源代码,否则无法切换到新增状态,而且修改某个状态类的行为也需修改对应类的源代码。3、将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为。1、一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。2、交通信号灯,红、黄、绿三种状态。
2023-11-15 18:56:04
844
原创 备忘录模式
在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将这个对象恢复到原先保存的状态。3、发起人不需要管理和保存其内部状态的各个备份,所有状态信息都保存在备忘录中,并由管理者进行管理,这符合单一职责原则。除了创建它的发起人之外,其他对象都不能够访问这些状态信息。如果要保存的内部状态信息过多或者特别频繁,将会占用比较大的内存资源。2、希望在对象之外保存状态,且除了自己其他类对象无法访问状态保存具体内容。2、如果需要保存的状态过多时,每一次保存都会消耗很多内存。
2023-10-20 17:14:42
517
原创 命令模式-
3、命令模式的拓展性好,接受者会对操作进行基本的封装,命令类再对基本操作进行二次封装,增加新命令时不必从新写,代码的复用性好;指的是将一个请求封装成一个对象,使发出请求的责任和执行请求的责任分割开,然后可以使用不同的请求把客户端参数化。1、对于很多数的请求-响应模式的功能,比较适合使用命令模式,命令模式对实现记录日志、撤销操作等功能比较方便。2、命令模式将命令的调用者和执行者分开,使得双方不必知道对方是如何操作的,降低了耦合度;1、命令模式将命令都封装起来,所以封装性好;:又叫动作模式或事务模式。
2023-09-20 15:25:00
497
原创 迭代器模式
这个类在MyBatis 中使用得非常频繁,包括解析数据源配置信息并填充到数据源类上,同时参数的解析、对象的设置都会使用这个类。1、旅游:国家与景点之间是集合与元素的关系,导游是国家提供的服务,而我们只和导游交互而不直接与国家交互,这种关系和迭代器模式各个角色之间的关系非常相似。由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。
2023-07-13 08:57:33
370
原创 观察者模式
3)google的EventBus,观察者具体观察的方法标注@Subscribe注解,并将观察者本身注册到消息总线EventBus,EventBus就会将标记了@Subscribe的方法的第一个参数作为观察者关注的事件类型, 当发布事件时,EventBus只会通知关注了这个时间的监听者。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主体是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅并接收通知。
2023-06-20 20:26:02
661
原创 模板方法-
2)mybatis的doUpdate、doFlushStatements、doQuery 和 doQueryCursor 这几个方法就是交由子类来实现的,也就是说继承 BaseExecutor 的子类只需要实现这 4 个基本方法来完成数据库的相关操作即可。3、把不变的行为写在父类上,去除子类的重复代码,提供了一个很好的代码复用平台,符合开闭原则。2、将不同的代码不同的子类中,通过对子类的拓展增加新的行为,提高代码的拓展性。1、类数目的增加,每一个抽象类都需要一个子类来实现,这样导致类的个数增加。
2023-05-29 14:22:22
809
原创 策略模式-
2)mybatis的执行器Executor的策略簇,实现了不同的执行器策略。Configuration类是根据传入的策略对象类型,生产相应的策略对象。:定义一系列的算法,把它们一个个封装起来,目的就是将算法的使用与算法的实现分离开来。从而算法的变化不会影响到使用算法的用户。2、避免使用多重条件语句,如if...else...语句、switch语句。1、假如系统中有很多类,而他们的区别仅仅在于他们的行为不同。1、客户端必须知道所有的策略,并且自行决定使用哪一个策略类。3、需要屏蔽算法规则。
2023-05-29 13:43:53
92
原创 微信公众号接入流程
说明:openid不同小程序/公众号是不相同的,unionid不同微信开放平台账号是不同的,同一开放平台下相同。注意:redirect_uri的域名必须是后台配置的正确域名,否则跳转不过去,跳转的url中会携带code。正确填入appid,appsecret以及code,此处的code即为第一步获取的code。正确填入 access_token、openid、lang一般为(zh_CN)五、关于获取accessToken和openid。三、开放平台账号绑定公众号。四、前端获取授权code。
2023-04-26 14:20:56
805
原创 代理模式-
2)JDK和CGLib都是运行期生成字节码,JDK是直接写class字节码,CGLib是使用ASM框架写字节码,CGLib代理实现更复杂,生成代理类比JDK效率低。2)jdk proxy类重新生成一个新的类,实现了被代理类所有接口的方法。1)JDK动态代理是实现了被代理对象的接口,CGLib是继承了被代理对象。3、代理可以起到保护目标对象的作用,增强目标对象的职责。1)拿到被代理类的引用,并且获取它的所有接口(反射获取)1、代理模式能将代理对象与真实被调用的目标对象分离。保护目标对象,增强目标对象。
2023-03-31 18:21:40
391
原创 Arthur解析之设计模式
策略、模板方法、观察者、迭代子、责任链、命令、备忘录、状态、访问者、中介者、解释器;适配器、装饰器、外观、代理、桥接、组合、享元;工厂方法、抽象工厂、单例、原型、建造者;
2022-10-14 16:40:45
149
原创 领域驱动设计(Domain Driven Design,DDD)
一、领域驱动设计的作用与意义1、产生原因:软件实质是对真实世界的模拟,人认识世界总是简单到复杂,软件需求就是发现世界,软件变更则变成必然,业务逻辑则由初期的简单变成复杂。而DDD就是为了应对日益复杂的业务逻辑导致开发困难、软件代码难以维护的问题而提出的软件开发思想。2、领域建模思想现实世界有什么事物=》就有什么对象;现实世界有什么行为=》就有什么方法;现实世界是什么关系=》就有什么关联;3、作用理论:DDD把我们对软件设计的关注点从技术重新拉回到业务,从而专注于业务领域模型的
2022-05-30 20:29:29
1269
struts25101lib_jb51.rar )
2017-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人