
java基础
husthg
这个作者很懒,什么都没留下…
展开
-
Java并发编程:Callable、Future和FutureTask
转自:http://www.cnblogs.com/dolphin0520/p/3949310.html 创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有一个缺 陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者使用线程通信 的方式来达到效果,这样使用起转载 2015-08-26 23:52:27 · 330 阅读 · 0 评论 -
ArrayList和LinkedList的几种循环遍历方式及性能对比分析
主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论。通过本文你可以了解(1)List的五种遍历方式及各自性能 (2)foreach及Iterator的实现 (3)加深对ArrayList和LinkedList实现的了解。阅读本文前希望你已经了解ArrayLis转载 2016-05-27 11:54:51 · 142 阅读 · 0 评论 -
fail-fast机制
目录(?)[+] 在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList:注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正转载 2016-05-30 12:27:59 · 115 阅读 · 0 评论 -
fail-fast机制
在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList:注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误的做法:迭代器转载 2016-05-30 12:30:13 · 239 阅读 · 0 评论 -
java DES加解密
package com.baidu.dianquan.feed.common.util;import java.security.SecureRandom;import javax.crypto.spec.DESKeySpec;import javax.crypto.SecretKeyFactory;import javax.crypto.SecretKey;import javax.转载 2016-06-15 14:08:51 · 296 阅读 · 0 评论 -
Redis介绍 && Java客户端操作Redis
Redis介绍 && Java客户端操作Redis本文内容redis介绍redis的 shell 客户端简介redis的 java 客户端简介环境配置redis 2.8.17 64bitJDK1.6redis介绍 大多数时候,我们都将 redis 称作是内存数据库,它在运行过程中,将键值对信息存储在内存中,同时在后台以异步的形式写入本地数据转载 2016-06-15 14:38:00 · 725 阅读 · 0 评论 -
Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍
jedis是一个著名的key-value存储系统,而作为其官方推荐的java版客户端jedis也非常强大和稳定,支持事务、管道及有jedis自身实现的分布式。在这里对jedis关于事务、管道和分布式的调用方式做一个简单的介绍和对比:一、普通同步方式最简单和基础的调用方式,?123456转载 2016-06-15 15:01:24 · 362 阅读 · 0 评论 -
Java 时间类-Calendar、Date、LocalDate/LocalTime
1、Date 类 java.util.Date是一个“万能接口”,它包含日期、时间,还有毫秒数,如果你只想用java.util.Date存储日期,或者只存储时间,那么,只有你知道哪些部分的数据是有用的,哪些部分的数据是不能用的。 1.1 Date的构造方法 Date 是我们使用的最多的一个日期类,Date提供的构造方法在官方API中有一下几种:转载 2017-04-08 11:34:53 · 372 阅读 · 0 评论 -
HashMap 和 HashTable 源码学习和面试总结
达人科技 2016-12-13 01:082017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash……系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度、唯品会、58同城、新浪微博、趣分期、美团点评等都在1、2……面的时候被问过无数次,都问吐了&_&,其他公司笔试的时候,但凡有Java的题,都有集合相关考点,尤其hash表……现在总结转载 2017-04-08 11:41:16 · 224 阅读 · 0 评论 -
java NIO小结
上一篇文章写了I/O,这篇文章介绍一下NIO:在软件系统中,由于I/O的速度要比内存的速度慢,因此,I/O读写在很多时候会成为系统的瓶颈。上一篇文章我们介绍了inputStream和outputStream,以字节为单位处理数据,这样就非常容易建立过滤器。NIO是new I/O的简称,在java 1.4中被纳入到JDK中并具有一些特性:为所有的原始类型提供(Buff转载 2017-04-08 11:45:12 · 201 阅读 · 0 评论 -
synchronized对比cas
原创 沙茶敏碎碎念2016-11-27 21:56前言这篇文章的营养非常有限,只是一个夜黑风高的晚上,突发奇想,如果我要统计一个网站的PV,程序应该怎么写呢?一种挫逼的写法这是一种无锁的写法,很明显,这个东西是线程不安全的。我们使用12个线程,每个线程执行 10^8次方add的操作,发现最终的结果并没有得到期望的1.2*10^9次方。上面一个是总数,下面一个转载 2017-04-08 12:01:43 · 1349 阅读 · 0 评论 -
深入剖析ThreadLocal实现原理以及内存泄漏问题
一、概述在2017京东校园招聘笔试题中遇到了描述ThreadLocal的实现原理和内存泄漏的问题,之前看过ThreadLocal的实现原理,但是网上有很多文章将的很乱,其中有很多文章将ThreadLocal与线程同步机制混为一谈,特别注意的是ThreadLocal与线程同步无关,并不是为了解决多线程共享变量问题! ThreadLocal官网解释: This class provi转载 2017-04-08 12:06:36 · 251 阅读 · 0 评论 -
Spring框架-AOP细节
知己海内存 2016-11-24 10:171切入点表达式1.1作用通过表达式的方式定位一个或多个具体的连接点。1.2语法细节①切入点表达式的语法格式execution([权限修饰符] [返回值类型] [简单类名/全类名] [方法名]([参数列表]))②举例说明表达式execution(* com.atguigu.spring.Arithmeti转载 2017-04-08 12:10:18 · 177 阅读 · 0 评论 -
HashMap循环遍历方式及其性能对比
主要介绍HashMap的四种循环遍历方式,各种方式的性能测试对比,根据HashMap的源码实现分析性能结果,总结结论。 1. Map的四种遍历方式下面只是简单介绍各种遍历示例(以HashMap为例),各自优劣会在本文后面进行分析给出结论。(1) for each map.entrySet()Java12345MapStri转载 2016-05-27 12:08:06 · 155 阅读 · 0 评论 -
java面试
HTTP 404, 500, 301, 302, 304keep alive浏览器的行为(多个域名并发限制)cookiessessionTCP & UDP TCP的特点UDP的特点三次握手,四次分手Java java的堆模型转载 2015-08-21 16:34:11 · 289 阅读 · 0 评论 -
Java I/O解读与使用实例
javaio目录(?)[+] 林炳文Evankaka原创作品。转载请注明出处http://blog.youkuaiyun.com/evankaka 摘要:本文主要讲解了Java I/O解读与使用实例。 一、I/O基本概念 I/O全称是Input/Output,Java的I/O就是J转载 2015-09-06 10:15:14 · 308 阅读 · 0 评论 -
Callable+FutureTask实现多线程并获取结果
import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent原创 2015-08-26 23:41:17 · 515 阅读 · 0 评论 -
UUID.randomUUID()
UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需转载 2015-08-28 17:18:07 · 3094 阅读 · 0 评论 -
java执行cmd命令
import java.io.BufferedReader;import java.io.InputStreamReader;public class testMain { /** * @param args * @throws * */ public static void main(String[]原创 2015-08-28 16:05:08 · 352 阅读 · 0 评论 -
TreeMap中文排序
TreeMap的底层使用了红黑树来实现,像TreeMap对象中放入一个key-value 键值对时,就会生成一个Entry对象,这个对象就是红黑树的一个节点,其实这个和HashMap是一样的,一个Entry对象作为一个节点,只是这些节点存放的方式不同。 存放每一个Entry对象时都会按照key键的大小按照二叉树的规范进行存放,所以TreeMap中的数据是按照key从小到大排序的,通过重写原创 2015-08-14 15:20:02 · 964 阅读 · 0 评论 -
ExecutorService与Executors例子的简单剖析
对于多线程有了一点了解之后,那么来看看java.lang.concurrent包下面的一些东西。在此之前,我们运行一个线程都是显式调用了Thread的start()方法。我们用concurrent下面的类来实现一下线程的运行,而且这将成为以后常用的方法或者实现思路。 看一个简单的例子: public class CacheThreadPool {转载 2015-08-17 20:00:29 · 297 阅读 · 0 评论 -
Google的Guava cache 应用
Guava Cache 创建基本上可以通过两种方式来创建cache:cacheLoadercallable callback通过这两种方法创建的cache,和通常用map来缓存的做法比,不同在于,这两种方法都实现了一种逻辑——从缓存中取key X的值,如果该值已经缓存过了,则返回缓存中的值,如果没有缓存过,可以通过某个方法来获取这个值。但不同的在于cacheload转载 2015-08-17 20:05:18 · 441 阅读 · 0 评论 -
JAVA中StringBuffer、String选择和使用
String是不变类,用String修改字符串会新建一个String对象,如果频繁的修改,将会产生很多的String对象,开销很大.因此java提供了一个StringBuffer类,这个类在修改字符串方面的效率比String高了很多。 在java中有3个类来负责字符的操作。 1.Character 是进行单个字符操作的, 2.String 对一串字符进行操作。不转载 2015-08-17 17:05:49 · 322 阅读 · 0 评论 -
Java的ProtoBuf
1、安装protocolbuffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传转载 2015-09-03 22:12:24 · 468 阅读 · 0 评论 -
java线程同步实践
主线程输出10个数,子线程输出100个数,主线程循环输出10个数..........循环50次。package Threadtest;public class testMain { public static void main(String[] args) { // 在内部类里访问局部变量printUtil,需要加 final原创 2015-09-04 17:02:11 · 251 阅读 · 0 评论 -
Log4j.properties文件自动加载
org.apache.log4j.LogManager类有一个静态块,首先是找log4j.xml,找不到的情况下才找log4j.propertiesJava codestatic { // By default we use a DefaultRepositorySelector which always returns 'h'. Hierarchy h = n转载 2015-09-06 11:46:12 · 558 阅读 · 0 评论 -
Java中Runnable和Thread的区别
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。下面看例子:package org.thread.demo; class MyThread extends Th转载 2015-09-04 16:05:03 · 288 阅读 · 0 评论 -
深入Java单例模式
在GoF的23种设计模式中,单例模式是比较简单的一种。然而,有时候越是简单的东西越容易出现问题。下面就单例设计模式详细的探讨一下。 所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在。就像是Java Web中的application,也就是提供了一个全局变量,用处相当广泛,比如保存全局数据,实现全局性的操作等。 1. 最简单的实现 首先转载 2015-09-06 10:00:10 · 272 阅读 · 0 评论 -
《深入理解java虚拟机-高效并发》读书笔记
Java内存模型与线程概述 多任务处理在现代计算机操作系统中几乎已是一项必备的功能,多任务运行是压榨手段,就如windows一样,我们使劲的压榨它运行多个任务,俱要high又要耍。并发则是另外一种更具体的应用场景。每秒事物处理数(Transactions per Second,tps)是最重要的指标。开发人员应该了解与运用并发。硬件的效率与一致性 除了有软件转载 2017-04-08 13:24:40 · 356 阅读 · 0 评论