自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(211)
  • 资源 (5)
  • 收藏
  • 关注

原创 python+selenium实现疫情期间全自动打卡

文章目录前言问题分析网页源码分析与代码实现一、加载火狐驱动二、输入账号密码并提交三、进入打卡界面并点击左侧菜单栏iframe内元素的定位动态id/class的定位四、表格填写五、提交表格全部代码前言因为疫情缘故,学校搞了个每日限时打卡的系统,要求学生在每天0-9点完成当日体温和在京状况的打卡。就这样手动打卡了两个多月,北京还是迟迟不开学,目测开学已经要到5月底了。打卡期间忘过无数次,每次都被班...

2020-04-17 11:52:13 7005 9

原创 使用python处理题库表格并转化为word形式

前言亲人工作考试,公司给的题库好像是直接从数据库导出的表格Excel形式,在移动端上非常难看,需要不断左右上下滑动,看不了多少题眼就瞎了,遂主动请缨编写python脚本解决之。原本给的题库在手机上横屏显示是这样的↓↓↓(想象一下是在手机上)无比恶心我的工作公司给出的格式是.xlsx的(Excel表格的默认格式),盲猜是直接从答题数据库导出的,表名和属性名应该是稍微做了从英文到中文的改变,...

2020-04-12 20:24:55 1849 4

原创 C语言2048源代码

前言:想到做过就贴出来系列…前后左右的移动道理相同。代码://2048#include<stdio.h>#include<stdlib.h>#include<windows.h>void move_up(int a[][4]){ int i,j,k,n; int flag=0; for(j=0;j<4;j++) //列 { ...

2018-10-27 14:18:08 12721 4

原创 单链表的创建--从零开始

