Java系统学习笔记

计算机知识

CMD

环境变量

想要在任意目录下都可以打开指定的软件,就可以把软件的路径配置到环境变量中。

JDK

JDK安装目录中

javac 是JDK提供的一个工具,可以通过这个工具,把java文件编译成class文件
java 也是JDK提供的一个工具,作用就是用来运行代码的。运行当前路径下的class文件(不加后缀名)

JAVA基础语法

Java入门

如何理解编译?

Java不能直接运行代码,需要编译后运行。

编译成自解码文件(不是给人看的,给计算机看的)

常见小问题

java代码必须使用英文状态下的符号

直接在文件夹的路径中输入 cmd 可以直接用cmd打开当前路径

JRE和JDK

JDK(Java Development kit):Java开发工具包

  • JVM:虚拟机,真正运行代码的地方
  • 核心类库:Java事先定义好的东西
  • 开发工具:javac 编译工具、java 运行工具、jdb 调试工具、jhat 内存分析工具

JRE(Java Runtime Environment):Java的运行环境

  • JVM
  • 核心类库
  • 运行工具

Java基础概念

注释

单行注释  //

多行注释  /*    */

单行注释和多行注释  一般都要避免嵌套

文档注释  /**    */
java有自带的工具可以根据文档注释自动的生成说明文档

关键字

关键字:被java赋予了特定涵义的英文字母

【特点】全部小写,有特殊颜色标记

class

用于(创建/定义)一个类。类是Java最基本的组成单元。后面跟随 类名。

字面量

告诉程序员数据在程序中的书写格式

字面量类型
字面量类型说明举例

整数类型

不带小数点的数字666,-88
小数类型带小数点的数字13.14,-25.22
字符串类型用双引号括起来的内容"HelloWorld","黑马程序"
字符类型用单引号括起来,内容只能有一个'A','0','我'
布尔类型布尔值,表示真假只有两个值:true,false
空类型一个特殊的值,空值

null

  • null是不能直接打印的,只能以字符串的格式打印出来
特殊类型的字面量
\t  制表符

不是单一的缩进、对齐、空格。→ 是在打印的时候,把前面的字符串的长度补齐到8,或者8的整数倍。最少补一格,最多补8格。

\r

\n

变量

【定义】在程序的执行过程中,其值又可能发生改变的量(数据)
当某个数据经常发生改变时,可以用变量存储。当数据变化时,只要修改变量里面记录的值。

变量的定义格式

数据类型  变量名 = 数据值;

变量名可以理解为  为空间(小箱子)起的名字,数据值  存在空间里面的数值
数据类型:为空间中存储的数据,加入类型限制

!! 

  • 变量只能存一个值,会覆盖
  • 变量名不能重复(是指重复用数据类型来定义同名变量)
  • 一条语句可以定义多个变量
  • 变量在使用之前一定要进行赋值   (建议:在定义变量时直接赋值)
  • 变量的作用域范围(后续讲解)

数据存储

计算机中的数据:文本(数字、字母、汉字)、图片、声音

在计算机中,任意数据都是以二进制的形式来存储的

不同进制的表现形式
  • 二进制:由0和1组成,代码中以 0b 开头
  • 十进制:由0~9组成,前面不加任何前缀
  • 八进制:由0~7组成,代码中以 0 开头
  • 十六进制:由0~9和a~f组成,代码中以 0x 开头
进制之间的转换

(1)其他进制转十进制

公式:系数 * 基数的权次幂  相加
系数 - 每一位上的数    基数 - 当前进制    - 从右往左,依次是0 1 2 3 4 5...

(2)十进制转其他进制

除基取余法:不断除以基数(几进制,基数就是几)得到余数,直到商为0,再将余数倒着拼起来

图片数据

黑白图、灰度图、彩色图

分辨率、像素、三原色

计算机中的三原色:红、绿、蓝(三基色:红、黄、蓝) RGB

