Java基础知识点:入门篇(一)

目录

    • Java起源
    • 第一个Java程序
        • 注意点
    • Java基本语法
      • Java标识符
          • 命名规范(驼峰命名法)
          • 注意点
      • Java修饰符
        • 访问控制修饰符
          • private
          • protected
          • public
          • default
        • 非访问控制修饰符
          • final修饰符
          • abstract修饰符
          • synchronized 修饰符
          • transient 修饰符
          • volatile 修饰符
      • Java变量
        • 变量的声明
        • 变量的命名
        • 变量的类型

Java起源

Java programming language具有大部分编程语言所共有的一些特征,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的"形式和感觉",但它要比C++语言更易于使用,而且在编程时彻底采用了一种"以对象为导向"的方式。使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用者和网页之间进行交互式操作。

Java是Sun微系统公司在1995年推出的,推出之后马上给互联网的交互式应用带来了新面貌。最常用的两种互联网浏览器软件中都包括一个Java虚拟机。几乎所有的操作系统中都增添了Java编译程序。后来 Sun 公司被 Oracle (甲骨文)公司收购,Java 也随之成为 Oracle 公司的产品。

Java分为三个体系:

  • JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
  • JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
  • JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。

Java的一些相关术语。

  • JDK(Java Development Kit ):编写Java程序的程序员使用的软件

JDK 从某种意义上可以理解为Java SDK 。

  • JRE(Java Runtime Environment):运行Java程序的用户使用的软件
  • Server JRE (Java SE Runtime Environment):服务端使用的 Java 运行环境
  • SDK(Software Development Kit):软件开发工具包

android SDK 安卓软件开发包 Java SDK

  • DAO(Data Access Object):数据访问接口,数据访问,顾名思义就是与数据库打交道
  • MVC(Model View Controller):模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法

第一个Java程序

public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World");}
}//String args[] 与 String[] args 都可以执行,但推荐使用 String[] args,这样可以避免歧义和误读。

java程序的执行基础命令的解析。
依次执行以下命令

javac HelloWord.java
java HelloWord

javac 后面跟着的是java文件的文件名,例如 HelloWorld.java。
该命令用于将 java 源文件编译为 class 字节码文件,如: javac HelloWorld.java
运行javac命令后,如果成功编译没有错误的话,会出现一个 HelloWorld.class 的文件。
image.png
java 后面跟着的是java文件中的类名,例如 HelloWorld 就是类名,如: java HelloWorld。
image.png
注意:java命令后面不要加.class。

在这里提一下,参数args的作用:
参数args是Java编译器要求必须做的,用来存储命令行参数的。
image.png

注意点
  1. Java对大小写特别敏感。A和a不相同。
  2. 类名,类名首字母大写,若是由若干单词组成,每个单词的首字母大写。HelloWord
  3. 方法名,**所有方法名以小写字母开头,如果方法名含有若干单词,则后面的每个单词首字母大写。**myAction
  4. 源文件名,源文件名必须与类名相同,文件名必须与public的类名相同。
public class test{public static void main(String[] args){......    }
}该文件名需为test.java

所有的Java程序都由 public static void main(String[] args)方法开始执行。

Java基本语法

Java标识符

简单来记,自己起了名字的都可以称为标识符,如类名,方法名,变量名。

命名规范(驼峰命名法)
  • 项目的命名:项目的命名全部小写
  • 包的命名:package 的名字由全部小写的字母组成,例如:com.test
  • 类名和接口名:每个单词首字母大写,其余小写,例如:public class MyClass{}
  • 方法名:方法的名字用一个小写字母开头,后面的单词用大写字母开头,例如:run(),getBalance()。
  • 变量名:变量的名字用一个小写字母开头,后面的单词用大写字母开头,例如:index,currentImage。
  • 常量名:基本数据类型的常量名使用全部大写,单词之间使用下划线分割。例如:public static final String GAME_COLOR=“RED”;

