java 科目二 小知识点

一些容易错的点、黑体重要的点。

编程规范5.0黑体

  1. 启动安全管理器
    • 启动参数:-Djava.security.manager
    • 代码启动:System.setSecurityManager(new SecurityManager());
  2. String str = “1” + “2” + “3” + “4” 一共创建几个对象:1个
  3. 求平方根方法public static double sqrt (double fst)可以传递的参数类型有哪些 long,float,byte
  4. 内存中敏感信息使用完毕立即清0。为了方便清理,推荐优先使用byte[]/char[]存储敏感信息
  5. 整数包装类型应该使用equals()方法做相等比较,可以使用compareTo(another)做大小比较。不推荐使用==做相等比较
  6. 禁止对Optional对象赋值/返回为null,或与null比较。
  7. 覆写 --子类父类间 (子类把父类相同名字方法覆写了)
    重载 – 类内部 (方法名字相同签名不同)
    隐藏 – 子类与父类间 (类的属性、静态方法、内部类被父类相同名字的对象遮住了,隐藏着了)
    遮蔽 --类内部 (变量方法类 相同名字遮蔽了)
    遮掩 – 类内部 (变量或者类型遮掩一个包)
  8. data race:两个线程分别对一个非volatile的共享变量进行访问操作,其中至少一个操作是写操作,且这两个操作之间没有happens-before关系。
    • 是否正确同步的标准是”是否建立了happens-before关系“
    • 选取合适的同步机制:首先考虑使用消息队列,或者其他java标准库中提供的高级同步机制。
    • java中volatile变量的+=、-=、*=等复合赋值操作是可以分割的原子读改写操作,先读后写
    • 一般来说,如果使用锁,那么读和写都要加锁,而不是写线程需要加锁,读线程不加锁。
    • java中,双检锁需要用volatile配合锁共同实现同步才能正确实现。
  9. 对共享变量做同步访问控制时需避开同步陷阱
    • 同步陷阱1:使用了基于高级并发对象的synchronize块。(使用锁应该都一样 synchronized lock
    • 同步陷阱2:使用实例锁来同步静态共享变量 。 (实例锁同步效果仅限于本身 counter
    • 同步陷阱3:使用可被重用的对象锁 (”lock“
    • 同步陷阱4:使用class类对象锁 (”someshareResource.class“
  10. 如果一个线程让另一个线程终止执行,javaapi推荐方式为:让被中止的线程在运行中周期性的查询自己是否被中止,如果发现被中止,则应该主动清理状态并中止执行。
    • 不可以使用非volatile变量作为通知用的变量
    • 慎用Thread.interrupt方法,他依赖执行线程对interrupter status的处理逻辑。
    • 调用Thread.interupt()的线程希望当前线程尽快停止。
  11. 从ZipInputStream中解压文件必须进行安全检查。存在两类安全风险:
    • 将文件解压到目标目录之外
    • 解压的文件消耗过多的系统资源
  12. 从调用者角度来说,外部进程的输入流时OutputStream
  13. 禁止直接向Runtime.exec()方法或java.lang.ProcessBuilder类传递外部数据。常见注入场景:
    • 外部数据直接用于拼接shell方式的命令行
    • 外部数据用于构造命令数组中的某个值
    • 外部数据用于.bat/.sh脚本中的参数
    • 外部数据用于构造非shell方式的命令行
  14. 防止外部实体攻击
    • 禁止解析DTDs true false false
    • 禁止解析外部一般实体和外部参数实体 false false false
    • 对外部实体进行白名单校验 校验函数
  15. 防止内部实体扩展攻击
    • 禁止解析DTDs true false false
    • 通过系统属性限制实体数量 System.setProperty()
    • 限制实体数量 dbf.setAttribute()

2021.9.15错题整理

编程规范理解与应用:错误2道
在这里插入图片描述
调试与定位能力:错误1道
在这里插入图片描述
开发者测试: 错误1道
在这里插入图片描述
编程语言能力:错误18道
在这里插入图片描述

综合:
- 核心类库:反射、线程、集合与泛型
- JVM:运行时数据区、Class格式、JIT、GC、类加载
- 性能优化: JVM性能优化方法,性能相关

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值