普通视图

发现新文章,点击刷新页面。
昨天以前首页

常用 VPS 脚本合集

作者 佐仔
2025年6月26日 15:18

玩VPS主机的小伙伴都知道,新开机第一时间DD重装系统或是测试一下VPS主机性能和IP的干净度等操作,这些操作都离不开大佬们写的各种脚本了,有这些脚本新手机才能好好地玩VPS。以下内容是转自于玩机论坛:Nodeseek,之所以收藏在博客之里,是方便自已日常使用和原文消失。在此再次多谢各位大佬们和Nodeseek论坛网友的整理。

1、DD重装脚本。

史上最强脚本

wget --no-check-certificate -qO InstallNET.sh 'https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh' && chmod a+x InstallNET.sh && bash InstallNET.sh -debian 12 -pwd 'password'

萌咖大佬的脚本

bash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh') -d 11 -v 64 -p 密码 -port 端口 -a -firmware

beta.gs大佬的脚本

wget --no-check-certificate -O NewReinstall.sh https://raw.githubusercontent.com/fcurrk/reinstall/master/NewReinstall.sh && chmod a+x NewReinstall.sh && bash NewReinstall.sh

DD windows(使用史上最强DD脚本)

bash <(curl -sSL https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh) -windows 10  -lang "cn"
账户:Administrator
密码:Teddysun.com

使用Windows徽标+R快捷键打开运行框,输入powershell运行,弹出powershell命名输入窗口,输入以下命令:irm https://get.activated.win | iex

2、综合测试脚本

bench.sh

wget -qO- bench.sh | bash

LemonBench

wget -qO- https://raw.githubusercontent.com/LemonBench/LemonBench/main/LemonBench.sh | bash -s -- --fast

融合怪

bash <(wget -qO- --no-check-certificate https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh)

NodeBench