取值范围:0~255   (255255255

声音数据

对声音的波形图进行采样再存储

数据类型

基本数据类型

/ 引用数据类型(后续在数组和面向对象的课程中学习)

数据类型关键字取值范围内存占用
整数byte-128 ~ 1271
short-32768 ~ 327672
int-2147483648 ~ 2147483647(10位数)4
long-9223372036854775808~9223372036854775808(19位数)8
浮点数float-3.401298e-38  ~  3.402823e+384
double-4.9000000e-324  ~  1.797693e+3088
字符char0-655352
布尔booleantrue,false1

int、double为对应类型的默认类型

如果要定义long类型的变量,在数据值后面需要加一个L作为后缀(大小写都可)

如果要定义float类型的变量,在数据值后面需要加一个F作为后缀

整数和小数取值范围大小关系:double > float > long > int > short > byte

标识符

【定义】自己给类,方法,变量等起的名字

命名规则
  • 硬性要求
  1. 由数字、字母、下划线(_)和美元符($)组成
  2. 不能以数字开头
  3. 不能是关键字
  4. 区分大小写
  • 软性建议
  1. 小驼峰命名法:方法、变量
    标识符是一个单词的时候,全部小写  name
    标识符由多个单词组成的时候,第一个单词首字母小写,其他单词首字母大写  firstName
  2. 大驼峰命名法类名
    标识符是一个单词的时候,首字母大写  Student
    标识符由多个单词组成的时候,第一个单词首字母大写  GoodStudent

!! 见名知意

键盘录入

Java帮我们写好了一个类叫 Scanner,这个类就可以接收键盘输入的数字。

步骤一:导包  ---  Scanner这个类在哪

import java.util.Scanner;

// 导包的动作必须出现在类定义的上边

步骤二:创建对象  ---  表示要开始用Scanner这个类了

Scanner sc = new Scanner(System.in);
// 上面这个格式里,只有sc是变量名,可以变。其他的都不允许变

步骤三:接收数据  ---  真正要开始干活了

int i = sc.nextInt();
// 只有i是变量名,可以变,其他的都不允许变。

IDEA

程序的输出结果 会在下方的 控制台 展示

项目结构介绍

project(项目)》module(模块)》package(包)》class(类)

IDEA中类相关操作

新建类

要在想要新建类的包上右击,否则会建到其它地方去

删除类

直接右击删除

修改类名

一起更改文件名和类名。

快捷键: shift + F6

IDEA中模块相关操作

新建模块

File -> Project Structure

删除模块、修改模块、导入模块(后续讲)

IDEA中项目相关操作

关闭项目

File -> Close Project

新建项目

打开项目、修改项目(后续讲)

新建包

com.itheima.demo1  是一个多级包
右击 openin -> explorer 可以打开本地文件夹的位置

编写代码中的技巧

快速生成main方法: psvm + 回车

输出语句:  sout + 回车

运算符

学习【算术运算符、自增自减运算符、赋值运算符、关系运算符、逻辑运算符、三元运算符】六种运算符 以及 运算符优先级

算术运算符

运算符:对字面量或变量进行操作的符号

表达式:用运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式。(不同运算符连接的表达式体现的是不同类型的表达式)

 【加、减、乘、除、取模】% 取模就是取余数

在代码中,如果有小数参与计算,结果有可能不精确。具体原因,后续讲解,涉及小数在计算机中的存储模式。

结果:

  1. 整数参与计算,结果只能得到整数
  2. 小数参与计算,结果有可能是不精确的。如果需要精确计算,需要用到后面的知识

% 结果:

  1. 可以用 取模 来判断,A是否可以被B整除
  2. 可以判断A是否为偶数
  3. 以后,应用于 地主发牌
“+” 操作的三种情况
  • 数字相加

数字进行运算时,数据类型不一样是不能运算的,需要转成一样的类型,才能运算。

隐式转换和强制转换

隐式转换:取值范围小的数值 变为 取值范围大的数值

强制转换:取值范围大的数值 变为 取值范围小的数值

隐式转换

byte < short < int < long < float < double

!!

  1. 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
  2. byte short char 三种类型的数据在运算的时候,都会直接先提升为 int,然后再进行运算

强制转换 

格式: 目标数据类型 变量名 = (目标数据类型)被强转的数据;

数据较大时,强转时数值可能会发生错误!

------------------------------------------------------

  • 字符串相加

当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了。会将前后的数据进行拼接,并产生一个新的字符串。

"123" + 123  -> "123123"  

连续进行“+”操作时,从左到右逐个执行。

1 + 99 + "年" -> "100年"

变量拼接的是变量值。

------------------------------------------------------

  • 字符相加

字符 + 字符字符 + 数字  时,会把字符通过ASCII码表查询到对应的数字再进行计算。

'a' + 1 = 98   =>    'a' = 97

自增自减

++:变量的值加 1

- -:变量的值减 1 

++ 和 -- 既可以放在变量的前面,也可以放在变量的后面。不管放前还是放后,单独写一行,运行的结果是一样的。
!! 参与计算时,稍有不同: a++ 先用后加 ; ++a 先加后用

赋值运算符

=+=-=*=/=%=】运算后赋值

扩展的赋值运算符底层都隐藏了一个强制类型转换

short s = 1;
s += 1;   =>   s =(short) (s + 1);

关系运算符(比较运算符)

==!=>>=<<=】成立为true,不成立为false

关系运算符的结果都是Boolean类型的,要么是true,要么是false。

逻辑运算符

什么是逻辑运算符?

在数学中,我们可以表示为5 < x < 15。Java中,需要先拆解,再进行合并表达。

拆解为:x > 5  和 x < 15  , 合并后: x > 5 & x < 15

符号作用说明
&逻辑与(且)并且,两边都为真,结果才是真
|逻辑或或者,两边都为假,结果才是假
^逻辑异或相同为 false,不同为 true
!逻辑非取反

短路逻辑运算符

&& 短路与 、  || 短路或】结果和普通逻辑运算符一致,但是有短路效果(左边表达式已经能判断出最终结果了,右边的表达式就不判断了)

三元运算符

作用:可以进行判断,根据判断的结果得到不同的内容

格式:关系表达式?表达式1:表达式2 

关系表达式结果为真就执行 表达式1,结果为假就执行 表达式2

三元表达式的最终一定要使用(赋值给变量)

运算符的优先级

()优先于所有运算符

原码、反码、补码

原码:十进制数据的二进制表现形式,最左边是符号位,0为正,1为负

反码:正数的补码反码是其本身,负数的反码是符号位保持不变,其余位取反

补码:正数的补码是其本身,负数的补码是在其反码的基础上+1

1000 0000:-128   既没有原码,也没有反码,只有补码的形式

计算机中的计算和存储都是以补码的形式存在的

一个字节的取值范围:-128 ~ +127  就是这个原因

利用原码进行计算,正数没有问题。但在负数计算时会出错,因为与正确的运算方向相反。反码就是为了解决原码不能计算负数的问题才出现的。负数运算时如果跨0,跟实际结果会有1的偏差,因此出现了补码。

原码也有逻辑与&、逻辑或|

<<  左移:向左移动,低位补0

判断和循环

流程控制语句

顺序结构

Java程序默认的执行流程,按照代码的先后顺序,从上往下依次执行

分支结构
if
  1. 大括号的开头可以另起一行书写,但建议卸载 if 那一行的末尾
  2. 在语句体中,如果只有一句代码,大括号可以省略不写。建议,还是不要省略..
  3. 如果对一个布尔类型的变量进行判断,不要用==号,直接把变量写在小括号中
if(关系表达式1){语句体1;
}else if(关系表达式2){语句体2;
}...
else{语句体n+1;
}
switch
switch(){case 值1:语句体1;break;case 值2:语句体2;break;...case 值3:语句体n+1;break;
}
  1. 表达式中取值为byte、short、int、char可以是枚举,JDK7以后可以是string
  2. case:后面跟的是要和表达式进行比较的值。只能是字面量,不能是变量。值不允许重复
  3. break:表示中断,用来结束switch语句
  4. default:表示所有情况都不匹配,就执行该处内容

default的位置和省略

default可以省略,语法不会有问题,但不建议省略。
default不一定写在最下面,可以写在任意位置,按习惯写在最下面。

case穿透

不写break就会导致case穿透,没有break会执行下一个case中的语句体。

switch新特性

JDK12之后,可以有不写break的写法。具体有需要再了解

switch和if第三种格式各自的使用场景

if的第三种格式多用于对范围的判断,switch把有限个数据一一列举,任选其一

巧妙利用case穿透,可以在switch语句中省略相同代码

-- 也可以这么写
case 1,2,3,4,5:
循环结构

什么是循环?

  • 重复的做某件事情
  • 具有明确的开始和停止标志
for循环
for(初始化语句;条件判断语句;条件控制语句){循环体语句
}

拓展:

  1. 求和的变量不能定义在循环里面,因为变量只在所属的大括号中有效
  2. 如果我们把变量定义在循环里面,那么当前变量只能在本次循环中有效。当本次循环结束后,变量就会从内存中消失。第二次循环开始的时候,又会重新定义一个新的变量。
  3. 下次累加求和的变量,应该把变量定义在循环的外面

快捷键:100.fori  ->  for(int i=0;i<100;i++){ }

while
初始化语句;
while(条件判断语句){循环体语句;条件控制语句;
}

for 和 while 对比

  • for循环中,控制循环的变量,因为归属for循环的语法结构中;在for循环结束后,就不能再被访问到了
  • while循环中,控制循环的变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用
  • 知道循环次数或范围时,多用for循环;只知道循环的结束条件,多用while循环

do ... while
初始化语句;
do{循环体语句;条件控制语句;
}while(条件判断语句);

数组

数组的概述和静态初始化

数组指的是一种容器,可以用来存储同种数据类型的多个值。

数组容器在存储数据的时候,需要结合隐式转换。

数组的定义:

数据类型 [ ] 数组名    &&    数据类型  数组名 [ ] 

静态初始化

初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程

格式:

数据类型 [] 数组名 = new 数据类型[]{元素1,元素2,元素3...}

【简写格式:数据类型 [ ] 数组名 = {元素1,元素2,元素3...}

数组的地址值和元素访问

地址值

直接println数组,是打印出地址值

[D@776ec8df :其中 [ 表示当前是一个数组;D表示当前数组里面的元素都是double;@是一个间隔符号;776ec8df:才是数组真正的地址值(十六进制)。平时习惯把整体称作地址值

元素访问

利用索引可以读取数组中具体某一位上的数据

当访问了数组中不存在的索引,就会引发索引越界异常

数组遍历

遍历:将数组中的所有内容取出来,取出来之后可以(打印,求和,判断...)是取出数据的过程!

arr.length 可用于打印数组中的所有数据

Tips:一个循环只做一个事情!

数组动态初始化

动态初始化:初始化时只指定数组长度,由系统为数组分配初始值

数据类型 [] 数组名 = new 数据类型[数组长度]

数组默认初始化值的规律:整数类型 - 0 ;小数类型 - 0.0 ;字符类型 - ‘/u0000’(展示形式就是空格);布尔类型 - false ;引用数据类型 - null

动态初始化和静态初始化的区别:动态初始化手动指定数组长度,由系统给出默认初始化值。静态初始化手动指定数组元素,系统会根据元素个数,计算出数组的长度。

数组内存图

Java内存分配(JVM)

  • 栈                        方法运行时使用的内存,比如main方法运行,进入方法栈中执行

程序的主入口(main方法)开始执行时会进栈,代码执行完毕后会出栈

  • 堆                        存储对象或数组,new来创建的,都存储在堆内存

new出来的东西会在这块内存中开辟空间并产生地址

  • 方法区                 存储可以运行的class文件,字节码文件加载时进入的内存
  • 本地方法栈          JVM在使用操作系统功能的时候使用,与开发没什么关系
  • 寄存器                 给CPU使用,与开发没什么关系

如果new了多次,那么在堆里面有多个小空间,每个小空间中都有各自的数据。

两个数组指向同一个空间的内存图

其中一个数组对小空间中的值发生了改变,那么其他数组再次访问的时候都是修改后的结果了。

数组练习

1、求最值

注:将最值初始值设置为数组中的值!!为省略重复比较的过程,可以将循环条件改为从1开始。

2、求和并统计个数

随机数:bound:10 -- 0 ~ 9  ;随机数的范围一定是从0开始的,到这个数-1。包头不包尾

// 1.导包  -- Random这个类在哪 
import java.util.Random// 2.创建对象 --表示要开始用Random这个类了
Random r = new Random();  -- r是变量名// 3.生成随机数 
int number = r.nextInt(随机数范围);  -- number是变量名

3、交换数据

!println 打印会换行 ;print  打印不换行

核心思想:借助一个中间变量来交换数据

4、打乱数据

获取随即索引:

Random r = new Random();
int randomIndex = r.nextInt(arr.length);  --利用数组的长度

方法

什么是方法

方法(method)是程序中最小的执行单元。

提高代码的复用性、可维护性

方法的格式

把一些代码打包到一起,用到的时候就调用。这个把代码打包在一起,该过程称为方法定义

方法定义后并不是直接运行的,需要手动调用才能执行,该过程称为方法调用

最简单的方法定义&调用方式
  • 定义
public static void 方法名(){方法体(就是打包起来的代码);
}
  • 调用
方法名();

带参数的方法定义&调用方式

1.方法要干什么?

2.干这件事需要什么才能完成?

形参

全称形式参数,是指方法定义中的参数

实参

全称实际参数,是指方法调用中的参数

带返回值的方法定义&调用方式

方法的返回值就是方法运行的最终结果。

public static 返回值类型 方法名(){方法体;return 返回值;
}
  • 调用
  1. 直接调用:方法名(实参);
  2. 赋值调用:数据类型 变量名 = 方法名()实参;
  3. 输出调用:println

如果方法执行到return,那么整个方法全部结束;break是结束循环或结束switch

方法的重载

在同一个类中,方法名相同,参数不同(个数不同、类型不同、顺序不同)的方法。与返回值无关。

Java虚拟机会通过参数的不同来区分同名的方法。

顺序不同可以构成重载,但是不建议~

好处:定义方法时不用想多个名字,调用方法时也不用那么麻烦。

方法的内存

1)方法调用的基本内存原理

2)方法传递基本数据类型的内存原理

基本数据类型

  • 整数类型
  • 浮点数类型
  • 布尔类型
  • 字符类型

引用数据类型

  • 除了左边的所有数据类型

基本数据类型变量中存储的是真是的数据,数据值是存储在自己的空间中的;

赋值给其他变量,也是赋的真实的值。

传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值。

3)方法传递引用数据类型的内存原理

