C++转Java基础知识
目录
1. Java基础知识
1.1 JDK和JVM
1.2 Java基础代码演示
1.3 Java中的注释
1.4 Java中的关键字
1.5 Java中的println和print的区别
2. Java中的数据类型
2.1 常量
2.2 标识符
2.3 变量
2.4 类型转换
2.5 自动类型转换
2.6 强制类型转换
3. 运算符
3.1 自增运算符
3.1.1 赋值给自己后自增(C/C++也有同样的结果)
3.1.2 小范围整型自增和显式加1
3.2 无符号右移
3.3 运算符优先级
4. Java中的包
5. Java中的数据输入
6. Random类
7. 分支和循环语句
7.1 猜数字小游戏(结合Random类)
本文档主要含有Java和C/C++不同的知识点
1. Java基础知识
1.1 JDK和JVM
在Java中,JDK称为Java开发工具包(Java Development Kit),包含了Java开发需要使用的工具包,前面的版本中JRE和JDK是分开的两个文件夹,从Java9开始,JDK中还包含了JRE(Java Runtime Environment),包含了Java运行的虚拟机JVM和其他,而,原因是Java9引入模块化运行,可能不是每一次的代码运行都需要完整的JRE,根据需要加载可以提高运行效率
JVM是Java中的运行虚拟机,所有的Java代码程序都会在JVM上运行,从而达到了Java的跨平台性
1.2 Java基础代码演示
// 此处class后面的名称和当前文件名保持一致public class Main {public static void main(String[] args) {// Java中的输出语句,包括换行System.out.println("Hello world!");// Java每条语句都要带分号}}输出结果:Hello world!
在上面的代码中public class中的public不可以去除,因为类名与文件名相同,但是如果类名与文件名不同,则不可以写public。所以,在Java中,一个.java文件中只有一个class是public class
如果.java文件中有多个class,则编译后将会生成包括public class在内对应个数的.class文件,但是在实际开发中,一般一个.class文件中只有一个class
并且main函数必须在public class中
可以使用下面的命令对当前的文件进行编译和运行
编译:javac Main.java -> 将.java文件编译生成.class文件运行:java Main -> 运行.class文件// java后的class文件不需要带后缀名
1.3 Java中的注释
在Java中,有下面三种注释方式:
-
//:单行注释 -
/* */:多行注释 -
/** */:文档(API文档)注释,可以在当前.java文件位置打开控制台使用javadoc -d 文件夹名 -author -version 需要生成文档的Java文件
// 这是一个单行注释/** 这是一个多行注释*//*** 这是一个文档注释* 可以包含下面的内容* @author 代码的作者* @version 当前代码的版本* **/
例如下面的Java程序生成文档注释:
/*** ClassName: test* Package: PACKAGE_NAME* Description:* Hello World测试IDEA** @author 憨八嘎* @version v1.0*/public class Main {/*** main函数*/public static void main(String[] args) {System.out.println("Hello world!");}}
使用javadoc命令如下:
javadoc -d api -author -version -encoding UTF-8 Main.java// 如果编译器的编码格式为UTF-8,需要使用-encoding UTF-8指定生成编码格式,否则默认为GBK从而编译失败或者出现乱码
生成文档如下:

