- 博客(34)
- 收藏
- 关注
原创 关于异常处理
一般有两个地方,底层或者说异常会发生的地方,以及顶层或者说所有底层代码向上集中的地方。在底层捕获的好处即异常信息完整,日志完整,方便调试,但是需要在所有会发生的异常的地方进行捕获处理,有时候可能会造成冗余;当你发现已有异常类不能精确处理自己代码中的异常情况时,自然而然的就知道需要自定义异常。精确处理一般情况下是很重要的,因为不同的异常情况的处理方式一般不同。但是不只是想简单在需要的地方加上的try-except,想要从整个项目看让异常处理更加优雅,一直在思考应该怎么做。
2026-01-11 16:17:14
197
原创 关于scrapy
一个project下可以有多个spider,而settings、items、pipelines等都是一份。一般情况下对于有相似或者同构的目标爬取内容的多个网站或网页(意味着最终要获取的数据结构、数据处理入库逻辑相近)就可以放在同一个project中,然后一个spider对应一个网站或网页去实现相应的爬取逻辑。简要的非并发scrapy爬取经验,制成食谱方便食用,不知道是否已经过时,不过尚可用。1、pipeline类大致结构。四、spider.py。五、pipeline。
2025-07-09 07:55:57
519
1
原创 一些共识协议与算法
候选者接收到来自Leader发送来的心跳AppendEntries RPC,若RPC的Term编号≥自身的Term编号,则承认该Leader,自身状态变为Follower,否则拒绝承认Leader,状态仍然为Candidate;c、状态同步:接收到其他节点的状态信息后会与本地的状态信息进行比较,若发现有更新则会进行状态同步,同时会将更新的状态信息广播给其他节点,其他节点也会这样做。· 如果接受者未收到过编号大于n的准备请求,则接受提议(n,v),并更新自己的状态,否则拒绝此次接受请求。
2025-07-06 19:16:54
553
原创 Zero-knowledge proof零知识证明
Alice和Bob两者具有相同的生成元G,PK=sk*G(基于在离散对数和椭圆曲线离散对数中已知G和PK=sk*G,求sk很难)(生成元定义:群中的某个元素,通过该元素的群运算可以生成群中的所有元素)Alice要伪造私钥sk,则需要使验证方程消去PK项,从而需要伪造R=r*G-c*sk,但是由于c是从R得来的,产生于R之后,且由于Hash函数的单向性,不可能伪造。Alice可以选择一个r,然后构造R=r*G-PK和s=r,从而验证过程变为:r*G=r*G-PK+PK。同时证明v在某个范围内。
2025-07-02 19:59:57
724
1
原创 Secret Sharing秘密共享
1、思想:将秘密拆分成多个部分,每个部分成为一个份额,分给不同的参与者。只有当至少t个参与者合作时才能恢复原始秘密。使用拉格朗日插值法,根据这些点重构多项式f(x),然后计算f(0)即为秘密s。阈值秘密共享:要求至少t个参与者才能恢复秘密,如Shamir方案。选择n个不同的x值,计算对应的f(x)值,得到n个份额。选择一个大素数p,并构造一个t-1次多项式。线性秘密共享:基于线性代数。为秘密s,其余系数为随机数。加性秘密共享:基于位运算。收集至少t个份额,即t个。一般访问结构秘密共享。
2025-06-30 21:58:36
424
原创 linux下fabric环境搭建
1、https://golang.google.cn/dl/:将安装包下载解压到/usr/local目录下,存为go目录。(3)修改fabric/scripts下的bootstrap.sh,将BINARIES从true变为false。并将fabric-samples放在/fabric/scripts目录下。三、go(若用go语言实现链码和fabric sdk。一般在下载fabric源码时一并下载了,若没有,则执行。4、安装测试:go version。二、安装docker。1、fabric源码。
2025-06-30 11:28:25
793
原创 题目类型——左右逢源
2、解法:从左到右遍历一遍得到每个元素求解所需的其左侧元素的条件,再从右到左遍历一遍得到每个元素求解所需的其右侧元素的条件。于是时间复杂度只会是O(n)1、针对的题目:(不一定正确或完整)3、题例:也许会继续补充。
2025-06-13 22:17:27
335
原创 进制位..
由此可见,只要出现了一个大于0的数n,那么数2n、3n...都得出现,直到某个k使得kn=1x≥10(0≤x≤R-1),导致数1也必须出现。而1+1=2,1+2=3,1+3=4...以此类推,数1可以生出所有数(包括0,因为无论进制R为多少10也会出现)。从而只要出现了一个大于0的数,那么0~R-1的所有数都必须出现,即出现了1+(R-1)=R个数,则N=R。中是否R=N看了前两篇题解后的理得比较清晰的思考。而题目中3≤n≤9,则必出现大于0的数,从而必有R=N。在加法表中出现了N个数,进制为R。
2025-03-19 15:44:44
250
原创 区间动态规划
区间动态规划:·dp矩阵中的下标不再表示类似坐标定位作用,而是表示区间·一个区间的子区间即这个区间的子问题,求解区间的问题依赖于求解其子区间的问题。
2025-03-19 14:10:34
310
原创 [NOIP1999 提高组] 导弹拦截 - 洛谷
Dilworth定理:数列非递增子序列(不一定连续)的最少数量——>数列最长递增子序列的长度。
2025-01-17 19:25:05
390
原创 [NOIP2001 提高组] 数的划分 - 洛谷
动态规划算法(第三维相当于表示当前数),但是只有一个用例通过,不知道哪里出了问题。里面多加了些取值范围判断以降低复杂度。递归的复杂度一般劣于动态规划,当然本题是可以用动态规划的。我最初尝试实现了一个在选择。的时候考虑前面的数的大小,让所有数都能从1开始取。,为了加快内存访问速度,可以将n、k的位置对调一下。看到k维只需访问k-1,便知道空间上可以优化。状态转移方程:dp[n][k]=于是我在想办法避免在划分出。之后又实现了递归的算法。
2025-01-01 17:50:49
902
原创 填涂颜色 - 洛谷
1、原本想在输入的时候就对《处于边界》或《左邻居或上邻居为圈外0》的0做处理以加快速度,但是这样做了之后貌似更慢了,优化失败。
2024-12-16 20:44:31
378
原创 [NOIP2005 普及组] 采药 - 洛谷
1、分析:经典的动态规划问题。状态方程dp[t][i]涉及两个维度,时间t和草药i,表示在时间t内前i个草药可获得的最大价值。印象里动态规划问题都可以在空间上进行降维优化,本题也可以,不过比较特殊的一点是本题只有一个维度可以取消。
2024-12-02 22:16:44
498
原创 山东大学软件学院项目实训-创新实训-角色疆界-会话数据响应与存储管理
(2)项目中用于接收前端与会话有关的请求并相应,主要支持会话id生成、会话内容存储、会话查询、会话删除等功能。(1)面向文档的 NoSQL 数据库管理系统,高性能、高可用、易扩展,适用于处理大量的非结构化和半结构化数据。(1)简单、灵活但功能完善的web开发框架。(2)非常适合存储会话这样的半结构化数据。
2024-06-23 23:16:03
413
原创 山东大学软件学院项目实训-创新实训-角色疆界-Vue基础
1、单向绑定,两种写法,用户不可修改绑定的量web.info_enter与web.info_space。1、ref:用于存储单个基本类型的数据,如数字、字符串。2、键盘事件绑定,keydown表示按键按下即响应,keyup表示按键放开即响应。2、reactive:响应式对象(即用户可修改),可直接通过属性名修改值。2、v-show,显示与隐藏,根据指定值决定是否显示当前模块。1、v-if,条件渲染,根据指定值决定是否显示当前模块。2、双向绑定,v-model,用户可修改绑定的量。四、值动态绑定与修改。
2024-06-23 20:17:05
379
原创 山东大学软件学院项目实训-创新实训-角色疆界-ES基础
1、基本定义:fetch是一个基于Promise的api,它可以发送http请求并接收服务器返回的响应数据。1、基本定义:axios是基于Promise的网络请求库,它可以发送http请求并接收服务器返回的响应数据。(5)splice(要删除元素的索引,要删除的元素数量),删除元素,返回被删除元素组成的数组。1、基本定义:支持无参、默认参数,有返回值(无需指定类型)(1)改、删、元素存在判断、大小、清空。(1)增、删、元素存在判断、大小。(1)改、删、元素存在判断、大小。6、set:允许不同类型元素。
2024-06-23 18:58:32
353
原创 山东大学软件学院项目实训-创新实训-角色疆界
创建EventSource实例。EventSource对象接口用于接收服务器发送的事件。它通过HTTP连接到服务器,以text/event-stream格式接收事件,并且连接不会关闭。在与大模型对话中我们输入文本,回车或按按钮发送提问。判断会话是否结束,当回复消息中提示回复结束时显式(主动)地关闭连接。判断是否是第一次会话,如果这是第一次会话则需要相关处理。的函数的设计,分要点展示主要的流程与代码。处理接收到的回复,为回复的展示做准备。
2024-05-30 17:40:01
369
原创 VSCODE中文乱码
原因: 控制台或者文件编码不支持中文(一般用utf-8或者gbk) 控制台与文件编码不一致。如控制台为gbk(chcp 936),而文件编码为utf-8 解决(以utf-8为例): vscode右下角显示的是文件编码,点击然后vscode正上方会跳出选项,选择Reopen with Encoding,找到utf-8并点击选择(修改的是当前文件编码) vscode左下角点击小齿轮Manage,然后点击settings,Searching settings搜索框输入encoding,然后在显示
2024-05-08 16:01:49
889
1
原创 在ubuntu中install软件包时提示无法定位
先更新:sudo apt-get update && sudo apt-get upgrade 检查软件包的名称输入是否有误 检查正确的软件包名称(比如libomp):apt-cache search libomp。然后根据给出的软件包名称进行安装。
2024-04-21 16:49:43
918
1
原创 windows vecode latex中文报错以及不显示
其中[GBK]也可能是[UTF8]等,取决于vscode右下角显示的文件编码,两者要一致否则会报错。二、在tex文件中尽可能靠前的位置(如documentclass下一行)添加代码。
2024-04-12 11:08:21
1430
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