自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 设计模式十:原型模式

而通过拷贝的方式,没有执行构造函数的步骤(如果对象没有其他类的属性,则也不涉及类加载过程),所以轻量级对象(构造函数里面没有复杂的操作)的创建,new创建会比较快;当spring启动后,当需要一个bean的时候,从IOC容器中查找出来,判断是单例还是原型,如果是原型模式,则生成一个对象实例,而不是将IOC容器管理的对象实例返回给用户,注:深拷贝仅对该对象实例进行了拷贝,使得两个变量执行不同的堆内对象实例,但是其内部的引用对象使用的仍是浅拷贝,若需要其饮用对象属性也需要进行深拷贝,则在。

2024-03-11 09:56:14 543

原创 设计模式九:装饰器模式

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。具体组件角色(ConcreteComponent):定义一个要被装饰器装饰的对象,即 Component 的具体实现。适配器模式是为了新的接口能够复用老接口的方法,改变接口名称,不改变老接口方法的内容(当然可以增强)相同点: 装饰类(代理类)与被装饰类(被代理类)都需要实现相同的接口;创建珍珠奶茶对象,放入不同的修饰类的构造方法中达到修饰器的效果。由此可见,装饰器模式的优缺点“最直观的区别可以理解为。

2024-03-11 09:52:50 1128

原创 设计模式八:观察者模式

宝马公司偶尔推出打折或立减活动(8折、9折、立减5000),不同的用户关注不同的活动,如用户1关注8折和9折活动,用户2关注8折和立减5000活动,用户3这些活动都关注,当宝马公司推出一种活动的时候,立刻通知到关注该活动的用户。以上就是观察者模式与发布订阅模式,发布订阅模式有专门的组件管理事件和观察者之间的关系:被观察者发布事件到事件组件,无需关心谁订阅了哪些事件;实际中,会有多个观察者,以及多个事件,每个观察者关注不同的事件,待相对应事件发生时,"通知"关注改时间的观察者。被观察者亲自通知观察者。

2024-03-11 09:50:13 1233

原创 设计模式七:责任链模式

责任链模式为请求创建了一个接收者对象的链,在这种模式下,通常每个节点都包含对另一个节点者的引用。每个节点针对请求,处理自己感兴趣的内容,处理完之后可以结束,也可以向下一个节点传递继续处理;这种形式很难进行动态新增和调整处理节点,一种比较复杂的控制节点的形式如Netty中的责任链模式应用,见下一节。Netty中的handler使用了责任链模式,但是其中回调过多,责任链模式的体现不清晰,参考该文章**:为链条中节点的上下文,它里面有链条的前一个节点和后一个节点的。​ 2.可以灵活添加新的责任链中的对象。

2024-02-27 17:45:12 942

原创 设计模式六:策略模式

策略上下文角色StrategyContext:策略上下文,负责和具体的策略实现交互,通常策略上下文对象会持有一个真正的策略实现对象,策略上下文还可以让具体的策略实现从其中获取相关数据,回调策略上下文对象的方法。策略模式是为了解决的是策略的切换与扩展,更简洁的说是定义策略族,分别封装起来,让他们之间可以相互替换,策略模式让策略的变化独立于使用策略的客户。是一个策略接口,用在当线程池中没有多余的线程来执行任务,并且保存任务的多列也满了(指的是有界队列),对仍在提交给线程池的任务的处理策略。

2024-02-23 14:22:50 1339

原创 设计模式五:模板模式

父类定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。或者通俗点讲,处理某个流程的代码已经都具备,当其中某个节点的代码不能确定,因此我们采用模板模式,将这个节点的代码实现转移给子类完成;例:购买汽车;在不同品牌汽车的4S店购买汽车都要经历相同的过程,进店—>销售讲解—>试驾—>支付购买—>开车回家,每一家车店都是这种逻辑,那么可以将这套逻辑抽出来,并将这个一套逻辑写成一个方法,即模板方法,使用public final修饰;

2024-02-22 10:26:33 887

原创 设计模式四:适配器模式

通常情况下,Spring MVC 默认提供的 HandlerAdapters 是能够满足大多数应用场景的,并且能够处理各种类型的处理程序(handler)。在某些特殊情况下,可能需要自定义 HandlerAdapter 来满足特定的需求。以下是一些需要自定义 HandlerAdapter 的情况:需要支持新的处理程序类型:如果你使用了自定义的处理程序类型,而该类型不属于 Spring MVC 默认支持的类型,那么你可以编写自己的 HandlerAdapter 来支持该类型。

2024-02-20 15:25:42 1191

原创 设计模式三:工厂模式

工厂模式包括简单工厂模式、工厂方法模式和抽象工厂模式,其中后两者属于23中设计模式。

