java基础知识(二)

java基础知识(二)

内容介绍
Eclipse的安装、配置及使用
运算符
键盘录入

第1章Eclipse开发工具

1.1Eclipse概述和安装

Eclipse是一个IDE(集成开发环境)IDE(Integrated Development Environment)
集成了代码编写功能,分析功能,编译功能,调试功能等一体化的开发软件。
Eclipse的特点描述:免费、纯Java语言编写、免安装、扩展性强
下载和安装、下载 http://eclipse.org/
安装:绿色版、解压就可以使用(Eclipse)

1.2Eclipse的基本使用

1.2.1Eclipse基本操作
选择工作空间
工作空间 其实就是我们写的源代码所在的目录
用Eclipse来完成一个HelloWorld案例
A:创建Java项目:点击File或者在最左侧空白处,选择Java项目,在界面中写一个项目名称,然后Finish即可。
B:创建包:展开项目,在源包src下建立一个包com.itheima
C:创建类:在com.ithiema包下建立一个类HelloWorld
在界面中写一个类名:HelloWorld,然后finish即可。
D:编写代码:在HelloWorld类写main方法,在main方法中写
一条输出语句:我是程序员,我骄傲,我自豪。
E:编译:自动编译,在保存的那一刻帮你做好了
F:运行 选择要运行的文件或者在要运行的文件内容中
右键 – Run as - Java Application即可
1.2.2代码案例一

package com.itheima;

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("我shi程序员,我骄傲,我自豪");
	}
}

1.3Eclipse工作空间的基本配置
A:行号的显示和隐藏
显示:在代码区域的最左边的空白区域,右键 – Show Line Numbers即可。
隐藏:把上面的动作再做一次。
B:字体大小及颜色
a:Java代码区域的字体大小和颜色:
window – Preferences – General – Appearance – Colors And Fonts – Java – Java Edit Text Font
b:控制台
window – Preferences – General – Appearance – Colors And Fonts – Debug – Console font
c:其他文件
window – Preferences – General – Appearance – Colors And Fonts – Basic – Text Font
C:窗体给弄乱了,怎么办?
window – Perspective – Reset Perspective
D:控制台找不到了,怎么办?
Window–Show View—Console
1.4Eclipse中辅助键和快捷键的使用
1.4.1常用辅助键和快捷键概述
内容辅助键 alt+/
main 然后alt+/
syso 然后alt+/

快捷键
注释
单行 选中内容,ctrl+/, 再来一次取消
多行 选中内容,ctrl+shift+/, ctrl+shift+
格式化 ctrl+shift+f
1.4.2代码案例二

package com.itheima_02;
/*
 * 内容辅助键:alt+/
 * 		A:main方法
 * 			main,然后alt+/,回车
 * 		B:输出语句
 * 			syso,然后然后alt+/,回车
 * 
 * 快捷键:
 * 		A:注释
 * 			单行	选中内容,ctrl+/,再来一次就是取消
 * 			多行	选择内容,ctrl+shift+/,ctrl+shift+\
 * 		B:格式化
 * 			ctrl+shift+f
 */
public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("HelloWorld1");
		System.out.println("HelloWorld2");
		System.out.println("HelloWorld3");
		System.out.println("HelloWorld4");
		System.out.println("HelloWorld5");
	}
}

1.5Eclipse中项目的删除和导入

A:删除项目
	选中项目 – 右键 – 删除
	从项目区域中删除
	从硬盘上删除
B:导入项目
	在项目区域右键找到import
	找到General,展开,并找到
	Existing Projects into Workspace
	点击next,然后选择你要导入的项目
	注意:这里选择的是项目名称

第2章运算符

2.1算数运算符

•运算符
对常量和变量进行操作的符号称为运算符
•表达式
用运算符把常量或者变量连接起来符号java语法的式子就可以称为表达式。不同运算符连接的式子体现的是不同类型的表达式。
定义两个int类型的变量a,b,做加法(a + b)
•常用运算符
算术运算符
赋值运算符
关系运算符
逻辑运算符
三元运算符

