自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序那些事

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在程序那些事!

  • 博客(19)
  • 资源 (27)
  • 论坛 (1)
  • 收藏
  • 关注

原创 巧用HashMap一行代码统计单词出现次数

JDK是在一直在迭代更新的,很多我们熟悉的类也悄悄的添加了一些新的方法特性。比如我们最常用的HashMap。今天给大家讲一下HashMap在JDK8中添加的两个新方法compute和merge,从而实现一行代码实现单词统计的功能。一起来看看吧。

2020-08-30 16:37:21 16686 8

原创 java安全编码指南之:拒绝Denial of Service

DOS不是那个windows的前身,而是Denial of Service,有做过系统安全方面的小伙伴可能对这个再熟悉不过了,简单点讲,DOS就是服务型响应不过来,从而拒绝了正常的服务请求。今天本文不是要讲怎么发起一个DOS攻击,而是讲一下怎么在java的代码层面尽量减少DOS的可能性。

2020-08-27 09:58:43 16083 4

原创 java安全编码指南之:基础篇

作为一个程序员,只是写出好用的代码是不够的,我们还需要考虑到程序的安全性。在这个不能跟陌生人说话世界,扶老奶奶过马路都是一件很困难的事情。那么对于程序员来说,尤其是对于开发那种对外可以公开访问的网站的程序员,要承受的压力会大很多。任何人都可以访问我们的系统,也就意味着如果我们的系统不够健壮,或者有些漏洞,恶意攻击者就会破门而入,将我们辛辛苦苦写的程序蹂躏的体无完肤。所以,安全很重要,今天本文将会探讨一下java中的安全编码指南。

2020-08-25 09:54:28 17355 5

原创 看动画学算法之:平衡二叉搜索树AVL Tree

平衡二叉搜索树是一种特殊的二叉搜索树。为什么会有平衡二叉搜索树呢?考虑一下二叉搜索树的特殊情况,如果一个二叉搜索树所有的节点都是右节点,那么这个二叉搜索树将会退化成为链表。从而导致搜索的时间复杂度变为O(n),其中n是二叉搜索树的节点个数。而平衡二叉搜索树正是为了解决这个问题而产生的,它通过限制树的高度,从而将时间复杂度降低为O(logn)。

2020-08-24 10:14:55 4601 6

原创 在java中使用SPI创建可扩展的应用程序

什么是可扩展的应用程序呢?可扩展的意思是不需要修改原始代码,就可以扩展应用程序的功能。我们将应用程序做成插件或者模块。这样可以在不修改原应用的基础上,对系统功能进行升级或者定制化。本文将会向大家介绍如何通过java中的SPI机制实现这种可扩展的应用程序。

2020-08-22 11:52:10 16764 8

原创 一文读懂jar包的小秘密

java程序员每天不是在创建jar包就是在创建jar包的路上,并且各种依赖引用都是以jar包的形式展示的。但是随着现代IDE的出现,我想很多程序员已经基本上很少直接和jar包打交道了。换句话说,他们已经不认识jar包了。那么jar包到底是什么呢?它有哪些小秘密呢?一起来看一下吧。

2020-08-20 09:05:12 16137 10

原创 troubleshoot之:GC调优到底是什么

我们经常会听到甚至需要自己动手去做GC调优。那么GC调优的目的到底是什么呢?让程序跑得更快?让GC消耗更少的资源?还是让程序更加稳定?带着这些疑问来读一下这篇文章,将会得到一个系统的甚至是不一样的结果。

2020-08-18 07:44:10 16182 5

原创 troubleshoot之:使用JFR分析性能问题

文章目录简介GC性能事件同步性能IO性能代码执行的性能其他有用的event简介java程序的性能问题分析是一个很困难的问题。尤其是对于一个非常复杂的程序来说,分析起来更是头疼。还好JVM引入了JFR,可以通过JFR来监控和分析JVM的各种事件。通过这些事件的分析,我们可以找出潜在的问题。今天我们就来介绍一下对java性能分析比较重要的一些JFR事件。GC性能事件一般来说,GC会对java程序的性能操作产生比较重要的影响。我们可以使用jfr监控jdk.GCPhasePause事件。下面是一个jd

2020-08-16 09:04:54 16149 5

