2025-07-02 05:26:28
dynamic_cast
是什么?Derived* d = dynamic_cast<Derived*>(basePtr);
basePtr
实际指向一个 Derived
对象,则转换成功nullptr
nullptr
std::bad_cast
异常class Entity { virtual ~Entity() {} }; class Player : public Entity {}; class Enemy : public Entity {}; Entity* e = new Enemy; Player* p = dynamic_cast<Player*>(e); if (p) { // 可以安全使用 p } else { // p 是 nullptr }
try { Entity& e_ref = *new Enemy; Player& p_ref = dynamic_cast<Player&>(e_ref); } catch (const std::bad_cast& ex) { // 捕获异常 }
dynamic_cast
class Entity { virtual void say() {} }; class Player : public Entity { void jump() {} }; Player p; Entity* e = &p; // 隐式向上转型,安全 e-*gt;say(); // 正确 // e->jump(); // 错误:Entity 中没有 jump()
dynamic_cast
的使用条件virtual
函数)static_cast
与 dynamic_cast
比较特性 | static_cast |
dynamic_cast |
---|---|---|
编译期检查 | ✅ | ❌ |
运行期安全 | ❌ | ✅ |
失败时可检测 | ❌(行为未定义) | ✅(返回 nullptr 或抛出异常) |
需要虚函数 | ❌ | ✅ |
dynamic_cast
进行类型安全的向下转型nullptr
;引用转换请使用 try-catch 捕获异常
英文:Understanding dynamic_cast in C++: Safe Downcasting Explained
本文一共 372 个汉字, 你数一下对不对.2025-06-29 06:10:57
每年英国的中小学都会举办各类数学竞赛,我之前也在这里介绍过。今年我家娃参加了 JMC(Junior Mathematical Challenge,初中数学挑战赛),获得了 Gold(金奖/金牌)成绩。不过我个人觉得这个年龄段拿金奖算是中等偏上的水平,但我媳妇却坚持说他只是个“普娃”。
娃今年就读于 IVC 的 8 年级,是在这所学校的最后一年。9 月份他就要升入 Perse 私立学校了。今年他参加了 JMC,也就是 7 至 8 年级学生参与的初中数学竞赛。据说再往上,9 年级及以上的学生则是参加 SMC(Senior Mathematical Challenge,高中组竞赛)。
JMC 第一轮是选择题,共 25 题。前 15 题每题 5 分(总共 75 分),第 16-25 题每题 6 分(共 60 分),总分为 135 分。
娃在第一轮错了一道“大题”和一道“小题”,最后得了 124 分,只差 1 分就能晋级奥林匹克(Olympiad)了。听说今年奥林匹克的晋级线是 125 分,如果按照去年的标准,他是够资格进入下一轮的。
晋级失败后进入了“袋鼠赛”(Kangaroo),这一轮也是选择题形式。他这次错了三题,但最终仍然拿到了 Gold Kangaroo(金牌袋鼠奖)。不过因为不是奥林匹克,我们理解这个奖项更像是一种鼓励性质的表彰。
据说 JMC 的奥林匹克下一轮是 6 道简答题,难度会有明显提升。
今年 JMC 初赛的试卷可以点这里查看难度:JMC-2025-Paper。历年的试卷和参考答案都可以在 UKMT 官网免费下载。
去年他也是 JMC 金奖,但奖状上写的是 “Gold Certificate”,而今年写的是 “Gold Kangaroo”,感觉今年的成绩更进一步。据说 5-6 年级也会参加这套试题,不过 5 年级的学生主要是以参与为主,不进入后续轮次。
2025年英国青少年数学挑战赛 (JMC) 成绩已公布(官网),证书及袋鼠竞赛资格的等级划分如下:铜牌54分,银牌73分,金牌91分,袋鼠竞赛资格100分(仅限英国)。青少年袋鼠竞赛成绩也已公布,金牌113分及以上,银牌101分及以上,铜牌85分及以上。
等级划分:
铜牌:54分
银牌:73分
金牌:91分
袋鼠竞赛资格(仅限英国):100分青少年袋鼠竞赛成绩:
金牌:113分及以上
银牌:101分及以上
铜牌:85分及以上
奥林匹克竞赛资格:125分2025年英国青少年袋鼠数学考试将采用60分钟、25道选择题的考试形式。排名前10%的参赛者将获得金牌证书,接下来的20%将获得银牌证书,接下来的30%将获得铜牌证书。考试题目极具挑战性,鼓励学生进行数学思维。
2025年英国青少年袋鼠数学考试的主要特点:
考试形式:60分钟,包含25道选择题。
计分方式:1-15题每答对得5分,16-25题每答对得6分。答错不扣分。
证书:金牌(前10%)、银牌(接下来的20%)、铜牌(接下来的30%)以及参与/资格证书。
难度:题目按难度排序,难度越难,越靠近题目末尾。
目的:挑战学生,鼓励数学思维。备考:
历年试卷:利用英国数学考试(UKMT)的历年试卷和答案作为宝贵的备考资源。
在线课程:考虑参加 Mathsaurus 等在线课程,进行有针对性的备考。
注重理解:本次比赛注重解决问题,而非猜测。
IVC学校发邮件提醒参加下一轮:
Dear student,
Congratulations on earning an invitation to the Junior Kangaroo 2025 follow-on round of the Junior Maths Challenge!
This is a fantastic achievement, and we are all incredibly proud of you.
The challenge will take place in school on Tuesday, 10th June, during period 1 in K15 and will last for one hour.
Please arrive a few minutes early to settle in and prepare. Remember to bring an HB pencil and a rubber with you.
If you’d like to prepare, you can download past papers, solutions, and investigations here. I hope you find the Kangaroo a rewarding and stimulating experience.
Wishing you the best of luck—have fun and enjoy the problem-solving challenge!
亲爱的同学:
恭喜您获得2025年青少年袋鼠数学挑战赛(Junior Kangaroo 2025)后续赛的邀请!
这是一个了不起的成就,我们都为您感到无比自豪。
挑战赛将于6月10日(星期二)在K15年级第一节课在学校举行,持续一小时。
请提前几分钟到场,安顿好并做好准备。记得带上HB铅笔和橡皮。
如果您想提前准备,可以在这里下载历年试卷、答案和调查问卷。希望您觉得袋鼠数学挑战赛是一次有益且充满启发的体验。
祝您好运——玩得开心,享受解题挑战!
2025-06-25 03:28:28
这些年我陆续折腾过一些小项目,比如博客、在线工具、STEEM见证人等。目前我手头上管理着28台服务器,大多是一些价格便宜的VPS,最近新添的一台是家里鞋柜里的一块树莓派4B(Raspberry Pi)。
我把每台服务器的信息都记录在一个 Excel 表格中,包括 IP 地址、VPS 提供商、内存、硬盘等。这些信息都是静态配置数据。
平时我也写了不少小工具和 Bash 脚本,挂在 crontab 上定期运行,用来监控一些异常情况,比如磁盘空间不足、高 CPU 负载等。一旦检测到异常,就会通过邮件及时通知我。
比如以下BASH脚本(awk/sed)检测硬盘剩余空间:
#!/bin/bash disk=$(df / | tail -1 | awk '{print $5}' | sed 's/%//') if [ "$disk" -gt 90 ]; then echo "Disk usage above 90%" | mail -s "Disk Alert" [email protected] fi
这两天,我在所有服务器上部署了哪吒(Nezha)监控软件的 Agent,这样我就可以在一个统一的网页后台中方便地查看每台服务器的运行状态。比如一看就知道哪台服务器硬盘快满了、CPU高负载等。
管理员登录后台后甚至可以直接通过网页进行 SSH 连接,这在我不方便用终端(比如在公司)时处理一些紧急问题非常实用。
由于这个后台权限非常高(支持以 root 权限 SSH 到每台服务器),所以安装完成后第一件事就是修改默认密码(初始账号是 admin/admin),建议设置一个强密码,甚至有条件可以禁用密码登陆,用OAUTH来替代。
此外,面板服务建议配置 HTTPS。默认监听端口是 8008,最好修改为其他端口。如果只是个人使用,不要公开后台的 URL。
每台服务器都需要安装 Nezha-Agent,和面板之间的通信必须通过 TLS 加密,面板服务器也需要配置好 Nginx 的反向代理。
以下在nginx设置了SSL还有反向代理到8008端口(Nezha Agent)。
server { listen 443 ssl; server_name panel.example.com; ssl_certificate /etc/ssl/certs/fullchain.pem; ssl_certificate_key /etc/ssl/private/privkey.pem; location / { proxy_pass http://localhost:8008; proxy_set_header Host $host; } }
开源项目地址:github/nezha 监控
英文:
2025-06-20 02:34:47
问题:给定程序 P 和输入 x,你能判断 P(x) 是否会停机,还是永远运行下去吗?
假设:H(P, x) 判断 P(x) 是否停机
定义下面的Python函数:
def D(P): if H(P, P): while True: pass # 无限循环 else: return 0 # 停机
那 D(D) 会发生什么?
"这句话是假的。"
R = { x | x 是集合 且 x ∉ x }
异描述词 = 不描述自身的形容词
"这句话无法被证明。"
# Python 中的 Quine 示例 s = 's = {!r}\nprint(s.format(s))' print(s.format(s))
问题 | 领域 | 核心问题 | 结论 |
---|---|---|---|
停机问题 | 计算机科学 | 程序是否能分析自身? | 不可判定 |
理发师悖论 | 逻辑 | 自指导致矛盾 | 悖论 |
说谎者悖论 | 哲学 | 真假自指 | 悖论 |
罗素悖论 | 集合论 | 集合是否包含自身 | 矛盾 |
哥德尔定理 | 数学逻辑 | 不可证明真理 | 不完备 |
Quine 程序 | 编程 | 输出自身代码 | 可控自指 |
英文:The Halting Problem and Its Paradoxical Cousins: When Logic Looks at Itself
本文一共 691 个汉字, 你数一下对不对.2025-06-19 05:36:19
gcd(a, b) = gcd(b, a % b)
b
为 0,此时 a
即为最大公约数。gcd(a, b) = 2 * gcd(a/2, b/2)
a > b
,则 gcd(a, b) = gcd((a - b)/2, b)
gcd()
函数: 使用循环和取模操作实现欧几里得算法。gcd
函数并输出结果。以下是计算GCD的BASH代码。
#!/bin/bash ## 计算两个数的最大公约数 gcd() { local a=$1 local b=$2 while [ $b -ne 0 ]; do local temp=$b b=$((a % b)) a=$temp done echo $a } # 检查是否传入了两个参数 if [ $# -ne 2 ]; then echo "用法: $0 <number1> <number2>" exit 1 fi ## 检查两个参数是否为正整数 if ! [[ $1 =~ ^[0-9]+$ ]] || ! [[ $2 =~ ^[0-9]+$ ]]; then echo "两个参数必须为正整数。" exit 1 fi if [ $1 -le 0 ] || [ $2 -le 0 ]; then echo "两个参数都必须大于零。" exit 1 fi # 调用 gcd 函数并打印结果 result=$(gcd "$1" "$2") echo $result
两个互质整数co-prime,它们的最大公约数为1。
命令 | 输出 |
---|---|
./gcd.sh 24 36 |
12 |
./gcd.sh 7 13 |
1 |
chmod +x gcd.sh
让脚本可执行./gcd.sh 12 30
英文:Compute GCD in Bash with Input Validation
本文一共 599 个汉字, 你数一下对不对.