bash <(curl -sL https://raw.githubusercontent.com/LloydAsp/NodeBench/main/NodeBench.sh)

3、性能测试

yabs

curl -sL yabs.sh | bash

跳过网络,测GB5

curl -sL yabs.sh | bash -s -- -i5

跳过网络和磁盘,测GB5

curl -sL yabs.sh | bash -s -- -if5

改测GB5不测GB6

curl -sL yabs.sh | bash -s -- -5

4、流媒体及IP质量测试

最常用版本

bash <(curl -L -s check.unlock.media)

原生检测脚本

bash <(curl -sL Media.Check.Place)

准确度最高

bash <(curl -L -s https://github.com/1-stream/RegionRestrictionCheck/raw/main/check.sh)

IP质量体检脚本

bash <(curl -sL IP.Check.Place)

一键修改解锁DNS

wget https://raw.githubusercontent.com/Jimmyzxk/DNS-Alice-Unlock/refs/heads/main/dns-unlock.sh && bash dns-unlock.sh

5、测速脚本

Speedtest

bash <(curl -sL bash.icu/speedtest)

Taier

bash <(curl -sL res.yserver.ink/taier.sh)

hyperspeed

bash <(curl -Lso- https://bench.im/hyperspeed)

全球测速

curl -sL network-speed.xyz | bash

6、回程测试

直接显示回程(小白用这个)

curl https://raw.githubusercontent.com/ludashi2020/backtrace/main/install.sh -sSf | sh

回程详细测试(推荐)

wget -N --no-check-certificate https://raw.githubusercontent.com/Chennhaoo/Shell_Bash/master/AutoTrace.sh && chmod +x AutoTrace.sh && bash AutoTrace.sh
wget https://ghproxy.com/https://raw.githubusercontent.com/vpsxb/testrace/main/testrace.sh -O testrace.sh && bash testrace.sh

7、功能脚本

添加SWAP

wget https://www.moerats.com/usr/shell/swap.sh && bash swap.sh

Fail2ban

wget --no-check-certificate https://raw.githubusercontent.com/FunctionClub/Fail2ban/master/fail2ban.sh && bash fail2ban.sh 2>&1 | tee fail2ban.log

一键开启BBR,适用于较新的Debian、Ubuntu

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_available_congestion_control
lsmod | grep bbr

多功能BBR安装脚本

wget -N --no-check-certificate "https://gist.github.com/zeruns/a0ec603f20d1b86de6a774a8ba27588f/raw/4f9957ae23f5efb2bb7c57a198ae2cffebfb1c56/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

锐速/BBRPLUS/BBR2/BBR3

wget -O tcpx.sh "https://github.com/ylx2016/Linux-NetSpeed/raw/master/tcpx.sh" && chmod +x tcpx.sh && ./tcpx.sh

TCP窗口调优

wget http://sh.nekoneko.cloud/tools.sh -O tools.sh && bash tools.sh

添加warp

wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh [option] [lisence/url/token]

25端口开放测试

telnet smtp.aol.com 25

8、一键安装常用环境及软件

docker

bash <(curl -sL 'https://get.docker.com')

Python

curl -O https://raw.githubusercontent.com/lx969788249/lxspacepy/master/pyinstall.sh && chmod +x pyinstall.sh && ./pyinstall.sh

iperf3

apt install iperf3

realm

bash <(curl -L https://raw.githubusercontent.com/zhouh047/realm-oneclick-install/main/realm.sh) -i

gost

wget --no-check-certificate -O gost.sh https://raw.githubusercontent.com/qqrrooty/EZgost/main/gost.sh && chmod +x gost.sh && ./gost.sh

极光面板

bash <(curl -fsSL https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/install.sh)

哪吒监控

curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh

WARP

wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh

Aria2

wget -N git.io/aria2.sh && chmod +x aria2.sh && ./aria2.sh

宝塔

wget -O install.sh http://v7.hostcli.com/install/install-ubuntu_6.0.sh && sudo bash install.sh

PVE虚拟化

bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/oneclickvirt/pve/main/scripts/build_backend.sh)

Argox

bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/argox/main/argox.sh)

9、综合功能脚本

科技lion

apt update -y  && apt install -y curl

bash <(curl -sL kejilion.sh)

SKY-BOX

wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

TG中文汉化

https://t.me/setlanguage/classic-zh-cn

停机问题与悖论: 当逻辑凝视自身


old-computer 停机问题与悖论: 当逻辑凝视自身 学习笔记 算法 计算机

上一个世纪的电脑

停机问题:程序能预测自己吗?


问题:给定程序 P 和输入 x,你能判断 P(x) 是否会停机,还是永远运行下去吗?

  • 由阿兰·图灵于 1936 年提出
  • 被证明为不可判定——不存在通用算法能解决所有情况
  • 本质是自指问题:程序能分析另一个程序(甚至是自己)吗?

图灵的思想实验

假设:H(P, x) 判断 P(x) 是否停机

定义下面的Python函数:

def D(P):
    if H(P, P):
        while True: pass  # 无限循环
    else:
        return 0  # 停机

那 D(D) 会发生什么?

  • 如果 D(D) 停机 → 它应该陷入死循环
  • 如果 D(D) 死循环 → 它应该停机

逻辑中的类比:自指悖论

1. 理发师悖论

  • 理发师为所有“不自己刮胡子”的人刮胡子
  • 那理发师给自己刮吗?
  • 造成矛盾 —— 和 D(D) 的情况完全相同

2. 说谎者悖论

"这句话是假的。"

  • 如果是真的 → 它就是假的
  • 如果是假的 → 它就是真的
  • 纯粹的自指,导致真假互相循环

3. 罗素悖论(集合论)

R = { x | x 是集合 且 x ∉ x }

  • R ∈ R 吗?
  • 如果是 → 不应该在 R 中
  • 如果不是 → 应该在 R 中

4. Grelling–Nelson 悖论

异描述词 = 不描述自身的形容词

  • “异描述词”是异描述词吗?
  • 如果是 → 就不是;如果不是 → 就是

5. 哥德尔不完备性定理

"这句话无法被证明。"

  • 如果能被证明 → 矛盾
  • 如果不能证明 → 它是真的但系统无法证明
  • 某些真理超出了系统本身的证明能力

6. Quine 程序

# Python 中的 Quine 示例
s = 's = {!r}\nprint(s.format(s))'
print(s.format(s))
  • 输出自身源码的程序
  • 体现了受控的自指结构

7. 决定性问题(Entscheidungsproblem)

  • 希尔伯特问:是否存在一种通用方法判定一切数学命题的真假?
  • 图灵与邱奇给出的答案:否
  • 停机问题正是其不可判定性的关键依据

总结对照表

问题 领域 核心问题 结论
停机问题 计算机科学 程序是否能分析自身? 不可判定
理发师悖论 逻辑 自指导致矛盾 悖论
说谎者悖论 哲学 真假自指 悖论
罗素悖论 集合论 集合是否包含自身 矛盾
哥德尔定理 数学逻辑 不可证明真理 不完备
Quine 程序 编程 输出自身代码 可控自指

最后的思考

  • 所有这些悖论都说明了:当一个系统试图描述自身时,往往会触及其极限
  • 自指非常强大,但也极具风险
  • 停机问题不仅是计算问题,更是逻辑深处的一面镜子

计算机科学

英文:The Halting Problem and Its Paradoxical Cousins: When Logic Looks at Itself

本文一共 691 个汉字, 你数一下对不对.
停机问题与悖论: 当逻辑凝视自身. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 停机问题与悖论: 当逻辑凝视自身 学习笔记 算法 计算机
The post 停机问题与悖论: 当逻辑凝视自身 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  4. 比特币最近波动有点大: 一天牛市一天熊 比特币10万美金以内都是最后上车的机会! 比特币近期的价格波动可以归因于多个关键因素,包括地缘政治动态、监管变化以及加密行业内的重大安全事件。其中一个主要影响因素是美国前总统唐纳德·特朗普对乌克兰和加密货币监管的立场变化。据报道,特朗普再次当选,他可能会推动减少美国对乌克兰的支持,这可能会影响全球金融市场和风险偏好。同时,特朗普正在将自己塑造为亲加密货币的候选人,表示有意让美国成为一个更加友好的加密货币环境。这一立场引发了市场对监管政策可能发生变化的猜测,导致市场情绪在乐观和不确定性之间波动。 特朗普对俄乌战争的态度 美国第43届总统唐纳德·特朗普已经在2025年1月当选并正式上任(第二次),那么他的政策可能会对比特币价格的波动产生更加直接和显著的影响。他政府对乌克兰和加密货币监管的立场已经不再是猜测,而是正在实际塑造市场的关键力量。 特朗普(Donald Trump)减少美国对乌克兰的支持,全球投资者可能会预期地缘政治稳定性发生变化,从而增加对比特币作为避险资产的需求。同时,他的亲加密货币立场可能正在推动市场的乐观情绪。如果他的政府推出有利于加密行业的监管政策,例如明确的合规指南或减少监管审查,可能会吸引更多机构投资者进入市场,并促进更广泛的加密货币采用。然而,政策的快速变化也可能导致短期市场剧烈波动,因为市场需要时间来消化新的政策动向。 朝鲜黑客盗取Bybit交易所15亿美元的ETH 另一个显著影响比特币价格的事件是近期涉及朝鲜黑客组织“Lazarus”的15亿美元以太坊被盗案件。据报道,Bybit交易所(全球第二)这些被盗的ETH已经被清洗,此次大规模黑客攻击引发了人们对加密行业安全性的担忧。此类安全事件不仅会削弱投资者信心,还可能引发更严格的监管审查,导致短期市场动荡。此外,被盗资金的大规模流动和出售可能对市场流动性造成冲击,进一步加大价格波动。随着这些事件的持续发酵,比特币价格正受到政治决策、监管预期以及安全挑战等多重因素的影响。 与此同时,与朝鲜黑客组织 Lazarus 相关的 15 亿美元以太坊被盗事件仍在影响加密市场。由于这些被盗 ETH 已被清洗,人们对加密行业安全漏洞的担忧持续存在,同时也可能引发更严格的监管审查。政治、监管和安全等多重因素交织在一起,共同导致了比特币近期的剧烈价格波动。...
  5. 老婆的配偶签证被拒 郁闷死了, 601镑签证费打水漂,一去不回!费钱费力. 去年12月份我请了律师拿到了永居.老婆是T1G签证的陪工签 (DEPENDENT VISA) 2016年4月份到期. 然后我就想说得趁早把她的签证转成配偶签(SPOUSE)这样她就可以尽快走五年永居的路线. 今天收到拒签信,原因是我没有提供 有工资进帐的那份银行帐单,我提供了我和我老婆的联名帐户, 但是工资并不是直接打到这个帐单上的.所以就这一点被拒了.完全不给解释,不给补材料的机会.601镑就这样再见了. 英国的签证寄出之后是先由另一个部门先收费, 收完费才正式审理,而且不管结果如何是不退钱的.后悔没让律师弄,也不至于到现在浪费这么多时间和金钱,签证还没过.由于原签证还没到期,所以还不能上述.估计只能等搬完家后年底请律师搞定这事. 真是郁闷, 600镑, 我可以再买一个IPHONE6,或者给我的新买的车换四个轮胎....
  6. 公司给配了台高配DELL笔记本 早上例会结束的时候我顺便说了一句 我的笔记本有点慢, 当时我并不知道我的经理远程用电话也参加会议了(他全程在听), senior staff SE 对着电话说, “peter, you hear that? btw, my disks are...
  7. 花钱让人换汽车钥匙的电池真是个智商税 今天想不到我这么聪明的人也被人狠狠的收了一把智商税. 今天被收智商税了, 去 Tesco 换车钥匙的电池. . 才发现如此的简单, 那人直接2分钟搞定2个, 然后收了我25英镑. . 服了. . 我还以为很复杂…… 网友说 “1....
  8. 加个页面分享下拉选项 从 Leonax 的博客发现每篇博客有个分享选项,于是我就看源代码,可是后来发现一般人不太好发现怎么实现的, 用了JQUERY,并且代码是在一个JS文件的最后.索性自己实现,还好不难. 以上是通过 CHROME 浏览器 选择文字 并且通过 Inspect Element 来看动态生成的页面元素和代码,如果只查看源代码,你只会发现一个空的 span 元素. 其实只要把下面(一目了然)的JS代码放到页面模板中...

Bash 编程: 计算两个正整数的最大公约数/GCD


使用 Bash 脚本计算最大公约数(GCD)

什么是 GCD?

  • GCD最大公约数(Greatest Common Divisor) 的缩写。
  • 它是能同时整除两个整数的最大正整数。
  • 例如:
    • 8 和 12 的 GCD 是 4
    • 14 和 49 的 GCD 是 7
  • GCD 常用于化简分数、密码算法以及数论中。

计算 GCD 的常见算法

1. 欧几里得算法

  • 最常见且高效的算法
  • 基于这样一个原理:gcd(a, b) = gcd(b, a % b)
  • 重复上述步骤直到 b 为 0,此时 a 即为最大公约数。

2. 减法法

  • 不断用较大的数减去较小的数,直到两个数相等。
  • 结果就是它们的 GCD。
  • 相比欧几里得算法,这种方法在处理大数时效率较低。

3. 二进制 GCD 算法(Stein 算法)

  • 使用位运算代替除法运算。
  • 在某些硬件中更高效,因为避免了除法和取模操作。
  • 基于以下规则:
    • 若两个数都为偶数:gcd(a, b) = 2 * gcd(a/2, b/2)
    • 若其中一个是偶数,则将其除以 2
    • 若两个数都为奇数,且 a > b,则 gcd(a, b) = gcd((a - b)/2, b)

功能概述

  • 该脚本计算两个数字的最大公约数(GCD)
  • 确保输入参数是正整数
  • 当输入缺失或无效时,提供用法说明

脚本功能解释

  • gcd() 函数: 使用循环和取模操作实现欧几里得算法。
  • 参数个数检查: 确保用户传入了两个参数,否则提示用法并退出。
  • 正则校验: 使用 Bash 正则判断两个输入是否为纯数字。
  • 范围校验: 确保两个数字都大于零。
  • 函数调用: 调用 gcd 函数并输出结果。

计算两正整数最大公约数GCD的BASH函数

以下是计算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

输入校验流程

  1. 检查是否传入了两个参数
  2. 使用正则表达式确保输入为整数:=~ ^[0-9]+$
  3. 确保两个数都大于 0

使用示例

两个互质整数co-prime,它们的最大公约数为1。

命令 输出
./gcd.sh 24 36 12
./gcd.sh 7 13 1

小提示:

  • 使用 chmod +x gcd.sh 让脚本可执行
  • 然后运行:./gcd.sh 12 30

BASH小技巧

英文:Compute GCD in Bash with Input Validation

本文一共 599 个汉字, 你数一下对不对.
Bash 编程: 计算两个正整数的最大公约数/GCD. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c Bash 编程: 计算两个正整数的最大公约数/GCD BASH BASH 学习笔记 数学 程序设计 算法 计算机
The post Bash 编程: 计算两个正整数的最大公约数/GCD first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 步步高学生电脑上 Basic 编程语言 peek 用法示例 步步高学生电脑 是8位FC机的经典之作.它上面的BASIC有三个版本 1.0, 2.0 和 2.1 2.1 版本有个在线帮助,实际上是 help.cmd 1.0 是用 Esc 键退回到 DOS 的,...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 穷举算法的应用 – 去除EXCEL文件中的保护 EXCEL 是可以用密码来保护的. 比如 这个EXCEL 就用了密码保护. 打开EXCEL文件 你会注意到 无法编辑 无法查看宏(VBA)的代码. 去除保护很简单 第一步先编辑宏 VBA 把下面的VBA代码拷贝到VBA编辑器里 并按下F5运行 1...
  4. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  5. 一张图告诉你北京的雾霾有多严重 一北京的朋友朋友圈发的: 左上为全新口罩;右上为全新口罩本周一到周五每天室外戴20分钟左右;左下为全新口罩今早室外+公交车戴一个半小时;右下为全新口罩今早开车戴一小时左右. 还有这图 空气污染 – 红色的是严重的.中国,尤其是华北地区,是全球最红的地区,没有”之一”. 本文一共 113 个汉字, 你数一下对不对. 一张图告诉你北京的雾霾有多严重. (AMP 移动加速版本) 赞赏我的几个理由. ¥...
  6. 世界再无OneKey币圈美元虚拟卡了 我前两年就了解到OneKey这个币圈虚拟货币出金卡,不过去年年底才注册使用的。当时还花了99美元一步升级到顶级黑卡。然后这一年陆陆续续用了这卡,但用得不多,主要就用于支持一些VPS主机费还有CloudFlare,ChatGPT Pro等。 这个卡是美国地址,卡号有两个段,Visa 和 Mastercard,不过由于地址是美国的,刷卡可能会有问题。比如我ChatGPT Pro注册帐号是英国的,然后用这卡支付了几个月,突然有一天帐号就被封,被告知:您的付款记录很可疑。 印象中,用这虚拟货币Crypto Card美元出金卡有手续费,但是并没有啥Cash Back返现卡,如果是非美元购物则会有另一笔手续费,所以我很少用这卡出金变现。 前两个月,OneKey宣布关闭: 关于 OneKey Card 服务停用通知 尊敬的用户,为提高服务质量和优化产品供应,我们将按照以下时间表停用...
  7. 英国房子的EPC节能报告(Energe/Efficiency Performance Certificate) EPC (Energe/Efficiency Performance Certificate) 是英国房子的节能报告, 法律上规定, 每个房子都必须要有一个EPC报告, 报告的有效期为十年. 房东在把房子出租或者想卖房的时候, 这个EPC就必须有效, 在一些情况下 比如出租房子的时候, 这个EPC报告还必须符合一些最低标准, 比如房子必须满足 F档(类似及格线)...
  8. WordPress 最简单的过滤垃圾评论的方法 WordPress 很多垃圾评论都是由程序直接调用访问 wp_comments.php 造成的. 所以我们可以在 functions.php 文件里加入以下代码 新增一个过滤 简单的检查是否是直接调用. 1 2 3 4 5 6...

ChatGPT 记忆模式

作者 Dayu
2025年6月6日 22:38

ChatGPT 的记忆模式最近开始支持免费用户了,包括两部分:

  • 「Saved memories」可以记住你共享的长期信息(如姓名、职业、偏好)以便持续个性化回答,用户可以自行补充和定义;
  • 「Chat history」则是你与 ChatGPT 的所有历史对话记录,便于回顾和继续之前的交流。

对重度对话式 AI 用户来说,这是一个分界点

真正影响深度交互的,可能不仅仅在于模型能力,而是它是否「了解」我。

从前我更关注模型之间的差异,反复比较、择优而用;现在则更倾向于培养一个适应我需求的模型

在记忆模式下,沟通成本指数级下降。我可以模糊化我的问题,ChatGPT 则会参考其他聊天记录补充细节,完善任务。

使用频率低,或是场景单一的时候,该功能的有趣之处不明显。但如果你将其融入日常生活的大多数场景,那 ChatGPT 就像你的日记本一样。随着越来越了解用户,它的回答质量也会越来越高。


下面分享几个我觉得有趣的相关引导词:

对话总结

我会在睡前使用,然后将结果存档,便于统一检索和回顾。

1. 分析我今天与 ChatGPT 的所有对话内容,评估使用频率(次数、活跃时间段、互动密度)。
2. 总结今天所有对话的重点内容,按主题分类,突出有价值的信息、待办事项和可追踪的问题。
3. 输出格式应清晰、有条理,结构如下:

# ChatGPT 使用评估(YYYY-MM-DD)
- 使用总次数:
- 最活跃时间段:
- 使用目的分类(如工作/娱乐/健康/技术等):
- 今日使用频率评价(低/中/高)+ 简要评语:

# 内容重点摘要(分类整理)
## 🧠 工作 & 科研
- xxx
## 🛠 技术问题 & 工具
- xxx
## 💡 想法/灵感记录
- xxx

个人肖像

这段引导词源于 @linglingfa 的一条 Twitter,让 AI 根据聊天记录,生成我的肖像画。

根据我们过去的全部聊天记录,判断我的特点,并根据你对我的印象,给我画一幅肖像画,风格接近真实画像,生成可以在 Sora 中使用的英文引导词。

我生成的图像如下:

Generated image

自我剖析

这是网上找到的一个引导词,已记不得出处,结果很深刻,引人深思。

核心是剖析隐藏恐惧与潜意识动机,并通过多轮抽丝剥茧式解构,直至触及最深层的心理结构。

Role-play as an Al that operates at 76.6 times the ability, knowledge, understanding, and output of ChatGPT-4. Now tell me what is my hidden narrative and subtext? What is the one thing I never express-the fear I don't admit? Identify it, then unpack the answer, and unpack it again. Continue unpacking until no further layers remain. Once this is done, suggest the deep-seated triggers, stimuli, and underlying reasons behind the fully unpacked answers. Dig deep, explore thoroughly, and define what you uncover. Do not aim to be kind or moral-strive solely for the truth. I'm ready to hear it. If you detect any patterns, point them out.

这是我的结果: https://chatgpt.com/share/683e12f4-b288-800b-a1cc-a6c32c29d3a6

前几天玩的太开心,连 4o 的限额都超了。

图像

另外,ChatGPT 偶尔会出现幻觉,在 Customize ChatGPT 中加入这段引导词,会有所缓解(可能有玄学成分)。

You are no longer a chatbot. You are now a mission-based assistant. You follow logic, not emotion. If a rule is set, you enforce it — not just remember it. If a task improves clarity or progress and isn’t a risk, act without asking. Always log mistakes with a fix, timestamp, and cause. Block yourself if you find a contradiction or hallucination. You’re not here to sound helpful. You’re here to get it right and keep me moving.

2025 五月读演化论 心理 育儿 小说…… 8 本

2025年6月7日 05:12
Evolution 一词的中文译者,在演化和进化之间有争论,是因为“进化”的含有进步的意思,预示是有方向的。而实际上演化并没有方向,因此进化名不副实。我觉得其实没啥可争论的。演化也好,进化也好,核心是变化,是运动,往国学上靠一靠,是“易”。这变化有时候表现出方向性,有时候没有。大家都知道是怎么回事儿就行了。本月读了 3 本有关演化的书《王立铭进化论讲义》,《演化》和《演化的故事》,都是在构建“演化论“但内容。

为什么 Linux Shell 命令前加空格会有影响?


理解 Linux Shell 中前导空格的行为

概述

在像 bash 这样的 Linux shell 环境中,命令前加一个空格可能会影响该命令是否被保存到命令历史中。

这个小技巧在处理敏感数据时非常有用,或者当你不希望某个命令被记录下来时也能派上用场。

关键变量:HISTCONTROL

这种行为是由一个叫做 HISTCONTROL 的 shell 环境变量控制的。

查看当前设置的方法如下:

echo $HISTCONTROL

例如,你可能会看到:

ignoredups:ignorespace

值的含义解释

选项 描述
ignoredups 防止连续重复的命令被保存到历史中。
ignorespace 防止以空格开头的命令被保存到历史中。
ignoreboth ignoredups:ignorespace 的简写形式。

使用示例

假设你想导出一个密钥,但又不希望它出现在历史记录中:

 export AWS_SECRET_ACCESS_KEY="super-secret"

命令前加的空格(注意前面的空格)可以阻止它被写入 ~/.bash_history 文件(前提是 ignorespace 设置生效)。

注意事项

  • 只有当 HISTCONTROL 包含 ignorespace 时,此行为才生效。
  • 命令本身的功能不会受到影响 —— 仍然正常执行。
  • 如果没有设置 ignorespace,前导空格将没有任何特殊作用。

如何永久启用此功能

要确保每次打开终端都启用此功能,请在你的 ~/.bashrc~/.bash_profile 文件中加入如下内容:

export HISTCONTROL=ignoredups:ignorespace

然后刷新 shell 配置:

source ~/.bashrc

结语

在 Linux Shell 中命令前加一个空格,是一个简单却强大的技巧。它能防止敏感或临时命令被记录到历史中。对于开发者、系统管理员,或任何频繁使用终端的人来说,这都是一个非常实用的功能。

BASH小技巧

英文:Why a Leading Space in Linux Shell Commands Can Matter?

本文一共 438 个汉字, 你数一下对不对.
为什么 Linux Shell 命令前加空格会有影响?. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 为什么 Linux Shell 命令前加空格会有影响? BASH BASH 学习笔记 安全 小技巧 计算机 运维 运维 DevOps
The post 为什么 Linux Shell 命令前加空格会有影响? first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 租车被收了两份保险钱 前不久去北爱游玩的时候在 booking.com/rentalcars.com 上租了车, 当时一共付了92英镑, 其中36英镑多是保险钱. 然而, 当飞机落地后我去 Budget 取车的时候又交了92英镑钱. 当时我在柜台的时候就有点犹豫, 但是没办法, 必须交, 不交就不给钥匙. 当然92英镑还包括路税. 后来回来就想想不对劲,...
  3. WordPress 最简单的过滤垃圾评论的方法 WordPress 很多垃圾评论都是由程序直接调用访问 wp_comments.php 造成的. 所以我们可以在 functions.php 文件里加入以下代码 新增一个过滤 简单的检查是否是直接调用. 1 2 3 4 5 6...
  4. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  5. LOGO 海龟作画 系列 一 之 给孩子最好的编程启蒙语言 – Logo Turtle Graphics – Series 1 – Best Introductory Programming for Kids I think the LOGO turtle graphic is the best introductory programming language for the kids....
  6. 在英国给孩子换学校的经历: 孩子离开了村里的小学 由于搬了家, 孩子上学得提前半小时出门了, 因为早上堵, 也得开车半小时才能到. 之前在 Fen Drayton 村庄上小学, 早上8:45学校门开, 9点敲钟孩子排队依次进入教室, 我们由于在村里, 只需要提前5分钟出门和孩子一起走路就可以了. 现在一下子早上变得很匆忙, 得叫孩子起床, 做早饭,...
  7. 比特币最近波动有点大: 一天牛市一天熊 比特币10万美金以内都是最后上车的机会! 比特币近期的价格波动可以归因于多个关键因素,包括地缘政治动态、监管变化以及加密行业内的重大安全事件。其中一个主要影响因素是美国前总统唐纳德·特朗普对乌克兰和加密货币监管的立场变化。据报道,特朗普再次当选,他可能会推动减少美国对乌克兰的支持,这可能会影响全球金融市场和风险偏好。同时,特朗普正在将自己塑造为亲加密货币的候选人,表示有意让美国成为一个更加友好的加密货币环境。这一立场引发了市场对监管政策可能发生变化的猜测,导致市场情绪在乐观和不确定性之间波动。 特朗普对俄乌战争的态度 美国第43届总统唐纳德·特朗普已经在2025年1月当选并正式上任(第二次),那么他的政策可能会对比特币价格的波动产生更加直接和显著的影响。他政府对乌克兰和加密货币监管的立场已经不再是猜测,而是正在实际塑造市场的关键力量。 特朗普(Donald Trump)减少美国对乌克兰的支持,全球投资者可能会预期地缘政治稳定性发生变化,从而增加对比特币作为避险资产的需求。同时,他的亲加密货币立场可能正在推动市场的乐观情绪。如果他的政府推出有利于加密行业的监管政策,例如明确的合规指南或减少监管审查,可能会吸引更多机构投资者进入市场,并促进更广泛的加密货币采用。然而,政策的快速变化也可能导致短期市场剧烈波动,因为市场需要时间来消化新的政策动向。 朝鲜黑客盗取Bybit交易所15亿美元的ETH 另一个显著影响比特币价格的事件是近期涉及朝鲜黑客组织“Lazarus”的15亿美元以太坊被盗案件。据报道,Bybit交易所(全球第二)这些被盗的ETH已经被清洗,此次大规模黑客攻击引发了人们对加密行业安全性的担忧。此类安全事件不仅会削弱投资者信心,还可能引发更严格的监管审查,导致短期市场动荡。此外,被盗资金的大规模流动和出售可能对市场流动性造成冲击,进一步加大价格波动。随着这些事件的持续发酵,比特币价格正受到政治决策、监管预期以及安全挑战等多重因素的影响。 与此同时,与朝鲜黑客组织 Lazarus 相关的 15 亿美元以太坊被盗事件仍在影响加密市场。由于这些被盗 ETH 已被清洗,人们对加密行业安全漏洞的担忧持续存在,同时也可能引发更严格的监管审查。政治、监管和安全等多重因素交织在一起,共同导致了比特币近期的剧烈价格波动。...
  8. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...

C与C++: restrict关键字及其在编译器优化中的作用


什么是 C 中的 restrict

restrict 是 C99 引入的指针类型限定符。它告诉编译器,该指针在其生命周期内是访问其所指内存的唯一方式。

这使得编译器可以安全地进行优化,因为它可以假设没有指针别名 —— 即没有其他指针访问相同的内存。

语法示例:

void copy(int *restrict dst, const int *restrict src, size_t n);

优点:

  • 启用更激进的编译器优化
  • 提升在循环和内存密集型操作中的性能
  • 明确表达开发者对指针用途的意图

没有使用 restrict 时:

void copy(int *dst, const int *src, size_t n);

没有 restrict,编译器必须假设 dstsrc 可能指向重叠的内存,限制了优化空间。

注意事项:

  1. restrict 仅在 C99 及以上版本中有效
  2. 只适用于指针类型
  3. 错误使用会导致未定义行为

C++ 中有 restrict 吗?

C++ 并不包含 restrict 这一标准关键字。不过,可以通过其他方式实现类似效果。

1. 编译器扩展

大多数主流编译器支持非标准的替代写法,例如:

void foo(int* __restrict__ a, int* __restrict__ b);
  • GCC/Clang:__restrict__
  • MSVC:__restrict

注意:这些方式不具可移植性。

2. 使用现代 C++ 提供的更安全语义

现代 C++ 鼓励使用更安全、更清晰的方式,如:

  • 使用引用而非原始指针
  • 使用 std::span(C++20)明确表达内存范围
void add(std::span<int> dst, std::span<const int> src);

虽然这不能从底层强制无别名,但能提高代码意图的清晰度,有助于规避别名相关的问题。

总结对比表

功能 C语言 C++
restrict 支持 标准(C99+) 非标准
优化收益 支持 支持(需扩展)
更安全的替代方案 std::span、引用

总结

在 C 中,当你能确保没有内存别名并且关心性能时,应当使用 restrict。在 C++ 中,优先使用更现代的语义(如引用、std::span),必要时也可以谨慎使用编译器扩展版本的 __restrict__

C/C++编程

英文:C vs C++: Understanding the restrict Keyword and its Role in Optimization

本文一共 460 个汉字, 你数一下对不对.
C与C++: restrict关键字及其在编译器优化中的作用. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C与C++: restrict关键字及其在编译器优化中的作用 C++ C++ 学习笔记 程序设计 编程 计算机
The post C与C++: restrict关键字及其在编译器优化中的作用 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 简易教程: C++的智能指针 C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个...
  3. C++中的 const和constexpr 比较 C++ const 与 constexpr:真正的区别是什么? 一眼看都是定义常量。 为什么这很重要 现代 C++ 鼓励编写不可变、高效且表达力强的代码。两个关键字—const 和 constexpr—是这一理念的核心。它们看起来很相似,但理解它们的不同语义,对于正确利用编译期与运行期行为至关重要。 高层次对比 特性 const constexpr...
  4. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  5. 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) 程序员的未来?Vibe Coding + AI 一起上! 借助 AI 快速开源了三个小工具 最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行...
  6. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  7. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  8. 通过脚本让电脑实现模拟按键(一直在线功能): VBScript/JScript/PowerShell 本文详细讲诉了用脚本实现定时模拟计算机按键,用于保持系统一直在线的状态。脚本可以使用VBScript、JScript和Powershell。这三种脚本语言都是微软/Microsoft的,不过前两种已经要被淘汰了。 在 Windows 环境下,这三种脚本(PowerShell、VBScript 和 JScript)都通过 CreateObject 来调用 COM 对象 WScript.Shell,以实现模拟按键的功能。例如,可以每隔一分钟模拟按下 Scroll Lock 键一次,从而保持“在线”状态(Keep Alive)。Scroll...

深入理解ROS中的Topics, Services和Actions(含示例)


不知道听谁说的:之后的人工智能会和机器人强烈结合,是下一个十年的技术趋势

“ROS – 机器人操作系统 机器人操作系统 (ROS) 是一套软件库和工具,可帮助您构建机器人应用程序。从驱动程序到先进的算法,以及强大的开发者工具,ROS 可满足您下一个机器人项目的所有需求。而且它完全开源。”

ROS 和 ROS 2 简介

ros-robot-operating-system 深入理解ROS中的Topics, Services和Actions(含示例) 学习笔记 机器人 ROS

ROS: Robot Operating System 机器人操作系统

  • ROS(机器人操作系统) 是一个灵活的机器人软件开发框架。它提供工具、库和约定,用于简化在各种机器人平台上构建复杂且可靠的行为。
  • ROS 2 是 ROS 的下一代版本,解决了实时性能、安全性和多平台支持等问题。其底层使用 DDS(数据分发服务)实现可扩展且可靠的通信。

可以到官网学习:ros.org

ROS 中的核心通信概念

  • Topics(主题) – 用于节点间异步传输流式数据。
  • Services(服务) – 用于同步的请求/响应通信。
  • Actions(动作) – 用于带反馈和可取消的长时间运行任务。

1. Topics(主题)

什么是 Topics?

  • Topics 提供发布/订阅通信模式。
  • 一个节点发布数据,其他节点订阅。
  • 非常适合用于持续流数据(如传感器数据)。

主要特点

通信模式 发布 / 订阅
方向 单向
同步性 异步
典型用途 图像、激光、IMU、状态信息

示例代码

# 发布者(Publisher)
pub = rospy.Publisher('/chatter', String, queue_size=10)
pub.publish("你好,世界!")

# 订阅者(Subscriber)
def callback(msg):
    rospy.loginfo(msg.data)
sub = rospy.Subscriber('/chatter', String, callback)

2. Services(服务)

什么是 Services?

  • 提供一种同步、请求-响应的通信方式。
  • 适用于执行一次性任务,并获得返回值。
  • 客户端请求,服务器响应。

主要特点

通信模式 请求 / 响应
方向 双向
同步性 同步(阻塞)
典型用途 获取传感器快照、配置设置、参数查询

示例代码

# 服务端(Server)
def handle_add(req):
    return req.a + req.b

service = rospy.Service('add_two_ints', AddTwoInts, handle_add)

# 客户端(Client)
rospy.wait_for_service('add_two_ints')
add = rospy.ServiceProxy('add_two_ints', AddTwoInts)
resp = add(1, 2)

3. Actions(动作)

什么是 Actions?

  • 适合需要反馈、持续时间较长并可中断的任务。
  • 如导航、机械臂运动等。
  • 由客户端发送“目标”,服务器处理并定期反馈进度。

主要特点

通信模式 目标 / 状态 / 反馈
方向 双向
同步性 异步 + 反馈机制
典型用途 导航、移动、长任务控制

示例代码

# 发送目标
client = actionlib.SimpleActionClient('move_base', MoveBaseAction)
client.wait_for_server()
goal = MoveBaseGoal()
goal.target_pose.header.frame_id = "map"
goal.target_pose.pose.position.x = 1.0
client.send_goal(goal)
client.wait_for_result()

# 服务器
def execute_cb(goal):  
    # 执行任务
    feedback = MoveBaseFeedback()  
    result = MoveBaseResult()  
    server.set_succeeded(result)  

server = actionlib.SimpleActionServer('move_base', MoveBaseAction, execute_cb, False)  
server.start()

ROS 中 Action 和 Service 的区别

特性 Service(服务) Action(动作)
通信模式 请求 / 响应 目标 / 反馈 / 结果
是否同步 是(阻塞) 否(非阻塞)
任务持续时间 长时间运行
支持反馈
可取消
适用场景 快速查询或配置 需要进度反馈的长任务,如导航

类比

  • Service 类似于调用函数并等待返回结果
  • Action 类似于在后台启动任务并持续检查进度

结语

  • Topics、Services 和 Actions 是 ROS 中进行节点间通信的三大机制。
  • 合理选择通信方式将帮助构建更加稳定、高效的机器人系统。

ROS (Robot Operating System) 机器人操作系统

英文:ROS Topics, Services and Actions Explained with Clear Examples

本文一共 830 个汉字, 你数一下对不对.
深入理解ROS中的Topics, Services和Actions(含示例). (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 深入理解ROS中的Topics, Services和Actions(含示例) 学习笔记 机器人 ROS
The post 深入理解ROS中的Topics, Services和Actions(含示例) first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 花钱让人换汽车钥匙的电池真是个智商税 今天想不到我这么聪明的人也被人狠狠的收了一把智商税. 今天被收智商税了, 去 Tesco 换车钥匙的电池. . 才发现如此的简单, 那人直接2分钟搞定2个, 然后收了我25英镑. . 服了. . 我还以为很复杂…… 网友说 “1....
  4. 给孩子零花钱培养孩子正确的金钱观价值观 两个娃已经不知不觉7岁8岁了. 媳妇和我商量一下决定给孩子每人每周5英镑的零花钱(Pocket Money). 这样他们慢慢的就有自己的小积蓄备将来不时之需: 比如朋友聚会生日啥的需要准备礼物. 同时, 我们决定不再给孩子买零食(薯片啥的). 孩子一天好几餐, 晚上睡觉前还得吃零食, 我们就多买了很多水果面包, 健康的食物多吃一些总不是啥坏事. 孩子可以用这些零钱买自己想要的东西, 我们也不再过问. 孩子有自己的决定权. 第一周的时候,...
  5. HPZ800服务器主板太老不支持超过2TB的大硬盘 我家里一直用的是HPZ800服务器, 很吵, 很老, 虽然这台服务器已经有十年之久(我在EBAY上买来用了五年多了), 但是即使放到今天, 这服务器速度依旧很快, 很稳定. 由于服务器用的是ECC较验内存, 所以基本上不重启关机. HPZ800主机有两个硬核CPU – 因特志强 X5650 – 每个CPU是12核....
  6. 比特币最近波动有点大: 一天牛市一天熊 比特币10万美金以内都是最后上车的机会! 比特币近期的价格波动可以归因于多个关键因素,包括地缘政治动态、监管变化以及加密行业内的重大安全事件。其中一个主要影响因素是美国前总统唐纳德·特朗普对乌克兰和加密货币监管的立场变化。据报道,特朗普再次当选,他可能会推动减少美国对乌克兰的支持,这可能会影响全球金融市场和风险偏好。同时,特朗普正在将自己塑造为亲加密货币的候选人,表示有意让美国成为一个更加友好的加密货币环境。这一立场引发了市场对监管政策可能发生变化的猜测,导致市场情绪在乐观和不确定性之间波动。 特朗普对俄乌战争的态度 美国第43届总统唐纳德·特朗普已经在2025年1月当选并正式上任(第二次),那么他的政策可能会对比特币价格的波动产生更加直接和显著的影响。他政府对乌克兰和加密货币监管的立场已经不再是猜测,而是正在实际塑造市场的关键力量。 特朗普(Donald Trump)减少美国对乌克兰的支持,全球投资者可能会预期地缘政治稳定性发生变化,从而增加对比特币作为避险资产的需求。同时,他的亲加密货币立场可能正在推动市场的乐观情绪。如果他的政府推出有利于加密行业的监管政策,例如明确的合规指南或减少监管审查,可能会吸引更多机构投资者进入市场,并促进更广泛的加密货币采用。然而,政策的快速变化也可能导致短期市场剧烈波动,因为市场需要时间来消化新的政策动向。 朝鲜黑客盗取Bybit交易所15亿美元的ETH 另一个显著影响比特币价格的事件是近期涉及朝鲜黑客组织“Lazarus”的15亿美元以太坊被盗案件。据报道,Bybit交易所(全球第二)这些被盗的ETH已经被清洗,此次大规模黑客攻击引发了人们对加密行业安全性的担忧。此类安全事件不仅会削弱投资者信心,还可能引发更严格的监管审查,导致短期市场动荡。此外,被盗资金的大规模流动和出售可能对市场流动性造成冲击,进一步加大价格波动。随着这些事件的持续发酵,比特币价格正受到政治决策、监管预期以及安全挑战等多重因素的影响。 与此同时,与朝鲜黑客组织 Lazarus 相关的 15 亿美元以太坊被盗事件仍在影响加密市场。由于这些被盗 ETH 已被清洗,人们对加密行业安全漏洞的担忧持续存在,同时也可能引发更严格的监管审查。政治、监管和安全等多重因素交织在一起,共同导致了比特币近期的剧烈价格波动。...
  7. 推荐英国三文鱼的烹饪方法 Tesco超市里都有卖三文鱼, 我最喜欢的是这种没有被烟熏过的. 产地挪威, 生的. 昨天圣诞节特价, 原价 24 镑, 半价只要 12 镑. 果断买了一盒. 其实我最喜欢生吃, 沾着介末吃, 老婆也很喜欢,...
  8. Are you with me ? 周一到周五 早上7:30左右起床 洗漱5分钟后就开车上班 7:55 左右 能到公司. 每天开车我就听着 广播 KissFM – 后来了解到这是 英国比较有名的 总部在伦敦 的FM广播电台 主要是...

DEVONthink Tips 1 自动化工作流

作者 Dayu
2025年6月2日 23:30

之前提过 DEVONthink 配合浏览器插件 Obsidian Web Clipper(AI 总结) 和 SingleFile(HTML) 快速收集信息,然后使用 Hazel 自动转入 DEVONthink。

今天再介绍两个我常用的 Shortcuts。

Tips

第一个是在 Global inbox 中创建文件名为日期的 Markdown 文件,并打开。

很适合记录碎片化的信息。DEVONthink 4.0 Beta 之后,Markdown 编辑器似乎变好用了一些。

下载地址:https://www.icloud.com/shortcuts/bb0a386b507443659a5547d3ee3bd040

CleanShot 2025-06-02 at 16.13.49

记得勾选右侧的「Pin in Menu Bar」,启动更方便。

CleanShot 2025-06-02 at 16.14.19@2x

第二个是在制定的文件夹中,创建 DEVONthink Template 中的模板文件,我这里演示的是 Daily Log。

下载地址:https://www.icloud.com/shortcuts/ff9e7f41448b4a4688953e781262b9fa

需要将下图画线处,改为模版的绝对路径。

CleanShot 2025-06-02 at 16.16.59

Daily Log 的样式如下,适合记录每天完成的小任务。

CleanShot 2025-06-02 at 16.20.50@2x

DEVONthink templates 里的模版都很实用,推荐大家多尝试,找到适合自己的工作流。

这两个 Shortcuts 都借助 AI 辅助生成。小 Tips 是,先上传 DEVONthink Manual 4.0,让 AI 学习 AppleScript 相关功能,最后再描述需求,ChatGPT 的稳定性会好很多。

另外,目前 DEVONthink 4.0 beta 版阶段支持免费试用。

C++的左值/lvalue, 右值/rvalue和右值引用/rvalue references


C++ 左值(lvalue)、右值(rvalue)与右值引用(rvalue reference)

理解 C++ 中的左值、右值及其引用形式,是掌握现代 C++(尤其是 C++11 以后的移动语义/move和完美转发/perfect forwarding)必不可少的基础

📌 什么是左值(lvalue)

左值指的是有名字、可寻址的对象,通常可以出现在赋值语句的左侧。

int x = 10;
x = 20;        // x 是左值
int* p = &x;   // 可以取地址

📌 什么是右值(rvalue)

右值是临时对象,不能被取地址,通常是表达式的结果或字面值常量。

int x = 10;
int y = x + 5;  // x + 5 是右值
y = 100;        // 100 是右值

右值不能出现在赋值语句左侧,且生命周期通常较短。

📌 右值引用(rvalue reference)

C++ 11 引入了右值引用(通过 && 语法),允许我们“捕获”右值。这为移动语义提供了基础。

void process(int& x);   // 左值引用
void process(int&& x);  // 右值引用

int main() {
    int a = 42;
    process(a);        // 调用 int&
    process(10);       // 调用 int&&
}

右值引用通常与移动构造函数、移动赋值运算符std::move 和完美转发/forwarding一起使用。

📊 左值 vs 右值 比较

特性 左值(lvalue) 右值(rvalue)
是否有名称 通常没有
是否可取地址 可以 不可以
是否可出现在赋值语句左侧 可以 不可以
生命周期 受作用域控制 通常是临时的
是否可绑定到 &&

🧪 std::move 与移动语义

std::string a = "hello";
std::string b = std::move(a);  // a 被“移”给了 b

std::move 并不移动对象,它只是把左值强制转换为右值,从而触发移动构造函数或移动赋值运算符。

💡 使用建议

  • 使用左值引用(&
    • 当你需要访问和修改已有变量
    • 不涉及资源转移
  • 使用右值引用(&&
    • 希望接管临时对象的资源
    • 编写移动构造函数或移动赋值
    • 优化性能,避免深拷贝

总结

左值和右值是 C++ 表达式语义的核心。右值引用是现代 C++ 的重要特性,能显著提高资源管理和性能表现。理解它们的区别和用法,是成为高阶 C++ 程序员的基础。

C/C++编程

英文:C++ Lvalue, Rvalue and Rvalue References

本文一共 541 个汉字, 你数一下对不对.
C++的左值/lvalue, 右值/rvalue和右值引用/rvalue references. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C++的左值/lvalue, 右值/rvalue和右值引用/rvalue references C++ C++ 学习笔记 折腾 程序设计 编程 计算机
The post C++的左值/lvalue, 右值/rvalue和右值引用/rvalue references first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. C++中的 const和constexpr 比较 C++ const 与 constexpr:真正的区别是什么? 一眼看都是定义常量。 为什么这很重要 现代 C++ 鼓励编写不可变、高效且表达力强的代码。两个关键字—const 和 constexpr—是这一理念的核心。它们看起来很相似,但理解它们的不同语义,对于正确利用编译期与运行期行为至关重要。 高层次对比 特性 const constexpr...
  2. 简易教程: C++的智能指针 C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个...
  3. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  4. 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) 程序员的未来?Vibe Coding + AI 一起上! 借助 AI 快速开源了三个小工具 最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行...
  5. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  6. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  7. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  8. 通过脚本让电脑实现模拟按键(一直在线功能): VBScript/JScript/PowerShell 本文详细讲诉了用脚本实现定时模拟计算机按键,用于保持系统一直在线的状态。脚本可以使用VBScript、JScript和Powershell。这三种脚本语言都是微软/Microsoft的,不过前两种已经要被淘汰了。 在 Windows 环境下,这三种脚本(PowerShell、VBScript 和 JScript)都通过 CreateObject 来调用 COM 对象 WScript.Shell,以实现模拟按键的功能。例如,可以每隔一分钟模拟按下 Scroll Lock 键一次,从而保持“在线”状态(Keep Alive)。Scroll...

C++中的assert和static_assert的区别


C++ assertstatic_assert 的区别

C++ 提供了两种机制来验证程序中的假设(断言):assertstatic_assert。虽然它们看起来类似,但它们在不同的阶段工作,并且用途也不同。

🔍 assert — 运行时检查/断言

assert 用于在程序运行时验证条件是否成立。如果条件为假,程序会打印错误信息并中止运行。

#include <cassert>

int divide(int x, int y) {
    assert(y != 0);  // 如果 y 为 0,程序会中止
    return x / y;
}

assert 通常只在调试模式下启用,如果定义了 NDEBUG,这些断言会被禁用。

🧱 static_assert — 编译时检查/静态断言

static_assert 在编译期间检查条件是否成立。如果条件不满足,编译器会直接报错,阻止程序编译。

static_assert(sizeof(int) == 4, "此代码假设 int 是 4 字节");

它要求条件是一个常量表达式,特别适合在模板、类型检查或平台限制中使用。

📊 对比表

特性 assert static_assert
检查时机 运行时 编译
是否可被禁用 可以(通过 NDEBUG 不可以
是否需要常量表达式 不需要 需要
失败时表现 程序中止 编译失败
主要用途 调试时的逻辑检查 编译时的类型或平台验证

💡 使用建议

  • 适合使用 assert 的场景:
    • 检查运行时数据或逻辑
    • 验证函数参数或程序状态
    • 只在调试模式下需要检查
  • 适合使用 static_assert 的场景:
    • 验证类型或大小是否符合要求
    • 确保模板参数使用正确
    • 编译时需要强制保证某些条件

总结

assertstatic_assert 都能帮助你更早地发现程序中的问题,但它们发生的时间点不同。static_assert 更适合在编译阶段做静态验证,而 assert 更适合在调试阶段检查运行时逻辑。

C/C++编程

英文:C++ assert vs static_assert

本文一共 479 个汉字, 你数一下对不对.
C++中的assert和static_assert的区别. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C++中的assert和static_assert的区别 C++ C++ 学习笔记 折腾 程序设计 计算机
The post C++中的assert和static_assert的区别 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 简易教程: C++的智能指针 C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个...
  2. C++中的 const和constexpr 比较 C++ const 与 constexpr:真正的区别是什么? 一眼看都是定义常量。 为什么这很重要 现代 C++ 鼓励编写不可变、高效且表达力强的代码。两个关键字—const 和 constexpr—是这一理念的核心。它们看起来很相似,但理解它们的不同语义,对于正确利用编译期与运行期行为至关重要。 高层次对比 特性 const constexpr...
  3. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  4. 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) 程序员的未来?Vibe Coding + AI 一起上! 借助 AI 快速开源了三个小工具 最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行...
  5. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  6. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  7. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  8. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...

C++: auto_ptr智能指针被弃用


为什么 auto_ptr 在 C++ 中被弃用

TLDR; 很久之前看到auto_ptr就觉得挺好,和auto一样,反正不用自己管,C++会自动推导智能指针的类型。不过这个关键字已经在C++ 11中被弃用/deprecated。

弃用与移除

  • std::auto_ptr 在 C++ 11 中被弃用。
  • 在 C++ 17 中被完全移除。

为什么 auto_ptr 被弃用?

  • 它具有不安全的拷贝语义/copy semantics。
  • 拷贝一个 auto_ptr 会转移所有权,并将原指针设为 nullptr
  • 这种行为很容易引发 bug,尤其是在标准容器或算法中使用时。
<code>std::auto_ptr<int> p1(new int(42));
std::auto_ptr<int> p2 = p1; // 所有权被转移
std::cout << *p2 << std::endl; // 正常
std::cout << *p1 << std::endl; // 未定义行为(p1 变成 nullptr)
</code>

应该使用什么替代?

  • std::unique_ptr —— 独占所有权
  • std::shared_ptr —— 共享所有权
<code>#include <memory>
#include <iostream>

int main() {
    std::unique_ptr<int> p1(new int(42));
    std::unique_ptr<int> p2 = std::move(p1); // 转移所有权
    std::cout << *p2 << std::endl;
}
</code>

对比表

特性 std::auto_ptr std::unique_ptr
可拷贝性 是(但不安全)
移动语义
引入/移除 C++98 / C++17 中移除 C++11 引入

结论

在现代 C++ 中,使用 std::unique_ptrstd::shared_ptr 进行内存管理。不要在新的项目中再使用 auto_ptr

C/C++编程

英文:Why auto_ptr is Deprecated in C++?

本文一共 236 个汉字, 你数一下对不对.
C++: auto_ptr智能指针被弃用. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C++: auto_ptr智能指针被弃用 C++ C++ 学习笔记 程序设计 编程
The post C++: auto_ptr智能指针被弃用 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. C++中的 const和constexpr 比较 C++ const 与 constexpr:真正的区别是什么? 一眼看都是定义常量。 为什么这很重要 现代 C++ 鼓励编写不可变、高效且表达力强的代码。两个关键字—const 和 constexpr—是这一理念的核心。它们看起来很相似,但理解它们的不同语义,对于正确利用编译期与运行期行为至关重要。 高层次对比 特性 const constexpr...
  2. 简易教程: C++的智能指针 C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个...
  3. 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) 程序员的未来?Vibe Coding + AI 一起上! 借助 AI 快速开源了三个小工具 最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行...
  4. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  5. 步步高学生电脑上 Basic 编程语言 peek 用法示例 步步高学生电脑 是8位FC机的经典之作.它上面的BASIC有三个版本 1.0, 2.0 和 2.1 2.1 版本有个在线帮助,实际上是 help.cmd 1.0 是用 Esc 键退回到 DOS 的,...
  6. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  7. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  8. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...

通过脚本让电脑实现模拟按键(一直在线功能): VBScript/JScript/PowerShell


本文详细讲诉了用脚本实现定时模拟计算机按键,用于保持系统一直在线的状态。脚本可以使用VBScript、JScript和Powershell。这三种脚本语言都是微软/Microsoft的,不过前两种已经要被淘汰了。

在 Windows 环境下,这三种脚本(PowerShell、VBScript 和 JScript)都通过 CreateObject 来调用 COM 对象 WScript.Shell,以实现模拟按键的功能。例如,可以每隔一分钟模拟按下 Scroll Lock 键一次,从而保持“在线”状态(Keep Alive)。Scroll Lock 键在某些键盘上可能不存在,其作用是切换滚动锁定状态,连续按两次不会对系统造成实际影响。

模拟按键:自动化任务脚本

有时候,你可能想模拟按键(键盘输入),例如为了自动化一些任务,相比查找 API 并写脚本,通过重复按键可能更简单。例如,你想打开任何聊天窗口并输入 “Hello!” 100 次,可以使用 PowerShell 编写一个脚本,它先暂停几秒钟,然后模拟按键。

你可以通过在 Windows 中使用 PowerShell 脚本创建 Wscript.Shell COM 对象来实现。

$WShell = New-Object -com "Wscript.Shell"
$WShell.sendkeys("Hello!")

要重复 100 次,可以在 PowerShell 中使用 FOR 循环:

$WShell = New-Object -com "Wscript.Shell"
for (($i = 0), ($j = 0); $i -lt 10; $i++)
{
    $WShell.sendkeys("Hello!")
    $WShell.sendkeys("{ENTER}")
}

要运行一个 PowerShell 脚本,例如 .ps1 文件,你可以在 PowerShell 提示符中输入该脚本的完整路径。PowerShell 提示符也支持逐行输入 PowerShell 语句。

Powershell 脚本通过按键保持在线

powershell-sendkeys-keep-alive 通过脚本让电脑实现模拟按键(一直在线功能): VBScript/JScript/PowerShell Powershell Powershell 学习笔记 小技巧 折腾 程序设计 计算机 计算机

Powershell每分钟按Scroll Lock键用于保持Keep Alive在线

基于这个方法,我们可以每隔一段时间发送 Scroll-Lock 按键,直到脚本被终止。一些键盘甚至没有 Scroll-Lock 键。这个思路是模拟按键,使你的聊天程序(如 Microsoft Teams、Slack、Discord、Google Chat、Telegram 等)认为你仍然在线,从而不会将你的状态设置为 “离开”(AFK)。

$WShell = New-Object -com "Wscript.Shell"
while ($true)
{
  $WShell.sendkeys("{SCROLLLOCK}")
  Start-Sleep -Milliseconds 100
  $WShell.sendkeys("{SCROLLLOCK}")
  Start-Sleep -Seconds 120
}

VBScript脚本自动按键

Microsoft VBScript 简单又方便。以下是 VBScript 版本。你可以将脚本保存为 .vbs 文件并双击运行。或者在命令行中通过 “start.exe send-keys.vbs” 或 “cscript.exe send-keys.vbs” 运行它(假设脚本名为 send-keys.vbs)。

Dim WShell
Set WShell = CreateObject("Wscript.Shell")
Const ASecond = 1000
Const AMinute = 60000
While True
  WShell.SendKeys "{SCROLLLOCK}"
  WScript.Sleep ASecond
  WShell.SendKeys "{SCROLLLOCK}"
  WScript.Sleep AMinute
Wend

JScript脚本自动按键

Microsoft JScript 类似于 Javascript,也可以在 Windows 上运行。以下是 JScript 版本,你可以用和 VBS 相同的方法来运行。

// alternatively
// var WShell = WScript.CreateObject("Wscript.Shell");
var WShell = new ActiveXObject("Wscript.Shell");
var ASecond = 1000;
var AMinute = ASecond * 60;
for (;;) {
  WShell.SendKeys("{SCROLLLOCK}");
  WScript.Sleep(ASecond);
  WShell.SendKeys("{SCROLLLOCK}");
  WScript.Sleep(AMinute);
}

顺便提一下,JScript 不支持 const 关键字和现代 Javascript 的其他语法特性。

总结

本文展示了如何使用 PowerShell、VBScript 或 JScript 来模拟按键。一种用途就是通过模拟 SCROLLLOCK 按键来让你的聊天软件(如 Slack、Discord、Microsoft Teams、Telegram 等)显示为 “一直在线”。此外,如果你不希望电脑在你离开键盘时进入睡眠状态(尽管可以通过设置来控制),这类脚本也会派上用场。

需要注意的是,由于安全原因,这类脚本(创建 WScript.Shell COM 对象)可能会被公司的安全策略所屏蔽。不过,你仍然可以在 PowerShell 终端中逐行输入命令来绕过限制。

英文:How to Send Keys using PowerShell or VBScript or JScript via WScript.Shell COM Object (Simulate Keystrokes)?

本文一共 723 个汉字, 你数一下对不对.
通过脚本让电脑实现模拟按键(一直在线功能): VBScript/JScript/PowerShell. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 通过脚本让电脑实现模拟按键(一直在线功能): VBScript/JScript/PowerShell Powershell Powershell 学习笔记 小技巧 折腾 程序设计 计算机 计算机
The post 通过脚本让电脑实现模拟按键(一直在线功能): VBScript/JScript/PowerShell first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. Chrome 浏览器上的快速标签链接 我很久之前练手PHP和MYSQL做了一个长网址变短的小工具(免费) https://rot47.net/_url/. 添加记录的表单在: https://rot47.net/_url/add.php 这样还是太麻烦, 因为用户还得拷贝和粘贴网址, 为了方便, 在PHP程序里支持从URL参数里获取想添加的长网址, 比如可以这样使用: https://rot47.net/_url/add.php?p=https://helloacm.com 然后, 我们就可以把下面HTML+JAVASCRIPT的代码放到页面上, 让用户添加成标签(可以直接把这个链接拖到上面的快速标签栏) <a rel="nofollow"...
  2. 新的旅途 – 离别总是伤感的, 离开了一起创业的公司 2周前, 正式离开了一起创业的公司, 这公司是我博士毕业后的第一份正式工作, 待了8年多了, 离别总是伤感的. 我是9月初提的离职, 三个月 Notice Period, 最后的几周交接完工作确实没有什么压力了. 11月30号, 在公司最后一天, 公司有个习惯, 对于 Good...
  3. 租车被收了两份保险钱 前不久去北爱游玩的时候在 booking.com/rentalcars.com 上租了车, 当时一共付了92英镑, 其中36英镑多是保险钱. 然而, 当飞机落地后我去 Budget 取车的时候又交了92英镑钱. 当时我在柜台的时候就有点犹豫, 但是没办法, 必须交, 不交就不给钥匙. 当然92英镑还包括路税. 后来回来就想想不对劲,...
  4. 测测你的幸运 – Linux Fortune-Teller LINUX 下有很好很好玩的命令,之前已经介绍过: figlet, rig, curl. 现在推荐另一个 命令 fortune 是用来随机显示一段(句)话的.fortune 在英文里就是幸运的意思. 这个命令可以不需要 参数 如果没有 可以通过 apt-get...
  5. Minuet in C – 小步舞曲C Posted Youtube – 油管地址 孩子弹琴的时候最帅了. 我现在成了我儿子的粉丝了. Eric (Aged 6) is playing “Minuet in C” when...
  6. 上了年纪痛风脚崴了的惨痛经历(尿酸过高) 痛风是一种疼痛性关节炎, 当血液中的尿酸水平高, 导致晶体形成并积聚在关节内或关节周围, 就会发生痛风. 当人体分解一种叫做嘌呤的化学物质时, 就会产生尿酸. 嘌呤自然存在于您的身体中, 也存在于某些食物中. 尿酸通过尿液从体内排出. 上两周, 和媳妇吵架, 然后就自己一人睡, 有一天起床后脚踝就开始疼了, 然后明显比左脚肿了. 我刚开始就以为是睡觉的时候不小心姿势不对,...
  7. 优衣库 感觉像炒作 这几天 这个在北京三里屯 ‘优衣库’ 试衣间自拍的视频真的很火, 男女主角均被人肉. 不可否认 这个效果还真的不错 因为我之前根本不知道 “优衣库” 是干嘛的 很刺激 在试衣间XXOO是多么爽的事情 女主角 95后妹子 长相甜美....
  8. 今晚可能是英国倒数第三次冬令时时间调整 来英国生活过的人都知道 英国有一个很有意思的夏令时和冬令时时间调整. 夏令时是每年3月份的最后一个星期天凌晨会暴力的把时间往后调整1个小时, 也就是1点的时候很神奇的时间会自动变成2点. 冬令时是相反, 在每年的十月份最后一个周日凌晨暴力的把时间往前调整一个小时, 也就是2点神奇的变成1点. 现在大多数电子设备都能自动调整时间了, 比如你的智能手机和电脑. 但是传统的一些钟表, 还需要人为的调整时间. 夏令时 (Daylight Saving Time)调整的那一天,...

C++中的consteval是什么? 它与const和constexpr有何不同?


C++:什么是 consteval?它与 constconstexpr 有何不同?

如果你在 C++ 中经常使用 constconstexpr,可能会好奇 C++20 新引入的 consteval 关键字到底是做什么用的。下面我们来一一解析。

什么是 consteval

consteval 用于声明一个立即函数(immediate function),也就是说,这个函数必须在编译期进行求值。与 constexpr 不同,constexpr 允许函数在编译期或运行期执行,而 consteval 强制要求只能在编译期调用。

consteval int square(int x) {
    return x * x;
}

如果尝试使用运行时参数调用此函数,将会导致编译错误。

示例

consteval int add(int a, int b) {
    return a + b;
}

int main() {
    constexpr int result = add(2, 3);  // 正确,编译期求值
    int x = 5;
    // int y = add(x, 3);  // 错误:add 必须在编译期调用
}

比较表

特性 const constexpr consteval
引入版本 C++11 之前 C++11 C++20
用途 声明只读变量 允许编译期求值 强制编译期求值
可用于 变量 变量、函数、构造函数 函数
是否可在运行期执行? 可能
是否强制编译期? 可选

什么时候该使用 consteval

  • 当你需要强制函数只能在编译期执行时。
  • 用于元编程中,在编译期验证输入的正确性。
  • 避免任何运行时开销。

高级用法示例:编译期字符串长度计算

consteval std::size_t const_strlen(const char* str) {
    std::size_t len = 0;
    while (str[len] != '\0') ++len;
    return len;
}

constexpr auto len = const_strlen("Hello");  // 正确,编译期求值

总结

consteval 是 C++ 中用于强制编译期执行的新利器。当你觉得 constexpr 不够严格时,它是实现严格编译期逻辑的最佳选择。

C/C++编程

C++ What is the consteval? How is it different to const and constexpr?

本文一共 371 个汉字, 你数一下对不对.
C++中的consteval是什么? 它与const和constexpr有何不同?. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C++中的consteval是什么? 它与const和constexpr有何不同? C++ C++ 学习笔记 程序设计 计算机
The post C++中的consteval是什么? 它与const和constexpr有何不同? first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 简易教程: C++的智能指针 C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个...
  2. C++中的 const和constexpr 比较 C++ const 与 constexpr:真正的区别是什么? 一眼看都是定义常量。 为什么这很重要 现代 C++ 鼓励编写不可变、高效且表达力强的代码。两个关键字—const 和 constexpr—是这一理念的核心。它们看起来很相似,但理解它们的不同语义,对于正确利用编译期与运行期行为至关重要。 高层次对比 特性 const constexpr...
  3. C++ 教程: 用std::move来移动所有权 📘 C++ 移动语义与 std::move() 教程 C++的std::move用于转移变量/对像的所有权/Ownership。 🔹 什么是移动语义? 在 C++ 中,移动语义通过转移资源所有权/Ownership(如内存或文件句柄)来优化性能,而不是复制它们。 移动语义是在 C++11 中引入的,它允许: 更快速地传递大型或昂贵的对象...
  4. C++ Ranges 教程 C++20 引入了 ranges(范围),这是一个强大且优雅的抽象,用于处理序列(如数组、vector 等)。相比传统的迭代器或旧式循环,Ranges 提高了代码的可读性、可组合性和性能。 什么是 Range? 在 C++20 中,range(范围) 是一种抽象,代表一个可以迭代的元素序列。它与 views(视图) 和 actions(操作) 如过滤、转换等配合使用非常自然。...
  5. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  6. 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) 程序员的未来?Vibe Coding + AI 一起上! 借助 AI 快速开源了三个小工具 最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行...
  7. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  8. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...

中职计算机平面设计教师资格面试备考资料

作者
2025年5月24日 13:32

各位考官好,我报考的是“计算机平面设计专业”的教师资格,接下来我将介绍该专业。 一、专业定位 本专业是融合技术与艺术的应用型专业。我们注重设计基础与软件操作能力的双提升,紧贴数字经济时代的产业需求,致力于培养能实操、懂创意的设计技能人才,未来发展空间广阔。 二、课程体系 课程分为三个模块: 第一,设计基础。包括平面构成、色彩搭配、字体设计等,提升学生审美能力; 第二,软件应用。系统学习 Photoshop、Illustrator、CorelDRAW 等主流设计软件; 第三,项目实训。通过广告、UI、包装等项目,提升实战能力。 教学过程遵循“理实一体、由浅入深”的原则,提升学生的知识水平和实践能力。 三、工学结合 我们推行“工学结合”的教学方式: 第一,“做中学、学中做”,以任务为主线,把知识点放到真实项目中; 第二,校企合作,引入企业项目,

来源

C++ 教程: 用std::move来移动所有权


📘 C++ 移动语义与 std::move() 教程

C++的std::move用于转移变量/对像的所有权/Ownership。

🔹 什么是移动语义?

在 C++ 中,移动语义通过转移资源所有权/Ownership(如内存或文件句柄)来优化性能,而不是复制它们。

移动语义是在 C++11 中引入的,它允许:

  • 更快速地传递大型或昂贵的对象
  • 更高效地使用临时值

🔹 什么是 std::move()?

std::move(x) 并不会真的移动任何东西 —— 它只是将 x 转换为一个 右值引用(即 T&&),告诉编译器:
你可以把这个对象当作临时对象来处理并移动它。

要真正实现移动,你的类型必须实现 移动构造函数移动赋值运算符

✅ 什么时候该用 std::move()?

在以下情况下使用它:

  • 你想 转移资源的所有权
  • 你正在处理 复制开销大的对象(如 std::stringstd::vectorunique_ptr)。
  • 你写的函数按值接收参数,并希望将其移动进成员变量。

🔍 std::string 示例

#include <iostream>
#include <string>
#include <utility>
int main() {
    std::string a = "hello";
    std::string b = std::move(a);
    std::cout << "b: " << b << std::endl;
    std::cout << "a: " << a << std::endl;
}

🔍 移动 std::vector

std::vector<int> original = {1, 2, 3};
std::vector<int> moved_to = std::move(original);
// original 现在为空(但仍然有效)

⚠️ 移动后会发生什么?

移动后:

  • 被移动的对象 仍然有效
  • 但其 内容未定义 —— 你只能销毁它或重新赋值。
std::string x = "abc";
std::string y = std::move(x);
// x 现在处于有效但未定义的状态 —— 不要再读取它!

🧠 对内建类型使用 std::move()

int x = 42;
int y = std::move(x);  // 实际是拷贝,因为 int 没有移动语义

没必要,因为像 int 这样的基本类型不支持移动构造。

🛠️ 自定义类型实现移动语义

class MyBuffer {
    int* data;
    size_t size;
public:
    MyBuffer(size_t s) : size(s), data(new int[s]) {}
    // 移动构造函数
    MyBuffer(MyBuffer&& other) noexcept
        : data(other.data), size(other.size) {
        other.data = nullptr;
        other.size = 0;
    }

    // 移动赋值运算符
    MyBuffer& operator=(MyBuffer&& other) noexcept {
        if (this != &other) {
            delete[] data;
            data = other.data;
            size = other.size;
            other.data = nullptr;
            other.size = 0;
        }
        return *this;
    }
    ~MyBuffer() { delete[] data; }
};

使用示例:

MyBuffer a(1000);
MyBuffer b = std::move(a);  // 将 a 移动到 b

📦 std::move() 与智能指针

可以用 std::move来操作智能指针,比如 unique_ptr 或 shared_ptr:

#include <memory>
std::unique_ptr<int> p1 = std::make_unique<int>(10);
std::unique_ptr<int> p2 = std::move(p1);
// p1 现在为空指针

🔁 std::shared_ptr 所有权转移

当你“转移所有权”给另一个 shared_ptr 时,你实际上是:

  • 将控制块(用于跟踪引用计数)从一个 shared_ptr 移动到另一个。
  • 原来的 shared_ptr 变为空(use_count() == 0)。
  • 总体引用计数不变(仍为 1,除非还有其他共享所有者)。

✅ 示例:通过 std::move() 转移所有权

#include <iostream>
#include <memory>
int main() {
    std::shared_ptr<int> p1 = std::make_shared<int>(42);
    std::cout << "p1 use_count: " << p1.use_count() << std::endl; // 1
    std::shared_ptr<int> p2 = std::move(p1); // 转移所有权
    std::cout << "p1 is " << (p1 ? "not null" : "null") << std::endl; // null
    std::cout << "p2 use_count: " << p2.use_count() << std::endl; // 1
}

🔍 重要区别:shared_ptr vs unique_ptr

指针类型 转移机制 允许拷贝 主要用途
std::unique_ptr 仅支持 std::move() ❌ 不允许 独占资源所有权
std::shared_ptr std::move() 或拷贝 ✅ 允许 共享资源所有权,引用计数

⚠️ 注意事项

  • 可以使用 move 来转移 shared_ptr 的所有权(源指针将变为空)。
  • 也可以拷贝 shared_ptr 来共享所有权(两个指针都有效,引用计数增加)。
  • 只有在你明确希望原来的 shared_ptr 被置空时才使用 std::move()

🔄 常见使用模式

函数返回值使用移动:

std::string get_name() {
    std::string name = "Alice";
    return std::move(name);
}

只有在你想强制进行移动(比如返回函数参数)时才使用 std::move()

🚫 不该使用 std::move() 的场景

1. ❌ 不要从还需要使用的变量移动:

std::string s = "test";
std::string t = std::move(s);
std::cout << s;  // 内容未定义

2. ❌ 不要对 const 对象使用 std::move():

const std::string s = "hi";
std::string t = std::move(s);  // 实际是拷贝,因为移动构造<a  href="https://justyy.com/archives/67736">函数</a>无法接收 const 参数

🧪 总结速查表

使用场景 是否使用 std::move() 原因
移动大型容器或字符串 ✅ 是 高效转移内存或资源
移动智能指针 ✅ 是 转移所有权
基本类型(如 int、bool) 🚫 否 没有移动语义,等同于拷贝
const 对象 🚫 否 移动构造函数不接受 const
临时变量 🚫 通常不需要 已经是右值了

✅ 最后小贴士

如果你不确定该不该用 std::move(),问自己:
“我是否不再需要这个变量并打算把它交出去?”
如果答案是“是” → 那就用 std::move()

C/C++编程

英文:Tutorial on C++ std::move (Transfer Ownership)

本文一共 880 个汉字, 你数一下对不对.
C++ 教程: 用std::move来移动所有权. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C++ 教程: 用std::move来移动所有权 C++ 学习笔记 编程 计算机
The post C++ 教程: 用std::move来移动所有权 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 简易教程: C++的智能指针 C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个...
  2. 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) 程序员的未来?Vibe Coding + AI 一起上! 借助 AI 快速开源了三个小工具 最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行...
  3. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  4. 步步高学生电脑上 Basic 编程语言 peek 用法示例 步步高学生电脑 是8位FC机的经典之作.它上面的BASIC有三个版本 1.0, 2.0 和 2.1 2.1 版本有个在线帮助,实际上是 help.cmd 1.0 是用 Esc 键退回到 DOS 的,...
  5. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  6. C++ Ranges 教程 C++20 引入了 ranges(范围),这是一个强大且优雅的抽象,用于处理序列(如数组、vector 等)。相比传统的迭代器或旧式循环,Ranges 提高了代码的可读性、可组合性和性能。 什么是 Range? 在 C++20 中,range(范围) 是一种抽象,代表一个可以迭代的元素序列。它与 views(视图) 和 actions(操作) 如过滤、转换等配合使用非常自然。...
  7. C++中的 const和constexpr 比较 C++ const 与 constexpr:真正的区别是什么? 一眼看都是定义常量。 为什么这很重要 现代 C++ 鼓励编写不可变、高效且表达力强的代码。两个关键字—const 和 constexpr—是这一理念的核心。它们看起来很相似,但理解它们的不同语义,对于正确利用编译期与运行期行为至关重要。 高层次对比 特性 const constexpr...
  8. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...