引用存储类型变量中存储的是地址值;数据值是存储在其他空间中的(堆),自己空间中存储的是地址值;

赋值给其他变量,也是赋的地址值。

斯坦福大学练习题

CTRL + P  查看形参顺序

CTRL + alt + M 自动抽取方法

题目没看完~

-------------------------------------------

面向对象

面向对象介绍

面向对象重点学习

  • 如何获取已有对象并使用
  • 如何自己设计对象并使用 → 面向对象语法

类和对象

对象可以理解为一个个能帮助我们解决问题的东西,这些东西需要按照设计图造出来。

类(设计图):是对象共同特征的描述;

对象:是真实存在的具体东西。

-- Java中,必须先设计类,才能获得对象。--

如何定义类

public class 类名{1. 成员变量(代表属性,一般为名词)2. 成员方法(代表行为,一般是动词)3. 构造器(后面学习)4. 代码块(后面学习)5. 内部类(后面学习)
}

如何得到类的对象

类名 对象名 = new 类名();

如何使用对象

  • 访问属性:对象名.成员变量
  • 访问行为:对象名.方法名(...)

IDEA中,右击类 → split and move right  可以左右窗口方便查看

定义类的补充注意事项

  • 用来描述一类事物的类,专业叫做:JavaBean类。在JavaBean类中,是不写main方法的。
  • 以前编写含有main方法的类,叫做测试类。我们可以在测试类中创建JavaBean类的对象并进行赋值调用。
  • 类名 -- 首字母建议大写,需要见名知意,驼峰模式
  • 一个java文件中可以定义多个class类,且只能一个类是public修饰的,而且public修饰的类名必须成为代码文件名。实际开发中建议一个文件定义一个class类
  • 成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值;一般无需指定初始化值,存在默认值。

