数模算法总结
数模算法总结
下面这些算法分类并不绝对,有的算法可能同时属于好几类,但是只写在一类里。
算法类型矩阵分解
(摘自机器学习中SVD总结 (qq.com))
奇异值分解SVD,被用于PCA算法。
主成分分析PCA数据降维。
属性约简算法Relief算法基于邻近实例的思想。
RoughSets算法粗糙集理论。
关联规则挖掘算法可以用来找出数据集中频繁出现的数据集合。
比如在一堆的购物清单中,找出 {牛奶、面包} 经常被一起购买。
拓展一下,用于判断单词中哪个词根词缀出现的最多。
Apriori算法通过对数据逐层迭代的方法,比较耗时。
产生大量的候选项目集,会消耗大量的内存。
AprioriAll算法改进Apriori算法,通过候选序列的逐级扩展和剪枝策略来减少搜索空间。
GSP算法与AprioriAll算法相比,GSP算法计算较少的候选集,并且在数据转换中不需要事先计算频繁集。
对于序列模式的长度比较长的情况,算法难以处理。
PCY算法改进Apriori算法,引进了哈希函数,降低Apriori算法频繁的扫描数据库,降低候选项集所占用的内存。
由于哈希函数的原因,有些非频繁项被映射到了 ...
最近的一些总结
最近做了几个小的项目,做个总结。
最近主要在整三个小网站
Umbrella167/HUGEMINI (github.com)
TnTeQAQ/HULaTeX (github.com)
TnTeQAQ/HUProblem_Analyzer (github.com)
下面是对这三个小网站的一个总结。
HUGEMINI第一个是给谷歌的gemini写了个web界面,类似的github上已经有很多了,如下
这个项目的前后端用时大概在,前端8:后端2左右,感觉前端根本不应该花这么多时间。
然后代码中用到flask后端渲染的基本没有,基本上都是靠原生js来处理了。感觉flask用了个寂寞。
这个项目中遇到的几个问题感觉还需要学习完善一下。
前端搭建用时过长,相加新功能就可能对每个模块进行大幅改造。(不大清楚现在的框架能不能做到快速搭建好看有用的页面)
git的使用问题,问就是完全不会用,版本搞得一坨,还有上传文件时包含了key,有没有办法在代码中单独注释一段让git忽略,难道每次上传都要去删key吗(有点麻烦)。
HULaTeX给同学写的网页LaTeX编辑器
这个写的挺不满意的,但感觉主要 ...
思科交换机命令
最近在上计算机网络的实验课,有些命令怕忘了,做个笔记。
交换机命令查看虚拟局域网
1Switch#show vlan
创建虚拟局域网
123456789101112Switch#vlan database% Warning: It is recommended to configure VLAN from config mode, as VLAN database mode is being deprecated. Please consult user documentation for configuring VTP/VLAN in config mode.Switch(vlan)#vlan 2 #创建vlan2VLAN 2 added: Name: VLAN0002 # 或者直接进入退出Switch(config)#vlan 10Switch(config-vlan)#ex
设置ip地址
123456Switch(config)#int vlan 2Switch(config-if)#%LINK-5-CHANGED: In ...
软件设计原则-SOLID原则
笔记的大部分内容参考《架构整洁之道》。
SOLID原则的主要作用就是告诉我们如何将数据和函数组织成为类,以及如何将这些类链接起来称为程序。
一般情况下,软件构建中层结构的主要目标如下:
使软件可容忍被改动。
使软件更容易被理解。
构建可在多个软件系统中复用的组件。
SOLID原则的内容主要为如下。
SRP:单一职责原则SRP原则全称为Single responsibility principle,但这并不是指每个模块都应该只做一件事。而是任何一个软件模块都应该只对一类行为者负责。
反面案例:重复的假象某个工资管理系统中的Employee类有三个函数calculatePay()、reportHours()和save()。
这个类的三个函数分别对应的是三类非常不同的行为者,违反了SRP设计原则。
calculatePay()函数由财务部门制定,负责向CFO汇报。
reportHours()函数由人力资源部门制定并使用,负责向COO汇报。
save()函数是由DBA制定的,负责向CTO汇报。
这三个函数被放在了同一个类中,实际上就等于使这三类行为者的行为耦合在了一起,这有可能会 ...
python Web项目布局分析
元旦本来在家躺着摆烂的,突然有人喊我帮他做个django的期末作业,还说要v我50(什
我看起来像是那种会向好朋友伸手要钱的人吗????
只是觉得以后要自己也要做其他项目,之前也只接触过一丢丢flask(半懂不懂的
所以我就答应了下来(是为了提升自己(反复强调
但是他的deadline就在第二天中午,最后还是没肝完(残念
但是他把他从小红书上买来的代码发我了(
所以这篇博客就是来看看别人写的代码和自己写的的代码的区别在哪,浅浅总结一下。
简单项目实践(Django)要求
自己写的项目的布局如下:
123456789101112131415161718192021222324252627282930index├── db.sqlite3├── exam // app名│ ├── __init__.py│ ├── admin.py│ ├── apps.py│ ├── migrations│ ├── models.py│ ├── tests.py│ └── views.py├── index ...
区块链学习笔记Day7:Solidity语法
学区块链做的笔记Day7,大部分内容(99%)来自《精通以太坊》和WTF-Solidity。
接Day6的内容,主要学习Solidity的语法。
控制流Solidity的控制流与其他语言类似,主要包含以下几种:
if-else1234567function ifElseTest(uint256 _number) public pure returns(bool){ if(_number == 0){ //这语法感觉跟c语言一样 return(true); }else{ return(false); }}
for循环1234567function forLoopTest() public pure returns(uint256){ uint sum = 0; for(uint i = 0; i < 10; i++){ //这个也和c语言一样 sum += i; } return(sum);}
while循环1234567 ...
区块链学习笔记Day6:智能合约与Solidity(变量)
学区块链做的笔记Day6,大部分内容来自《精通以太坊》和WTF-Solidity。
之前的笔记感觉抄书的东西还是太多了,以后尽量自己总结了。
什么是智能合约
计算机程序智能合约就是计算机程序。
不可改变一旦部署之后,智能合约的代码就不能被改变。更改智能合约的唯一办法就是部署一个新的实例。
确定性的对于触发智能合约执行的交易上下文,或执行时的以太坊区块链状态,智能合约执行结果的输出对于每一个运行或调用它的人来说都是一样的。
以太坊虚拟机上下文智能合约运行在一个非常有限的执行环境中。它们可以访问自己的状态,调用合约交易的上下文信息,以及有关最近区块的信息。
去中心化的世界计算机EVM作为每一个以太坊节点的本地实例运行,但是因为所有EVM都是运行在相同的初始状态,并且会输出完全相同的最终状态,所以整个系统就像是一台世界计算机。
合约的生命周期每一个合约实例都通过以太坊地址来表示,这个地址由合约的创建交易在创建账户和随机数时生成。合约没有私钥,作为合约的创建者们不会在协议层获得相对其他用户而言的任何特权(但是可以把这种特权写进合约内部)。
合约只有在被交易调用时才会被执行。一个合约可以 ...
以太坊常见变量表
学区块链时的一些协议名和变量名,怕忘记了所以专门列张表。
名称
描述
EOA
外部账号
RPC
远程过程调用协议
ABI
应用程序二进制接口
nonce
一个序列编号,由创建这个交易的外部账号提供,用于防止交易的重放攻击。
recipient
目标以太坊地址。
v
特殊签名变量,包括链ID,恢复标识符。
UTXO
未花费输出机制
gas
以太坊的燃料(不是以太币,是一种独立的虚拟货币)
RLP
递归长度前缀编码标准
ECDSA
椭圆曲线数字签名算法
Keccak-256
SHA-3:Keccak-256算法(有时候就是SHA3有时候要和SHA3区分开)
k
用于签名的私钥
K
签名方(外部账户持有人)的公钥
q
临时私钥
Q
临时公钥
m
经过RLP编码的交易数据包
F_{sig}
签名算法
Sig
输出的数字签名,这个签名包含两部分内容,通常称为r和s
r
数字签名中的r值就是临时公钥Q的x轴的值
secp256k1
椭圆曲线,定义为:xy^2\ \rm mod \ (p) = (x^3+7 ...
区块链学习笔记Day5:交易
学区块链做的笔记Day5,大部分内容来自《精通以太坊》。
交易是由外部账户发出的经过签名的消息,通过以太坊的网络传播,由矿工记录在区块链上。从另一个角度来看,交易是唯一能够触发区块链状态改变,或触发EVM上的合约执行的东西。以太坊是一个全局的单体状态机,交易是唯一能够让这台状态机向前推进并改变状态的东西。合约并不会自动运行。以太坊也不会在“后台”运行。所有这一切,都是由交易触发的。
交易的结构交易是一串打包在一起的二进制数据,包括如下内容:
nonce一个序列编号,由创建这个交易的外部账号提供,用于防止交易的重放攻击。
gas price交易发起方愿意支付的gas(单位:wei)价格。
gas limit交易发起方愿意为这个交易支付的最大gas数量。
recipient目标以太坊地址。
value发送给目标地址的以太币数量。
data附在交易中的可变长度的数据。
v,r,s由构建交易的外部账户提供的椭圆曲线签名的三个组成部分。
交易内容的结构采用递归长度前缀(RLP)编码标准。这个标准是以太坊专门创建的,主要是为了打包准确且字节合适的数据。以太坊交易中所有的数字都采用大端模式 ...
区块链学习笔记Day4:钱包
学区块链做的笔记Day4,大部分内容来自《精通以太坊》。
钱包技术概述
抽象来说,钱包主要是一个用户界面。钱包控制对以太币的访问、管理私钥和地址、跟踪账户余额、创建并签名交易。
从更聚焦的角度而言,钱包这个词特指用来存储和管理用户密钥的系统。
一个针对以太坊钱包的常见误解是认为钱包中包含以太币或者代币。实际上,钱包中只保存了密钥。以太币和其他各种代币都保存在以太坊区块链上。用户使用钱包中保存的密钥来签名交易,进而控制属于他们的以太币或代币。简单的说,以太坊钱包就是一个钥匙圈。
钱包主要分两类,取决于它所保存的密钥之间是否存在关联。
非确定性钱包其中保存的每一个私钥都是通过不同的随机数相互独立生成的。私钥之间没有任何关联。这类钱包被称为JBOK(Just a Bunch Of Keys)钱包。
确定性钱包其中所有的密钥都是从一个主密钥衍生而来的,这个主密钥就是种子密钥。这类钱包中所有的密钥之间都存在关联关系,如果获得了“种子密钥”,则可以重新生成所有密钥。确定性钱包有多种密钥派生方法。最常用的派生方法是使用一个类似树形的结构,我们称之为层级式确定性(hierarchical det ...