2024-02-19 16:24:50 1123

原创 设计模式二:代理模式

可能很多小伙伴首次接触动态代理这个名词的时候,或者是在面试过程中被问到动态代理的时候,不能很好的描述出来,动态代理到底是个什么高大上的技术。不方,其实动态代理的使用非常广泛,例如我们平常使用的。

2024-02-19 16:21:57 1145

原创 设计模式一:单例模式

spring中的单例不是线程安全的,当涉及到共享数据时需要记性多线程安全性的处理。

2024-02-19 16:20:55 371

原创 IDEA创建springboot流程(避坑)

IDEA创建springboot项目注意事项

2023-05-24 14:45:49 222

原创 对于子串和子序列动态规划的一些感悟

对于dp数组,无论是一维还是二维,某一个位置表示的要么就是以该位置为结尾(必须包含该位置的元素)的子问题的答案,这种方式一般最后的位置即为最终答案;要么是以该位置就为结尾的的子问题答案,这种方式一般最后需要扫描整个数组找到答案。可以看出5种问题可以分为两类,一类是连续(子数组,连续序列=子串),另一类是不连续(子序列)

2023-03-04 21:09:32 272

原创 MySQL高可用

MySQL的`一主多从`高可用,采用`半同步复制`存在数据一致性问题,研究采用`MGR组复制`解决

2022-07-28 18:54:32 299

原创 MySQL与Redis的缓存

`mysql`和`redis`都可以用作存储,但是`redis`是基于内存的,所以一般我们不用来存储数据,是与`mysql`或者其他数据库联合使用,数据库存储数据,`Redis`用作缓存能够是的更快地进行查询

2022-07-25 15:29:57 1211

原创 日常无用功之windows把整个D盘改成了桌面还原

windows把整个D盘改成了桌面还原在日常生活中我们经常将文件放到桌面,但是日积月累下来,桌面占用内存越来越大,这时候我们就想将桌面给放到D盘从而释放C盘空间,但是修改的时候忘记在D盘建立一个文件夹专门来放桌面文件,不小心把整个D盘空间做成了桌面,那么该怎么改回来呢?看晚上各种方法,比如修改注册表等,这些都没有用,最后找到了还原方法,很简单就在修改桌面位置的地方点击还原默认,然后 不要移动文件即可...

2022-05-07 09:37:57 4821 1

原创 算法:公交让座问题

算法题:解决实际应用问题:公交车让座问题一辆公交车,有n个座位(n<100),陆续有乘客上车和下车,新乘客上车时,如果座位全满,新上来的乘客的优先级如果比座位上的某些人大,那么就需要选出优先级比他低的人给他让座,同样的,座位上有人到站下车空出了座位,需要在无座的人里面选出优先级高的人入座座位优先级规则(先幼后老再中年):按年龄最小(年龄相同再按上车时间最先上车优先)安排10岁及以下的儿童入座,如果没有合适的儿童,再安排车上年龄最大的(年龄相同按上车时间最先上车的优先)的人入坐使用一个二维数组来

2022-04-19 22:49:43 631

原创 PriorityQueue优先队列中比较器Comparator的使用

优先队列java中的优先队列使用堆实现的,所以优先队列我们通常是拿来当大顶堆小顶堆使用大顶堆和小顶堆的作用就是当我们想要获取大量数据的前几个最大或者最小的数据时使用的,因为如果对所有数据排序然后去前几个,时间复杂度最小也是O(nlogn),使用堆的话时间复杂度为O(nlongm),而 m 就是我们想要进行获取的前几个数,一般为常量,比如想要获取学校n个同学里面前8名,使用大顶堆获取的时间复杂度就是O(nlog8)。如图所示是一种自下向上的建堆过程:在java中优先队列的创建方法://创建优先

2022-04-19 22:12:51 3766 3

原创 MySQL的锁机制(通俗易懂)