2.1.1算数运算符的基本用法
2.1.2算数运算符概述
A:什么是运算符
就是对常量和变量进行操作的符号。
B:算数运算符有哪些
* +,-,*,/,%,++,–
2.1.3代码案例三

package com.itheima_01;
/*
 * 运算符:对常量和变量进行操作的符号
 * 表达式:用运算符连接起来的符合java语法的式子。不同类型的运算符连接起来的式子是不同的表达式。
 * 		举例:定义两个int类型的变量a,b,
 * 			a + b
 * 
 * 运算符分类:
 * 		算术运算符,赋值运算符,关系运算符,逻辑运算符,三元运算符。
 * 
 * 算术运算符:
 * 		+,-,*,/的基本使用
 */
public class OperatorDemo {
	public static void main(String[] args) {
		// 定义两个变量
		int a = 3;
		int b = 4;

		System.out.println(a + b);
		System.out.println(a - b);
		System.out.println(a * b);
		System.out.println(a / b);

		// 整数相除只能得到整数,要想得到小数,就必须有浮点数参与运算
		System.out.println(3 / 4.0);
		System.out.println(3.0 / 4);
	}
}

2.1.4算数运算符取余和除法的区别
%:取余运算符。得到的是两个相除数据的余数。
/:除法运算符。得到是两个相除数据的商。
使用场景: %:判断两个数据是否整除。
2.1.5代码案例四

public class OperatorDemo2 {
	public static void main(String[] args) {
		int a = 5;
		int b = 3;

		System.out.println(a / b);
		System.out.println(a % b);
	}
}

2.1.6字符和字符串参与加法操作
字符参与运算
其实是拿该字符对应的数值来操作
‘a’ 97
‘A’ 65
‘0’ 48
字符串参与运算
这里其实做的不是加法运算,而是字符串拼接。
字符串和其他类型的数据做拼接,结果是字符串类型的。
2.1.7代码案例五

package com.itheima_01;
/*
 * 整数的加法。
 * 字符参与加法操作。拿字符在计算机中底层存储对应的数据值来参与运算的。
 * 		'0'		48
 * 		'a'		97
 * 		'A'		65
 * 字符串参与加法操作。
 * 		这里的+其实不是加法,而是字符串连接符。
 */
public class OperatorDemo3 {
	public static void main(String[] args) {
		// 整数加法
		int a = 10;
		int b = 20;
		System.out.println(a + b);
		System.out.println("------------------");

		// 字符参与加法操作
		char c = '0';
		char c2 = 'a';
		System.out.println(a + c);
		System.out.println(a + c2);
		System.out.println("------------------");

		// 字符串参与加法操作
		System.out.println("hello" + a);
		System.out.println("hello" + a + b); // "hello"+10,然后再和b进行拼接
		System.out.println(a + b + "hello");
	}
}

2.1.8算数运算符++和- - 的用法
++,–运算符:对变量做加1或者减1的操作。
++或者–既可以放在变量的后面,也可以放在变量的前面。
单独使用的时候,++或者–无论是放在变量的前面还是后面,结果是一样的。
参与操作的时候:
如果++或者–在变量的后面,先拿变量参与操作,后变量做++或者–
如果++或者–在变量的前面,先变量做++或者–,后拿变量参与操作
2.1.9代码案例六

public class OperatorDemo4 {
	public static void main(String[] args) {
		int a = 10;
		System.out.println("a:" + a);

		// 单独使用
		// a++;
		// ++a;
		// System.out.println("a:" + a);

		// 参与操作使用
		// int b = a++;
		int b = ++a;
		System.out.println("a:" + a);
		System.out.println("b:" + b);
	}
}

2.2赋值运算符

2.2.1赋值运算符分类
基本的赋值运算符:=
扩展的赋值运算符:+=,-=,*=,/=,%=
+=: a+=20;相当于a = (a的数据类型)(a + 20);
2.2.2代码案例七

package com.itheima_02;
/*
 * 赋值运算符:
 * 		A:基本	=
 * 		B:扩展	+=,-=,*=,...
 * 
 * +=:
 * 		a+=20;
 * 		相当于
 * 		a = (a的数据类型)(a + 20);
 */
