Java 经典面试题 —— 性能与安全
0. 安全
线程安全:fail-fast ⇒ java.util.concurrent(ArrayList是非线程安全的)
fail-fast 机制是 java 集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。
例如:当某一个线程A通过 iterator 去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出 ConcurrentModificationException 异常,产生 fail-fast 事件。private static List<String> list = new ArrayList<String>(); private static List<String> list = new CopyOnWriteArrayList<String>();
1. 性能
String、StringBuffer 与 StringBuilder
- 两个字符串相加,str1+str2,相当于执行:
StringBuilder strBuilder1 = new StringBuilder(str1); strBuilder1.append(str2); String result = strBuilder1.toString();
执行到最后,我们所需要的内容只有result这一个对象,中间出现的strBuilder1 就成为了垃圾回收的目标。 如果在一个循环中使用字符串的加号,导致的系统开销就是不可忽略的了。
- 常量字符串连接(”hello” + “world”),编译器会直接帮你连上,而不是到运行时再连。效率最高;
- 虽然 StringBuffer 是线程安全的,一般字符串相加不会有多线程操作,所以推荐使用 StringBuilder。
- 事实上我们在java里写的字符串相加的操作被编译后都是通过new一个StringBuffer或StringBuilder对象来操作的,所以不会产生大量的String对象
Map 的迭代方法:entrySet 还是 keySet
Iterate through a HashMap [duplicate]
- 如果只关注 key, 不关心 value,keySet 为最佳
for (String key : map.keySet()) {// ... }
- 如果只关注 values,values() 最佳;
for (Object value : map.values()) {// ... }
- 如果即使用 key,又使用 value,entrySet() 为最佳;
for (Map.Entry<String, Object> entry : map.entrySet()) {String key = entry.getKey();Object value = entry.getValue();// ... }
Java 经典面试题 —— 性能与安全相关推荐
- Java经典面试题整理及答案详解(五)
Java经典面试题第五弹来啦!本节面试题主要是针对Java初级基础提问,看看你还记得多少? 1.String str="hello",这个字符串对象在栈内存中明明有一个引用(str ...
- Java经典面试题整理及答案详解(四)
简介: Java经典面试题第四弹来啦!本节小编整理了关于Java开发框架常见的面试题,希望大家多多怜惜,一起进步- 1.SpringMVC返回值,使用SpringMVC的时候我看到两种风格的开发,一种 ...
- Java经典面试题整理及答案详解(三)
简介: 以下是某同学面试时,面试官问到的问题,关于面试题答案可以参考以下内容- 上一篇:Java经典面试题整理及答案详解(二) Java面试真题第三弹接住!相信通过前两节的学习,大家对于Java多少有 ...
- java面试题_阿里大厂流出的数百道 Java 经典面试题
BAT 常问的 Java基础39道常见面试题 1.八种基本数据类型的大小,以及他们的封装类 2.引用数据类型 3.Switch能否用string做参数 4.equals与==的区别 5.自动装箱,常量 ...
- Java经典面试题一
转载自 Java经典面试题一 题目一 面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1.抽象: 抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽 ...
- Java经典面试题答案解析(1-80题)
前言 前几天,在茫茫的互联网海洋中寻寻觅觅,把收藏的800道Java经典面试题都发出来,有小伙伴私聊我要答案.所以感觉没有答案的面试题是没有灵魂的,于是今天先整理基础篇的前80道答案出来哈~ 所有的J ...
- 拒绝面试造火箭,工作拧螺丝——Java经典面试题分享『带答案』
本文转载自:拒绝"面试造火箭,工作拧螺丝"--Java经典面试题分享『带答案』 1. Java三大版本 Java2平台包括标准版(J2SE).企业版(J2EE)和微缩版(J2ME) ...
- Java经典面试题 带答案(五)
Java经典面试题 带答案(五) Java 面试笔试题汇总 一.编程语言(Java)-2 二.软件工程方面-9 三.智力测试-9 四.数据库-12 五.Java框架方面 -14 六.XML方面-17 ...
- Java经典面试题汇总200道
超详细的Java学习资料汇总 Java经典面试题汇总 Java 基础 1. JDK 和 JRE 有什么区别? 2. == 和 equals 的区别是什么? 3. 两个对象的 hashCode()相同, ...
最新文章
- 从0开始的Python学习001快速上手手册
- Linux 软件管理工具之rpm、yum
- cross-compile/交叉编译 适用于ARM的ko文件
- 【Git】撤销已经git add的文件
- 3389端口远程终端服务的全攻略
- 操作系统--用JavaScript实现银行家算法
- Pandas重复数据的查看和去重
- [go]---从java到go(02)---一个简单的handler模式的实现
- UI设计干货|从此做数据可视化页面不枯燥!
- 认知觉醒是成长的首因,送3本硬核认知提升书
- JavaScript服务器端开发(函数实参对象arguments使用的几个注意事项)
- docker gpu 创建 训练环境_巧用 Docker 快速部署 GPU 环境
- mysql数据库大小 shell_shell脚本操作mysql数据库
- 加密、解密、openssl的基本应用以及CA的实现过程
- SPASVO推出ALM(覆盖全生命周期的研发过程管理平台)免费在线体验平台
- 电脑常见故障排除手册(黑屏、死机、重启、蓝屏)
- eclipse插件下载地址
- android中jni的调用过程,Android 调用jni的过程简述
- 让更多的开发者听到您的声音,移动开发征文活动现已开始 | 开发者说·DTalk
- 第三章:SCI论文写作经验分享
热门文章
- Unity使用自定义资源(.asset)配置数据
- 跨平台APP----对Cordova,APPCan,DCloud,APICloud四大平台的分析
- vconsole在手机真机模拟器上显示console控制台
- 【java学习之路】(java框架)002.Git配置及使用
- 基于nginx搭建直播,web播放视频方案
- Android:沉浸式状态栏(一)工具类
- Python之 类属性和类方法
- linux tomcat守护_Linux 系统下 Tomcat 的服务配置和性能优化
- jmter测试jmeter参数化(必须掌握)
- mysql1558错误,mysql删除用户错误ERROR 1558解决办法