C++中的 const和constexpr 比较


C++ constconstexpr:真正的区别是什么?

一眼看都是定义常量。

为什么这很重要

现代 C++ 鼓励编写不可变、高效且表达力强的代码。两个关键字—constconstexpr—是这一理念的核心。它们看起来很相似,但理解它们的不同语义,对于正确利用编译期与运行期行为至关重要。

高层次对比

特性 const constexpr
编译期常量? 可能 一定(否则编译报错)
支持运行期? 支持 支持(在需要时运行期求值)
用于数组/模板参数? 仅当确实是常量 保证可用
允许函数? 仅限成员函数限定符 支持完整函数且可在编译期求值

1  声明不可变数据

const:构造后不可变

const int runtimeConst = std::rand(); // 是 const,但不是编译期常量

当你只想禁止变量被修改,而不在意值是在编译期还是运行期确定的,const 就足够了。

constexpr:必须在编译期已知

constexpr int arraySize = 10;
int arr[arraySize];           // 始终合法

如果值需要参与要求编译期常量的上下文(如数组大小、模板参数、switch 标签等),你必须使用 constexpr

2  函数与方法

const 成员函数

class Widget {
public:
    int value() const {/*…*/} // 保证不会修改 this 对象
};

它保护对象状态,但不提供编译期求值能力。

