自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 FIDO与WebAuthn

WebAuthn 是“一个用于访问公钥凭证的 API”,网站可以通过这个 API 进行一些高安全性的身份验证。WebAuthn 一个最常见的应用就是用于网站登录时的 2FA(双重因素验证)甚至是无密码登录。通过网页调用 WebAuthn,在不同平台下,我们可以实现通过 USB Key、指纹、面部甚至虹膜扫描来认证身份,同时确保安全和隐私。图一:是window1903以上版本提供的window Hello图二三:是浏览器调用WebAuthn API拉起的访问认证器的交互页面。

2022-12-12 14:22:12 3974

原创 分治算法--快速傅立叶变换

首先介绍卷积,之后再慢慢引出FFT算法给定向量 a = (a0, a1, … , an-1);卷积a*b = (c0,c1,…,c2n-2)ck = 公式太难打了,还是搬出老师的图这里向量和的操作是把两个向量对应的各个分量相加,所得的结果仍然是一个向量;内积的操作是把两个向量对应的各个分量相乘再全部相加,所得的结果是一个数;卷积所得的结果是一个i+j维向量;图中红色斜线所划上的所有项 相加的结果即为卷积运算结果向量的第n-1分量的值;一个实例。

2022-10-24 20:01:48 1457

原创 动态规划--最长公共子序列

原问题为F(x,y,i,j) x和y是字符数组,i指x数组的最大下标,j指y数组的最大下标。F(x,y,i,j)值,字符数组x的0下标到i下标 与字符数组y的0下标到j下标的最长公共子序列。x序列中的每个字符有两种可能,选或者不选,那么蛮力算法考虑所有的可能,那就是2^m次方种可能。每种可能还需要与y字符做比较复杂度至少为n。x是一个字符数组长度为m,y也是一个字符数组长度为n。3、子问题依赖关系,递推方程。5、存储问题的解和标记函数。那么总的复杂度为n2^m。

2022-10-19 16:21:22 279

原创 动态规划--背包问题

可以放入背包的物品有n种,每种物品的重量和价值分别为wi, vi如果背包的最大重量限制是b,每种物品可以放多个.怎样选择放入背包的物品以使得背包的价值最大?所以Fk(y) = max{ Fk-1(y),Fk(y-nwk) + nvk } n是装入第k个物品的数量。递推方程F(k,b,v) = F(k-1,b-nbk,v-nvk) + nVk(值n倍的第k个物品的价值)s[k] [y] = 装入前k个物品最大限重y时,最大价值时,装入的第k个物品的数量。当k=0是,所有的F0(y)都等于0;

2022-10-19 16:07:34 1176

原创 动态规划--投资问题

由于公式输入比较麻烦,比较简单容易理解的直接采用老师的ppt或者采用手写方式。实例计算F(1,x)的各个最优效益。指投资前1个项目,x元钱的最大效益。第二步子问题界定和第四步计算顺序的确定。动态规划解决投资问题的例子。第三步优化函数的递推方程。k=2,时的最大效益。

2022-10-19 15:47:06 2021

原创 动态规划算法设计

1、问题建模;确定优化函数;约束条件2、划分子问题3、递推方程;也就是原问题的优化函数与子问题的优化函数存在的依赖关系;4、是否满足组优化原则,也就是满足最优子结构性质5、界定最小子问题,以及其优化函数初值等于什么;如果采用递归的计算,相同子问题很有可能会计算多次,导致复杂度任然不低;要降低复杂度,需要保证每个相同的子问题只计算一次6、从最小子问题算起,明确计算顺序,保证后面用到的值已经算好7、保存子问题的计算结果–备忘录8、是否需要设计标记函数9、追踪解;如何得到解。

2022-10-18 14:05:46 777

原创 分治算法优化途径

对矩形分为六个小格子,小格子的宽为d/2,长为2d/3,故小方格的斜边最长也不大于d,所以可以知道最多一个小方格内存在一个点,否则PL侧p1和p2就不是最短,相悖;那么PR只有在边界距X轴距离为d范围的点才可能存在最短(例子上有p3和p4),可能存在有n个这样的点,假设p3是这n个点中的一个点,那么他需要与PL中符合条件的点计算距离,与最短d1进行比较;计算PR侧每个点的时间复杂度是O(6)是常数时间,n个点就是O(n),故这一步的操作复杂度是O(n)。如果有是奇数个以中间的点做x轴的垂线;

2022-10-18 08:55:20 677

原创 分治策略的基本思想

分治算法的算法设计1、确定子问题2、确定递归的边界(问题规模小于c是可以直接求解)3、确定解的递推方程相当于规模为p的问题1、当问题规模小于c是可以直接求解2、将问题p划分为k个子问题3、子问题求解4、将子问题的解合并以下是分治算法的实例运用二分检索问题问题输入:顺序数组T,下标从 l 到 r ;数x;问题输出:j //若x在T中,j为下标;否则为0分治求解:1、确定子问题首先确定原问题形式为 BinnarySearch(T,l,r, x);子问题缩小问题的规模,也就是缩小T的规模,并

