学校OJ探索
社团课上与同学玩学校OJ 并尝试对评测机进行一些探索 为了方便就用python代码了
已知学校OJ使用的是氦星人系统 评测机禁用了os模块 导致一开始没法进行系统调用 遂尝试读写文件 发现居然是可以的
(socket模块依赖os模块 导致暂时只能通过OJ的测试功能获取代码输出)
先尝试硬写大量数据以搞爆评测机 发现会报File too large错误 于是放弃
根据平时使用经验(做题时的报错)得知评测机为Linux系统 使用Python3.8
然后尝试向/tmp目录写文件 发现可以持久化保存 并且另一位同学也能读取到(顺便根据多次实验发现能读取到的概率大约50% 推测有两个评测机负载均衡)
之后尝试读取/proc等以获取系统信息 如下
信息
来源
值
CPU
/proc/cpuinfo
Intel® Xeon® Gold 5120 CPU @ 2.20GHz
内存
/proc/meminfo
16GB
硬盘分区
/proc/partitions
104857600 blocks (sda)… (按1KB/block则为100GB)
启动镜像
/proc/cmd ...
一些定积分的几何意义及计算
定积分
一重积分
∫abf(x)dx\int_{a}^{b}f(x)dx
∫abf(x)dx
几何意义:曲线 f(x)f(x)f(x) 与 xxx 轴围成的曲边梯形的有向面积
物理意义:以 f(x)f(x)f(x) 为线密度函数的曲线在 [a,b][a,b][a,b] 上的质量
计算时可使用牛顿-莱布尼茨公式
∫abf(x)dx=F(b)−F(a)\int_{a}^{b}f(x)dx=F(b)-F(a)
∫abf(x)dx=F(b)−F(a)
其中 F(x)F(x)F(x) 为 f(x)f(x)f(x) 的原函数,即 F′(x)=f(x)F'(x)=f(x)F′(x)=f(x)
二重积分
∬Df(x,y)dσ\iint_{D}f(x,y)d\sigma
∬Df(x,y)dσ
几何意义:曲面 f(x,y)f(x,y)f(x,y) 与 xyxyxy 平面围成的柱体的有向面积
物理意义:
以 f(x,y)f(x,y)f(x,y) 为面密度函数的平面在区域 DDD 上的质量
以 f(x,y)f(x,y)f(x,y) 为压强函数的平面在区域 DDD 上受到的压力
计算时可在平 ...
C++编译期计算的探索
先放个代码在这 解释下次再说吧(摸了
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394#include <iostream>#include <utility>#include <array>namespace compiling {#define DEF_BINARY_OP(NAME, OP)\ template <auto N1, auto N2>\ struct NAME##_t : std::bool_constant<N1 == N2> {};\ template <auto N1, auto N2>\ constexpr auto NAME##_ ...
Powershell美化
最近看了B站的一个视频 受到启发 准备给电脑终端美化一下
因为我把Windows Terminal作为终端默认程序 所以和窗口相关的就不用刻意美化了(本来就很好看)
安装Oh My Posh
跟着官网的教程走就可以了 非常简单
1winget install JanDeDobbeleer.OhMyPosh -s winget
之后一定要重启一下终端来加载环境变量PATH
然后我们会发现终端开始的信息成了这样
显然是字体出了问题
安装字体
这里推荐Nerd Fonts 这是将各种图标符号整合到常用代码字体的一个项目 到下载页面选择一个喜欢的字体用就可以了(这里使用JetBrainsMono Nerd Font)
安装好后从Windows Terminal的设置页面选择刚才的字体就可以了
终端适配
在终端中打开PROFILE文件
1code $PROFILE
把下面的内容复制进去
1oh-my-posh init pwsh | Invoke-Expression
然后保存
VSCode适配
修改VSCode的settings.json中terminal.integrated.fontF ...
CSharp随笔-癫疯之作
起因是写了这样一段代码
1234567891011121314if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add){ string ipString = string.Join(",", e.NewItems.Cast<IWebSocketConnection>().Select(x => x.ConnectionInfo.ClientIpAddress)); WeakReferenceMessenger.Default.Send<DisplayAlertMessage>(new("有新用户连接", ipString));}else if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove){ string ipString = string.Join( ...
.NET MAUI 踩坑
时隔数月 皮燕又痒了 想搞搞Android开发
由于不熟悉Android Studio的操作和Java/Kotlin 所以优先选择熟悉的VS-.NET-MAUI-C#
在这里记录一些遇到的问题 以便以后参考
教程
MSDN的文档过于零散 这里按照一般项目开发的顺序整理 具体细节参考MSDN
在VS中创建示例项目
略
修改App Identifier(你也不想看到com.examplecompany.appname的包名罢)
修改.csproj文件中的ApplicationId节点
如果进行安卓开发 则修改AndroidManifest.xml中的manifest节点的package属性和manifest.application节点的android:label属性为合适的值
更改应用图标
在网上找到或制作自己的应用图标(最好是SVG格式) 放到合适的目录(如Resources/AppIcon)
修改.csproj文件中的MauiIcon节点的属性 其中
Include为背景图片 如Resources\AppIcon\appicon.svg [必选]
ForegroundFile为 ...
代码片段
一些-study项目中有用的代码片段
[C++]生成GUID(仅Windows下可用)
12345678910111213141516171819#include <objbase.h>GUID CreateGuid() { GUID guid; if (CoCreateGuid(&guid) == S_OK) { return guid; } throw exception("generate guid failed!");}string GuidToString(const GUID& guid) { char buf[64] = { 0 }; snprintf(buf, sizeof(buf), "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", guid.Data1, guid.Data2, ...
C#随笔
最近写项目的时候用到这样一段代码
12345678Console.WriteLine( string.Join('\n', (await api.Download(3174)) .Split('\n') .Where( line => !string.IsNullOrWhiteSpace(line) ) ));
理想情况下中间打算写成.Where(!string.IsNullOrWhiteSpace)
但是C#好像不支持这样的运算符重载
于是写一个函数处理一下
12345678910public static class Functional{ public static Func<T, bool> Not<T>(Func<T, bool> func) { return (T para) => { return !func(para) ...
.NET 7中System.IO.Compression的性能测试
之前我对一个字符串格式的文本文档进行了整理 将其转换为了二进制文件 其格式如下
field (per row)
type
size
field1
int64
8byte
field2
int64
8byte
这不仅使得体积从约16GB减小到约10GB 还大幅提升了读取和检索的速度
从在WSL1中使用cat+grep最高300MB/s的速度
提升到用C写一个简单的程序进行读取的最高约1GB/s的速度
最近 为了进一步压缩体积 我决定对其进行压缩
当然 一切的前提是便于检索数据 即可以通过流式方法读取数据
于是我决定使用GZip 一方面GZip是比较广泛的压缩格式
另一方面C#在System.IO.Compression中提供了GZipStream 便于读取
同时也可以用这个进行压缩
压缩测试
GZipStream提供了CompressionLevel的选项 包括Optimal Fastest SmallestSize和NoComression
为了选择使用哪个等级压缩 我写了一个简单的基准测试来比较 代码如下
123456789101112131415161718 ...
Gitee 你妈死了
就在刚才,我想把这个博客部署到Gitee Pages上
Gitee Pages pull后要手动重新部署不说 它居然给我报了这个
我一看 大抵又是我的名字触发违禁词了罢
有一说一 这屏蔽词技术网易看了都要甘拜下风
至此 Gitee只作备份
晦气