普通视图

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

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...

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...

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...

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 的控制面版, 到设置-讨论 拷贝上面的列表到 “评论审核” 或者 “评论黑名单”...

借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding)


程序员的未来?Vibe Coding + AI 一起上!

借助 AI 快速开源了三个小工具

最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行 Base64 编码时,我总是得去 Google 搜索在线工具。时间一久,我不禁开始思考:既然每次都要用,为什么不自己动手实现一个呢?正好我也在学习 React,把这个过程当作练习岂不是一举两得?

于是我开始“扮演”产品经理,向 ChatGPT 提出需求,它很快就为我搭建好了基础框架。包括项目结构、CI 工具(单元测试、ESLint——后来我换成了 Prettier)、README 文档,甚至是 GitHub Actions 上的自动化测试和部署流程,全部一气呵成。

这几个工具都部署在 GitHub Pages 上,开源、带测试、写了文档,虽然小巧,但功能完整,不需要自建服务器就能稳定运行,部署成本几乎为零。

YAML/JSON 转换工具

用于在 YAML 和 JSON 格式之间进行双向转换,支持美化和压缩,简单直观。

yaml-json-converter 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) ChatGPT (OpenAI) 人工智能 (AI) 小技巧 程序员 程序设计 编程 资讯 软件工程

Yaml/Json数据格式转换React小程序

Github开源库 | Github Pages在线工具

Base64 编码/解码工具

支持文字和文件的编码解码操作,可以将文件内容直接转换为 Base64 字符串,或者反向解析恢复文件。

base64-converter 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) ChatGPT (OpenAI) 人工智能 (AI) 小技巧 程序员 程序设计 编程 资讯 软件工程

Base64编码解码React小工具

Github开源库 | Github Pages在线工具

ROT47 混淆工具

这是一个轻量级的字符串混淆工具。ROT47 的特点是“加密两次即为原文”,类似于异或操作,适用于简单场景下的信息模糊处理。

rot47-converter 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) ChatGPT (OpenAI) 人工智能 (AI) 小技巧 程序员 程序设计 编程 资讯 软件工程

ROT47 Cipher文本混淆React小工具

Github开源库 | Github Pages在线工具

Markdown HTML转换

我又弄了一个,这个是把Markdown格式转换成HTML的,转换解释Markdown是基于 marked 库,所以并没有再造轮子。由于HTML转Markdown会比较复杂,这一版本就没有支持。

主要的活都让AI做了(编码/写测试/调CSS),我做的工作就是指导(Prompt Engineering)并把各个零件粘在一起。

markdown-html-converter 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) ChatGPT (OpenAI) 人工智能 (AI) 小技巧 程序员 程序设计 编程 资讯 软件工程

Markdown/HTML转换工具/React Js WebApp

Github开源库 | Github Pages在线工具

程序员的门槛正在降低

AI 的发展速度太快了,现在生成代码的质量不仅更高,出错率也更低。即便出错,只需将报错信息交还给 AI,它就能分析并修正。程序员的角色正在转变:与其说是手工写代码,不如说是理解需求、与 AI 高效沟通,并拼装整合它给出的解决方案。

对我来说,项目最初的搭建一直是拖延的主要原因。ChatGPT 正好擅长这一环节——自动生成 boilerplate,让我几乎能“秒启动”一个新项目,显著提升了开发效率。

我已经养成每天使用 AI 的习惯,甚至已经很少再使用 Google 搜索。遇到问题,第一反应是直接问 ChatGPT,不仅快,还能一步到位解决问题。

Vibe Coding:AI 驱动的编程方式

Vibe Coding 这个概念今年特别火,核心思想是“用氛围编码”。也就是说,程序员不再执着于每一行代码的细节,而是通过自然语言描述需求,让 AI 来实现代码的生成、重构与调试。

Andrej Karpathy (2025)

TLDR;Vibe 编码是一种新兴的软件构建实践,它用简单的语言描述你想要的内容 – 然后让 AI 处理代码和测试。
TLDR; Vibe coding is the emerging practice of building software by describing what you want in plain language – and letting AI handle the code and test.

我发现自己越来越倾向于这种方式。遇到 bug,第一时间就将错误日志扔给 ChatGPT 处理。虽然效率很高,但也让我逐渐失去了深入思考和调试的乐趣。

现在还有很多支持 Vibe Coding 的工具,比如 Cursor,或者在 VSCode 中配置 AI Agent。你只需告诉它“我要实现什么”,它就能完成代码编写、框架搭建,甚至进行模块拆解和逻辑优化。而你要做的,仅仅是审查和接受它的建议——这不就是产品经理的工作吗?

初级程序员的挑战与机会

AI 工具的普及正在重塑编程的边界,传统“照着教程敲代码”的模式已经远远落后。未来,初级程序员面临的挑战不再是“学不会写代码”,而是“不会用 AI”。

想要不被淘汰,最重要的是掌握如何高效地与 AI 协作,提升自己的系统思考与设计能力。AI 是强大的助手,但人类的洞察、判断和创造,依然无可替代。

未来属于那些善于利用工具、不断精进自己思考能力的人。也许“写代码”的定义正在改变,但“解决问题”的本质永远不会变。

AI大大提高了生产力,执行力和创造力会更加重要。软件工程师需要懂得怎么用AI来干活拧螺丝(开发/调试/解决问题)。感觉程序员的门槛瞬间变得好低,只要懂得看懂AI生成的代码,懂得基本的软件工程就可以了。

ChatGPT 可以拿来做什么?

ChatGPT 通用人工智能

Grok 3

字节/豆包/AI

英文:From Idea to GitHub Pages: Building Tools with AI and Vibe Coding

本文一共 1373 个汉字, 你数一下对不对.
借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding). (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) ChatGPT (OpenAI) 人工智能 (AI) 小技巧 程序员 程序设计 编程 资讯 软件工程
The post 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 特朗普加关税的公式竟然是EXCEL里弄的? 这两天中美关税大战越演越烈,据说,特朗普加关税的计算方式竟然是直接在EXCEL电子表格里弄的,具体如下: 其中 I 是 Import,进口;E 是 Export 出口。 优美又实用的公式家族又添新成员 勾股定理: 欧拉恒等式: 牛顿运动定律: 爱因斯坦质能等价公式: 特朗普的“互惠关税”公式:,其中 I...
  2. 测测你的幸运 – Linux Fortune-Teller LINUX 下有很好很好玩的命令,之前已经介绍过: figlet, rig, curl. 现在推荐另一个 命令 fortune 是用来随机显示一段(句)话的.fortune 在英文里就是幸运的意思. 这个命令可以不需要 参数 如果没有 可以通过 apt-get...
  3. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  4. 推荐一款 CHROME 插件 – Wappalyzer 这个CHROME浏览器插件很方便的可以让你知道当前标签页里的网页 有用到哪些 技术. 你可以用它来检查是否插件正常工作. 1. CLOUD FLARE CDN 2. ADSENSE 3. GOOGLE ANALYTICS 4. Gravatar...
  5. 教娃编程有趣的瞬间 vlog视频集合 教娃700天:写在教娃编程700天, what’s next?。有很多有意思的瞬间记录一下,持续更新。 和孩子一起打闹,学习,成长。 教娃编程孩子有趣的瞬间 vlog(Day 641) 娃说我不够 Senior(Day 701) Bro.. I thought you’re like...
  6. 用 SB2000 的 FBASIC 计算圆周率后80位 英文同步 SB2000 的 FBASIC 是浮点 BASIC 的意思, 就是说可以用在计算一些数值,高级计算机.今天我们还测一下它的计算性能,之前大概知道很慢.. 计算圆周率有很多公式,收敛度不一样, 我们挑一个性价比较高的,比较容易实现的..比如这个: 在SB2000上,80位要算5 小时; 40位1个小时; 20位几分钟, 真得很慢....
  7. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  8. 你要找什么样的老婆? 找媳妇的标准 昨天和网友在剑桥面基, 网友奔现, 他从爱尔兰过来, 小我12岁, 就聊到了找对象的标准. TLDR; 找老婆不要(只)看颜值, 而要注重性格, 为人处事和顾家等更重要的品质, 当然性和谐也很重要. 在当今社会, 人们对于找伴侣的标准有所不同. 有些人认为颜值是最重要的, 因为外貌吸引力可以让人在日常生活中感到愉悦, 这是人的本性,...

如何构建一个具有重试机制的 Steem 区块链见证人投票检查器


当使用像 Steem 这样的去中心化平台时,重要的是要预期偶尔的故障——网络问题、API 限制或暂时的停机。这就是为什么你构建的任何集成、机器人或工具都应该能够优雅地失败并智能地恢复。