MySQL的锁机制mysql`锁分为全局锁、表锁和行锁全局锁​ 全局锁是将整个数据库锁起来,使得其他的事务只能进行读,不能写,主要用在数据库备份时表锁​ 表锁分为普通表锁,元数据锁和意向锁普通表锁是为了防止事务之间对表数据的访问发生冲突;元数据锁分为表级共享锁和表级排他锁,主要是防止事务访问表和事务修改表结构之间的冲突,增删改查数据会产生共享读锁或者共享写锁,这两个锁会与update表结构产生的排他锁产生冲突;意向锁分为意向共享锁和意向排他锁,主要是为了防止行锁和表锁之间的冲突,

2022-04-19 19:36:36 1785

原创 Dan Boneh首次提出非对称可搜索加密方案---《Public Key Encryption with Keyword Search》

非对称可搜索加密2000年S哦那个等人首次提出了对称可搜索加密方案,方案分析在这篇文章图文解析Song首次提出的对称可搜索加密方案—《Practical Techniques for Searches on Encrypted Data》2004年Dan Boneh使用双线性对运算首次提出了非对称可搜索加密方案Public Key Encryption with Keyword Search该方案只要对双线性对的运算有一定的了解,便十分容易理解非对称加密方案理解起来虽然比较容易一些,但是由于使

2022-02-26 00:15:47 1689

原创 图文解析Song首次提出的对称可搜索加密方案---《Practical Techniques for Searches on Encrypted Data》

可搜索加密本文是对Song等人首次提出的可搜索加密方案Practical Techniques for Searches on Encrypted Data中的四个方案进行图文式的演示,具体预备知识以及文章方案译文请参照该文章。接下来直接上方案方案一加密方案如图所示,加密过程为:1、Alice首先将每一个文件都分解成 l 块2、Alice使用为随机值<S1,S2,...,SlS_1, S_2,...,S_lS1​,S2​,...,Sl​>以及自己选择的一系列密钥<k1,

2022-02-25 23:33:26 3525 1

原创 linux云服务器宝塔安装pure-ftpd连接问题

使用宝塔界面为云服务器安装了pure-ftpd软件,能够正常连接和登录,但是出现了以下错误:响应: 227 Entering Passive Mode (120,26,15,119,155,15)命令: MLSD错误: 20 秒后无活动,连接超时错误: 读取目录列表失败在一阵排查后,最终问题定位到未再阿里云后台的安全组开放39000-40000端口,过程如下:1、宝塔界面安装pure-ftpd软件2、配置中修改ForcePassiveIP为自己公网IP,将前面的#去掉,并重新启动在这

2022-02-13 01:58:18 3144 2

原创 spring中`@Service(value=“XXX“)`中XXX的作用

@Service的作用    spring中有很多注解帮助我们开发,@Repository、@Service 、@Controller 和@Component注解在类上面即可以使spring自动向Bean容器中创建该类的Bean,而在我们需要用到该Bean来创建对象时,在变量声明上方添加@AutoWired或者@Qualifier即可。@Service(value="XXX")中的XXX的作用    @service注解工作原理:在service层类上面添加@Service注解,会自动创建Bean,B

2022-02-11 19:03:13 7955

原创 pypbc双线性对库的使用

pypbc是python中使用双线性配对运算的库,在密码学中双线性对是经常使用到的运算。pypbc的安装请参照ubuntu 16.04安装pypbc库pypbc中提供了Parameters、Pairing、Element三个类Parameters生成参数:由于是在椭圆曲线上生成的双线性对,PBC库提供了几种不同的曲线,pypbc一般取的是a类曲线,具体参照PBC Library Manual 0.5.14。无论哪种曲线需要一定的参数,Parameters就是用来生成这些参数的类。Pairing生成

2021-12-01 23:12:50 6434 6

原创 ubuntu 16.04安装pypbc库

PBC是密码学中计算双线性对的C库,对于双线性对运算具有很大的帮助,在python中同样在有着双线性对运算的库,名为pypbc,该库具有很多依赖项,安装前需要按照顺序依次安装,本文从一台新安装的ubuntu 16.04虚拟机开始,以图文的方式演示python3中pypbc的安装过程环境:主机:Ubuntu 16.04安装:pypbc库工具:python31、依赖项安装...

2021-11-22 11:46:20 4399 26

原创 matlab画图:实现小圆覆盖大圆

python实现小圆覆盖大圆:[https://blog.csdn.net/qq_41845823/article/details/118860729](https://blog.csdn.net/qq_41845823/article/details/118860729)*以下是MATLAB的实现代码:function []=plot1(x,y,r)theta=0:0.01:2*pi;Circle1=x+r*cos(theta);Circle2=y+r*sin(theta);c=[123,14

2021-09-16 11:16:51 5195 5

原创 日常无用功之django + mysql环境搭建

环境:主机:win10系统mysql服务器:ubutun16.0.4虚拟机pycharm运行django本文主要讲依赖包的安装:django连接mysql需要用到mysqlclient包,这个包异常难搞pycharm中直接安装会报错在https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient中直接下载包,自行安装注意:下载版本时看一下自己的python或者说pycharm项目的python的版本,下载对应版本的对应型号(3.

2021-08-17 13:09:20 126

原创 日常无用功之python + mysql远程登陆

环境:主机:win10系统mysql服务器:ubutun16.0.4虚拟机第一步确保主机能ping通虚拟机:在网上找了很长时间,关防火墙,调网络配置器等等都没有用最终关机重启,大功告成pycharm远程连接ubutun系统上的mysql:首先确定参数是否正确# 创建连接对象:# host 主机# user 用户名# password 密码# database 指定数据库# port 默认为3306conn = pymysql.connect(host='19.

2021-08-17 11:49:48 157

原创 requests.get和urlopen的比较(通俗易懂)

requests.get和urlopen的比较urlopen详解见:https://blog.csdn.net/qq_41845823/article/details/119465293requests.get详解见:https://blog.csdn.net/qq_41845823/article/details/119516178urlopen简介urlopen是urllib库中的一个方法,简单用法为urllib.request.urlopen(url),返回的是一个http.client.H

2021-08-08 17:16:22 3633

原创 request库详解

Request库request库中文文档:https://docs.python-requests.org/zh_CN/latest/user/quickstart.html视频链接:https://www.bilibili.com/video/BV1Us41177P1?p=2实例引入import requestsresponse = requests.get("https://www.baidu.com/")print(type(response))print(type(response

2021-08-08 16:13:37 9869 2

原创 urllib.request.urlopen详解

Urllib是python内置的HTTP请求库:urllib.request 请求模块urllib.error 异常处理模块urllib.parse url解析模块urllib.robotparser robots.txt解析模块python2中urllib2库中的很多方法在python3中被移至urllib.request库中。urllib.request.urlopenurllib.request.urlopen(url, data=None, [timeout, ]*, caf

2021-08-06 23:32:41 11859

原创 python画图:小圆覆盖大圆问题

小圆覆盖大圆用至少多少个半径为r的小圆覆盖半径为R的大圆是的任意两个小圆圆心距离为根号3r,且任意三个圆之间交于一点python实现:import numpy as npimport matplotlib.pyplot as pltdef circle1(p,r,theta): """ p为列表,原点 r为半径 """ X = p[0] + r * np.cos(theta) Y = p[1] + r * np.sin(theta) plt.plot(X

2021-08-06 19:56:43 6250 3

原创 omnipeek安装包亲测可用

omnipeek安装包+注册机免费网上抓包工具omnipeek,界面比wireshark美化多了但是在百度上找了半天,下了一大堆流氓软件,最终还是被我整理到了刚开始找到11.0.1版本的,但是附带的是v1.0的注册机,11.0.1只能用v2.0的注册机破解在我的不懈努力下,终于找到了7.1版本的omnipeek,用v1.0破解,亲测可用上链接链接:https://pan.baidu.com/s/1H4B3sEUJbAzYrb609bLQ2w 提取码:n63z...

2021-07-05 15:30:32 1247 3

原创 Python爬取网页中的进程、线程、协程时间对比

前言今天接到老师一个任务:让我数下某一个A类会议上从2000年到2021年每年份接受了多少篇文章(老师可能是要向这个A类期刊“进攻”了),但是我粗略估计了一下,每年大概有上百篇,难道让我数20年(*******)近期正在学习python爬虫,可以抓取页面上的源代码,分析页面上的内容,简单的写了下接下来的代码比较简单,俗话说外行看热闹,内行看笑话,不知道下面这些能不能被称为爬虫,但是为了好听我接下来都叫爬虫,各位看官莫取笑代码如下:"""1、导入模块2、request 获取该期刊网页源代码

2021-05-28 14:57:34 253

原创 区分哈希函数算法和加密算法

有的时候哈希函数和加密算法我们容易混为一谈,因为哈希函数经常出现在加密场合,那在这里区分一下。我们以公钥加密为例,对于加密来讲分为两方面,如果A想要给B发一条私密消息,那么A需要用B的公钥加密消息发给B,因为A不想人让别人看到消息内容,若A拿自己的私钥,则所有人都可以看到,而这个是加密的另一个方面数字签名,即A想给B发一个消息,并且要让B知道这个消息就是A发给他的,那么A要用自己的私钥加密"名字"给这个加密消息做一个sign,B收到消息后,首先用A的公钥把sign解密之后发现是A的"名字",知道这个

2020-09-21 19:04:53 1987

原创 椭圆密码

密码体制提供的基本安全服务有机密性、完整性、认证和不可否认性。加密可以看成是一种变换,这种变换将可读的明文信息变换成不可读的密文信息。数字签名也是一种基本的密码原语,它可以取得完整性、认证和不可否认性;数字签名可以看成是对数据所做的一种密码变换,这种变换可以使数据的接受者确认签名者的身份和数据的完整性。密码体制根据加密秘钥和解密秘钥是否相等,可以将密码体制分为对称密码体制和非对称密码体制(公钥密码体制)对称密码体制一般用来加密,典型的对称密码体制有DES和AES;公钥密码体制可以用来加密

2020-09-20 19:03:32 441 1

空空如也

空空如也

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

TA关注的人

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