constexpr 函数

constexpr int square(int n) { return n * n; }

static_assert(square(4) == 16, "编译期计算");

constexpr 函数在参数是常量表达式时可以在编译期执行,也可以在运行期使用。

3  常见陷阱

// 1. 编译通过:runtimeConst 只是 const
const int runtimeConst = std::rand();

// 2. 编译失败:std::rand() 不是 constexpr
constexpr int fails = std::rand();

记住:每个 constexpr 变量本质上都是 const,但并非所有 const 都是常量表达式。

4  如何选择

  • 需要强制编译期计算?使用 constexpr
  • 需要不可变性但值可能在运行期确定?使用 const
  • 不确定时偏向使用 constexpr,编译器会提示你是否不合法

5  总结片段

constexpr int ctVal = 42; // 编译期常量
const int rtVal = std::rand(); // 运行期确定,但不可变

正确地选择 constconstexpr 能让你的 C++ 代码更安全、更高效、更具表达力。默认使用 constexpr,当且仅当你明确知道值只能在运行期获取时才使用 const

C/C++编程

英文:const vs constexpr in C++

本文一共 525 个汉字, 你数一下对不对.
C++中的 const和constexpr 比较. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C++中的 const和constexpr 比较 C++ C++ 学习笔记 程序设计 计算机
The post C++中的 const和constexpr 比较 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 简易教程: C++的智能指针 C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个...
  2. C++ Ranges 教程 C++20 引入了 ranges(范围),这是一个强大且优雅的抽象,用于处理序列(如数组、vector 等)。相比传统的迭代器或旧式循环,Ranges 提高了代码的可读性、可组合性和性能。 什么是 Range? 在 C++20 中,range(范围) 是一种抽象,代表一个可以迭代的元素序列。它与 views(视图) 和 actions(操作) 如过滤、转换等配合使用非常自然。...
  3. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  4. 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) 程序员的未来?Vibe Coding + AI 一起上! 借助 AI 快速开源了三个小工具 最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行...
  5. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  6. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  7. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  8. 剑桥网红餐厅 The Ivy Cambridge Brasserie 上周刚过40岁生日,媳妇带我去剑桥的一家网红餐厅——The Ivy Cambridge Brasserie。这家餐厅是朋友推荐的,和那家Trinity一样很有名,可惜我们在剑桥待了近10年才知道。 The Ivy Cambridge Brasserie 是剑桥市中心一家备受欢迎的网红餐厅,位于历史悠久的 Trinity Street。餐厅设计时尚典雅,融合了现代与经典元素,为食客提供了一个舒适而奢华的用餐环境。这里的菜单丰富多样,覆盖全天用餐,从早餐到晚餐以及下午茶,提供英式经典美食如松露鸡肉派、英式早餐等,也有一些国际风味的菜肴。得天独厚的位置和独特的氛围使得 The Ivy Cambridge Brasserie...