需要查看内容可以打开api文件夹中的index.html文件
1.4 Java中的关键字
Java目前一共有53个关键字,48个关键字+3个特殊直接量+2个保留字
48个关键字:abstract assert boolean break byte case catch char class continue default do double else enum extends final finally float for if implements import int interface instanceof long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while3个特殊直接量:true false null2个保留字:goto const
1.5 Java中的println和print的区别
相同点:都是输出语句
不同点:
println:输出之后自带换行
print:输出之后不带换行
public class Main{public static void main(String[] args){// printlnSystem.out.println("床前明月光");System.out.println("疑是地上霜");System.out.println("举头望明月");System.out.println("低头思故乡");// printSystem.out.print("床前明月光");System.out.print("疑是地上霜");System.out.print("举头望明月");System.out.print("低头思故乡");}}输出结果:床前明月光疑是地上霜举头望明月低头思故乡床前明月光疑是地上霜举头望明月低头思故乡
2. Java中的数据类型
2.1 常量
在Java中,有以下常量(也称字面量):
-
整型常量
-
浮点型常量
-
字符型常量
-
字符串常量
-
布尔常量
-
null
2.2 标识符
Java中的规定:
-
标识符可以包含英文字母,数字,
$和_ -
标识符不能以数字开头
-
标识符不能是关键字
建议命名风格:
-
给类取名字:遵循大驼峰式 -> 每个单词首字母大写
-
给方法和变量取名字:遵循小驼峰式 -> 从第二个单词开始往后首字母大写
2.3 变量
在Java中,有下面的变量类型
| 数据类型 | 关键字 | 内存占用 | 取值范围 |
|---|---|---|---|
| 字节型 | byte | 1个字节 | -128 至 127 |
| 短整型 | short | 2个字节 | -32768 至 32767 |
| 整型 | int(默认) | 4个字节 | |
| 长整型 | long | 8个字节 | |
| 单精度浮点数 | float | 4个字节 | 1.4013E-45 至 3.4028E+38 |
| 双精度浮点数 | double(默认) | 8个字节 | 4.9E-324 至 1.7977E+308 |
| 字符型 | char | 2个字节 | 0 至 |
| 布尔类型 | boolean | 1个字节 | true,false |
Java中按照下面的语法定义变量
变量类型 变量名 = 值;
在Java中,如果变量不初始化就无法使用
public class Main {public static void main(String[] args) {int num;System.out.println(num);// 无法使用未初始化的变量}
}
2.4 类型转换
Java中遇到下面两个情况就会出现类型转换
-
赋值符号左右两边类型不一致
-
不同的类型做数据运算
Java中存在两种形式的类型转换
-
自动类型转换
-
强制类型转换
2.5 自动类型转换
-
在对变量初始化时,当赋值符号左侧的类型比右侧的类型范围大时会出现自动类型转换
public class Main {public static void main(String[] args) {long num = 4; // 整型常量默认是int,所以赋值给long类型的num时就会出现自动类型转换,从int转换到longSystem.out.println(num);} }输出结果: 4 -
当范围小的类型与范围大的类型做运算时会出现类型转换
public class Main {public static void main(String[] args) {int num1 = 1;double num2 = 2.1;System.out.println(num1 + num2);// num1的类型为int,num2的类型为double,所以做运算时,int范围小,自动转换为double类型进行计算} }输出结果: 3.1在Java中,自动转换按照下面的顺序:
byte,char,short->int->long->float->double在C/C++中,boolean类型是整型,可以用0和1代替,但是在Java,boolean是个单独的类型,无法参与运算
2.6 强制类型转换
当出现大范围类型向小范围类型转换时,无法进行自动类型转换,如果仍需要操作,则需要用到强制类型转换,语法同C/C++语言
public class Main {public static void main(String[] args) {float num = 1.2;// 因为浮点数默认类型为double,并且double的取值范围比float大,此时无法进行自动类型转换System.out.println(num);}
}
对于long类型的变量和float类型的变量来说,如果需要给常量值,需要在常量后面加上L和F
public class Main {public static void main(String[] args) {float num = 1.2F;// 指定小数为float类型// 或者使用强制类型转换// float num = (float)1.2;System.out.println(num);}
}输出结果:
1.2
特殊地,当
int类型的常量值赋值给byte,char,short类型时,如果常量值没有超过三种类型的范围就不需要强制类型转换,此时JVM会自动进行转换public class Main {public static void main(String[] args) {char num1 = 65;// 65在char类型的范围内,不需要强制类型转换byte num2 = 2;// 2在byte类型的范围内,不需要强制类型转换short num3 = 3;// 3在short类型的范围内,不需要强制类型转换// byte num4 = 200;// 超出byte范围,需要强制类型转换System.out.println((int)num1);System.out.println(num2);System.out.println(num3);} } 输出结果: 65 2 3
强制类型转换一般会存在精度丢失问题,所以一般情况下不建议使用
3. 运算符
其余运算符与C/C++相同
3.1 自增运算符
规则与C/C++相同,但是注意下面的问题
3.1.1 赋值给自己后自增(C/C++也有同样的结果)
public class test_assignment {public static void main(String[] args) {int num = 10;num = num++;System.out.println("num = " + num);}
}输出结果:
10
上面的代码直观反应是num将10先给num,再自增为11,所以输出为11,但是实际上是num得到的是10,查看Java反编译的代码如下
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//public class test_assignment {public test_assignment() {}public static void main(String[] args) {int num = 10;int num1 = num++;System.out.println("num = " + num1);}
}
实际上是创建了一个临时变量num1接受改变之前的num,再打印临时变量num1
3.1.2 小范围整型自增和显式加1
public class test_assignment {public static void main(String[] args) {byte num = 10;num = num + 1; // 对于byte小范围整型来说,因为编译器无法确定执行运算后是否会超出byte的范围,所以本语句无法执行System.out.println("num = " + num);}
}
但是,如果写成num += 1则可以正常运行
public class test_assignment {public static void main(String[] args) {byte num = 10;
// num = num + 1;num += 1;System.out.println("num = " + num);}
}输出结果:
num = 11
对于其余两个运算符char和short,float和double来说也是如此
注意浮点数类型和整型相加不存在该问题
public class test_assignment {public static void main(String[] args) {float num1 = 10.0f;num1 = num1 + 1;// 正常运行System.out.println("num1 = " + num1);}
}输出结果:
11.0
其余情况类比推理即可
3.2 无符号右移
在Java中,除了提供了C/C++中存在的算术右移,还提供了无符号右移,使用>>>表示
例如
public class Main {public static void main(String[] args) {System.out.println(8 >>> 2);System.out.println(-8 >>> 2);System.out.println(8 >>> 32); // 特殊地,在Java中有特殊处理,移动32位次的整数倍为原数,而不是0,类似于模32运算}
}输出结果:
2
1073741822
8
3.3 运算符优先级

4. Java中的包
在Java中,可以在模块中创建不同的包,即文件夹,一般一个包代表一种功能或者其他,该包中可以创建多个类
创建规则:
域名反写,例如www.baidu.com写为com.baidu(去掉www.)
例如www.epsda.com创建一个包为scanner,写为com.espda.scanner
对于第一个包来说,com.epsda没有二级目录,但是在文件夹下scanner包在com.epsda下
如果需要创建一个与scanner平级的包,则需要右键com.epsda上一级的文件夹,比如src,同样输入com.epsda后面再输入新的包名,例如创建包if_else,写为com.epsda.if_else,创建完成后com.epsda下就会存在两个平级包并且此时会有二级目录,下次再需要创建一个与前两个包平级时只需要右键com.epsda包即可
5. Java中的数据输入
在Java中,使用Scanner类创建Scanner对象控制输入,使用Scanner类前需要引包,使用import关键字进行引包操作,语法如下
// package下方
import 包名;
// 类的上方
Scanner类在java.Util包中
使用Scanner创建一个对象
Scanner 对象名 = new Scanner(System.in);
使用对象名调用方法,一般使用两种
-
数值型(整型
nextInt()等) -
字符串型(
next(),nextLine())
对于字符串型的输入来说,next()遇到空白字符就会结束读取输入,和scanf()效果类似,而nextLine()则是遇到换行才结束,所以next()和nextLine()一般不会一起使用
package com.epsda.scanner;// 引包 import java.util.Scanner;/*** ClassName: com.epsda.scanner.Test_scanner* Package: PACKAGE_NAME* Description:** @author 憨八嘎* @version v1.0*/ public class Test_scanner {public static void main(String[] args) {// 创建scanner对象Scanner sc = new Scanner(System.in);// 输入整数int num = sc.nextInt();System.out.println("num = " + num);// 输入字符串,next()方法String name = sc.next();System.out.println("name = " + name);// 输入字符串,nextLine()方法name = sc.nextLine();System.out.println("name = " + name);} }输出结果: // 2 num = 2 // 这是一个带空格 的字符串 name = 这是一个带空格 name = 的字符串
如果需要同时使用next()和nextLine(),则next()和nextLine()中间可以加一个nextLine()处理next未读取到的空格,再使用nextLine()读取新的输入
package com.epsda.scanner;// 引包
import java.util.Scanner;/*** ClassName: com.epsda.scanner.Test_scanner* Package: PACKAGE_NAME* Description:** @author 憨八嘎* @version v1.0*/
public class Test_scanner {public static void main(String[] args) {// 创建scanner对象Scanner sc = new Scanner(System.in);// 输入整数int num = sc.nextInt();System.out.println("num = " + num);// 输入字符串,next()方法// 输入“这是一个带空格 的字符串”String name = sc.next();// 只取到“这是一个带空格”System.out.println("name = " + name);// 使用nextLine()处理next()剩余为读取的部分String rest = sc.nextLine();// 输入字符串,nextLine()方法name = sc.nextLine();// 直到遇到\n结束System.out.println("name = " + name);}
}输入和输出结果:
// 2
num = 2
// 这是一个带空格 的字符串
name = 这是一个带空格
// 这是一个带空格的字符串
name = 这是一个带空格的字符串
6. Random类
在Java中,如果想要使用系统生成的伪随机数,可以使用Java的伪随机类Random生成伪随机数,同Scanner类,Random类也再java.util包中,所以使用Random类也需要先引包
import java.util.Random;
引包后,通过Random类创建Random对象
Random r = new Random();
对于Random类来说,有下面的方法(其他类型的方法类似):
-
nextInt():生成整型范围内的任意一个数值 -
nextInt(int bound):生成0-bound-1中的任意一个数值
package com.epsda.random;import java.util.Random;/*** ClassName: Test_random* Package: com.epsda.random* Description:** @author 憨八嘎* @version v1.0*/
public class Test_random {public static void main(String[] args) {Random r = new Random();System.out.println("r = " + r);Random rb = new Random();int data = rb.nextInt(100);// 生成0-99中的一个数值System.out.println("data = " + data);int i = rb.nextInt(900) + 100;//生成100-999中的一个数值System.out.println("i = " + i);}
}输出结果:
data = 518372707
data1 = 76
data2 = 648
7. 分支和循环语句
因为Java中的分支和循环语句与C/C++语法相同,此处不再赘述
在IDEA中,快速生成
for循环可以使用变量名.fori
需要注意的是,Java中没有goto语句,但是有标签,但是只能配合循环控制语句使用
标签名:
while(判断表达式){continue 标签名;// break 标签名;
}
对于其他两个循环也是如此
7.1 猜数字小游戏(结合Random类)
package com.epsda.guessGame;import java.util.Random;
import java.util.Scanner;/*** ClassName: guessGame* Package: com.epsda.guessGame* Description:** @author 憨八嘎* @version v1.0*/public class GuessGame {public static void main(String[] args) {// 生成伪随机数Random r = new Random();int ans = r.nextInt(100) + 1;// 猜1-100中间的数值// 读取用户的输入Scanner s = new Scanner(System.in);int input = s.nextInt();// 死循环读取直到用户猜对while (true) {if (input == ans) {System.out.println("猜对了");break;} else if (input < ans) {System.out.println("猜小了,重新猜");} else {System.out.println("猜大了,重新猜");}input = s.nextInt();}}
}相关文章:
C++转Java基础知识
目录 1. Java基础知识 1.1 JDK和JVM 1.2 Java基础代码演示 1.3 Java中的注释 1.4 Java中的关键字 1.5 Java中的println和print的区别 2. Java中的数据类型 2.1 常量 2.2 标识符 2.3 变量 2.4 类型转换 2.5 自动类型转换 2.6 强制类型转换 3. 运算符 3.1 自增运算…...
搭建jenkins一键部署java项目
一、搭建jenkins 链接: https://pan.baidu.com/s/1jzx15PiyI8EhLd_vg7q8bw 提取码: ydhl 复制这段内容后打开百度网盘手机App,操作更方便哦 直接使用docker导入镜像,运行就好 docker run -di --name jenkins -p 8080:8080 -v /home/jenkins_home:/var/je…...
从零到一打造自己的大模型(一)模型实现
前言 最近看了很多大模型,也使用了很多大模型。对于大模型理论似乎很了解,但是好像又缺点什么,思来想去决定自己动手实现一个 toy 级别的模型,在实践中加深对大语言模型的理解。 在这个系列的文章中,我将通过亲手实践…...
【开源项目】基于RTP协议的H264码流发送器和接收器
RTP协议 1. 概述1.1 RTP协议1.2 RTP和UDP的关系 2. RTP打包H264码流2.1 RTP单一传输2.2 RTP分片传输2.3 RTP多片合入传输 3.工程3.1 头文件3.1.1 rtp.h3.1.2 utils.h 3.2 cpp文件3.2.1 rtp.cpp3.2.2 utils.cpp 4.测试5.小结 参考: 视音频数据处理入门:UD…...
【C++】4.类和对象(2)
文章目录 1.类的默认成员函数2.构造函数 1.类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,需要注意的是这6个中最重要的是前…...
搭建基于树莓派的Linux学习环境(TODO)
主要是想学一下Linux内核,所以搭一套环境,其实有几个选择,好几个都是我买了板子的。 首先是正点原子的RK3568,最早是想弄安卓,但是SDK的大小真的把我劝退了,动不动几百个G的空间,还有就是保底1…...
《大电机技术》是什么级别的期刊?是正规期刊吗?能评职称吗?
问题解答 问:《大电机技术》是不是核心期刊? 答:不是,是知网收录的第一批认定学术期刊。 问:《机电产品开发与创新》级别? 答:省级。主管单位:哈尔滨电气集团公司 主办…...
Python 中使用 Split 忽略逗号
在 Python 中,split 方法可以用于将字符串分割成列表,默认情况下使用空格作为分隔符,但你也可以指定其他分隔符。若想使用 split 方法忽略逗号并按其他分隔符分割字符串,可以使用以下几种方法。 1、问题背景 在 Python 中&#x…...
YOLOv10改进 | 主干篇 | YOLOv10引入CVPR2023 顶会论文BiFormer用于主干修改
1. 使用之前用于注意力的BiFormer在这里用于主干修改。 YOLOv10改进 | 注意力篇 | YOLOv10引入BiFormer注意力机制 2. 核心代码 from collections import OrderedDict from functools import partial from typing import Optional, Union import torch import torch.nn as n…...
sql注入靶场搭建
1.安装小皮面板(PhpStudy) 1.从官网下载:http://www.xp.cn 2、Sqli-labs环境安装 准备好sqli-labs-php7-master文件 3.安装之前确保本地没有下载mysql服务器 如果电脑下载了MySQL可以把MySQL的服务停掉 此电脑>右键>管理>服务…...
【MySQL】MySQL的JSON特性
引言 MySQL从5.7版本开始引入了JSON数据类型,并在8.0版本中大大增强了JSON的支持,包括函数和索引功能。JSON数据类型允许你在MySQL表中存储JSON文档,这些文档可以是对象或数组,并且你可以使用SQL查询来检索、搜索、更新和修改这些…...
微信小程序 - 自定义计数器 - 优化(键盘输入校验)
微信小程序通过自定义组件,实现计数器值的增加、减少、清零、最大最小值限定、禁用等操作。通过按钮事件触发方式,更新计数器的值,并修改相关联的其它变量。通过提升用户体验,对计数器进行优化设计,使用户操作更加便捷…...
Nacos 容器化安装和代理配置指南
简介 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。本文将介绍如何使用 Docker 容器化安装 Nacos 以及如何配置 Nacos 的代理。 前提条件 已安装 Docker 和 Docker Compose基本的 Doc…...
css水波浪动画效果
为缩小gif大小,动画效果做了加速,效果如下: <!DOCTYPE html> <html> <head> <style> *{padding:0;margin:0;}/*清除默认填充及边距*/.water{position:relative;width:100vw;height:100vh;overflow:hidden;background…...
SQL二次注入
目录 1.什么是二次注入? 2.二次注入过程 2.1寻找注入点 2.2注册admin#用户 2.3修改密码 1.什么是二次注入? 当用户提交的恶意数据被存入数据库后,因为被过滤函数过滤掉了,所以无法生效,但应用程序在从数据库中拿…...
深入学习小程序开发第二天:数据绑定与动态更新
一、概念 在小程序中,数据绑定是指将页面的数据和视图进行关联,使得数据的变化能够自动反映在视图上,而不需要手动操作DOM。这种绑定是双向的,即数据改变时视图更新,视图操作(如用户输入)也能改变数据。 二、用法 1.单向数据绑定与双向数据绑定: 在小程序中,数据绑定…...
【ai】 时间序列分析的python例子
时间序列分析 :分析和理解随时间变化的数据序列 在gcc的趋势滤波后,需要对排队延迟梯度进行检测及调整,参考的是一个阈值, 调整阈值时就使用了时间序列分析技术: 时间序列分析是统计学和数据分析中的一种技术,用于分析和理解随时间变化的数据序列。时间序列数据具有时间上…...
生成订单幂等性(防止订单重复提交)
订单唯一性(防止重复下单)方案 重复下单产生原因: 客户端原因: 比如下单的按键在点按之后,在没有收到服务器请求之前,按键的状态没有设为已禁用状态,还可以被按。又或者,在触摸屏下,用户手指…...
IDEA自定义注释模版
1.类(接口/枚举等同理) 2.方法模版 先自定义一个模版组,然后在里面添加模版名,触发快捷键(Tab/Enter),模版描述,哪些语言中应用 模版中的自定义参数params和returns可以自动展开参数…...
Spring Cloud Gateway实现API访问频率限制
Spring Cloud Gateway实现API访问频率限制 一、为什么需要访问频率限制?二、使用全局过滤器实现访问频率限制步骤:示例代码: 三、使用特定路由的过滤器实现访问频率限制步骤:示例代码: 四、总结 在微服务架构中&#x…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
