云起のBlog
type: channel
link: http://www.undem.cn/
description: 每天进步一点点
items: 从校园卡项目提交来记录 git 的使用
items: 测试
items: 在 mac 上安装 conda 并在 vscode 中应用
items: 2022——望回首已过万重山
items: 计算机网络笔记
items: 数据结构笔记
items: 密码学笔记
items: 概率论笔记
items: Python爬虫总结(简书，少数派，酷推)
items: 团建一元伍角问题的解决方案

从校园卡项目提交来记录 git 的使用
type: item
date: 2025-08-05T15:36:00+08:00
description: 最近用 ai 辅助编写了一个校园卡号码筛选小脚本,爬了有 9000+条号码数据号码筛选页面实现的功能:特定号码字段的搜索特定规则预制筛选点击号码标记为已喜爱,方便后续筛选在已喜爱界面右键号码可以添加备注标红显示符合规则的数字(方便查看)支持自定义添加靓号规则(实现模块化)而在爬虫页面实现的功能:支持设置停止条件支持设置随机等待间隔(防止访问过快被 ban)支持自定义搜索字段由于已经选到心仪的号码,便决定不再维护此项目,上传的 github 上去,因此便学了学 git 的使用git 使用教程1.首先先在 github 上新建一个仓库,记录下 git 的地址2.输入git init，git init在当前项目的目录中生成本地的git管理（会发现在当前目录下多了一个.git文件夹）3.输入git add . git add . 这个是将项目上所有的文件添加到本地仓库中的意思，如果想添加某个特定的文件，只需把.换成这个特定的文件名即可,例如:git add envlist.txt4.用git status 可以查看当前仓库的提交状态(这一步可以忽略，只是查看提交到本地的代码是否成功);git status5.输入git commit -m "first commit"；git commit -m "first commit双引号内部表示对这次提交的注释，双引号里面的内容可以根据个人的需要改。会出现在文件的后方6.输入git remote add origin https://github.com/huangzhenhong520/test.git ,将本地的仓库关联到github上。git remote add origin https://github.com/huangzhenhong520/test.git7.输入git push -u origin master，把代码上传到github仓库git push -u origin master实际遇到的问题:1.第七步执行失败,提示error: src refspec master does not match any error: failed to push some refs to 'https://github.com/shiyunqi001/phone_select.git'是由于仓库中不是 master 而是 main,将名称替换即可2.提交时提示To https://github.com/shiyunqi001/phone_select.git ! [rejected] main -> main (fetch first) error: failed to push some refs to 'https://github.com/shiyunqi001/phone_select.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.这是因为远程仓库和本地文件不同步导致的,(比如仓库新增 README.md,而本地没有这个文件),解决办法就是先将仓库的内容合并到本地git pull origin main接着再 push 到远程仓库即可3.远程仓库和本地出现分叉时设置合并策略git config pull.rebase falsepull.rebase false 就是 merge 策略。这个设置是一次性的，设置好之后，以后在这个项目里就不用再输了。4.显示隐私信息git config --global user.name "shiyunqi001"修改提交的 ID5.修改终端的显示方式直接自定义终端提示符（Prompt）的显示格式。终端用的是 Zsh (因为末尾是 %)，所以可以通过修改 ~/.zshrc 文件来实现。打开终端使用一个文本编辑器打开 Zsh 的配置文件。 用 nano 这个简单的行内编辑器来操作。Bashnano ~/.zshrc(如果提示文件不存在，不用担心，这会创建一个新文件。)在文件末尾添加一行喜欢的…

测试
type: item
date: 2025-06-18T02:52:06+08:00
description: 测试 111

