Java基础005 --- 安全管理器、可变参数等
2021-02-10 01:19
标签:write locate text builder void 运行 设置 aaaaa rmi Java大小端 大端:数据高字节保存在内存低地址中,数据低字节保存在内存高地址中 小端:数据高字节保存在内存高地址中,数据低字节保存在内存低地址中 java虚拟机屏蔽了机器的大小端模式,默认都是大端模式; 可以通过ByteOrder.nativeOrder获取机器模式,通过ByteBuffer的order方法获取及设置jvm模式 示例: 运行结果: LITTLE_ENDIAN 32位和64位机器存储区别 long型存储时,32位机器下是4字节。64位机器下是8字节 StringBuilder和StringBuffer StringBuilder线程不安全,效率高;StringBuffer线程安全,效率低 switch语句支持的类型 String、enum、char、short、int、long、Character、Short、Integer、Long 可变参数 示例: 对于可变参方法和非可变参构成的重载方法,只要非可变参方法能满足要求,那么就优先选择非可变参方法 示例: 运行结果: [AA, BB] 安全管理器及配置 对于未知的Java应用程序,运行时可能存在未知风险,那么就需要对其运行的权限做控制,那么就需要启用安全管理器SecurityManager 启用方法1:通过启动参数 -Djava.security.manager -Djava.security.policy "E:\policy.txt" 示例:设置test.txt为只读模式,然后通过安全管理器校验是否有写权限 编译:javac TestSecurityManager.java 运行:java -Djava.security.manager TestSecurityManager Exception in thread "main" java.security.AccessControlException: access denied ("java.io.FilePermission" " est.txt" "write") at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) at java.security.AccessController.checkPermission(AccessController.java:884) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at TestSecurityManager.main(TestSecurityManager.java:8) 启用方法2:通过System.setSecurityManager(new SecurityManager()) 示例:设置test.txt为只读模式,然后通过安全管理器校验是否有写权限 编译:javac TestSecurityManager.java 运行:java TestSecurityManager Exception in thread "main" java.security.AccessControlException: access denied ("java.io.FilePermission" " est.txt" "write") at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) at java.security.AccessController.checkPermission(AccessController.java:884) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at TestSecurityManager.main(TestSecurityManager.java:9) Java基础005 --- 安全管理器、可变参数等 标签:write locate text builder void 运行 设置 aaaaa rmi 原文地址:https://www.cnblogs.com/sniffs/p/12746024.htmlSystem.out.println(ByteOrder.nativeOrder());
ByteBuffer buf = ByteBuffer.allocate(4);
System.out.println(buf.order());
System.out.println(buf.order(ByteOrder.LITTLE_ENDIAN).order());
BIG_ENDIAN
LITTLE_ENDIANpublic static void fun(String...str) {
System.out.println(Arrays.toString(str));
}
public class TestArgs {
public static void main(String[] args) {
fun("AA", "BB");
fun("AA");
}
public static void fun(String...str) {
System.out.println(Arrays.toString(str));
}
public static void fun(String str) {
System.out.println("test" + str);
}
}
testAApublic class TestSecurityManager {
public static void main(String[] args) {
SecurityManager securityManager = System.getSecurityManager();
if (securityManager != null) {
securityManager.checkPermission(new FilePermission("\test.txt", "write"));
}
System.out.println("AAAAAAAAAAAA");
}
}
public class TestSecurityManager {
public static void main(String[] args) {
System.setSecurityManager(new SecurityManager());
SecurityManager securityManager = System.getSecurityManager();
if (securityManager != null) {
securityManager.checkPermission(new FilePermission("\test.txt", "write"));
}
System.out.println("AAAAAAAAAAAA");
}
}
test.txt
下一篇:Python_Practice1
文章标题:Java基础005 --- 安全管理器、可变参数等
文章链接:http://soscw.com/index.php/essay/53350.html