自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

转载 JVM——自定义类加载器

来源:http://blog.csdn.net/seu_calvin/article/details/52315125#comments0. 为什么需要自定义类加载器  网上的大部分自定义类加载器文章,几乎都是贴一段实现代码,然后分析一两句自定义ClassLoader的原理。但是我觉得首先得把为什么需要自定义加载器这个问题搞清楚,因为如果不明白它的作用的情况下,还要去学习它显然是很让人

2017-12-31 11:03:14 392

转载 kafka数据可靠性深度解读

转自:http://blog.csdn.net/u013256816/article/details/710917741 概述Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark等都支持与Kafka集

2017-12-21 22:14:51 670 1

原创 java设计模式之工厂设计模式(简单工厂设计模式、工厂设计模式、抽象设计模式)

工厂设计模式分为三种:1、简单工厂设计模式(Simple Factory)2、工厂设计模式(Factory Method)3、抽象设计模式(Abstract Factory) 这三种工厂设计模式都属于创建型设计模式,都是将对象的实例化部分取出来,优化系统架构,增强系统的扩展性。 1、简单工厂模式: 又叫静态工厂,是工厂模式三中状态中结构最为简单的。主要有一个静态

2017-12-21 17:16:02 258

原创 java 设计模式之单例设计模式

单例设计模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点 特点:1、单例类构造方法私有化(private修饰),只能有一个实例;2、单例类必须自己创建自己的实例化对象(private static类型);3、单例类必须给其他类提供这个实例(定义一个静态方法) 优点:1、避免实例化对象的重复创建,不仅减少每次创建对象的时间开销,还可以节约内存空间;2、避

2017-12-21 17:15:56 238

原创 【转】Java23种设计模式学习笔记【目录总贴】

参考:http://www.cnblogs.com/cxxjohnson/p/6403835.html  设计模式分为三大类:创建型,共五种:单例模式、静态工厂模式(普通工厂)、抽象工厂模式、建造者模式、原型模式。结构型,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链

2017-12-21 17:15:50 279

原创 【转】简单工厂模式和策略模式的区别

参考:http://www.cnblogs.com/langtianya/archive/2013/03/08/2950934.html 简单工厂模式:客户端传一个条件进工厂类,工厂类根据条件创建相应的产品类对象,并return给客户端,供客户端使用。即客户端使用的是工厂类生产的产品对象。策略模式:客户端创建一个Context类对象a(可以看作是工厂模式中工厂类),创建一个策略对象并传

2017-12-21 17:15:44 206

原创 TCP/IP、UDP协议

TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。TCP/IP协议集包括应用层,传输层,网络层,网络访问层。其中应用层包括:超文本传输协议(HTTP):万维网的基本协议.   文件传输(TFTP简单文件传输协议):   远程登录(Telnet),提供远程访问其它主机功能,它允

2017-12-21 17:15:38 312

转载 token cookie session

转自:Cookiecookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据

2017-12-19 21:58:48 419 2

原创 finally块的执行

