- PintOS lab2 User Programs 实验记录
boring_111
cs162linux开发语言
Background大体流程如下图所示,显然这时候start_process无法被调度到。然后start_process里面load.out文件(.o文件就是对象文件,是可重定向文件的一种,通常以ELF格式保存,里面包含了对各个函数的入口标记,描述,当程序要执行时还需要链接(link).链接就是把多个.o文件链成一个可执行文件out)ELF格式先创造pagetable,然后加载headr(记录结构
- Pintos project2 实验报告
阿阿阿扶
操作系统ubuntu
project2是在src/userprog中进行代码修改,主要分为参数分离和系统调用者两大任务。任务一参数传递用到的相干目录:pintos/src/userprog/process.cthread.hsynch.h在这个任务中,我们主要修改"process.c"和处理字符串。同时,为了测试我们的算法在此任务中的正确性,我们还必须在'syscall.c'中实现其他功能预期pass:aggs-xxx
- Pintos project 1 实验报告(代码分享)
阿阿阿扶
操作系统ubuntu
任务一AlarmClock用到的相干目录有:pintos/src/devicestime.h&&time.cpintos/src/threadsthread.h&&thread.c预期pass希望:暂无,安装pintos之后,第一次对threads进行makecheck操作,可以发现以alarm--开头的前六个文件,以及mlfqs-fair-2和mlfqs-fair-20文件,一开始就测试成功pa
- 操作系统课程设计pintos project1实验摘记
操作系统
前言:本篇意在记录本学期结束的操作系统课程设计pintosproject1实验报告和实现过程。整个实验参考了多篇文章也查阅了一些代码,其中部分内容或与其他文章相同,还请见谅。第一部分项目概述一、Pintos简介Pintos是一个基于80x86架构的简单操作系统框架,它支持内核级线程、能够加载和运行用户程序,也拥有文件系统,不过,这些功能均以一种简单的形式实现。二、项目要求1、项目一线程管理在这一项
- VirtualBox 导入vdi文件注意事项
chewan7560
这个学期有操作系统这门课,老师让我们装个虚拟机,在Linux环境下修改pintos代码。我用的虚拟机是开源免费的VirtualBox,老师给了我们配置好的opensuSE,一个vdi文件。新建虚拟机大家肯定都会,问题是安装完以后运行却显示错误。这一般是配置导致的,一般在setting里面的storage里面把IDEController里面的empty删掉,把新建虚拟机时选择的vdi文件导入,再把S
- pintos (4) --Mesa vs. Hoare style
windroid
pintos
在阅读pintos/src/threads/synch.c的时候,发现了一个令人疑惑的地方:/*Downor"P"operationonasemaphore.WaitsforSEMA'svaluetobecomepositiveandthenatomicallydecrementsit.Thisfunctionmaysleep,soitmustnotbecalledwithinaninterrup
- 2019-06-12-pintos 实验1
qq_42452405
layout:posttitle:“pintos实验一”description:“”date:2019-06-12文章目录layout:posttitle:"pintos实验一"description:""date:2019-06-12环境配置问题1、Pintos安装问题1)pintos版本过低导致编译出错解决办法:2)安装bochs时配置错误解决办法:2、Pintos运行问题1)更改相关配置文件
- EOJ 3037 十六进制加法
Qoo?
大二下EOJ
写在前面:hhhhh我又回来了,发现一个学期都没写博客了嗷【捂脸现在回想起来其实还是有很多可写的内容的,比如计网实验、操作系统改pintos、Linux课后作业……还有这个寒假去杭州参加的GoogleInnoCamp!(吹爆!)害,值得写的东西固然有很多,但不写只有一个理由:懒不过,慵懒如我还是抵不住被困在家的闲,最近打算更新一波~大部分应该是记录最近做到的还不错的OJ题。如果写嗨了可能会写点别的
- 操作系统——实验一
二磊Jerly
一、(系统调用实验)了解系统调用不同的封装形式。要求:1、参考下列网址中的程序。阅读分别运行用API接口函数getpid()直接调用和汇编中断调用两种方式调用Linux操作系统的同一个系统调用getpid的程序(请问getpid的系统调用号是多少?linux系统调用的中断向量号是多少?)。2、上机完成习题1.13。3、阅读pintos操作系统源代码,画出系统调用实现的流程图。答:1.运行结果如下图
- Pintos源码学习进度(5)
speakspeak
1.pageallocate内存分配方式structpool{structlocklock;/*Mutualexclusion.*/structbitmap*used_map;/*Bitmapoffreepages.*/uint8_t*base;/*Baseofpool.*/};palloc_init①allocate的初始存放位置是从1M的位置开始的,结束位置为ram的大小②获得userpage
- git进行版本控制(还原到之前的版本)三步
肥宅_Sean
调试技术知识库Linux
步骤一先得到对应的hash值(这个在我们每次执行完gitcommit之后都会有的!)但是我们一般都是记不住的。所以!输入Linux的terminal或者是windows的bash上直接输入gitlog比如说这里的,我对于pintos建了一个仓库(可以看到这个东西的原作者是Stanford大学的一个教授或者学生?)当然,这里也可以在log后面加文件名,当然就是获得文件的信息啦~得到的输出:黄色字体部
- 操作系统:Pintos Project 1
HOH_mizukun
操作系统
也是借鉴了网上一些实现,勉勉强强将Project1过了,不过感觉代码中还是有些问题的。alarm测试集这个测试集要求重新实现timer_sleep()函数,将原来的忙等待改为非忙等待。思路跟阻塞线程类似:1.为线程增加一个新的状态,表示线程正处在sleep中。thread.h:在文件靠前添加宏定义:#defineTHREAD_SLEEPTHREAD_BLOCKED2.在内核中增加一个列表sleep
- 两个实验操作系统-ubuntu在安装配置pintos
ubuntu
安前两次莫名其妙, 蛋疼的实验操作系统..
首先下错了总结第一次。
使用最后gdb调试pintos什么时候, 这个错误将被报告:
bochsrc.txt:8: Bochs is not compiled with gdbstub support
百度了好久没找到解决的方法。
后来通过设置 ubuntu 64位 兼容32位 , 攻克了问题。
具体解决的方法例如以下: (依次执行例如
- Pintos修改优先级捐赠、嵌套捐赠、锁的获得与释放、信号量及PV操作
int
Pintos修改优先级捐赠、嵌套捐赠、锁的获得与释放、信号量及PV操作
原有的优先级更改的情况下面没有考虑到捐赠的情况,仅仅只是改变更改了当前线程的优先级,更别说恢复原本优先级了,所以不能通过任何有关捐赠的test。
原有的获得互斥锁和释放互斥锁的时候,仅仅是对信号量做一个简单的PV操作,获得互斥锁的时候应当考虑该锁当前是否被别的线程持有和优先级如何是否该被阻塞,释放互斥锁的时候也差不多同理,
- Pintos实现条件变量与多级反馈队列
int
Pintos实现条件变量与多级反馈队列
因为原来pintos的初始仅仅是留下了一些空函数,并没有任何实现,因此不可能通过这些test 。需要根据官方文档,自己实现后才能通过。
而fair的两个test能通过,是因为原来的get_nice函数都是统一返回0,所有线程都得到相同的nice值,因此恰好满足了fair这个test的目的,所以原本就能通过。
本次部分需要参考的官方文档:http://w
- Ubuntu系统安装配置Pintos和Bochs
ubuntu
Ubuntu系统安装配置 Pintos 和 Bochs 安装过程
首先是UEFI启动模式下Win8.1安装Ubuntu14.04双系统,由于篇幅过长,就不在这里详写。可见博主的另一篇博客http://www.cnblogs.com/wsine/p/4297580.html
本身已安装过其它软件,所以之前就安装好了一些必备的依赖库。安装方法都是sudo apt-get stall xxx比较简单
- 斯坦福大学操作系统
操作系统
Pintos-斯坦福大学操作系统Project详解-Project1
前言:
本实验来自斯坦福大学cs140课程,只限于教学用途,以下是他们对于Pintos系统的介绍:
Pintos is a simple operating system framework for the 80x86 architecture. It s
- Pintos修改优先级抢占机制
int
Pintos修改优先级抢占机制 代码修改
创建线程的时候,放入ready队列中,遍历所有线程,如果新线程的优先级比所以线程的优先级都高,则当前线程让出CPU
/* Add to run queue. */
thread_unblock(t);
if(priority>(thread_current()->priority)){
thread_yield();
}
return
- Pintos增加睡眠与唤醒修改
int
Pintos增加睡眠与唤醒修改
原来的设计当中,进程进入休眠的时候,并没有释放CPU,而是一直占有着,直到睡眠时间流逝掉,又继续占用着CPU。假如遇到一些流氓进程,电脑就会卡死在这一进程当中。术语中叫做“忙等待”。原本的唤醒机制中,并不是根据优先级进行唤醒的。而是直接加入到ready队列中,这样设计一旦高优先级的进程进入了waiting队列后回到ready队列的时候要重新排队等待CPU。造成了不
- pintos线程转换机制
zjck1995
首先先大致感受下转换流程,稍后解释原来的汇编代码:####Thisfunctionworksbyassumingthatthethreadwe'reswitching
####intoisalsorunningswitch_threads().Thus,allithastodois
####preserve(保存)afewregistersonthestack,thenswitchstacksan
- pintos操作系统thread部分的实现
fuyukai
pintos是斯坦福大学自己开发的一个教学用操作系统,里面的代码给我们留了许多坑,我们的目标就是解决这些坑!具体的实现大家可以看看这篇blog,虽然我的代码并不是全部跟着他写的,但是这确实是一篇很好地blog,没有这blog根本写不出来。PS:pintos代码,thread部分可以在这里下载
- qemu运行pintos
wuxiaoer717
Pintos:基于80x86架构的一个简单操作系统框架,支持内核线程,加载和运行用户程序,以及一个文件系统,但是所有这些都是以一种简单的方式实现。Pintos理论上可以运行在普通的IBM兼容的PC机上。但是为了便于调试内核代码,Pintos运行在仿真器上,我们将使用Bochs和Qemu仿真器一.qemu安装1.配置./configure--prefix=/usr/local/src/qemu--t
- Pintos-斯坦福大学操作系统Project详解-Project1
#JerryLee#
【OperatingSystem】操作系统
前言:本实验来自斯坦福大学cs140课程,只限于教学用途,以下是他们对于Pintos系统的介绍:Pintosisasimpleoperatingsystemframeworkforthe80x86architecture.Itsupportskernelthreads,loadingandrunninguserprograms,andafilesystem,butitimplementsallof
- Pintos-斯坦福大学操作系统Project详解-Project1
laiy
转载请注明出处。前言: 本实验来自斯坦福大学cs140课程,只限于教学用途,以下是他们对于Pintos系统的介绍: Pintosisasimpleoperatingsystemframeworkforthe80x86architecture.Itsupportskernelthreads,loadingandrunninguserprograms,andafilesystem,butitimpl
- Pintos操作系统Part1+Part2
li362927450
pintos
https://www.gitbook.com/book/jeason/pintos-reference-guide-sysu/details这是我们整理的教学文档~记得点个赞
- Ubuntu下安装Pintos
ITSophia
操作系统
安装Pintos之前需要先把bochs-2.2.6-pintos.tar和pintos-tar下载到自己的目录文件中。这两个文件可以在此网站中下载。http://web.stanford.edu/class/cs140/projects/pintos/注意,我们下载的文件是.tar.gz的,原本在windows系统上下载好这两个文件的.tar压缩包,却发现在ubuntu中无法解压.tar文件。将下
- Ubuntu下安装Pintos
HeyGirl
pintos
安装Pintos之前需要先把 bochs-2.2.6-pintos.tar和pintos-tar下载到自己的目录文件中。这两个文件可以在此网站中下载。http://web.stanford.edu/class/cs140/projects/pintos/
注意,我们下载的文件是.tar.gz的,原本在windows系统上下载好这两个文件的.tar压缩
- 操作系统实验二-ubuntu下安装配置pintos
hitwhylz
安了两次才弄好,蛋疼的操作系统实验..先总结下第一次的错误。在最后使用gdb调试pintos的时候,会报这样的错误:bochsrc.txt:8:Bochsisnotcompiledwithgdbstubsupport百度了好久没找到解决办法。后来通过设置ubuntu64位兼容32位,解决了问题。具体解决办法如下:(依次执行如下三条指令即可)(要先执行这三条指令,再安装配置pintos)$sudoa
- VirtualBox 导入vdi文件注意事项
Amstrong
linuxVirtualBoxvdipintos
这个学期有操作系统这门课,老师让我们装个虚拟机,在Linux环境下修改pintos代码。我用的虚拟机是开源免费的VirtualBox,老师给了我们配置好的opensuSE,一个vdi文件。 新建虚拟机大家肯定都会,问题是安装完以后运行却显示错误。 这一般是配置导致的,一般在setting里面的storage里面把IDEController里面的empty删掉,把新建虚拟机时选择的vd
- project2注意事项
insertyou
project
哎。。这是我最起码3个星期得出的纠结结论。。。由于这点,使得我的进度一直受阻。虽然听上去很简单,但是我却发现地很晚。。
问题:pintos run args-*一类的会出现load failed。
解决方案:因为需要把userprog/build/tests/userprog中的可执行文件按照pintos -p [directory and name] -a name -- -q 导入一开始创
- Java 并发包之线程池和原子计数
lijingyao8206
Java计数ThreadPool并发包java线程池
对于大数据量关联的业务处理逻辑,比较直接的想法就是用JDK提供的并发包去解决多线程情况下的业务数据处理。线程池可以提供很好的管理线程的方式,并且可以提高线程利用率,并发包中的原子计数在多线程的情况下可以让我们避免去写一些同步代码。
这里就先把jdk并发包中的线程池处理器ThreadPoolExecutor 以原子计数类AomicInteger 和倒数计时锁C
- java编程思想 抽象类和接口
百合不是茶
java抽象类接口
接口c++对接口和内部类只有简介的支持,但在java中有队这些类的直接支持
1 ,抽象类 : 如果一个类包含一个或多个抽象方法,该类必须限定为抽象类(否者编译器报错)
抽象方法 : 在方法中仅有声明而没有方法体
package com.wj.Interface;
- [房地产与大数据]房地产数据挖掘系统
comsci
数据挖掘
随着一个关键核心技术的突破,我们已经是独立自主的开发某些先进模块,但是要完全实现,还需要一定的时间...
所以,除了代码工作以外,我们还需要关心一下非技术领域的事件..比如说房地产
&nb
- 数组队列总结
沐刃青蛟
数组队列
数组队列是一种大小可以改变,类型没有定死的类似数组的工具。不过与数组相比,它更具有灵活性。因为它不但不用担心越界问题,而且因为泛型(类似c++中模板的东西)的存在而支持各种类型。
以下是数组队列的功能实现代码:
import List.Student;
public class
- Oracle存储过程无法编译的解决方法
IT独行者
oracle存储过程
今天同事修改Oracle存储过程又导致2个过程无法被编译,流程规范上的东西,Dave 这里不多说,看看怎么解决问题。
1. 查看无效对象
XEZF@xezf(qs-xezf-db1)> select object_name,object_type,status from all_objects where status='IN
- 重装系统之后oracle恢复
文强chu
oracle
前几天正在使用电脑,没有暂停oracle的各种服务。
突然win8.1系统奔溃,无法修复,开机时系统 提示正在搜集错误信息,然后再开机,再提示的无限循环中。
无耐我拿出系统u盘 准备重装系统,没想到竟然无法从u盘引导成功。
晚上到外面早了一家修电脑店,让人家给装了个系统,并且那哥们在我没反应过来的时候,
直接把我的c盘给格式化了 并且清理了注册表,再装系统。
然后的结果就是我的oracl
- python学习二( 一些基础语法)
小桔子
pthon基础语法
紧接着把!昨天没看继续看django 官方教程,学了下python的基本语法 与c类语言还是有些小差别:
1.ptyhon的源文件以UTF-8编码格式
2.
/ 除 结果浮点型
// 除 结果整形
% 除 取余数
* 乘
** 乘方 eg 5**2 结果是5的2次方25
_&
- svn 常用命令
aichenglong
SVN版本回退
1 svn回退版本
1)在window中选择log,根据想要回退的内容,选择revert this version或revert chanages from this version
两者的区别:
revert this version:表示回退到当前版本(该版本后的版本全部作废)
revert chanages from this versio
- 某小公司面试归来
alafqq
面试
先填单子,还要写笔试题,我以时间为急,拒绝了它。。时间宝贵。
老拿这些对付毕业生的东东来吓唬我。。
面试官很刁难,问了几个问题,记录下;
1,包的范围。。。public,private,protect. --悲剧了
2,hashcode方法和equals方法的区别。谁覆盖谁.结果,他说我说反了。
3,最恶心的一道题,抽象类继承抽象类吗?(察,一般它都是被继承的啊)
4,stru
- 动态数组的存储速度比较 集合框架
百合不是茶
集合框架
集合框架:
自定义数据结构(增删改查等)
package 数组;
/**
* 创建动态数组
* @author 百合
*
*/
public class ArrayDemo{
//定义一个数组来存放数据
String[] src = new String[0];
/**
* 增加元素加入容器
* @param s要加入容器
- 用JS实现一个JS对象,对象里有两个属性一个方法
bijian1013
js对象
<html>
<head>
</head>
<body>
用js代码实现一个js对象,对象里有两个属性,一个方法
</body>
<script>
var obj={a:'1234567',b:'bbbbbbbbbb',c:function(x){
- 探索JUnit4扩展:使用Rule
bijian1013
java单元测试JUnitRule
在上一篇文章中,讨论了使用Runner扩展JUnit4的方式,即直接修改Test Runner的实现(BlockJUnit4ClassRunner)。但这种方法显然不便于灵活地添加或删除扩展功能。下面将使用JUnit4.7才开始引入的扩展方式——Rule来实现相同的扩展功能。
1. Rule
&n
- [Gson一]非泛型POJO对象的反序列化
bit1129
POJO
当要将JSON数据串反序列化自身为非泛型的POJO时,使用Gson.fromJson(String, Class)方法。自身为非泛型的POJO的包括两种:
1. POJO对象不包含任何泛型的字段
2. POJO对象包含泛型字段,例如泛型集合或者泛型类
Data类 a.不是泛型类, b.Data中的集合List和Map都是泛型的 c.Data中不包含其它的POJO
 
- 【Kakfa五】Kafka Producer和Consumer基本使用
bit1129
kafka
0.Kafka服务器的配置
一个Broker,
一个Topic
Topic中只有一个Partition() 1. Producer:
package kafka.examples.producers;
import kafka.producer.KeyedMessage;
import kafka.javaapi.producer.Producer;
impor
- lsyncd实时同步搭建指南——取代rsync+inotify
ronin47
1. 几大实时同步工具比较 1.1 inotify + rsync
最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是 inotify + rsync,但随着文件数量的增大到100W+,目录下的文件列表就达20M,在网络状况不佳或者限速的情况下,变更的文件可能10来个才几M,却因此要发送的文件列表就达20M,严重减低的带宽的使用效率以及同步效率;更为要紧的是,加入inotify
- java-9. 判断整数序列是不是二元查找树的后序遍历结果
bylijinnan
java
public class IsBinTreePostTraverse{
static boolean isBSTPostOrder(int[] a){
if(a==null){
return false;
}
/*1.只有一个结点时,肯定是查找树
*2.只有两个结点时,肯定是查找树。例如{5,6}对应的BST是 6 {6,5}对应的BST是
- MySQL的sum函数返回的类型
bylijinnan
javaspringsqlmysqljdbc
今天项目切换数据库时,出错
访问数据库的代码大概是这样:
String sql = "select sum(number) as sumNumberOfOneDay from tableName";
List<Map> rows = getJdbcTemplate().queryForList(sql);
for (Map row : rows
- java设计模式之单例模式
chicony
java设计模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述单例模式的:
作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 单例模式的结构
单例模式的特点:
单例类只能有一个实例。
单例类必须自己创建自己的唯一实例。
单例类必须给所有其他对象提供这一实例。
饿汉式单例类
publ
- javascript取当月最后一天
ctrain
JavaScript
<!--javascript取当月最后一天-->
<script language=javascript>
var current = new Date();
var year = current.getYear();
var month = current.getMonth();
showMonthLastDay(year, mont
- linux tune2fs命令详解
daizj
linuxtune2fs查看系统文件块信息
一.简介:
tune2fs是调整和查看ext2/ext3文件系统的文件系统参数,Windows下面如果出现意外断电死机情况,下次开机一般都会出现系统自检。Linux系统下面也有文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。
二.用法:
Usage: tune2fs [-c max_mounts_count] [-e errors_behavior] [-g grou
- 做有中国特色的程序员
dcj3sjt126com
程序员
从出版业说起 网络作品排到靠前的,都不会太难看,一般人不爱看某部作品也是因为不喜欢这个类型,而此人也不会全不喜欢这些网络作品。究其原因,是因为网络作品都是让人先白看的,看的好了才出了头。而纸质作品就不一定了,排行榜靠前的,有好作品,也有垃圾。 许多大牛都是写了博客,后来出了书。这些书也都不次,可能有人让为不好,是因为技术书不像小说,小说在读故事,技术书是在学知识或温习知识,有
- Android:TextView属性大全
dcj3sjt126com
textview
android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all) android:autoText 如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输
- tomcat虚拟目录安装及其配置
eksliang
tomcat配置说明tomca部署web应用tomcat虚拟目录安装
转载请出自出处:http://eksliang.iteye.com/blog/2097184
1.-------------------------------------------tomcat 目录结构
config:存放tomcat的配置文件
temp :存放tomcat跑起来后存放临时文件用的
work : 当第一次访问应用中的jsp
- 浅谈:APP有哪些常被黑客利用的安全漏洞
gg163
APP
首先,说到APP的安全漏洞,身为程序猿的大家应该不陌生;如果抛开安卓自身开源的问题的话,其主要产生的原因就是开发过程中疏忽或者代码不严谨引起的。但这些责任也不能怪在程序猿头上,有时会因为BOSS时间催得紧等很多可观原因。由国内移动应用安全检测团队爱内测(ineice.com)的CTO给我们浅谈关于Android 系统的开源设计以及生态环境。
1. 应用反编译漏洞:APK 包非常容易被反编译成可读
- C#根据网址生成静态页面
hvt
Web.netC#asp.nethovertree
HoverTree开源项目中HoverTreeWeb.HVTPanel的Index.aspx文件是后台管理的首页。包含生成留言板首页,以及显示用户名,退出等功能。根据网址生成页面的方法:
bool CreateHtmlFile(string url, string path)
{
//http://keleyi.com/a/bjae/3d10wfax.htm
stri
- SVG 教程 (一)
天梯梦
svg
SVG 简介
SVG 是使用 XML 来描述二维图形和绘图程序的语言。 学习之前应具备的基础知识:
继续学习之前,你应该对以下内容有基本的了解:
HTML
XML 基础
如果希望首先学习这些内容,请在本站的首页选择相应的教程。 什么是SVG?
SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
SVG 用来定义用于网络的基于矢量
- 一个简单的java栈
luyulong
java数据结构栈
public class MyStack {
private long[] arr;
private int top;
public MyStack() {
arr = new long[10];
top = -1;
}
public MyStack(int maxsize) {
arr = new long[maxsize];
top
- 基础数据结构和算法八:Binary search
sunwinner
AlgorithmBinary search
Binary search needs an ordered array so that it can use array indexing to dramatically reduce the number of compares required for each search, using the classic and venerable binary search algori
- 12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!
刘星宇
c面试
12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!
1.gets()函数
问:请找出下面代码里的问题:
#include<stdio.h>
int main(void)
{
char buff[10];
memset(buff,0,sizeof(buff));
- ITeye 7月技术图书有奖试读获奖名单公布
ITeye管理员
活动ITeye试读
ITeye携手人民邮电出版社图灵教育共同举办的7月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
7月试读活动回顾:
http://webmaster.iteye.com/blog/2092746
本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《Java性能优化权威指南》