封装

面向对象的三大特征:封装、继承、多态

封装告诉我们,如何正确设计对象的属性和方法

原则:对象代表什么,就得封装对应的数据,并提高数据对应的行为

封装的好处

  • 让编程变得简单,有事找对象调方法就行
  • 降低学习成本,可以少学少记,有需要时去找方法就行

private关键字

是一个权限修饰符,可以修饰成员(成员变量和成员方法),被 private 修饰的成员只能在本类中才能访问

针对 private 修饰的成员变量,如果需要被其他类使用,提供相应的操作:提供“setxxx(参数)”方法,用于给成员变量赋值,方法用public修饰;提供“getxxx()”方法,用于获取成员变量的值,方法用public修饰

this关键字

成员定义在方法中,就是局部变量;定义在方法外,就是成员变量

就近原则:当局部变量和成员变量一致时,没有任何前缀的使用变量,按照就近原则

this.变量  直接使用成员变量

构造方法

构造方法也叫做构造器、构造函数。

作用:在创建对象的时候给成员变量进行初始化的

构造方法的格式

public class Student{修饰符 类名(参数){方法体;}
}

特点

  • 方法名与类名相同,大小写也要一致
  • 没有返回值类型,连void都没有
  • 没有具体的返回值(不能由return带回结果数据)