在这篇文章中,我将带你了解一个简单而强大的 Steem 区块链见证人(也就是STEEM上的矿工)投票检查工具:

第一版:检查是否由某个见证人投票

这是一个实用的 Node.js 函数,用于检查一个 Steem 用户是否投票支持了某个特定的 见证人——无论是直接投票还是通过代理。

function is_voted_by(witness, id) {
    return new Promise((resolve, reject) => {
        steem.api.getAccounts([id], function(err, response) {
            if (err) reject(err);
            if (typeof response == "undefined") reject("undefined");
            const data = response[0];
            resolve((data.proxy === witness) || data.witness_votes.includes(witness)); 
        });          
    });
}

它获取给定 id 的账户数据,然后检查该用户是否设置了匹配目标见证人的投票代理,或者该见证人是否在他们的直接投票列表中。

启用重试的 Steem 见证人投票检查器

这是更新版的函数,包含简单的重试机制(最多重试 3 次,每次重试间隔 1 秒)。以下的代码加入了重试功能:

function is_voted_by(witness, id, retries = 3) {
    return new Promise((resolve, reject) => {
        const attempt = (remaining) => {
            steem.api.getAccounts([id], function(err, response) {
                if (err || typeof response === "undefined") {
                    if (remaining > 0) {
                        setTimeout(() => attempt(remaining - 1), 1000); // 重试 1 秒后
                    } else {
                        reject(err || "undefined response");
                    }
                    return;
                }
                const data = response[0];
                resolve((data.proxy === witness) || data.witness_votes.includes(witness)); 
            });
        };
        attempt(retries);
    });
}

此版本在 Steem API 调用失败或返回 undefined 时最多进行 3 次重试,帮助处理不稳定的网络状况或临时的 API 问题。功能保持不变:检查直接的见证人投票或代理委托/Proxy。

重试的指数退避机制

使用指数退避机制/Exponential backoff来避免过度请求 API,并记录每次尝试以便于调试和更好的可视化。

module.exports.is_voted_by = function(witness, id, retries = 3, delay = 1000) {
    return new Promise((resolve, reject) => {
        const attempt = (remaining, currentDelay) => {
            console.log(`Checking vote for "${id}" against witness "${witness}"... (${retries - remaining + 1}/${retries})`);

            steem.api.getAccounts([id], function(err, response) {
                if (err || typeof response === "undefined") {
                    console.warn(`Attempt failed: ${err || 'undefined response'}`);
                    
                    if (remaining > 0) {
                        console.log(`Retrying in ${currentDelay}ms...`);
                        setTimeout(() => attempt(remaining - 1, currentDelay * 2), currentDelay); // 指数退避
                    } else {
                        reject(err || "undefined response after retries");
                    }
                    return;
                }

                const data = response[0];
                const voted = (data.proxy === witness) || data.witness_votes.includes(witness);
                console.log(`Vote check result: ${voted}`);
                resolve(voted);
            });
        };

        attempt(retries, delay);
    });
};

该函数:

  • 调用 Steem API 获取给定 id 的账户信息。
  • 检查用户是否投票支持某个特定的见证人,检查方式包括:直接投票(即 witness_votes 中包含该见证人),或通过代理投票(即 proxy === witness)。

如果 API 调用失败或返回 undefined,它将:

  • 等待一段时间,
  • 重试(最多重试 retries 次),
  • 并且每次的等待时间按指数方式增加(1秒、2秒、4秒等)。
为什么要使用指数退避?

指数退避是网络编程中的经典策略——如果服务暂时不可用,快速连续请求只会让问题更加严重。通过在重试之间增加延迟,可以让系统有时间恢复,并且对 API 更加友好。

is_voted_by('witness-name', 'username')
    .then(voted => {
        if (voted) {
            console.log("User supports the witness!");
        } else {
            console.log("User has not voted for the witness.");
        }
    })
    .catch(err => {
        console.error("Error checking vote:", err);
    });

最后的思考

在构建与区块链交互的工具时,弹性至关重要。适当的重试逻辑能大大提高你的应用程序的稳定性和用户友好性——即使在底层基础设施出现问题时也能保持正常运行。

Steem/Steemit区块链

英文:

本文一共 672 个汉字, 你数一下对不对.
如何构建一个具有重试机制的 Steem 区块链见证人投票检查器. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 如何构建一个具有重试机制的 Steem 区块链见证人投票检查器 Javascript STEEM 区块链 区块链 程序设计
The post 如何构建一个具有重试机制的 Steem 区块链见证人投票检查器 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. HPZ800服务器主板太老不支持超过2TB的大硬盘 我家里一直用的是HPZ800服务器, 很吵, 很老, 虽然这台服务器已经有十年之久(我在EBAY上买来用了五年多了), 但是即使放到今天, 这服务器速度依旧很快, 很稳定. 由于服务器用的是ECC较验内存, 所以基本上不重启关机. HPZ800主机有两个硬核CPU – 因特志强 X5650 – 每个CPU是12核....
  2. 给孩子零花钱培养孩子正确的金钱观价值观 两个娃已经不知不觉7岁8岁了. 媳妇和我商量一下决定给孩子每人每周5英镑的零花钱(Pocket Money). 这样他们慢慢的就有自己的小积蓄备将来不时之需: 比如朋友聚会生日啥的需要准备礼物. 同时, 我们决定不再给孩子买零食(薯片啥的). 孩子一天好几餐, 晚上睡觉前还得吃零食, 我们就多买了很多水果面包, 健康的食物多吃一些总不是啥坏事. 孩子可以用这些零钱买自己想要的东西, 我们也不再过问. 孩子有自己的决定权. 第一周的时候,...
  3. 剑桥网红餐厅 The Ivy Cambridge Brasserie 上周刚过40岁生日,媳妇带我去剑桥的一家网红餐厅——The Ivy Cambridge Brasserie。这家餐厅是朋友推荐的,和那家Trinity一样很有名,可惜我们在剑桥待了近10年才知道。 The Ivy Cambridge Brasserie 是剑桥市中心一家备受欢迎的网红餐厅,位于历史悠久的 Trinity Street。餐厅设计时尚典雅,融合了现代与经典元素,为食客提供了一个舒适而奢华的用餐环境。这里的菜单丰富多样,覆盖全天用餐,从早餐到晚餐以及下午茶,提供英式经典美食如松露鸡肉派、英式早餐等,也有一些国际风味的菜肴。得天独厚的位置和独特的氛围使得 The Ivy Cambridge Brasserie...
  4. 负电价活久见: 安装Octopus智能电表省电费甚至赚钱 前几周我的电气公司 Octopus 终于来装智能电表了(Smart Meter),虽然是免费安装的,但是排队排了有两三年了吧。因为之前一直写邮件催的时候就老是说 Not Ready。 收到邮件说可以安装智能电表我还是相当开心和期待的,因为已经听说这玩意好,但是还是得亲身体验一下。工程师来安装大概不到2小时,其中需要停电闸一会儿,重新接下线。装好后,给了个小册子,自动切换到了 Agile 的电价,也就是每半小时的电价都不一样,提前一天可以在手机App和网站上查得。 正好在原来的电价计费合同快要结束前2天换到了智能电表计价 Octopus Agile方式,但是系统还是扣了我75英镑 Exit Fee (提前合同结束得交违约费),不过我一个电话打过去,公司很爽快就给我退了。...
  5. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  6. 测测你的幸运 – Linux Fortune-Teller LINUX 下有很好很好玩的命令,之前已经介绍过: figlet, rig, curl. 现在推荐另一个 命令 fortune 是用来随机显示一段(句)话的.fortune 在英文里就是幸运的意思. 这个命令可以不需要 参数 如果没有 可以通过 apt-get...
  7. Discord 和公众号都启用 强大的 P命令 O 哥的公众号里有一个 ?pu 命令很方便, 可以根据当前的行情, 市场价 feed price 等信息自动给出是否应该是 100% 发文或者 50/50. 今天有点时间, 整合到 Discord...
  8. 撸了一个Steem粉丝点赞检查工具 – 快速检查你的粉丝到底有没有给你点赞 (带免费API) 花了三小时, 总算把这个小工具(自带API)的做出来的, 主要的用法就是给定一个STEEM贴, 然后分析出ID号, 然后得出粉丝列表, 然后再解析HTML源代码分析出当前点赞的粉丝, 最后面计算两个数组的差别就是没有点赞的粉丝. 工具试一下好不好用. 有问题联系 @justyy 点我: Steem粉丝点赞检查工具 输入STEEM的文章地址按回车或者点击 按钮 等待一会,...

AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法!


免费用Grok 3来生成吉卜力风格的照片(Ghibli)

