Java
文章平均质量分 84
花郎徒结
这个作者很懒,什么都没留下…
展开
-
一种基数排序的Java实现
基数排序 原理不多说了,适用于输入数据量n远大于数据最高位数m的情况。给出一种简单实现,不太想写特别底层的逻辑,中间依赖下TreeMap。package com.jxshen.example.algorithm.sort;import java.util.Collections;import java.util.Iterator;import java.原创 2017-06-01 18:53:30 · 397 阅读 · 0 评论 -
采用Java阻塞IO对已经到达的socket流实现非阻塞完整读取(一个简单的java http server实现)
最近写服务器时想到一个问题:用Java Bio(即Socket)写服务器,怎么一次性完整读取已经到达的Socket流。对这个需求有很多角度的设定,也有很多解法。我们来一一具化这个需求:(1)解法:依赖http协议的content-length。分析:很直观的想法,可以根据http请求头给定一个固定长度的字节或字符缓存,从中获取content-length,就知道往后要在从流原创 2017-06-07 14:28:11 · 7247 阅读 · 1 评论 -
Sunday算法的一种Java实现(Leetcode28. Implement strStr())
Leetcode第28题Implement strStr()。即寻找字符串里模式串第一次出现的位置。这类字符串匹配查找的问题,无外乎KMP,BM,Sunday算法。KMP太烧脑,BM和Sunday算法本质上是一样的,但是Sunday算法更取巧,效率更高(天下间的算法要是都有像Sunday算法那样短小精悍的版本,该多好...)。具体原理网上各种有。直接上代码:public c原创 2017-07-30 23:35:46 · 939 阅读 · 0 评论 -
一篇对伪共享、缓存行填充和CPU缓存讲的很透彻的文章
转载至http://geek.csdn.net/news/detail/114619看了很多网上讲解java伪共享、缓存行填充和CPU缓存的MESI等等,零零碎碎,目前感觉就这篇文章讲的最清楚,忍不住转载下。原文如下:认识CPU CacheCPU Cache概述随着CPU的频率不断提升,而内存的访问速度转载 2017-11-09 10:08:36 · 13368 阅读 · 6 评论 -
堆排序的Java实现(用最大堆实现从小到大排序)
堆排序原理和示意图不多说了,网上各种有。总结下其最核心的思想:(1)自底向上,自右向左遍历建堆。这里的底不是指最后一个节点,而是最后一个非叶子节点。每个非叶子节点与其左儿子与右儿子(假如有的话)相比,如果父节点小,那么将左右儿子中较大的那个与父节点交换,然后递归调整被交换的儿子所在的子树,让其继续满足堆性质。(2)自顶向下调整,使得整个二叉树和其任意子树都满足堆特性。内容和上面建堆中的递归原创 2017-11-16 12:44:34 · 2728 阅读 · 0 评论 -
(实验)Java一个线程用synchronized嵌套锁多个对象时调用wait()只释放wait函数关联的所对象还是释放所有锁对象
题目起的比较拗口,其实用代码说明起来更简单,如下所示: private static Object lock1 = new Object(); private static Object lock2 = new Object(); private static class Task1 implements Runnable { @Override原创 2017-11-18 11:28:10 · 7280 阅读 · 6 评论 -
(转载一篇对JDK动态代理原理说的很透彻的文章)细说JDK动态代理的实现原理
转载一篇解释JDK动态代理实现原理很清楚的文章。看到很多博文讲JDK动态代理时,只是抓着JDK提供的Proxy类(创建动态代理类)和InvocationHandler(拦截代理方法调用)层面来讲。Proxy和InvocationHandler只是JDK提供给我们的API,只看这两个类根本不会明白什么是动态代理。其实JDK动态代理最关键的还是JVM帮我们做了很多事,包括动态代理类的生成加载,以及生成转载 2017-12-04 15:08:54 · 794 阅读 · 0 评论 -
线上环境JVM问题排查常用指令
线上和测试环境的JVM一般运行在linux服务器上,没有界面,遇到问题时需要用指令工具进行排查。这方面的学问博大精深,而且实战重于理论,这篇文章仅仅当作日常问题排查的笔记,方便自己查阅,各方面的细节网上有很多文章进行过深入探讨。1. Tomcat配置排查问题时不一定只围绕程序日志、linux系统性能指令和JDK工具,有时候看看程序部署的tomcat配置文件,也许会有帮助。把${TOMC...原创 2018-07-28 20:32:56 · 2011 阅读 · 0 评论