上学期临近期末的时候用Word写了一篇链表详解,今天突然想到自己一直在搞算法题,很长时间没有用链表了。试着在纸上写了几步,发现回想起来竟然有些吃力,这里把上学期写的链表详解贴上来mark一下,顺便以此作为数据结构笔记的第一篇。学习链表需要了解的基本知识点:首先,想要熟练使用链表,就要知道两大类基本知识点: 1. 指针 2.结构体 (如果对两个知识点有疑惑请百度一下,没有什么问题是百...

2018-09-10 13:01:28 90651 40

原创 用链表实现一个贪吃蛇

之前课设做的C语言贪吃蛇代码,忽然想到贴上就不会丢了。 (1)头文件部分#ifndef _SNAKE_H_#define _SNAKE_H_typedef struct snake SNAKE;SNAKE *snake_init();static SNAKE *head,*p,*tail;void HideCursor();void fresh_food();void welc...

2018-07-28 16:54:04 909

原创 C++实现LRU缓存结构

题目描述分析代码class Solution {public: /** * lru design * @param operators int整型vector<vector<>> the ops * @param k int整型 the k * @return int整型vector */ unordered_map<int, int> mp; unordered_map<int,

2021-04-09 19:12:17 387

原创 server端进程池的实现(并发服务器)

什么是进程池在这里引用另一个博主 青城山小和尚 的关于线程池的图,进程池与线程池类似。假设一种情况,当多个客户端的请求同时到达服务器,如果采用单线程/进程的方式,服务端就会依次处理每个客户的请求,此时其他客户将进入等待状态,直到服务端响应完请求,才会接着处理下一个任务。这会导致客户端时间过长,性能低下。考虑并发的情况,可以采用多进程/线程的方式解决上述问题。也就是说,服务端的主线程只是用来监听客户请求,fork出的子进程用来处理请求,多进程并发处理,使得效率更高。静态进程池套接字实现设置固定进程池

2021-02-22 14:00:41 369

原创 socket——流式套接字编程实例及注意事项

流式套接字基本操作步骤C端(主动端)获取socket给socket取得地址(可省)发送连接收发消息关闭S端(被动端)获取socket给socket取得地址将socket设置为监听模式接受连接收发消息关闭...

2021-02-21 18:33:38 765

原创 套接字选项—设置多播/组播和广播

函数int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);【注】以上几种消息发送方式均需注册套接字选项,不能直接向诸如"255.255.255.255"的广播地址发送消息。以组播为例,D类IP地址用于多点广播

2021-02-21 11:15:45 417

原创 socket——报式套接字编程实例及注意事项

数据报格式定义注:需要使用__attribute__((packed))取消字节对齐,避免不同端字节对齐方式差异引起的问题。数据报以结构体为单位,流式套接字以字节流为单位进行传输。#ifndef _DGRAM__#define _DGRAM__#define NAME_SIZE 128struct dgram_t { char name[NAME_SIZE]; int chinese; int math;}__attribute__((packed));

2021-02-20 13:05:12 321

转载 客户端不需要绑定端口号的原因

因为服务器是时时在监听有没有客户端的连接,如果服务器不绑定IP和端口的话,客户端上线的时候怎么连到服务器呢,所以服务器要绑定IP和端口面客户端就不需要了,客户端上线是主动向服务器发出请求的,因为服务器已经绑定了IP和端口,所以客户端上线的就向这个IP和端口发出请求。这时因为客户开始发数据了(发上线请求),系统就给客户端分配一个随机端口,这个端口和客户端的IP会随着上线请求一起发给服务器,服务收到上线请求后就可以从中获起发此请求的客户的IP和端口,接下来服务器就可以利用获起的IP和端口给客户端回应消息了.总

2021-02-19 20:43:35 872

原创 令牌桶算法——多线程实现

相关注意事项都写在了注释当中#include <stdio.h>#include <stdlib.h>#include <string.h>#include <signal.h>#include <unistd.h>#include <errno.h>#include <sys/time.h>#include <pthread.h>#include "mytbf.h"// typedef v

2021-02-15 15:20:45 954 1

原创 令牌桶算法——信号量实现

头文件定义mytbf.h#ifndef MYTBF_H__#define MYTBF_H__#define MYTBF_MAX 1024typedef void mytbf_t;mytbf_t *mytbf_init(int cps, int burst);int mytbf_fetchtoken(mytbf_t *, int);int mytbf_returntoken(mytbf_t *, int);int mytbf_destroy(mytbf_t *);#endif

2021-02-05 18:10:58 453

原创 王道数据结构2.2.1

题目要求设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点。代码void del_x(LinkList &L, ElemType x){ LinkList p; if(L == NULL) return; if(L->data == x) { p = L; L = L->next; free(p); // * del_x(L, x); } else { del_x(L->next, x); }}疑点解析1.返回的头

2020-07-14 09:34:54 328

原创 Linux下socket多人聊天室

前言由于疫情原因,在家上了一学期的课,本次作业是作为“Linux程序设计”的期末考核而布置的,代替了原本的考试,对于我这种比较喜欢动手的菜鸡来说,很舒服。一、聊天室的实验内容本作业实现一个基于Linux的模拟即时通信系统,要求实现以下功能:1、模拟即时通信系统可以实现多人同时在线聊天功能;2、在线聊天用户登录本系统需输入用户名和密码;3、本系统需能够查询历史聊天记录;4、本系统运行后,需启动一个守护进程,该守护进程记录本系统启动和关闭的时间,每个用户登录和退出时间;(日志)5、需创建本系统的

2020-06-23 13:42:14 5734 1

原创 编译原理——词法分析器的C语言实现

/**author: cuiyanran *date: 2020-4-26 15:08*version: 1.0*IDE: Dev-C++*/ #include <iostream>#include <cstdio>#include <cstring>#include <windows.h>#include &lt...

2020-06-13 14:50:02 10444 2

原创 编译原理【4】文法转换(消除左递归)

并不是所有文法都适合自顶向下分析,下面列举两个自顶向下分析中遇到的问题:1.同一非终结符的多个候选式前缀相同时,会导致回溯现象从而效率低下。为什么要消除左递归?如果是类似于A→AαA\rightarrow A\alphaA→Aα的左递归文法,由于对当前句型的分析按照最左推导执行,因此将会使得递归下降分析器陷入无限循环。故需要消除。(参考下图,最后会生成以A开头,后面跟着无限个α的句子)...

2020-05-08 13:48:06 2412

原创 编译原理【3】语法分析概述

推导需要完成的两个选择:选择替换当前句型的哪个非终结符,以及用哪个候选式去替换。最左推导与最右规约(由于自顶向下的分析器自左向右扫描串,因此采用最左推导方式)最左推导:替换每个句型最左端的非终结符最右推导与最左规约(规范推导与规范规约)正好与上面描述的相反。最左推导与最右推导的唯一性:由于最左推导和最右推导总是选择一端的非终结符进行替换,因此最左推导和最右推导的结果都是唯一...

2020-05-08 11:56:03 1158

原创 Windows下文件读取填坑记录——跳过文件换行符

前言今天写编译原理词法分析,涉及对.txt文件的读取操作,我在文件中放入了一个简单的C程序,如下:在测试读取文件的时候,因为要跳过空格、换行以及缩进,所以我写了以下函数:void skipSpace(){ char ch = prgrm_content[index]; while((ch == '\n') || (ch == ' ') || (ch == '\t')){ index...

2020-04-25 22:59:55 773

原创 编译原理【2】词法分析

基本表示其中正闭包就是一个字母表中所有次幂(从1开始)构成的集合,也就是克林闭包少了0次幂(空集ϵ\epsilonϵ)的形式。终结符与非终结符终结符:文法所定义语言的基本符号,也称token,例如VT={apple,boy,eat,little}V_T=\{apple,boy,eat,little\}VT​={apple,boy,eat,little}非终结符(语法变量):用来表示...

2020-04-24 11:03:27 716

原创 编译原理【1】概述:词法分析、语法分析、语义分析

什么是编译?编译就是将高级语言程序转换成汇编语言程序/及其语言程序的过程。编译,说白了就是翻译,对比精细的人工英译汉的步骤:词法分析:分析词性:每个词属于名词?形容词?动词?介词…语法分析:分析各种介词短语、名词短语、动词短语…语义分析:以上两个步骤的意义就是为语义分析做铺垫,通过将语法展开成下图树的形式,可以最终根据根节点分析出整个句子的意思是什么。编译的步骤也和人工翻译是一样...

2020-04-24 10:29:14 12803 3

原创 2020美赛数模代码留存

前言上午八点半提交了论文,虽然模型建得不怎么好,但好在我编写的代码提取特征and画图还算奏效,现在写下来留存一下,以后可能还会用到。由于比赛以代码效率为主,因此在下面的一些代码中总是将提取的属性列单独存储到一个临时文件,再由队友手动把那几列更新到文件。代码主要有以下模块1.日期处理2.句子分词、去符号、去停用词、词性筛除3.实现TF-IDF模型提取关键词4.统计月度数据5.使用长短...

2020-03-10 15:24:38 2109

原创 正则表达式筛出多余符号、只留英文字母

rt,保留空格和回车正则表达式r1 = u'[{\u4e00-\u9fa5}0-9’!"#$%&\'()*+,-./:;<=>?@,。?★、…【】《》?“”‘’![\\]^_{|}~]’`测试代码# *_* utf-8 *_*import rer1 = u'[{\u4e00-\u9fa5}0-9’!"#$%&\'()*+,-./:;<=>?@,...

2020-03-07 00:13:12 1098

原创 web课程设计总结——实验中心器材管理系统

前言  修整了近一周后,我终于有力气写下这篇博客。  三周的考试 + 个人感情出了一些问题,导致我失眠了一个月,每天晚上躺床上两三个小时才能勉强睡着,中间更是醒来 N 多次,课设周吵了架,导致我再也没有做课设的心力。有些事似乎注定要发生,有些人似乎注定要在你的生活中写下难忘的一笔,然后转身离去,再不相见…  上了大学后,总不想把自己消极的一面展现给别人看。太多想法与回忆,只能在博客里略提一嘴...

2020-01-15 19:23:54 1032

原创 操作系统之动态分区分配与回收—C语言实现

前言这篇文章用来记录操作系统实验之 动态分区分配与回收。不想从网上copy代码,打算自己从头到尾写一下,没想到却花了我整整两个晚上的时间,好在终于写完了…动态分区分配采用的算法是最佳适应(best fit, BF)算法,回收内存参考文章见后面。懒得写解析了,后面有时间再更新吧。代码#include<stdio.h>#define FREE 0 ...

2019-12-13 22:29:49 19545 9

原创 LeetCode-168.Excel表格名称

分析26进制的问题。需要注意每“位”都是从0开始,因此需要先对nnn 减一。代码class Solution {public: string convertToTitle(int n) { string res; while (n--) { res += n % 26 + 'A'; n /= 26; } reverse(res.begin(), res.en...

2019-12-01 19:13:40 448

原创 LeetCode-167.两数之和II

描述分析(1)哈希法(可以在哈希前先用二分法定位到小于目标值的最大元素处)(2)利用数组升序的特点,使用双指针的方法。起始指针指向下标000处,终止指针指向数组最后一个元素。若两指针处元素之和等于目标值,返回;若大于,尾指针减一;若小于,头指针加一。妙不可言。代码哈希class Solution {public: vector<int> twoSum(vecto...

2019-12-01 19:11:14 425

原创 LeetCode-160.相交链表

描述分析(1)哈希法(2)官方给出了更聪明的方法:利用A+B=B+AA+B=B+AA+B=B+A的特点,使用两指针分别从AAA和BBB的头部遍历,一旦到尾部则重新定位到另一个链表的头部继续遍历。由于两链表若相交则拥有一段公共的尾部,因此一旦遇到两个链结指向同一块内存,则停止遍历返回此节点。代码哈希法/** * Definition for singly-linked list. ...

2019-12-01 19:03:51 345

原创 LeetCode-141.环形链表

描述分析(1)使用快慢指针。慢指针每次移动移动到下一单元,快指针每次移动到下下个单元。这样若快慢指针最终相遇(指向同一块内存),便证明存在环。时间复杂度O(n)O(n)O(n),空间复杂度O(1).O(1).O(1).(2)哈希法。时间复杂度和上面相同均为O(n)O(n)O(n),空间复杂度O(n)O(n)O(n).代码快慢指针/** * Definition for singly...

2019-12-01 18:55:27 207

原创 LeetCode-136.只出现一次的数字

描述分析位运算的题。根据异或 “相同为零,不同为一” 的特点,使数组中元素相互异或可以在O(n)O(n)O(n)的时间复杂度消掉所有双数个数的元素。代码class Solution {public: int singleNumber(vector<int>& nums) { int val = nums[0]; for(in...

2019-12-01 18:50:06 122

原创 LeetCode-125.验证回文串

解析双指针,头尾向中间依次判断。代码class Solution {public: bool isPalindrome(string s) { if(s.empty()) return true; int i = 0, j = s.length() - 1; while(i < j){ if(!isaln...

2019-11-27 21:03:31 106

原创 LeetCode-121.买卖股票的最佳时机

描述分析本题我想到的两种方法:暴力法:时间复杂度O(N2)O(N^2)O(N2),提交后击败10%10\%10%,显然不可行峰谷法(官方这么叫):动态记录已经遍历的元素中最小者,对当前元素,依次判断减去最小值后是否大于最大利润,若是则更新最大利润。这样的做法可以保证尝试的峰总出现在谷之后,因此时间复杂度为O(N)O(N)O(N).代码class Solution {public...

2019-11-27 20:34:20 117

原创 LeetCode-119.杨辉三角II

描述解析注意题目中想要让我们在O(k)O(k)O(k)的空间复杂度内实现算法。学习过对动态规划背包问题的优化,则不难想到对杨辉三角的空间优化方案:使用一维数据记录杨辉三角的当前行,对于下一行,从后向前依次使用递推式:vec[i]=vec[i-1]+vec[i]最终形成的便是杨辉三角的第 K 行。class Solution {public: vector<int> ge...

2019-11-26 23:03:56 183

原创 LeetCode-5.最大回文子串

描述分析拿到这道题的时候,我想到了三种方法:暴力法,时间复杂度O(3)O(3)O(3),显然不可取将字符串翻转,而后便转为求最长公共子序列的问题,时间复杂度O(2)O(2)O(2)中心拓展,依次判断,时间复杂度O(2)O(2)O(2)在写代码的时候我用了第三种方法,本以为可以通过全部测试用例,却卡在了92/103,这里先贴出我的代码代码class Solution {pub...

2019-11-26 22:01:14 121

原创 LeetCode-104.二叉树的最大深度

解析设置全局变量保存最大深度,dfs遍历树,若到达根节点且深度大于最大深度,则对最大深度进行更新。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int ...

2019-11-26 21:02:18 89

原创 LeetCode-101.对称二叉树

解析重新定义一个含有两个结点参数的函数。所谓对称,就是从根节点开始递归遍历,判断当前左结点的右子结点是否等于右结点的左子结点 and 当前左节点的左子结点是否等于右节点的右子结点。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *...

2019-11-26 20:59:19 101

原创 LeetCode-100.相同的树

解析数的递归遍历,由于是判断两棵树是否完相同,因此传入两树的结点位置应该是一样的(比如同时比较左子树和同时比较右子树)。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * Tr...

2019-11-26 20:53:37 97

原创 蓝桥杯-连号区间数

描述分析写这题的时候好像还是去年…最基础的思路肯定是暴力法,另外要考虑到每个元素本身也是一个连号区间,所以连号区间数最少为 n 个。后来看了别人的做法,发现自己并没有很好的利用每个数均唯一的特点。如果一个区间内的所有数经过排序后连号,那么必有:此区间内的最大值 - 此区间内最小值 = 区间长度因此问题便迎刃而解了。代码#include<iostream>#inc...

2019-11-15 21:48:03 269

原创 蓝桥杯-龟兔赛跑预测

描述分析题目描述路程长度为龟/兔速度的公倍数——这也就意味着无论是乌龟还是兔子都可以在整数时间内跑完全程(故而可以逐秒计算二者谁先到达)。乌龟速度恒定且不会中途停下,因此在最开始便可以得知乌龟到达的时间:tt=s/v2tt=s/v2tt=s/v2那么这道题便转化为了计算兔子是否能在有限时间 tttttt 范围内到达终点此时面对两种情况:兔子行走的时间超过了(或者刚好等于)乌龟行走的...

2019-11-15 20:20:54 364

原创 蓝桥杯-Sine之舞

描述分析递归问题。先递归求得AnA_nAn​,再根据AnA_nAn​求出SnS_nSn​。写这题花了40分钟,看来还是功力太差…求后面的AnA_nAn​时会重复求A1−An−1A_{1}-A_{n-1}A1​−An−1​的步骤,显然会浪费很多时间,如果用一个字符串数组记录下来会很好,然而即使没加入记录的数组,测试样例竟然还是100%通过了…代码#include<iostrea...

2019-11-14 23:55:15 227

ChatRoom.zip

Linux下C语言简单多人聊天室,使用了C语言socket编程,具有用户注册、登录,守护进程来记录系统开启关闭时间,用户登录退出时间的日志。

2020-06-23

2019年美国大学生数学建模竞赛B题论文

2019年美国大学生数学建模竞赛B题论文

2019-05-03

手写字符识别所需python包

安装anaconda后,想要运行手写数字识别,需要另外下载一些安装包,这里是安装的命令打包。

2019-05-03

蓝桥杯VIP题目与全套测试数据

蓝桥杯VIP题目与全套测试数据

2018-12-01

2018年全国大学生数学建模竞赛

2018年全国大学生数学建模大赛A题“高温工作服装设计”参赛文章(北京市一等奖)

2018-10-22

空空如也

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

TA关注的人

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