空参构造方法在构造对象时成员变量都是默认初始化值,带参构造方法可以在方法中给所有成员变量赋值。

创建对象时由虚拟机调用构造方法,不能手动调用

每创建一次对象,就会调用一次构造方法。

如果自己没有写任何的构造方法,那么虚拟机会加一个空参构造方法(创建对象时调用),需要更改成员变量的值时可使用构造方法来赋值。空参构造在不知道属性值时很实用

构造方法注意事项

  1. 构造方法的定义:如果没有定义构造方法,系统将给出一个默认的无参数构造方法;如果定义了构造方法,系统将不再提供默认的构造方法
  2. 构造方法的重载:带参构造方法,和无参构造方法,两者方法名相同,但是参数不同,这叫构造方法的重载
  3. 推荐的使用方式:无论是否使用,都手动书写无参构造方法和带全部参数的构造方法

TIPS:说构造方法是用来创建对象的。这句话其实不太对。构造方法是创建对象时,给成员变量进行初始化的!!只是创建对象中的一步

标准的JavaBean类

①类名需要见名知意

②成员变量使用private修饰

③提供至少两个构造方法

  • 无参构造方法
  • 带全部参数的构造方法

④成员方法

  • 提供每一个成员变量对应的 setXxx()/getXxx()
  • 如果还有其他行为,也需要写上

