Java快速入门

Java 是什么?

Java 的特点:

  • 面向对象
  • 平台无关(跨平台):
  • 简单
  • 安全
  • 体系结构 - 中性
  • 可移植
  • 健壮
  • 多线程
  • 解释型
  • 高性能
  • 分布式
  • 动态

Java安装及环境设置:

 

 

Java 基础语法

  • 对象 - 对象有状态和行为。例如:狗有状态色,名字,品种以及行为 - 摇头晃脑,吠叫,吃。对象是类的一个实例。
  • 类 - 类可以被定义为一个模板/蓝本描述该行为/状态及其支持对象类型。
  • 方法 - 方法基本上是一个行为。一个类可以包含(拥有)多个方法。 将逻辑写入方法,数据操纵和所有的动作都会被执行。
  • 实例变量 - 每个对象都有其独特(唯一)的实例变量。对象的状态是由分配给这些瞬间变量的值来创建。

 

第一个Java程序:

让我们来看看,以下代码将打印一个简单词语 Hello World

public class MyFirstJavaProgram{/* This is my first java program.  * This will print 'Hello World' as the output*/public static void main(String []args){System.out.println("Hello World"); // prints Hello World by manongjc.com}
} 

关于Java程序,记住以下几点非常重要。

  • 区分大小写 - Java是大小写敏感的,这意味着标识Hello和hello在Java中有不同的含义。
  • 类名称 - 对于所有的类名首字母应该大写。如果几个单词来形成一个类的名字,那么每个单词的第一个字母应该大写。例如:class MyFirstJavaClass
  • 方法名称 - 所有方法的名称的开始字母应该用小写字母。如果几个单词来形成方法的名称,那么每个单词的第一个字母要大写。例如:public void myMethodName()
  • 程序文件名 - 程序文件名应当和类名完全匹配。保存文件时,应该使用类名保存它(记住Java是区分大小写),再追加 '.java' 到文件名称的末尾.(如果文件名和类名不匹配程序将无法编译)。例如:假设“MyFirstJavaProgram”是类名。那么这个文件应当被保存为 'MyFirstJavaProgram.java'
  • public static void main(String args[]) - java程序处理是从main()方法开始,这是每一个Java程序开始的必须部分.

 

Java 标识符:

所有的Java组件都需要一个名字。用于类,变量和方法名称叫做标识符。

在Java中的标识符有几点要记住。它们如下:

  • 所有的标识符应该由字母(A至Z或a到z),货币字符($)或下划线(_)组成。
  • 标识符的第一个字符之后可以具有字符的任意组合。
  • 关键字不能被用作标识符。
  • 标识符最重要特点是区分大小写的。
  • 合法标识符的示例:age, $salary, _value, __1_value
  • 非法标识符的示例:123abc, -salary

 

Java修饰符:

就像其它语言,它可以改变类,方法等,通过使用修辞符。有两大类的修辞符。

  • 访问修饰符 : default, public , protected, private
  • 非访问修饰符 : final, abstract, strictfp

我们将会在下一节中研究/学习有关修饰符的更多细节。

 

Java 变量:

我们会看到下面Java的变量类型:

  • 局部变量
  • 类变量(静态变量)
  • 实例变量(非静态变量)

 

Java 数组:

数组是存储相同类型的多个变量的对象。然而数组本身就是在堆上的对象。我们将探讨如何声明,构建并初始化在即将到来的章节。

 

Java 枚举:

枚举是在Java 5.0中才开始进行介绍。枚举一个变量只限于几个预定义值之一。在此枚举列表中的值称为枚举。

通过使用枚举能够减少代码的错误的数量。

因为,如果我们考虑了鲜榨果汁店的一个应用实例将有可能限制玻璃尺寸为小,中,大。这将确保不会允许任何人订制尺寸在小型,中型或大型之外的类型。

例子:

class FreshJuice{enum FreshJuiceSize{ SMALL, MEDIUM, LARGE }FreshJuiceSize size;
}public class FreshJuiceTest{public static void main(String args[]){FreshJuice juice = new FreshJuice();juice.size = FreshJuice. FreshJuiceSize.MEDIUM ;System.out.println("Size :" + juice.size);}
}

:枚举可以声明为它们自己或在类中。方法,变量,构造函数可以也可以在枚举内定义。

 

Java 关键字:

下面列出了Java中的保留字(关键字)。这些保留字不可以用作常量或变量或任何其它标识符名称。

abstractassertbooleanbreak
bytecasecatchchar
classconstcontinuedefault
dodoubleelseenum
extendsfinalfinallyfloat
forgotoifimplements
importinstanceofintinterface
longnativenewpackage
privateprotectedpublicreturn
shortstaticstrictfpsuper
switchsynchronizedthisthrow
throwstransienttryvoid
volatilewhile  

 

Java 注释

Java支持单行和多行注释非常类似于C和C++的注释方式。 所有字符在注释里面,都是会被Java编译器忽略。

public class MyFirstJavaProgram{/* This is my first java program.* This will print 'Hello World' as the output* This is an example of multi-line comments.*/public static void main(String []args){// This is an example of single line comment/* This is also an example of single line comment. */System.out.println("Hello World"); }
} 

 

Java数据类型

在Java中可用两种数据类型:

