【Java 类】001-访问修饰符、命名规范
【Java 类】001-访问修饰符、命名规范
文章目录
- 【Java 类】001-访问修饰符、命名规范
- 一、访问修饰符概述
- 1、是什么
- 2、作用
- 作用
- 问题
- 3、访问修饰符有哪些
- 4、作用对象
- 二、访问修饰符使用演示
- 1、类访问修饰符演示
- 第一步:创建 `Dog` 类:public
- 第二步:同包下创建 `Cat` 类:default
- 第三步:在 `domain` 包下创建 `Pig` 类:default
- 第四步:创建 `Main` 类
- 第五步:查看提示 `Pig` 类无法访问
- 2、方法访问修饰符访问
- 第一步:创建 `Dog` 类
- 第二步:在同包下创建 `Main` 类
- 第三步:在不同包下创建 `Main` 方法
- 第四步:在不同包下创建 `DogSon` 类
- 第五步:演示 `private` 方法本类可访问
- 3、属性访问修饰符演示
- 第一步:创建 `Dog` 类
- 第二步:在同包下创建 `Main` 类
- 第三步:在不同包下创建 `Main` 类
- 第四步:在不同包下创建 `DogSon` 类
- 第五步:演示 `private` 属性本类而可访问
- 扩展:Java 中为什么子类的 `main` 方法中通过父类对象的实例访问 `protected` 方法报错?
- 扩展:Java 中为何同类下的 `main` 方法可以直接通过当前类对象访问 `private` 属性?
- 三、包命名规范
- 四、类命名规范
- 五、变量命名规范
- 六、常量命名规范
- 七、方法命名规范
- 八、泛型命名规范
一、访问修饰符概述
1、是什么
Java访问修饰符是一种关键字,用来控制类、方法和变量的访问权限。
2、作用
作用
-
封装性:访问修饰符可以用来限制其他类对于某个类、方法或变量的访问,从而保护类的数据安全性,实现类的封装。
Java 面向对象的封装性就依赖访问修饰符来实现!
-
可读性:访问修饰符可以用来表明类、方法或变量的访问范围,使代码更易于理解和维护。
我对这种可读性的理解是对于访问范围进行了直接标明!
-
重用性:访问修饰符可以用来控制子类对于父类中属性和方法的访问,从而实现代码的重用。
我觉得更多的,访问修饰符对这方面提供了灵活的控制!我觉得子类继承父类最大的目的就是为了代码复用,访问修饰符提供了灵活的控制!
-
可维护性:访问修饰符可以用来限制对于某个类、方法或变量的访问,从而使得修改代码更加容易,不会影响其他部分的代码。
访问修饰符限制了可访问范围,代码修改带来的影响也是在一定范围内的!
-
**安全性:**访问修饰符可以用来限制对于某个类、方法或变量的访问,从而提高程序的安全性,防止恶意操作或者不合理的访问。
限制的大多数目的就是为了安全!凡是容易造成安全问题的行为都应该得到限制!目标 => 策略 => 规则(限制)!
总之,Java访问修饰符可以用来控制程序中各个部分的访问范围,从而实现类的封装,增强程序的可读性、重用性、可维护性和安全性。
问题
访问修饰符并不是只有优点,也会带来一些问题!如带来了程序设计的复杂性,垂直和水平方向的访问限制设置提高了对软件开发人员的要求,如果访问修饰符使用不当,会导致代码的可读性大大降低,提高了系统的复杂性!访问修饰符设置得当的时候,往往带来很多好处,但如果设置不当便适得其反!
3、访问修饰符有哪些
Java中有四种访问修饰符,它们分别是:
- public(公共的):被声明为
public
的类、方法和变量可以被任何其他类访问。 - protected(受保护的):被声明为
protected
的方法和变量只能被同一包内的其他类访问,或者是其他包中的子类访问。 - default(默认的):如果没有指定任何访问修饰符,则默认为
default
,被声明为default的方法和变量只能被同一包内的其他类访问。 - private(私有的):被声明为
private
的方法和变量只能被同一类内部的其他方法访问,不能被其他类访问。
4、作用对象
Java访问修饰符可以用于以下三个对象:
- 类:Java 中的类可以使用
public
和默认
的访问修饰符。如果使用public
访问修饰符,这个类将被其他任何类所访问。如果使用默认
的访问修饰符,则只能在同一包内的其他类中访问这个类。 - 方法:Java 中的方法可以使用
public
、protected
、private
和默认
的访问修饰符。如果使用public
访问修饰符,这个方法将被其他任何类所访问。如果使用protected
访问修饰符,这个方法将被同一包中的其他类和其他包中的子类所访问。如果使用private
访问修饰符,这个方法只能在同一类中访问。如果使用默认
的访问修饰符,则只能在同一包中的其他类中访问这个方法。 - 变量:Java 中的变量可以使用
public
、protected
、private
和默认
的访问修饰符。如果使用public
访问修饰符,这个变量将被其他任何类所访问。如果使用protected
访问修饰符,这个变量将被同一包中的其他类和其他包中的子类所访问。如果使用private
访问修饰符,这个变量只能在同一类中访问。如果使用默认
的访问修饰符,则只能在同一包中的其他类中访问这个变量。
在实际开发中,访问修饰符的选择应该根据具体的需求和业务逻辑,合理地使用访问修饰符,避免过度使用访问修饰符,降低代码的可读性和灵活性。同时,需要保持代码的简洁和清晰,避免过度的复杂性和实现细节的暴露。
二、访问修饰符使用演示
1、类访问修饰符演示
第一步:创建 Dog
类:public
package main;/*** @author zibo* @date 2023/3/5 12:05* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Dog {}
第二步:同包下创建 Cat
类:default
package main;/*** @author zibo* @date 2023/3/5 12:07* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
class Cat {}
第三步:在 domain
包下创建 Pig
类:default
package domain;/*** @author zibo* @date 2023/3/5 12:11* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
class Pig {}
第四步:创建 Main
类
package main;import domain.Pig;/*** @author zibo* @date 2023/3/5 12:06* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Main {public static void main(String[] args) {// public 修饰的类,可以在任何地方被访问Dog dog = new Dog();// default 修饰的类,只能在同一个包中被访问Cat cat = new Cat();// default 修饰的类,只能在同一个包中被访问new Pig();}
}
第五步:查看提示 Pig
类无法访问
2、方法访问修饰符访问
第一步:创建 Dog
类
package main;/*** @author zibo* @date 2023/3/5 12:16* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Dog {/*** public 方法:可以被任何类访问*/public void publicMethod() {System.out.println("publicMethod");}/*** protected 方法:可以被同一个包下的类访问,也可以被不同包下的子类访问*/protected void protectedMethod() {System.out.println("protectedMethod");}/*** default 方法:可以被同一个包下的类访问*/void defaultMethod() {System.out.println("defaultMethod");}/*** private 方法:只能被本类访问*/private void privateMethod() {System.out.println("privateMethod");}}
第二步:在同包下创建 Main
类
package main;/*** @author zibo* @date 2023/3/5 12:06* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Main {public static void main(String[] args) {Dog dog = new Dog();dog.publicMethod();dog.protectedMethod();dog.defaultMethod();dog.privateMethod(); // 私有方法报错}
}
私有方法报错
第三步:在不同包下创建 Main
方法
package test;import main.Dog;/*** @author zibo* @date 2023/3/5 12:18* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Main {public static void main(String[] args) {Dog dog = new Dog();dog.publicMethod();dog.protectedMethod(); // 不同包下的非子类访问报错dog.defaultMethod(); // 不同包下的类访问报错dog.privateMethod(); // 私有方法报错}}
错误提示
第四步:在不同包下创建 DogSon
类
package test;import main.Dog;/*** @author zibo* @date 2023/3/5 12:22* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class DogSon extends Dog {/*** 子类访问父类的 public 方法*/public void testPublicMethod() {publicMethod();}/*** 子类可以访问父类的 protected 方法*/public void testProtectedMethod() {protectedMethod();}/*** 子类不能访问父类的 default 方法*/public void testDefaultMethod() {defaultMethod(); // 报错}/*** 子类不能访问父类的 private 方法*/public void testPrivateMethod() {privateMethod(); // 报错}}
错误提示
第五步:演示 private
方法本类可访问
package main;/*** @author zibo* @date 2023/3/5 12:30* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Dog {/*** private 方法:只能被本类访问*/private void privateMethod() {System.out.println("privateMethod");}public static void main(String[] args) {Dog dog = new Dog();dog.privateMethod();}}
3、属性访问修饰符演示
第一步:创建 Dog
类
package main;/*** @author zibo* @date 2023/3/5 12:31* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Dog {/*** public 变量:可以被任何类访问*/public String publicVariable = "publicVariable";/*** protected 变量:可以被同一个包下的类访问,也可以被不同包下的子类访问*/protected String protectedVariable = "protectedVariable";/*** default 变量:可以被同一个包下的类访问*/String defaultVariable = "defaultVariable";/*** private 变量:只能被本类访问*/private String privateVariable = "privateVariable";}
第二步:在同包下创建 Main
类
package main;/*** @author zibo* @date 2023/3/5 12:35* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Main {public static void main(String[] args) {Dog dog = new Dog();System.out.println(dog.publicVariable);System.out.println(dog.protectedVariable);System.out.println(dog.defaultVariable);System.out.println(dog.privateVariable); // 报错}
}
错误提示
第三步:在不同包下创建 Main
类
package test;import main.Dog;/*** @author zibo* @date 2023/3/5 12:18* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Main {public static void main(String[] args) {Dog dog = new Dog();System.out.println(dog.publicVariable);System.out.println(dog.protectedVariable); // 报错System.out.println(dog.defaultVariable); // 报错System.out.println(dog.privateVariable); // 报错}}
错误提示
第四步:在不同包下创建 DogSon
类
package test;import main.Dog;/*** @author zibo* @date 2023/3/5 12:22* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class DogSon extends Dog {/*** 子类访问父类的 public 属性*/public void testPublicProperty() {System.out.println(publicVariable);}/*** 子类可以访问父类的 protected 属性*/public void testProtectedProperty() {System.out.println(protectedVariable);}/*** 子类访问父类的 default 属性*/public void testDefaultProperty() {System.out.println(defaultVariable); // 报错}/*** 子类不能访问父类的 private 属性*/public void testPrivateProperty() {System.out.println(privateVariable); // 报错}public void myPrint(String[] args) {System.out.println(protectedVariable); // 这种可以!Dog dog = new Dog();System.out.println(dog.publicVariable);System.out.println(dog.protectedVariable); // 报错:注意这种方式是不行的System.out.println(dog.defaultVariable); // 报错System.out.println(dog.privateVariable); // 报错}}
第五步:演示 private
属性本类而可访问
package main;/*** @author zibo* @date 2023/3/5 13:07* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Dog {/*** private 变量:只能被本类访问*/private String privateVariable = "privateVariable";public static void main(String[] args) {Dog dog = new Dog();System.out.println(dog.privateVariable); // 这里可以访问,和 protected 在非同包子类不同}}
扩展:Java 中为什么子类的 main
方法中通过父类对象的实例访问 protected
方法报错?
在 Java 中,protected
修饰符用于限制只有同包下其他类和其子类可以访问该成员变量或方法。因此,如果你在子类的 main
方法中通过父类对象的实例访问 protected
方法,会出现编译错误。这是因为子类虽然继承了父类的 protected 方法,但是并不能通过父类对象的实例来直接访问该方法。
要访问父类的 protected
方法,可以在子类中创建一个方法来调用该方法。例如,可以在子类中创建一个公共方法,该方法通过 super
关键字调用父类的 protected
方法,然后从 main
方法中调用该公共方法。以下是示例代码:
public class Parent {protected void myMethod() {System.out.println("This is a protected method");}
}public class Child extends Parent {public void callProtectedMethod() {super.myMethod();}public static void main(String[] args) {Child child = new Child();child.callProtectedMethod();}
}
在上面的示例中,Child
类继承了 Parent
类的 protected
方法 myMethod()
,并创建了一个公共方法 callProtectedMethod()
,该方法通过super关键字调用了父类的 myMethod()
方法。然后在 main
方法中,创建 Child
类的对象 child
,并通过调用 callProtectedMethod()
方法来访问父类的 protected
方法。
扩展:Java 中为何同类下的 main
方法可以直接通过当前类对象访问 private
属性?
这是因为 Java 中的访问控制是基于类而不是基于对象的。私有属性被声明为 private
后,只有该类的其他方法可以访问它,而其他类的对象无法直接访问该属性。但是,由于 main
方法和其他方法都属于同一个类,因此它们都可以直接访问该类的私有属性。
package main;/*** @author zibo* @date 2023/3/5 13:22* @slogan 真正的大师永远怀着一颗学徒的心。——易大师*/
public class Dog {private static String privateStaticVariable = "privateStaticVariable";private String privateVariable = "privateVariable";public String publicVariable = "publicVariable";/*** 普通方法访问 private 变量*/public void myPrint() {System.out.println(privateStaticVariable);System.out.println(privateVariable);System.out.println(publicVariable);System.out.println(new Dog().privateVariable);}/*** 静态方法访问 private 变量*/public static void myStaticPrint() {System.out.println(privateStaticVariable);System.out.println(privateVariable); // 报错,静态方法不能访问非静态变量System.out.println(publicVariable); // 报错,静态方法不能访问非静态变量// 私有方法,只能在本类中访问,静态方法中不能访问非静态变量// 所以不能访问,但是可以通过对象访问,另外静态方法是可以直接访问本类的静态属性的System.out.println(new Dog().privateVariable); // 正常,私有普通属性是属于对象的,所以可通过对象访问System.out.println(new Dog().publicVariable); // 正常,私有普通属性是属于对象的,所以可通过对象访问}}
三、包命名规范
- 包名应该全部小写。
- 包名应该基于逆域名命名,例如,一个公司的域名为
example.com
,则该公司编写的 Java 代码的根包名应该是com.example
。 - 包名应该简短而有意义,能够反映出包中包含的类的功能。
- 如果一个包名由多个单词组成,单词之间都应该都点
.
隔开,例如:com.example.myapp
。 - 不要在包名中使用下划线或其他特殊字符,因为这可能会导致一些问题。
四、类命名规范
- 类名应该以大写字母开头,采用驼峰式命名规则,例如:
MyClass
,而不是myClass
或MYCLASS
。 - 类名应该是名词,而不是动词。
- 类名应该简明扼要地描述类的职责和功能,同时尽量避免使用缩写。
- 如果一个类名由多个单词组成,每个单词的首字母都应该大写,例如:
MyFirstClass
。 - 接口名也应该采用相同的规范,以便于与类名进行区分,例如:
MyInterface
。 - 抽象类的命名应该以
Abstract
开头,例如:AbstractClass
。 - 子类:如果一个类是某个类的子类,应该在父类名后面加上一个单词来描述它的特定功能,例如:
MySubClass
。 - 接口实现类:应该在类名后面加上
Impl
,例如:MyClassImpl
。 - 异常类:为了和普通类做出区别,一般以 “
Exceptiont
” 作为后缀。 - 测试类:为了和普通类做出区别,一般以“
Test
”作为后缀。 - 枚举类:为了和普通类做出区别,一般以“
Enum
”作为后缀,枚举类中的值遵循常量的命名规范。
五、变量命名规范
-
通常是见名知意的名词。
-
首字母小写。
-
多个单词时,采用驼峰命名法。
-
不建议使用中文缩写来命名。
-
不建议使用下划线作为连接。
六、常量命名规范
-
通常是见名知意的名词。
-
全部大写字母。
-
多个单词之间使用“
_
”进行分隔。 -
不建议使用中文缩写来命名。
七、方法命名规范
-
通常是见名知意的名词。
-
首字母小写。
-
多个单词时,采用驼峰命名法。
-
不建议使用中文缩写来命名。
-
不建议使用下划线作为连接。
-
有返回值的方法一般加“
get
”前缀。 -
设置的方法一般加对应的动词作为前缀(如:
set
、insert
、update
、delete
)。 -
查询的方法一般加“
select
”或“find
”或“query
”作为前缀。 -
带有条件的方法一般在命名中使用“
by
”或“with
”等字符。 -
判断的方法一般以“
is
”作为前缀。 -
测试方法一般以“
test
”作为前缀。
八、泛型命名规范
-
E 表示 Element,通常用在集合中。
-
T 表示 Type(类型),通常指类。
-
K 表示 Key(键),通常用于 Map 中。
-
V 表示 Value(值),通常用于 Map 中,与 K 成对出现。
-
N 表示 Number,通常表示数值类型。
-
? 表示不确定的 Java 类型。
-
X 表示异常。
-
U,S 表示任意类型。
相关文章:

【Java 类】001-访问修饰符、命名规范
【Java 类】001-访问修饰符、命名规范 文章目录【Java 类】001-访问修饰符、命名规范一、访问修饰符概述1、是什么2、作用作用问题3、访问修饰符有哪些4、作用对象二、访问修饰符使用演示1、类访问修饰符演示第一步:创建 Dog 类:public第二步:…...

【C++】命名空间
🏖️作者:malloc不出对象 ⛺专栏:C的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录前言一、命名空间产生的背景二、命名空…...

【AutoSAR】【MCAL】Dio
一、结构 二、功能介绍 DIO(数字输入输出)驱动模块主要是对端口(Port),通道(Channel)和通道组(ChannelGroup)进行读写操作。 通道(Channel)&…...

瑞吉外卖——day2
目录 一、新增员工 二、查询分页数据 三、启用、禁用员工账户、编辑员工信息 一、新增员工 点击左上角新增员工 页面如下: 我们随便填数据 ,点击保存,请求的地址如下 返回前端可以看到请求方式为Post 在employeeController中编写对应的代…...

了解java
#常见编程语言介绍 C语言 C语言 java语言 javaScript语言 PHP语言 python语言Object-C和Swift语言 C# (c sharp)语言 Kotlin语言 Go语言 Basic语言 #JAVA的发展 起源于1991年SUN公司GREEN项目,1996年JDK1.0正式发布 后被Oracle公司收购&…...

【编程实践】代码之中有创意:“我一直认为工程师世界上最具创造性的工作之一”
代码之中有创意 “我一直认为工程师世界上最具创造性的工作之一”。 文章目录 代码之中有创意一、代码可以赋予创造力1.1 代码的创造力1.2 如何发挥代码的创造力二、有创意的代码可以提高工作效率2.1 代码创意可以提高工作效率2.2 如何利用代码创意来提高工作效率三、代码创意可…...

【MySQL】表连接
一、为什么要学习 因为不合理的使用连接会导致慢查询 二、什么是连接 参与连接的表叫做 连接表, 连接就是把 各个连接表 进行的组合 (笛卡儿积)加入结果集并返回 三、连接查询 如何只是对表进行大量的连接,笛卡儿积作用得到的…...
2023湖南省“楚怡杯”职业技能大赛“网络安全” 项目比赛任务书
2023湖南省“楚怡杯”职业技能大赛“网络安全” 项目比赛任务书2023安徽省“中银杯”职业技能大赛“网络安全” 项目比赛任务书A模块基础设施设置/安全加固(200分)A-1:登录安全加固(Windows, Linux)A-2:Ngi…...

Android应用启动优化笔记整理
应用启动相关流程与优化 应用启动主要涉及SystemServer进程 和 app进程。 SystemServer进程负责app进程创建和管理、窗口的创建和管理(StartingWindow 和 AppWindow)、应用的启动流程调度等。 App进程被创建后,进行一系列进程初始化、组件初…...
图像bytes字节串二进制转十六进制及bytes转为图像
目录前言正文二进制与十六进制的bytes互转读取bytes为图像法1:直接写入f.read的结果法2: 转换为PIL或Numpy前言 参考: 8. python基础之基础数据类型–bytes - CSDN python 16进制与图片互转 - CSDN 正文 二进制与十六进制的bytes互转 bytes保存的是原始的字节(二…...

信息安全与数学基础-笔记-②同余
知识目录同余完全剩余系剩余类完全剩余系❀简化剩余系❀欧拉函数逆元!欧拉定理 !同余 a,b 两个数字,都模m,当两个数字模m后余的数一样即为同余。 例子: a bq r (mod m),这里的a 和 r 就是同余 ÿ…...
网络安全法
目录正文第一章第二章第三章第四章第五章第六章 法律责任第七章 附则正文 学习网络安全应该知道网络安全法 第一章 总则 第一条: 为了保障网络安全,维护网络空间主权和国家安全、社会公共利益,保护公民、法人和其他组织的合法权益,促进经济…...

django框架开发部署项目
前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…...
Unity记录1.3-入门-第一阶段总结
文章首发及后续更新:https://mwhls.top/4447.html,无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评,非常感谢! 汇总:Unity 记录 摘要:第一阶段的总…...
Linux入门篇-文件管理
简介 简单的文件管理。 ⽂件内容的查看 ⽂本⽂件内容的查看 cat ⽂本⽂件的path1 ⽂本⽂件的path2 head ⽂本⽂件的path ,显示⽂件的前10⾏内容 head -n 5 ⽂本⽂件的path , 显示⽂件的前5⾏内容 head -5 等于head -n 5tail ⽂本⽂件的path, 显示⽂件的后10⾏内容…...

如何从错误中成长?
在上一篇文章“技术人的犯错成本”里,我和你聊了技术人可能会犯的各式各样的错误,也举了很多例子,说明了技术人犯错的成本。在竞争激烈的互联网时代,试错当然是好事,但了解错误成本,避免不应该犯的错误&…...
谈谈一个程序员的职场心得(真有用)
谈谈一个程序员的职场心得 我会分为三个部分:软件开发,职场协作和认知成长,每个部分精简成 7 条心得。 软件开发 若无必要,勿增实体。 这是奥卡姆剃刀的定义,所谓剃刀就是法则,是奥卡姆这个英国学者提出来…...
Pytest:一个卓有成效的测试工具
大家都知道,目前最流行的Python单元测试框架有三种,分别是unittest, nose和pytest。其中unittest是Python自带的测试框架,但问题是比较老了,赶不上时代发展了(哈哈哈);nose2定位是带插件的unitt…...

Compose 动画 (三) : AnimatedVisibility 从入门到深入
1. AnimatedVisibility 是什么 AnimatedVisibility可以实现Compose组件的显示和隐藏,并且可以指定显示/隐藏时候的动画效果。(EnterTransition/ExitTransition) 和 animateXxxAsState、animateContentSize、Crossfade、AnimatedContent 这几个API一起,都…...

网络基础(二)
目录 应用层 再谈 "协议" 协议是一种 "约定". socket api的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一些"结构化的数据" 怎么办呢? 为什么要转换呢? 如果我们将struct message里面…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...