快捷键alt + fn + insert

构造方法 【Constructor】  ->  【select none】空参
                                            -> 【全选 + ok】带全参

【Getter and Setter】 -> 【全选 + ok】为每个成员变量生成方法

(插件PTG 可实现1秒生成标准JavaBean,需连接外网)

对象内存图

一个对象的内存

Student s = new Student();

创建一个对象,内存中会做的事:

1.加载class文件
2.声明局部变量
3.在堆内存中开辟一个空间
4.默认初始化
5.显示初始化
6.构造方法初始化(4.5.6.是对3.中的变量进行赋值)
7.将堆内存中的地址值赋值给左边的局部变量

多个对象的内存

新new一个对象,就在堆内存中新开辟一块空间,对应新的地址值。不过不需额外加载一次class字节码文件

两个引用指向同一个对象

Student stu2 = stu1;表示stu2也指向stu1指向的001(两个对象指向同一个地址,此时其中一个对象改变空间中的值,其他对象访问的就是改变后的值)

stu1 = null;表示将null赋值给了stu1的地址,意味着图中的红线断开

基本数据类型和引用数据类型的区别

基本数据类型的数据值是存储在自己的空间中的。

特点:赋值给其他变量,也是赋的真实的值

引用数据类型:数据值是存储在其他空间中,自己空间中存储的是地址值。

