访问者 模式
解释器模式
`begin 2023年04月15日16:49:35` #### 引子 本科软件工程专业有这么一门课叫《编译原理》,课程内容已经忘了七七八八,但尤为清楚的是上机大作业是拷贝的,课程分数92。 #### 定义 > Given a language, define a representation fo ......
Python 设计模式-观察者模式
观察者模式是一种行为设计模式,它允许你定义一种订阅机制,可以在对象事件发生时通知多个观察者对象。下面是一个简单的Python观察者模式代码示例: ```python class Subject: """ 被观察者类,维护观察者列表,并在状态发生改变时通知观察者 """ def __init__(se ......
SpringBoot限制接口访问频率 - 这些错误千万不能犯
> 最近在基于SpringBoot做一个面向普通用户的系统,为了保证系统的稳定性,防止被恶意攻击,我想控制用户访问每个接口的频率。为了实现这个功能,可以设计一个annotation,然后借助AOP在调用方法之前检查当前ip的访问频率,如果超过设定频率,直接返回错误信息。 ## 常见的错误设计 在开始 ......
Python 设计模式-单例模式
Python中有多种实现单例模式的方式,以下是其中的几种: 1. 基础单例模式 ```python class Singleton(object): __instance = None def __new__(cls, *args, **kwargs): if not cls.__instance: ......
组合模式(Composite Pattern)
## 一、模式动机 >处理树型结构 >组合模式(Composite Pattern)关注那些存在**叶子构件和容器构件的结构以及它们的组织形式**,**叶子构件中不能包含成员对象**,而**容器构件中可以包含成员对象**,这些成员对象可能是叶子构件对象,也可能是容器构件对象。这些**对象可以构成一个 ......
桥接模式(Bridge Pattern)
# 模式动机 桥接模式(Bridge Pattern)是一种很实用的结构型模式,如果系统中某个类存在**两个独立变化的维度**,通过该模式可以**将这两个维度分离出来**,使得两者可以**独立扩展**。桥接模式用一种巧妙的方式处理**多层继承**存在的问题,**用抽象关联取代了传统的多重继承**,将 ......
C#学习笔记 -- 对象初始化语句、索引器、访问器的修饰符
1、对象初始化语句 扩展语法 有如下两种扩展语法, 第一种当类中没有声明构造器或者声明了无参构造器才能用 第二种当类中声明了有参构造器才能用 new ExampleClass {FieldOrProp = InitProp, FieldOrProp = InitProp, ...}; new Exa ......
controller是单例模式还是多例模式?spring默认的是单例模式,那么如何保证线程安全
### controller是单例模式还是多例模式 在Java中,Controller既可以是单例模式,也可以是多例模式,这取决于具体的实现方式。 在单例模式中,Controller只会被实例化一次,多个线程共享同一个实例。这样可以节约系统资源,提高系统性能。但是在多线程环境下,如果不加以保护,可能 ......
java的构造者模式(builder)
我们在工作中写代码会遇到一种情况,就是设置一个对象属性值,通常方式有两种: 1. Animal animal=new Animal("3岁",20kg,"牛奶"); 2. Animal animal=new Animal(); animal.setAge("3岁"); animal.setWeigh ......
一些小问题和单例模式:饿汉模式和懒汉模式
智能指针的使用是一种思想,他利用类去管理系统的资源,在一些地方很巧妙的处理了编码不好处理的地方。 如下图: 如果是这样一种情况,这个throw抛异常了,此时跳出到catch的地方,处理完程序后再次使用fun函数此时被锁住了,坏了。所以可以用一个类去管理这个锁,使其除了生命周期后自动析构解锁,这个类的 ......
实际业务中使用策略模式对代码进行重构
一.业务描述 最近在负责公司一个语音的微服务模块优化,这个模块主要的业务是:1.天猫精灵、小度、若琪、小京鱼、小爱同学、思必驰这些第三方音响对我们的用户进行oauth2/JWT授权; 2.这些第三方音响服务调用我们的设备发现接口对公司的设备信息在第三方平台进行一个存储;3.第三方平台对用户发出的语音 ......
聊聊Seata分布式解决方案AT模式的实现原理
### 什么是Seata分布式事务解决方案 Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。为用户提供了AT、TCC、SAGA和XA事务模式,为用户打造一站式的分布式解决方案。 ### AT模式 AT模式目前来看是Seata框架独有的一种模式,其它的分布式框架上 ......
RabbitMQ工作模式-Routing模式
路由模式: 1、每个消费者监听自己的队列,并且设置routingkey。 2、生产者将消息发给交换机,由交换机根据routingkey来转发消息到指定的队列。 Routing模式是可以完成订阅模式的工作的,下面的代码在RoutingKey为“inform”的消息中有所体现 示例代码: 生产者: pu ......
我写了本开源书:《3D编程模式》
我写了本开源书,罗列了我从自己的实战项目中提炼出来的关于3D编程(主要包括“3D引擎/游戏引擎”、“编辑器”开发)的各种编程模式
本书的写作花了我300多个小时,将近3个月的全职写作,凝结了我一万小时的开发经验,希望把最精华的部分抽象成“模式”,提供给大家使用,帮助大家设计出架构良好的3D引擎和编辑... ......
新高考模式志愿填报
注意志愿之间梯度的问题,建议高、中、低搭配填报,较为合理,避免退档风险。 注意志愿之间梯度的问题,建议高、中、低搭配填报,较为合理,避免退档风险。 4、新高考模式下,专业平行志愿填报有哪些参考策略? 答:填报高考志愿方法很多,可根据不同情况先选院校再选专业,或者先选专业再选院校,只要适合自己就好。这 ......
MySQL不允许远程访问
报错:java.sql.SQLException: Access denied for user 'root'@'0.0.0.0' (using password: YES) 解决方法: ......
docker自定义镜像无法访问
说一下,自己学习部署容器,把自己的项目做成一个镜像(image),遇到了奇怪的现象,部署了mongo,redis,nginx,使用docker-compose进行编排。比如mongodb的端口默认27017,redis默认6379,nginx端口80. 自己定义的镜像信息: version: '3. ......
本机tomcat部署程序,局域网内部可以访问吗
## 同一个局域网内可以 如果另一台电脑与Tomcat所在的电脑,在同个局域网内,那么可以通过IP+端口号来访问。 ## 不在同个局域网内,需要做内网穿透 如果不在同个局域网内,那可以先用花生壳,cpolar等将网站映射到公网上,会生成相应的公网URL地址,另一台电脑访问这个公网地址,就可以访问到内 ......
观察者模式(代码简单介绍)
观察者模式是一种行为型设计模式,它定义了对象之间的一对多依赖关系,这样当一个对象改变状态时,它的所有依赖者都会被通知并自动更新。在这个模式中,改变状态的对象被称为“主题”,依赖者被称为“观察者”。 当使用观察者模式时,同样有三个核心角色:主题(Subject)、观察者(Observer)和具体观察者 ......
策略模式(代码简单解释)
当涉及到用代码解释策略模式时,我们可以使用一个简单的示例来说明。假设我们有一个电商系统,根据不同的支付方式计算订单的总金额。这里,我们可以使用策略模式来处理不同的支付策略。 首先,我们定义一个支付策略接口(PaymentStrategy): public interface PaymentStrat ......
java设计模式【抽象工厂模式】
java设计模式【抽象工厂模式】 抽象工厂模式 抽象工厂模式是对简单工厂模式的一个变种,它允许通过一个统一的接口来创建不同的产品实例,而无需指定具体的子类。在这个模式中,我们只关心产品的抽象接口,而将具体的产品实现留给子类去实现。这样,我们可以通过创建不同的工厂对象来创建不同的产品实例,而无需关心它 ......
通过网站日志做网络爬虫和恶意访问分析
普通爬虫 分别查看有爬虫标志的访问次数和合计的总页面访问次数 cat www.access.log | grep spider -c cat www.access.log | wc 查看爬虫来ip地址来源 cat www.access.log | grep spider | awk '{print ......
CST为什么要关闭 GPU 卡的 ECC 模式而开启 TCC 模式?操作使用【详解】
在使用CST软件之前,我们一般建议大家关闭 GPU 卡的 ECC 模式而开启 TCC 模式。那么,为什么要进行这样一个操作呢?在此之前,给大家科普一下什么是“ECC”和“TTC”。 “ECC” 其实是 Error Correction Code 的缩写,是 NVIDIA(英伟达) 内自带的错误纠正代 ......
docker 开启2375端口,提供外部访问docker
一、编辑docker文件:/usr/lib/systemd/system/docker.service 命令:vim /usr/lib/systemd/system/docker.service 修改ExecStart行,增加内容 -H tcp://0.0.0.0:2375 ,修改后如下: Exec ......
java设计模式【工厂方法模式】
java设计模式【工厂方法模式】 工厂方法模式 工厂方法模式(FACTORY METHOD)是一种常用的类创建型设计模式,此模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽 ......
《3D编程模式》写书-第6次记录
大家好,这段时间我完成了对初稿的第二轮修改,已经把稿子提交给编辑了 这里是所有的的写书记录: 《3D编程模式》写书记录 本轮修改主要进行了下面的修改: 修改UML描述 增加依赖关系 角色之间的关系 中增加 x对x 的明确描述 修改分析角色 “总体来看”加上用户这个部分,使其与UML中一致 修改代码 ......
★常用设计模式
创建型模式 简单工厂 选择不一样的参数,生成不一样的产品可用switch()来做参数选择 public class FoodFactory { public static Food makeFood(String name) { if (name.equals("noodle")) { Food n ......
Winform实现以管理员模式启动并实现修改系统时间
场景 SpringBoot/Java中定时请求并根据服务端响应头的date实现本地Windows修改时间/时间同步(管理员权限问题-bat管理员启动cmd并运行jar): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130720 ......
js 策略模式实现,优化大面积的if-else
// 策略类 // 所有跟计算奖金有关的逻辑不再放在环境类Context中,而是分布在各个策略对象中。 let strategies = { // 每个策略对象负责的算法被各自封装在对象内部 "RegularCard": function( deposit ){ return deposit * 0 ......