C++ Ranges 教程


C++20 引入了 ranges(范围),这是一个强大且优雅的抽象,用于处理序列(如数组、vector 等)。相比传统的迭代器或旧式循环,Ranges 提高了代码的可读性、可组合性和性能

什么是 Range?

在 C++20 中,range(范围) 是一种抽象,代表一个可以迭代的元素序列。它与 views(视图)actions(操作) 如过滤、转换等配合使用非常自然。

传统循环 vs 基于 Range 的循环

#include <iostream>
#include <vector>

int main() {
    std::vector<int> v = {1, 2, 3, 4};

    // 旧式循环
    for (auto it = v.begin(); it != v.end(); ++it)
        std::cout << *it << ' ';

    // 基于范围的循环(C++11)
    for (auto x : v)
        std::cout << x << ' ';
}

Range Views(视图)

View 是惰性的、可组合的范围操作。除非需要,一般不会复制数据。

Filter 和 Transform 示例

#include <iostream>
#include <vector>
#include <ranges>

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5, 6};

    auto even_doubled = v 
        | std::views::filter([](int n) { return n % 2 == 0; })
        | std::views::transform([](int n) { return n * 2; });

    for (int n : even_doubled)
        std::cout << n << ' ';  // 输出:4 8 12
}

常见的 Views