原创 troubleshoot之:分析OutOfMemoryError异常

文章目录简介OutOfMemoryErrorjava.lang.OutOfMemoryError: Java heap spacejava.lang.OutOfMemoryError: GC Overhead limit exceededjava.lang.OutOfMemoryError: Requested array size exceeds VM limitjava.lang.OutOfMemoryError: Metaspacejava.lang.OutOfMemoryError: request

2020-08-14 10:10:05 16343 5

原创 看动画学算法之:二叉搜索树BST

文章目录简介BST的基本性质BST的构建BST的搜索BST的插入BST的删除看动画学算法之:二叉搜索树BST简介树是类似于链表的数据结构,和链表的线性结构不同的是,树是具有层次结构的非线性的数据结构。树是由很多个节点组成的,每个节点可以指向很多个节点。如果一个树中的每个节点都只有0,1,2个子节点的话,这颗树就被称为二叉树,如果我们对二叉树进行一定的排序。比如,对于二叉树中的每个节点,如果左子树节点的元素都小于根节点,而右子树的节点的元素都大于根节点,那么这样的树被叫做二叉搜索树(Binary

2020-08-13 19:29:19 4798 6

原创 troubleshoot之:使用JFR解决内存泄露

文章目录简介一个内存泄露的例子使用JFR和JMC来分析内存泄露OldObjectSample总结简介虽然java有自动化的GC,但是还会有内存泄露的情况。当然java中的内存泄露跟C++中的泄露不同。在C++中所有被分配的内存对象都需要要程序员手动释放。但是在java中并不需要这个过程,一切都是由GC来自动完成的。那么是不是java中就没有内存泄露了呢?要回答这个问题我们首先需要界定一下什么是内存泄露。如果说有时候我们不再使用的对象却不能被GC释放的话,那么就可以说发生了内存泄露。内存泄露的主要原

2020-08-12 09:30:06 16255 5

原创 troubleshoot之:用control+break解决线程死锁问题

文章目录简介死锁的代码control+break命令Full thread dump死锁检测Heap信息总结简介如果我们在程序中遇到线程死锁的时候,该怎么去解决呢?本文将会从一个实际的例子出发,一步一步的揭开java问题解决的面纱。死锁的代码写过java多线程程序的人应该都知道,多线程中一个很重要的事情就是状态的同步,但是在状态同步的过程中,一不小心就有可能会导致死锁的问题。一个最简单的死锁情况就是thread1占有资源1,然后又要去获取资源2. 而thread2占有资源2,又要去获取资源1的情

2020-08-08 21:50:30 16341 6

原创 JVM系列之:再谈java中的safepoint

文章目录safepoint是什么safepoint的例子线程什么时候会进入safepointsafepoint是怎么工作的总结safepoint是什么java程序里面有很多很多的java线程,每个java线程又有自己的stack,并且共享了heap。这些线程一直运行呀运行,不断对stack和heap进行操作。这个时候如果JVM需要对stack和heap做一些操作该怎么办呢?比如JVM要进行GC操作,或者要做heap dump等等,这时候如果线程都在对stack或者heap进行修改,那么将不是一个稳定

2020-08-07 09:54:47 17740 7

原创 JVM系列之:从汇编角度分析NullCheck

文章目录简介一个普通的virtual call普通方法中的null check反优化的例子总结简介之前我们在讲Virtual call的时候有提到,virtual call方法会根据传递的参数实例的不同而进行优化,从而优化成为classic call,从而提升执行效率。今天我们考虑一下,在virtual call中执行nullcheck的时候,如果已经知道传递的参数是非空的。JIT会对代码进行优化吗?一起来看看吧。一个普通的virtual call我们来分析一下在方法中调用list.add方法的

2020-08-06 07:42:39 4700 2

原创 JVM系列之:从汇编角度分析Volatile

文章目录简介重排序写的内存屏障非lock和LazySet读的性能总结简介Volatile关键字对熟悉java多线程的朋友来说,应该很熟悉了。Volatile是JMM(Java Memory Model)的一个非常重要的关键词。通过是用Volatile可以实现禁止重排序和变量值线程之间可见两个主要特性。今天我们从汇编的角度来分析一下Volatile关键字到底是怎么工作的。重排序这个世界上有两种重排序的方式。第一种,是在编译器级别的,你写一个java源代码,经过javac编译之后,生成的字节码顺序可

2020-08-05 09:57:16 4868 3

原创 看动画学算法之:hashtable

文章目录简介散列表的关键概念数组和散列表数组的问题hash的问题线性探测二次探测双倍散列分离链接rehash简介java中和hash相关并且常用的有两个类hashTable和hashMap,两个类的底层存储都是数组,这个数组不是普通的数组,而是被称为散列表的东西。散列表是一种将键映射到值的数据结构。它用哈希函数来将键映射到小范围的指数(一般为[0…哈希表大小-1])。同时需要提供冲突和对冲突的解决方案。今天我们来学习一下散列表的特性和作用。文末有代码地址,欢迎下载。散列表的关键概念散列表中比较

2020-08-04 13:50:31 16894 3

原创 JVM系列之:JIT中的Virtual Call接口

文章目录简介最常用的接口List多个List的调用不一样的List调用总结简介上一篇文章我们讲解了Virtual Call的定义并举例分析了Virtual Call在父类和子类中的优化。JIT对类可以进行优化,那么对于interface可不可以做同样的优化么?一起来看看吧。最常用的接口ListList应该是大家最最常用的接口了,我想这个大家应该不会反驳。public interface List<E> extends Collection<E> {今天我们就拿Lis

2020-08-04 09:05:24 16776 2

原创 JVM系列之:JIT中的Virtual Call

文章目录简介Virtual Call和它的本质Virtual Call和classic callVirtual Call优化单实现方法的例子Virtual Call优化多实现方法的例子总结简介什么是Virtual Call?Virtual Call在java中的实现是怎么样的?Virtual Call在JIT中有没有优化?所有的答案看完这篇文章就明白了。Virtual Call和它的本质有用过PrintAssembly的朋友,可能会在反编译的汇编代码中发现有些方法调用的说明是invokevirtu

2020-08-03 10:36:36 17048 4

原创 JVM详解之:类的加载链接和初始化

文章目录简介加载运行时常量池类加载器链接验证准备解析初始化总结简介有了java class文件之后,为了让class文件转换成为JVM可以真正运行的结构,需要经历加载,链接和初始化的过程。这三个过程是怎么工作的呢?在本文中你将会找到答案。加载JVM可以分为三大部分,五大空间和三大引擎,要讲起来也不是特别复杂,先看下面的总体的JVM架构图。从上面的图中,我们可以看到JVM中有三大部分,分别是类加载系统,运行时数据区域和Execution Engine。加载就是根据特定名称查找类或者接口的二进制

2020-08-01 17:53:16 17131 2

UML ROSE

Uml &lt;br/&gt; 的好帮手

2007-04-19

java-collection-all-in-one.pdf

详细讲解java中集合的分类和使用,并介绍了java集合中一些不为人知的小秘密。还详细介绍了java并发包中的集合特性。

2020-10-26

JDK11GC-cheatsheet.pdf

JDK11相比JDK10,添加了一个新的Source-File Mode,可以直接通过java来运行单个java源文件,而不需要进行编译。同时还提供了新的HTTP API,支持响应性stream。 当然上面的都不是重点,重点的是JDK11是一个LTS版本,是继JDK8之后的又一个LTS版本,也可能是大家日后使用的最多的一个版本。 所以JDK11的JVM参数吸收了JDK9,JDK10的新特性和改动,并在他们的基础上进行了微调。 同样在文章最后,我也将JDK11的GC调优秘籍做成了一张PDF,欢迎大家下载。

2020-07-22

JDK12GC-cheatsheet.pdf

JDK12 GC调优秘籍 JDK12 GC cheatsheet, 一张PDF包含所有的调优参数! 为了方便大家的参考,特意将JDK12中的GC参数总结成了一张PDF,这个PDF比之前总结的JDK8-11的PDF在排版,颜色和内容准确性上面又有了非常大的提升,欢迎大家下载。

2020-07-24

JDK13GC-cheatsheet.pdf

JDK13 GC调优秘籍 JDK13 GC cheatsheet, 一张PDF包含所有的调优参数! 为了方便大家的参考,特意将JDK13中的GC参数总结成了一张PDF,这个PDF比之前总结的JDK8-12的PDF在排版,颜色和内容准确性上面又有了非常大的提升,欢迎大家下载。

2020-07-24

JDK14GC-cheatsheet.pdf

JDK14 GC调优秘籍 JDK14 GC cheatsheet, 一张PDF包含所有的调优参数! 为了方便大家的参考,特意将JDK14中的GC参数总结成了一张PDF,这个PDF比之前总结的JDK8-13的PDF在排版,颜色和内容准确性上面又有了非常大的提升,欢迎大家下载。

2020-07-24

Spring5.1中文参考指南.pdf

最新版Spring5.1参考指南中文版,带全部标签,可能是全网最好的PDF了,欢迎大家下载! 除了Spring之前的功能介绍之外,增加了Spring5最新的webflux技术,让你的程序更快更强更好

2019-11-30

JDK9GC-cheatsheet.pdf

JDK9 GC调优秘籍 JDK9 GC cheatsheet, 一张PDF包含所有的调优参数! 今天我们讲讲JDK9中的JVM GC调优参数,JDK9中JVM的参数总共有2142个,其中正式的参数有659个。好像比JDK8中的参数要少一点。 为了方便大家的参考,特意将JDK9中的GC参数总结成了一张PDF,这个PDF比之前总结的JDK8的PDF在排版,颜色和内容准确性上面又有了非常大的提升,欢迎大家下载。

2020-06-26

JDK10GC-cheatsheet.pdf

为了方便大家的参考,特意将JDK10中的GC参数总结成了一张PDF,这个PDF在之前的JDK9的基础上进行了增减和修正,欢迎大家下载。

2020-07-16

j2ee 1.4 API

j2ee 1.4 API

2007-04-19

JDK8GC-cheatsheet.pdf

JVM的参数有很多很多,根据我的统计JDK8中JVM的参数总共有1853个,正式的参数也有680个。 这么多参数带给我们的是对JVM的细粒度的控制,但是并不是所有的参数都需要我们自己去调节的,我们需要关注的是一些最常用的,对性能影响比较大的GC参数即可。 为了更好的让大家理解JDK8中 GC的调优的秘籍,这里特意制作了一张PDF,遇到问题就看两眼,不美吗?

2020-06-22

Hibernate原理与配置快速入门.pdf

Hibernate原理与配置快速入门.pdf

2007-04-20

概观C++程序设计语言.chm

概观C++程序设计语言.chm

2007-04-21

spring live 中文版

spring live 中文版<br/>好东西

2007-04-20

Android编程权威指南

Android编程权威指南 想要精通安卓的快来看看啊, 绝对是不可多得的一本好书。

2015-06-25

[Objective-C 程序设计(第4版)].(斯蒂芬).林冀等.扫描版

最新的Objective c , IOS程序设计, 你不容错过!

2016-02-29

iOS+软件开发揭密:iPhone&iPad+企业应用和游戏开发

iOS+软件开发揭密:iPhone&iPad+企业应用和游戏开发 需要IOS学习的人速度过来看啊。

2015-06-25

HTML5高级程序设计第二版.

HTML5高级程序设计第二版.

2015-06-25

Android应用开发详解.pdf

Android应用开发详解, 非常牛逼的书。 必看

2015-04-03

Android编程入门教程

Android编程入门教程. android 入门教程, 非常适合新手。赶紧来下载吧。

2015-06-25

CSS 2.0

CSS 2.0 页面设计必备

2007-04-19

O'Reilly - Python and XML.pdf

O'Reilly - Python and XML.pdf

2015-04-03

struts-api

struts-api

2007-04-13

struts in action

struts in action

2007-04-13

高质量C、C++编程指南.pdf

高质量C、C++编程指南.pdf

2007-04-20

Inside C++ Object Model.chm

Inside C++ Object Model.chm<br/>Inside C++ Object Model.chm

2007-04-20

精通比特币pdf

想要加入一场颠覆金融世界的技术革命吗?《精通比特币》会为你参与这个 货币网络提供必备知识,引导你进入看似复杂的比特币世界。无论你是正在构建 下一个杀手级应用、投资创业,还是单纯对技术好奇,这本实用的书都是你不可 或缺的阅读材料。

2018-06-20

下载区分页有问题

发表于 2011-07-04 最后回复 2011-07-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除