使用icpc tool进行滚榜操作

前言

参加ACM的同学都知道,比赛非常有趣的环节就是赛后的滚榜环节,所以为了一个比赛的完整性,自己办比赛时也想要加入滚榜的操作,经过一段时间的研究学习,已经可以将滚榜程序与domjudege程序成功完成融合,如果想要其他平台一些兼容,还需要自己根据domjudge导出来的json进行适配

参考博客

关于搭建 domjudge 还有其他一些 ICPC Tool 之类的事 | 赤红幻想 (reimu.red)

这个博客中不仅将解了滚榜的操作,还有其余一些icpc tool的使用方法,我们因为没有很好的办法去100%还原赛时的所有内容,所以就只研究了滚榜工具

配置滚榜-基础版本

首先下载resolvers工具

基础版本就是实现可以滚榜,没有添加任何照片等内容,比较的简单。

比赛结束后,首先在 DOMjudge 上 Finalize 这场比赛,使用下边的连接下载数据文件

http://<domjudge url>/api/contests/<cid>/event-feed?stream=false

<domjudge url>修改成你访问domjudge的网址

<cid>修改成后台看到的这场比赛的ID编号

下载完成以后,在event-feed后加上  .json后缀

之后打开 awards.bat,并且在 Disk 里面找到 event-feed.json,这一步可能会提示这个

Finalize之后应该不会遇到这个问题,我测试时间没有遇到这种情况

打开以后就可以设置奖项这些信息,设置好以后,点击save,保存一个json文件,假设将其命名为 test.json,之后我们就要在bash环境下运行

ICPC_FONT="Microsoft Yahei" ./resolver.bat test.json

注意一定是要bash环境,cmd命令窗口不太行,但是git bash环境可以,没尝试过Linux系统,感兴趣可以自己尝试一下

如果前边出现那个警告的话需要在上边命令行最后加上  --test

如果遇到 java 报 OutOfMemory 则直接修改 resolver.bat 内最后一句命令,将 -Xmx=1024m 调大,比如 -Xmx=4g 再试试。

配置滚榜-完整版

2.4版本以后支持了cdp格式的文件,cdp格式文件就是建一个cdp文件加,然后在文件夹中按照以下格式添加需要的信息

.
├── config              // 非必需
│   ├── contest.yaml    // 从domjudge Import/export页面导出即可
│   ├── groups.tsv      // 从domjudge Import/export页面导出即可
│   ├── problemset.yaml
│   └── teams.tsv       // 从domjudge Import/export页面导出即可
├── contest
│   ├── banner.png      // resolver无用,但在cds放置于此就可显示banner
│   └── logo.png        // resolver主页面的图片&无照片队伍的默认照片
├── events.xml          // 滚榜数据
├── groups              // Categories照片,但在resolver似乎没起到作用
│   └── 3               // Categories的id
│       └── logo.png
├── organizations       // Affiliations照片,只要某Affiliations的队伍有logo,其他同Affiliations的队伍就都是该logo
│   ├── 3000            // 该Affiliations所对应的任一队伍的icpc id
│   │   └── logo.png
│   ├── 3001
│   │   └── logo.png
│   ├── 3012
│   │   └── logo.png
│   ├── 3017
│   │   ├── country_flag.png    // 照源码里是这样放置的,但在resolver似乎没起到作用
│   │   └── logo.png
│   └── 3187
│       └── logo.png
└── teams               // 队伍照片
    ├── 3000            // 队伍的icpc id
    │   └── photo.png   // 照片名字固定是photo
    ├── 3001
    │   └── photo.png
    ├── 3009
    │   └── photo.png
    └── 3010
        └── photo.png

复制部分

跳至主内容区域
赤红幻想
The Deep Red Fantasy
赤红幻想搜索
搜索
主页
首页
游戏
应用
小说
日志
辣鸡代码
漫画
文章导航← 上一篇下一篇 →
关于搭建 domjudge 还有其他一些 ICPC Tool 之类的事
发表于2021年6月2日由Vingying
(最新更新:2022.11.18)

