- 博客(80)
- 资源 (1)
- 收藏
- 关注
转载 基数排序
转载地址:https://blog.csdn.net/lemon_tree12138/article/details/51695211基数排序数据背景在基数排序中,我们不能再只用一位数的序列来列举示例了。一位数的序列对基数排序来说就是一个计数排序。 这里我们列举无序序列 T = [ 2314, 5428, 373, 2222, 17 ]排序原理上面说到基数排序不需要进行元素的比较与交换。如果你有一...
2018-03-26 16:09:53
180
原创 排序算法实现
参考:https://www.cnblogs.com/onepixel/articles/7674659.html这是基本上常用的所有的排序算法的总结,如下表:下面是自己对一些算法的实现:package 排序;public class Order { public void maoPao(int []arr){ //冒泡排序,每次比较相邻元素,如果前面的比后面的大,那么就交换,第一次遍...
2018-03-26 13:59:45
159
转载 判断链表是否有环,有环时环的入口点,链表交点
一个链表中包含环,请找出该链表的环的入口结点。此问题包含两个步骤:(1)判断链表中是否有环(2)找出环一、1)选择快慢指针,让快指针每次走两步,慢指针每次走一步,若是单链表中有环的话,那么两个指针会相遇,即指向的相同的节点的值相等来判断。2)当相遇的时候,慢指针在环中走了k步,设环之外的部分长为x,环的长度为n,则快指针一共走了 x+m*n步,(m为快指针在环中走的圈数),慢指针一共走了x+k步,...
2018-03-26 01:46:15
194
转载 StringBuffer详细讲解
转载地址:https://blog.csdn.net/u012877472/article/details/50808554同时这里有一篇比较好的从底层讲解StringBuffer的文章:http://www.cnblogs.com/dolphin0520/p/3778589.html1、简介StringBuffer,由名字可以看出,是一个String的缓冲区,也就是说一个类似于String的字符...
2018-03-25 20:12:10
432
原创 java的代理机制
此博客参考整理于:java动态代理java静态代理我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC。对于Spring的核心AOP来说,AOP的原理就是java的动态代理机制来实现,所以本篇随笔就是对java代理做一个介绍1、代理(Dynamic Proxy) 代理分为静态代理和动态代理,静态代理是在编译时就将接口、实现类、代理类一股脑儿全部手动完成,但如果我们需要很...
2018-03-23 17:58:16
3568
转载 java IO与NIO的区别
转载地址:https://www.cnblogs.com/xiaoxi/p/6576588.html一、概念 NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。二、NIO和IO的主要区别下表...
2018-03-22 17:22:57
162
原创 求N个数中前k个大的数
解题思路:一般思路就是将N个数排序后,取前k个数就ok。但是如果N个数是几十亿个数,加载不到内存怎么办?这时候就需要利用堆来解决这个问题具体的思路是:先建一个k个数的小堆,然后从k+1个数往后的值与堆顶元素比较,若此数比堆顶元素大,就将堆顶元素用这个数替换,然后重新调整堆,以此向后重复上述过程,直到将N个数比较完成,那么此时组成这个堆的k个元素就是前k个大的数。接下来我们讲一下最小堆与最大对堆的思...
2018-03-22 16:53:54
4492
原创 合并两个有序链表
(1)递归实现1.对空链表存在的情况进行处理,假如pHead1为空则返回pHead2,pHead2为空则返回pHead1。(两个都为空此情况在pHead1为空已经被拦截)2.比较两个链表第一个结点的大小确定头结点的位置3.头结点确定后 继续在剩下的结点中 选出下一个结点去链接到第二步选出的结点后面,然后在继续重复2 3步 直到有链表为空举个实例:有有序单链表L1 (1 3 5 7 ), ...
2018-03-22 14:57:39
189
原创 TCP机制下为什么要同时拥有滑动窗口和拥塞控制窗口?
一、Flow Control 的机制想象一下有两个host,host A和host B,它们现在通过TCP connection连接在一起,开始互相传数据。在这个connection的两端,也就是A和B上,都有一个receive buffer,从网络上来的数据(bytes)如果是正确且有序的,那么就会先放入到receive buffer里,然后在被host的应用层读取。注意,应用层读取数据并不是即...
2018-03-21 22:16:35
1978
1
转载 TCP滑动窗口,流量控制,拥塞控制原理介绍
TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。一、滑动窗口协议 关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,下面就用自己的理解来介绍下TCP的精髓:滑动窗口协议。 所谓滑动窗口协议,自己理解有两点:1. “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”;2. “滑动...
2018-03-21 21:58:42
1235
原创 线程死锁的四个条件
一. 什么是死锁? 如果一个进程集合里面的每个进程都在等待这个集合中的其他一个进程(包括自身)才能继续往下执行,若无外力他们将无法推进,这种情况就是死锁,处于死锁状态的进程称为死锁进程二. 死锁产生的原因?1.因竞争资源发生死锁 现象:系统中供多个进程共享的资源的数目不足以满足全部进程的需要时,就会引起对诸资源的竞争而发生死锁现象(1)可剥夺资源和不可剥夺资源:可剥夺资源是指某进程在获得该...
2018-03-17 11:34:34
5525
原创 TCP建立连接三次握手和释放连接四次握手
TCP的报文结构如下下所示:序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。 确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望...
2018-03-15 10:40:35
359
转载 简单工厂模式,工厂模式和抽象工厂的区别
转载自:http://ichennan.com/2016/08/09/DesignPattern.html简单工厂模式简单工厂模式不是23种里的一种,简而言之,就是有一个专门生产某个产品的类。比如下图中的鼠标工厂,专业生产鼠标,给参数0,生产戴尔鼠标,给参数1,生产惠普鼠标。工厂模式工厂模式也就是鼠标工厂是个父类,有生产鼠标这个接口。戴尔鼠标工厂,惠普鼠标工厂继承它,可以分别生产戴尔鼠标,惠普鼠标...
2018-03-07 16:50:06
2589
转载 Java内存模型
原文地址:原文地址 转载地址:转载地址Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。如果你想设计表现良好的并发程序,理解Java内存模型是非常重要的。Java内存模型规定了如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步
2018-01-22 16:13:16
249
转载 二叉搜索树
首先在这里贴上一篇关于二叉查找树的博文:http://blog.csdn.net/u013405574/article/details/51058133然后这里有java实现的二叉搜索树的代码:http://blog.csdn.net/lingzhm/article/details/44497191自己对代码进行了验证,也进行了些许的修改,基本上没有什么问题,可以进行增删改
2018-01-04 11:30:05
121
原创 单词分割(Word Break)
package LeetCode;import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;public class wordBreak {/*** * 从问题的要求来看,需要判断是否可以将给定的字符串拆分成若干个子串,使得里面每个子串都可以在给定的
2018-01-04 11:23:34
470
原创 从一组数据中找出和为给定值的数的两个数的下标(找出一组或者所有组合)twoSums
package LeetCode;import java.util.ArrayList;import java.util.HashMap;class node{ int index1; int index2;}public class twoSums { ArrayList nodeArr = new ArrayList(); /** * Given an array o
2018-01-03 17:43:53
702
转载 Java 9 新特性概述
转载地址:https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-9/index.htmlJava 9 正式发布于 2017 年 9 月 21 日 。作为 Java8 之后 3 年半才发布的新版本,Java 9 带 来了很多重大的变化。其中最重要的改动是 Java 平台模块系统的引入。除此之外,还有
2018-01-03 11:13:57
396
转载 equals总结以及hashSet去重原理
equals() 方法总结equals()超类 Object 中有这个 equals() 方法,该方法主要用于比较两个对象是否相等。该方法的源码如下: public boolean equals(Object obj) { return (this == obj); }所有的对象都拥有标识(内存地址)和状态(数据),同时“==”
2018-01-02 17:42:22
760
原创 为什么Iterator的remove方法可保证从源集合中安全地删除对象,而在迭代期间不能直接删除集合内元素
在对集合进行操作时,我们会发现,如果我们用迭代器迭代,但是在迭代器过程中如果使用集合对象去删除,添加,清空集合存储的对象时,那么就程序就会报出异常,例如如下代码:public class IteratorTest { public static void main(String[] args) { ArrayListlist = new ArrayList(Arrays.asList
2017-12-27 23:28:21
4605
转载 死磕Java并发:深入分析synchronized的实现原理
记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着我们学习的进行我们知道synchronized是一个重量级锁,相对于Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它。 诚然,随着Javs
2017-12-18 15:29:38
207
原创 利用volatile解决异步死循环的问题
//先我们来看看一下下面的代码:public class Run { public static void main(String[] args) { try { ThreasA threasA = new ThreasA(); threasA.start(); Thread.sleep(1000); threasA.setRunning(false); S
2017-12-15 15:26:29
1038
1
转载 为什么要用枚举实现Singleton--java
为什么要用枚举实现Singleton--java转载需注明出处理由一:无需再考虑可序列化的情况 《effective java》第77条:对于实例控制,枚举类型优先于readResolve 说到readResolve,有的人可能会不甚清楚其作用,简单来说,readResolve的作用是这样的:readResolve特性允许你用readObject创建的实
2017-12-10 19:46:01
190
转载 理解Java对象序列化
尊重原创,附上原地址:http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html理解Java对象序列化关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结。此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制。在撰写本文时,既参考了Thin
2017-12-10 16:06:08
177
转载 两个队列实现栈(stack)
//前提已知:struct Stack{ int top; //栈顶指针 int stacksize;//栈的大小 int *s; //栈底指针};void InitStack(Stack *s);void Push(Stack *s, int k);int Pop(*s);int IsStackEmpty(*s);int
2017-12-01 15:34:37
229
转载 java Collecttion的fail-fast的产生原因和处理方式 以及java中fail-fast 和 fail-safe的区别
原文链接:http://blog.csdn.net/chenssy/article/details/38151189在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList:注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentM
2017-12-01 15:21:49
595
原创 从浅到深了解ArrayList
根据我看到的博文,摘录了可以让我们从浅到深认识ArrayList的几篇博文,其实也算不上原创,就是进行了整理,转载的直接贴链接首先我们先了解下ArrayList的初始化,可以看这里:ArrayList初始化在了解完他的初始化以及对应的使用函数时,下面了解一下关于ArrayList扩容的问题:ArrayList底层扩容根据ArrayList的特点,分析一下他的时间复杂度等问题:
2017-11-30 18:32:01
195
转载 深入分析HashMap原理(存储 碰撞检测 取值 扩容 hashCode equals等)
这篇博客是在网上自己浏览时整理的几个好的帖子,关于hashMap的分析,从浅到深看完基本上可以深入掌握hashMap的工作原理下面这篇文章详细介绍了一下几个方面的东西什么时候会使用HashMap?他有什么特点?你知道HashMap的工作原理吗?你知道get和put的原理吗?equals()和hashCode()的都有什么作用?你知道hash的实现吗?为什么要这样实现?如果HashMap的大小超过了...
2017-11-30 11:25:11
650
转载 彻底理解ThreadLocal
尊重原创 :http://blog.csdn.net/lufeng20/article/details/24314381ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLoca
2017-11-22 11:02:44
226
转载 Java内置锁与synchronized关键字
转载自:http://blog.csdn.net/a19881029/article/details/8215775Java提供了一种内置的锁机制来支持原子性每一个Java对象都可以用作一个实现同步的锁,称为内置锁,线程进入同步代码块之前自动获取到锁,代码块执行完成正常退出或代码块中抛出异常退出时会释放掉锁内置锁为互斥锁,即线程A获取到锁后,线程B阻塞直到线程A释放锁,线程
2017-11-20 20:48:23
285
原创 如果synchronized是不可重入的,为什么重载父类函数后(重载函数也加锁)会产生死锁?
我们知道synchronized可以加在方法上也可以加在代码块上,其实加在方法上也相当于加载代码块上,好比这种形式:synchronized(this){ doSomething();}从这里可以看出,锁其实是基于对象的,是对当前访问的对象进行加锁,现在假设有如下两个类:class Widget{ synchronized doSomething(){ ....
2017-11-20 18:20:01
912
转载 volatile关键字解析(详细)
volatile关键字解析当前为作者原网址,该作者对该关键字从浅到深,对其原理做了分析,很容易懂 http://www.cnblogs.com/dolphin0520/p/3920373.htmlhttp://www.cnblogs.com/dolphin0520/p/3920373.html如下为一些参考网址:《Java 中的双重检查(Double-Check)》http:...
2017-11-02 11:58:17
163
原创 绝对深度解析volatile关键字的实现原理(大部分内容整理于其他博客)
我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是java.util.concurrent包的核心,没有volatile就没有这么多的并发类给我们使用。本文详细解读一下volatile关键字如何保证变量在多线程之间的可见性,在此之前,有必要讲解一下CPU缓存的相关知识,掌握这部分知识一定会让我们更好地理解volatile的原理,从而更好、更正确地地使用volatile关键字。
2017-10-31 17:28:55
6884
2
原创 slf4j 的介绍,使用与分析
概述slf4j的全称是Simple Loging Facade For Java,它仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已。所以单独的slf4j是不能工作的,必须搭配其他具体的日志实现方案,比如apache的org.apache.log4j.Logger,jdk自带util.logging.Logger等等。slf
2017-09-25 13:21:42
1796
转载 java enum(枚举)使用详解 + 总结
转自http://www.cnblogs.com/hemingwang0902/archive/2011/12/29/2306263.html原始的接口定义常量public interface IConstants { String MON = "Mon"; String TUE = "Tue";
2017-09-24 10:23:04
199
原创 CharacterEncodingFilter 过滤器的理解和配置
参考博客:http://blog.csdn.net/geloin/article/details/7441123 http://blog.csdn.net/heidan2006/article/details/3075730在web项目中我们经常会遇到当前台JSP页面和JAVA代码中使用了不同的字符集进行编码的时候就会出现表单提交的数据或者上传/下载中文名称文件出现乱码的问题,这些
2017-09-23 11:16:45
7947
原创 利用java反射机制绕开java的泛型
在java中,当代码进行编译时会进行去泛型化,所以如果我们可以绕过泛型,在编译和运行时将对某个泛型化的对象进行修改就不会报错。下面举个例子说明,如何利用java的反射机制来绕过java的泛型化。package javaReflect;import java.lang.reflect.Method;import java.util.ArrayList;public class gene
2017-09-21 17:11:06
510
原创 java反射机制
对class类的认识与了解package javaReflect;public class javaClass { public static void main(String[] args) throws InstantiationException, IllegalAccessException { /** * 1.首先我们对于java的每一个class应该有一个认识
2017-09-21 14:43:25
353
转载 java自带注解了解,自定义注解的实现,自定义注解的使用
看到别的博主写的几篇接绍注解相关的东西,觉得挺好的,mark一下概述及JDK自带注解:http://blog.csdn.net/zen99t/article/details/49506919自定义注解:http://blog.csdn.net/zen99t/article/details/49508447解析注解:http://blog.csdn.net/zen99t/ar
2017-09-21 10:21:25
316
自定义注解实现
2017-09-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