这两天,朋友圈和X(推特)上都被吉卜力风格的照片刷屏了,就连伊隆·马斯克也特意发帖推荐了 ChatGPT-4o 的这项新功能。仿佛一夜之间,AI 就能取代绝大多数设计师的工作。

elon-musk-doge-coin-ghibli-style AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

Musk又借此推了一把狗狗币Dogecoin,真是会营销

cz-and-he-yi-ghibli AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

币安CZ和他的生活伴侣何一/币圈一姐的吉卜力风格照片

这个 AI 生成图片的功能(严格来说是图生图)仅限 ChatGPT-4o 的付费用户使用,每月订阅费用为 20 美元。我曾在两年前订阅过半年 ChatGPT Plus/Pro,但后来账号因支付问题被封——当时我使用的是 OneKey 的美元加密货币卡。

不过,我们其实可以 免费 利用 Grok-3 生成吉卜力风格的照片。只需将图片拖入 Grok-3 的对话框,并输入以下提示词:

图生图,生成吉卜力风格的照片的提示词/Prompt

  • 中文:“可以把这张照片生成吉卜力风格吗?尽量保持图片原有的元素。”
  • 英文:“Generate a Ghibli image based on this, keep as much detail as possible.”
my-little-girl AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

媳妇几年前的美照拿来试试Grok3的图生图功能(吉卜力风格)

grok3-ghibli-1 AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

感觉生成的图还是缺点意思,和ChatGPT 4o相比差了点,可惜我现在没有付费ChatGPT

想起当年有个人做了测试:把油管视频下载下来再上传,再下载,再上传,然后最后面就得到很糊的一个视频。不知道如果我们一直让AI基于生成的图片再生成图片,效果是会收敛、变好、还是会变得不可预测?

grok3-ghibli-2 AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

又迭代了一个版本,感觉差不多,如果一直迭代下去不知道是不是会收敛还是说会变差?

变开心很容易,但是要特别特别开心真的就要付费了:试用美图秀秀的AI绘画功能: 快乐是免费的-特别快乐可能就要花一些钱了

generate-more-images-with-premium-grok-ghibli AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

X推上现在是可以免费使用Grok 3但是并不会一直免费,对于这个图生图的功能也有使用限制。

ChatGPT免费生成吉卜力风格照片

ChatGPT现在也开放这个图生图功能给免费用户了,生成的质量明显比Grok好。

2023-08-14 AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

两年前媳妇去塞尔维亚的一个网红餐厅

chatgpt-ghibli-style-image-to-image-for-free AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

ChatGPT图生图的效果似乎更好一些。

chatgpt-ghibli-2 AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

细节更准确 图像更立体

chatgpt-ghibli-1 AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

媳妇在塞尔维亚的照片改成Ghibli风格

ChatGPT 可以拿来做什么?

ChatGPT 通用人工智能

Grok 3

字节/豆包/AI

AI 图片/照片/视频 工具分享/小技巧

后续所有这类照片都放在这个帖子里:吉卜力风格照片(持续更新)

本文一共 958 个汉字, 你数一下对不对.
AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法!. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯
The post AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  2. 力扣刷题获得一件衣服奖励(Leetcode DCC Winner) 我每天都在力扣上刷题。力扣有国服和美服,我两边都会打卡。每天打卡可以获得积分,而积分可以兑换各种礼物,比如T恤、卫衣、水壶,甚至可以用来抵扣一个月的会员费用。 我从2018年8月开始刷题找工作(当时去伦敦面试亚马逊),从那时起每年都会续费会员,费用是159美元,相当于每月13.25美元。我觉得这是对自己最值得的投资。买了力扣会员,就会有动力刷题、思考,通过不断练习让自己熟能生巧,保持一定的竞争力。 到目前为止,我已经用积分兑换了7-8件力扣的衣服,其中有2-3件是卫衣。国内的礼物我都寄到姐姐家。 前不久,我收到了力扣的邮件,说我获得了DCC奖励。我也不知道为什么会获得这个奖,随手回了邮件。没多久,就收到了一件新版的力扣衬衫。 英文:Leetcode DCC Winner T-shirt 本文一共 291 个汉字, 你数一下对不对. 力扣刷题获得一件衣服奖励(Leetcode DCC Winner)....
  3. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  4. 你要找什么样的老婆? 找媳妇的标准 昨天和网友在剑桥面基, 网友奔现, 他从爱尔兰过来, 小我12岁, 就聊到了找对象的标准. TLDR; 找老婆不要(只)看颜值, 而要注重性格, 为人处事和顾家等更重要的品质, 当然性和谐也很重要. 在当今社会, 人们对于找伴侣的标准有所不同. 有些人认为颜值是最重要的, 因为外貌吸引力可以让人在日常生活中感到愉悦, 这是人的本性,...
  5. 送值400 英镑的Google Adwords广告代金券 很久之前, 我用过 Google AdWords, 当时也是拿着免费送的 Credit, 但由于某些原因, 就没继续再用下去. 这次谷歌又发邮件送了400英镑的广告点券/代金券, 如果您想要获得 400 英镑的 Google AdWords 信用额度试用这个Google...
  6. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  7. 吉卜力风格照片(持续更新) 一些(老)照片用AI的这个功能改改后还能再发一次朋友圈,哈哈。主要是年纪渐长,照片用美颜又太假,发真实照片又惨不忍睹,用这个风格正正好。我朋友圈就看到有很多这样的照片,其实挺好,记录生活,很俏皮可爱。 还是ChatGPT 4o的效果最好,有时候不满意,还可以让AI多生成几个,AI就是个乙方,而且没有脾气,想要几个版本就给几个版本,设计师真的要失业了: 这个帖子就不发原图了,辣眼睛。AI画师上岗,日常秒变番剧现场! PS:Grok 3的效果不怎么样,其它AI好像没这个功能,比如 Google Bard, Deep Seek, 阿里Qiwen。只会和我说文字描述怎么改图片。 免费的用户一天目测可以转换三张照片! 本文一共 236 个汉字,...
  8. 特朗普2.0: 乌克兰的命运由美俄决定, 欧洲被卖了 2025年1月,美国总统唐纳德·特朗普第二次入主白宫,上任没多久就兑现了一个竞选承诺:结束俄乌战争。不过,这场停战的达成方式,恐怕让不少人大跌眼镜——谈判桌上只有美国和俄罗斯,乌克兰这个直接当事国没份儿,欧洲那些出了力气的盟友也没捞到一张椅子。结果呢?俄美两国一拍即合,停战协议新鲜出炉:土地归俄罗斯,乌克兰的5000亿矿场开发权打包送给美国,债务甩给欧洲,至于荣耀嘛,留给乌克兰自己慢慢品味。 这协议一公布,乌克兰总统泽连斯基的脸估计比冬天还冷。他对外抱怨说,美国其实只给了670亿美元援助,压根不到之前吹嘘的1500亿。可协议上白纸黑字,5000亿矿场开发权已经划给了美国。他试图争取点什么,比如让乌克兰上桌谈条件,至少要求美国保障乌克兰的安全,再不济也给欧洲分一杯羹——毕竟欧洲这些年没少支援战争。可特朗普的回应简单粗暴:签,或者不签,协议一个字都别想改。泽连斯基还想退一步谈谈,特朗普直接笑他是个“小丑”,说当年演喜剧的水平不错,现在支持率却跌到4%,再不同意就赶紧大选,换个听话的上台。 这事儿说白了就是“弱国无外交”的教科书案例。乌克兰夹在俄美之间,既没实力还牌面,又被盟友卖了个干净。欧洲这边也好不到哪儿去,一盘散沙的他们只能眼睁睁看着美国独吞好处,自己还得背上债务的锅。特朗普上台后更是摆明了态度:拜登那摊子事儿(民主党?左派政策?)他不管,他只关心自己的利益。甚至还放话让乌克兰赶紧还钱,不然“你的国家可能就不存在了”。 这场停战,看似结束了炮火,实则暴露了大国博弈的冷酷逻辑。俄罗斯拿回了土地,美国吃下了资源,欧洲当了冤大头,乌克兰则成了最大的输家。泽连斯基或许还想挣扎,但现实已经给了答案——在强国面前,弱国的声音,连上桌的资格都没有。 懂王骂泽连斯基 想想看,一个只是勉强算得上成功的喜剧演员——弗拉基米尔·泽连斯基,竟然让美国花费了 3500 亿美元,卷入了一场不可能赢得的战争——一场本不该开始的战争,而这场战争,如果没有美国和“特朗普”,他永远无法解决。 美国比欧洲多花了 2000 亿美元,而欧洲的钱是有保障的,而美国却什么都拿不回来。为什么“瞌睡乔”拜登不要求公平呢?这场战争对欧洲来说比对我们重要得多——我们之间隔着一片广阔美丽的海洋。 除此之外,泽连斯基还承认,我们送给他的一半钱“不翼而飞”。他拒绝举行选举,在乌克兰的民调支持率极低,他唯一擅长的事情就是把拜登“耍得团团转”。 一个没有选举的独裁者,泽连斯基最好快点行动,否则他很快就不会再有国家可言。与此同时,我们正在成功地谈判结束与俄罗斯的战争,所有人都承认,只有“特朗普”和特朗普政府能做到这一点。拜登从未尝试过,欧洲也未能带来和平,而泽连斯基可能只是想让“提款机”继续运转。 我热爱乌克兰,但泽连斯基做得一团糟,他的国家满目疮痍,数百万人不必要地死去——一切仍在继续…… 打了三年的俄战争终于要结束了...