总之看官方文档看得简直谜语人……

总结一下:有 DOMjudge 8.1.3, Judgehost, Resolver, Presentation

搭建环境:
DOMserver: Ubuntu 20.04(64) Version: 8.1.3
Judgehost: Ubuntu 20.04(64) Version: 8.1.3(下面拉的 docker 镜像,注意只有 amd64 的,没有 arm)
CDS: Ubuntu 20.04(64) Version: 2.4.727
Presentation Clients: win10(64) Version: 2.4.727
Presentation Admin: win10(64) Version: 2.3.491
Resolver: win10(64) Version: 2.4.727
打印机:HP LaserJet M1136 MFP
Win10: 需要支持 bash 环境,以及含有 jdk1.8 及以上,这里可以下载 JDK 11.0.15
下面从刚重装完系统开始一步一步搞吧(

Domjudge 8.1.3
一键脚本
先直接上个一键 bash 脚本:

mkdir /home/dom/
cd /home/dom/
sudo apt-get update
sudo apt-get upgrade
sudo apt install -y gcc g++ make zip unzip mariadb-server \
apache2 php php-cli libapache2-mod-php php-zip \
php-gd php-curl php-mysql php-json php-xml php-intl php-mbstring \
acl bsdmainutils ntp phpmyadmin python-pygments \
libcgroup-dev linuxdoc-tools linuxdoc-tools-text \
groff texlive-latex-recommended texlive-latex-extra \
texlive-fonts-recommended texlive-lang-european composer
sudo apt install -y enscript
sudo apt install -y libcurl4-gnutls-dev libjsoncpp-dev libmagic-dev
sudo phpenmod json

wget https://www.domjudge.org/releases/domjudge-8.1.3.tar.gz
tar -zxvf domjudge-8.1.3.tar.gz
cd /home/dom/domjudge-8.1.3/
sudo ./configure --prefix=/home/dom/domjudge --with-domjudge-user=root --with-baseurl=127.0.0.1
make domserver && sudo make install-domserver

sudo /home/dom/domjudge/domserver/bin/dj_setup_database -u root install

cd /home/dom/domjudge/domserver
sudo ln -s /home/dom/domjudge/domserver/etc/apache.conf /etc/apache2/conf-available/domjudge.conf
sudo a2enmod rewrite
sudo a2enconf domjudge
sudo systemctl reload apache2
sudo chown www-data:www-data -R webapp/var/*

cat /home/dom/domjudge/domserver/etc/initial_admin_password.secret
cat /home/dom/domjudge/domserver/etc/restapi.secret
Bash
最后两行显示的分别是 admin 的账号密码,和 judgehost 连接上去的密码。具体可以看后面的内容。

装好了之后,还需要手动配置一下数据库和 apache2。具体内容直接从【配置 MySQL】看即可。

环境依赖
总之官网上面说的都很谜语人,仿佛默认你都把所有依赖都装好了一样(
首先,默认已经把该换的源都换好了,就执行

sudo apt-get update
sudo apt-get upgrade
Bash
然后就开始愉快地装各种依赖了,执行

sudo apt install gcc g++ make zip unzip mariadb-server \

    apache2 php php-cli libapache2-mod-php php-zip \
    php-gd php-curl php-mysql php-json php-xml php-intl php-mbstring \
    acl bsdmainutils ntp phpmyadmin python-pygments \
    libcgroup-dev linuxdoc-tools linuxdoc-tools-text \
    groff texlive-latex-recommended texlive-latex-extra \
    texlive-fonts-recommended texlive-lang-european composer 复制

sudo apt install enscript
Bash
执行过程中安装时选择 apache2,在建立 MySQL 时也顺便就把账号密码都搞了。接下来执行

sudo apt install libcurl4-gnutls-dev libjsoncpp-dev libmagic-dev
sudo phpenmod json
Bash
于是,你要的依赖都建好啦!

如果遇到安装过程中输入 Y 还是直接 Abort 的情况,在 install 后面加一个 -y 参数即可。

编译 DOMjudge 8.1.3
编译这一步说实话,还是搞了有一点久的……

首先需要创建一个非 root 用户,并且拥有 sudo 权限,执行

useradd -m
passwd
Bash
然后输入新用户的密码,之后

vi /etc/sudoers
Bash
里面 root 这一行下面加上一行,格式同 root 一行,只是 root 改成用户名。
下面都用 表示上面新建的用户名。

在 /home// 下面下载 DOMjudge

wget https://www.domjudge.org/releases/domjudge-8.1.3.tar.gz
Bash
然后解压:

tar -zxvf domjudge-8.1.3.tar.gz
Bash
然后

cd /home//domjudge-8.1.3/
Bash
之后就开始编译,执行如下命令:

sudo ./configure --prefix=/home//domjudge --with-domjudge-user=root --with-baseurl=127.0.0.1
make domserver && sudo make install-domserver
Bash
如果要生成更多文档,执行如下命令:

make docs && sudo make install-docs
Bash
但至少我这步失败了 233 好像是因为 python 的问题?所以这一步(指生成文档)失败了也不用管。

至此也就编译成功啦

配置数据库
sudo /home//domjudge/domserver/bin/dj_setup_database -u root install
Bash
配置 Web 服务器
cd /home//domjudge/domserver
sudo ln -s /home//domjudge/domserver/etc/apache.conf /etc/apache2/conf-available/domjudge.conf
sudo a2enmod rewrite
sudo a2enconf domjudge
sudo systemctl reload apache2
sudo chown www-data:www-data -R webapp/var/*
Bash
现在,内网的话就可以访问 http://127.0.0.1/domjudge 然后就看到如下类似界面

反正差不多就行……
此时可以用用户名 admin 和

/home//domjudge/domserver/etc/initial_admin_password.secret
HTML
内的密码来登录管理后台了。

如果是第三方服务器,比如阿里云啥的,要用公网 ip 访问的话检查一下有没有开放 80 端口。

配置 MySQL
执行:

vi /etc/mysql/conf.d/mysql.cnf
Bash
然后里面追加下面内容

[mysqld]
max_connections = 1000
max_allowed_packet = 16MB
innodb_log_file_size = 48MB
SQL
其中 max_allowed_packet 数值改成两倍于题目测试数据文件的大小,innodb_log_file_size 数值改成十倍于题目测试数据文件的大小。
若使用的是 mariadb,则 /etc/mysql/mariadb.conf.d/50-server.cnf 中 max_allowed_packet 一项也需要修改。

之后执行

sudo systemctl restart mysql
Bash
配置 Apache2
vi /etc/apache2/apache2.conf
Bash
搜索 KeepAlive 关键字,将其值设为 Off,并在其后新增一行内容:

MaxClients 1000
SQL
然后退出,执行

sudo systemctl restart apache2
Bash
之后去
/etc/php/php版本号/apache2/php.ini“里,需要修改的东西都在 DOMjudge 后台管理里面有个 Config checker 的东西,位置如下

根据里面的东西来改即可。

至此,DOMserver 的配置全部完毕!更多内容可以参考 cn-xcpc-docs/domserver.md at master · minorcong/cn-xcpc-docs · GitHub

Judgehost (docker)
表示实在受不了不用 docker 直接嗯搭的折磨了……所以 Judgehost 就直接用 docker 搭算了(

下载 docker
curl -sSL https://get.daocloud.io/docker | sh
Bash
设置 cgroups
然后需要设置本机 cgroups,编辑 /etc/default/grub 文件,将下面这行

GRUB_CMDLINE_LINUX_DEFAULT=""
Bash
修改为

GRUB_CMDLINE_LINUX_DEFAULT="quiet cgroup_enable=memory swapaccount=1"
Bash
之后执行

update-grub
Bash
然后再重启机子即可,之后检查下 /proc/cmdline 里面有无对应 log,有的话就好耶~
如果没有的话,有些机子可能会被 /etc/default/grub.d/ 里面的东西覆盖,在 update-grub 可以看到 Sourcing 了哪些文件,都检查一下,凡是有 GRUB_CMDLINE_LINUX_DEFAULT 的地方都改一下即可。

运行 Judgehost
接下来就是直接在 docker 里面运行 Judgehost。命令如下:

docker run -d -it --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name judgehost-0 --hostname judgedaemon-0 -e DAEMON_ID=0 -e CONTAINER_TIMEZONE=Asia/Shanghai -e JUDGEDAEMON_PASSWORD= -e DOMSERVER_BASEURL= domjudge/judgehost:8.1.3
Bash
其中 domserver password 是在

/home//domjudge/domserver/etc/restapi.secret
HTML
里面,domjudge url 就是 domserver 对应的地址,最后要加个 / 符号。

如果要配置多台 Judgehost,就把上面 judgehost-0, judgedaemon-0, 对应编号一起改了,依次递增即可。如果一台机子 CPU 是多核(物理核)的话,核心编号就是 DAEMON_ID,从 0 开始编号。

然后在 domjudge 后台管理界面就应该看得到几个 Judgehost 了,像这样

好,终于把这杀千刀的 Judgehost 配置好了(

配置打印机
这次用的打印机据说有点老了,但还是能用就行。

通过 USB 连接上打印机之后,执行

sudo apt install hplip
Bash
除了与 root 用户有关的那个选项注意一下其他一路默认即可。

之后再安装

sudo apt install hplip-gui
Bash
之后在打印机连接的情况下再安装

sudo apt install hp-plugins
Bash
之后执行

sudo hp-setup
Bash
如果没有图形的界面的话,执行

sudo hp-setup -i
Bash
然后选择 USB,之后会自动寻找到该打印机,一路安装好即可。

之后去 DOMjudge 后台,找到 print_command(在 Configuration 啥的地方),里面加上一句

enscript -b [username] -a 0-10 -f Courier9 [file] 2>&1
Bash
其中 username 就是用户名,0~10 就是每次请求只打印前 10 页。

之后,找个用户来登录,就可以看到上面有个 Print,如图

就可以愉快打印啦~

之后再连接惠普系列的打印机时,就不需要配置上面这些了,即插即用

配置 ICPC Tools
注:以下的内容还未在 DOMjudge 8.1.3 测试过,都是基于 7.3.4 测试的

这是个甚么东西?主要就是用来显示一些东西用的,总的来说配好了的话还挺有那味的(

这一部分主要参照 官方文档,但这上面也有一点小错误,这里就整理下吧。

配置 CDS
CDS 又叫 Contest Data Server,主要用以比赛后台的一些管理服务,得先配置好这个才能用其他 Tools(Resolver 除外)。

首先,在 DOMjudge 后台创建一个账号,并且分配其角色为 API reader、API writer、Source code reader,记录下用户名和密码(下面用户名和密码分别称为 usercds 和 usercdspwd)。

之后,在需要运行 CDS 的机子上下载并安装 CDS(这个东西占用资源较大,不太建议把 DOMserver 和 CDS 放一起,当然机子够神的话也无所谓),链接在这里(CDS v2.4.727)。
下载好了之后解压,把 wlp 目录重命名为 cds,方便好认些。

接下来,修改 cds/usr/servers/cds/config/cdsConfig.xml,里面所有的内容替换成如下:

<!-- Set location= to a directory that the user running the CDS can write to -->
<contest location="/home/cds/contest-data" recordReactions="false">
    <!-- Set the url to the URL of your DOMjudge installation, followed by /api/contests/<cid>, where <cid> is your CID or external ID -->
    <!-- Set the user and password to the user you created in the previous step -->
    <ccs
        url="https://www.domjudge.org/demoweb/api/contests/nwerc18"
        user="cds"
        password="somepassword" />
</contest> 复制


HTML
其中 location 替换成一个不需要 root 就能访问或者修改的目录(比如

/home//cds/contest-data
HTML
),url 就是

/api/contests/
HTML
,其中 contest cid 就是下面这个

另外还有 user 和 password,分别就对应 usercds 和 usercdspwd。

接下来修改 cds/usr/servers/cds/users.xml,里面的所有用户名不能修改,否则会很麻烦,把所有密码修改一下,为了安全(不修改也可以,但不推荐)。

接下来就可以运行(需要装 java jdk 11 或以上)

cds/bin/server start cds
Bash
来启动 CDS 了,关闭的话把 start 换成 stop 即可(没有 restart)。

之后,访问

https://:8443/
HTTP
,这里需要保证 8443 端口开放,直接就 ip:8443 即可。忽略 SSL 警告,就会看到如下界面:

点右上角 login,用 users.xml 里面 admin 的信息来登录。

至此,CDS 算是弄好啦

配置 presentation admin
这又是个甚么东西?可以看 这份文档。总之就是个屏幕显示后台管理工具,可以管理多个 Client 的屏幕显示。

这个东西可以装在任意一台电脑上,点这里下载Presentation Admin v2.3.491,并且据说在 macOS 和 Windows 下更不容易挂?

2.4.727 版本用下面的方法连不通,2.3.491 则可以,目前还没有发现原因。总之能跑就行(

我是在 Windows 下弄的,下载解压之后,在 bash 环境下在该目录内运行(没有 bash 可以装个 git)

ICPC_FONT="Microsoft Yahei" ./presAdmin.bat https://:8443/api/contests/ presAdmin
Bash
其中 presAdmin 还有其密码见 users.xml,server ip 就是上面说的那个 ip:8443。cid 则是上面所说的 contest cid。

要记得一定要加个 ICPC_FONT=”Microsoft Yahei” ,否则可能中文支持有问题。后面 ICPC Tools 所有东西都要加个这个。

之后,会出现这个界面

如果一直显示 Disconnected 就重新试一下。

配置 presentation clients
上面这张图左边一个 Client 都没有,接下来来配置。

同样,这一步我还是选择了一台 Windows 来配置的。下载地址Presentation Client v2.4.727,官方文档见 这里

Clients 2.3 版本的有 bug,会遇到可能出现 main connection 之后程序就退出且 log 没有 error。官方给的解决方法是用最新版本的 Client(即 2.4 版本)。这个时候对于一些字体或者 emoji 表情能够正常显示而 2.3 版本则不行。

之后解压,还是在 bash 环境下在该目录下运行

ICPC_FONT="Microsoft Yahei" ./client.bat https://:8443/api/contests/ presentation --name
Bash
其中 presentation 及密码见 users.xml,最后的 name 是指这台 client 的名称,可以不加。cid 同上面 contest cid。

这样执行完之后,会看到整个屏幕都是下面这个

以及 presentationAdmin 这边也多了一台 Client

然后就可以愉快体验辣(

其他的一个比较有用的参数:–display=id,即如果连了多台显示器,用这个来指定显示的显示器编号。

配置 Resolver(滚榜)
十分感谢 SYSU-Lanly,这里参考了他的博客。这里就用他的这套工具来弄。

先总结一下做了什么:一个就是最基础的滚榜,然后就是给队伍加上了照片。

一场比赛结束后,首先在 DOMjudge 上 Finalize 这场比赛,之后再来调用 resolver。

resolver 可以支持 CDP 格式的文件夹,2.4 版本之后支持的 CDP 文件夹格式如下:

.
├── config // 非必需
│ ├── contest.yaml // 从domjudge Import/export页面导出即可
│ ├── groups.tsv // 从domjudge Import/export页面导出即可
│ ├── problemset.yaml
│ └── teams.tsv // 从domjudge Import/export页面导出即可
├── contest
│ ├── banner.png // resolver无用,但在cds放置于此就可显示banner
│ └── logo.png // resolver主页面的图片&无照片队伍的默认照片
├── events.xml // 滚榜数据
├── groups // Categories照片,但在resolver似乎没起到作用
│ └── 3 // Categories的id
│ └── logo.png
├── organizations // Affiliations照片,只要某Affiliations的队伍有logo,其他同Affiliations的队伍就都是该logo
│ ├── 3000 // 该Affiliations所对应的任一队伍的icpc id
│ │ └── logo.png
│ ├── 3001
│ │ └── logo.png
│ ├── 3012
│ │ └── logo.png
│ ├── 3017
│ │ ├── country_flag.png // 照源码里是这样放置的,但在resolver似乎没起到作用
│ │ └── logo.png
│ └── 3187
│ └── logo.png
└── teams // 队伍照片

├── 3000            // 队伍的icpc id
│   └── photo.png   // 照片名字固定是photo
├── 3001
│   └── photo.png
├── 3009
│   └── photo.png
└── 3010
    └── photo.png 复制

所以队伍照片等等直接按照上面的格式来就行…… 就只有一个 teams 文件夹带上 events.xml 就是最简单的结构了。

最主要的就是这个 events.xml 怎么生成,这里采用了 Lanly 的工具:Github – icpc-resolver-from-domjudge。剩下的直接按照这里面的流程来就行。

不过注意一点,就是配置 config.json 中,各个奖的总数之和不能超过人数。

其中的执行 ./resolver.bat 命令在 Git Bash 下运行,用如下格式:

ICPC_FONT="Microsoft Yahei" ./resolver.bat ./cdp/
Bash
如果这场比赛没有 Finalize 的话,上述命令需要在最后加一句
–test“

如果遇到 java 报 OutOfMemory 则直接修改 resolver.bat 内最后一句命令,将 -Xmx=1024m 调大,比如 -Xmx=4g 再试试。

然后就可以愉快滚榜啦,具体操作见官方文档

下面的是之前的解决方案,可以不用看了,仅作参考
这一步也是很多坑……

一场比赛结束后,首先在 DOMjudge 上 Finalize 这场比赛,之后去

http:///api/contests//event-feed?stream=false
HTML
下载 event-feed。下载完之后,加一个 .json 后缀名,之后来下载 Resolvers v2.4.727,这一步还是在 Windows 上面搞。

之后打开 awards.bat,并且在 Disk 里面找到 event-feed.json,这一步可能会提示这个

一般来说是没有 Finalize 的问题,但也有可能 Finalize 了也有这个。这里不管,点右上角 Save,保存一个 json 文件,姑且命名为 test.json。

之后仍然在 bash 环境下运行

ICPC_FONT="Microsoft Yahei" ./resolver.bat test.json --test
Bash
注意:这一步不要./resolver.sh,亲测有点问题。最后的
–test“是在有前面那个 Warning 的情况下加的。

如果遇到 java 报 OutOfMemory 则直接修改 resolver.bat 内最后一句命令,将 -Xmx=1024m 调大,比如 -Xmx=4g 再试试。

然后就可以愉快滚榜啦,具体操作见官方文档

References
CN-XCPC-DOCS
计算机 · DOMjudge Docker 配置
Connecting the ICPC Tools with DOMjudge
ICPC Tools
docker hub – domjudge
DOMjudge Manual 7.3
ICPCToy – DOMjudge
Lanly – 滚榜程序Resolver源码阅读

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/548305.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BypassUAC漏洞挖掘和代码集成

什么是UAC UAC是UserAccountControl的缩写&#xff0c;即用户帐户控制。是Windows操作系统中的一种安全特性&#xff0c;旨在保护计算机不被未经授权的应用程序和操作所破坏。UAC通过提示用户是否允许某个应用程序或操作修改计算机的设置或访问敏感数据&#xff0c;来帮助用户…

AntDesign震撼发布!阿里企业级设计体系引领行业风向!

企业级产品设计系统Antdesign是蚂蚁集团经过大量项目实践和总结&#xff0c;逐步打磨出来的产品。随着近两年b端产品的逐渐白热化&#xff0c;越来越多的用户对更好的用户体验有了进一步的要求。 作为国内研发团队量身定制的在线协作工具&#xff0c;设计师可以直接预览并在即…

C语言 | Leetcode C语言题解之第25题K个一组翻转链表

题目&#xff1a; 题解&#xff1a; /* 定义保存两个地址的结构体* 用来保存反转后结果的头节点和尾节点*/ typedef struct {struct ListNode* head; struct ListNode* tail; } TwoAddress; // 反转中间链表 TwoAddress* reverse(struct ListNode* head){struct ListNode* pr…

Java IO流-字节流

简介 IO流的输入与输出&#xff0c;都在站在内存的角度来看的&#xff0c;因为毕竟是和内促你打交道的嘛&#xff01; 分类 IO流是可以根据方向&#xff0c;或者最小单位进行划分的 上述两两结合一下&#xff0c;就得到四种大的分类 IO流的继承体系 字节输入流InputStream 创建…

邮件群发系统如何确保效率?怎么评估性能?

邮件群发系统构建方法&#xff1f;邮件群发系统有哪些关键功能&#xff1f; 如何确保邮件群发系统的效率&#xff0c;以及如何评估其性能&#xff0c;却成为摆在众多使用者面前的一大问题。AokSend将围绕这两个方面展开讨论&#xff0c;帮助读者更好地理解和应用邮件群发系统。…

链表OJ1——删除链表中等于给定值 val 的所有节点

题目 力扣OJ链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 解法 我们来看看这个题目啊&#xff0c;怎么做呢&#xff1f; 有两种解法 三指针法 我们完全可以定义三个指针来进行这个删除操作 假设我们要移除的是2 这样子就完成了 特殊情况 开头——假设我们…

【学习】黑盒测试用例设计方法都有哪些

在软件测试中&#xff0c;黑盒测试是一种重要的测试方法&#xff0c;它专注于软件的外部行为&#xff0c;而不关心其内部结构和实现。黑盒测试的目标是确保软件的功能符合需求规格说明书中的要求。为了有效地进行黑盒测试&#xff0c;需要设计合理的测试用例。本文将详细介绍黑…

java:多线程中的死锁

多线程:死锁 当多个线程互相争抢资源导致都在互相等待资源的僵局时,如果没有外力,将会一直僵持下去,这就是死锁. 就像两个人分一双筷子,如果一人拿到一根筷子,都在等待对方手里的那根,将没有人能完成吃饭的任务. 死锁的必要条件 1,互斥 即资源只能被一个线程调用 2,不可剥…

idea 卡怎么办

设置内存大小 清缓存重启 idea显示内存全用情况 右下角

【图解】卖USDT的风险

张三涉足一项神秘行业&#xff0c;有时也会参与加密货币的交易。有一天&#xff0c;他添加了邵律师的微信&#xff0c;向他咨询&#xff1a;如何更安全地出售U币&#xff1f;因此&#xff0c;便有了这张图片。 他看了我的回复后叹了口气&#xff0c;说&#xff1a;“是的&#…

Docker容器tomcat中文名文件404错误不一定是URIEncoding,有可能是LANG=zh_CN.UTF-8引起

使用Docker部署tomcat&#xff0c;出现中文名文件无法读取&#xff0c;访问就是404错误。在网上搜索一通&#xff0c;都说是在tomcat的配置文件server.xml中修改一下URIEncoding为utf-8就行&#xff0c;但是我怎么测试都不行。最终发现&#xff0c;是Docker启动时&#xff0c;传…

攻防世界---Reversing-x64Elf-100

1.下载附件&#xff0c;先查壳&#xff0c;无壳 2.用IDA分析&#xff0c;找到main函数&#xff0c;使用fnf5&#xff0c;反编译 3.分析代码 4.双击进入条件函数中查看代码 5.编写代码&#xff0c;来源&#xff1a;https://blog.csdn.net/2303_80796023/article/details/1370866…

Kingbase(人大金仓数据库)(总结全网精华,虚拟机:从安装到操作数据库一条龙)

前言&#xff1a; 前一阵子一直在捣鼓人大金仓数据库&#xff0c;虽然国产化的数据库很值得夸赞&#xff0c;但是网上的资料确实少的可怜。特此记录一下我在学习这个数据库的心酸历程。 安装就看这个大哥的&#xff0c;我之前安装就是看的他的&#xff0c;非常靠谱。 linux安装…

Python人工智能教学之掌握机器学习深度学习并提升实战能力(共72个视频教学+课程资料)云盘下载

人工智能是未来的发展方向&#xff0c;掌握了人工智能&#xff0c;就掌握了钱图。。。 Python人工智能教学之掌握机器学习深度学习并提升实战能力&#xff08;共72个视频教学课程资料&#xff09; 下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1ryJd5PNx1tLD…

C# 字面量null对于引用类型变量和值类型变量

编译器让相同的字符串字面量共享堆中的同一内存位置以节约内存。 在C#中&#xff0c;字面量&#xff08;literal&#xff09;是指直接表示固定值的符号&#xff0c;比如数字、字符串或者布尔值。而关键字&#xff08;keyword&#xff09;则是由编程语言定义的具有特殊含义的标…

设计模式之状态模式(上)

状态模式 1&#xff09;概述 1.定义 允许一个对象在其内部状态改变时改变它的行为&#xff0c;对象看起来似乎修改了它的类。 2.作用 状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。 3.方案 状态模式将一个对象的状态从该对象中分离出来&…

VulNyx - Ready

目录 信息收集 arp nmap nikto Redis未授权访问漏洞 漏洞扫描 redis-cli 写入公钥 ssh连接 get root.txt 信息收集 arp ┌─[rootparrot]─[~/vulnyx] └──╼ #arp-scan -l Interface: enp0s3, type: EN10MB, MAC: 08:00:27:16:3d:f8, IPv4: 192.168.9.102 Starti…

网络协议安全:SSL/TLS协议详解,SSL协议执行原理、报文格式解析,Wireshark抓包分析SSL协议

「作者简介」&#xff1a;2022年北京冬奥会中国代表队&#xff0c;CSDN Top100&#xff0c;学习更多干货&#xff0c;请关注专栏《网络安全自学教程》 SSL协议 1、SSL协议发展史2、SSL协议执行过程3、SSL报文格式字段解析3.1、TLS报文头3.2、Handshake报文 4、Wireshark抓包分析…

基于STC12C5A60S2系列1T 8051单片机的带字库液晶显示器LCD12864数据传输并行模式显示16行点x16列点字模的功能

基于STC12C5A60S2系列1T 8051单片机的带字库液晶显示器LCD12864数据传输并行模式显示16行点x16列点字模的应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍液晶显示…

javaweb在线拍卖系统

项目采用技术栈 htmlcssjs Vue2.js axios.js tomcat Servlet Mybatis Mysql 1.竞拍商品列表 实现多条件分页查询,头部根据是否登录作出不同的判断信息(登录或注销) 2.登录功能 3.竞拍页面 只有登录用户才能竞拍&#xff0c;出价记录需要实现关联用户查询 4.管理员登录增…
最新文章