自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (1)
  • 收藏
  • 关注

原创 项目实训 - Scene-UI - 编写select

选择器HTML原生的select组件虽然功能尚可,但是缺乏扩展与美化的方法,因此需要自己使用其他基本组件组合一个Select组件出来,本篇记录自己完成select组件的全过程,分为单选与多选两个模块:单选定义select的props如下:import { isString, isBooleanArray } from "../../core/utils/typeAssert"export const selectProps = { modelValue:{//选择器绑定的值

2022-05-23 16:30:48 917 1

原创 项目实训 - Scene-UI - 编写scrollbar

滚动条滚动条的编写参考了这篇大牛的文章滚动条组件实现 - 掘金 (juejin.cn),在其基础上进行了修改形成了scene-ui的滚动条,关于滚动条的布局可以参考那篇文章。我添加了对不必要的滚动条不加以显示的功能,原版无论真实大小有没有超过可视大小都会显示出XY轴的滚动条,而我通过props.alwaysNeedY与比较真实高度与可视高度的大小这两个方面控制Y轴滚动条的显示滚动条的核心在第191行: _thumbY.getBoundingClientRect().top - wrapEl.getBo

2022-05-23 16:27:00 225

原创 项目实训 - Scene-UI - 编写radio

单选框单选按钮允许你选择单一的值来提交表单。编写单选框时要考虑的因素有:单选框的表单控件属性,也就是基础的name、value、label属性单选框的尺寸单选框是否被禁用单选框的大小同时保留了单选框的modelValue改变时的change事件,参数是当前modelValue。radio.ts的代码如下:import { ComponentConstants } from '../../core/constants'; import {isString ,isNumber, isBool

2022-05-03 19:26:31 324

原创 项目实训 - Scene-UI - 编写number-input

数字输入框数字输入框组件的特点是:用户只能输入数字,输入其他类型的值会被转化为一个数字。数字输入框左右侧有两个按钮可以调节数字,可以设置调节的步长数字输入框有最大值与最小值限制,超过这个值的数字不允许被输入因此根据这些特点,该组件需要有的属性与事件有:export const numberInputProps = { step: { type: Number, default: 1, }, max: { type: Nu

2022-05-03 19:25:47 240

原创 项目实训 - Scene-UI - 编写loading

加载loading组件的实现形式与之前的组件都有所不同,loading组件采用的是函数调用的方式触发,而且其内部编写的方式也与一般组件不同,不是以模板的方式构造组件而是通过渲染函数的方式。挂载的实现主要依靠vue的createApp()API。预定义的类型:import {App, VNode} from 'vue'/** * loading 组件的props类型 */export type loadingProps = { target: VNode | string | HTML

2022-05-03 19:24:00 240

原创 项目实训 - Scene-UI - 编写link

链接link组件主要通过修改class名控制不同的主题,同时使用vue的API:this.$slots检测是否需要渲染某些内容。比较简单,源码如下:<template> <a class="scene-link" :class="[ disabled? `scene-link-disabled` : '', `scene-link-underline-${underline}` ]"

2022-05-03 19:22:52 153

原创 项目实训 - Scene-UI - 编写input与textarea

输入框与文本域输入框输入框的整体结构并不复杂,主要分为左中右三部分,左右各一个插槽,用于用户自定义内容,中间由一个原生输入框和一个按钮组组成,还有一个提示文本域属于绝对布局:<template> <div :disabled="disabled"> <!-- 前面的插槽 最大图标大小 22 --> <div v-if="$slots.prefix"> <slot name="prefi

2022-05-03 19:21:39 325

原创 项目实训 - Scene-UI - 编写icon

图标为了组件库的整体性,考虑编写一个通用的icon组件用于方便的引入图标,同时引入一个开源的图标库作为组件库的图标来源。开源图标库的选择方面我选择的是bootstrap-icon,主要在后期打包时在public文件夹下的图标无法打包,想要在组件库中引入必须将每个svg图标编写为vue组件,再导入。这样的作法对于庞大的svg图标库显然非常麻烦。bootstrap-icon有个非常方便的特性——它可以通过字体的形式导入,只需要提供class名,这样就可以解决通用icon组件的问题而不需要为了每个图标编写一

2022-05-03 19:19:45 195

原创 项目实训 - Scene-UI - 编写dialog

对话框对话框的实现主要依靠vue3的两个高级内置组件:<Teleport>:使我们可以将一个组件的一部分模板“传送”到该组件的 DOM 层次结构之外的 DOM 节点中。为 <Teleport> 指定的目标 to 期望接收一个 CSS 选择器字符串或者一个真实的 DOM 节点。实现对话框,可以利用该组件去传送对话框的模板片段到 body 标签下。<Transition> 会在一个元素或组件进入和离开 DOM 时应用动画。利用该内置组件,可以设置对话框进入离开

2022-05-03 19:18:28 166

原创 项目实训 - Scene-UI - 编写datetime

日期时间选择器日期选择器核心逻辑制作日期选择器的基本是能获取一页的日期,一页最少需要显示6 x 7 = 42个日期。因此如何计算当月的前一个月与后一个月需要补充几天是关键。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d8LxglOI-1651576561068)(./datetime/image-20220501165151062.png)]该部分逻辑在core文件夹下的date.ts中。首先声明一些基本的关于日期的变量,比如:每个月对应的英文日期,平闰年每个月对

2022-05-03 19:17:01 143

原创 项目实训 - Scene-UI - 编写card

Card源码Card的html结构如下:<div ref="el" class="scene-card"> <div v-if="$slots.header || header" class="scene-card-head"> <slot name="header">{{ header }}</slot> </div> <div class="scene-card-body" :style="bo

2022-05-03 19:15:31 193

原创 项目实训 - Scene-UI - 编写button

button源码编写按钮组件时主要考虑有以下几个因素:按钮的大小按钮的造型按钮是否可被禁用按钮可以触发的事件同时为了美化按钮,用户可以在按钮中添加图标,这里用到了Vue的插槽技术。因此设置了以下几种Props,NativeType保留了按钮的原生类型:import { ComponentConstants } from '../../core/constants'; export const buttonProps = { type:{// 按钮类型 type

2022-05-03 19:13:58 175

原创 实验:集成学习预测Titanic号生还者

文章目录一 实验要求二 实验思路三 实验代码四 实验结果参考一 实验要求用集成方法对数据集进行分类利用若干算法,针对同一样本数据训练模型,使用投票机制,少数服从多数,用多数算法给出的结果当作最终的决策依据,对Titanic数据集 进行分类,给出在测试集上的精确度;除了投票法,其他的集成学习方法也可以。实验来自kaggle入门赛 https://www.kaggle.com/c/titanic ,可以参考原网站 代码与预处理部分,但与公开代码不同的在于,集成学习所用的基学习 器需要自己

2021-12-16 18:56:55 1554 2

原创 集成学习(ensemble learning)

文章目录一 引言二 Bagging三 Boosting参考一 引言集成学习(ensemble learning),它通过将多个学习器集成在一起来达到学习的目的。主要是将有限的模型相互组合,其名称有时也会有不同的叫法,有时也会被称为多分类器系统(multi-classifier system)、委员会学习(committee learning)。【1】集成学习利用一些方法改变原始训练样本的分布,构建多个不同的学习者器,然后将这些学习器组合起来完成学习任务,集成学习可获得比单一学习器显著优越的泛化性能,

2021-12-16 17:02:48 2720 1

原创 实验——基于决策树算法完成鸢尾花卉品种预测任务

文章目录一 实验要求二 实验思路三 实验代码四 实验结果与分析参考一 实验要求本实验通过鸢尾花数据集iris.csv来实现对决策树进一步的了解。其中, Iris鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含3类共150条记录,每类各50个数据,每条记录都有4项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这4个特征预测鸢尾花卉属于iris-setosa, iris-versicolour, iris-virginica三个类别中的 哪一品种。Iris数据集

2021-12-05 15:36:47 6876 1

原创 决策树—非度量方法

文章目录一 前言二 决策树学习生成算法三 ID33.1 熵3.2 信息增益3.3 ID3生成算法3.4 ID3的优缺点四 C4.54.1 信息增益率五 CART六 决策树相关问题6.1 剪枝处理6.2 连续值处理6.3 缺失值处理参考一 前言之前学习的很多都是基于连续实数或离散数值的特征向量的模式识别问题,例如在神经网络中,如果两个输入向量足够接近,那么它们的输出也很相似。然而,假定某个分类问题中需要用到**“语义数据”(nominal data 或称为标注数据、名义数据)**,这种数据没有任何相似性

2021-12-05 15:34:35 536

原创 NP完全性

大部分时间内,我们研究的算法都是多项式时间算法:对于规模为n的输入,在最坏情况下的运行时间是O(nk)O(n^k)O(nk),其中k是某一确定常数。那是否所有的问题都可以在多项式时间内解决呢?答案是否定的。本节的主体就是对问题的复杂性的研究。目录一 问题二 归约算法2.1 3-CNF-SAT ≤p\leq_{p}≤p​CLIQUE2.2 CLIQUE ≤p\leq_{p}≤p​ VERTEX COVER三 问题复杂类:P与NP四 问题复杂类:NPC与NP-hard五 证明NP-Complate一 问题

2021-12-03 18:57:16 1140

原创 图论(六):所有节点对的最短路径

所有节点对之间的最短路问题:给定一个加权有向图G=(V,E),对于每一对结点(u,v)∈V(u,v)\in V(u,v)∈V,找到从u到v的最短路径。Input:用邻接矩阵表示有向加权图。Output:一个n×n的矩阵D=(dij)D=(d_{ij})D=(dij​),dijd_{ij}dij​表示从i结点到j节点的最短路径。一种简单的思路是对集合V中所有的结点使用单源最短路算法,这样就能求得所有结点之间的最短路径,时间复杂度为原时间复杂度×n(n为结点个数),但Dijkstra单源最短

2021-12-02 11:15:48 4049 2

原创 2021SC@SDUSC-PALISADE(十三)PALISADE库结构以及专用对象分析

2021SC@SDUSC——PALISADE库结构以及专用对象分析目录1 元素类型2 CryptoContext3 PlainText4 Ciphertext5 ElementParams6 EncodingParamsPALISADE被设计为一个层结构,每一层都提供了一系列的服务给上一层,使用下一层提供的服务。每一层的接口都被设计为API,下面为具体层结构:Application:所有调用了PALISADE lib的程序都在这一层Encoding:所有数据编码方法的实现都在这一层编码

2021-11-29 14:37:50 672

原创 2021SC@SDUSC-PALISADE(十二)具体分析PALISADE中的拒绝采样法

2021SC@SDUSC——PALISADE中离散高斯取样实现的分析专题:高斯分布采样原理——拒绝采样法PALISADE中的采样方法具体分析PALISADE中的拒绝采样法具体分析PALISADE中的拒绝采样法拒绝采样法定义在discretegaussiangenerator.cpp的GenerateInteger方法中。该方法的申明如下:template <typename VecType>int32_t DiscreteGaussianGeneratorImpl<Ve

2021-11-29 14:23:15 193

原创 2021SC@SDUSC-PALISADE(十一)PALISADE中的采样方法

2021SC@SDUSC——PALISADE中离散高斯取样实现的分析专题高斯分布采样原理——拒绝采样法PALISADE中的采样方法具体分析PALISADE中的拒绝采样法6.2 PALISADE中的采样法PALISADE库提供了各种方法从离散的高斯分布采样。这些方法在DiscreteGaussianGenerator和DiscreteGaussianGeneratorGeneric类中都实现了,它们有各自的特定用途。所讨论的所有采样器都已在 GLITCH Discrete Gaussian Te

2021-11-29 14:19:06 2008

原创 2021SC@SDUSC-PALISADE(十)原理:拒绝采样法

2021SC@SDUSC高斯分布采样原理——拒绝采样法蒙特·卡罗方法(Monte Carlo method)也称统计模拟方法,通过重复随机采样模拟对象的概率与统计的问题,在物理、化学、经济学和信息技术领域均具有广泛应用。拒绝采样(reject sampling)就是针对复杂问题的一种随机采样方法。首先举一个简单的例子介绍Monte Carlo方法的思想。假设要估计圆周率π的值,选取一个边长为1的正方形,在正方形内作一个内切圆,那么我们可以计算得出,圆的面积与正方形面积之比为π/4。现在在正方形内随机生

2021-11-28 19:57:36 370

原创 实验——神经网络预测Fashion-MNIST数据集

文章目录一 实验数据二 实验要求三 实验思路与代码3.1 初始的设想3.2 改进思路:矩阵运算四 实验结果分析参考:一 实验数据Fashion-MNIST数据集,数据集中包含 60000 张训练样本,10000 张测试 样本,可将训练样本划分为49000 张样本的训练集和1000 张样本的验证集,测 试集可只取1000 张测试样本。其中每个样本都是 28×28 像素的灰度照片,每 个像素点包括RGB三个数值,数值范围0 ~ 255,所有照片分属10个不同的类别。灰度与像素值的关系:图像的灰度化

2021-11-28 17:18:58 6035

原创 神经网络基础与反向传播

文章目录一 生物神经网络到人工神经网络二 单层感知机网络2.1 感知机模型2.2 激活函数2.3 感知机分类图示2.4 感知机的学习策略三 反向传播学习算法(Back Propagation)3.1 Notation3.2 BP算法原理3.3 其他问题参考一 生物神经网络到人工神经网络人工神经网络的构筑理念是受到生物(人或其他动物)神经网络功能的运作启发而产生的。神经元大致可以分为:树突、突触、细胞体和轴突。在生物神经网络中,每个神经元与其他神经元相连,当它兴奋时,就会向相连的神经元发送化学物质,从而

2021-11-28 15:31:58 1255

原创 图论(五)单源最短路算法

目录一 单源最短路问题二 有向无环图的单源最短路算法三 Dijkstra算法3.1 原理3.2 伪代码与代码实现3.3 时间复杂度分析3.4 正确性证明3.5 与BFS和Prim算法的比较四 Bellman-Ford算法4.1 无负圈的最短路算法4.2 正确性分析4.3 检测负圈4.4 完整的Bellman-Ford算法一 单源最短路问题给出单源最短路的定义:给定一个有向图G=(V,E),每条边都有一个权重wiw_iwi​,在现实问题中,权重可以代表长度、时间、成本、罚款损失…,我们可以简单的理解为长

2021-11-25 11:20:06 1165

原创 2021SC@SDUSC-PALISADE(九)BGV的API分析

2021SC@SDUSCAPI分析之前我们详细分析了BGVRns方案的全过程,包括密钥的生成、加密、解密以及同态操作。本篇博客分析调用BGV方案的API。#include "palisade.h"using namespace lbcrypto;int main() { //Step 1 - 设置CryptoContext对象 // Set the main parameters // 设置明文的模数 int plaintextModulus = 65537; doubl

2021-11-23 17:37:42 412

原创 实验——参数估计与非参数估计

目录1 最大似然估计1.1 实验要求1.2 实验思路1.3 代码实现1.4 实验结果2 Parzen窗2.1 实验要求2.2 实验思路2.3 代码实现2.4 实验结果3 K近邻3.1 实验要求3.2 实验思路3.3 代码实现及结果3.3.1 一维情况3.3.2 二维情况3.3.3 三维情况4 KNN实战4.1 实验要求4.2 实验思路4.3 实验结果与思考1 最大似然估计1.1 实验要求使用上面给出的三维数据:编写程序,对类1和类2中的三个特征????????分别求解最大似然估计的均值????

2021-11-20 17:50:45 4714

原创 2021SC@SDUSC-PALISADE(八)Evaluation中的乘法评估

2021SC@SDUSC密文的乘法同态:由于密文的减法同态运算与加法同态运算类似,我们就不重复分析了,重点分析密文的乘法同态核心。函数的申明,返回一个密文对象,输入两个密文对象作为同态操作数template <class Element> // 返回一个密文对象,输入两个密文对象作为同态操作数Ciphertext<Element> LPAlgorithmSHEBGVrns<Element>::EvalMultCore( ConstCiphert

2021-11-18 14:54:00 141

原创 非参数估计—Parzen窗与K-nearest-neighbor

在之前的学习中,我们总是假设概率密度函数的参数形式已知,并在此条件下处理有监督学习过程。而在现实世界中,我们给出的概率密度函数很少符合实际情况,本节我们讨论非参数化方法(non-parametric method),它可以处理任意的概率分布而不必假设密度的参数形式已知。大体上还是遵循着贝叶斯决策论,主要有两个非参数估计的方向:从训练样本中估计类条件概率密度:p(x∣ωi)p(\textbf{x}|\omega_i)p(x∣ωi​)直接估计后验概率:P(ωj∣x)P(\omega_j|\textbf{x

2021-11-16 15:50:40 2202

原创 2021SC@SDUSC-PALISADE(七)Evaluation中的加法评估

2021SC@SDUSC照例先分析PALISADE库的特性,再讨论BVG方法。目录PlainTextEvaluation中的加法评估参考PlainTextPALISADE中使用明文(PlainText)表示未加密的内容。它实际上是PALISADE中支持的每种可能的纯文本编码的基类:【1】• PackedEncoding• CKKSPackedEncoding• CoefPackedEncoding• StringEncoding明文的用途:创建明文PlainText是通过调用适当的

2021-11-10 17:47:04 351

原创 图论(四):最小生成树算法和Prim实现

设H=(V,T)是图G=(V,E)的子图,H是图G的生成树,当且仅当H是一个无环的连通图。生成树具有以下性质:H有|V-1|条边与|V|个顶点H是最小化连接的:去除任意一条边都会是H不连通H是最大无环结构:添加任意一条边都会构造一个环给出一个无向加权图G=(V,E),最小生成树问题(minimun spanning tree,MST):求一个生成树使得每条边的权值的和最小。本节在讨论解决最小生成树的两种贪心算法:Kruskal算法与Prim算法之前,先说明通用的、形式化的最小生成树的生成算法

2021-11-08 15:56:26 640

原创 参数估计—最大似然估计与贝叶斯估计

文章目录一 参数估计二 最大似然估计2.1 参数分量2.2 基本原理2.3 高斯情况2.3.1 协方差矩阵Σ\SigmaΣ已知,而均值μ\muμ未知2.3.2 协方差矩阵Σ\SigmaΣ和均值μ\muμ都未知三 贝叶斯估计3.1 基本原理3.2 高斯情况下的贝叶斯估计3.2.1 单变量情况第一步:p(μ∣D)p(\mu|D)p(μ∣D)3.2.2 单变量情况第二步:p(x∣D)p(\textbf{x}|D)p(x∣D)四 最大似然估计与贝叶斯估计比较参考一 参数估计在贝叶斯决策论中,我们已经学习了如何根

2021-11-07 15:23:28 2783

原创 2021SC@SDUSC-PALISADE(六)解密函数Decrypt

2021SC@SDUSC本节继续分析BGV的解密过程,解密过程的具体实现主要在bgvrns-impl.cpp内。目录1 PALISADE中的CryptoContext2 解密参考1 PALISADE中的CryptoContextPALISADE的核心的类是CryptoContext类,该类是提供所有 PALISADE 加密功能的类。PALISADE 实现中使用的所有对象均由CryptoContext类创建。【1】PALISADE对象的所有操作必须在相同的属于CryptoContext类的对象上进

2021-11-05 17:42:14 647 1

原创 优先队列(最大堆)

目录一 优先队列二 原始操作:Sift-up和Sift-down三 初始化、插入、删除、返回最大元素四 完整代码与测试用例一 优先队列优先队列(最大/最小堆)是一个运用非常广泛的数据结构,在维护与查找最值方面相比于有序数组与有序链表有着非常良好的时间复杂度,它用堆Heap实现,高效的支持基本两个操作:插入一个元素:O(logn)O(logn)O(logn)查找最大的元素:O(1)O(1)O(1)通常堆也是使用数组实现的,以最大堆为例,堆性质:Heap order: 节点i的权值为v,节点

2021-11-01 16:33:49 621

原创 2021SC@SDUSC-PALISADE(五)加密Encrypt

2021SC@SDUSC本节主要分析BGV的加密过程,加密过程的具体实现主要在bgvrns-impl.cpp内。大致从700行开始。开始前我们需要先了解PALISADE的元素格式一 PALISADE元素类型从palisade_manual.pdf的7.1节与7.13节中,我们了解到:7.1 TypeingAll PALISADE operations are strongly typed. A Plaintext that is passed to encrypt will create a C

2021-10-30 15:54:11 444

原创 贝叶斯决策论(二):多元高斯分布下的判别函数

一个贝叶斯分类器可由条件概率密度p(x|ωi)和先验概率P(ωi)决定。在各种密度函数中,高斯密度函数(多元正态函数)最受青睐。本节我们先从单变量高斯密度函数谈起,接着探讨多元高斯分布以及一些特殊情况下的判别函数。文章目录一 单变量高斯密度函数二 多元密度函数三 正态分布下的判别函数3.1 Σi=σ2I\Sigma_i=\sigma^2IΣi​=σ2I3.2 Σi=Σ\Sigma_i=\SigmaΣi​=Σ3.3 Σi=\Sigma_i=Σi​=任意参考一 单变量高斯密度函数单变量正态或高斯密度函数

2021-10-28 19:55:35 2669 2

原创 图论(三):DFS的应用——拓扑排序与强连通分量

本节介绍如何使用DFS对有向无环图进行拓扑排序,以及求强连通分量的算法。一 拓扑排序什么是拓扑排序呢?对于一个有向无环图G=(V,E),拓扑排序是G中所有结点的一种线性次序,满足:如果图G包含边(u,v),则结点u在拓扑排序中处于结点v的前面。拓扑排序可以理解为一系列要处理的事件的先后的顺序。边(u,v)代表完成v必须先完成u。 注意的是:如果图G包含环路,则不可能排出一个线性次序。下图中,图a表示一个有向无环图,图b表示该图的拓扑序。...

2021-10-26 19:50:28 1968

原创 实验——贝叶斯决策论预测贷款是否违约

一 实验背景与实验说明信用风险是指银行向用户提供金融服务后,用户不还款的概率。信用风险一直是银行贷款决策中广泛研究的领域。信用风险对银行和金融机构,特别是商业银行来说,起着至关重要的作用,但是一直以来都比较难管理。本实验以贷款违约为背景,要求使用贝叶斯决策论的相关知识在训练集上构建模型,在测试集上进行贷款违约预测并计算分类准确度。...

2021-10-24 15:11:56 4287 2

原创 图论(二):深度优先搜索的有关性质

本节主要关注深度优先搜索的有关性质,包括:括号化定理、白色路径定理、深度优先搜索边的分类。下一节会涉及拓扑排序与强连通分支的算法,这些性质是算法的基础。一 括号化定理 深度优先搜索的一个重要的性质是,节点的发现时间与完成时间具有括号化结构。以" (u "表示节点的发现,以" u) "表示节点u的完成,则所有的括号都适当的嵌套在一起。以下图为例,我们通过DFS后获得的d[ ]与f[ ](详情见图论(一)): 该定理的本质其实就是递归栈的情况,因...

2021-10-22 13:20:31 828

原创 2021SC@SDUSC-PALISADE(四)密钥生成KeyGen

通过前面的三篇博客,我们已经对BGV方案有了初步的认知,从这篇博客开始就进入了我们的源码分析模块了,本篇博客重点分析的是bgvrns.cpp的密钥生成模块——KeyGen。bgvrns.cpp源文件实现了Brakerski-Gentry-Vaikuntanathan方案的Residue Number System (RNS)的变体。 KeyGen模块在源文件的开头部分:template <class Element...

2021-10-18 16:25:39 486

Java swing商城+简单聊天系统+论坛

Java swing课设

2021-05-12

空空如也

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

TA关注的人

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