字字珠玑

作者 楚书业
2025年3月30日 06:17

最近文稿处理较多,看啥字都觉得挺有韵味的!

字体库

作为不专业的切图仔,接触字体挺正常的。

文字九万出,字字为珠玑。

一套常规的字库通常有6000多字,能达到1-2万字的甚是难得了,只能说开发字体的设计师是有真毅力!
当然,随着科技发展,现在已经有AI造字软件了,通过寥寥几字就能模拟、推演出一套六千字的字库,完全是分分钟的事儿!

刻本美

永远可以相信老祖宗的审美。
远的不说,就提字!
活字印刷出来的书籍,随便翻翻哪本不是古韵十足。明刻本、清刻本的宋体字,从天头地脚到版心界行……美滴呀!

电脑自带的常见宋黑仿楷,要挂上中易二字。当然,它们并不是免费可商用的!与它们齐名的华文宋黑仿楷,亦是!
但不可否认这八款字库,量大管饱,适应各类用字场景!

力扣刷题打卡2209天竟然断了, 哎


坚持6年的力扣刷题打卡作天断了。昨天开了一整天brainstorming 晚上陪媳妇过生日。然后就给忘了,还好的是力扣国服还没断。

2019年3月2日 我在美国通用电气午休的时候太无聊 拿起IPAD就刷了一题。

谁曾想:这一刷就是2209天。这六年时过境迁,很多事情物是人非。我也从美国通用电气GE(General Electric)到亚马逊 Amazon AWS 再到现在的微软剑桥研究院MSRC。

leetcode-2209-days-streak-ended 力扣刷题打卡2209天竟然断了, 哎 程序员 编程 计算机 计算机

力扣刷题打卡2209天 始于2019年3月2日,终止于2025年3月19日,可惜了。

力扣每日一题打卡是可以补签的,只需要花70点积分就可以 Time Travel 回到本月补上一签。只不过那个墙是补不了的,没刷就是空的。

leetcode-from-2013-to-2024-scaled 力扣刷题打卡2209天竟然断了, 哎 程序员 编程 计算机 计算机

从2013年到2024的力扣刷题之路。

力扣美服是可以同步到国服的,但是目前是没有办法反过来把国服的刷题记录复制一份到美服的。可能,这就是注定的吧,肯定会有不完美的。还好我不是处女座,这么一点不完美不会逼疯我的,哈哈。我还是会继续刷题的。刷题努力提升自己,好处多多。

刷题:程序员的基本技能

本文一共 410 个汉字, 你数一下对不对.
力扣刷题打卡2209天竟然断了, 哎. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 力扣刷题打卡2209天竟然断了, 哎 程序员 编程 计算机 计算机
The post 力扣刷题打卡2209天竟然断了, 哎 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. SteemIt 高级定制微信文章列表 RSS/API/阅读器 v2.0 The Advanced Wechat Group Posts Feed/API/Reader v2.0 Abstract: I have added five parameters to the...
  4. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  5. 编程: NodeJs/Javascript 函数检查Tron/波场区块链上的交易是否已确认(TronGrid API) 我们想知道给定的交易是否已经在 Tron/波场 区块链上确认,这可以通过 TronGrid API 轻松实现。 为了确保交易在Tron/波场区块链上被确认,验证逻辑应关注交易的状态,这表明交易是否已被 Tron 虚拟机(TVM)成功处理。以下是正确的验证方法: 检查 receipt.result 验证交易成功的主要标志是 receipt.result 字段。值为 “SUCCESS”...
  6. 比特币最近波动有点大: 一天牛市一天熊 比特币10万美金以内都是最后上车的机会! 比特币近期的价格波动可以归因于多个关键因素,包括地缘政治动态、监管变化以及加密行业内的重大安全事件。其中一个主要影响因素是美国前总统唐纳德·特朗普对乌克兰和加密货币监管的立场变化。据报道,特朗普再次当选,他可能会推动减少美国对乌克兰的支持,这可能会影响全球金融市场和风险偏好。同时,特朗普正在将自己塑造为亲加密货币的候选人,表示有意让美国成为一个更加友好的加密货币环境。这一立场引发了市场对监管政策可能发生变化的猜测,导致市场情绪在乐观和不确定性之间波动。 特朗普对俄乌战争的态度 美国第43届总统唐纳德·特朗普已经在2025年1月当选并正式上任(第二次),那么他的政策可能会对比特币价格的波动产生更加直接和显著的影响。他政府对乌克兰和加密货币监管的立场已经不再是猜测,而是正在实际塑造市场的关键力量。 特朗普(Donald Trump)减少美国对乌克兰的支持,全球投资者可能会预期地缘政治稳定性发生变化,从而增加对比特币作为避险资产的需求。同时,他的亲加密货币立场可能正在推动市场的乐观情绪。如果他的政府推出有利于加密行业的监管政策,例如明确的合规指南或减少监管审查,可能会吸引更多机构投资者进入市场,并促进更广泛的加密货币采用。然而,政策的快速变化也可能导致短期市场剧烈波动,因为市场需要时间来消化新的政策动向。 朝鲜黑客盗取Bybit交易所15亿美元的ETH 另一个显著影响比特币价格的事件是近期涉及朝鲜黑客组织“Lazarus”的15亿美元以太坊被盗案件。据报道,Bybit交易所(全球第二)这些被盗的ETH已经被清洗,此次大规模黑客攻击引发了人们对加密行业安全性的担忧。此类安全事件不仅会削弱投资者信心,还可能引发更严格的监管审查,导致短期市场动荡。此外,被盗资金的大规模流动和出售可能对市场流动性造成冲击,进一步加大价格波动。随着这些事件的持续发酵,比特币价格正受到政治决策、监管预期以及安全挑战等多重因素的影响。 与此同时,与朝鲜黑客组织 Lazarus 相关的 15 亿美元以太坊被盗事件仍在影响加密市场。由于这些被盗 ETH 已被清洗,人们对加密行业安全漏洞的担忧持续存在,同时也可能引发更严格的监管审查。政治、监管和安全等多重因素交织在一起,共同导致了比特币近期的剧烈价格波动。...
  7. 在英国带孩子去露营全攻略 之前就做了一些露营的准备工作, 因为大儿子Eric 很兴奋说是要去 Camping Holiday 估计是在 Papa Pig 里看到的. 英国有很多可以露营的地方, 最后面选了一个离家开车1个多小时. 看了评论还不错. 地址为: New Road,...
  8. 面向猫猫编程 Cat Oriented Programming (Chessly/Pyro这一生持续更新) 家里有两只猫 Chessly/Pyro,想着找个地方记录它们的生活,最后决定还是写在这里的博客。猫的一生很短,差不多也就二十年。 Chessly(黑白猫)是我加入微软剑桥研究院MSRC第一个月带回家的,过了两三个月,又把Pyro(橘猫)也接回了家。两只猫的名字是孩子们取的:Chessly因为黑白的像棋盘,加上“ly”听起来像个女孩的名字;而Pyro的意思是一团火(烟火),充满活力。 刚开始的时候,Chessly特别喜欢待在我的工作区域。她有时候趴在键盘上或旁边,有时候藏在显示器后面。偶尔还会绕到我身边“咕咕”地撒娇,等着我去摸她。有时更干脆跑到我腿上,舒舒服服地躺着。 不过,现在它们俩的体型都大了很多,躺在桌上就会挡住屏幕,真是“面向猫猫编程”(Cat Oriented Programming)的极致体验。 记录生活的点滴,也是一种珍惜,毕竟这二十年,我们会一起走过。 2024年 2025年 Ring视频:两猫日常就是打闹,Chessly追上Pyro想舔他,在猫的世界里,地位高的才能舔地位低的。 我家猫现在越来越胖,很喜欢在我工作的时候躺在显示器钱,很影响我的工作,不过这时候我就是会休息一下摸摸她,就当放松一下了。 Pyro在窗边喝水,这是个小的煮饭锅,现在不用了,就给猫当喝水的碗。Pyro很胆小,经常看到我就跑。没法跑就咕咕叫。 Chessly很喜欢陪我工作,然后她很好厅的盯着屏幕上的鼠标光标,真怕她把屏幕抓坏了。 哥哥弹琴,弟弟唱歌,Chessly午睡,真是幸福啊,下辈子做只猫吧。...