public class OperatorDemo {
	public static void main(String[] args) {
		// 把10赋值给int类型的变量a
		int a = 10;

		// += 把左边和右边的数据进行运算,最后赋值给左边。左边的只能是变量
		a += 10;// 相当于a = a + 10
		System.out.println("a:" + a);
		System.out.println("----------------------");

		short s = 10;
		// s += 20; // 相当于 s = s + 20;
		s = (short) (s + 20);
		System.out.println("s:" + s);
	}
}

2.3关系运算符

2.3.1基本使用及注意事项
关系运算符包含以下内容:
,!=,>,>=,<,<=
关系运算符的结果都是boolean型,也就是要么是true,要么是false。
注意事项:
关系运算符“
”不能误写成“=”。
2.3.2代码案例八
package com.itheima_03;

/*
 * 关系运算符:
 * 		==,!=,>,>=,<,<=
 * 		关系运算符的结果是boolean类型。
 * 
 * 注意:
 * 		千万不要把==写成=
 */
public class OperatorDemo {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		int c = 10;

		System.out.println(a == b);
		System.out.println(a == c);
		System.out.println("-----------------");
		System.out.println(a != b);
		System.out.println(a != c);
		System.out.println("-----------------");
		System.out.println(a > b);
		System.out.println(a > c);
		System.out.println("-----------------");
		System.out.println(a >= b);
		System.out.println(a >= c);
		System.out.println("-----------------");

		int x = 3;
		int y = 4;
		// System.out.println(x == y);
		// System.out.println(x = y);// 把y赋值给x,把x的值输出
		boolean bb = (x == y);
		// 报错
		// boolean cc = (x = y);
		int cc = (x = y);
	}
}

2.4逻辑运算符

2.4.1逻辑运算符概述
A:逻辑运算符有哪些
&,|,^,!
&&,||
B:案例演示
逻辑运算符的基本用法

C:注意事项:
a:逻辑运算符一般用于连接boolean类型的表达式或者值。
b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
算术表达式:a + b
比较表达式:a == b(条件表达式)
D:结论:
&逻辑与:有false则false。
|逻辑或:有true则true。
^逻辑异或:相同为false,不同为true。
!逻辑非:非false则true,非true则false。
特点:偶数个不改变本身。
2.4.2代码案例九

package com.itheima_04;
/*
 * 逻辑运算符:用于连接关系表达式。
 * &,|,^,!
 * &&,||
 * 
 * 与:&	有false则false
 * 或:|	有true则true
 * 异或:^ 相同则false,不同则true。(男女朋友)
 * 非:!	true则false,false则true
 */
public class OperatorDemo {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		int c = 30;

		System.out.println((a > b) & (a > c));// false & false
		System.out.println((a < b) & (a > c)); // true & false
		System.out.println((a > b) & (a < c)); // false & true
		System.out.println((a < b) & (a < c)); // true & true
		System.out.println("---------------");
		System.out.println((a > b) | (a > c));// false | false
		System.out.println((a < b) | (a > c)); // true | false
		System.out.println((a > b) | (a < c)); // false | true
		System.out.println((a < b) | (a < c)); // true | true
		System.out.println("---------------");
		System.out.println((a > b) ^ (a > c));// false ^ false
		System.out.println((a < b) ^ (a > c)); // true ^ false
		System.out.println((a > b) ^ (a < c)); // false ^ true
		System.out.println((a < b) ^ (a < c)); // true ^ true
		System.out.println("---------------");
		System.out.println((a > b)); // false
		System.out.println(!(a > b)); // !false
		System.out.println(!!(a > b)); // !!false
	}
}

2.4.3逻辑运算符&&与&的区别
A:&&和&的区别?
a:最终结果一样。
b:&&具有短路效果。左边是false,右边不执行。
&是无论左边是false还是true,右边都会执行
B:||和|的区别?
a:最终结果一样
b:||具有短路效果.左边是true,右边不执行
|是无论左边是false还是true,右边都会执行
2.4.4代码案例十:

package com.itheima_04;

