个人对行为型设计模式的理解 @by_TWJ
目录
- 1. 访问者模式
- 2. 迭代器模式
- 3. 观察者模式
- 4. 模板模式
- 5. 状态模式
- 6. 备忘录模式
- 7. 策略模式
- 8. 解释器模式
- 9. 责任链模式
- 10. 命令模式
- 11. 中介者模式
研究了一下,我为了方便理解,对它们进行了分类:
- 针对请求者与执行者关系方面
- 1对多 -
责任链模式
- 沿着这条链传递该请求,直到有一个对象处理它为止 - 多对多、多对一 -
中介者模式
- 中介者使各对象不需要显式地相互引用 - 一对一 -
命令模式
- 可用不同的请求对客户进行参数化
- 1对多 -
- 针对执行者
策略模式
- 使用不同的策略处理有不同的结果解释器模式
- 对请求语句进行解释状态模式
- 记录状态信息,状态的变更引起了行为的变更备忘录模式
- 保存记录信息/恢复记录信息迭代器模式
- 顺序访问的模板模式
- 预先定义好行为操作的模板
- 针对执行者的追加操作
访问者模式
- 某元素追加额外的操作,不影响原来的元素,不改变原来的行为操作下,也不改变元素结构情况下。观察者模式
- 观察执行者的执行动作的变化,并发送到多个观察者中。
1. 访问者模式
表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
结构:访问者、追加额外元素、原本元素
个人笔记:
本来的执行操作是
visitor.handle(ObjectStruture);
但为了不改变原来执行操作,也不改变现有对象结构下
,进行追加操作,且保留了原来的结构。
做了如下修改:
元素类ObjectStruture 增加accept方法,并追加elementList
访问者增加visit方法,visit里添加 visitor.handle(ObjectStruture) ,保留原来的handle方法
元素类抽象化 - Element
追加的元素类:Element1、Element2
// 这是原本元素,追加了其他额外元素,通过add追加
public class ObjectStruture implements Element{private List<Element> elementList = new ArrayList<>();public void add(Element element){elementList.add(element);}public void accept(Visitor visitor) {for (Element element : elementList) {element.accept(visitor);}visitor.visit(this);}
}
// 访问者追加visit操作
public class Visitor {void visit(Element element){handle(element);}// 为了区分其他实现类不会追加,例如: element1.accept(new Visitor()) 不会进行追加操作。void visit(Element1 element1){System.out.println(element1.getClass().getName());}void handle(Element element){System.out.println(element.getClass().getName());}
}
public static void main(String[] args) {ObjectStruture objectStruture = new ObjectStruture();objectStruture.add(new Element1());objectStruture.add(new Element2());objectStruture.accept(new Visitor());
}
public interface Element {void accept(Visitor visitor);
}
这是用于二次开发的
,用于对业务发生改变,请求参数变化,导致处理不适应原来的业务,所以这时就需要使用访问者模式,通过其他访问者,修正数据,以适应原来的业务操作。
2. 迭代器模式
提供一种方法顺序访问
一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
典型例子:JAVA 中的 iterator。
3. 观察者模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
。
4. 模板模式
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
5. 状态模式
状态模式的定义:当一个对象的内在状态改变时,允许其改变行为,这个对象看起来像是改变了其类。状态模式的核心是封装,状态的变更引起了行为的变更
。
参考文章:https://blog.csdn.net/kris234seth/article/details/49684185
状态模式和状态是不同的概念,这个状态模式,行为会随着状态的改变而改变。
例如:1、画图工具的字体颜色,不同颜色写出来的字体颜色不同。2、连接请求,不同连接状态得到不同的结果。
特点
:状态可变,固定行为,结果随状态改变而改变。
结构方面有三个部分:抽象状态类(State)(包含状态和行为)、状态实现类、环境类(Context)(包含行为)
* 抽象状态类* void setContext(Context context)* void 行为()
* 状态实现类
* 环境类* void setState(State state){state.setContext(this);this.state=state;}* void 行为(){this.state.行为()}
//画图工具的字体颜色,不同颜色写出来的字体颜色不同。
Context context = new Context();
context.setColor(new RedColorState());
String result = context.write("字体颜色");// 输出: [red]字体颜色
System.out.println(result);context.setColor(new GreenColorState());
String result2 = context.write("字体颜色");// 输出:[green]字体颜色
System.out.println(result2);
6. 备忘录模式
备忘录模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
这样以后就可将该对象恢复到原先保存的状态。
参考文章:https://blog.csdn.net/weixin_45433817/article/details/131501970
例如:1、游览器的前进和后退操作。2、ps里的历史操作痕迹
特点
:备忘录负责保存记录,负责人负责管理备忘录集合(包含保存备忘录和得到哪个备忘录),原发器负责创建备忘录,原发器就是原来事件本身
结构方面有三个部分:备忘录(Menento)、负责人(Caretaker)、原发者(Originator )
* 备忘录* void setContent(String content) * String getContent()
* 负责人* void add(Menento menento)* Menento get(int i)
* 原发者* Menento createMenento()* void recoveryFromMenento(Menento menento)
Originator originator = new Originator();//原发器,能创建备忘录
Caretaker caretaker = new Caretaker();//备忘录集合/负责人,负责看管备忘录originator.setMessage("第一页"); // 操作痕迹
caretaker.add(originator.createMenento()); // 保存痕迹到备忘录
originator.setMessage("第二页"); // 操作痕迹
caretaker.add(originator.createMenento()); // 保存痕迹到备忘录System.out.println("获取前一页记录:"+caretaker.get(-1)); // 获取前一个备忘录的痕迹 输出:获取前一页记录:Menento{source='第一页'}
//恢复备忘录
originator.recoveryFromMenento(caretaker.get(-1)); // 恢复前一个备忘录痕迹
System.out.println("恢复后:"+originator.getMessage());// 输出:恢复后:第一页
7. 策略模式
定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换
。本模式使得算法可独立于使用它的客户而变化。
个人笔记:随着使用策略不同,返回不同结果
8. 解释器模式
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子
。
9. 责任链模式
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止
。
个人笔记
与命令模式不同的是:
责任链模式是,没有限制有多少实现。
命令模式是,一个请求只有一个实现。
public class FilterChain {List<Filter> filters = new ArrayList<Filter>();public void addFilter(Filter filter) {filters.add(filter);}public void doChain(String msg){//沿着这条链传递该请求,直到有一个对象处理它为止for(Filter filter : filters){boolean b = filter.doFilter(msg);// 直到有一个对象处理它为止if(b){return;}}}
}
10. 命令模式
将一个请求封装为一个对象,从而使你可用不同的请求
对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
个人笔记:
不同的请求执行不同的程序
与策略模式不同的是:
命令模式是不同的请求决定不同的结果
策略模式是不同的策略决定不同的结果
CommandProcessor processor = new CommandProcessor();
processor.add("ping",new CommandPing());
String result = processor.execute("ping 192.168.3.1");
System.out.println(result);
11. 中介者模式
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用
,从而使其耦合松散,而且可以独立地改变它们之间的交互。
个人笔记:
与责任链模式不同的是:
责任链模式是有多个执行对象。
中介者模式是只有一个执行对象,不需要关注请求对象与执行对象是否一致问题。
例子:聊天室
相关文章:
个人对行为型设计模式的理解 @by_TWJ
目录 1. 访问者模式2. 迭代器模式3. 观察者模式4. 模板模式5. 状态模式6. 备忘录模式7. 策略模式8. 解释器模式9. 责任链模式10. 命令模式11. 中介者模式 研究了一下,我为了方便理解,对它们进行了分类: 针对请求者与执行者关系方面 1对多 - 责…...
苹果挖走大量谷歌人才,建立神秘人工智能实验室;李飞飞创业成立「空间智能」公司丨 RTE 开发者日报 Vol.197
开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…...
行业唯一!易保全牵头编制的《区块链数据访问安全技术通则》发布
近日,易保全牵头参与编制的《区块链数据访问安全技术通则》经中国国际经济技术合作促进会正式发布,为中国区块链数据安全技术提供了标准参考。 易保全作为牵头起草单位、易保全CEO兼董事长刘刚担任主要起草人参与其中,在区块链技术安全风险…...
Rust Rocket创建第一个hello world的Web程序 Rust Rocket开发常用网址和Rust常用命令
一、Rust Rocket简介 Rust Rocket 是一个用 Rust 语言编写的 Web 应用框架,它结合了 Rust 的安全性和性能优势,以及 Web 开发的便利性。以下是 Rust Rocket 框架的一些优点: 安全性:Rust 是一种注重安全性的编程语言,…...
第G9周:ACGAN理论与实战
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同学的学习圈子 上一周已经给出代码,需要可以跳转上一周的任务 第G8周:ACGAN任…...
Linux网络部分——DNS域名解析服务
目录 1. 域名结构 2. 系统根据域名查找IP地址的过程 3.DNS域名解析方式 4.DNS域名解析的工作原理【☆】 5.域名解析查询方式 6.搭建主从DNS域名服务器 ①初始化操作主服务器和从服务器,安装BIND软件 ②修改主服务器的主配置文件、区域配置文件、区域数…...
预处理详解
乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 点击主页:optimistic_chen和专栏:c语言, 创作不易,大佬们点赞鼓…...
Python的创建和使用自定义模块
Python 的模块是组织代码的基本单元,它可以包含变量、函数、类等,并且可以被其他 Python 程序引用和重用。除了使用 Python 提供的标准库和第三方库外,开发者还可以创建自定义模块,用于组织和管理自己的代码。本文将详细介绍如何创…...
Python根据预设txt生成“你画我猜”题目PPT(素拓活动小工具)
Python根据预设txt生成“你画我猜”题目PPT(素拓活动小工具) 场景来源 去年单位内部的一次素拓活动,分工负责策划设置其中的“你画我猜”环节,网络上搜集到题目文字后,想着如何快速做成对应一页一页的PPT。第一时间想…...
小程序地理位置接口权限直接抄作业
小程序地理位置接口有什么功能? 随着小程序生态的发展,越来越多的小程序开发者会通过官方提供的自带接口来给用户提供便捷的服务。但是当涉及到地理位置接口时,却经常遇到申请驳回的问题,反复修改也无法通过,给的理由也…...
【Osek网络管理测试】[TG3_TC6]等待总线睡眠状态_2
🙋♂️ 【Osek网络管理测试】系列💁♂️点击跳转 文章目录 1.环境搭建2.测试目的3.测试步骤4.预期结果5.测试结果 1.环境搭建 硬件:VN1630 软件:CANoe 2.测试目的 验证DUT在满足进入等待睡眠状态的条件时是否进入该状态 …...
BEV下统一的多传感器融合框架 - FUTR3D
BEV下统一的多传感器融合框架 - FUTR3D 引言 在自动驾驶汽车或者移动机器人上,通常会配备许多种传感器,比如:光学相机、激光雷达、毫米波雷达等。由于不同传感器的数据形式不同,如RGB图像,点云等,不同模态…...
c#和python的flask接口的交互
一、灰度图像的传输 c#端的传输 //读入文件夹中的图像 Mat img2 new Mat(file, ImreadModes.AnyColor); //将图像的数据转换成和相机相同的buffer数据 byte[] image_buffer new byte[img2.Width * img2.Height]; int cn img2.Channels(); //通道数 if (cn 1){//将图像的数…...
Python测试框架Pytest的参数化详解
上篇博文介绍过,Pytest是目前比较成熟功能齐全的测试框架,使用率肯定也不断攀升。 在实际工作中,许多测试用例都是类似的重复,一个个写最后代码会显得很冗余。这里,我们来了解一下pytest.mark.parametrize装饰器&…...
KernelSU 如何不通过模块,直接修改系统分区
刚刚看了术哥发的视频,发现kernelSU通过挂载OverlayFS实现无需模块,即可直接修改系统分区,很是方便,并且安全性也很高,于是便有了这篇文章。 下面的教程与原视频存在差异,建议观看原视频后再结合本文章进行操作。 在未进行修改前,我们打开/system/文件夹,并在里面创建…...
红日靶场ATTCK 1通关攻略
环境 拓扑图 VM1 web服务器 win7(192.168.22.129,10.10.10.140) VM2 win2003(10.10.10.135) VM3 DC win2008(10.10.10.138) 环境搭建 win7: 设置内网两张网卡,开启…...
CellMarker | 人骨骼肌组织细胞Marker大全!~(强烈建议火速收藏!)
1写在前面 分享一下最近看到的2篇paper关于骨骼肌组织的细胞Marker,绝对的Atlas级好东西。👍 希望做单细胞的小伙伴觉得有用哦。😏 2常用marker(一) general_mrkrs <- c( MYH7, TNNT1, TNNT3, MYH1, MYH2, "C…...
游戏名台词大赏
文章目录 原神(圈内) 崩坏:星穹铁道(圈内) 崩坏3(圈内) 原神 只要不失去你的崇高,整个世界都会为你敞开。 总会有地上的生灵,敢于直面雷霆的威光。 谁也没有见过风&…...
OpenCV如何在图像中寻找轮廓(60)
返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV如何模板匹配(59) 下一篇 :OpenCV检测凸包(61) 目标 在本教程中,您将学习如何: 使用 OpenCV 函数 cv::findContours使用 OpenCV 函数 cv::d rawContours …...
java 泛型题目讲解
泛型的知识点 泛型仅存在于编译时期,编译期间JAVA将会使用Object类型代替泛型类型,在运行时期不存在泛型;且所有泛型实例共享一个泛型类 public class Main{public static void main(String[] args){ArrayList<String> list1new Arra…...
pptx 文件版面分析-- python-pptx(python 文档解析提取)
安装 pip install python-pptx -i https://pypi.tuna.tsinghua.edu.cn/simple --ignore-installedpptx 解析代码实现 from pptx import Presentation file_name "rag_pptx/test1.pptx" # 打开.pptx文件 ppt Presentation(file_name) for slide in ppt.slides:#pr…...
http的basic 认证方式
写在前面 本文看下http的basic auth认证方式。 1:什么是basic auth认证 basic auth是一种http协议规范中的一种认证方式,即一种证明你就是你的方式。更进一步的它是一种规范,这种规范是这样子,如果是服务端使用了basic auth认证…...
【信息系统项目管理师练习题】信息系统治理
IT治理的核心是关注以下哪项内容? a) 人员培训和发展计划 b) IT定位和信息化建设与数字化转型的责权利划分 c) 业务流程的绩效管理 d) IT基础设施的优化利用 答案: b) IT定位和信息化建设与数字化转型的责权利划分 IT治理体系框架的组成部分包括以下哪些? a) IT战略目标、IT治…...
RabbitMQ之顺序消费
什么是顺序消费 例如:业务上产生者发送三条消息, 分别是对同一条数据的增加、修改、删除操作, 如果没有保证顺序消费,执行顺序可能变成删除、修改、增加,这就乱了。 如何保证顺序性 一般我们讨论如何保证消息的顺序性&…...
轻松上手的LangChain学习说明书
一、Langchain是什么? 如今各类AI模型层出不穷,百花齐放,大佬们开发的速度永远遥遥领先于学习者的学习速度。。为了解放生产力,不让应用层开发人员受限于各语言模型的生产部署中…LangChain横空出世界。 Langchain可以说是现阶段…...
【论文笔记】Training language models to follow instructions with human feedback A部分
Training language models to follow instructions with human feedback A 部分 回顾一下第一代 GPT-1 : 设计思路是 “海量无标记文本进行无监督预训练少量有标签文本有监督微调” 范式;模型架构是基于 Transformer 的叠加解码器(掩码自注意…...
嵌入式交叉编译:x265
下载 multicoreware / x265_git / Downloads — Bitbucket 解压编译 BUILD_DIR${HOME}/build_libs CROSS_NAMEaarch64-mix210-linuxcd build/aarch64-linuxmake cleancmake \-G "Unix Makefiles" \-DCMAKE_C_COMPILER${CROSS_NAME}-gcc \-DCMAKE_CXX_COMPILER${CR…...
一、Redis五种常用数据类型
Redis优势: 1、性能高—基于内存实现数据的存储 2、丰富的数据类型 5种常用,3种高级 3、原子—redis的所有单个操作都是原子性,即要么成功,要么失败。其多个操作也支持采用事务的方式实现原子性。 Redis特点: 1、支持…...
C语言动态内存管理malloc、calloc、realloc、free函数、内存泄漏、动态内存开辟的位置等的介绍
文章目录 前言一、为什么存在动态内存管理二、动态内存函数的介绍1. malloc函数2. 内存泄漏3. 动态内存开辟位置4. free函数5. calloc 函数6. realloc 函数7. realloc 传空指针 总结 前言 C语言动态内存管理malloc、calloc、realloc、free函数、内存泄漏、动态内存开辟的位置等…...
最近惊爆谷歌裁员
Python团队还没解散完,谷歌又对Flutter、Dart动手了。 什么原因呢,猜测啊。 谷歌裁员Python的具体原因可能是因为公司在进行技术栈的调整和优化。Python作为一种脚本语言,在某些情况下可能无法提供足够的性能或者扩展性,尤其是在…...
音频可视化:原生音频API为前端带来的全新可能!
音频API是一组提供给网页开发者的接口,允许他们直接在浏览器中处理音频内容。这些API使得在不依赖任何外部插件的情况下操作和控制音频成为可能。 Web Audio API 可以进行音频的播放、处理、合成以及分析等操作。借助于这些工具,开发者可以实现自定义的音…...
【中等】保研/考研408机试-动态规划1(01背包、完全背包、多重背包)
背包问题基本上都是模板题,重点:弄熟多重背包模板 dp[j]max(dp[j-v[i]]w[i],dp[j]) //核心思路代码(一维数组版) dp[i][j]max(dp[i-1][j], dp[i-1][j-v[i]]w[i])//二维数字版 一、 0-1背包 一般输入两个变量:体积&…...
[DEMO]给两个字符串取交集的词语
要求:2个英文字符串中,取相同的大于等于4个字母的词组 比如: 字符串1:" xingMeiLingabcdef WorldHello", 字符串2:"mnjqlup WorldLingLing xingMeiLingHello" 获取交接: [xingMeiLing…...
leetcode53-Maximum Subarray
题目 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输出…...
Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之七 简单进行人脸检测并添加面具特效实现
Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之七 简单进行人脸检测并添加面具特效实现 目录...
【go项目01_学习记录06】
学习记录 1 使用中间件1.1 测试一下1.2 push代码 2 URI 中的斜杆2.1 StrictSlash2.2 兼容 POST 请求 1 使用中间件 代码中存在重复率很高的代码 w.Header().Set("Content-Type", "text/html; charsetutf-8")统一对响应做处理的,我们可以使用中…...
Vue中Element的下载
打开vscode让项目在终端中打开 输入npm install element-ui2.15.3 然后进行下载 在node_modules中出现element-ui表示下载完成 然后在输入Vue.use(ElementUI); import Vue from vue import App from ./App.vue import router from ./router import ElementUI from element-ui…...
机器人项目相关
机器人项目相关 1. Nvidia 1.1 Jetson 1.1.1 初步安装Riva教程 llamaspeakJetson AGX Orin踩坑记录(1)安装Riva 参考知乎链接:https://zhuanlan.zhihu.com/p/670007305 1.1.2 NVIDIA Jetson AI Lab 借助 NVIDIA Jetson™ 将生成式 AI…...
Mac升级go版本某种错误情况处理
当看到 "go1.21 is keg-only, which means it was not symlinked into /opt/homebrew" 这样的信息时,意味着Homebrew没有自动为你创建指向新版本Go的符号链接(symlink),因为这是一个旧版本Go的替代版本。 Homebrew中的…...
美团KV存储squirrel和Celler学习
文章目录 美团在KV存储squirrel优化和改进在水平方向1、对Gossip协议进行优化 在垂直扩展方面1、forkless RDB数据复制优化2、使用多线程,充分利用机器的多核能力 在高可用方面 美团持久化kv存储celler优化和改进水平扩展优化1、使用bulkload进行数据导入2、线程模型…...
Python学习笔记------处理数据和生成折线图
给定数据: jsonp_1629344292311_69436({"status":0,"msg":"success","data":[{"name":"美国","trend":{"updateDate":["2.22","2.23","2.24",&qu…...
知识图谱与大语言模型的协同(RAG)——MindMap
MindMap : Knowledge Graph Prompting Sparks Graph of Thoughts in Large Language Models 论文地址: https://arxiv.org/abs/2308.09729 代码:https://github.com/wylwilling/MindMap 1.概述 大型语言模型(LLMs)在处理新信息、防止生成幻觉内容、以及增强决策过程透明度…...
奶爸预备 |《P.E.T.父母效能训练:让亲子沟通如此高效而简单:21世纪版》 / 托马斯·戈登——读书笔记
目录 引出致中国读者译序前言第1章 父母总是被指责,而非受训练第2章 父母是人,不是神第3章 如何听,孩子才会说:接纳性语言第4章 让积极倾听发挥作用第5章 如何倾听不会说话的婴幼儿第6章 如何听,孩子才肯听第8章 通过改…...
【WebGIS实例】(13)MapboxGL 加载地形高程数据
前言 官网示例:Add 3D terrain to a map | Mapbox GL JS | Mapbox 大佬博客:Mapbox GL基础(七):地形数据的处理与加载 (jl1mall.com) 加载Mapbox地形数据 map.once(style.load, () > {map.addSource(mapbox-dem,…...
Node.js -- MongoDB
文章目录 1. 相关介绍2. 核心概念3. 命令行交互3.1数据库命令3.2 集合命令3.3 文档命令 4. 数据库应用场景4.1 新增4.2 删除4.3 更新4.4 查询 5. 图形化工具Robo 3T 1. 相关介绍 一、简介 Mongodb是什么 MongoDB是一个基于分布式文件存储的数据库,官方地址https://…...
语音识别--单声道转换与降采样
⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号…...
基于springboot+vue+Mysql的点餐平台网站
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
数据库优化
一、主从读写分离 主库:主要负责数据的写入。 从库:主要负责数据的查询。 引出问题: 可能会存在主从延迟,导致主从一致性问题。查询主库的量级需要控制。数据量庞大,索引也占据存储空间,磁盘空间不足,当主库宕机后会影响所有模块的写入,需要进行数据分片,因此引出分库…...
专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(一)
本系列课程,将重点讲解Phpsploit-Framework框架软件的基础使用! 本文章仅提供学习,切勿将其用于不法手段! Phpsploit-Framework(简称 PSF)框架软件,是一款什么样的软件呢? Phpspl…...
Web安全研究(七)
NDSS 2023 开源地址:https://github.com/bfpmeasurementgithub/browser-fingeprint-measurement 霍普金斯大学 文章结构 introbackground threat model measurement methodology step1: traffic analysisstep2: fingerprint analysis dataset attack statisticsbro…...
贝努利贝叶斯算法
基本用法 完整代码: from sklearn.naive_bayes import BernoulliNB from sklearn.datasets import make_blobs from sklearn.model_selection import train_test_split# 生成数据 X, y make_blobs(n_samples500, centers5, random_state8) X_train, X_test, y_tr…...
GORM_事务和HOOK
事务和Hook 1. 会话Session 为了避免共用db导致的一些问题,gorm提供了会话模式,通过新建session的形式,将db的操作分离,互不影响。 创建session的时候,有一些配置: // Session 配置 type Session struc…...
在亚马逊上卖灯具需要什么认证,亚马逊灯饰产品需要审核与认证吗
LED灯具在亚马逊美国站销售,需要有UL认证或者UL报告、FCC,如果是带消毒灭菌的灯,需要做EPA,欧洲站,日本站,认证只需要CE和ROHSR认证。 UL认证:本认证主要针对充电器、移动电源、手机电池、灯具…...
20232803 2023-2024-2 《网络攻防实践》实践九报告
目录 1.实践内容2.实践过程2.1 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数2.2 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数2.3 注入一个自己制作的shellcode并运行…...
Linux/Debian/Ubuntu系统中apt/apt-get的20个常见命令
apt的20个常见命令 以下是apt的20个常见命令: apt install <package>:安装软件包。apt remove <package>:移除软件包。apt purge <package>:移除软件包及其配置文件。apt update:更新可用软件包列…...
免费一个月的容器
目录 1.登录注册界面进行注册 2.创建容器使用 3.感觉不错的可以点个赞。 1.登录注册界面进行注册 注...