`
unbounder
  • 浏览: 174731 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

复习笔记6

    博客分类:
  • job
阅读更多
趋势科技

引用
25*25的矩阵
从每行里面选择最大的一个数,然后找出最小的数记为A
从每列里面选择最小的一个数,然后找出最大的数记为B
问AB大小


第一反应是无法判断,写一下推理发现时另外一回事
假设A为(x1,y1),B为(x2,y2)
根据题设条件2,B应该小于(x2,y1)
根据题设条件1,(x2,y1)又小于A
所以B应该是小于A的,放开限制,应该是小于等于

引用
字符串text,求最大不重复字串长度


public int find(String[] arr) {
		int max = 1, templength = 1;
		int begin = 0, end = 1;
		HashSet<String> set = new HashSet<String>();
		set.add(arr[0]);
		while ((begin + max < arr.length) && (begin + templength < arr.length)
				&& (end < arr.length)) {
			String temp = arr[end];
			if (set.contains(temp)) {
				set.remove(arr[begin]);
				begin++;
				if (templength > max) {
					max = templength;
					templength--;
				} else if (templength > 1) {
					templength--;
				}
			} else {
				set.add(temp);
				end++;
				templength++;
			}
		}
		if (templength > max) {
			max = templength;
		}
		return max;
	}

时间复杂度o[n]
其实可以不用set而是用数组,将字符转为ascii码,然后成为数组的序号,这样空间复杂度上会更好一点。

另外趋势科技笔试题中出现了弱引用、ByteArrayInputStream.available() 这些之前根本没用过的api,需要今后注意一下。

-----------------------------------

网易

网易的笔试是我做过最难的一套java笔试题,最后的题目靠的是jvm优化
第一小问简单,heap的结构
第二小问是高吞吐要求下jvm优化策略
第三小问是低延时要求下jvm优化策略

查了下

引用

3.1 吞吐量优先

吞吐量是指GC的时间与运行总时间的比值,比如系统运行了100分钟,而GC占用了一分钟,那么吞吐量就是99%,吞吐量优先一般运用于对响应性要求不高的场合,比如web应用,因为网络传输本来就有延迟的问题,GC造成的短暂的暂停使得用户以为是网络阻塞所致。

吞吐量优先可以通过-XX:GCTimeRatio来指定。

当通过-XX:GCTimeRatio不能满足系统的要求以后,我们可以更加细致的来对JVM进行调优。

首先因为要求高吞吐量,这样就需要一个较大的Young generation,此时就需要引入“Parallel scavenging Collector”,可以通过参数:-XX:UseParallelGC来配置。

java -server -Xms3072m -Xmx3072m -XX:NewSize=2560m -XX:MaxNewSize=2560 XX:SurvivorRatio=2 -XX:+UseParallelGC

当年轻代使用了"Parallel scavenge collector"后,老生代就不能使用"CMS"GC了,在JDK1.6之前,此时老生代只能采用串行收集,而JDK1.6引入了并行版本的老生代收集器,可以用参数-XX:UseParallelOldGC来配置。
3.1.1 控制并行的线程数

缺省情况下,Parallel scavenging Collector 会开启与cpu数量相同的线程进行并行的收集,但是也可以调节并行的线程数。假如你想用4个并行的线程去收集Young generation的话,那么就可以配置-XX:ParallelGCThreads=4,此时JVM的配置参数如下:

java -server -Xms3072m -Xmx3072m -XX:NewSize=2560m -XX:MaxNewSize=2560 XX:SurvivorRatio=2 -XX:+UseParallelGC -XX:ParallelGCThreads=4
3.1.2 自动调节新生代

在采用了"Parallel scavenge collector"后,此GC会根据运行时的情况自动调节survivor ratio来使得性能最优,因此"Parallel scavenge collector"应该总是开启此参数。

此时JVM的参数配置如下:

java -server -Xms3072m -Xmx3072m -XX:+UseParallelGC    -XX:ParallelGCThreads=4 -XX:+UseAdaptiveSizePolicy


3.2 响应时间优先

响应时间优先是指GC每次运行的时间不能太久,这种情况一般使用与对及时性要求很高的系统,比如股票系统等。

响应时间优先可以通过参数-XX:MaxGCPauseMillis来配置,配置以后JVM将会自动调节年轻代,老生代的内存分配来满足参数设置。

在一般情况下,JVM的默认配置就可以满足要求,只有默认配置不能满足系统的要求时候,才会根据具体的情况来对JVM进行性能调优。如果采用默认的配置不能满足系统的要求,那么此时就可以自己动手来调节。

此时"Young generation"可以采用"Parallel copying collector",而"Old generation"则可以采用"Concurrent Collector",

举个例子来说,以下参数设置了新生代用Parallel Copying Collector,老生代采用CMS收集器。

java -server -Xms512m -Xmx512m  -XX:NewSize=64m -XX:MaxNewSize=64m -XX:SurvivorRatio=2         -XX:+UseConcMarkSweepGC -XX:+UseParNewGC

此时需要注意两个问题:

1 如果没有指定-XX:+UseParNewGC,则采用默认的非并行版本的copy collector.

2  如果在一个单CPU的系统上设置了-XX:+UseParNewGC ,则默认还是采用缺省的copy collector.
3.2.1 控制并行的线程数

默认情况下,Parallel copy collector启动和CPU数量一样的线程,也可以通过参数-XX:ParallelGCThreads来指定,比如你想用3个线程去进行并发的复制收集,那么可以改变上述参数如下:

java -server -Xms512m -Xmx512m -XX:NewSize=64m  -XX:MaxNewSize=64m -XX:SurvivorRatio=2        -XX:ParallelGCThreads=4    -XX:+UseConcMarkSweepGC       -XX:+UseParNewGC
3.2.2 控制并发收集的临界值

默认情况下,CMS gc在"old generation"空间占用率高于68%的时候,就会进行垃圾收集,而如果想控制收集的临界值,可以通过参数:-XX:CMSInitiatingOccupancyFraction来控制,比如改变上述的JVM配置如下:

java -server -Xms512m -Xmx512m -XX:NewSize=64m  -XX:MaxNewSize=64m -XX:SurvivorRatio=2        -XX:ParallelGCThreads=4    -XX:+UseConcMarkSweepGC       -XX:+UseParNewGC      -XX:CMSInitiatingOccupancyFraction=35


待续
分享到:
评论

相关推荐

    网络工程师 复习笔记

    网络工程师复习笔记 网络工程师复习笔记 网络工程师复习笔记

    网络工程师复习笔记 网络工程师复习笔记

    网络工程师笔记串讲主要知识点 可以帮你节省时间学好网络方面的知识

    2018年信息系统项目管理师复习精华笔记.doc

    2018年信息系统项目管理师复习精华笔记.doc2018年信息系统项目管理师复习精华笔记.doc2018年信息系统项目管理师复习精华笔记.doc2018年信息系统项目管理师复习精华笔记.doc2018年信息系统项目管理师复习精华笔记.doc...

    Java基础每日复习笔记-JavaSE高级阶段.edf

    Java基础每日复习笔记-JavaSE高级阶段.edf

    java ee 复习笔记

    Java EE的复习笔记是学习这个复杂框架的重要参考资料,尤其对于开发者来说,深入理解其核心概念和技术是必不可少的。 首先,Struts是Java EE中的一个MVC(Model-View-Controller)框架,它的主要任务是分离业务逻辑...

    软考中级 - 软件设计师 - 专题复习笔记3

    软考中级 - 软件设计师 - 专题复习笔记3软考中级 - 软件设计师 - 专题复习笔记3软考中级 - 软件设计师 - 专题复习笔记3软考中级 - 软件设计师 - 专题复习笔记3软考中级 - 软件设计师 - 专题复习笔记3软考中级 - 软件...

    软件工程复习笔记考研复习笔记

    《软件工程复习笔记考研复习概览》 软件工程是一门涉及使用科学知识和技术原理来定义、开发和维护软件的学科。随着计算机技术的发展,软件工程的重要性日益凸显,尤其是在应对日益复杂的软件开发挑战时。本复习笔记...

    操作系统复习笔记pdf文件

    西安交通大学软件学院操作系统复习笔记,包含前九个章节的内容,可以查看博文https://blog.csdn.net/qq_46311811/article/details/122322967 查看内容及介绍

    Java基础每日复习笔记-JavaSE高级阶段.2020-10-13-211312.edf

    Java基础每日复习笔记-JavaSE高级阶段.2020-10-13-211312.edf

    华工随机信号课程考试复习笔记.pdf

    《华工随机信号课程考试复习笔记》是针对华南理工大学随机信号课程的一份重要参考资料,旨在帮助学生系统地理解和掌握随机过程的基本概念、理论及其在工程中的应用。这份笔记结合了2022年1月6日的最新教学内容,旨在...

    JAVA web复习笔记.docx

    【JAVA Web复习笔记】 在JAVA Web开发中,我们首先要理解几个关键的概念。Web技术主要分为两种架构模式:C/S(客户端/服务器端)和B/S(浏览器/服务器)。C/S架构通常涉及到专用的客户端应用程序与服务器进行交互,...

    哈工大概率论期末全套复习笔记

    这份笔记包含概率论与数理统计(A)课程全部知识,每次写作业前我都会翻阅这本笔记,考试前半个月认真复习笔记。最后,因为我有了这份笔记,在概率论与数理统计(A)期末考试中我荣获89分。虽然是一门考察课,但是我...

    信息系统管理工程师复习笔记

    信息系统管理工程师复习笔记涵盖了诸多专业知识点,是软考信息系统管理工程师考试的复习资料。以下知识点的详细解读: 1. CPU架构与组成:内容中涉及了CPU的基本组成,如控制单元(CU),算术逻辑单元(ALU),以及缓存...

    网络管理员复习笔记1到15

    《网络管理员复习笔记1到15》是一份全面梳理网络工程基础知识的资料,对于网络工程师来说,这是一份不可多得的复习材料,尤其对于准备网络工程师考试的人员而言,具有较高的参考价值。 网络工程领域博大精深,涉及...

    系统架构师复习笔记

    系统架构师复习笔记 在 IT 行业中,系统架构师扮演着非常重要的角色,他们需要掌握将解决方案概念化到不同的抽象层次上的技能,以便更好地处理企业中的复杂性。通过将解决方案组织到离散的层次,架构师可以专注于...

    软考中级-信息系统管理工程师复习笔记(干货)

    根据提供的信息,复习笔记涵盖了信息系统管理工程师所需了解的计算机基础知识和原理,包括但不限于硬件基础知识、系统结构、存储系统和多种数据处理概念。以下是详细知识点的整理和阐述: 1. 计算机硬件基础知识 ...

    东南大学考研通信初试数电复习笔记和试题.zip

    东南大学考研通信初试数电复习笔记和试题

    电磁场与电磁波谢处方 第四版第五版 学习笔记 期末复习笔记资料 学霸笔记 详细的复习笔记资料

    电磁场与电磁波谢处方 第四版第五版 学习笔记 期末复习笔记资料 学霸笔记 详细的复习笔记资料

    2022年-软考-网络工程师-复习笔记

    2022年-软考-网络工程师-复习笔记-网络安全-上半年-学习笔记-考点-真题讲解-重点归纳

    网络管理员复习笔记1至15章

    网络管理员考试复习的好资料,有关课程的精华资料记载,可供享用^

Global site tag (gtag.js) - Google Analytics