8 奔跑的大马哈鱼

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 10w+

Java8重新认识HashMap

简介Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类继承关系如下图所示: 下面针对各个实现类的特点做一些说明:(1) HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 H

2017-07-21 11:21:14

CountDownLatch和CyclicBarrier使用及区别

CountDownLatchCountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。构造器中的计数值(count)实际上就是闭锁需要等待的线程数量。这个值只能被设置一次,而且CountDownLatch没有提供任何机制去重新设置这

2017-07-20 14:56:32

快速排序非递归java

private static void quickSort(int[] a, int start, int end) { LinkedList<Integer> stack = new LinkedList<Integer>(); // 用栈模拟 if (start < end) { stack.push(end); s

2017-06-30 13:01:59

深入分析java线程池的实现原理

转自占小狼 线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调优和监控,有以下好处: 1、降低资源消耗; 2、提高响应速度; 3、提高线程的可管理性。Java1.5中引入的Executor框架把任务的提交和执行进行解耦,只需要定义好任务,然后提交给线程池,而不用关心该任务是如何执行、被哪个线程执行,以及什么时候执行。 dem

2017-06-27 09:55:37

域名解析过程

一、主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。二、本地域名服务器向根域名服务器的查询的迭代

2017-06-26 15:33:34

搭建redis集群

1. 安装redis版本说明 本教程使用redis3.0版本。3.0版本主要增加了redis集群功能。 安装的前提条件: 需要安装gcc:yum install gcc-c++1、下载redis的源码包。 2、解压源码包 tar -zxvf redis-3.0.0.tar.gz 3、Make 4、Make install [root@bogon redis-3.0.0]# m

2017-06-26 11:23:30

java生产者和消费者案例

一、同步方法public class TestProductorAndConsumer { public static void main(String[] args) { // TODO Auto-generated method stub Clerk clerk = new Clerk(); Productor pro = new Produ

2017-06-26 11:01:05

Juc开启三个线程打印A,B,C

要求开启3个线程,ID分别为A,B,C,每个线程将自己的ID在屏幕上打印10遍,要求输出的结果必须按顺序显示public class TestABCAlternate { public static void main(String[] args) { AlternateDemo ad = new AlternateDemo(); new Thread(new

2017-06-26 10:58:36

Redis面试题及分布式集群

1. 使用Redis有哪些好处?(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string,list,set,sorted set,hash (3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 (4) 丰富的特性:可用于缓存,消息,按key设置过期时间,

2017-06-19 15:20:03

大型网站架构之分布式消息队列

大型网站架构之分布式消息队列以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。本次分享大纲消息队列概述 消息队列应用场景 消息中间件示例 JMS消息服务 常用消息队列 参考(推荐)资料 本次分享总结一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性

2017-03-09 08:46:40

comparable与comparator的区别

Comparable简介Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。该接口定义如下:package java.lang;import j

2017-03-06 15:45:13

java ArrayList遍历时删除元素

for(int i = 0;i<10;i++){ list.add(i); } //第一种删除方式 Iterator<Integer> it = list.iterator(); while(it.hasNext()){ int t = it.next(); it.remove();//通过迭代器来删除元素不会发生Con

2017-02-27 11:03:02

java 多种单例模式

单例设计模式Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点。(1) 将采用单例设计模式的类的构造方法私有化(采用private修饰)。(2) 在其内部产生该类的实例化对象,并将其封装成private static类型。(3) 定义一个静态方法返回该类的实例。饿汉式天生就是线程安全的,可以直接用于多线程

2017-02-20 16:26:35

数据库存储过程

首先解释一下什么是存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。优点 ①重复使用。存储过程可以重复使用,从而可以减少

2017-02-20 16:23:19

QT QXlsx使用

最近一个项目需要读写excel,但是qt自带的读写方法效率低,经过查询发现可以使用Qxlsx ,是一个非常好的开源软件库。 QXlsx配置方法 首先,下载QtXlsx类,地址:https://github.com/dbzhang800/QtXlsxWriter 1.首先,下载Perl5地址:https://www.perl.org/get.html 下载相应电脑相应的版本 下载好了之

2016-10-25 21:24:30

Java Map遍历方法

public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("1", "value1"); map.put("2", "value2"); map.put("3", "value3"); //第一种:普遍使用,二次取值 Syst

2016-10-12 08:39:04

数据库索引

数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。 为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引

2016-10-07 15:19:06

类加载

ClassLoader(类加载器) java将结束生命周期:执行System.exit()程序正常执行结束程序在执行过程中遇到异常或者错误而异常终止由于操作系统出现错误导致java虚拟机进程终止加载:查找并加载类的二进制数据 连接: 验证:确保被加载类的正确性 准备:为类的静态变量分配内存,并将其初始化为默认值 解析:把类(常量池)中的符号引用转换为直接引用 初始化:为类的静态

2016-10-06 21:37:46

数据库,部分函数依赖,完全函数依赖,传递函数依赖;1NF,2NF,3NF,BCNF

部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。 举个例子:学生基本信息表R中(学号,身份证号,姓名)当然学号属性取值是唯一的,在R关系中,(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖与(学号,身份证号);完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X

2016-10-06 21:22:40

JAVA中方法和变量在继承中的覆盖和隐藏

我们知道,在JAVA中,子类可以继承父类,如果子类声明的方法与父类有重名的情况怎么办,大伙儿都知道要是重写,但是实际上这又分为两种情况,就是方法和变量在继承时的覆盖和隐藏问题,这些概念性的东西看似无聊,但是在面试或者是SCJP认证题中围绕这些是会经常碰到的,所以这里来讨论下首先我们来看几个概念:类变量:又叫静态变量,这种变量属于类,通过类名就可以访问类变量。实例变量:属于类的实例,即对象,通过对象可

2016-10-03 18:37:07

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!