在 mac 上安装 conda 并在 vscode 中应用
type: item
date: 2025-06-13T02:35:00+08:00
description: 0x0 简介用这个教程简单记录一下 conda 在 mac 上的安装教程以及怎样在 vscode 中切换环境[引用]https://blog.csdn.net/Linshaodan520/article/details/1387342340x1 什么是 conda?在初学Python之时，就常听别人说用 conda 有多方便，一直不以为然，直到接触需要调用有大量依赖库及版本间有显著差异的深度强化学习领域时，才知道用 conda 管理环境会有多方便，那么什么是 conda？Conda 发行并开源于 2012 年，是一个可以在Windows、maxOS和Linux上运行的包和环境管理系统，它能够适用于任何语言的打包和分发，包括Python、R、Ruby、Lua、Java、C/C++等。Conda 允许用户方便地安装、运行和更新不同版本的二进制软件包与该计算平台所需要的所有库（以及库的依赖项）。在实际当中，利用 conda 最主要的目的是为了使得不同版本Python环境、不同版本模块能够共存和灵活切换。除了 conda，我们常常看到的 Anaconda 和 Miniconda 又是什么呢？接下来将介绍 conda 与它们之间的区别。0x1.1 Conda 与 Anaconda 的区别诸如 Anaconda、Miniconda、Bioconda（用于计算生物学）等都是基于 conda 的工具软件，这些软件均包含 conda 包和环境管理器，但两者的概念仍要进行一定的区分。Anaconda 是一个大而全的软件发行版，是一个预先建立和配置好的模块集，能够安装在操作系统上使用。它包含了Python本身和数百个第三方开源项目的二进制文件，如 numpy、scipy、ipython、matplotlib等，这些库基本是为了方便处理数据科学相关的问题。Miniconda 也是一个软件发行版，但它仅包含python、conda 和 conda 的依赖项，本质上就是一个空的用来安装 conda 环境的安装器，它没有 Anaconda 中那么多的包，可以理解为 Anaconda 的精简版，能够方便用户按照自己的需求，从零开始构建任意的环境。尽管可以独立地下载安装 conda 而不用 Anaconda 和 Miniconda，但后两者为提供了 conda 安装环境，使用起来会更方便。0x2 下载安装这里我们演示 Miniconda 的下载安装，软件包的下载来源有两种：官方网站：https://docs.anaconda.com/free/miniconda/miniconda-install/清华源：https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/，个人试了下镜像源关闭了，好像是因为未取得 Anaconda 和 Miniconda 的授权。(1)检查系统条件是否满足在下载安装 Miniconda 之前，先检查下电脑的系统及硬件等条件是否符合安装要求。如果因为系统版本较旧的原因，可以下载对应的旧版本 Miniconda，以下是官网中对系统要求的描述.(2)下载相应的安装包如下图，以 Mac installers 为例，不同版本的 Miniconda 安装包可以支持的最高版本的 python 情况不同，可以按需下载，这里我下载了支持 python3.12 的软件版本.(3)执行安装下载到后缀为 pkg 的 miniconda 文件后,一路点安装即可,这里不再赘述(4)检查是否安装成功完场上述步骤之后，需要再检查下 conda 是否能够正常使用打开终端，在终端中输入 **conda --version，回车如果返回了 conda 版本信息则说明安装成功。0x3 配置并使用conda至此完成了 conda 包和环境管理工具的安装，此时我们可以进行一些简单的配置并尝试创建 conda 环境，安装需要的库和运行简单的 python 程序。配置下载源Conda 包管理器下载各类库的来源是国外的服务器，常常会面临下载速度慢的问题。可以为 conda 添加软件包通道（channel），以清华源为例，在打开的 **Anaconda prompt 控制台窗口中，输入如下命令可以将清华源的两个地址添加到通道。 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/为了在查看 conda 软件包通道的下载链接时能显示我们手动配置的通道地址…

