JAVA

导读 ITJS的这篇文章来自stackoverflow的问答,讨论了Java Servlet的工作机制,如何进行实例化、共享变量和多线程处理。 问题:Servlet是如何工作的?Servlet 如何实例化、共享变量、并进行多线程处理? 假设本人有一个运行了大量 Servlet 的 web 服务器。通...

1. 前言 在Java并发包中常用的锁(如:ReentrantLock),基本上都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时 刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一...

经常发现有List< super T>、Set< extends T>的声明,是什么意思呢?< super T>表示包括T在内的任何T的父类,< extends T>表示包括T在内的任何T的子类,下面各位同行详细分析一下两种通配符具体的区别。 extends List< extend...

RelProxy 旨在通过下列两种方式提高开发效率: 可以在生产环境下修改用户代码,而不需要重新加载整个应用。 提高开发效率,避免花费过多的时间加载应用且对性能不会有影响。 两个目标都要求在你的应用中增加一些 RelProxy 代码,注册成一种典型的监听、回...

虽然文章标题是Java, 但几乎所有面向对象设计的语言都遵守这个初始化流程, 感谢廖祜秋liaohuqiu_秋百万指出, 之前忘记提这个了. 前言 drakeet写了个和RecyclerView相关的GenerousRecyclerView, 原文提到了写这个的目的. 因为需要知道ViewGroup的clipToPadding...

有简单又高效的方法可以实现单例模式,但没有一种方式能在任何情况下都确保单例的完整性。 单例模式是指某个类只被实例化一次,用来表示全局或系统范围的组件。单例模式常用于日志记录、工厂、窗口管理器和平台组件管理等。本人认为要尽量避免使用单例模式,...

一、引子 文件,作为常见的数据源。关于操作文件的字节流就是 — FileInputStream & FileOutputStream。它们是Basic IO字节流中重要的实现类。 二、FileInputStream源码分析 FileInputStream源码如下: /** * FileInputStream 从文件系统的文件中获取输...

什么是回调?今天傻傻地截了张图问了下,然后被陈大牛回答道“就一个回调…”。此时千万个草泥马飞奔而过 哈哈,看着源码,享受着这种回调在代码上的作用,真是美哉。不妨总结总结。 一、什么是回调 回调,回调。要先有调用,才有调用者和被调用者之间的回调...

你还在使用 Java 服务器页面(俗称JSP)吗?本人曾经也是,但是几年前本人抛弃了它们,并且再也没有用过JSP了。JSP 是个很好的概念,但是它却剥夺了 web 开发的乐趣。 对本人而言,这些都是小事,比如无法在页面模板上使用单独的文件header.jsp 和 footer.jsp...

高性能编程在对不同场景下对于容器的选择有着非常苛刻的条件,这里记录下前人总结的经验,并对源码进行调试 JDK高性能编程之容器 读书笔记内容部分来源书籍深入理解JVM、互联网等 先放一个类图util,点击打开看明细 j360-jdk调试功能 https://github.com/xu...

根据摩尔定律(Moore’s law),集成电路晶体管的数量差不多每两年就会翻一倍。但是晶体管数量指数级的增长不一定会导致 CPU 性能的指数级增长。处理器制造商花了很多年来提高时钟频率和指令并行。在新一代的处理器上,单线程程序的执行速率确实有所提高。但...

各位同行先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一、定义查看 API 会发现,String、StringBuffer、StringBuilder 都实现了 CharSequence 接口,内部都是用一个char数组实现...

通过 HashMap、HashSet 的源代码分析其 Hash 存储机制 实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算法决定集合元素的存储位置,这样可以保证能快速存、取集合元素;对于 HashMap 而言,系统 key-value 当成一个整体...

1、 为什么两个(1927年)时间相减得到一个奇怪的结果? (3623个赞) 如果执行下面的程序,程序解析两个间隔1秒的日期字符串并比较: public static void main(String[] args) throws ParseException { SimpleDateFormat sf = new SimpleDateFormat('yyyy-...

想要加强你的编程能力吗?想要提升你的 Java 编程技巧和效率吗? 不用担心。ITJS的这篇文章将会提供快速高效学习 Java 编程的 50 多个网站资源: 开始探索吧: 1、MKyong:许多开发者在这里可以找到带文字说明和图解的示例代码。这是一个探索各种框架的平...

Java是目前最流行的编程语言之一——它可以用来编写Windows程序或者是Web应用,移动应用,网络程序,消费电子产品,机顶盒设备,它无处不在。 有超过30亿的设备是运行在Java之上的。根据Oracle的统计数据,光是使用中的Java Card就有有50亿。 超过900万程序...

1. JVM Tuning基础知识 1.1 Java堆结构 Java堆可以处于物理上不连续的内存空间上,只要逻辑上是连续的即可。Java堆就是各种对象分配和保存的内存空间,线程间共享。Java堆分为Eden区,Survivor区,tenured区和Permanent区,如下图所示。 Java堆的分配原则如...

查看不同公司新鲜真实的Java面试题,摘自Glassdoor.com 巴克莱投资: 假设有一个 getNextparson() 方法返回 Person 对象,Person 类实现了 comparable 接口,现在从文件中读取记录并排序,然后给出前 1000 条记录,纸上作答 答案见Glassdoor 写一个函数,传...

什么是不可变对象? 众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本...

作为一名 Java Web 应用开发者,你已经快速学习了 request(HttpServletRequest)和 session(HttpSession)作用域。在设计和构建 Java Web 应用时,理解这些作用域,如何将数据与对象和这些作用域交互是十分重要的。【在 StackOverflow 上有一篇文章可以帮助...

在前面介绍JUC的文章中,提到了关于线程池Execotors的创建介绍,在文章:《java之JUC系列-外部Tools》中第一部分有详细的说明,请参阅; 文章中其实说明了外部的使用方式,但是没有说内部是如何实现的,为了加深对实现的理解,在使用中可以放心,各位同行这...

Java开发人员都知道,Java利用垃圾回收机制来自动保持应用程序内存的干净和健康。然而可能有人不知道的是,即使使用了垃圾回收机制,Java中仍然可能存在内存泄漏风险。如果你碰到下面的错误代码: java.lang.OutOfMemoryError: Java heap space 如果你确认是...

常见 Java 异常解释:(译者注:非技术角度分析。阅读有风险,理解需谨慎:)) java.langArithmeticException 你正在试图使用电脑解决一个自己解决不了的数学问题,请重新阅读你的算术表达式并再次尝试。ArrayIndexOutOfBoundsException 请查看 IndexOutOfBoun...

在 Java 8 中使用函数式编程生成字母序列是一个很大的挑战。Lukas Eder 愉快地接受了这个挑战,他将告诉各位同行如何使用 Java 8 来生成ABC的序列——当然,肯定不是一种蹩脚的方式。 本人被 Stack Overflow 上网友“mip”提的一个有趣的问题给难住了。该问...