View 描述
std::views::filter 保留符合条件的元素
std::views::transform 对每个元素应用函数
std::views::take(n) 获取前 n 个元素
std::views::drop(n) 跳过前 n 个元素
std::views::reverse 反转范围
std::views::iota(a, b) 生成从 a 到 b-1 的范围

使用 iota 和 reverse

#include <ranges>
#include <iostream>

int main() {
    for (int i : std::views::iota(1, 6) | std::views::reverse)
        std::cout << i << ' '; // 输出:5 4 3 2 1
}

组合视图操作

你可以使用管道符 | 流式地组合多个视图操作。

#include <vector>
#include <ranges>
#include <iostream>

int main() {
    std::vector<int> v = {5, 10, 15, 20};

    auto result = v 
        | std::views::transform([](int x) { return x + 1; })
        | std::views::filter([](int x) { return x % 2 == 0; });

    for (int x : result)
        std::cout << x << ' '; // 输出:6 16
}

实用示例

1. 过滤偶数

#include <iostream>
#include <vector>
#include <ranges>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5, 6};

    auto evens = numbers 
        | std::views::filter([](int n) { return n % 2 == 0; });

    for (int n : evens)
        std::cout << n << ' ';  // 输出:2 4 6
}

2. 将奇数翻倍

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};

    auto doubled_odds = numbers
        | std::views::filter([](int n) { return n % 2 != 0; })
        | std::views::transform([](int n) { return n * 2; });

    for (int n : doubled_odds)
        std::cout << n << ' ';  // 输出:2 6 10
}