1、try和finally块中都有returnpublic static void main(String[] args) { System.out.println(m1()); } static int m1() { try { return 1; } catch (Exception e) { return 2; } finally { System

2017-12-18 22:42:27 245

原创 java集合

在集合框架中,有两个顶层的接口:Collection和MapCollection表示一组纯数据,Map表示一组key-value对。单线程集合一、CollectionCollection主要有List、Set、Queue三个接口1、ListList按照插入的顺序排序,元素可以重复,继承Collection接口,实现类主要有ArrayList、Vector、Linke

2017-12-18 21:50:31 196

转载 volatile关键字

参考:http://www.jianshu.com//p/e513bc7e48061、volatile的特性被volatile修饰的共享变量,就具有了以下两点特性:1 . 保证了不同线程对该变量操作的内存可见性;2 . 禁止指令重排序2、volatile的内存可见性和重排性这个聊起来可就多了,我还是从Java内存模型说起吧。Java虚拟机规范试图定义一种Jav

2017-12-17 19:28:47 203

转载 Java NIO 详解

转自:http://blog.csdn.net/suifeng3051/article/details/48160753一、基本概念描述1.1 I/O简介I/O即输入输出,是计算机与外界世界的一个借口。IO操作的实际主题是操作系统。在java编程中,一般使用流的方式来处理IO,所有的IO都被视作是单个字节的移动,通过stream对象一次移动一个字节。流IO负责把对象转换

2017-12-17 18:35:02 411 1

原创 int Integer

如下代码:10public static void main(String[] args){ Integer i1 = 100; Integer i2 = 100; Integer i3 = 150; Integer i4 = 150; System.out.println(i1==i2); System.out.println(i3==i4); }运行结果

2017-12-17 16:21:44 237

原创 SQL优化

1、考虑在where和order by涉及到的列建立合理的索引2、避免where使用is null判断select * from user where update_time is null;可以在update_time字段上加上默认值select * from user where update_time='0';3、避免where条件中使用负向条件,比如!=、select

2017-12-16 21:35:12 232

原创 排序算法

排序分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。分别从算法思想、排序示例、代码实现、算法分析,包括复杂度、稳定性等进行分析,其中算法稳定性是指两个相同的元素,排序前后位置是否发生变化。一、插入排序(Insertion Sort)1、直

2017-12-16 18:23:45 216

原创 二分查找算法

对于一个升序数组,给定一个有序(非降序)数组A,求任意一个i使得A[i]等于target,不存在则返回-11、非递归算法public static int binarySearch(int[] value,int key){ int begin=0,end=value.length-1; while(begin<=end){ int mid=(begin+end)/2;

2017-12-16 12:11:38 440

转载 Java并发编程-如何终止线程

转自:http://blog.csdn.net/chenchaofuck1/article/details/51721325我们知道使用stop()、suspend()等方法在终止与恢复线程有弊端,会造成线程不安全,那么问题来了,应该如何正确终止与恢复线程呢?这里可以使用两种方法:1.使用interrupt()中断方法。2.使用volatile boolean变量进行控

2017-12-15 23:09:52 230

转载 Synchronized与ReentrantLock的区别

转自:http://blog.csdn.net/chenchaofuck1/article/details/51045134 java在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock。相似点:       这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一

2017-12-15 22:55:26 298

转载 线程同步的方法

转自:https://www.cnblogs.com/XHJT/p/3897440.html一、什么是线程同步线程同步就是线程排队,避免线程“同步”二、为什么需要线程同步在java多线程并发控制时,当多个线程同时操作共享资源(共享、变量)时,会导致数据不准确,相互之间产生冲突。因此加入同步锁,在该线程没有完成操作之前,不能被其他线程调用,从而保证了该变量的唯一性和准确性。

2017-12-15 22:00:31 212

原创 G1收集器

JDK9将G1设置为默认的垃圾收集器,为什么?G1是一个低延迟垃圾回收器。对于系统整体架构而言,往往会考虑响应能力和吞吐量两个方面。对java应用进行优化也主要是针对这两方面。响应能力主要是指系统或应用返回请求数据的效率,对于要求响应能力的应用来说,长时间的停顿是不能接受的吞吐量是指某个时间段能够处理的最大负载,比如每分钟处理多少事务,完成多少任务,对于要求吞吐量的应用来说,长时间

2017-12-15 20:38:46 294

原创 多线程创建及常见问题

java多线程实现方式主要有三种:继承Thread类、实现Runnable接口、实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,后两种是带返回值的。继承Thread类继承Thread类的方法尽管被我列为一种多线程实现

2017-12-15 09:59:52 310

转载 单例模式的七种写法

转自:http://cantellow.iteye.com/blog/838473单例设计模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。特点1、单例类构造方法私有化(private修饰),只能有一个实例;2、单例类必须自己创建自己的实例化对象(private static类型);3、单例类必须给其他类提供这个实例(定义一个静态方法)优点

2017-12-15 09:36:48 229

转载 HashMap、HashTable、ConcurrentHashMap

HashMap的工作原理1、HashMap的实现原理HashMap是一个用于存储key-value键值对的结合,每一个键值对也叫Entry。HashMap内部是通过一个数组实现的,只是这个数组比较特殊,数组里存储的元素是一个Entry实体(jdk 8为Node),这个Entry实体主要包含key、value以及一个指向自身的next指针。HashMap是基于hashing实

2017-12-14 21:13:05 375

转载 队列与并发--生产者和消费者模式

转自:http://ifeve.com/producers-and-consumers-mode/#more-11643在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。为什么要使用生产者和消费者模式在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产

2017-12-13 22:46:19 987

转载 锁--自旋锁、阻塞锁、可重入锁、悲观锁、乐观锁、读写锁、偏向所、轻量级锁、重量级锁、锁膨胀、对象锁和类锁

参考:http://blog.csdn.net/a314773862/article/details/54095819自旋锁自旋锁可以使线程在没有取得锁的时候,不被挂起,而转去执行一个空循环,(即所谓的自旋,就是自己执行空循环),若在若干个空循环后,线程如果可以获得锁,则继续执行。若线程依然不能获得锁,才会被挂起。使用自旋锁后,线程被挂起的几率相对减少,线程执行的连贯性相对加强

2017-12-13 20:37:29 1423

原创 分布式锁解决并发的三种实现方式

在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。有的时候,我们需要保证一个方法在同一时间内只能被同一个线程执行。在单机环境中,Java中其实提供了很多并发处理相关的API,但是这些API在分布式场景中就无能为力了。也就是说单纯的Java Api并不能提供分布式锁的能力。所以针对分布式锁的实现目前有多种方案:分布式锁一般有三种...

2017-12-13 19:58:58 21220 2

转载 Redis

参考:https://www.cnblogs.com/jiahaoJAVA/p/6244278.html1、什么是RedisRedis是一个基于内存的高性能key-value类型的数据库2、为什么Redis需要把所有数据放在内存中Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,

2017-12-12 23:04:14 303

转载 java异常机制--运行时异常和非运行时异常

1.Java异常机制Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。Java中的异常分为两大类:错误Error和异常Exception,Java异常体系结构如下图所示:图片来源:http://blog.csdn.net/wuwenxiang91322/article/details/103463372.Throwab

2017-12-03 12:07:09 651

转载 Java程序员的日常 —— Java类加载中的顺序

之前说过Java中类的加载顺序,这次看完继承部分,就结合继承再来说说类的加载顺序。继承的加载顺序由于static块会在首次加载类的时候执行,因此下面的例子就是用static块来测试类的加载顺序。package xing.test.thinking.chap7;class A{ static{ System.out.println("A static");

2017-12-02 12:38:51 246

转载 JVM核心之JVM运行和类加载全过程

来源:http://www.cnblogs.com/dooor/p/5289994.html 为什么研究类加载全过程?有助于连接JVM运行过程更深入了解java动态性(解热部署,动态加载),提高程序的灵活性 类加载机制JVM把class文件加载到内存,并对数据进行校验、解析和初始化,最终形成JVM可以直接使用的java类型的全过程。   加载

2017-12-02 12:33:19 199

转载 Java类加载器的工作原理

来源:http://www.cnblogs.com/gaopeng527/p/5246707.html  Java类加载器的作用就是在运行时加载类。Java类加载器基于三个机制:委托、可见性和单一性。委托机制是指将加载一个类的请求交给父类加载 器,如果这个父类加载器不能够找到或者加载这个类,那么再加载它。可见性的原理是子类的加载器可以看见所有的父类加载器加载的类,而父类加载器看不到子类

2017-12-02 12:29:05 472 1

原创 总结:类加载、初始化实现顺序

类的加载着重介绍一下一下几个步骤。虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类) 加载:加载主类准备:为类变量分配内存并设置类变量初始值(0或NULL),如果有static final 变量(对象),准备阶段赋值 static变量(对象)。类变量:static修饰的变量:O或NULLstatic final变量:因为在定义的时候必须赋初始

2017-12-02 12:24:43 217

转载 【深入理解JVM】:Java类继承关系中的初始化顺序

来源:http://blog.csdn.net/u011080472/article/details/51330114Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释。非继承关系中的初始化顺序对于非继承关系,主类InitialOrderWithoutExtend中包含了静态成员变量(类

2017-12-02 12:20:33 218

转载 java虚拟机运行时的内存分类以及出现异常分析

来源:https://my.oschina.net/u/566829/blog/62249 java虚拟机所管理的内存包括以下几个运行时数据区域: 方法区(Method Area):线程共享的,存放已被虚拟机记载的类信息、常量、静态变量等数据。“永久代(Permanent Generation)” 虚拟机栈(Virtual Machine Stacks):线程私有,生命周期跟线程相

2017-12-02 12:11:20 235

转载 java String intern()

来源:http://blog.sina.com.cn/s/blog_69dcd5ed0101171h.html如果字符串常量池中包含一个等于此String对象的字符串,则返回代表池中这个字符串的String对象,否则,将此String对象包含的字符串添加到常量池中,并返回此String对象的引用。1. 首先String不属于8种基本数据类型,String是一个对象。

2017-12-02 12:02:49 204 1

空空如也

空空如也

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

TA关注的人

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