写了十几年代码, 谷歌/Google认为我还不够Senior


google 写了十几年代码, 谷歌/Google认为我还不够Senior 程序员 面试

Google/谷歌

我儿子也说我不够Senior

去年9月,我第三次面试伦敦谷歌,目标是一个SRE(站点可靠性工程师)职位,抱着试试看的心态参加了面试。第一轮面试的最后两分钟,回答了一个关于如何将算法应用于分布式系统(如何优化算法)的follow-up问题,表现得不太好,因此没能通过那一轮。

不过严格来说也不算被拒绝。等了三周后,他们告诉我最终选择了另一位候选人,虽然我的表现不是最出色的,但应该达到了最低门槛,所以并未直接拒掉我,而是建议我等待伦敦的其他职位空缺再申请。

这一等就到了12月。这位谷歌的美女猎头联系了我,很快安排了隔一周的两轮算法与编码面试。新年后还有两轮:一轮系统设计,一轮文化匹配(也就是行为测试)。

navigated-to-google-final-interviews-stage 写了十几年代码, 谷歌/Google认为我还不够Senior 程序员 面试

在2024年年末再一次收到Google Recruiter的消息,说伦敦有HC可以继续面试了。

这是我第二次进入谷歌的终面(Final Rounds),也就是 Onsite Interviews。

谷歌终面:接近L5却被给L4,大饼画得响

面试结束后的第二周,我发了邮件询问结果,但没收到任何回复。又过了一周,还是毫无消息。我一度以为自己被拒绝了,甚至怀疑是不是发挥太差,谷歌连拒信都懒得发给我。

上周(面试后的第6周),突然就接到猎头的邮件,她说:

I hope you’re keeping well! Apologies for my delay I’ve been unexpectedly out the office.
Your feedback isn’t straightforward, and getting the feedback through hasn’t been straightforward either.
Would you have some time to connect and discuss further together please?

希望你一切安好!抱歉我回复晚了,我出乎意料地不在办公室。
你的反馈并不直接,而且反馈的传递也并不直接。
你能抽出时间联系一下,进一步讨论一下吗?

google-interview-feedback-email 写了十几年代码, 谷歌/Google认为我还不够Senior 程序员 面试

谷歌的这封邮件让我感觉其实没有我想象中的糟糕。

问了ChatGPT:这封邮件表明你的谷歌面试结果并不是一个明确的“通过”或“拒绝”。以下是可能的情况:

  • 面试反馈不一致:一些面试官可能给了积极反馈,而另一些则有疑虑,导致最终决定难以达成。
  • 招聘委员会仍在讨论:你的情况可能需要额外的讨论,招聘委员会正在评估你的表现,招聘官希望与你沟通他们的想法。
  • 团队匹配考虑:如果你的表现不错但未达到直接通过的标准,他们可能在考虑是否有合适的团队愿意接收你。
  • 可能需要额外面试:谷歌有时会安排额外的面试(例如“加试”或“Googleyness 轮”),以消除对你的某些疑虑。
  • 招聘官希望亲自传达更细致的信息:可能不是简单的拒绝或录取,而是希望与你深入探讨你的表现,提供反馈,甚至讨论其他可能的机会。

由于招聘官之前一直不在办公室,内部流程可能有所延误,所以这封邮件并不一定是坏消息。建议你做好心理准备,保持开放的心态,迎接各种可能的结果!

谷歌终面的两轮算法

这两轮算法题有些难度,不是力扣/LeetCode上的原题。题目不算太复杂,还带有follow-up问题。我给出了多种解法,自认为发挥得不错。

其中一题是设计一种数据结构,另一题是实现一个API。单纯的实现(穷举)并不难,难点在于如何优化,比如如何利用线段树/Segment Tree、二分搜索等技巧提升算法效率。

谷歌终面的系统设计

系统设计这一轮我感觉表现得很糟糕。特别是面到一半的时候,我觉得自己思路不畅,像是没戏了。

面试开始时,我虽然问了功能性和非功能性需求(Functional/Non-functional Requirements),但后来忘了用于计算,导致我的设计不够优化的同时,还陷入局部优化的误区,花了太多时间。直到面试官给出提示,我才反应过来并调整到正确的设计。

这一轮系统设计一个小时很快过,但是很多时间花在了纠结在怎么在不成熟的设计上打补丁,导致于后面虽然在提示后能设计出来也没有太多时间讨论了。

一般来说,系统设计是决定软件工程师Offer级别的,而相反,对于Coding/编程能力,各个级别是要求差不多的,甚至可以说,高一点的级别对于编码能力会稍微的低一些。

级别高的软件工程师需要有更强的设计能力,更需要掌握大方向(Big Picture)。

谷歌终面的行为测试(Behavior Interview)

这一轮更奇怪。面试官迟到了五分钟才上线,一开始就说只问三个问题。回答完后,整个面试不到20分钟。我尝试多提了几个问题想聊聊,结果家里网络不稳定(可能与路由器有关),竟然掉线了。幸好重新连上时面试官还在,但简单说了两句后就草草结束了,感觉不太顺利。

谷歌面试反馈

由于系统设计表现不佳,我之后发邮件其实是想获取一些反馈(Feedback)。面试最重要的就是反馈,因为它能帮助你进步。最近面试伦敦Jane Street被拒要反馈没给,我家孩子同时拿到两个offer后,我也给学校发了邮件要反馈,这些都是很有用的信息。

反馈结果和我预想差不多:系统设计需要提示才能完成;代码写得有些仓促,带有BUG,但能提供多种解法;文化匹配方面没太大问题,但面试官没找到我能激励同事的“强信号”(有点疑惑?No strong signals to show that you can encourage your peers)。一直以来,我认为这一轮并没有啥出彩的东西,只要没有触犯一些Red Flags就可以了,没想到这一轮也能决定最后面的级别。

美女猎头告诉我,面试整体反馈是好坏参半,感觉我接近L5水平,但还需稍作打磨(Polish)。他们愿意给我L4的offer,问我愿不愿意去。我当然拒绝了……她说:“确实,It doesn’t make sense。”她的意思是,如果我以L4入职谷歌,很快就能升到L5——这话画了个大饼。据朋友说,谷歌也和AMAZON一样,喜欢Low Ball(降一级给Offer),千万别信这种大饼。

Google的L5是Senior,L4是Mid-level。我现在在微软剑桥研究院 MSRC是63,对应是谷歌的L5,而之前在亚马逊是L5对应的是谷歌的L4=mid level。

她还说,如果6个月后我愿意再试,可以直接联系她。一般来说,水平不够直接被拒,需要等12个月的冷冻期才能够再次申请。

面试经历

面试题

面试技巧

面试其它

英文:Google Finals: Close to L5, Offered L4, and a Big Pie in the Sky

本文一共 1938 个汉字, 你数一下对不对.
写了十几年代码, 谷歌/Google认为我还不够Senior. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 写了十几年代码, 谷歌/Google认为我还不够Senior 程序员 面试
The post 写了十几年代码, 谷歌/Google认为我还不够Senior first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  4. STEEM SQL 系列之 每个月到底能挣多少? @jubi 大哥一直说要靠 STEEMIT 来买别墅, 这梦想很好, 却遥不可及. 对我来说, STEEMIT的收入能让我改善一下生活, 但是远远到不了能养家糊口的主业. 使用 LINQPAD + STEEMSQL, 我们可以跑一下下面的SQL, 来看看我每个月在STEEMIT上的收入情况:...
  5. 避免选择低质量没保障的 VPS 公司 现在程序员基本都会有VPS服务器, 价钱也不贵, 一个月几美元, 随随便便就能申请个玩. 我自己这几年也玩了不少VPS, 现在手上大概有10台VPS, 用于不同的服务: 博客, 区块链, API等用途. 上两周, 其中一台服务器商 supremevps 突然发邮件 给两天时间,...
  6. 英国HSBC汇丰银行因为房子钢筋结构不肯放贷 上周五看了一个房子, 在剑桥市中心, 价格比同地区的房子便宜许多(几万英镑), 一个很大的原因是房子内部装修较破. 我本想着, 房子内部破无所谓, 反而将来升值空间较大. 房子主要是看地区: 我现在住的相对于剑桥市中心类似于河北相对于北京天安门. 4年前买房的时候并没有那么多钱, 而且时间也比较紧(当时从谢菲到剑桥也就两三个月时间准备), 所以也就选了一个剑桥的村庄里(但一点都不升值! ), 主要是看价格合适, 孩子上学也方便,...
  7. 三分熟的牛排 除了像早餐, Fish and Chip, 英国酒巴也是吃得到一些外来引进的食物,比如牛排.虽然一般的酒巴里的牛排 (Steak) 一般都不是很地道,表现在你要个三分熟的牛排基本上都是 烧熟了的给你.还有就是牛肉本身也有区别,嫩,而且要新鲜. 上周五发现一家巴西烤肉自助,刚上来的牛排就不错, 三分熟,新鲜,嫩.要是能有个红酒就再好不过了. 五分熟的可以说是 medium (cooked), well done...
  8. 公司给配了台高配DELL笔记本 早上例会结束的时候我顺便说了一句 我的笔记本有点慢, 当时我并不知道我的经理远程用电话也参加会议了(他全程在听), senior staff SE 对着电话说, “peter, you hear that? btw, my disks are...