  • 原始数据类型
  • 引用/对象数据类型

原始数据类型

Java语言支持八种原始数据类型。原始数据类型是由语言预定义且由关键字命名。 现在让我们来详细看看八种原始数据类型。

  • byte
  • short
  • int
  • long
  • float
  • double
  • boolean
  • char

引用数据类型

  • 使用类定义的构造创建引用变量。它们是用来访问对象。这些变量被声明为一个不能改变的特定类型。例如, Employee, Puppy 等。
  • 类对象,以及各种类型的数组变量,都在参考数据类型。
  • 任何引用变量的缺省值是null。
  • 引用变量可以用于引用声明类型或任何兼容类型的任何对象。例如: Animal animal = new Animal("giraffe")

 

Java 字面值

字面值是一个源代码表示的固定值。它们是直接用代码来表示,无需任何计算。

字面值可以被分配给任何基本类型的变量。例如:

byte a = 68;
char a = 'A'

在Java中的字符串字面值规定,就像它们在大多数其他语言的字符序列一样,使用一对双引号包围在它们之间。字符串的例子如下:

"Hello World"
"two\nlines"
"\"This is in quotes\""

java语言支持字符串以及一些特殊的转义序列字符文字。它们是:

符号字符表示
\n新一行 (0x0a)
\r回车 (0x0d)
\f换页 (0x0c)
\b退格 (0x08)
\s空格 (0x20)
\ttab
\"双引号
\'单引号
\\反斜线
\ddd八进制字符 (ddd)
\uxxxx十六进制UNICODE字符 (xxxx)

 

Java访问修饰符:

Java提供了一些访问修饰符来设置类,变量,方法和构造函数的访问级别。这四个访问级别分别是:

  • 可见到包。不需要修饰这是默认的。
  • 只可见到类(private)。
  • 可见到所有 (public).
  • 可见到包和所有子类(protected).

 

Java运算符

Java提供了一套丰富的运算符来操作变量。我们可以把所有的Java运算符分成以下几组:

1. 算术运算符

假设A=10, B=20,那么

运算符描述示例
+加法 - 对运算符的两侧的值增加A + B = 30
-减法- 从左操作数减去右操作数A - B = -10
*乘法- 相乘操作符两侧值A * B = 200
/除法 - 由右侧操作数除以左侧操作数B / A = 2
%模数- 由右侧操作数除以左侧操作数的余数B % A = 0
++增量- 操作数的值增加1B++ = 21
--递减 - 操作数的值减小1B-- = 19

 

2.关系运算符

运算符描述示例
==检查两个操作数的值是否相等,如果是,则条件为true。(A == B) 不为 true.
!=检查两个操作数的值是否相等,如果值不相等,则条件为true。(A != B) 为 true.
>检查左边的操作数的值是否大于右操作数的值,如果是,则条件为true。(A > B) 不为 true.
<检查左边的操作数的值是否小于右操作数的值,如果是,则条件为true。(A < B) 为 true.
>=检查左边的操作数的值是否大于或等于右操作数的值,如果是,则条件为true。(A >= B) 不为 true.
<=检查左操作数的值是否小于或等于右操作数的值,如果是,则条件变为true。(A <= B) 为 true.

 

3.位运算符:

运算符描述示例
&   二进制与(AND)操作符拷贝位的结果,如果它存在于两个操作数。(A & B) = 12 也就是 0000 1100
|二进制或(OR)操作符拷贝位,如果它存在一个操作数中。(A | B) = 61  也就是 0011 1101
^二进制异或操作符拷贝,如果它被设置在一个操作数而不是两个比特。(A ^ B) = 49 也就是 0011 0001
~二进制的补运算符是一元的,具有“翻转”位的效应。(~A ) = -61 也就是 1100 0011 以2的补码形式,由于它是一个带符号二进制数。
<<二进制向左移位运算符。左边的操作数的值由右操作数指定的位数向左移动。A << 2 = 240 也就是 1111 0000
>>二进制向右移位运算符。左边的操作数的值是通过右操作数指定的位数向右移动。A >> 2 = 15 也就是 1111
>>>右移补零运算符。左边的操作数的值是通过右操作数指定的位数向右移动,并转移值以零填充。A >>>2 = 15 也就是 0000 1111

 

4.逻辑运算符:

运算符描述示例
&&所谓逻辑与运算符。如果两个操作数是非零那么条件为true。(A && B) 为 false.
||所谓逻辑OR运算符。如果任何两个操作数都非零那么条件变为true。(A || B) 为 true.
!所谓逻辑非运算符。使用反转其操作数的逻辑状态。如果条件为true,那么逻辑非运算结果为false。!(A && B) 为 true.

 

5.赋值运算符:

运算符描述示例
=简单的赋值操作符,赋值是从右侧的操作数到左侧的操作数C = A + B 将分配 A + B 的值到 C
+=加法与赋值运算符,它将右操作数加上左操作数并分配结果左操作数C += A 相当于 C = C + A
-=减法并赋值运算符,从左边的操作数减去右操作数并分配结果给左操作数C -= A 相当于 C = C - A
*=乘法与赋值运算符,左操作数乘以右操作数并分配结果给左操作数C *= A 相当于 C = C * A
/=除法与赋值运算符, 左操作数除以右操作数并分配结果给左操作数C /= A 相当于 C = C / A
%=模数与赋值运算符, 这需要使用模量两个操作数并分配结果左操作数C %= A 相当于 C = C % A
<<=左移位并赋值运算符C <<= 2 类似于C = C << 2
>>=右移位并赋值运算符C >>= 2 类似于 C = C >> 2
&=按位与赋值运算符C &= 2 类似于 C = C & 2
^=按位异或并赋值运算符C ^= 2 类似于 C = C ^ 2
|=按位或并赋值运算符C |= 2 类似于 C = C | 2

 

6.其它运算符

Java语言支持其他一些运算符。

6.1 条件运算符 ( ? : ):

条件运算也被称为三元运算符。这个操作符包括三个操作数,用于计算布尔表达式。 此运算符的目标是决定哪个值应分配给变量。运算符可写为:

variable x = (expression) ? value if true : value if false

 

6.2 instanceOf 运算符:

此运算符仅用于对象引用变量。此运算符检查对象是否是特定类型(类类型或接口类型)。instanceOf运算被写为:

( Object reference variable ) instanceOf  (class/interface type)

Java运算符的优先级:

分类 操作符关联性 
后缀 () [] . (点操作符)左到右
一元++ - - ! ~从右到左
乘法  * / % 左到右
加法  + - 左到右
移动>> >>> <<  左到右 
关系  > >= < <=  左到右
相等  == != 左到右
位AND 左到右 
位XOR 左到右 
位 OR 左到右
逻辑 AND && 左到右
逻辑OR || 左到右
条件 ?: 从右到左
赋值 = += -= *= /= %= >>= <<= &= ^= |= 从右到左
逗号 左到右

 

while 循环:

while循环是一种控制结构,可以让你重复执行任务的若干次。

while循环的语法是:

while(Boolean_expression)
{//Statements
}

 

do ... while循环:

do... while 循环类似于 while 循环,不同的是do ... while循环是保证至少执行一次。

do ... while循环的语法是:

do
{//Statements
}while(Boolean_expression);

 

for 循环:

for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环。

当知道任务要多少次重复,一个for循环是非常有用的。

for循环的语法是:

for(initialization; Boolean_expression; update) { //Statements }

 

改进Java的for循环:

从Java5中开始增强了for循环。这主要是用于数组。

增强的for循环的语法是:

for(declaration : expression) { //Statements }

 

break关键字:

关键字break用于停止整个循环。Break关键字必须使用在任何循环或switch语句中。

Break关键字将停止最内层循环的执行,并开始执行的下一行代码块之后的语句。

 

continue关键字:

continue关键字可以在任一环的控制结构可以使用。它会导致循环立即跳转到循环的下一次迭代。

  • 在for循环中,continue关键字使流程控制立即跳转到update语句。
  • 在while循环或do/while循环,流控制立即跳转到布尔表达式。

 

if 语句:

if 语句包含一个布尔表达式后跟一个或多个语句。

一个if语句的语法:

if(Boolean_expression)
{//Statements will execute if the Boolean expression is true
}

 

if...else 语句:

if语句可以跟着一个可选的else语句,当else执行时,if 中布尔表达式是假的。

if...else 的语法是:

if(Boolean_expression){//Executes when the Boolean expression is true
}else{//Executes when the Boolean expression is false
}

 

if...else if...else 语句:

if 语句可以跟着一个可选的 else if ... else 语句,这是非常有用的,使用单一的 if...else if 语句以测试各种条件。

if...else 的语法是:

if(Boolean_expression 1){//Executes when the Boolean expression 1 is true
}else if(Boolean_expression 2){//Executes when the Boolean expression 2 is true
}else if(Boolean_expression 3){//Executes when the Boolean expression 3 is true
}else {//Executes when the one of the above condition is true.
}

 

嵌套 if...else 语句:

嵌套if-else语句始终是合法的。当要 if , else if , else else语句时有几点要牢记。

  • 一个 if 可以有零或一个else,它必须跟从 else if 之后。
  • 一个 if  可以零个或多个 else if ,它们必须在 else 之前。
  • 一旦一个 else if 条件成功,其他剩余的 else if 或 else 将不会被测试。

嵌套 if...else 的语法如下:

if(Boolean_expression 1){//Executes when the Boolean expression 1 is trueif(Boolean_expression 2){//Executes when the Boolean expression 2 is true}
}

 

switch 语句:

switch语句允许一个变量来反对值列表平等的进行测试。每个值被称为一个的情况(case),该变量被接通检查每种情况。

switch 的语法是:

switch(expression){case value ://Statementsbreak; //optionalcase value ://Statementsbreak; //optional//You can have any number of case statements.default : //Optional//Statements
}

 

Java 方法:

Java方法是组合在一起来执行操作语句的集合。当调用System.out.println方法,例如,系统实际上是在控制台上显示执行的语句的消息。

在一般情况下,方法的语法如下:

modifier returnValueType methodName(list of parameters) { // Method body; }

方法定义包含一个方法头和方法体。下面是一个方法的所有部分:

  • 修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法。这定义了该方法的访问类型。
  • 返回类型: 方法可能会返回一个值。returnValueType是方法返回的值的数据类型。有些方法执行所需的操作不返回任何值。在这种情况下,returnValueType是关键字 void.
  • 方法名称: 这是该方法的实际名称。方法的名称和参数表共同构成方法签名。
  • 参数: 参数就像一个占位符。当调用一个方法,传递一个参数值。这个值被称为实际参数或参数。参数列表表示类型,顺序和方法的参数的数量。参数是可选的;也就是说,一个方法可包含任何参数。
  • 方法体: 方法体包含了定义方法执行语句的集合。

 

Java类和对象:

  • 对象 - 对象有状态和行为。例如: 狗有状态颜色,名字,品种以及行为-摆尾,叫声,吃。对象是类的一个实例。
  • - 类可以被定义为一个模板/蓝本来描述行为/状态,其类型支持对象。

一个类的示例如下:

public class Dog{String breed;int age;String color;void barking(){}void hungry(){}void sleeping(){}
}

一个类可以包含任何下列变量类型。

  • 局部变量 . 在方法,构造函数或块里面定义的变量称为局部变量。变量将被声明在方法中并初始化,当方法调用完成变量也将被销毁。
  • 实例变量 . 实例变量是在一个类里,在方法以外的变量。这些变量在类加载时实例化。实例变量可以在类内部的任何方法,构造函数或特定类的块中访问。
  • 类变量 . 类变量是在一个类中声明的变量,任何方法外,用static关键字。

 

异常处理:

一种捕获异常方法就是使用try和catch关键字组合。 try/ catch块将被置于可能产生异常的代码。一个try/ catch块中的代码被称为保护代码,使用try/ catch语句的语法如下所示:

try
{//Protected code
}catch(ExceptionName e1)
{//Catch block
}

多个catch块:

一个try块可以跟随多个catch块。多个catch块的语法如下所示:

try
{//Protected code
}catch(ExceptionType1 e1)
{//Catch block
}catch(ExceptionType2 e2)
{//Catch block
}catch(ExceptionType3 e3)
{//Catch block
}

 

throws/throw 关键字:

如果一个方法不处理检查异常,该方法必须使用关键字throws声明它。 throws关键字出现在方法签名的结束位置。

可以抛出一个异常,用throw关键字在一个新实例化或一个刚刚捕获的异常。 试着去了解 throws 和 throw 关键字的不同。

 

finally 关键字

finally关键字用于创建一个代码块在try块后面。 finally块中的代码始终执行,无论是否发生异常。

使用finally块,可以运行要执行,无论是在受保护的代码会不会发生发生异常都会被执行,可以放一些清理工作之类的语句(代码)。

finally块必须出现在catch块的结束位置,它的语法如下:

try
{//Protected code
}catch(ExceptionType1 e1)
{//Catch block
}catch(ExceptionType2 e2)
{//Catch block
}catch(ExceptionType3 e3)
{//Catch block
}finally
{//The finally block always executes.
}

 

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

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

相关文章

十七、Webpack搭建本地服务器

一、为什么要搭建本地服务器&#xff1f; 目前我们开发的代码&#xff0c;为了运行需要有两个操作&#xff1a; 操作一&#xff1a;npm run build&#xff0c;编译相关的代码&#xff1b;操作二&#xff1a;通过live server或者直接通过浏览器&#xff0c;打开index.html代码…

Datastage部署与使用

Datastage部署与使用 - 码农教程 https://www.cnblogs.com/lanston/category/739553.html Streamsets定时拉取接口数据同步到HBase集群_streamsets api_webmote的博客-CSDN博客 【SDC】StreamSets实战之路-28-实战篇- 使用StreamSets实时采集指定数据目录文件并写入库Kudu_菜…

蓝桥杯2023年第十四届省赛真题-买瓜--题解

目录 蓝桥杯2023年第十四届省赛真题-买瓜 题目描述 输入格式 输出格式 样例输入 样例输出 提示 【思路解析】 【代码实现】 蓝桥杯2023年第十四届省赛真题-买瓜 时间限制: 3s 内存限制: 320MB 提交: 796 解决: 69 题目描述 小蓝正在一个瓜摊上买瓜。瓜摊上共有 n 个…

Git 的基础命令 码云 gitee

就比如&#xff0c;我们的开发吧&#xff0c;我自己本地分支是dqh&#xff0c;远程分支也是new //我开始提交代码 //1&#xff0c;git add . //2&#xff0c;git commit -mXXX功能 //3&#xff0c;git pull origin new(你们现在这个版本的开发分支) //这里…

【C语言】指针的进阶(二)—— 回调函数的讲解以及qsort函数的使用方式

目录 1、函数指针数组 1.1、函数指针数组是什么&#xff1f; 1.2、函数指针数组的用途&#xff1a;转移表 2、扩展&#xff1a;指向函数指针的数组的指针 3、回调函数 3.1、回调函数介绍 3.2、回调函数的案例&#xff1a;qsort函数 3.2.1、回顾冒泡排序 3.2.1、什么是qso…

HarmonyOS应用侧与前端页面数据通道建立

一、应用侧调用前端页面函数 应用侧可以通过runJavaScript()方法调用前端页面的JavaScript相关函数。在下面的示例中&#xff0c;点击应用侧的“runJavaScript”按钮时&#xff0c;来触发前端页面的htmlTest()方法。 前端页面代码。 <!-- index.html --> <!DOCTYPE ht…

构建工具Webpack简介

一、构建工具 当我们习惯了Node中使用ES模块化编写代码以后&#xff0c;用原生的HTML、CSS、JS这些东西会感觉到各种不便。比如&#xff1a;不能放心的使用模块化规范&#xff08;浏览器兼容性问题&#xff09;、即使可以使用模块化规范也会面临模块过多时的加载问题。 这时候…

[Unity]GPU Instancing 无效的原因

参考&#xff1a; GPU Instancing 深入浅出-基础篇&#xff08;1&#xff09; - 知乎 Unity GPU Instance踩坑记录_为什么gpuinstance画不出图像_拯救人类的技术宅的博客-CSDN博客 GPUInstancing在真机上失效问题_安卓手机 unity gpu instancing报错__hiJ的博客-CSDN博客 补…

基于uniapp开发 软盒APP系统源码 软件库系统源码 全开源

软盒APP前端-基于uniapp&#xff0c;一个开源的软件库系统 前端开源地址&#xff1a;软盒APP前端-基于uniapp: 软盒APP前端-基于uniapp (gitee.com) 更新说明 更新日期&#xff1a;2023.07.24 v1.0.8.23724 1.修复部分接口 2.删除根据标签获取软件列表接口&#xff0c;整合…

JDBC和DBUtils框架的使用

课程目录 一、JDBC概述 二、JDBC基本操作 三、使用PreparedStatement处理CRUD 四、数据库连接池 五、Apache的DBUtils 六、Dao类 一、JDBC概述 1. 为什么需要JDBC 没有JDBC时&#xff1a; 有了JDBC后&#xff1a; 2. JDBC概述 JDBC&#xff1a;Java Database Conn…

东芝电视Z750的音画效果好吗?调校的够真实吗?

精准匹配声音与画面,呈现“音画合一”的影院级视听盛宴,东芝电视Z750真的很不错,东芝电视拥有70余年的原色调校技术,色彩看起来细腻且舒服,饱和度和景深等都处理的很恰当,而且还有火箭炮音响系统,也是经过日本专业调校的,针对不同家居场景,都有不同的声音处理方案,让我们听到的…

竞赛选题 基于深度学习的人脸表情识别

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的人脸表情识别 该项目较…

Flutter——启动页白屏的优化

flutter启动页白屏的优化&#xff1a;使用图片替代白屏 结构图 核心的代码如上图&#xff0c;修改两个launch_background.xml里的代码为&#xff1a; <item><bitmapandroid:gravity"center"android:src"mipmap/ic_launcher" /></item>…

数据库直连提示 No suitable driver found for jdbc:postgresql

背景&#xff1a;我在代码里使用直连的方式在数据库中创建数据库等&#xff0c;由于需要适配各个数据库服务所以我分别兼容了mysql、postgresql、oracal等。但是在使用过程中会出现错误&#xff1a; No suitable driver found for jdbc:postgresql 但是我再使用mysql的直连方式…

单例模式 c++

一、单例是什么 全局有且只有一个类的static实例。 二、c实现单例 2.1 一个好的单例应该具备下面4点 全局只有一个实例&#xff1a;static特性&#xff0c;同时禁止用户自己声明并定义实例&#xff08;把构造函数设为private&#xff09;线程安全禁止拷贝和赋值用户通过接口…

AutoAnimate - 无需任何配置,一行代码自动为元素添加优雅的过渡动画,可以搭配 Vue / React 和 Sevelt 使用

这个动画库只要一行代码就可以自动在我们的组件中添过渡动画&#xff0c;为什么这么省事高效呢&#xff1f; AutoAnimate 是一个无需任何配置&#xff0c;自动为我们开发的 Web 项目添加平滑过渡动画的 JavaScript 工具库。AutoAnimate 和之前推荐的一些 js 动画库相比&#x…

Redis---第三篇

系列文章目录 文章目录 系列文章目录一、redis集群方案二、redis 主从复制的核心原理一、redis集群方案 主从 哨兵模式: sentinel,哨兵是 redis 集群中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis master 和 slave 进程是否正常工作。 消息通知:如果某…

UINT64整型数据在格式化时使用了不匹配的格式化符%d导致其他参数无法打印的问题排查

目录 1、问题描述 2、格式化函数内部解析待格式化参数的完整机制说明 2.1、传递给被调用函数的参数是通过栈传递的 2.2、格式化函数是如何从栈上找到待格式化的参数值&#xff0c;并完成格式化的&#xff1f; 2.3、字符串格式化符%s对应的异常问题场景说明 2.4、为了方便…

鸟哥的LInux私房菜 基础学习篇 第四版 学习笔记

第一章 目前被称为纯种的Unix指的是System V以及BSD这两套软件。 要实现多任务的环境&#xff0c;除了硬件&#xff08;主要是CPU&#xff09;需要能够具有多任务的特性外&#xff0c;操作系统也需要支持这个功能。 如果网络有问题时&#xff0c;去/var/log目录查日志。 第二…

腾讯轻联:带你创造属于自己的AI小助手

陈老老老板&#x1f934; &#x1f9d9;‍♂️本文专栏&#xff1a;生活&#xff08;主要讲一下自己生活相关的内容&#xff09;生活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f9d9;‍♂️本文简述&#xff1a;参加腾讯全球数字生态大会&#xff0c;了解到腾讯轻联企业…