/*
 * &&和&的结果一样
 * ||和|的结果一样
 * 
 * &&和&的区别:
 * 		&&如果左边是false,右边不执行。
 * 		&无论左边是true还是false,右边都会执行。
 */
public class OperatorDemo2 {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		int c = 30;

		System.out.println((a > b) && (a > c));// false && false
		System.out.println((a < b) && (a > c)); // true && false
		System.out.println((a > b) && (a < c)); // false && true
		System.out.println((a < b) && (a < c)); // true && true
		System.out.println("---------------");
		System.out.println((a > b) || (a > c));// false || false
		System.out.println((a < b) || (a > c)); // true || false
		System.out.println((a > b) || (a < c)); // false || true
		System.out.println((a < b) || (a < c)); // true || true
		System.out.println("---------------");

		int x = 3;
		int y = 4;
		// System.out.println((x++ > 4) & (y++ > 5)); // false & false
		System.out.println((x++ > 4) && (y++ > 5)); // false && false
		System.out.println("x:" + x);
		System.out.println("y:" + y);
	}
}

2.5三元运算符

2.5.1三元运算符概述
A:格式
(关系表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
B:示例:
获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数
2.5.2代码案例十一

package com.itheima_05;
/*
 * 三元运算符:
 * 
 * 格式:
 * 		(关系表达式)?表达式1:表达式2;
 * 执行流程:
 * 		A:计算关系表达式的值,看是true还是false
 * 		B:如果是true,表达式1就是运算结果
 * 		      如果是false,表达式2就是运算结果
 */
public class OperatorDemo {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;

		int c = (a > b) ? a : b;
		System.out.println("c:" + c);
	}
}

2.5.3代码案例十二(比较两个数是否相同)

package com.itheima_05;

/*	
 * 三元运算符的练习
 * 比较两个整数是否相同
 */
public class OperatorTest {
	public static void main(String[] args) {
		// 定义两个int类型的变量
		int a = 10;
		int b = 20;

		boolean flag = (a == b) ? true : false;
		// boolean flag = (a == b);
		System.out.println(flag);
	}
}

2.5.4代码案例十三(获取三个数中的最大值)

package com.itheima_05;
/*
 * 获取三个整数中的最大值
 */
public class OperatorTest2 {
	public static void main(String[] args) {
		// 定义三个int类型的变量
		int a = 10;
		int b = 30;
		int c = 20;

		// 先比较两个整数的大值
		int temp = ((a > b) ? a : b);
		int max = ((temp > c) ? temp : c);
		System.out.println("max:" + max);
	}
}

第3章键盘录入

3.1键盘录入的基本步骤

3.1.1键盘录入数据概述
我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,把数据改进为键盘录入,提高程序的灵活性。
键盘录入数据的步骤:
A:导包(位置放到class定义的上面)
import java.util.Scanner;
B:创建对象
Scanner sc = new Scanner(System.in);
C:接收数据
int x = sc.nextInt();

3.1.2代码案例十四

package com.itheima;
import java.util.Scanner;
/*
 * 为了提高程序的灵活性,我们就把数据改进为键盘录入。
 * 如何实现键盘录入呢?目前我们只能使用JDK提供的类Scanner。
 * 这个使用的步骤,目前大家记住就可以了。
 * 
 * 使用步骤:
 * 		A:导包
 * 			import java.util.Scanner;
 * 			类中的顺序:package > import > class
 * 		B:创建对象
 * 			Scanner sc = new Scanner(System.in);
 * 		C:接收数据
 * 			int i = sc.nextInt();
 */

public class ScannerDemo {
	public static void main(String[] args) {
		//创建键盘录入数据的对象
		Scanner sc = new Scanner(System.in);
		
		//接收数据
		System.out.println("请录入一个整数:");
		int i = sc.nextInt();
		
		//输出数据
		System.out.println("i:"+i);
	}
}

3.2键盘录入的练习

3.2.1键盘录入两个数据并求和
键盘录入两个数据,并对这两个数据求和,输出其结果
键盘录入:
A:导包
B:创建对象
C:接收数据
3.2.2代码案例十五

package com.itheima;