Delphi编程语言三十周年了!


delphi-30-years Delphi编程语言三十周年了! Delphi / Turbo Pascal 程序设计 计算机 资讯

Delphi最初的版本, Delphi被称为是VB Killer

知道Delphi这个编程语言的估计暴露年龄了。很多人以为Delphi这门程序已经挂了,但实际上没有:IsDelphiDead.com

我最后一次用Delphi是2018年,在我离开一个剑桥初创企业,当时我从2009年到2018年,用Delphi写了超过40万行Delphi代码。其中包括了一些C++还有WIN32内链汇编。

Delphi 30周年纪念日

2025年,Delphi迎来了其发布30周年纪念日。自1995年首次亮相以来,Delphi凭借其高效、稳定的特性,成为众多开发者的首选工具。在这30年间,Delphi经历了辉煌、低谷,如今在全球范围内依然拥有忠实的用户群体。

Delphi的诞生与辉煌

Delphi最初由Borland公司于1995年推出,作为Windows平台下的快速应用程序开发工具(RAD),其前身是DOS时代盛行的“Borland Turbo Pascal”。Delphi以其可视化组件库(VCL)和高效的编译器,使开发者能够快速构建复杂的应用程序。在1999年发布的Delphi 5版本中,Delphi达到了用户数量的巅峰,一度超越了Visual Studio,成为开发者的首选工具。

挑战与低谷

然而,好景不长。在推出Delphi 7之后,Borland公司因内部管理问题和市场竞争激烈,逐渐走向衰败。Delphi的创始人Anders Hejlsberg离开公司,转投微软并开发了C#语言,这对Delphi造成了沉重打击。同时,Java和.NET等新技术的兴起,进一步挤压了Delphi的市场空间。高昂的定价策略也使得许多开发者转向其他工具,Delphi的用户群体急剧萎缩。

重生与发展

尽管经历了低谷,Delphi并未消失。在被Embarcadero公司收购后,Delphi不断进行技术革新,推出了支持多平台开发的版本,如Delphi XE系列。这些版本支持Windows、Android、iOS和Linux等平台,满足了现代开发的需求。在全球范围内,Delphi在巴西、中国、德国、俄罗斯和非洲等地仍然拥有广泛的用户基础。特别是在中国,Delphi在教育领域和企业级应用中依然发挥着重要作用。

展望未来

随着技术的不断发展,Delphi也在积极适应新的趋势。从最初的单一平台开发工具,到如今支持多平台、多设备的综合性开发环境,Delphi始终在追求创新。在未来,Delphi将继续优化其跨平台能力,提升开发效率,为全球开发者提供更强大的支持。

在这30周年之际,让我们向Delphi致敬,感谢它为全球开发者带来的卓越贡献。期待Delphi在未来继续引领技术潮流,为开发者创造更多可能。

聪明的程序员用Delphi

“真正的程序员用C++,聪明的程序员用Delphi”这句话曾在IT界广为流传,体现出Delphi简单、高效等优点。 Delphi最初的版本, Delphi被称为是VB Killer, 在Windows下可以快速开发Native的WIN32/64代码。代码执行效率高因为是编译(Compiled)的而不像VB解释式的(Interpreted)。

Delphi作为Windows平台下的快速应用程序开发工具(RAD:Rapid Application Development),以其简单、高效和功能强大的特点,深受开发者喜爱。与C++相比,Delphi更易于上手,开发效率更高;而与Visual Basic相比,Delphi功能更为强大。因此,使用Delphi的程序员被认为是“聪明的程序员”。

聪明的程序员用Delphi

Delphi(VB Killer)是一种编程语言,它是由Borland公司于1995年推出的。Delphi是一种基于Pascal的高级编程语言,它是一种面向对象的编程语言,它是一种结构化编程语言,它是一种事件驱动的编程语言。也被称为Object Pascal。

英文:Delphi is 30 Years Old!

本文一共 922 个汉字, 你数一下对不对.
Delphi编程语言三十周年了!. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c Delphi编程语言三十周年了! Delphi / Turbo Pascal 程序设计 计算机 资讯
The post Delphi编程语言三十周年了! first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 假期送娃去管弦乐队速成班 (Holiday Orchestra) 两个孩子除了学习钢琴外,还各自学习了第二种乐器:老大学的是大提琴,老二学的是小提琴。这个圣诞节假期,我们为他们报名参加了为期4天的管弦乐队速成班,从早上9点半到下午4点半,中间休息一小时,总费用为229英镑,第二个孩子享受了折扣。 在4天的速成班中,孩子们第一天觉得非常累,特别是下午的2小时以上的排练,他们不停地拉琴,手感非常酸。刚开始他们看谱较慢,一不小心就错过了几个音符,但他们都坚持下来,并在最后一天进行了完美的表演。 管弦乐队分为Strings和Bands等部分。其中,Strings包括大提琴、小提琴和BASS(一种体型较大的乐器,外形类似大提琴)。Bands则包括各种吹奏的管乐器。要加入Upper Strings,需要达到或超过五级水平,而Lower Strings则是面向未达到五级的孩子。因此,参加考级不仅是对学习音乐的一种监督,也能解锁更多的可能性。 在表演当天,孩子们穿着帅气,这是他们的高光时刻。唯一的遗憾是我们坐在正中间,但孩子们被其他孩子挡住了,所以拍照和录像的角度都不理想。表演的厅很大,下次我们应该尝试到二楼从上往下拍摄。 PS:照片是我用单反(加能 EOS 6D Mark II 加大三白70-200mm中长焦红圈镜头拍的) 本文一共 443 个汉字,...
  2. 高大上 CloudFlare Pro CloudFlare CDN 的免费帐号已经很不错了 很多免费的功能, 最主要是 可以无限添加站点 每个站点都可以用上免费的 Universal SSL 还提供网站节流 安全 提速等功能. 往往只需要1个按键就可以 对于大部分用户来说是非常有用和省心的. 我又败家了...
  3. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  4. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  5. 微博帐号被盗 昨天想上微博 才发现 密码怎么都不对 密码不可能记错的 就那几个试来试去没一个对的. 本以为是系统暂时的问题 今天 还是这样于是就用忘记密码找回登陆信息. 改了一个比较复杂的密码. 登陆上 发现 有一私信: 果真 帐号被盗了 也许是暴力破解...
  6. bidvertiser的广告收入: 2年10美元 2013年申请了一个 bidvertiser 的广告 类似 google adsense, 不过是 Pay Per Click 按次点击付费的. 这个月收到了最低付费标准的 10美元 Paypal 并没有扣手续费....
  7. 老婆代购 – 畅购英伦 更新: 全新的 代购网站 畅购英伦 上线了! 求推广, 求转发, 求收藏! 多多使用 多多提建议! 我因为懒 而且还有其它原因 是不愿意做代购的. 我老婆最近在计划做代购的事情 因为老大下个月就上幼儿园了...
  8. 快通过 PAYPAL ME 捐点给我吧 PAYPAL在西方国家 很是流行 国内的山寨PAYPAL就是支付宝. PAYPAL 的好处就是 在英国和银行转帐 免费的. 转帐的速度很快. 几乎是几秒就转到了我的HALIFAX银行. PAYPAL和EBAY还真是一伙的 之前在EBAY上卖 需要交 10%的费用 PAYPAL费用 还有EBAY的上架费....

软件工程师可以去的几家大厂(面试难度/薪资)