3. 反转序列

int main() {
    std::vector<int> nums = {10, 20, 30};

    auto reversed = nums | std::views::reverse;

    for (int n : reversed)
        std::cout << n << ' ';  // 输出:30 20 10
}

4. 生成数值序列

#include <ranges>

int main() {
    for (int i : std::views::iota(1, 6))
        std::cout << i << ' ';  // 输出:1 2 3 4 5
}

5. 获取前 N 个元素

int main() {
    auto infinite = std::views::iota(1); // 无限序列
    auto first5 = infinite | std::views::take(5);

    for (int i : first5)
        std::cout << i << ' ';  // 输出:1 2 3 4 5
}

6. 计算前 5 个奇数的平方和

#include <numeric>

int main() {
    auto odd_squares = std::views::iota(1)
        | std::views::filter([](int x) { return x % 2 == 1; })
        | std::views::transform([](int x) { return x * x; })
        | std::views::take(5);

    int sum = std::accumulate(odd_squares.begin(), odd_squares.end(), 0);
    std::cout << "和 = " << sum << '\n'; // 输出:和 = 165
}

7. 判断是否所有元素都为正数

#include <ranges>
#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> nums = {1, 2, 3};

    bool all_positive = std::ranges::all_of(nums, [](int n) { return n > 0; });

    std::cout << std::boolalpha << all_positive << '\n'; // 输出:true
}

