自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 【项目实训】线形组件的细节

组件大致可以分为矩形类组件和线形组件,矩形组件最典型的就是普通矩形,它的变化形式较为规范,变换过程中外部轮廓始终是矩形。线形的变化则相对灵活,线形组件的绘制由转折点构成,按照特定的顺序连接。线形组件面临着一些细节问题1.线形组件关键点的增加和减少。2.如何正确维护线形组件关键点的顺序。对于第一个问题,采用动态数组去维护线形组件的关键点顺序。当移动透明关键点时,改关键点会变为非透明点,而且该点分别与其相邻的节点的中点会产生新的节点,产生新节点后,要将其插入改关键点的前后相邻位置。关键代码对于第二个问题,

2022-06-02 15:20:07 115

原创 【项目实训】线形箭头的变化

若是普通的箭头,则使用<maker>通过设置maker-end,maker-start便可以使得箭头方向随着线条的方向改变而改变。对于那种棒状的箭头,并没有成熟的API接口可以使用,只好采用记录所有转折点的方式,通过<path>绘制。通过记录所有关键点的方式绘制箭头,同时也意味着图形的变化会导致关键点的变化,而且其变换方式较为复杂。如图,橙色关键点用来调控组件的宽度,以及箭头的形状,蓝色关键点则用来调整组件的位置。可以将其看做一条位于中间的线,随后将其...

2022-05-26 10:29:34 138

原创 【项目实训】多段线扩充为平行线