软件工程师都应该去面面顶级科技公司,不同公司的难度和录取率差异巨大。以下是对 Google、Microsoft、Meta、Amazon、Apple、TikTok(字节跳动)、Netflix 和 Jane Street 录取难度的分析,以及估算的 Offer 接受率。

大厂的福利较好,有份大厂的经历/经验在找下一份工作的时候会比较加分,毕竟大厂是Proven Record。

一般来说,微软/Microsoft是软件公司,但是微软也有Azure云。微软的挣钱项目比较多,不像谷歌苹果还有NetFlix比较单一。

公司 Offer 接受率 难度等级(1-10) 关键因素 平均薪资(总包)
Google ~0.2% – 0.5%(1/200 – 1/500) 9.5 算法、系统设计、高文化门槛 $300K+(L4,美国)
Microsoft ~1% – 2%(1/50 – 1/100) 7 系统设计、实用编程、资深友好 $200K – $250K(L60,美国)
Meta ~0.5% – 1%(1/100 – 1/200) 9 DSA 重度考察,节奏快 $300K+(E4,美国)
Amazon ~2% – 5%(1/20 – 1/50) 6.5 领导力准则、招聘量大 $180K – $220K(L5,美国)
Apple ~0.5% – 1%(1/100 – 1/200) 8.5 系统优化、底层开发 $250K – $300K(ICT3,美国)
TikTok(字节跳动) ~0.3% – 0.8%(1/125 – 1/300) 8.5 算法、分布式系统、推荐系统 $250K – $350K(L4,美国)
Netflix ~0.3% – 0.7%(1/150 – 1/300) 8.5 高代码质量要求,强调自驱力 $400K+(Senior,美国)
Jane Street ~0.05% – 0.1%(1/1000 – 1/2000) 10 量化交易,数学 & OCaml $400K – $700K+(New Grad,美国)

FinTech介绍

金融科技(FinTech)是金融(Finance)与科技(Technology)的融合,利用创新技术(如人工智能、大数据、区块链和云计算)来优化金融服务,提高效率并降低成本。FinTech 涉及支付、借贷、财富管理、保险、量化交易等多个领域,为个人和企业提供更便捷、安全的金融解决方案。从数字银行到加密货币,从智能投顾到去中心化金融(DeFi),FinTech 正在重塑全球金融体系,引领行业向更加智能化和个性化的方向发展。

FinTech 这个概念更广泛,不仅包括量化交易,还涉及 支付、数字银行、加密货币、去中心化金融(DeFi)、智能投顾(Robo-Advisors) 等多个领域。

Jane Street 简街介绍

JS/Jane Street是金融公司,听说给得钱超级多,刚毕业的就能在JS拿到200多K。JS是很有名的FinTech,可以说是FinTech里的Google。

Jane Street 可以算是 FinTech 领域的一部分,尤其是在 量化交易(Quantitative Trading) 和 高频交易(HFT, High-Frequency Trading) 方面。

Jane Street 主要是一家 量化交易公司和流动性提供商,他们利用复杂的数学模型、统计分析和高性能计算来进行自动化交易,属于 金融科技(FinTech) 的 量化金融(Quantitative Finance) 领域。

相比传统的 FinTech 初创公司(如 Stripe、Square、Revolut),Jane Street 更偏向 科技驱动的金融公司(Tech-driven Finance),但仍然属于 FinTech 生态的一部分。

Offer 接收率对比

Amazon 和 Microsoft 的 offer 接收率较高,分别在 2%-5% 和 1%-2%。相比之下,Google、Meta 和 Apple 的接收率较低,通常在 0.2%-1% 之间。而 TikTok、Netflix 介于二者之间,Jane Street 则最难进,接收率仅有 0.05%-0.1%。

难度对比

Jane Street 以 10 分的难度位列榜首,考察数学、概率和 OCaml 编程。Google 和 Meta 也极具挑战,尤其是算法和系统设计。Amazon 和 Microsoft 相对友好,招聘规模较大,门槛相对较低。

关键因素对比

各公司关注的重点不同:Google 和 Meta 主要考察数据结构与算法;Amazon 强调领导力准则;Apple 偏向底层开发;TikTok 重点关注推荐算法;Netflix 强调自驱力和代码质量;Jane Street 则高度依赖数学和函数式编程 Functional Programming (JS用的是OCAML语言)。

薪资对比

Jane Street 和 Netflix 薪资最高,新人起薪可达 $400K+。Google、Meta、TikTok 也非常可观,L4 级别的薪资可达 $300K+。Apple 和 Microsoft 稍低,而 Amazon 的薪资在入门级别(L5)相对较低,但晋升后可大幅增长。

如何提升成功率?

  1. 数据结构与算法 Google、Meta、TikTok 等公司对算法要求极高,Leetcode 刷题是必备的。
  2. 系统设计: Amazon、Microsoft 以及 Google 的高级岗位会重点考察系统设计能力。
  3. 行为面试: Amazon 的领导力准则、Googleyness 文化匹配都很关键。
  4. Netflix 文化契合: 强调自驱力,代码质量要求高,需要有很强的独立解决问题能力。
  5. 数学与概率: Jane Street 对数学、概率、统计、OCaml 编程要求极高。

TikTok 招聘特点

  • 字节跳动/抖音/近年大力扩招,但标准仍然严格,竞争激烈。
  • 重点考察数据结构与算法,面试风格类似 Google。
  • 对机器学习、推荐算法、分布式系统有较高要求。
  • 文化适配也很重要,字节强调“Owner 意识”(Ownership)。

总结

如果目标是 高薪 + 难度适中,TikTok 和 Netflix 可能是不错的选择。如果你追求 顶级薪资 并愿意挑战数学与编程的极限,Jane Street 是最终目标。如果你想加入 FAANG,Google、Meta 仍然是最好的选择,但难度较高。

软件工程师

英文:Software Engineering Companies: Which Company Pays Most? and Which Company Is Hardest to Get In?