2022——望回首已过万重山
type: item
date: 2023-02-17T22:55:00+08:00
description: [hplayer][Music server="netease" id="31649312" type="song"/][/hplayer]写在前面失败总是贯穿人生始终。为什么要提起这段话呢，因为我在博客内使用了emoji表情，而导致之前写的两千多字全部丢失，让人遗憾。在短暂的错愕后，决定重振旗鼓，再次凭借记忆写写之前写下的话。第一遍写下的幼稚的话就不再写第二遍咯。这篇文章写在2023年2月17日，严格意义上也不算是年终总结，不过我还是愿意将其归类为年终总结，前年的年终总结：[post cid="94" cover="" size=""/]下面开始吧。感情[scode type="red" size="simple"]有遗憾，更多的是希望[/scode]回看自己曾经在博客记下的舔狗日记，不禁微微苦笑，曾经也是个被情所伤的人呢。不过往事随风，过去的事情也都过去了，也不再去回想好了。好在遇见现在依旧在身边的VC同学，她天真可爱，身材也很好，即使偶尔有小脾气我们之间也能彼此尊重，努力解决，实属良配。我能做的只有好好去爱，努力从情侣的激情转变为家庭的责任。生活[scode type="red" size="simple"]迷茫，还是迷茫。[/scode]仔细想想，在20出头的年纪里，也该到了为事业发愁的时候了。关注过很多博客的博主，一个个技术出众，比我好的简直不是一点半点，我也当然清楚自己是属于最普通的一类，原本想提升的技术这两年也有所停滞，不能说一点没学，只能说进步不大。当然我也不是没有努力，知道有一些试错成本的情况下，我也曾经尝试过许多职业。因为从小文采尚可，便在2022简单尝试网络小说创作。说是简单，实际上那段时间吃得苦却一点也不少，没日没夜思考故事情节，天天昼夜颠倒，看各种教程，和各种编辑对线。经历过无数的拒签/退稿之后，终于发布了自己的作品，当然，也曾经上了小推荐和大推荐，但终究还是没有坚持下来，或许是看不到未来吧，最终只收获三百元全勤稿费。也尝试过卖货/主播/代练....一系列，没有一项适合我。或许以后还是当个码农？或许从事网安？一切都说不准，但还是想在互联网行业待下去的。但现阶段除了迷茫又能做什么呢？只能加油了，任何时候觉醒都不晚。写下这篇博客的目的同样也是对生活的记录，希望日后翻看是有种“轻舟已过万重山”的畅快。关于未来[scode type="red" size="simple"]希望考研上岸[/scode]想了很久，还是把这块的主题定为：希望考研上岸。也算对自己的美好祝愿吧。原本第一版博客中分析了很多各种出路，以及自己内心纠结的抉择。不过我隐隐约约瞧见了未来前途最明朗的一条路。当下ChatGPT的爆火，让我看到了未来人工智能有无限的可能，或许修一个人工智能专业的硕士甚至博士，对未来的找工作以至于创业有更多的可能。目前想了几个构想，一个是AI+理发行业，另一个是AI+桌游，还有就是AI+游戏制作。AI到未来十年二十年内的趋势，应该都是和许多行业结合起来。倘若能深入内部学习算法，能自己独立创作AI，或许真的抓住了这个时代的风口。至少在我看起来，应该比这几年大力宣传的安全有更广阔的市场。写写2023的目标吧，明年五六月回来挖[goal title="2023"][item check="false"] 考研上岸人工智能，加油。[/item][item check="false"] 戒掉坏习惯，恢复跑步，练出腹肌 [/item][item check="false"] 和VC去更多更好玩的地方，维持美好的感情 [/item][item check="false"] 培养一些爱好吧，多读几本书 [/item][/goal]写在后面希望自己终究踏破重重迷雾，找到自己的路，加油。也有自己想要的未来，也有独特的想法，那就尽力去实现吧。或许这一年内的主旋律就是考研的记录了，到时候会多拍几张图片，记录考研经历。2024年年终总结再见！