2022-10-17 19:33:12 745

原创 java值传递和不可变对象

一旦一个类的对象被创建出来,在其整个生命周期中,它的成员变量就不可以被修改,java库中包含的不可变类有:String、BigInteger、BigDecimal,Integer,Long。

2022-09-21 03:40:21 380

原创 spring事件监听的简单实现过程

当某一事物源对象(当某种事件发生时),然后向监听器传送某种事件对象,监听器接到事件对象后进行某种处理例如:1、当用户注册成功之后,需要给用户发送注册成功的短信,那么用户注册成功定义为事件发生,给用户发送短信的操作定义为事件处理,事件处理所需要的参数定义为事件对象前端的 onclick,onchange使用事件监听有 降低耦合 易用的好处以上面提到的用户注册成功发送短信举例1、首先需要定义事件对象(事件源event)一般是事件处理所需要的参数2、定义监听器(Listener)当事件发生是 监听器执行相应的

2022-06-16 03:08:55 1569 2

原创 Linux安装tomcat

1、已安装配置好jdk这样就说明已安装jdk2、准备好tomcat包下载地址1https://downloads.apache.org/tomcat/tomcat-10/v10.0.20/bin/官网地址:https://tomcat.apache.org/download-10.cgi此处我下载的是 tomcat10版本将包移至linux系统此处 我把包放至 /tmp下3、新建目录并解压新建目录[root@VM-8-6-centos bin] # mkdir -p /usr/local/tomcat解压到

2022-06-02 11:30:45 222

原创 linux安装java环境

jdk的下载http://hg.openjdk.java.net/http://jdk.java.net/java-se-ri/8-MR3或者去官网下载1、准备好jdk,并将jdk放入linux系统例如利用Winscp工具放入/tmp 目录下2、解压到文件目录首先创建文件目录[[root@VM-8-6-centos bin]] # mkdir -p /usr/local/java然后解压到改文件目录[root@VM-8-6-centos bin] # tar -vzxf jdk-8u161-linux-x6

2022-06-01 17:38:38 151

原创 valatile关键字

用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。Java并发编程中“出现频率最高的关键字”。常用于保持内存可见性(所有线程都能看到共享内存的最新状态。)和防止指令重排序。如果一个变量被声明volatile的话,那么这个变量不会被进行重排序,也就是说,虚拟机会保证这个变量之前的代码一定会比它先执行,而之后的代码一定会比它慢执行。问题引出1:在只有双重检查锁,没有volatile的懒加载单例模式中,由于的问题,确实不会拿到了,但可能会拿到当instance不为null时,仍

2022-06-01 12:52:50 509 1

原创 加密算法与数字签名

为什么需要数字签名:因为信息时代,习惯在网络上交流,而网络上的消息很容易被别有用心的人伪造,窃取,篡改。数字签名:是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。(将信息类比与人,那么数字签名的作用就类似于身份证。用于对消息的发送者身份及内容的确认)所以数字签名有两个作用,一个是对消息发送者身份的确认 二是对消息内容未被篡改的确认。假设有三个人 Bob和Lisa是一对恋人,而Doug是想要破坏他们情感的黑客。不使用数字签名的情况Bob向L

2022-06-01 10:32:44 1547

原创 面向对象软件设计七原则

1、面向对象软件设计七原则设计原则一句话归纳目的开闭原则对扩展开放,对修改关闭降低维护带来的新风险依赖倒置原则高层不应该依赖低层,要面向接口编程更利于代码结构的升级扩展单一职责原则一个类只干一件事,实现类要单一便于理解,提高代码的可读性里氏替换原则不要破坏继承体系,子类重写方法功能发生改变,不应该影响父类方法的含义防止继承泛滥合成复用原则尽量使用组合或者聚合关系实现代码复用,少使用继承降低代码耦合迪米特法则不该知道的不要知道,一个类

2021-10-12 14:55:10 716

原创 Oracle数据库的安装与卸载

Oracle数据库的卸载与安装一、安装1.下载2.安装过程二、卸载1、先关服务2、删除注册表1、标识Oracle注册的各种服务2、Oracle数据库的软件安装信息3、注册的oracle事件日志3、删除环境变量4、删除文件1、删除Oracle基目录2、删除C:\Program Files下oracle目录。3、用户目录下4、用户目录下的AppData\Local\Temp三、报错一、安装1.下载下载oracle11g安装包 运行安装程序2.安装过程1.选是2.取消勾选3.一直下一步4.更

2020-12-21 00:40:29 596

空空如也

空空如也

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

TA关注的人

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