《C++ Primer Plus》《2、开始学习C++》
文章目录
- 0 前言:
- 1 进入C++
- 1.1 main()函数
- 1.2 C++注释
- 1.3 预处理器和iostream
- 1.4 头文件名
- 1.5 名称空间
- 1.6 使用cout进行C++输出
- 1.7 C++源代码的格式化
- 2 C++语句
- 2.1 声明语句和变量
- 2.2 赋值语句
- 2.3 cout语句
- 3 其他C++语句
- 3.1使用cin
- 3.2 使用cout进行拼接
- 3.3 类简介
- 4 函数
- 4.1 有返回值的函数
- 4.2 函数变体
- 4.3用户自定义的函数
- 4.4 用户定义有返回值的函数
- 4.5 使用using编译指令
- 5 总结
- 6 参考
0 前言:
基础知识是对C++特性,历史的一些介绍,并不涉及C++语言的实质。本章对C++语言的基本结构做一下概述,具体的细节,日后会一步步去完善。
1 进入C++
任何一句语言的初始,便是在界面上输出“Hello World!”,进而打开新世界的大门,感觉不对这个世界打声招呼,不好意思开始一样。C++也不例外。
#myfirst.cpp
#include<iostream>
int main(){
using namespace std;
cout <<"Hello World!";
cout << endl;
return 0;
}
之前学过C的会对这个程序既陌生又熟悉,下面来对myfirst.cpp程序的元素进行分析:
1)注释//;
2)预处理编译指令#include;
3)主函数int main();
4)编译指令 using namespace;
5)函数体的部分用{}包围;
6)用cout 显示消息语句;
7)用return 语句终结函数。
1.1 main()函数
myfirst.cpp的程序框架如图:
int main(){
statements;
return 0;
}
最早在学习C语言的时候,就一直在main()函数里面捣腾,所以对main语言,再熟悉不过。int main()叫函数头,{}括起来的部分叫作函数体,在C++中,每条完整的指令都成为语句,用分号来结束。其中最后一条return 0语句叫作返回语句,用它来对函数进行终结。
对main()函数作如下说明:
1)为什么只能是main()函数:
而不是A函数,B函数,C函数。我的解释是:当程序只有一个函数时,这个函数必须只能是main()函数(规定的事,不照办不好使),在运行C++程序时,通常是从main()函数开始执行的,如果没有main(),程序是不完整的,也将无法进行编译。
2)int main代表了什么
来看一下main()的接口描述,该接口从int 开始,main()函数将返回一个整数值,即int规定了函数返回值的类型。int main是一种缩略的写法,完整的写法是int main(void)。
3)语句与分号
语句是要执行的操作,为了理解源代码,编译器需要知道语句如何进行起止。语句之间需要使用语句分隔符,在C++中,使用的是分号对语句进行分隔。
1.2 C++注释
写程序,必须要进行注释,不然无法让别人对你的程序进行理解。C++的注释方式沿袭了C。有两种注释方法。
1)//用来对行进行注释,无法跨行发生作用;
2)/* */的注释,可以跨行进行注释。
1.3 预处理器和iostream
在学习的初期,这样的两行代码基本成了标配:
#include<iostream>
using namespace std;
#include是一种预处理,将iostream中的内容加入到程序中来,程序不仅仅只是main就完全实现功能,需要在源代码编译之前替换或添加文本。
1.4 头文件名
像iostream这样的文件就叫作包含文件(也叫作头文件),C++编译器自带了很多头文件,每个头文件都支持一组特定的工具,让程序在实现功能的前提下轻装上阵。以前的C++头文件都有“.h”的后缀,新式的C++风格没有扩展名。
头文件类型 | 约定 | 示例 | 说明 |
---|---|---|---|
C++旧式风格 | 以.h结尾 | iostream.h | C++可用 |
C旧式风格 | 以.h结尾 | math.h | C,C++可用 |
C++新式风格 | 没有扩展名 | iostream | C++可用 |
转换后的C | 加上前缀c,没有扩展名 | cmath | C++可用 |
1.5 名称空间
using namespace std;叫作using编译指令,名称空间支持是C++的一个特性。举个例子:用两个已经封装好的产品,里面都包含了一个函数——walk(),编译器不知道这个函数该用哪个产品的,这时候便可以用名称空间来进行标定,比如A公司的函数,A::walk();若是B公司的,则用B::walk()来进行表示。这样程序就可以使用名称空间来区分不同的版本。
就好像是个百宝箱,但是要先using先声明一下,才可以使用。
1.6 使用cout进行C++输出
之前的“Hello world”程序,利用cout进行输出,双引号将字符串框起来,不用管里面是什么,计算机会对他进行输
出的处理。
cout <<"Hello World!";
cout << endl;
"<< "表示该语句将字符串发送给了cout,有一种很形象的说法,这个符号指出了信息流动的路径。从C++的概念上理解这个过程,输出是一个流,即从程序流出的一段字符串。cout对象属性包括一个插入运算符,他可以将右侧的信息插入到流中。与其说程序显示了一条消息,不如说他将一个字符串插入到了输出流中。
补充:
a.cout<<endl,endl被称为控制符,endl也是在iostream中定义的,
b.C语言中的换行符是”\n”,\n叫作换行符,在C++也能使用。
1.7 C++源代码的格式化
- 1)源代码中的标记与空白
a.在一行代码中不可分割的元素叫作标记;
b.空格,制表符,回车统称为空白;
字符与字符之前需要添加一些空白,适当的空白使得程序可读性更强;不合时宜的空白会使得程序报错。
- 2)C++源代码的风格
为了提升自己的编码水平,首先需要输入一些“代码是非观“知道哪些是好的,高水平的代码。如下是编程需要遵循的一些原则。
a.一条语句占据一行,不要一条语句占据多行;
b.每个函数都有{},这两个花括号各占一行;
c.为了条理清晰,函数中的语句相对于花括号需要进行缩进;
d.与函数名称相关的圆括号周围没有空白。
2 C++语句
书中给出了carrots.cpp的示例代码。
2.1 声明语句和变量
声明语句,即你在用这个变量的时候,需要确定这个变量是哪种数据类型,以及它自身的变量名称。原则是:使用这个变量前需要先对其进行声明。
2.2 赋值语句
声明这个变量还不够,需要对其进行赋值,才能知道这个变量的具体数值,否则只会是一个没有意义的随机数。“=“是赋值语句。
2.3 cout语句
cout不仅可以打印字符串,也可以打印出变量的值,而不用对变量的数值类型做声明,我觉得这是C++比C更智能的地方。
3 其他C++语句
3.1使用cin
cin是与cout相对应的概念,cout是将字符串插入到数据流中,相对应的,cin是使用运算符>>从输入流中抽取字符。
3.2 使用cout进行拼接
C++的自由格式,将标记间的换行符和空格看作是可以相互替换的。
cout<<"Hello"<<"world";等价于
cout <<"Hello"
<<"world";
3.3 类简介
类是用户定义的一种数据类型,需要描述它能够表示什么信息,以及可对数据执行哪些操作,后续会详细讲解。
4 函数
程序的实现依赖于函数,所以有必要加深对函数的理解。
4.1 有返回值的函数
顾名思义,这个函数带有一个返回值,而调用这个函数的程序将会获得这个返回值。书中以sqrt()举例,说明调用函数后的具体流程。
4.2 函数变体
2.4.1的sqrt()函数,中规中矩,它既有输入的参数,也拥有返回值。但是函数的参数,可以没有,可以有1个,也可以有很多个,这都是允许的。至于返回值,函数可以有返回值,也可以没有返回值,只是完成相应操作即可。
4.3用户自定义的函数
从图像中可以看出,首先包含了头文件,使用了using编译指令,在main()函数之前声明了函数原型,然后在写函数的实现方式,最后main()函数在实现的过程中调用自定义的函数,过程大抵如此。
4.4 用户定义有返回值的函数
一个函数的特性:
1)有函数头和函数体
2)接受一个参数
3)返回一个值
4)需要一个原型(声明一个原型)
在对传入的参数,做一定的处理之后,return 即可。
4.5 使用using编译指令
在初期需要用到cin,cout,endl,这些都需要先using std的名称空间,当然这是偷懒的做法。例如在头函数包含下,添加语句using namespace std后便可以直接使用cin,cout,endl;若是不添加的话,需要这样表示——
std::cin>>
std::cout<<
std::endl.
5 总结
这一章通过“HelloWorld.cpp”敲开了C++的大门,了解了预编译处理器,头文件,using编译指令,main函数,其他功能函数,以及C++的6种语句,cin,cout,C++的学习之路刚刚开始。
6 参考
《C++ Primer Plus》
相关文章:
《C++ Primer Plus》《2、开始学习C++》
文章目录 0 前言:1 进入C1.1 main()函数1.2 C注释1.3 预处理器和iostream1.4 头文件名1.5 名称空间1.6 使用cout进行C输出1.7 C源代码的格式化 2 C语句2.1 声明语句和变量2.2 赋值语句2.3 cout语句 3 其他C语句3.1使用cin3.2 使用cout进行拼接3.3 类简介 4 函数4.1 …...
Backtrader 文档学习- Sizers
Backtrader 文档学习- Sizers 1.概述 智能仓位 Strategy提供了交易方法,即:buy,sell和close。看一下buy的定义: def buy(self, dataNone,sizeNone, priceNone, plimitNone,exectypeNone, validNone, tradeid0, **kwargs):注意&…...
基于YOLOv8算法的照片角度分类项目实践
目录 一、任务概述二、YOLOv8算法简介2.1 算法改进2.2 算法特点2.3 网络结构2.4 性能比较 三、工程实践3.1 安装算法框架库ultralytics3.2 库存照片预处理3.2.1 提取所有图片3.2.2 去除冗余的相同照片3.2.3 去除无车辆照片3.2.4 随机提取指定数量的图片 3.3 照片朝向分类3.3.1 …...
go语言进阶篇——面向对象(一)
什么是面向对象 在我们设计代码时,比如写一个算法题或者写一个问题结局办法时,我们常常会使用面向过程的方式来书写代码,面向过程主要指的是以解决问题为中心,按照一步步具体的步骤来编写代码或者调用函数,他在问题规…...
C#,栅栏油漆算法(Painting Fence Algorithm)的源代码
1 刷油漆问题 给定一个有n根柱子和k种颜色的围栏,找出油漆围栏的方法,使最多两个相邻的柱子具有相同的颜色。因为答案可以是大的,所以返回10^97的模。 计算结果: 2 栅栏油漆算法的源程序 using System; namespace Legalsoft.Tr…...
java_error_in_pycharm.hprof文件是什么?能删除吗?
java_error_in_pycharm.hprof文件是什么?能删除吗? 🌵文章目录🌵 🌳引言🌳🌳hprof格式文件介绍🌳🌳java_error_in_pycharm.hprof文件什么情况下能删除🌳&…...
LeetCode 491 递增序列
给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]说明: 给定数组的长度不会超过15。 数组中的整数范围是 [-…...
考研/计算机二级数据结构刷题之顺序表
目录 第一题 顺序表的初始化,销毁,头插,尾插,头删,尾删,指定位置插入,指定删除以及打印 第二题 移除元素 题目链接: OJ链接 题目详解:移除元素 第三题:删…...
Git 代码协同的使用方法 for Azure DevOps
1. 登陆Azure 步骤1.1. VS Code,登陆Azure Cloud的Ubuntu环境,如下: 重点: 这里的Azure Cloud的用户名是YourAzureUserName,口令是YourAzurePassword 步骤1.2. 登陆Azure Cloud的Ubuntu环境后,配置Git账户信息&…...
数据库学习笔记2024/2/5
2. SQL 全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了 一套操作关系型数据库统一标准 2.1 SQL通用语法 在学习具体的SQL语句之前,先来了解一下SQL语言的通用语法。 1). SQL语句可以单行或多行书写&…...
PSM-Net根据Stereo图像生成depth图像
一、新建文件夹 在KITTI数据集下新建depth_0目录 二、激活anaconda环境 conda activate pt14py37三、修改submission.py文件 3.1 KITTI数据集路径 parser.add_argument(--datapath, default/home/njust/KITTI_DataSet/00/, helpselect model)3.2 深度图像输出路径 save…...
Mocaverse NFT 概览与数据分析
作者:stellafootprint.network 编译:mingfootprint.network 数据源:Mocaverse NFT Collection Dashboard Mocaverse 是 Animoca Brands 推出的专属 NFT(非同质化代币)系列,包含 8,888 个独特的 "M…...
SpringBoot之事务源码解析
首先事务是基于aop的,如果不了解aop的,建议先去看下我关于aop的文章: Spring之aop源码解析 先说结论,带着结论看源码。首先,在bean的生命周期中, 执行实例化前置增强,会加载所有切面并放入缓存࿰…...
FPGA高端项目:解码索尼IMX327 MIPI相机转USB3.0 UVC 输出,提供FPGA开发板+2套工程源码+技术支持
目录 1、前言免责声明 2、相关方案推荐我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX327 及其配置MIPI CSI RX图像 ISP 处理图像缓存UVC 时序USB3.0输出架构FPGA逻辑设计工程源码架构SDK软件工程源…...
基于高通滤波器的ECG信号滤波及心率统计matlab仿真
目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 ECG信号简介 4.2 高通滤波器原理 4.3 心率统计 5.完整工程文件 1.课题概述 通过高通滤波器对ECG信号进行滤波,然后再统计其心率。 2.系统仿真结果 3.核心程序与模型 版本:…...
springCould中的gateway-从小白开始【9】
目录 1.🍟网关是什么 2.🍿gateway是什么 3.🥚gateway能什么 4.🌭核心概念 5.🧂工作流程 6.🧈实例 7.🥓gateway网关配置的方式 8.🍳配置动态路由 9.🧇pred…...
邮箱营销软件推荐?企业邮箱群发会限制吗?
邮箱营销平台怎么选择?哪种邮箱适合做外贸邮件群发? 邮箱营销凭借其精准触达、低成本和高回报的特点,依然是许多企业不可或缺的营销手段。该如何选择一款适合自己的工具呢?蜂邮EDM将为您推荐几款优秀的邮箱营销软件,并…...
编译原理实验3——自下而上的SLR1语法分析实现(包含画DFA转换图、建表、查表)
文章目录 实验目的实现流程定义DFA状态实现代码运行结果测试1测试2测试3 总结 实验目的 实现自下而上的SLR1语法分析,画出DFA图 实现流程 定义DFA状态 class DFA:def __init__(self, id_, item_, next_ids_):self.id_ id_ # 编号self.item_ item_ # productio…...
基于tomcat的https(ssl)双向认证
一、背景介绍 某个供应商服务需要部署到海外,如果海外多个地区需要部署多个服务,最好能实现统一登录,这样可以减轻用户的使用负担(不用记录一堆密码)。由于安全问题(可能会泄露用户数据)&#x…...
【iOS ARKit】3D人体姿态估计实例
与2D人体姿态检测一样,在ARKit 中,我们不必关心底层的人体骨骼关节点检测算法,也不必自己去调用这些算法,在运行使用 ARBodyTrackingConfiguration 配置的 ARSession 之后,基于摄像头图像的3D人体姿态估计任务也会启动…...
ROS2 CMakeLists.txt 和 package.xml
这里记录一下ROS2中功能包package.xml和CMakeLists.txt的格式。以LIO-SAM的ROS2版本为例: 一:CMakeLists.txt cmake_minimum_required(VERSION 3.5) project(lio_sam)if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)set(CMAKE_BUILD_TYPE…...
代码献瑞,算力有礼!低代码开发工具PaddleX特色产线新春福利来啦
回望2023年,飞桨在开发套件能力基础上,充分结合大模型能力,正式在飞桨星河社区上线发布了低代码开发工具PaddleX,实现AI应用开发效果和效率的大幅提升。产品通过提供图形界面开发模式,将复杂的编程任务简化为简单易用的…...
C语言:操作符详解
创作不易,给个三连吧!! 一、算术操作符 C语言中为了方便计算,提供了算数操作符,分别是:,-,*,/,% 由于这些操作符都是有两个操作数(位于操作符两边),所以这种操作符也叫做双目操作…...
Rust 初体验2
变量类型 Rust 语言的变量数据类型,主要包括整型、浮点型、字符、布尔型、元组、数组、字符串、枚举、结构体和可变变量等。 fn main() { // 整型 let integer: i32 100; println!("整型: {}", integer); // 浮点型 let floating_point: f64 3.1…...
vue-cil的watch函数详解
在Vue中,watch是一个非常有用的API,用于侦听一个响应式引用(例如由ref创建)或响应式对象(由reactive创建)的属性,并在值变化时执行回调函数。Vue 3的Composition API引入了这种侦听方式…...
堆排及时间复杂度分析
箴言: 初始阶段,不需要去纠结那一种更优美,非要找出那一种是最好的,其实能解决问题的就是好办法。 一,常见排序时间复杂度 冒泡快排归并堆排桶排时间O(n^2)O(nlogn)O(nlogn)O(nlogn)kn空间O(1)O(1)O(nlogn)O(1)kn 二ÿ…...
数据结构:双向链表
文章目录 1. 双向带头循环链表的结构2. 相关操作2.1 创建节点2.2 尾插2.3 头插2.4 打印2.5 尾删2.6 头删2.7 查找2.8 指定位置前/后插入2.9 删除指定位置的节点2.10 删除指定位置后的节点2.11 销毁链表 3.顺序表与链表区别 1. 双向带头循环链表的结构 与单链表不同的是…...
51单片机之数码管显示表白数字篇
朝菌不知晦朔 蟪蛄不知春秋 眼界决定境界 CSDN 请求进入专栏 是否进入《51单片机专栏》? 确定 目录 数码管的简介 数码管引脚定义 数码管的原理图 74HC245 代码实现 静态数码管的显示 动态数码管的显示 数码管实现表白画面 数码管的简介 L…...
代码随想录算法训练营DAY16 | 二叉树 (3)
一、LeetCode 104 二叉树的最大深度 题目链接:104.二叉树的最大深度https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 思路:采用后序遍历递归求解。 class Solution {int ans 0;public int maxDepth(TreeNode root) {if(root null){retur…...
springboot(ssm大学生计算机基础网络教学系统 在线课程系统Java系统
springboot(ssm大学生计算机基础网络教学系统 在线课程系统Java系统 开发语言:Java 框架:springboot(可改ssm) vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mys…...
前端架构: 脚手架的开发流程和常用框架
脚手架的开发流程 脚手架的创建 $ npm init 脚手架的开发 分包 分包是指当我们一个脚手架比较复杂的时候,不可能把所有的js代码全部写在一个脚手架当中势必会把它建很多的不同的模块 package,通常我们会把它称之为一个分包的过程会和实际的这个项目一样…...
3.0 Hadoop 概念
本章着重介绍 Hadoop 中的概念和组成部分,属于理论章节。如果你比较着急可以跳过。但作者不建议跳过,因为它与后面的章节息息相关。 Hadoop 整体设计 Hadoop 框架是用于计算机集群大数据处理的框架,所以它必须是一个可以部署在多台计算机上…...
mysql 对于null字段排序处理
最近遇到一个需求 ,需要对一个报表的多个字段进行多字段复杂条件排序 排序字段为NULL时 Mysql对于排序字段为NULL时,有自身默认的排序规则,默认是认为null 值 是无穷小 ELECT id,script_id,last_modified,live_count,next_show FROM virtua…...
NLP_语言模型的雏形 N-Gram 模型
文章目录 N-Gram 模型1.将给定的文本分割成连续的N个词的组合(N-Gram)2.统计每个N-Gram在文本中出现的次数,也就是词频3.为了得到一个词在给定上下文中出现的概率,我们可以利用条件概率公式计算。具体来讲,就是计算给定前N-1个词时࿰…...
mac电脑flutter环境配置,解决疑难问题
准备工作 首先搭建flutter的环境需要使用到flutter的sdk,可以直接跳去官网下载:Choose your first type of app - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter,下载时要注意你电脑所使用的芯片是Intel的还是苹果的芯片。 下载好的…...
C++ bool 布尔类型
在C 中 bool类型占用1个字节长度,bool 类型只有两个取值,true 和 false,true 表示“真”,false 表示“假”。 需要注意的C中使用cout 打印的时候是没有true 和 false 的 只有0和1 ,这里0表示假,非0表示真 …...
DC-7靶机渗透详细流程
信息收集: 1.存活扫描: 由于靶机和kali都是nat的网卡,都在一个网段,我们用arp-scan会快一点: arp-scan arp-scan -I eth0 -l └─# arp-scan -I eth0 -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:dd:ee:6…...
提速MySQL:数据库性能加速策略全解析
提速MySQL:数据库性能加速策略全解析 引言理解MySQL性能指标监控和评估性能指标索引优化技巧索引优化实战案例 查询优化实战查询优化案例分析 存储引擎优化InnoDB vs MyISAM选择和优化存储引擎存储引擎优化实例 配置调整与系统优化配置调整系统优化优化实例 实战案例…...
Flink实战六_直播礼物统计
接上文:Flink实战五_状态机制 1、需求背景 现在网络直播平台非常火爆,在斗鱼这样的网络直播间,经常可以看到这样的总榜排名,体现了主播的人气值。 人气值计算规则:用户发送1条弹幕互动,赠送1个荧光棒免费…...
Compose | UI组件(十五) | Scaffold - 脚手架
文章目录 前言一、Scaffold脚手架简介二、Scaffold的主要组件三、如何使用Scaffold四、Compose中Scaffold脚手架的具体例子例子1:基本Scaffold布局例子2:带有Drawer的Scaffold布局例子3:带有Snackbar的Scaffold布局 总结 前言 Compose中的Sca…...
Vue-60、Vue技术router-link的replace属性
1、作用:控制路由跳转时操作浏览器历史记录的模式 2、浏览器的历史记录有两种写入方式:分别是push和replace,push是追加历史记录,replace是替换当前记录。路由跳转时候默认为push 3、如何开启replace模式: <router-link rep…...
Hive与Presto中的列转行区别
Hive与Presto列转行的区别 1、背景描述2、Hive/Spark列转行3、Presto列转行 1、背景描述 在处理数据时,我们经常会遇到一个字段存储多个值,这时需要把一行数据转换为多行数据,形成标准的结构化数据 例如,将下面的两列数据并列转换…...
探讨CSDN等级制度:博客等级、原力等级、创作者等级
个人名片: 🦁作者简介:学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:Vir2021GKBS 🐼本文由…...
2.8作业
sqlite3数据库操作接口详细整理,以及常用的数据库语句 头文件: #include <sqlite3.h> 编译时候要加上-lsqlite3 gcc a.c -lsqlite3 1)sqlite3_open 打开一个数据库,如果数据库不存在,则创建一个数据库 2&am…...
机器学习中常用的性能度量—— ROC 和 AUC
什么是泛化能力? 通常我们用泛化能力来评判一个模型的好坏,通俗的说,泛化能力是指一个机器学期算法对新样本(即模型没有见过的样本)的举一反三的能力,也就是学以致用的能力。 举个例子,高三的…...
微服务入门篇:Nacos注册中心(Nacos安装,快速入门,多级存储,负载均衡,环境隔离,配置管理,热更新,集群搭建,nginx反向代理)
目录 1.Nacos安装1.官网下载2.解压到本地3.启动nacos 2.Nacos快速入门1.在父工程中导入nacos依赖2.给子项目添加客户端依赖3.修改对应服务的配置文件4.启动服务,查看nacos发现情况 3.Nacos服务多级存储模型4.NacosRule负载均衡5. 服务实例的权重设置6.环境隔离&…...
解决CORS错误(Spring Boot)
记录一下错误,以博客的形式 前言 跨域(Cross-Origin)是指在Web开发中,当一个Web应用试图从一个源(域名、协议、端口组合)获取资源时,该请求的目标与当前页面的源不同。具体来说,当一…...
NLP入门系列—词嵌入 Word embedding
NLP入门系列—词嵌入 Word embedding 2013年,Word2Vec横空出世,自然语言处理领域各项任务效果均得到极大提升。自从Word2Vec这个神奇的算法出世以后,导致了一波嵌入(Embedding)热,基于句子、文档表达的wor…...
JUnit5单元测试框架提供的注解
目录 第一章、注释在类上的注解1.1)JUnit5注释在类上的注解集成测试:SpringBootTest集成测试:ExtendWith(SpringExtension.class)单元测试:ExtendWith(MockitoExtension.class)切片测试:WebMvcTest和DataJpaTest<font colorred…...
ThinkPHP 中使用Redis
环境.env [app] app_debug "1" app_trace ""[database] database "" hostname "127.0.0.1" hostport "" password "" prefix "ls_" username ""[redis] hostname "127.0.0.1…...