特点:赋值给其他变量,赋的地址值

this的内存原理

this的本质:所在方法调用者的地址值

成员变量和局部变量

面向对象综合案例

souf::System.out.printf    两部分参数:

第一部分参数:要输出的内容%s(占位)
第二部分参数:填充的数据

ctrl + P : 展示方法所对应的参数

API

字符串

集合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/57540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言部分输入输出(printf函数与scanf函数,getchar与putchar详解,使用Linux ubuntu)

1.输入输出 1.1.按格式输入输出 printf 可以在man手册中查看 int printf(const char *format, ...); printf:函数名(参数)int:函数的返回值 功能&#xff1a;按格式在终端输出 参数&#xff1a;多参 返回值&#xff1a;输出字符个数 格式&#xff1a; %d int %c char…

WPF+MVVM案例实战(十五)- 实现一个下拉式菜单(上)

文章目录 1 案例效果2、图标资源下载3、功能实现1.文件创建2、菜单原理分析3、一级菜单两种样式实现1、一级菜单无子项样式实现2、一级菜单有子项样式实现 4、总结 1 案例效果 提示 2、图标资源下载 从阿里矢量素材官网下载需要的菜单图片&#xff0c;如下所示&#xff1a; …

Python 从入门到实战43(Pandas数据结构)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;可以熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们学习了NumPy数组操作的相关基础知识。今天学习一下pa…

电商行业的流程革命:创建SOP的最佳实践

在电商行业&#xff0c;随着业务规模的扩大和市场环境的快速变化&#xff0c;创建和遵循标准化操作程序&#xff08;SOP&#xff09;变得尤为重要。SOP不仅能够确保业务流程的一致性和高效性&#xff0c;还能帮助企业快速适应市场变化&#xff0c;提高服务质量。本文将探讨电商…

服务器宝塔安装哪吒监控

哪吒文档地址&#xff1a;https://nezha.wiki/guide/dashboard.html 一、准备工作 OAuth : 我使用的gitee&#xff0c;github偶尔无法访问&#xff0c;不是很方便。第一次用了极狐GitLab&#xff0c;没注意&#xff0c;结果是使用90天&#xff0c;90天后gg了&#xff0c;无法登…

计算机网络(Ⅶ)Web and HTTP

一些术语&#xff1a; Web页&#xff1a;由一些对象组成 对象可以是HTML文件&#xff0c;JPEG图像&#xff0c;Java小程序&#xff0c;声音剪辑文件等 Web页含有一个基本的HTML文件&#xff0c;该基本HTML文件又包含若干对象的引用&#xff08;链接&#xff09; 通过URL对每个对…

【ChatGPT】搜索趋势分析

【ChatGPT】搜索趋势分析 为了分析 ChatGPT 在过去一年的流行趋势&#xff0c;我们可以查看 Google Trends 的数据 安装依赖pytrends pip install pytrends运行以下 Python 脚本 import pandas as pd import matplotlib.pyplot as plt from pytrends.request import TrendR…

「MinIO快速入门」

官网&#xff1a;MinIO | S3 Compatible Storage for AI 中文&#xff1a;http://minio.org.cn/ MinIO 开始 MinIO 是一款高性能、开源的对象存储服务器。 一、主要特点 高性能 MinIO 采用了分布式架构&#xff0c;能够高效地处理大量数据的存储和访问请求。它针对多核处理…

C++ | Leetcode C++题解之第516题最长回文子序列

题目&#xff1a; 题解&#xff1a; class Solution { public:int longestPalindromeSubseq(string s) {int n s.length();vector<vector<int>> dp(n, vector<int>(n));for (int i n - 1; i > 0; i--) {dp[i][i] 1;char c1 s[i];for (int j i 1; j…

2024年,Rust开发语言,现在怎么样了?