线条的变换处理较为容易,通过增加关键点的位置即可,其svg格式即将关键点顺序连接。在拖动关键点是,分为端点和内部的关键点。若是端点,则可以直接改变坐标,若是内部的关键点,则在改变关键点后并多出来两个内部关键点,新的关键点出现在中点处。std::string res = "M " + std::to_string(startPoint->getX()) + " " + std::to_string(startPoint->g

2022-05-22 12:50:02 227

原创 【项目实训10】箭头的绘制

一个常见的使用SVG绘制的图形是箭头。一行代码就可以创建一个,但是这样代码重复度很大。你也可以在<defs>和<symbol>中定义好再去重用,但是你每次应用的时候都需要对其移动或旋转。直接用一个<marker>元素的话会方便很多著作权归作者所有。marker是一种可以连结一个或多个path,line,polyline,polygon的顶点的标志类型。最常见的用例是绘制箭头或在输出结果的线上的标记一个(polymarker)图形。箭头均采用path进行绘制。m

2022-05-22 11:06:26 776

原创 【项目实训9】后端与核心的框架与测试

这周主要是于核心讨论并完善组件的共用框架组件在逻辑上呈现树形结构,实际则是顺序的结构。针对单个组件与多组件的操作分别创建两个类Component与Canvas类确定大致架构以后,逐步完善内部实现。Component类的实现 public: void changeElementAttributes(std::string attributesName,std::string attributesValue); /* * 改变组价的某些属

2022-05-01 15:00:11 168

原创 【项目实训8】后端与核心初步讨论

这周后端与核心对组件的框架进行了初步讨论。后端与核心的大致连接流程从组建个体与组件层级讨论了一些共用方法组件个体方面public:createElement();//创建组件deleteElement();//删除组件moveElement();//移动组件moveCorePoint();//移动组件的单个关键点deleteCorePoint();//删除关键点addCorePoint();//增加关键点。scaleElement();//改变组件大小ge

2022-04-24 14:25:02 257

原创 【项目实训7】前后端通信与websocket

在前后端通信过程中发现已有的socket与后端代码并不兼容,我写的后端代码是使用mingw进行编译的,而socket部分的编译方式是msvc,连接以后会出现不兼容的问题。部分的报错信息所以选择重新写一个mingw编译下的socket,方便前后端通信。...

2022-04-17 15:06:49 2436

原创 【项目实训6】前后端交互的格式以及规则

前后端交互的方式有多种,在经过讨论以后选择了socket进行传递数据,数据格式为json。由于c++并不能直接操作json格式,需要通过jsoncpp第三方库进行操作。jsoncpp使用也很方便,下载过后,找到amalgamate.py文件然后编译。编译结束后,会出现dist文件夹,将其中的内容复制到项目中,在使用时,include "json/json.h",即可,编译时应该把jsoncpp.cpp,json.h,json-forward.h一同编译,否则会出现错误。dist文件夹内容

2022-04-16 14:47:35 2059

原创 【项目实训4】基础组件的操作逻辑

由于组件涉及到各种操作,最为常见的就是放大、缩小以及组件的移动。以矩形来举例。记录了矩形的8个关键点。如图所示当矩阵移动时只需要改变8个关键点的坐标。其次就是进行放大缩小,放大缩小的操作分为不同类型,根据不同的关键点共有8种不同的方向。每个点均可以进行放大缩小。以左上角为0号点,顺时针依次编号。在0点进行放缩图形时,4号点并不会移动,0,2,6号点会有不同的变换方式,改变0,2,6号点以后,重新计算其余各点坐标。1号,2号等其余各点变换情形与0号点类似,维护4个角的坐标,..

2022-04-16 14:33:29 56

原创 【项目实训3】组件与点的关系

组件的形式各种各样,这也给判断鼠标与组件的关系带来了麻烦,对于不同类型的组件判断方式也多种多样。规则图形比如圆、椭圆一类的可以根据其性质进行判断。圆可以判断点与圆心的距离和半径的大小,若小于等于则点在圆内部。bool circle :: isInside(double x,double y){ return (x-x0)*(x-x0)+(y-y0)*(y-y0)<=r*r;}椭圆可以根据点到椭圆两个焦点的距离之和与椭圆长轴的关系来判断。距离和大于长轴,则在椭圆之外;距离和等

2022-04-02 16:02:55 55

原创 【项目实训2】项目整体框架

确立前后端的部分接口以后,对后端的大致的框架进行了设计。最基本的元素是一个个的组件,其次是整个画布,对所有的组件建一个父类component,然后各种组件分别继承自component类。component类抽象了组件的共有特征,如组件外围矩阵的长和宽、判断点与组件的关系、外围矩阵点、判断鼠标与当前外围矩阵点的关系等等。对于画布目前对其建立一个cavas类,类中主要对各个组件进行处理,如判断当前所选框内所包含的组件、在画布中创建组件等等。...

2022-03-28 17:05:14 255

原创 【项目实训1】SDU Chart Team 关于后端的需求

在第一周与第二周对整个项目的整体架构进行讨论以后,对于前后端的接口与定义做了一些规范。大致确定了后端的逻辑。后端主要负责画布的深层逻辑。后端主要负责响应前端的事件,包括组件事件、鼠标事件等。还有一些对鼠标位置处于组件内部、边缘以及外部进行判断并做组件:基本属性:颜色、坐标、线条宽度等等。坐标:以画布左上角为原点。核心元素:中心坐标(图形的移动等都以该坐标为准),组件状态(核心状态,固定状态)组件方程:由核心-图形提供,主要用于描述组件的具体形状,判断鼠标与组件的位置关系。

2022-03-16 18:46:12 306

原创 【山大智云开发日志】seafdav分析(12)

2021SC@SDUSCstream_tools.py:实现 FileLikeQueue 帮助器类。 此帮助程序类旨在处理传入 PUT 的用例 请求应直接流式传输到远程目标。 用法:将此类的一个实例返回给`begin_write`,并将其传递给 同时消费者:def begin_write(self, contentType=None):队列 = FileLikeQueue(max_size=1)requests.post(..., 数据=队列)...

2021-12-27 22:52:22 241

原创 【山大智云开发日志】seafdav分析(11)

2021SC@SDUSC

2021-12-19 23:03:45 453

原创 【山大智云开发日志】seafdav分析(10)

2021SC@SDUSC

2021-12-14 11:27:31 299

原创 【山大智云开发日志】seafdav分析(9)

2021SC@SDUSC经过几周的代码学习,已经完成了大部分代码的分析,还剩下一些零散的文件。_version.py主要是描述了当前的WsgiDAV版本号。

2021-12-06 00:12:47 309

原创 【山大智云开发日志】seafdav分析(8)

2021SC@SDUSC经过几周的代码学习,已经完成了大部分代码的分析,还剩下一些零散的文件。_version.py主要是描述了当前的WsgiDAV版本号。

2021-11-29 00:09:22 90

原创 【山大智云开发日志】seafdav分析(7)

2021SC@SDUSCext_wsgiutils_server.py。ext_wsgiutils_server.py 是 Paste 中 wsgiutils 服务器的扩展。 它支持传递所有 HTTP 和 WebDAV (rfc 2518) 方法。使用捆绑的 ext_wsgiutils_server.py 作为独立服务器运行:用法:python ext_wsgiutils_server.py [选项] [配置文件]...

2021-11-21 22:27:39 888

原创 【山大智云开发日志】seafdav分析(6)

2021SC@SDUSCext_wsgiutils_server.py。ext_wsgiutils_server.py 是 Paste 中 wsgiutils 服务器的扩展。 它支持传递所有 HTTP 和 WebDAV (rfc 2518) 方法。使用捆绑的 ext_wsgiutils_server.py 作为独立服务器运行:用法:python ext_wsgiutils_server.py [选项] [配置文件]配置文件: WsgiDAV 的配置文件。如果省略,应用程序 将在当前目录中查找

2021-11-14 22:06:17 1359

原创 【山大智云开发日志】seafdav分析(5)

2021SC@SDUSCseahub_db.py:主要是负责数据库初始化,以及数据库连接

2021-11-08 00:15:37 533

原创 【山大智云开发日志】seafdav分析(4)

2021SC@SDUSCseahub_db.py:主要是负责数据库初始化,以及数据库连接def create_seahub_db_engine()#创建seahub数据库的连接def ping_connection(dbapi_connection, connection_record, connection_proxy)主要用来解决“MySQL已经中断”的问题,因为空闲太长时间,当MySQL服务器重启或池连接被MySQL服务器关闭时,MySQL会中断def ping_conne

2021-10-31 23:18:46 116

原创 【山大智云开发日志】seafdav分析(3)

2021SC@SDUSCdomain_controller.py主要由类SeafileDomainController构成类的初始化,这些方法主要负责类的初始化与一些基本功能的判定 def __init__(self, wsgidav_app, config): self.session_cls = seahub_db.init_db_session_class() def __repr__(self): return self.__clas

2021-10-24 14:12:47 2171

原创 【山大智云开发日志】seafdav分析(2)

2021SC@SDUSC在大致学习了jijan2的基本用法后,便开始了wsgidav的源码分析。WsgiDAV 是一个用 Python 开发的通用 WebDAV 服务器,基于 WSGI 运行,支持 SSL。wsgidav安装和运行:$ pip install wsgidav$ wsgidav --host=0.0.0.0 --port=8080 --root=/tmpWARNING: share '/' will allow anonymous access.Running WsgiDA

2021-10-17 15:52:32 192

原创 【山大智云开发日志】seafdav分析(1)

2021SC@SDUSC在配置好项目的环境之后,便开始了项目分析,我负责分析seafdav模块。seafdav是the WebDAV server for seafile即seafile的WebDav服务器。seafdav简介 seafdav是seafile的WebDav服务器。主要是webdav扩展模块,WebDAV是一种基于HTTP1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Se...

2021-10-09 14:56:57 241

原创 【山大智云开发日志】项目安装与部署

目录简介操作系统前置操作安装vim安装docker自动安装手动安装apt换源备份镜像源新建国内源部署创建docker容器docker相关操作安装中文语言安装前置组件升级apt安装依赖项安装nodejs安装python及依赖模块准备数据库建表创建master用户下载项目源代码编译并安装项目创建配置文件后台并发管理安装screen创建窗口不挂起地回到主窗口回到窗口关闭窗口seafile

2021-09-30 19:12:52 288

原创 CF1556D(交互)

性质:a[i]+a[j]==a[i]&a[j] + a[i]|a[j];所以先由前三个算出a[1],再由a[1]推出其他值#include<bits/stdc++.h>#define LL long long#define N 301010#define M 1000100using namespace std;int n,k,a[N];int main(){ int x,y,z,t; scanf("%d%d",&n,&k); cout<

2021-09-15 20:05:31 54

原创 点分治

点分治适合处理大规模的树上路径信息问题。每次选择重心进行分治,共会递归logn次学习博客https://oi-wiki.org/graph/tree-divide/P3806 【模板】点分治1给定一棵有n个点的树,询问树上距离为k的点对是否存在。模板题#include<bits/stdc++.h>#define N 10010#define M 10000010using namespace std;const int inf=1e9;int n,m,...

2021-03-27 00:32:51 71

原创 割点,桥,双联通分量

学习博客:https://www.cnblogs.com/kamimxr/p/11053539.html区分并理解树边和非树边,尤其是树边POJ 2117 Electricity(无向图割点)主要是对割点模板的理解#include<cstdio>#include<iostream>#include<cstring>#include<vector>#define N 100010using namespace std;int tim

2021-01-22 22:17:59 89

原创 LCT

......

2021-01-21 21:14:16 127 2

原创 Manacher

马拉车:线性求回文串学习博客:https://www.cnblogs.com/cloudplankroader/p/10988844.html最长回文HDU - 3068(模板)模板题#include<bits/stdc++.h>#define N 310010#define LL long longusing namespace std;char s[N],a[N];int p[N];int get(){ memset(p,0,sizeof(p)); in..

2021-01-15 22:00:31 57

原创 dance links X

dlx:主要解决精确覆盖,多重覆盖问题。基于十字链表的快速删除与恢复。学习博客:https://www.cnblogs.com/grenet/p/3145800.htmlP4929 【模板】舞蹈链(DLX)建链表时行的顺序是颠倒的(u,d每次更新的表头),不过并不影响#include<bits/stdc++.h>#define N 100100using namespace std;int n,m,ans[N];int d[N],u[N],L[N],R[N],s[N],

2021-01-15 11:33:30 55

原创 网络流

。。。。。。

2021-01-15 11:28:59 40

原创 左偏树(可并堆)专题

左偏树:

2021-01-15 11:26:44 60

原创 2-SAT专题

。。。。。。

2020-11-15 00:59:52 108

原创 CF1416 C. XOR Inverse(字典树分治求逆序对)

题意:给出一个序列a,求一个x使得a中所有数异或x之后,a的逆序数最小,如果有多个x,求最小的x题解:我们建立01字典树,将每一个数依次插入,在途径的点记录该位的0/1。我们思考,对于一个数的每一位(字典树的每一层)都有可能形成逆序对。对于p节点。我们查看途径他的0,1序列。可以O ( n ) 记录其中<0,1>对和<1, 0>对的数量。我们把每一层的01和10对的数量记录下来。如果该位10对数量大于01对,即将这一位异或1反转。否则该位就是0。#include<bi

2020-10-28 19:05:22 299

原创 二分图专题

hdu1045 Fire Net

2020-10-20 23:55:06 1208

原创 AC自动机(题目+模板)

AC自动机

2020-10-04 23:48:52 2878

原创 CF1400E. Clear the Multiset(分治,递归)

题目链接:https://codeforces.ml/contest/1400/problem/E描述:给出序列a,有两种操作:1.将区间[l,r]的数减一。2.将a[x]变为0.求将a全变为0最少的操作步数。n<=5000,0<=a[i]<=1e9;分析:区间由0被分为若干个小区间,每个区间若经过x次操作一后,无法消去>=x个数,则说明操作二更优。所以可以分治,对一个区间,找出最小值min,然后进行min次操作一,将区间分文若干小区间,然后在解决小区间。

2020-10-04 10:55:28 158

原创 CF723E. One-Way Reform(欧拉回路)

题目链接:https://codeforces.ml/contest/723/problem/E描述:给出一个无向图,确定边的方向,是入度等于出度的点最多。分析:有一个重要的定理:一个无向图度数为奇数的点必有偶数个。所有度数为偶数的点均可以满足出度等于入度。所以可以将所有度数是奇数的点连向虚点n+1,这样新建的图满足欧拉回路,跑一边欧拉回路,便可得到边的方向。输出时与0相连的边注意删掉。#include<bits/stdc++.h>#define N 210#d

2020-10-04 10:46:00 79

原创 CF1426 F. Number of Subsequences

题目链接:http://codeforces.com/contest/1426/problem/F描述:给出一个由a,b,c,?组成的字符串S,?可以变为a,b,c其中任何一个,求在s的所有可能情况中会有多少子序列abc。3≤n≤200000分析:a[i]表示到i一共有多少‘a’,b[i],c[i],d[i]分别是'b','c','?'。若没有'?',则只需要在每个b出现的位置i,以该b为中心计算贡献,即ans+=a[i-1]*(c[n]-c[i]);加上'?'以后,分为四种情况。a???b

2020-10-01 00:31:48 153

pagerank算法实现 与 networkX进行对比 爬取真实网站数据

Task 1.网站关系可视化及PR计算(新闻与政府网站 1.请以“新华网”和“人民网”为起点,在各网站首页上,爬取与他们有超链接关系的其他网站列表,再顺藤摸瓜,爬取列表中各网站首页上,与之有超链接关系的网站列表。如此操作,爬取5层。构建出一套网站关系数据,并在Python中,利用Networkx,将该网络可视化。 2. 依次输出该网络的三个矩阵:转移矩阵、邻接矩阵、测地线距离矩阵。 3. 利用两种方法计算各节点的PR值 (1)方法一:调用Networkx中的pagerank函数,计算上图中各点的PR值 (2)方法二:根据PR值的计算原理,自己编写代码(不调用pagerank函数或其他可以直接输出PR值的函数、包等),计算各节点的PR值。 比较两种方法的结果——用列表方式比较两种方法计算的PR值并输出(print)排名前20的网站名称及其排序。在输出结果中,column1为网站名称,col2为第一种方法返回的PR值,col3为第二种方法返回的PR值 4. 将有向图转化为无向图,重新计算各节点的PR值,并与之前的结果比较。尝试解释排序产生变 化的原因。

2024-01-04

数据库课设 火车票售票系统

用户功能: 1.可以通过站点之间查询车票,并购买车票。 2.通过车次号查询车次的详细信息,并购买车票 3.添加、修改、删除乘车人信息 4.查看在本系统上的购票记录,包括为他人购买的车票。 5.可以对已购买的车票进行改签、退票。 管理员功能: 1.发布、删除与查询班次的详细信息 2.通过班次号对班次进行详细查询 3.通过身份证号码查询乘车人信息、以及购买记录 整个系统前端使用javaswing进行绘制,本系统大量使用 Dialog 来对详细信息填写进行管理。系统共分为4个模块。分别是站与站之间查询、车次号查询、购买记录、个人信息四个模块。其中站与站之间的查询和车次号之间的查询主要是对数据库进行操作处理。当在这两个模块中购买了车票以后会相应的在购票记录中增加购买的详细信息。在购票记录的模块中可以对已购买但还未出行的车票进行退票或改签。在个人信息模块可以对乘车人进行增加、删除、修改,方便在购买车票时选择相应的乘车人。

2024-01-03

五子棋 c++ 支持人机对战 人人对战 人机对战测试平台达到90+

本规则是五⼦棋的原始规则。 1. 对局在⼀个12*12的⽅形⽹格上进⾏,⻅“附录-棋盘”。 2. 对局由两名玩家(被称为⿊⽅和⽩⽅)进⾏。⿊⽅先⾏,然后玩家轮流在空棋位上放置⾃⼰的棋 ⼦。 3. 对局在⼀名玩家成功地以⾃⼰的颜⾊形成连续五颗或以上棋⼦的⼀条直线时结束,这条直线可以是 ⽔平、垂直或对⻆线上的。 4. 如果棋盘上的所有空棋位都被占据,并且没有玩家达到获胜条件,对局被视为和棋。 5. 轮到⼰⽅⾛⼦时,⼤脑程序需要在2秒时间内给出落⼦⽅案。 6. 每⼀局中,⼰⽅不能使⽤超过90秒的总时间(对⽅⾛⼦时不算⼰⽅⽤时)。 7. ⼤脑程序任何时刻都不能使⽤超过350MB的内存。 8. 在对⽅⾛⼦时,⼰⽅的程序会继续保持运⾏。 注意: 1. 若某⼀⽅⾸先超出时间限制或空间限制,或程序异常退出,则在该局中判这⼀⽅负。 2. 学⽣递交的代码会在云平台上运⾏,视平台任务压⼒不同,助教可能随时调整硬件配置调节压⼒, 因此代码需要能在不同的CPU配置下都不超过时间限制。 3. ⼤脑程序将绑定在⼀个CPU核⼼上运⾏,因此使⽤多线程不会带来速度提升。 4. ⼤脑程序将运⾏在沙河中,互相隔离,没有⽂件读

2024-01-03

uno游戏 c++ 人机对战 人人对战

c++实现,支持人机对战,debug模式,可以看到牌堆的详细信息,支持自定义个数用户 我们只有一轮比赛,而不是许多轮比赛,通过累积分数来决定获胜者。我们有我们定制的规则(将在下一节中描述)来确定获胜者。 2.在我们的程序中,当回合转到一个玩家时,玩家可以选择画一张牌而不是打一张牌。如果抽到的牌与弃牌堆的顶部相匹配,他/她必须打该牌(而官方规则允许玩家保留该牌)。 3.对于外画4牌,官方说明说:“只有当你手中没有与之前玩的牌的颜色相匹配的牌时,你才能玩这张牌。”我们将永远允许玩这张牌,而不是让下一个玩家质疑它的合法性。 4.我们的游戏玩家没有必要也没有办法对他们手上的最后一张牌说“Uno”。

2024-01-03

空空如也

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

TA关注的人

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