侯捷 C++ 课程学习笔记:C++ 新标准 11/14 的革新与实战应用
在侯捷老师的 C++ 系列课程中,《C++ 新标准 11/14》这门课程让我对现代 C++ 编程有了全新的认识。C++11 和 C++14 是 C++ 语言发展史上的重要里程碑,它们引入了大量新特性,极大地提升了语言的表达能力和开发效率。侯捷老师通过深入浅出的讲解和丰富的实战案例,帮助我快速掌握了这些新特性,并将其应用到实际开发中。以下是我对这门课程的学习笔记和心得体会。
一、课程核心内容:C++11/14 的革新特性
侯捷老师的课程详细讲解了 C++11 和 C++14 的主要新特性,包括自动类型推导、初始化列表、移动语义、Lambda 表达式、线程支持库等。这些特性不仅提升了语言的灵活性和表达能力,还优化了性能和并发处理能力。
(一)自动类型推导(auto 和 decltype)
C++11 引入了 auto 关键字,允许编译器自动推导变量的类型。这大大简化了代码,尤其是当变量的类型较为复杂时。侯捷老师通过以下代码展示了 auto 的使用:
#include <iostream>
#include <vector>int main() {std::vector<int> vec = {1, 2, 3, 4, 5};for (auto it = vec.begin(); it != vec.end(); ++it) {std::cout << *it << " ";}std::cout << std::endl;auto value = 10; // 编译器推导类型为 intstd::cout << "Value: " << value << std::endl;return 0;
}
侯捷老师还介绍了 decltype 关键字,它可以用于获取变量或表达式的类型。这在模板编程中非常有用。
(二)初始化列表
C++11 引入了初始化列表,允许使用花括号 {} 对对象进行初始化。这不仅适用于内置类型,还支持用户自定义类型。侯捷老师通过以下代码展示了初始化列表的使用:
#include <iostream>
#include <vector>
#include <string>struct Person {std::string name;int age;
};int main() {std::vector<int> vec = {1, 2, 3, 4, 5}; // 初始化列表for (const auto& v : vec) {std::cout << v << " ";}std::cout << std::endl;Person person = {"Alice", 25}; // 初始化列表std::cout << "Name: " << person.name << ", Age: " << person.age << std::endl;return 0;
}
侯捷老师指出,初始化列表不仅简化了代码,还提高了代码的可读性和一致性。
(三)移动语义
C++11 引入了移动语义,允许资源的转移,从而避免不必要的拷贝操作,提升性能。侯捷老师通过以下代码展示了移动语义的使用:
#include <iostream>
#include <vector>
#include <utility> // std::moveclass Buffer {
private:std::vector<int> data;public:Buffer(size_t size) : data(size) {std::cout << "Buffer created" << std::endl;}Buffer(const Buffer& other) : data(other.data) {std::cout << "Buffer copied" << std::endl;}Buffer(Buffer&& other) noexcept : data(std::move(other.data)) {std::cout << "Buffer moved" << std::endl;}Buffer& operator=(const Buffer& other) {data = other.data;std::cout << "Buffer assigned" << std::endl;return *this;}Buffer& operator=(Buffer&& other) noexcept {data = std::move(other.data);std::cout << "Buffer moved assigned" << std::endl;return *this;}
};int main() {Buffer buf1(100); // 创建一个 Buffer 对象Buffer buf2 = std::move(buf1); // 移动语义return 0;
}
侯捷老师强调,移动语义是 C++11 的重要特性之一,它能够显著提升程序的性能,尤其是在处理大型对象时。
(四)Lambda 表达式
C++11 引入了 Lambda 表达式,允许在需要的地方定义匿名函数。这使得代码更加简洁和灵活。侯捷老师通过以下代码展示了 Lambda 表达式的使用:
#include <iostream>
#include <vector>
#include <algorithm>int main() {std::vector<int> vec = {1, 2, 3, 4, 5};// 使用 Lambda 表达式对 vector 进行排序std::sort(vec.begin(), vec.end(), [](int a, int b) {return a > b; // 降序排序});for (const auto& v : vec) {std::cout << v << " ";}std::cout << std::endl;// 使用 Lambda 表达式计算总和int sum = 0;std::for_each(vec.begin(), vec.end(), [&sum](int v) {sum += v;});std::cout << "Sum: " << sum << std::endl;return 0;
}
侯捷老师指出,Lambda 表达式不仅简化了代码,还提高了代码的可读性和可维护性。
(五)线程支持库
C++11 引入了线程支持库,允许开发者更方便地编写多线程程序。侯捷老师通过以下代码展示了线程支持库的使用:
#include <iostream>
#include <thread>
#include <vector>void printThreadId(int id) {std::cout << "Thread " << id << " is running" << std::endl;
}int main() {std::vector<std::thread> threads;for (int i = 0; i < 10; ++i) {threads.emplace_back(printThreadId, i); // 创建线程}for (auto& thread : threads) {thread.join(); // 等待线程完成}return 0;
}
侯捷老师强调,线程支持库是 C++11 的重要特性之一,它使得多线程编程更加简单和安全。
二、学习心得:从传统 C++ 到现代 C++ 的转变
通过学习侯捷老师的《C++ 新标准 11/14》课程,我对现代 C++ 编程有了全新的认识。侯捷老师不仅讲解了新特性的理论知识,还通过大量实战案例展示了如何在实际开发中应用这些特性。
(一)新特性的强大功能
C++11 和 C++14 引入的特性极大地提升了语言的表达能力和开发效率。自动类型推导、初始化列表、移动语义、Lambda 表达式和线程支持库等特性,不仅简化了代码,还提高了代码的可读性和可维护性。侯捷老师通过丰富的实战案例,让我深刻体会到了这些特性带来的便利。
(二)性能优化
新特性不仅提升了代码的可读性,还优化了性能。例如,移动语义能够显著减少不必要的拷贝操作,提升程序的性能;线程支持库使得多线程编程更加简单和高效。侯捷老师通过实际案例展示了如何利用这些特性优化程序性能。
(三)现代 C++ 编程理念
侯捷老师的课程不仅让我掌握了新特性,还让我理解了现代 C++ 编程的理念。例如,尽量使用智能指针管理内存,避免手动管理内存带来的风险;使用 Lambda 表达式简化代码,提高代码的可读性和可维护性。这些理念将指导我在未来的开发中写出更高效、更安全的代码。
三、实际应用案例:基于 C++11/14 的项目实践
在学习侯捷老师的课程后,我将所学知识应用到了实际项目中。我们团队负责开发一个高性能的图像处理库,需要处理大量的图像数据。通过侯捷老师对 C++11/14 的讲解,我决定使用 Lambda 表达式和线程支持库来优化图像处理算法。
(一)项目背景
我们的图像处理库需要处理大量的图像数据,每个图像处理任务都可能涉及复杂的计算。传统的单线程处理方式在面对大规模数据时效率较低。为了提高性能,我们决定引入多线程支持,并使用 Lambda 表达式简化代码。
(二)线程支持库的应用
我们使用 C++11 的线程支持库来实现多线程处理。每个图像处理任务被分配到一个单独的线程中,从而充分利用多核处理器的性能。侯捷老师在课程中讲解的线程支持库的使用方法为我们提供了很大的帮助。
#include <iostream>
#include <thread>
#include <vector>
#include <functional>void processImage(const std::string& imagePath) {std::cout << "Processing image: " << imagePath << " in thread " << std::this_thread::get_id() << std::endl;// 图像处理逻辑
}int main() {std::vector<std::string> images = {"image1.jpg", "image2.jpg", "image3.jpg"};std::vector<std::thread> threads;for (const auto& imagePath : images) {threads.emplace_back([imagePath]() {processImage(imagePath);});}for (auto& thread : threads) {thread.join();}return 0;
}
通过使用线程支持库,我们能够将图像处理任务分配到多个线程中,显著提高了处理效率。
(三)Lambda 表达式的应用
在图像处理算法中,我们使用 Lambda 表达式来简化代码。例如,在对图像进行滤波处理时,我们使用 Lambda 表达式定义了滤波函数:
#include <iostream>
#include <vector>
#include <functional>
#include <thread>void applyFilter(const std::vector<int>& image, std::vector<int>& filteredImage, const std::function<int(int)>& filter) {for (size_t i = 0; i < image.size(); ++i) {filteredImage[i] = filter(image[i]);}
}int main() {std::vector<int> image = {1, 2, 3, 4, 5};std::vector<int> filteredImage(image.size());// 使用 Lambda 表达式定义滤波函数auto filter = [](int pixel) {return pixel * 2; // 简单的滤波逻辑};applyFilter(image, filteredImage, filter);for (const auto& pixel : filteredImage) {std::cout << pixel << " ";}std::cout << std::endl;return 0;
}
通过使用 Lambda 表达式,我们能够更简洁地定义滤波函数,提高了代码的可读性和可维护性。
四、总结与展望
通过学习侯捷老师的《C++ 新标准 11/14》课程,我对现代 C++ 编程有了全新的认识,并将其应用到了实际项目中。侯捷老师清晰的讲解和丰富的实战案例让我受益匪浅。在学习过程中,我深刻体会到了新特性带来的便利和性能优化,也理解了现代 C++ 编程的理念。
在未来的学习中,我将继续深入学习侯捷老师的其他课程,如《STL 标准库与泛型编程》和《C++ 面向对象开发》,进一步提升自己的 C++ 编程能力。我相信,在侯捷老师的指导下,我能够在 C++ 的世界中不断进步,成为一名优秀的开发者。
侯捷老师的 C++ 系列课程不仅让我掌握了丰富的知识,还让我学会了如何将这些知识应用到实际项目中。感谢侯捷老师的辛勤付出,让我在 C++ 的学习道路上找到了方向。
相关文章:
侯捷 C++ 课程学习笔记:C++ 新标准 11/14 的革新与实战应用
在侯捷老师的 C 系列课程中,《C 新标准 11/14》这门课程让我对现代 C 编程有了全新的认识。C11 和 C14 是 C 语言发展史上的重要里程碑,它们引入了大量新特性,极大地提升了语言的表达能力和开发效率。侯捷老师通过深入浅出的讲解和丰富的实战…...
MATLAB图像处理:Sobel、Roberts、Canny等边缘检测算子
边缘是图像中像素值剧烈变化的区域,反映了目标的轮廓、纹理等关键信息。边缘检测是图像分割、目标识别等任务的基础。本文将系统解析 六种经典边缘检测算子 的数学原理、实现方法及适用场景,并给出完整的MATLAB代码示例和对比分析。 1. 边缘检测基础 1…...
Python Pandas(7):Pandas 数据清洗
数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要使数据分析更加准确,就需要对这些没有用的数据进行处理。数据清洗与预处理的常见步骤: 缺失值处理:识别并…...
基于javaweb的SpringBootoa办公自动化系统设计和实现(源码+文档+部署讲解)
🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 运行环境开发工具适用功能说明部分代码展示 运行环境 Java≥8、MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可配置运行…...
算法08-递归调用转为循环的通用方法
前导:问题引入 在Python中,递归调用过多会导致“递归深度过深”的错误,通常是因为递归没有正确终止条件或者递归层次太深。 这种错误通常会导致程序抛出 RecursionError 异常。 Python默认的递归深度限制大约是1000层(可以通过sys.getrecursionlimit()查看)。 修正方式…...
[qt5学习笔记]用vs2022(msvc2017)+copilot进行QtWidgetsApplication源码解析
一直没深入了解qt,又一段时间没写qt,重新捡起来。 开发环境 本地vs2022(msvc2017, v14.30)先升级到最新版本,方便使用copilot。 参考 VS2022QT5环境搭建 下载 qt5.14.2 用vs的qt插件设置qt5.14.2x86路径,x64版本未安装。 创建一…...
Nginx--日志(介绍、配置、日志轮转)
前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、Nginx日志介绍 nginx 有一个非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志, 所需日志模块 ngx_http_log_module 的…...
Transformer 模型介绍(一)——综述
Transformer 是一种完全基于注意力机制的神经网络模型,首次在2017年的论文《Attention Is All You Need》中提出。该模型最初用于机器翻译任务,并在特定任务中表现优于谷歌的其他神经网络机器翻译模型。Transformer 也是 Seq2Seq(序列到序列&…...
Ceph集群搭建2025(squid版)
squid版本维护年限 apt install -y cephadmecho >> "deb http://mirrors.163.com/ceph/debian-squid/ bookworm main" echo >> "deb-src http://mirrors.163.com/ceph/debian-squid/ bookworm main"#安装源 cephadm install #开始初始化一个最…...
封装neo4j的持久层和服务层
目录 持久层 mp 模仿: 1.抽取出通用的接口类 2.创建自定义的repository接口 服务层 mp 模仿: 1.抽取出一个IService通用服务类 2.创建ServiceImpl类实现IService接口 3.自定义的服务接口 4.创建自定义的服务类 工厂模式 为什么可以使用工厂…...
HTML 简介
1.什么是 HTML? 超文本:暂且简单理解为 “超级的文本”,和普通文本比,内容更丰富。 标 记:文本要变成超文本,就需要用到各种标记符号。 语 言:每一个标记的写法、读音、使用规则,…...
【AWS】EC2 安全组设置
在使用 Amazon Web Services (AWS) 的 EC2 实例时,很多用户会遇到关于 安全组 设置的问题,尤其是在创建或修改安全组时输入描述信息时。最近,有一个常见的错误是当用户在 EC2 安全组 配置中添加描述时,使用了中文字符,…...
git bisect 使用二分法查找引入错误的提交
git bisect 使用二分法查找引入错误的提交 Git bisect 命令官方文档 git bisect 这个命令使用二分搜索算法来查找项目历史中哪个提交引入了一个错误 使用该命令时,首先告诉它一个已知包含错误的 “坏” 提交 以及一个已知在错误出现之前的 “好” 提交 然后 git b…...
STM32 Flash详解教程文章
目录 Flash基本概念理解 Flash编程接口FPEC Flash擦除/写入流程图 Flash选项字节基本概念理解 Flash电子签名 函数读取地址下存放的数据 Flash的数据处理限制部分 编写不易,请勿搬运,感谢理解!!! Flash基本概念…...
业务开发 | 基础知识 | Maven 快速入门
Maven 快速入门 1.Maven 全面概述 Apache Maven 是一种软件项目管理和理解工具。基于项目对象模型的概念(POM),Maven 可以从中央信息中管理项目的构建,报告和文档。 2.Maven 基本功能 因此实际上 Maven 的基本功能就是作为 Ja…...
Python实现从SMS-Activate平台,自动获取手机号和验证码(进阶版2.0)
前言 本文是该专栏的第52篇,后面会持续分享python的各种干货知识,值得关注。 在本专栏之前,笔者在文章《Python实现SMS-Activate接口调用,获取手机号和验证码》中,有详细介绍基于SMS-Activate平台,通过python来实现自动获取目标国家的手机号以及对应的手机号验证码。 而…...
网络安全 | 安全信息与事件管理(SIEM)系统的选型与实施
网络安全 | 安全信息与事件管理(SIEM)系统的选型与实施 一、前言二、SIEM 系统的功能概述2.1 数据收集与整合2.2 实时监控与威胁检测2.3 事件响应与自动化2.4 合规性管理 三、SIEM 系统选型的关键因素3.1 功能需求评估3.2 可扩展性与性能3.3 易用性与可维…...
解决DeepSeek服务器繁忙问题
目录 解决DeepSeek服务器繁忙问题 一、用户端即时优化方案 二、高级技术方案 三、替代方案与平替工具(最推荐简单好用) 四、系统层建议与官方动态 用加速器本地部署DeepSeek 使用加速器本地部署DeepSeek的完整指南 一、核心原理与工具选择 二、…...
node.js+兰空图床实现随机图
之前博客一直用的公共的随机图API,虽然图片的质量都挺不错的,但是稳定性都比较一般,遂打算使用之前部署的兰空图床,自己弄一个随机图 本文章服务器操作基于雨云——新一代云服务提供商的云服务器进行操作,有兴趣的话可…...
DeepSeek vs ChatGPT:AI对决中的赢家是……人类吗?
DeepSeek vs ChatGPT:AI对决中的赢家是……人类吗? 文章目录 DeepSeek vs ChatGPT:AI对决中的赢家是……人类吗?一、引言1. 背景2. 问题 二、DeepSeek vs ChatGPT:谁更胜一筹?2.1 语言生成能力评测对比场景…...
mac搭建环境
从0-1搭建mac环境 先查看自己的芯片信息 bash uname -mbash-3.2$ uname -m arm64这里是自己的型号安装brew xcode-select --install xcode-select -p /bin/zsh -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)” source /Users/lanren/.…...
【R语言】t检验
一、基本介绍 t检验(t-test)是用于比较两个样本均值是否存在显著差异的一种统计方法。 t.test()函数的调用格式: t.test(x, yNULL, alternativec("two.sided", "less", "greater"), mu0, pairFALSE, var.eq…...
尚硅谷爬虫note005
一、编解码 1.get请求的quote方法 将汉字转为Unicode字符 # _*_ coding : utf-8 _*_ # Time : 2025/2/12 16:33 # Author : 20250206-里奥 # File : demo19_get请求的quote方法 # Project : PythonProject10-14# 景甜page # https://www.baidu.com/s?ieutf-8&f8&rsv…...
词袋模型和词嵌入模型区别和关联分析(词袋模型是否属于词嵌入模型)
词袋模型(Bag of Words, BoW)不属于词嵌入模型,它们是两种完全不同的文本表示方法。以下从多个维度对比二者的核心区别 1. 本质区别 特性词袋模型 (BoW)词嵌入模型 (Word Embedding)表示形式离散的稀疏向量(高维,维度…...
借用python 学习 VM的 FTP(VisionMaster4.3)
无懒不python:看官方V社区有介绍: 需要安装 Quick Easy FTP Server V4.0.0.exe 为了表示敬意再次放出链接: V社区-机器智能技术交流-VM关于FTP存图的一点分享 好了VM先放一边 先用python自收 自发: 毕竟这个免费 FTP服务端: 0.ftpserver.py 需要安装的库 和 注意事项已经在…...
BDD风格测试
BDD风格测试(Behavior-Driven Development) BDD(行为驱动开发)是一种以自然语言描述系统行为的测试方法论,强调团队协作与业务价值验证。结合Mockito的BDD风格API,可以编写更符合业务场景描述、更易读的测…...
[免费]Springboot+Vue医疗(医院)挂号管理系统【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的SpringbootVue医疗(医院)挂号管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue医疗(医院)挂号管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 在如今社会上,关于信息上…...
Linux 查看磁盘中的大文件
在 Linux 系统中,你可以使用以下方法来查看磁盘中的大文件信息: 1. 使用 find 命令 find 命令可以递归查找指定目录下的大文件。 find /path/to/directory -type f -size 100M -exec ls -lh {} \;/path/to/directory:要查找的目录路径&…...
浅识MQ的 Kafka、ActiveMQ、RabbitMQ、RocketMQ区别
DeepSeek回复: 以下是主流消息队列(MQ)的对比分析,结合核心特性、适用场景和实际案例说明: 一、主流MQ对比分析 维度 Kafka RabbitMQ RocketMQ ActiveMQ所属公司Apache(LinkedIn开源)…...
君海游戏岗位,需要私我
游戏岗位内推啦,需要找我哈 共14个职位 广告投放主管 社会招聘全国 广告投放 社会招聘全国 设计主管 社会招聘全国 海外投放 社会招聘广东省广州市 海外运营 社会招聘广东省广州市 产品运营专员 社会招聘广东省广州市 平台运营 社会招聘广东…...
Vue2/Vue3分别如何使用Watch
在 Vue 2 和 Vue 3 中,watch 用于监听数据的变化并执行相应的逻辑。虽然两者的核心功能相同,但在语法和使用方式上有一些区别。以下是 Vue 2 和 Vue 3 中使用 watch 的详细说明: Vue 2 中的 watch 在 Vue 2 中,watch 是通过选项式…...
boss直聘登录 网易易盾 无感 滑块 分析
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 实测网站是存在风控的比较…...
蓝桥杯 Java B 组之日期与时间计算(闰年、星期计算)
Day 5:日期与时间计算(闰年、星期计算) 在编程竞赛中,日期和时间计算是常见考点,涉及 闰年判断、星期计算、日期间隔计算 等问题。本日的学习目标: 判断闰年计算某个日期是星期几计算两个日期之间相差多少…...
51单片机之引脚图(详解)
8051单片机引脚分类与功能笔记 1. 电源引脚 VCC(第40脚):接入5V电源,为单片机提供工作电压。GND(第20脚):接地端,确保电路的电位参考点。 2.时钟引脚 XTAL1(第19脚&a…...
掌控系统性能的利器:自动化系统性能监控工具
友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…...
用大模型学大模型03-数学基础 概率论 随机变量 概率分布
deepseek.com:什么是概率,什么是随机变量?深度学习中常用概率的分布有哪些? 1. 什么是概率? 概率是描述事件发生的可能性的数值,范围在 0 到 1 之间: 0:事件不可能发生。1:事件必…...
ASP.NET Core 使用 FileStream 将 FileResult 文件发送到浏览器后删除该文件
FileStream 在向浏览器发送文件时节省了服务器内存和资源,但如果需要删除文件怎么办?本文介绍如何在发送文件后删除文件;用 C# 编写。 另请参阅:位图创建和下载 使用FileStream向浏览器发送数据效率更高,因为文件是从…...
如何使用DHTMLX Scheduler的拖放功能,在 JS 日程安排日历中创建一组相同的事件
DHTMLX Scheduler 是一个全面的调度解决方案,涵盖了与规划事件相关的广泛需求。假设您在我们的 Scheduler 文档中找不到任何功能,并且希望在我们的 Scheduler 文档中看到您的项目。在这种情况下,很可能可以使用自定义解决方案来实现此类功能。…...
UE_C++ —— Unreal Interfaces
目录 一,Declare an Interface in C 二,Interface Specifiers 三,Implement an Interface in C 四,Declare Interface Functions 五,C Only Interface Functions 六,Blueprint Callable Interface Fu…...
mapbox 从入门到精通 - 目录
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀总目录1.1 ☘️ mapbox基础1.2 ☘️…...
CentOS搭建PPPOE服务器
一、安装软件包 yum -y install rp-pppoe 二、配置服务器 1.修改配置文件 打开/etc/ppp/pppoe-server-options文件 nano /etc/ppp/pppoe-server-options 编辑为以下内容: # PPP options for the PPPoE server # LIC: GPL require-pap require-chap login …...
在 CentOS 系统中配置交换空间(Swap)解决内存不足
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …...
pytorch训练五子棋ai
有3个文件 game.py 五子棋游戏 mod.py 神经网络模型 xl.py 训练的代码 aigame.py 玩家与对战的五子棋 game.py class Game:def __init__(self, h, w):# 行数self.h h# 列数self.w w# 棋盘self.L [[- for _ in range(w)] for _ in range(h)]# 当前玩家 - 表示空 X先…...
超越DeepSeek R1的Moe开源大模型 Qwen2.5-max 和 Qwen Chat Web UI 的发布,阿里搅动AI生态
敲黑板,说重点,最近阿里推出的 Qwen2.5-max 和 Qwen Chat Web UI,将对AI生态又一次冲击。 说冲击,因为 DeepSeek R1的热潮还未散退的情况下,由于服务器压力不能注册新的API,然后价格涨价,服务有…...
动态规划两个数组的dp问题系列一>两个字符串的最小ASCII 删除和
这里写目录标题 题目解析:状态表示:状态转移方程:初始化:填表顺序:返回值:代码呈现: 题目解析: 状态表示: 状态转移方程: 初始化: 填表顺序&#…...
【C语言】程序环境与预处理
目录 程序的翻译环境和执行环境 粗谈编译链接 翻译环境 编译的几个阶段及链接 运行环境 预处理详解 预定义符号 #define #define 定义标识符 #define 定义宏 #define 替换规则 #和## 带副作用的宏参数 宏和函数的对比 命名约定 #undef 命令行定义 条件编译 …...
DeepSeek 背后的技术:GRPO,基于群组采样的高效大语言模型强化学习训练方法详解
强化学习(Reinforcement Learning, RL)已成为提升大型语言模型(Large Language Models, LLMs)推理能力的重要技术手段,特别是在需要复杂推理的任务中。DeepSeek 团队在 DeepSeek-Math [2] 和 DeepSeek-R1 [3] 模型中的…...
AnythingLLM打造私有知识库
一、 OllamaDeepSeek安装 https://blog.csdn.net/Stestack/article/details/145405151?spm1001.2014.3001.5502二、 nomic-embed-text nomic-embed-text主要用于文本嵌入和句子相似度任务,能够将这些任务应用于分类、聚类、检索等多种自然语言处理场景。该模型在…...
springboot多数据源事务管理
在Java应用中,使用多数据源时,事务管理是一个常见且复杂的问题。由于每个数据源都有自己的事务管理器,跨多个数据源的事务管理需要特别处理。以下是几种常见的解决方案: 1. JTA(Java Transaction API) JT…...
Lineageos 22.1 aosp15 定制学习专栏介绍
一.前言 学习了一段时间的rom开发,需求也大概做了一些,但是一直没有记录下来总结,这个专栏开始会基于如下平台开始尝试做一些常见模块的需求定制,记录学习,如果有错误欢迎指正,大家一起学习!至于pixel编译…...