import java.util.Scanner;
public class ScannerTest {
	public static void main(String[] args) {
		// 创建对象
		Scanner sc = new Scanner(System.in);

		// 接收数据
		System.out.println("请输入第一个数据:");
		int a = sc.nextInt();

		System.out.println("请输入第二个数据:");
		int b = sc.nextInt();

		// 对数据进行求和
		int sum = a + b;
		System.out.println("sum:" + sum);
	}
}

3.2.3键盘录入两个数据比较是否相等
键盘录入两个数据,比较这两个数据是否相等
3.2.4代码案例十六

package com.itheima;
import java.util.Scanner;

/*
 * 键盘录入两个数据,比较这两个数据是否相等
 */
public class ScannerTest2 {
	public static void main(String[] args) {
		// 创建对象
		Scanner sc = new Scanner(System.in);

		// 接收数据
		System.out.println("请输入第一个数据:");
		int a = sc.nextInt();

		System.out.println("请输入第二个数据:");
		int b = sc.nextInt();

		// 比较两个数据是否相等
		// boolean flag = ((a == b) ? true : false);
		boolean flag = (a == b);
		System.out.println("flag:" + flag);
	}
}

3.2.5键盘录入三个数据获取最大值
键盘录入三个数据,获取这三个数据中的最大值
3.2.6代码案例十七

package com.itheima;

import java.util.Scanner;

/*
 * 键盘录入三个数据,获取这三个数据中的最大值
 */
public class ScannerTest3 {
	public static void main(String[] args) {
		// 创建对象
		Scanner sc = new Scanner(System.in);

		// 接收数据
		System.out.println("请输入第一个数据:");
		int a = sc.nextInt();

		System.out.println("请输入第二个数据:");
		int b = sc.nextInt();

		System.out.println("请输入第三个数据:");
		int c = sc.nextInt();

		// 如何获取三个数据的最大值
		int temp = (a > b ? a : b);
		int max = (temp > c ? temp : c);

		System.out.println("max:" + max);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
健身国际俱乐部系统是一种专为健身俱乐部设计的管理软件,它通过集成多种功能来提高俱乐部的运营效率和服务质量。这类系统通常包含以下几个核心模块: 1. **会员管理**:系统能够记录会员的基本信息、会籍状态、健身历史和偏好,以及会员卡的使用情况。通过会员管理,俱乐部可以更好地了解会员需求,提供个性化服务,并提高会员满意度和忠诚度。 2. **课程预约**:会员可以通过系统预约健身课程,系统会提供课程时间、教练、地点等详细信息,并允许会员根据个人时间表进行预约。这有助于俱乐部合理安排课程,避免资源浪费。 3. **教练管理**:系统可以管理教练的个人信息、课程安排、会员反馈等,帮助俱乐部评估教练表现,优化教练团队。 4. **财务管理**:包括会员卡销售、课程费用、私教费用等财务活动的记录和管理,确保俱乐部的财务透明度和准确性。 5. **库存管理**:对于俱乐部内的商品销售,如健身装备、营养补充品等,系统能够进行库存管理,包括进货、销售、库存盘点等。 6. **数据分析**:系统能够收集和分析会员活动数据,为俱乐部提供业务洞察,帮助俱乐部制定更有效的营销策略和业务决策。 7. **在线互动**:一些系统还提供在线平台,让会员可以查看课程、预约私教、参与社区讨论等,增强会员之间的互动和俱乐部的社区感。 8. **移动应用**:随着移动设备的普及,一些健身俱乐部系统还提供移动应用,方便会员随时随地管理自己的健身计划。 9. **安全性**:系统会确保所有会员信息的安全,采取适当的数据加密和安全措施,保护会员隐私。 10. **可扩展性**:随着俱乐部业务的扩展,系统应该能够轻松添加新的功能和服务,以适应不断变化的市场需求。 健身国际俱乐部系统的选择和实施,需要考虑俱乐部的具体需求、预算和技术能力,以确保系统能够有效地支持俱乐部的运营和发展。通过这些系统的实施,健身俱乐部能够提供更加专业和高效的服务,吸引和保留更多的会员,从而在竞争激烈的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值