Rust开发语言有着一些其他语言明显的优势&#xff0c;但也充满着争议&#xff0c;难上手、学习陡峭等。 Rust 是由 Mozilla 主导开发的通用、编译型编程语言&#xff0c;2010年首次公开。 在 Stack Overflow 的年度开发者调查报告中&#xff0c;Rust 连续多年被评为“最受喜爱…

【C/C++】模拟实现strlen

学习目标&#xff1a; 使用代码模拟实现strlen。 逻辑&#xff1a; strlen 需要输入一个字符串数组类型的变量&#xff0c;并且返回一个整型类型的数据。strlen 需要计算字符串数组有多少个元素。 代码1&#xff1a;使用计数器 #define _CRT_SECURE_NO_WARNINGS 1 #include&…

LLM | 论文精读 | 地学视觉语言大模型:Towards Vision-Language Geo-Foundation Model: A Survey

论文标题&#xff1a;Towards Vision-Language Geo-Foundation Model: A Survey 作者&#xff1a;Yue Zhou, Litong Feng, Yiping Ke, Xue Jiang, Junchi Yan, Xue Yang, Wayne Zhang 期刊&#xff1a;未提供 DOI&#xff1a;https://arxiv.org/abs/2406.09385 email&#x…

LC:贪心题解

文章目录 376. 摆动序列 376. 摆动序列 题目链接&#xff1a;https://leetcode.cn/problems/wiggle-subsequence/description/ 这个题目自己首先想到的是动态规划解题&#xff0c;贪心解法真的非常妙&#xff0c;参考下面题解&#xff1a;https://leetcode.cn/problems/wiggle…

淘宝商品评价API的获取与应用

在当今数字化时代&#xff0c;电商平台如淘宝已成为消费者购物的重要渠道。对于商家和开发者而言&#xff0c;如何高效地获取并利用商品评价数据&#xff0c;成为了提升产品竞争力和优化用户体验的关键。本文将详细介绍如何使用淘宝开放平台提供的商品评论API来获取这些宝贵的数…

类和对象(中)—— 类的六个默认成员函数

目录 1.类中的默认成员函数 2.构造函数 为什么要有构造函数 什么是构造函数 构造函数做了什么 默认生成的构造函数功能的分析 C11的补救 什么时候自己写构造函数 3.析构函数 为什么要有析构函数 什么是析构函数 析构函数做了什么 默认生成的析构函数功能的分析 什…

Java Executor ScheduledExecutorService 源码

前言 相关系列 《Java & Executor & 目录》《Java & Executor & ScheduledExecutorService & 源码》《Java & Executor & ScheduledExecutorService & 总结》《Java & Executor & ScheduledExecutorService & 问题》 涉及内容 …

[C++]C++知识点总结(Xmind思维导图)

目录 一、C入门基础 二、类和对象 三、C/C内存管理 四、模板 五、C的IO流 六、继承 七、多态 八、C11 九、智能指针 十、类型转换 由于C知识体系过于庞大&#xff0c;分为下面几个部分列出逻辑图&#xff08;有些不完整&#xff0c;后续更新中...&#xff09; 一、C入…

Elasticsearch分词器基础安装

简介 Elasticsearch (ES) 是一个基于 Lucene 的搜索引擎&#xff0c;分词器是其核心组件之一&#xff0c;负责对文本数据进行分析和处理。 1. 文本分析 分词器将输入的文本拆分成一个个单独的词&#xff08;tokens&#xff09;&#xff0c;以便后续的索引和搜索。例如&#x…

EfficientNet-B6模型实现ISIC皮肤镜图像数据集分类

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于opencv答题卡识别判卷】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【G…

扫雷游戏(C语言详解)

扫雷游戏&#xff08;C语言详解&#xff09; 放在最前面的1、前言&#xff08;扫雷游戏的简介&#xff09;2、扫雷游戏的规则&#xff08;简易版&#xff09;3、代码实现&#xff08;3.1&#xff09;提醒一下&#xff1a;( i ) 提醒1&#xff1a;( ii ) 提醒2&#xff1a; &…