计算机网络笔记
type: item
date: 2021-12-31T02:52:00+08:00
description: 计算机网络内容总结第一章 网络概述一、 计算机网络最重要的功能1、数据通信2、资源共享3、分布处理4.重要基本特点连通性和共享二、 因特网的两大组成部分1.2.三、 三种交换方式1.分组交换2.报文交换3.电路交换四、计算机网络的分类：按地域（中英文名称）五、 时延：时延的4个组成部分、计算。1.发送时延2.传播时延3.发送和传播图解4.处理时延5.排队时延6.时延带宽积带宽就是发送速率，单位是比特每秒时延带宽积单位是Bit六、 协议（定义、三要素及其含义）1.定义2.组成要素七、OSI参考模型、TCP/IP协议的层次结构及其作用1.OSI（开放系统互连）2.TCP\IP`八、5层体系结构各层及功能1.模型2.发送数据过程3.作用4.协议数据单元PDU1.物理层:比特bit2.数据链路层帧:Frame3.网络层:数据报Packet4.传输层:报文段Segment第二章 物理层物理层的四个特性:机械特性,电气特性,功能特性,规程特性一、关于信道（通信方式三种）1.单向通信（单工）2.双向交替通信（半双工）3.双向同时通信（双工）4.计算系统的最大传输速率理想系统无噪声:奈氏准则有噪声的信道:香农定理:香农公式表明，信道的带宽或信道中的信噪比越大，信息的极限传输速率就越高二、 常用的导向性传输媒体及其特性1.双绞线比同轴电缆快，比光缆慢，抗电磁干扰能力强2.同轴电缆抗干扰能力强3.光缆带宽大，更轻三、常用的非导向传输媒体短波、微波、地面接力、卫星四、信道复用1.FDM频分复用。所有用户在同样的时间占用不同的带宽。2.TDM时分复用。所有用户在不同的时间占用同样的频带宽度。3.STDM统计时分复用。STDM帧中的时隙不固定的分配给每个用户。4.WDM波分复用。光的频分复用5.CDMA码分复用（码分多地址）。每个用户可以在同样的时间使用同样的频带进行通信。各用户使用经过特殊挑选的不同码型，因此不会造成干扰。五、 CDMA工作原理及计算1.原理2.计算算出来1则发送1，算出来-1则发送了0，算出来0则不发送数据。第三章 数据链路层一、数据链路层协议的三个基本问题1.定义2.三个问题（1）封装成帧当IP数据报长度超过最大传输单元后，进行拆分（2）透明传输字节填充法图解：（3）差错检测存在比特差错：策略：冗余信息与正确信息存在某种数学关系，接收方根据冗余信息判断数据是否正确纠错码：充足的冗余信息检错码：适当的冗余信息二、差错检测检错码：循环冗余检验原理步骤 举例 计算添加在数据后面的校验位：多项式为n阶P是n+1位，余数要求n位，不够在前面补零三、PPP协议1.协议组成(1) 提供一个将IP数据报封装到串行链路的方法。(2) 链路控制协议LCP（Link Control Protocol）当线路不再需要时，挑出这些线路，测试它们，商议选择，并仔细地再次释放链路控制协议。（3）一套网络控制协议NCP（Network Control Protocol）其中每一个协议支持不同的网络层协议，如IP、OSI的网络层等。2.PPP帧格式3.字节填充法4.零比特填充法四、 局域网按拓扑结构的分类新鲜幻术五、CSMA/CD协议CSMA:载波监听 多点接入CD:碰撞检测六、最短帧长的计算争用期:长度/信号传播速率最短帧长=争用期内可发送的比特数七、以太网（标准局网）的最短帧长（以太网的MTU 1500字节）64字节八、 MAC帧格式（首部长度）九.以太网标准10BaseT的含义在双绞线上传输速率为10mb/s的以太网十.扩展的以太网集线器、网桥、交换机工作的层次集线器:物理层 一个端口对多个端口网桥：数据链路层 一个端口对一个端口交换机：数据链路层 多个端口 = 多接口网桥使用交换机和集线器的以太网每个用户的平均带宽交换机：不损失带宽，例如3个100M用户连入交换机，总带宽为300M集线器：取决于集线器自身的属性，若为10M集线器，假如是1G的带宽用集线器连入三台用户，三个用户的带宽也只有10M，而且集线器同一时间只能有一个用户发送数据网桥（交换机）转发分组时使用的地址（硬件地址/物理地址/mac地址）mac地址交换机自学习算法第四章 网络层一.网络层的主要协议IP协议与IP协议配套使用实现其功能的还有地址解析协议ARP逆地址解析协议RARP因特网报文协议ICMP因特网组管理协议IGMP二.网络层提供的两种服务及其特点可靠的面向连接的网络服务不可靠的无连接的网络服务三.网络互联的设备（路由器），路由器的任务（转发收到的分组）路由器转发收到的分组四.IP地址五.ARP协议全称：地址解析协议将IP地址映射成MAC地址原理流程：五.IP数据报的格式TTL:该字段指定IP包被路由器丢弃之前允许通过的最大网段数量片偏移：用该分片数据在原始数据的位置/8 （不包括首部的…

数据结构笔记
type: item
date: 2021-12-25T00:54:00+08:00
description: 第一章 绪论数据结构定义、数据逻辑结构的分类、两类物理存储方式及特点、时间复杂度的计算。1.数据结构定义数据结构(Data structure)： 相互之间存在一种或多种特定关系的数据元素的集合。程序=算法+数据结构2.数据逻辑结构的分类集合：结构中的数据元素除了同属于一种类型外，别无其它关系。线性结构：结构中的数据元素之间存在一对一的关系树型结构：结构中的数据元素之间存在一对多的关系。图状结构或网状结构：结构中的数据元素之间存在多对多的关系。3.两类物理存储方式及特点顺序存储结构（顺序映像）：逻辑相邻的元素物理存储位置相邻；链式存储结构（非顺序映像）：逻辑相邻的元素物理存储位置无关。4.时间复杂度的计算时间度量方法：语句执行的频度（次数）是问题规模的函数补充：第二章 线性表线性表的定义、非空循环单链表的特点；顺序表中插入、删除操作移动元素的个数；单链表的插入与删除操作时间复杂度计算，双向循环链表插入结点操作。1.线性表的定义定义： 0个或多个数据元素组成的有限序列。L=（a1,..., ai-1, ai, ai+1, ..., an）2.顺序表中插入、删除操作移动元素的个数插入移动元素：n-i+1个元素的后移删除移动元素：n-i 个元素的前移补充：删除元素的算法 算法时间主要耗费在移动元素的操作上假设删除元素的位置是随机等概率的，即概率为 1/n，则平均移动次数（期望值）为：(n-1)/23.非空循环单链表的特点从任意结点开始，可以找到表中其他结点。4.单链表的插入与删除操作时间复杂度计算均不需移动元素，时间复杂度为O(1)5.双向循环链表插入结点操作第三章 栈和队列栈和队列的逻辑特性，顺序栈的出栈、入栈，栈的常见应用，循环顺序队列出队和入队操作时队首队尾指针变化，循环顺序队列如何判队空、判队满、求队中元素个数。1.栈和队列的逻辑特性栈(stack)：只允许在序列一端进行操作的线性结构类型栈的操作特点：后进先出队列(queue)：只允许在序列两端进行操作的线性结构类型队列的特点：先进先出栈和队列统称为“操作受限”的线性结构2.顺序栈的出栈、入栈补充：InitStack：初始化空栈Push：进栈／入栈Pop：出栈／弹栈GetTop：读栈顶元素StackEmpty ：判断栈是否为空StackLength：返回栈的长度3.栈的常见应用4.循环顺序队列出队和入队操作时队首队尾指针变化//循环队列入队： int EnQueue(SqQueue &sq,int x)//入队 { if((sq.rear+1)%MaxSize==sq.front)//判断队满 { return 0; } sq.rear = (sq.rear+1)%MaxSize;//就相当于往上偏离了一个位置满了就会到初始的位置，因为模除循环 sq.data[sq.rear] = x;//把值写入 return 1; }//循环队列出队： int DeQueue(SqQueue &sq,int *x) { if(sq.rear==sq.front){//判断队空 return 0; } sq.front = (sq.front+1)%MaxSize;//就相当于往下偏离了一个位置满了就会到初始的位置因为模除 *x =sq.data[sq.front]; return 1; }5.循环顺序队列如何判队空、判队满font：队头rear：队尾Q.rear == Q.front 认为队空(Q.rear+1)% Q.maxSize == Q.front 则认为队满 //因为是循环队列6.求队中元素个数if(Q.rear>Q.front) length = Q.rear – Q.front; else//如果rear大于maxsize即到了新的循环 length = Q.maxSize + Q.rear – Q.front;第四章 串串的定义，空串和空格串的区别，了解串的模式识别算法。1.串的定义串是由零个或多个字符组成的有限序列，一般记为 s=‘a1a2…an’ (n≥0)相关概念：串的长度：串中字符的个数；空串：长度为0的串；空格串：由若干空格组成的串；子串：串中任意个连续的字符组成的子序列称为该串的子串，该串称为子串的主串；位置：字符在序列中的序号称为该字符在串中的位置。2.空串和空格串的区别空串：长度为0的串；空格串：由若干空格组成的串；3.了解串的模式识别算法BF算法（又称古典的、经典的、朴素的、穷举的）KMP算法（特点：速度快）BF算法若n为主串长度，m为子串长度，最坏情况下的比较次数：(n-m+1)*m若m<<n，则算法复杂度O(n*m)int Index(Sstring S,Sstring T,int pos){ i=pos; j=1; while (i<=S[ 0 …

密码学笔记
type: item
date: 2021-12-20T23:06:00+08:00
description: 第一二章作业1.信息安全的四个目标是什么1）机密性2）完整性 3）认证性 4）不可否认性2.密码学的定义是什么密码学是一门涉及数学,计算机信息科学的综合学科，是编码学和密码分析学的统称。3.密码体制由哪五部分组成？安全性通常由哪部分决定？明文.密文.加密算法.解密算法.密钥 五部分组成安全性通常由密钥决定。4.根据密钥的使用情况的不同，密码体制通常分为哪两类？对称密码体制和非对称密码体制第三章作业[scode type="red"]注意：本章字母转换为数字是从0开始的，即A对应0，B对应1,...依次类推**[/scode]即 字母转数字时：先转数字，再按通常情况下的数字转化-1数字转字母时：先按通常情况下数字+1，再转字母题目：1.希尔（Hill）密码加密密钥为一个nxn的非奇异矩阵，解密密钥为这个矩阵的逆矩阵。逆矩阵的求法： 先求矩阵A的伴随矩阵注意：伴随矩阵是(-1)^(i+j)x代数余子式,最后再对这个矩阵求转置再用伴随矩阵除以|A|得到逆矩阵注意：因为后面有mod26 所以任意除法都可以看做分子分母同时乘分母的逆元（mod26），这样就可以把除法化成乘法。加密就是用英文字母转化为对应数字然后乘以矩阵即可2.早期密码学主要是通过字符的哪两种操作实现的？换位 和 代换3.周期置换密码加密密钥为（1 5 6 2 3） 解密密钥则为（3 2 6 5 1）具体解释为原字符串第一个字母放在第五个位置原字符串第五个位置放在第六个位置...原字符串第三个位置放在第一个位置4.移位密码加密密钥为k=x即将原字符串字母转化为数字之后，再加上密钥k 模 26 得到的数字转化为字母即为加密后的密文5.仿射密码加密密钥为（p，q）加密方式为 字母转数字后得到xs=(x×p+q) mod 26解密密钥为 （y，q）y=3 mod 26的逆元解密时就用 （s-q）×y mod26即为解密密文6.维吉尼亚密码加密密钥为一串数字先将字母转化为数字，再将其分组，分组长度为加密密钥数字的长度，再将其进行移位密码处理例如：明文ABC加密密钥XYZ密文(mod26)A+XB+YC+Z第四章作业分组密码是一类对称密码1.分组密码的设计要实现哪两个目标？扩散和混乱2.分组密码算法的非线性性质主要有哪部分实现？S盒。S盒是许多算法唯一的非线性部件，它的密码强度直接决定了整个算法的安全强度。S变换(代替)S盒起到混乱的作用，P盒起到扩散的作用3.雪崩效应雪崩效应指的是输入(明文或密钥)即使只有很小的变化，也会导致输出产生巨大的变化现象。4.DES的S3盒的输入是101101，求输出b1b2b3b4b5b6=101101行对应b1b6=11=3列对应b2b3b4b5=0110=4所以对应S3盒的3行6列注意:S盒的行和列都是从0开始计数的。5.DES面临哪些攻击穷搜索攻击 线性分析 差分分析 6.DES和AES的分组长度是多少？有效密钥长度呢？DES的分组长度：64位 密钥长度：56位AES的分组长度：128比特 密钥长度：可为128,192,256比特7.除了子密钥异或，DES的一轮迭代还包含哪三种操作？选择拓展运算和选择压缩运算8.写出DES一轮迭代的算法表达式，并画出一轮迭代的框图。9.画出AES的加密算法框图10.AES一轮迭代主要包含哪四种操作？轮密钥加 字节代换 行位移 列混淆11.DES是面向比特的操作，那AES呢？AES是面向字节的操作第五章作业1.反馈移位寄存器主要包括哪两个部分？是由 n位的寄存器 和 反馈函数 组成的2.序列密码（流密码）的安全强度主要取决于什么密钥流的随机性3.4.n级线性反馈移位寄存器寄存器能够生成的序列最大周期是多少2^n -15.用BM算法破译n级线性反馈移位寄存器，需要已知多长的密钥流？2n第六章作业1.哈希函数是用来做什么的？哈希函数的这种单向特征和输出数据的长度固定的特征使得它可以生成消息或其他数据块的“数据指纹”，因此在数据完整性认证和数字签名等领域有广泛的应用，在现代密码学中起着重要作用。**2.什么是哈希函数的单向性？单向性指的是从一个明文到密文的不可逆映射，即只有加密过程，不能解密。3.什么叫哈希函数的抗弱碰撞性和抗强碰撞性？抗弱碰撞性：对于给定的消息M1，要发现另一个消息M2，满足H（M1）=H（M2）在计算上是不可行的。**抗强碰撞性：找任意一对不同的消息M1,M2,使H（M1）=H（M2），在计算上是不可行的。**4.MD5和SHA1分别产生多长的哈希值？MD5:128比特SHA1:160比特5.MD5和SHA1将消息分成多长的消息分组？512位6.生日悖论和集合相交问题是用来攻击什么的？哈希函数第七章作业1.什么叫做陷门单向函数？2.RSA算法、EIGamal算法和ECC算法的安全性分别依赖于什么数学…

概率论笔记
type: item
date: 2021-12-16T02:19:00+08:00
description: 一.事件概率事件，必然事件，不可能事件帽子分开戴，中间符号反过来概率的概念与性质P(A∪B∪C)=P(A)+P(B)+P(C)-P(AB)-P(AC)-P(BC)+P(ABC)二.古典概型古典概型也叫等可能概型 用样本数估计概率抽签原理 不放回摸出特定奖的概率不变三.条件概率乘法公式：对条件概率公式进行的变化，用来求P(AB)四.全概率公式与贝叶斯公式考试经常会出两个Bi仅有B和非B的简化版，如下计算题第一题 10分第一步 把事件假设出来第二步 根据已知概率把假设的时间概率表示出来第三步 用全概率公式计算某一个事件的概率**第四步 用计算过的概率计算贝叶斯公式（当分母）**五.事件的独立性概率为0的事件未必是不可能事件六.离散型随机变量及其分布分布律x有n个取值，则分布函数后面就有n+1行等号都在大于等于上面，第一条一定是0 最后一条一定是1七.常见的离散型随机变量二项分布，泊松分布八.连续型随机变量及其分布连续型随机变量单点概率为0：因为某一段上有无穷多个点概率等于零的点未必为不可能事件 知道 分布函数F(x) 求 概率密度函数f(x) -> 求导知道 概率密度函数f(x) 求 分布函数F(X) -> 求积分知道x的分布函数与概率密度函数 求 y 的概率密度函数1）确定y的取值2）确定y的分布函数3）求概率密度函数九.常见的连续随机变量十.二维离散型随机变量十一.二维连续型随机变量十二.二维随机变量函数的分布把x或者y用z和另一个变量替代再求积分这时候要注意可能会出现积分线的不同，要分段求x当纵坐标 z当横坐标十三.期望与方差数学期望：数学期望主要是描述数据大概分布的一个值，一个期望值方差：描述样本和期望值的离散程度，一般方差越小说明预测效果越准确数学期望数学期望的性质2,3,4条经常考到方差和标准差平方的期望-期望的平方方差的性质 常见的期望和方差正态分布：已知X，要求Y，只要算出Y的期望和方差，就能写出Y的正态分布函数正态函数加减乘除一个常数依旧是正态分布对谁求积分 就在哪条轴上划线对x 求积分dx 即找出x的取值范围为0到y十四.协方差与相关系数 如果X跟Y不相关，那么协方差等于0 Cov(X,Y)=0相关系数描述了两个随机变量X,Y之间的依赖关系如果越接近1说明越为正相关，越接近-1说明越为负相关 0说明无关已知X,Y的方差，和二者的相关系数，可以求出x和y的协方差十五.中心极限定理一些随机变量的加和概率 并且 发现这些随机实验独立同分布->要运用中心极限定理计算十六.抽样分布常用统计量：g（x1,x2,x3,...,xn）这种不含位置参数的变量叫做常用统计量常用分布十七.矩估计1.计算出一个总体均值的表达式2.令总体均值等于样本均值，反解出未知参数关于样本均值的函数3.求出样本均值，带入求估计值十八.最大似然估计（离散型）十九.最大似然估计（连续型）二十.无偏估计

Python爬虫总结(简书，少数派，酷推)
type: item
date: 2021-10-13T21:52:00+08:00
description: 近期参加了一个项目，主要是负责数据部分，现在这个时候也没我什么事情了，写一下项目中用到的爬虫总结。0.总结1)pymysql连接数据库 config = { "host": "xxx.com", "port": 0, "user": "xxx", "password": "xxx", "database": "xxx" } db = pymysql.connect(**config) cursor = db.cursor() #获取游标 sql = "xxx" #要执行的sql语句 cursor.execute(sql) #执行sql db.commit() # 提交数据 cursor.close() db.close()#关闭游标和数据库单次执行一条sql语句效率不如批量执行多条，也就是db.commit()可以在for循环最后执行。使用数据库后应关闭游标和数据库2）request.get()在长时间运行后报错可以运用get中的参数timeout= 和try来进行再次尝试，一般一到两次即可成功,网上查阅了很多资料，目前只有这一种管用。 i = 0 while i < 5: try: raw = requests.get(link, headers=header, proxies=proxies, timeout=2).text break except requests.exceptions.RequestException: i = i + 1 print('请求超时,正在重试...2')3）代理ip爬酷推时遇到了限制ip访问的情况，可以选用代理ip。https://www.xiaoxiangdaili.com/** 短效ip 一块钱一天，还挺合算 def changeip(): ip = requests.get('xxx').text while ip=='{"code":1010,"success":false,"data":null,"msg":"请求过于频繁"}': time.sleep(5) ip = requests.get('xxx').text print("更换ip成功" + ip) proxies = { 'http': ip, 'https': ip } return proxies在request.get()函数中只需要带上proxies=proxies即可raw = requests.get(link, headers=header, proxies=proxies, timeout=2)4）保存数据到数据库时遇到的代码报错原因是数据库用的字符格式是utf8,而emoji表情大多需要utf8mb4格式，其中包括utf8，遇到该类错误首先更改数据库字符格式，其次将emoji替换，可以用正则也可以用emoji包，最后再无法解决可以用replace替换附上从网上找到的正则替换代码 def filter_emoji(desstr, restr=''): # 过滤表情 try: co = re.compile(u'[\U00010000-\U0010ffff]') except re.error: co = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]') return co.sub(restr, desstr)5）beautifulsouprequest到的数据先用bs4解析 soup = BeautifulSoup(raw, "html.parser")soup.select真是个好东西，下面是他的选择方法6）正则主要是用到re.compile()和re.findall()以及re.sub()re.compile()：定义正则规则re.findall()：查找 参数为正则规则，数据，返回值为列表re.sub()：替换 参数为正则规则，要替换成的数据，数据1.简书简书的爬虫是我这三个爬虫中最好写的一个，没有任何反爬，用F12确定元素定位后，可以用正则，可以用bs4解析即可获得内容。不过写简书的翻页请求数据开始花了点功夫，请求的页数数据要写在post请求数据包里，用一个for循环即可解决，还有一个难点就是一开始数据出现大量重复，查阅资料后发现需要在request请求头里更新cookie数据，否则数据会出现重复，降低效率。ajax异步加载需要用F12抓包获取请求地址数据整理替换去重时使用正则替换re.sub()和text.replace() # -*- codeing = utf-8 -*- # @Time : 2021/8/3 16:17 # @Author : yunqi # @Fire : jianshu.py # @Software : PyCharm im…

团建一元伍角问题的解决方案
type: item
date: 2021-09-10T20:56:00+08:00
description: [post cid="65" cover=""/]刚学c语言时大一上学期有了这种思考有天睡觉前突然想起是否可以用这种解法枚举一个逐渐递增0.5的数用总金额除以这个数如果除不尽就说明一定会淘汰人，因为这样就无法凑成完整的一组#include<stdio.h> int main(void) { int man,woman; int total; printf("男生代表一元 女生代表五角\n"); printf("请输入男生和女生的人数：\n"); scanf("%d %d",&man,&woman); total=man*10+woman*5; //小数没有%符号，转换一下 int i=10; float x; while(i<total) { if(total % i != 0){ x=(float)i/10; printf("%g ",x) ; } else{ if((i/5)%2!=0 && (total/i)>woman){ x=(float)i/10; printf("%g ",x) ; } } i+=5; } return 0; } 以后想起来更好的解法再来补充