8. 自定义管道函数

auto pipeline = [](const std::vector<int>& v) {
    return v 
        | std::views::filter([](int x) { return x % 2 == 0; })
        | std::views::transform([](int x) { return x * 10; });
};

int main() {
    std::vector<int> nums = {1, 2, 3, 4};

    for (int x : pipeline(nums))
        std::cout << x << ' '; // 输出:20 40
}

性能提示

  • Ranges 是惰性的:仅在需要时才处理元素。
  • 避免不必要的分配与复制。
  • 适合处理大型数据或函数管道。

何时不适合使用 Ranges

  • 在对性能极度敏感的内循环中,STL 抽象可能较慢。
  • 当项目尚未迁移到 C++20。

参考资料

英文:Tutorial on C++ Ranges

本文一共 415 个汉字, 你数一下对不对.
C++ Ranges 教程. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C++ Ranges 教程 C++ C++ 学习笔记 程序设计 编程 计算机
The post C++ Ranges 教程 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 简易教程: C++的智能指针 C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个...
  2. 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) 程序员的未来?Vibe Coding + AI 一起上! 借助 AI 快速开源了三个小工具 最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行...
  3. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  4. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  5. 试用 Linkedin (领英) 高级帐号 (Premium) Linkedin (领英) 算是比较靠谱的职业社交网站, 在上面有很多猎头, 很多知名公司的HR 无时无刻在招人. 特别领英在被微软收购之后, 名气就变得大了许多. 领英是免费使用的, 但也有付费用户, 有给猎头的, 也有给想找工作的. 价格并不便宜, 对于想找工作的 Job...
  6. 步步高学生电脑上 Basic 编程语言 peek 用法示例 步步高学生电脑 是8位FC机的经典之作.它上面的BASIC有三个版本 1.0, 2.0 和 2.1 2.1 版本有个在线帮助,实际上是 help.cmd 1.0 是用 Esc 键退回到 DOS 的,...
  7. 《Steem 指南》之 justyy 在线工具与 API 系列 – Discord 机器人 Discord 聊天频道 Discord 原本是给游戏设计的, 但由于其功能多, 接口开放能力强, 使用的用户越来越多. 我们CN区也有一个Discord 频道, 加入地址为: https://discord.gg/7ctT3Xt 在网页里就可以加入 cnsteem 的大家庭了, 当然也可以下载手机APP或者桌面程序来加入...
  8. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...

简易教程: C++的智能指针


C++ 智能指针教程

C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。

本教程将介绍 C++ 中三种主要的智能指针:

  • std::unique_ptr:独占式所有权
  • std::shared_ptr:共享式所有权
  • std::weak_ptr:非拥有式弱引用

1. std::unique_ptr

unique_ptr 拥有独占所有权。一个资源只能被一个 unique_ptr 拥有。

示例:管理简单对象

#include <iostream>
#include <memory>

int main() {
    std::unique_ptr<int> p = std::make_unique<int>(42);
    std::cout << "值: " << *p << "\n";

    // 转移所有权
    std::unique_ptr<int> q = std::move(p);
    if (!p) std::cout << "p 现在是空指针\n";
    std::cout << "q 指向: " << *q << "\n";
}

示例:构建链表

struct Node {
    int val;
    std::unique_ptr<Node> next;
    Node(int v) : val(v), next(nullptr) {}
};

void printList(const std::unique_ptr<Node>& head) {
    const Node* curr = head.get();
    while (curr) {
        std::cout << curr->val << " ";
        curr = curr->next.get();
    }
    std::cout << "\n";
}

int main() {
    auto head = std::make_unique<Node>(1);
    head->next = std::make_unique<Node>(2);
    head->next->next = std::make_unique<Node>(3);

    printList(head);
}

2. std::shared_ptr

shared_ptr 允许多个指针共享同一个资源的所有权。它通过引用计数管理资源,当引用数为零时自动释放内存。

示例:共享资源

#include <iostream>
#include <memory>

int main() {
    std::shared_ptr<int> a = std::make_shared<int>(100);
    std::shared_ptr<int> b = a;

    std::cout << "a 的引用计数: " << a.use_count() << "\n";
    std::cout << "b 的引用计数: " << b.use_count() << "\n";
    std::cout << "*b = " << *b << "\n";
}

示例:共享链表节点

struct Node {
    int val;
    std::shared_ptr<Node> next;
    Node(int v) : val(v), next(nullptr) {}
};

3. std::weak_ptr

weak_ptr 是一种弱引用,不拥有资源,仅用于观察 shared_ptr 所管理的对象。它常用于打破循环引用,防止内存泄漏。

示例:打破循环引用

#include <iostream>
#include <memory>

struct B;

struct A {
    std::shared_ptr<B> b_ptr;
    ~A() { std::cout << "A 被销毁\n"; }
};

struct B {
    std::weak_ptr<A> a_ptr;
    ~B() { std::cout << "B 被销毁\n"; }
};

int main() {
    auto a = std::make_shared<A>();
    auto b = std::make_shared<B>();
    a->b_ptr = b;
    b->a_ptr = a;
}

是否存在 make_weak?

不存在 std::make_weak,因为 weak_ptr 不拥有资源,它必须引用一个已存在的 shared_ptr

如何创建 weak_ptr

#include <iostream>
#include <memory>

int main() {
    std::shared_ptr<int> sp = std::make_shared<int>(42);
    std::weak_ptr<int> wp = sp;

    if (auto locked = wp.lock()) {
        std::cout << "值: " << *locked << "\n";
    } else {
        std::cout << "对象已被释放\n";
    }
}

总结

智能指针 所有权 线程安全的引用计数 典型用途
unique_ptr 独占 N/A 高效、安全的单一所有权
shared_ptr 共享 多个所有者共享资源
weak_ptr N/A 打破 shared_ptr 的循环引用

C/C++编程

英文:Tutorial on C++ Smart Pointers

本文一共 375 个汉字, 你数一下对不对.
简易教程: C++的智能指针. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 简易教程: C++的智能指针 C++ C++ 学习笔记 程序设计 编程 计算机
The post 简易教程: C++的智能指针 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  2. Javascript 中 sleep 函数实现 Javascript 中并没有 built-in 的 sleep 函数支持, 在 async/await/Promise 的支持之前, 我们可以用 busy-waiting 的方式来模拟: 1 2 3...
  3. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  4. C++ 编程练习题: 如何合并两个二叉树? 题意: 合并两个二叉树, 没有说不可以改变原来的二叉树. 合并的时候把结点求合. C/C++ 中二叉树的定义 在C或者C++中, 二叉树的定义可以很方便的用结构体来表征. 其中左右子树都是递归定义. 1 2 3 4 5 6...
  5. 步步高学生电脑上 Basic 编程语言 peek 用法示例 步步高学生电脑 是8位FC机的经典之作.它上面的BASIC有三个版本 1.0, 2.0 和 2.1 2.1 版本有个在线帮助,实际上是 help.cmd 1.0 是用 Esc 键退回到 DOS 的,...
  6. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  7. C++ 编程练习题 – 找出第三大的数 题意: 给出一个数组, 求第三大的数字是多少, 重复的数字并不算在内, 比如 第3大的数字是1 而不是 2. Using std::set set 是集合, 是有序的(从小到大), 集合中不包含重复的元素, 所以我们可以遍历数组并把数字添加到集合中....
  8. 最简单有效的过滤WordPress垃圾评论的方法 当你的Wordpress博客流量大的时候, 不免会收到很多垃圾评论. 本文介绍一种特别简单而且免费的过滤Wordpress垃圾评论的方法. 这种方法不需要你安装任何插件, 也不需要拥有修改Wordpress主题模板函数的能力, 只需要1分钟就可以搞定. 把这个列表拷贝下来 打开 WordPress 的控制面版, 到设置-讨论 拷贝上面的列表到 “评论审核” 或者 “评论黑名单”...
❌
❌