本文一共 1260 个汉字, 你数一下对不对.
软件工程师可以去的几家大厂(面试难度/薪资). (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 软件工程师可以去的几家大厂(面试难度/薪资) 程序员 资讯
The post 软件工程师可以去的几家大厂(面试难度/薪资) first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. ChatGPT 使用 Promise.All 重构/重写代码(并行发送请求) 在我的一个项目中, 我有以下代码(Node/Javascript), 它(顺序)调用了一些 API. 这些 HTTPS 请求其实是可以并行完成的, 因为它们相互独立. 然后结果会被聚合到一个数组中. 我知道可以用Promise.all来把这些请求并行化, 我就问了ChatGPT怎么弄, 看看它是否能理解并给出正确的代码: 我先用英文问 ChatGPT-3.5: Rewrite...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 推荐一款程序员性价比高的机械键盘 KeyChron K8 程序员性价比高的机械键盘 Keychron 我第一款 keychron 键盘是四年前(2020年)买的,当时在AMAZON工作,通过公司经费报销的。当时还问了经理,需要节俭么?因为亚马逊的16条军规中的一条就是节俭/Frugal。当时经理说,只要能提高你的工作效率就行,我也没太敢搞太贵的,最后面只挑了一个60多美元的机械键盘,型号是: Keychron C2 Wired Mechanical Keyboard, RGB Backlight / Gateron Mechanical...
  4. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  5. 区块链中Layer 1和Layer 2协议的简介 Layer 1 和 Layer 2 是用来描述区块链技术中不同层次或层的术语,每个层都在维护和扩展区块链网络方面有其独特的作用和特点。 Steem的底层协议是C++写的,也就是steemd,见证人(也就是STEEM上的矿工)在自己的节点服务器上跑这个软件,共同运行这个区块链。steemd上支持一个custom_json操作,也就是可以调用API向区块链上写任何数据,这样的话,DApp分布式应用程序就可以在STEEM区块链上存储数据了,而在custom_json上的协议就是Layer 2/第二层。 Layer 1:基础协议 Layer 1 指的是区块链网络的基础层。它包括定义网络规则和操作的核心区块链技术。Layer 1的关键特性和组成部分包括: 共识机制...
  6. Docker, 虚拟机 (VM) 和 Kubernetes (K8s) Docker 与虚拟机(VMs) 概述:Docker和虚拟机(VMs)都用于在隔离的环境中部署和运行应用程序,但它们的实现方式不同。 Docker(容器) 轻量级:容器共享主机的操作系统内核,因此比虚拟机更轻便,启动速度更快。 隔离:Docker 提供进程级别的隔离,意味着多个容器可以在同一个操作系统实例上运行而不会相互干扰。 高效性:由于容器共享操作系统,只需打包应用程序及其依赖项,因此使用的资源更少。 虚拟机(VMs) 重量级:每个虚拟机包含一个完整的操作系统实例和虚拟化硬件,因此消耗更多的资源。 隔离:虚拟机提供完全的隔离,每个虚拟机拥有自己的操作系统,这样更安全但效率较低。 使用场景:虚拟机适用于在同一主机上运行多种操作系统类型,是需要完全操作系统级别隔离的传统应用程序的理想选择。 总结:Docker 容器更高效且部署更快,而虚拟机提供更强的隔离,更适合多样化的操作系统需求。 什么是...
  7. 怎么样安全的清空主机服务器空间? 很多朋友都有自己的VPS主机, 如果想取消销毁主机的时候, 可以采用以下二种方法来销毁主机. 虽然很多云主机可以让你很方便的一键销毁主机, 但是实际上你不清楚你的宝贵数据有没有可能被找回, 理论上可能, 这种可能性很小很小. 因为我们并不清楚云主机商在销毁的时候有没有真正去把硬盘的数据清空了. 像我有点强迫症的, 我就是不希望我的一些数据(比如啥爱情动作片)泄露了. rm -fr / LINUX上的这个命令: 1...
  8. 互联网大厂的 PIP 裁员计划 互联网大厂的 PIP 裁员计划...

如何轻松创建并托管你的 GitHub Pages 站点 (无服务器静态应用)


创建一个 GitHub Pages 站点是一个简单的过程,可以免费为你的个人、项目或组织创建网站/博客。按照此指南开始。

步骤 1:创建 GitHub 仓库

  • 登录你的 GitHub 账户。
  • 点击“新建”来创建仓库。
  • 对于个人站点,命名为 .github.io。
  • 对于项目站点,使用任何有效的名称。

步骤 2:添加你的站点文件

使用以下命令克隆仓库到本地机器:

git clone https://github.com/<username>/<repository-name>.git

创建一个 index.html 文件,包含你想要的内容。这里是一个例子:

<!DOCTYPE html>  
<title>我的 GitHub 页面</title>
<h1>欢迎访问我的站点</h1>
<p>这是我的第一个 GitHub Pages 站点。</p>

或者,你可以使用 README.md(Markdown)作为首页。

## 我的 Github 页面
### 欢迎访问我的站点
THis is my first Github Pages site.

将你的更改提交并推送到 GitHub:

git add .
git commit -m "Initial commit"
git push origin main
how-to-setup-github-pages-static-apps 如何轻松创建并托管你的 GitHub Pages 站点 (无服务器静态应用) Github 学习笔记 小技巧 程序设计 网站信息与统计 计算机 计算机

Github 上启用 Github Pages 的步骤

步骤 3:启用 GitHub Pages

  • 转到你的仓库设置。
  • 在侧边栏点击“Pages”。
  • 在“源”下选择分支(例如,main)和文件夹(如果适用)。
  • 点击“保存”。

步骤 4:查看你的站点

  • 对于个人站点:访问 https://<username>.github.io/。
  • 对于项目站点:访问 https://<username>.github.io/<repository-name>/。

步骤 5:自定义你的站点

要添加主题,请转到 Pages 设置并选择“选择一个主题”。

你还可以上传额外的 HTML、CSS 和 JavaScript 文件以进行进一步的自定义。

为什么 GitHub Pages 是“无服务器静态应用” / Serverless Apps

GitHub Pages 作为无服务器静态应用运行,因为它们直接向用户提供预构建的静态 HTML、CSS 和 JavaScript 文件,而不依赖后端服务器或运行时动态内容生成。相反,这些文件托管在 GitHub 的全球内容分发网络(CDN)上,确保快速有效的交付。

优点:

  • GitHub 提供的免费托管。
  • 不需要服务器维护。
  • 由于 CDN 分布,加载速度快。
  • 简化了静态站点的部署和扩展。

缺点:

  • 仅限于静态内容;不支持像数据库这样的服务器端功能。
  • 高级工作流的自定义需要技术知识。
  • 依赖于 GitHub 的基础设施。

GitHub Pages 的总结

GitHub Pages 是一个令人赞叹的免费托管网站的工具。只需几步,你就可以为你的项目、作品集或个人使用创建一个站点。通过利用无服务器模型,你可以构建轻量、高效且维护最小的站点。

英文:How to Setup and Create GitHub Pages (Serverless Static Apps)

本文一共 587 个汉字, 你数一下对不对.
如何轻松创建并托管你的 GitHub Pages 站点 (无服务器静态应用). (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 如何轻松创建并托管你的 GitHub Pages 站点 (无服务器静态应用) Github 学习笔记 小技巧 程序设计 网站信息与统计 计算机 计算机
The post 如何轻松创建并托管你的 GitHub Pages 站点 (无服务器静态应用) first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 英国房子的EPC节能报告(Energe/Efficiency Performance Certificate) EPC (Energe/Efficiency Performance Certificate) 是英国房子的节能报告, 法律上规定, 每个房子都必须要有一个EPC报告, 报告的有效期为十年. 房东在把房子出租或者想卖房的时候, 这个EPC就必须有效, 在一些情况下 比如出租房子的时候, 这个EPC报告还必须符合一些最低标准, 比如房子必须满足 F档(类似及格线)...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 最好的发财策略就是忘记它 在群里我和 @nationalpark 说到我用STEEM换了3000多个 YOYOW的时候我还有点沾沾自喜, 谁知道他一针见血: 听说你是steem换的我顿时心理平衡了 才突然想起来, 我半个月前是拿 500 个 STEEM 换了 将近3300个YOYOW. 今天 STEEM的价格8美元,...
  4. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  5. 英国TESCO超市有偿回收瓶子 前不久, 英国剑桥 Bar Hill 的的 TESCO乐购超市推出了一个回收瓶子的机器, 这机器就在超市入入口出. 只需要把瓶子放进去, 机器自动识别, 然后每个瓶子10P也就是相当于1块人民币. 完成后会给个小票, 买东西可以拿来当折扣用. 如果嫌麻烦, 在回收完成还可以选择捐给慈善机构. 机器非常人性化,...
  6. 面试刷题更像是一种服从性测试 在许多求职者看来,面试中的刷题环节似乎是对技术能力的直接考察。然而,从另一个角度来看,这一过程或许更像是一场服从性测试。 想象一下,当一个公司要求候选人解决复杂的算法问题或设计一个系统架构时,真正的目的并不仅仅是判断候选人是否能完成这项任务。许多时候,公司更关心的是你是否愿意花时间和精力去迎合他们的流程和标准。 为什么这样说呢?从实际工作中来看,绝大多数岗位并不需要员工每天都在解决高难度的算法问题或从零设计分布式系统。相反,工作中的任务更偏向于理解业务逻辑、维护现有系统以及团队协作。那么,为什么刷题依然是很多公司青睐的筛选方式? 答案或许在于,刷题能有效筛选出那些愿意投入大量时间准备,并在面试中展现高度配合精神的候选人。这种配合精神,是公司希望在未来的工作中看到的品质。一旦你通过了这些测试,公司就会认为你是一个值得信赖的员工,一个能遵从流程、适应规则并在需要时投入额外努力的人。 还有就是以前说的:面试刷力扣是大公司过滤的成本较低的方法之一:为啥有名的IT公司的程序员面试都这么难?,可以过滤掉大部分 False Positive,当然也有可能过滤掉人才(胜任工作的求职者)。不过对于大厂来说,招进来一个False Positive的损害要远远比错过一个False Negative大。 此外,随着AI技术的飞速发展,刷题的技术价值正在逐渐降低。像ChatGPT这样的AI工具,已经可以轻松解决LeetCode或Codeforces上的许多高难度问题,并给出清晰的解题过程。这表明,算法题不再是人类独有的技术优势,而是可以被高效地自动化处理的任务。这种变化进一步凸显了刷题在实际工作中的局限性,因为日常工作更多依赖于沟通、业务理解和对系统的长期维护,而不是短时间内解决某个抽象问题。 OpenAI推出o3大语言AI模型。 Codeforces 评分:2727——相当于全球人类程序员编码竞赛中,排名第 175 位。...
  7. 英国 NatWest 银行推出 Reward Current Account 用来交水电费等帐单可以省钱 英国 NatWest 银行推出 Reward Current Account 银行帐号, 每个月需要交会费 3 英镑, 一年则需要36英镑 并不便宜, 但是好处是 只要通过该帐号以 Direct...
  8. 离开 NPower – 在英国选择便宜的电气公司 extraenergy 在彻底离开 谢菲尔得的那一天 和房东一起读了 电表, 公寓里只用电 没有媒气 所以做饭也用电 特别贵. 虽然在 13年底装了 两个电表. 白天一个 晚上 12点到早上7点另一个表, 所以两个计费....
❌
❌