注意点
  • 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
  • 关键字不能用作标识符
  • 标识符是大小写敏感的
  • 合法标识符举例:age、$salary、_value、__1_value
  • 非法标识符举例:123abc、-salary
  • " " 尽量不要在代码中出现。(是由于在后面内部类中,编译后会出现 "尽量不要在代码中出现。(是由于在后面内部类中,编译后会出现 "尽量不要在代码中出现。(是由于在后面内部类中,编译后会出现符号)

命名时,尽量不要使用中文及拼音命名。😆😆😆

这里列举一些常见的Java关键字。

类别关键字说明
访问控制private私有的
protected受保护的
public公共的
default默认
类、方法和变量修饰符abstract声明抽象
class
extends扩充、继承
final最终值、不可改变的
implements实现(接口)
interface接口
native本地、原生方法(非 Java 实现)
new创建
static静态
strictfp严格浮点、精准浮点
synchronized线程、同步
transient短暂
volatile易失
程序控制语句break跳出循环
case定义一个值以供 switch 选择
continue继续
do运行
else否则
for循环
if如果
instanceof实例
return返回
switch根据值选择执行
while循环
错误处理assert断言表达式是否为真
catch捕捉异常
finally有没有异常都执行
throw抛出一个异常对象
throws声明一个异常可能被抛出
try捕获异常
包相关import引入
package
基本类型boolean布尔型
byte字节型
char字符型
double双精度浮点
float单精度浮点
int整型
long长整型
short短整型
变量引用super父类、超类
this本类
void无返回值
保留关键字goto是关键字,但不能使用
const是关键字,但不能使用

Java 的 null 不是关键字,类似于 true 和 false,它是一个字面常量,不允许作为标识符使用。

Java修饰符

修饰符来修饰类中方法和属性。

public class ClassName {// ...
}
private boolean Flag;
static final double weeks = 7;
protected static final int BOXWIDTH = 42;
public static void main(String[] args) {// 方法体
}

访问控制修饰符
default  //默认,啥都不写。同一包内可见,不同包的子类不可见,未使用任何修饰符的都默认,使用对象:类,接口,变量,方法。
public  //公共的,所有类可见,使用对象:类,接口,变量,方法。
protected //受保护的 对同一包内的类和所有子类(不同包子类)可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
private //私有的    在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)public > protected > default > private

类的访问控制符只能是空或者public,方法和属性的访问控制符可以是public,private,protected,default.

访问范围privatedefaultprotectedpublic
同一个类可以访问可以访问可以访问可以访问
同一个包中的其他类不可访问可以访问可以访问可以访问
不同包中的子类不可访问不可访问可以访问可以访问
不同包中的非子类不可访问不可访问不可访问可以访问

private

private 修饰的类成员,只能被该类自身的方法访问和修改,而不能被任何其他类(包括该类的子类)访问和引用,具有最高的保护级别。

public class Logger {private String format;public String getFormat() {return this.format;}
}format 变量为私有变量,所以其他类不能直接得到该变量的值,为了能够是其他类能够操作该变量,定义了public方法,getFormat(),来返回format 的值。

protected

用保护访问控制符 protected 修饰的类成员可以被三种类所访问:该类自身、与它在同一个包中的其他类以及在其他包中的该类的子类。
protected 可以修饰数据成员,构造方法,方法成员,不能修饰类(内部类除外)。**接口及接口的成员变量和成员方法不能声明为 protected。 **

class AudioPlayer {protected boolean openSpeaker(Speaker sp) {// 实现细节}
}class StreamingAudioPlayer extends AudioPlayer {protected boolean openSpeaker(Speaker sp) {// 实现细节}
}子类重写父类的方法。

public

当一个类被声明为 public 时,它就具有了被其他包中的类访问的可能性,只要包中的其他类在程序中使用 import 语句引入 public 类,就可以访问和引用这个类。、

public static void main(String[] arguments) {// ...
}

default

默认访问修饰符-不使用任何关键字
使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public

String version="1.5.1";
boolean s(){
return true;
}

注意:

  • 父类中声明为 public 的方法在子类中也必须为 public。
  • 父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
  • 父类中声明为 private 的方法,不能够被子类继承。

非访问控制修饰符
final   //不可改变的,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract //声明抽象,用于创建抽闲类和抽象方法
static   //静态   用于修饰类方法和类变量
synchronized //线程,同步
transient //用来预处理类和变量的数据类型。
volatile 修饰符

final修饰符

final 最终,也可以称为完结器,表示对象的最终形态,不可改变的意思。
final修饰变量
final 修饰的变量即成为常量,只能赋值一次。

  1. final 修饰的局部变量必须使用之前被赋值一次才能使用。
  2. final 修饰的成员变量在声明时没有赋值的叫“空白 final 变量”。空白 final 变量必须在构造方法或静态代码块中初始化。、
public class FinalDemo {void doSomething() {//局部变量// 没有在声明的同时赋值final int e;// 只能赋值一次e = 100;System.out.print(e);// 声明的同时赋值final int f = 200;}// 实例常量final int a = 5; // 直接赋值final int b; // 空白final变量// 静态常量final static int c = 12;// 直接赋值final static int d; // 空白final变量// 静态代码块static {// 初始化静态变量d = 32;}// 构造方法FinalDemo() {// 初始化实例变量b = 3;// 第二次赋值,会发生编译错误// b = 4;}

注意:final 修饰的变量不能被赋值这种说法是错误的,严格的说法是,final 修饰的变量不可被改变,一旦获得了初始值,该 final 变量的值就不能被重新赋值。

final 修饰基本类型变量和引用类型变量的区别

  • 当使用 final 修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变。
  • 但对于引用类型变量而言,它保存的仅仅是一个引用,final 只保证这个引用类型变量所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以发生改变。
import java.util.Arrays;class Person {private int age;public Person() {}// 有参数的构造器public Person(int age) {this.age = age;}// 省略age的setter和getter方法// age 的 setter 和 getter 方法
}public class FinalReferenceTest {public static void main(String[] args) {// final修饰数组变量,iArr是一个引用变量final int[] iArr = { 5, 6, 12, 9 };System.out.println(Arrays.toString(iArr));// 对数组元素进行排序,合法Arrays.sort(iArr);System.out.println(Arrays.toString(iArr));// 对数组元素赋值,合法iArr[2] = -8;System.out.println(Arrays.toString(iArr));// 下面语句对iArr重新赋值,非法// iArr = null;// final修饰Person变量,p是一个引用变量final Person p = new Person(45);// 改变Person对象的age实例变量,合法p.setAge(23);System.out.println(p.getAge());// 下面语句对P重新赋值,非法// p = null;}
}

image.png

在使用 final 声明变量时,要求全部的字母大写,如 SEX,这点在开发中是非常重要的。
如果一个程序中的变量使用 public static final 声明,则此变量将称为全局变量,如下面的代码:

public static final String SEX= "女";

final修饰方法
在声明类中,final方法只被实现一次。
final修饰的方法不可被重写。

public class FinalMethodTest {public final void test() {}
}class Sub extends FinalMethodTest {// 下面方法定义将出现编译错误,不能重写final方法public void test() {}
}

但是,final修饰的方法可以被重载。

public class FinalOverload {// final 修饰的方法只是不能被重写,完全可以被重载public final void test(){}public final void test(String arg){}
}

注意点:

对于一个 private 方法,因为它仅在当前类中可见,其子类无法访问该方法,所以子类无法重写该方法——如果子类中定义一个与父类 private 方法有相同方法名、相同形参列表、相同返回值类型的方法,也不是方法重写,只是重新定义了一个新方法。因此,即使使用 final 修饰一个 private 访问权限的方法,依然可以在其子类中定义与该方法具有相同方法名、相同形参列表、相同返回值类型的方法。

public class PrivateFinalMethodTest {private final void test() {}
}class Sub extends PrivateFinalMethodTest {// 下面的方法定义不会出现问题public void test() {}
}这样的写法相当于子类重新定义了一个新方法,并不是重写父类的方法。

final修饰类
final修饰的类不可被继承。
当某个类被final修饰时,意味着此类无后代,不需要进行修改或扩展。

final class SuperClass {
}
class SubClass extends SuperClass {    //编译错误
}

这一知识点,可以参考以下文章,这位大佬讲的非常清晰。
Java final修饰符详解

abstract修饰符

abstract表示“抽象的”,只能用来修饰类和方法,不能修饰属性。

  • 如果用来修饰类,表示该类是一个抽象类;
  • 如果用来修饰方法,表示该方法是一个抽象方法。

private私有的、static静态的、final方法和final类,都不能用abstract来修饰!

abstract 修饰的类为抽象类。
抽象类可以包含抽象方法和非抽象方法。
如果一个类包含抽象方法,那么该类一定要声明为抽象类.

abstract class 类名 {public int a;public abstract void goFast(); //抽象方法public abstract void changeColor();}

抽象方法

  • 抽象方法是一种没有任何实现的方法,该方法的具体实现由子类提供。
  • 抽象方法不能被声明成 final 和 static。
  • 任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。
  • 如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。
public abstract class SuperClass{abstract void m(); //抽象方法} 
class SubClass extends SuperClass{//实现抽象方法void m(){.........}
}

synchronized 修饰符

synchronized 关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于四个访问修饰符。

public synchronized void showDetails(){
.......
}

transient 修饰符

序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。

public transient int limit = 55;   // 不会持久化
public int b; // 持久化

volatile 修饰符

volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
一个 volatile 对象引用可能是 null。

public class MyRunnable implements Runnable
{private volatile boolean active;public void run(){active = true;while (active) // 第一行{// 代码}}public void stop(){active = false; // 第二行}
}通常情况下,在一个线程调用 run() 方法(在 Runnable 开启的线程),在另一个线程调用 stop() 方法。 如果 第一行 中缓冲区的 active 值被使用,那么在 第二行 的 active 值为 false 时循环不会停止。但是以上代码中我们使用了 volatile 修饰 active,所以该循环会停止。

Java程序三级跳
image.png

  • int a 这是一个表达式,int a; 这是一个语句
    语句可以包含多个表达式
  • int a =1;这是一个语句,包含两个语句。

敲黑板

int x=1;
int y=3.0;System.out.println(x/y);如果除数和被除数都是整数(分母不为0),那么就仅取计算结果的整数部分,
注意,不是4舍5入,而是直接舍弃,如29/10=2,而不是2.9,也不是3
如果要计算1/3,得到浮点数,一般采取1.0/3或1/3.0

Java变量

变量就是指代在内存中开辟的存储空间,用于存放运算过程中需要用到的数据。

变量的声明

变量必须先声明后使用,相同的变量只能声明一次。

变量类型 变量名=变量值int x=1;int x=10,y=10;

未经声明的变量不能使用,直接使用会有编译错误。
image.png
同时声明变量后,该变量只能存储制定好的数据类型的的数据,否则会产生编译错误。
image.png

变量的命名

命名规则:

  1. 满足标识符的命名规则;
  2. 符合驼峰法命名规范;
  3. 尽量简单,做到见名知意;
变量的类型

成员变量

  • 成员变量定义在类中,在整个类中都可以被访问。
  • 成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
  • 成员变量有默认初始化值。

局部变量

  • 局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
  • 局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
  • 局部变量没有默认初始化值

静态变量

  • 静态变量随着类的加载而存在,随着类的消失而消失。
  • 静态变量可以被对象调用,还可以被类名调用。
  • 静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

在使用变量时需要遵循的原则为:就近原则
首先在局部范围找,有就使用;接着在成员位置找。

class Test{private String name;//成员变量,实例变量private int age;static String country="CN";//静态变量public Test(){};//name,age 为成员变量public Test(String name,int age){this.name=name;this.age=age;}public void start(){String tests="hello"; //局部变量System.out.println("姓名:"+name +" 年龄:"+age);}//i为局部变量for(int i=0;i<36;i++){......}}public class StaticDemo{public static void main(String[]args){Test test = new Test();System. out.println(test.country);//可以用类名直接调用System. out.println(Test.country);}
}
成员变量局部变量静态变量
定义位置在类中,方法外方法中,或者方法的形式参数在类中,方法外
初始化值有默认初始化值无,先定义,赋值后才能使用有默认初始化值
调用方式对象调用对象调用,类名调用
存储位置堆中栈中方法区
生命周期与对象共存亡与方法共存亡与类共存亡
别名实例变量类变量

在这里插入图片描述

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

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

相关文章

挑战!贪吃蛇小游戏的实现(2)

在贪吃蛇小游戏的实现&#xff08;1&#xff09;中&#xff0c;我们学习了win32 相关的一些知识&#xff0c;本篇文章&#xff0c;博主将带领大家从0开始实现贪吃蛇小游戏&#xff01; 贪吃蛇游戏设计与分析 本地化 <locale.h>实现本地化&#xff0c;该头文件提供的函数…

备战蓝桥杯————二叉树解题思维1

解决二叉树问题时&#xff0c;常采用两种思维模式&#xff1a; 遍历思维模式&#xff1a; 这种思维模式强调是否可以通过一次遍历二叉树来得到答案。通常使用一个遍历函数&#xff08;比如前序、中序、后序遍历&#xff09;结合外部变量来实现。这种方法适用于需要在每个节点上…

如何进行JMeter分布式压测?一个案例教你详细解读!

引言 当前快速发展的互联网应用领域&#xff0c;高效的性能测试已经成为了确保在线应用质量和用户满意度的重要手段之一。 而JMeter分布式压测则是实现这一目标的最佳选择。然而&#xff0c;很多人并不知道如何使用JMeter进行分布式压测&#xff0c;更不知道如何获取准确的测…

前端工程化面试题 | 15.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

物奇ENC算法开关接口修改方法

物奇ENC算法开关接口修改 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;可加我微信hezkz17, 本群提供音频技术答疑服务&#xff0c;群赠送语音信号处理降噪算法&#xff0c;蓝牙耳机音频&#xff0c;DSP音频项目核心开发资料, 1 配置工具事件接口 2 代…

LeetCode 热题 100 | 二叉树(四)

目录 1 114. 二叉树展开为链表 2 105. 从前序与中序遍历序列构造二叉树 3 437. 路径总和 III 菜鸟做题&#xff08;即将返校版&#xff09;&#xff0c;语言是 C 1 114. 二叉树展开为链表 题眼&#xff1a;展开后的单链表应该与二叉树 先序遍历 顺序相同。 而先序遍历就…

【编译原理】用Python实现LR(0)语法分析

实验内容 对于给定的如下文法&#xff0c;编写调试一个上下文无关文法的LR(0)分析程序。 文法G’为&#xff1a; S → E S\to E S→E E → a A E\to aA E→aA E → b B E \to bB E→bB A → c A A\to cA A→cA A → d A\to d A→d B → c B B\to cB B→cB B → d B\to …

网购商城系统源码 积分兑换商城系统源码 独立后台附教程

应用介绍 本文来自&#xff1a;网购商城系统源码 积分兑换商城系统源码 独立后台附教程 - 源码1688 简介&#xff1a; 网购商城系统源码 积分兑换商城系统源码 独立后台附教程 测试环境&#xff1a;NginxPHP7.0MySQL5.6thinkphp伪静态 图片&#xff1a;

软件实际应用实例,茶楼收银软件管理系统操作流程,茶室计时计费会员管理系统软件试用版教程

软件实际应用实例&#xff0c;茶楼收银软件管理系统操作流程&#xff0c;茶室计时计费会员管理系统软件试用版教程 一、前言 以下软件以 佳易王茶社计时计费管理系统软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、计时计费&…

JavaWeb——007MYSQL(DQL多表设计)

# 数据库开发-MySQL 一级目录二级目录三级目录 1. 数据库操作-DQL1.1 介绍1.2 语法1.3 基本查询1.4 条件查询1.5 聚合函数1.6 分组查询1.7 排序查询1.8 分页查询1.9 案例1.9.1 案例一1.9.2 案例二 2. 多表设计2.1 一对多2.1.1 表设计2.1.2 外键约束 2.2 一对一2.3 多对多2.4 案…

遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR)

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB&#xff0c;遥感大数据时…

vue或webpack加载highcharts与highcharts-3d

highcharts与highcharts-3d下载 https://jshare.com.cn/demos/hhhhiG 点击对应的文件可打开&#xff0c;复制代码到&#xff08;创建一个同名文件&#xff09;里面&#xff1b;放到项目对应目录下 引入 两种引入 highcharts.js 方法皆可用&#xff1b;注意 highcharts-3d 引入…

超全整理,自动化测试-YAML 配置文件深入解析(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、YAML详情 YAM…

Dear ImGui的UE5.3集成实践

Dear ImGui一直较为火热&#xff0c;这是一个调试使用并且可以响应快速迭代的Gui库&#xff0c;甚至可以做到在任何代码块中调用API即显示。如果你想更多的了解一下可访问其官方网站&#xff1a;https://www.dearimgui.org/ 那么本文就来在UE5中尝试踩坑使用它。 UE4.26版本 …

[引擎开发] 深入C++模板编程

[本文大纲] 引言 模板实例化 隐式实例化 显式实例化 模板具体化 显式具体化 部分具体化 函数重载和具体化 类型推断 隐式类型转换 支持的类型转换 引用和const 通用引用、引用折叠和完美转发 …

RDMA内核态函数ib_post_recv()源码分析

接上文&#xff0c;上文分析了内核rdma向发送队列添加发送请求的函数ib_post_send&#xff0c;本文分析一下向接收队列添加接收请求的函数ib_post_recv。其实函数调用流程与上文类似&#xff0c;不再重复说明&#xff0c;可参考链接。 函数调用过程 最终会调用到这个函数 下面…

浅谈数据分析工具在智慧城市中的作用

随着城市化、技术进步和人口不断增长&#xff0c;智慧城市已成为当今世界主要技术发展之一。 智慧城市设备依靠描述模型对城市环境产生的大量数据进行数据分析。 在这种城市景观中&#xff0c;智慧城市是技术和可持续的城市地区&#xff0c;利用信息和通信技术(ICT)来改善城市…

C语言每日一题(61)盛最多水的容器

题目链接 力扣 11 盛最多水的容器 题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水…

【服务发现--ingress】

1、ingress介绍 Ingress 提供从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源所定义的规则来控制。 Ingress 是对集群中服务的外部访问进行管理的 API 对象&#xff0c;典型的访问方式是 HTTP。 Ingress 可以提供负载均衡、SSL 终结和基于名称的虚拟…

K线实战分析系列之十一:行情力量不足——平头形态

K线实战分析系列之十一&#xff1a;行情力量不足——平头形态 一、平头形态二、不同形态与平头形态的叠加三、总结平头形态 一、平头形态 前一根K线具有较长的实体&#xff0c;后一根K线的实体比较小&#xff0c;无论是多头还是空头的力量到第二根K线都被瓦解了多头上攻&#…