文章目录产生原因Java官方解释问题复现产生原因正常情况下,select()方法在没有事件时,程序一直阻塞在该方法,但是在没有任何事件的情况下,该方法被唤醒,但是在程序对seclectionKey进行遍历时,却没有任何key,导致程序一直在循环中不能执行下去,从而导致CPU100%。 具体解释为Linux kernel 2.6中的一部分,poll和epoll会对已经连接好后却突然中断连接的sock
目录 四 OptionalOptional类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象Optional是一个容器,可以保存类型T的值,或者仅仅保存null。Optional提供了空值检测方式,很好地解决了空指针异常。1 创建Optional方法Optional.ofNullable()
可以传递空对象Op
转载
2023-12-19 21:57:31
39阅读
一、Optional类 Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException),提供了一些的方法代替过去的if-else处理逻辑,并与Stream流结合提供一致性的函数式编程。 【推荐】防止NPE,是程序员的基本修养,注意 NPE 产生的场景: &nbs
转载
2024-01-29 11:05:32
7阅读
程序运行的本质,就是使用系统资源(CPU、内存、网络、磁盘等)完成信息的处理。比如在JVM中创建一个对象实例需要CPU和内存资源,如需频繁创建大量对象,并且这些对象存活时间短,就需要频繁销毁,很可能这部分代码会成为性能瓶颈。“池”就是用来解决这问题。对象池就是把用过的对象保存起来,等下次需要这种对象时,直接从对象池中拿出来复用,避免频繁创建和销毁。JDK中提供了线程池的默认实现,我们也可以通过扩展Java原生线程池来实现自己的线程池。为提高处理能力和并发度,Web容器一般会把处理请求的工作放到线程池,
原创
2021-08-19 11:08:16
2985阅读
程序运行的本质,就是使用系统资源(CPU、内存、网络、磁盘等)完成信息的处理。比如在JVM中创建一个对象实例需要CPU和内存资源,如需频繁创建大量对象,并且这些对象存活时间短,就需要频繁销毁,很可能这部分代码会成为性能瓶颈。“池”就是用来解决这问题。对象池就是把用过的对象保存起来,等下次需要这种对象时,直接从对象池中拿出来复用,避免频繁创建和销毁。JDK中提供了线程池的默认实现,我们也可以通过扩展Java原生线程池来实现自己的线程池。为提高处理能力和并发度,Web容器一般会把处理请求的工作放到线程池,
原创
2022-01-18 11:14:59
178阅读
Hollis的新书限时折扣中,一本深入讲解Java基础的干货笔记!之前遇到个文件监听变更的问题,刚好这周末有空研究了一番,整理出来分享给大家。从一次故障说起我们还是从故障说起,这样更加贴近实际,也能让大家更快速理解背景。
转载
2022-05-17 11:29:18
123阅读
java发展历史1995年5月23日,Java语言诞生1996年1月,第一个JDK-JDK1.0诞生1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术1996年9月,约8.3万个网页应用了JAVA技术来制作1997年2月18日,JDK1.1发布1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录1997年9月,JavaDeveloper
原创
2017-05-29 21:02:24
1380阅读
JDK NIO的BUG,例如臭名昭著的epoll bug,它会导致Selector空轮询,最终导致CPU 100%。官方声称在JDK1.6版本的update18修复了该问题,但是直到JDK1.7版本该问题仍旧存在,只不过该BUG发生概率降低了一些而已,它并没有被根本解决。该BUG以及与该BUG相关的问题单可以参见以下链接内容。
https://bugs.java.com/bugdatabase/
转载
2021-08-20 14:48:19
1893阅读
名词解释:man epoll之后,得到如下结果:NAME
epoll - I/O event notification facilitySYNOPSIS
#include <sys/epoll.h>DESCRIPTION
epoll is a variant of poll(2) that can be used either as Edge
转载
2023-07-29 19:41:08
37阅读
之前记录过jdk9+版本的1个bug,某些情况下会导致方法执行二遍,今天早上打开笔记本(mac),弹出一个框提示jdk升级10.0.2,顺手点了一下,然后验证了下该bug,发现居然fix掉了,推荐大家升级!
还是这段代码:
public class JavacEvalBug{
private static String[] array = {""};
sta
转载
2018-07-28 11:17:00
58阅读
2评论
tomcat介绍Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。java程序写的网站用tomcat+jdk来运行tomcat是一个中间件,真正起作用的,解析java脚本的是jdkjdk(javadevelopmentkit)是整个java的核心,它包含了java运行
原创
2018-06-25 22:08:54
990阅读
apache+php的安装过程就省略了
1安装jdk
#chmod 755 jdk-1_5_0_06-linux-i586.bin
#./jdk-1_5_0_06-linux-i586.bin
将该文件移动到/usr/local/java 目录下
# mv jdk1.5.0_06 /usr/local/java/
到/usr/bin目录下,把原用的java,javac文件删除:
原创
2007-08-03 18:38:31
927阅读
1评论
<理论疏理> JDK是整个java的核心-----java语言的软件开发工具包-包括了java运行环境-java工具(如编译,排错,打包等工具)-java基础的类库 Java【web网站】——————————》jdk + tomcatjdk————————————————————————》java解释器tomcat————————————————————————》【
原创
2018-03-09 20:12:34
1302阅读
第十六章Tomcat配置16.1Tomcat介绍Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。ja
原创
2018-03-29 22:44:43
853阅读
一, tomcat配置文件
在tomcat的配置文件中添加被监控的项
#在tomcat配置文件中开启监控功能 vim /application/tomcat/bin/catalina.sh +97 CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.manag
原创
2022-01-16 14:46:00
151阅读
1.上传jdk-6u17-linux-i586.bin和apache-tomcat-6.0.20.tar.gz到/usr2.安装JDK$chmod a+x jdk-6u17-linux-i586.bin$ ./jdk-6u17-linux-i586.bin$ vi /etc/profile#添加如下export JAVA_HOME=/usr/jdk1.6.0_17export PATH=$JAVA
转载
精选
2013-10-11 17:13:14
463阅读
JAVA_HOM
原创
2022-11-04 17:35:41
151阅读
在安装tomcat之前,需要安装jdk环境:
chmod o+x jdk-6u17-linux-x64.bin
./jdk-6u17-linux-x64.bin
按空格键完成协议,当出现提示"Do you agree to the above license terms?[yes or no]"时,输入“yes”
原创
2013-04-02 21:23:52
300阅读
一、拷贝、上传JDK,TOMCAT1、挂接U盘拷贝查看分区Fdisk –l创建挂接点Mkdir /mnt/usb挂接U盘Mount dev/sdb1 /mnt/usb查看文件Ls –l拷贝文件Cp /usr2、通过SSH协议FTP拷贝基本网络配置应用程序-系统工具-网络 192.168.21.1 202.103.96.112虚拟机IP设置Vmnet1,Vmware Brigdge Protocol
转载
精选
2013-06-01 13:04:26
575阅读
1.查看环境变量是否指定CATALINA_HOME和CATALINA_BASEcat /etc/profile2.找到tocamt的配置文件catalina.sh加入如图所示JAVA_HOME 是你的jdk路径(jdk不用安装)1中如果指定CATALINA_HOME和CATALINA_BASE,这块就需要加上,指定目标tomcat3.启动tomcat,看tomcat启动信息
原创
2017-10-20 09:51:06
1000阅读