
Java
文章平均质量分 81
Zenhobby
这个作者很懒,什么都没留下…
展开
-
Java 反射(reflection)/注释(Annotation)/监听器(Listener)/装饰器(wrapper)/过滤器(Filter)一锅煮
区分学习Java和JavaWeb中的几个特性,文章摘抄自网络,不定期更新和补充中。。。转载 2017-08-04 20:40:53 · 2393 阅读 · 0 评论 -
Java 编程思想(七) BIO/NIO/AIO的区别(Reactor和Proactor的区别)
一、同步/异步,阻塞1. 同步和异步是针对应用程序和内核的交互而言的。 同步/异步是在时间上强调处理事情的结果/机会成本的两种处理策略;强调结果意味着对结果的迫不急待,不过结果是正确的还是错误的,反正你要立即给我一个结果响应;强调时间机会成本意味着对等待结果浪费的时间极其难接受,而对结果并不是那么急切,暂时不管结果(让处理方处理完主动通知结果/自己空闲的时候主动去获取结果)转而去处理其他事情。转载 2017-08-29 22:03:22 · 1610 阅读 · 0 评论 -
Java 编程思想(八)BIO/NIO/AIO的具体实现
转载:Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)转载:架构设计:系统间通信(3)——IO通信模型和JAVA实践 上篇转载:架构设计:系统间通信(3)——IO通信模型和JAVA实践 中篇转载:架构设计:系统间通信(3)——IO通信模型和JAVA实践 中篇1、BIO编程 1.1、传统的BIO编程 网络编程的基本模型是C/S模型,即两个进程间的通信。 服务端提...转载 2017-08-29 23:48:53 · 2221 阅读 · 1 评论 -
Java Jedis操作Redis示例(一)——pub/sub模式实现消息队列
转载:http://blog.youkuaiyun.com/shaobingj126/article/details/50585035一 消息队列1. 定义消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroM转载 2017-09-07 21:54:59 · 13105 阅读 · 1 评论 -
Java Jedis操作Redis示例(二)——list 生产者/消费者模式实现消息队列
转载:http://www.cnblogs.com/huangxincheng/p/4970231.html转载:http://www.cnblogs.com/stephen-liu74/archive/2012/02/14/2351859.html转载:http://www.cnblogs.com/liuling/p/2014-4-19-04.html转载:http://www.cn转载 2017-09-08 00:12:28 · 12179 阅读 · 3 评论 -
Java Jedis操作Redis示例(四)——Redis和Mysql的结合方案演进
转载:http://blog.youkuaiyun.com/stubborn_cow/article/details/50586990转载:http://blog.youkuaiyun.com/liubenlong007/article/details/53690312转载:http://blog.youkuaiyun.com/donggang1992/article/details/50981341转载:http://转载 2017-09-11 23:49:22 · 13811 阅读 · 0 评论 -
Java Jedis操作Redis示例(五)——Redis的事务、管道和脚本
转载:【分布式存储理论基础】CAP,BASE,ACID转载:Redis的事务和watch转载:Jedis对管道、事务以及Watch的操作详细解析转载:Redis高级篇转载:Redis学习转载:Lua语言模型 与 Redis应用一 Redis的事务在数据库系统中,一个事务是指:由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添转载 2017-09-12 16:43:41 · 6208 阅读 · 0 评论 -
Java Jedis操作Redis示例(六)——Redis的存储方案
转载:Redis和Memcached的区别(数据类型、内存管理、数据持久化、集群管理)转载:Redis的五种对象类型及其底层实现转载:redis 的两种持久化方式及原理转载:Redis学习笔记9--Redis持久化转载:Redis Cluster集群的搭建与实践转载:一 Redis的对象模型Redis内部使用一个redisObject对象来表示所有的key和valu转载 2017-09-12 20:50:03 · 3074 阅读 · 0 评论 -
Java 编程思想(二)内部类和闭包
转载:《Java编程思想》学习笔记3——内部类转载:Java内部类的使用小结转载:深入理解Java闭包概念内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)。1. 成员内部类转载 2017-09-14 23:23:26 · 516 阅读 · 0 评论 -
Java 编程思想(九)Java 序列化
转载:Java基础学习总结——Java对象的序列化和反序列化转载:深入理解Java对象序列化一、序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。 在很多转载 2017-09-19 11:54:41 · 559 阅读 · 0 评论 -
Java 编程思想(十)枚举
转载:《Java编程思想》学习笔记16——枚举转载:java enum(枚举)使用详解 + 总结一 原始的常量原始的接口定义常量:public interface IConstants { String MON = "Mon"; String TUE = "Tue"; String WED = "Wed"; String THU = "Thu";转载 2017-09-19 15:45:59 · 575 阅读 · 0 评论 -
Java程序性能优化 读书笔记(二)设计模式:单例模式
转载:Spring的单例模式底层实现单例模式也属于创建型模式,所谓单例,顾名思义,所指的就是单个实例,也就是说要保证一个类仅有一个实例。单例模式有以下的特点:① 单例类只能有一个实例② 单例类必须自己创建自己的唯一实例③ 单例类必须给所有其他对象提供这一实例按照单例的实现思路,共有三种方式实现单例1.饿汉模式public class Singleton1{翻译 2017-09-26 21:21:14 · 421 阅读 · 0 评论 -
Java设计模式概论
转载:Java开发中的23种设计模式详解(转)一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式转载 2017-10-09 09:30:46 · 388 阅读 · 0 评论 -
Java 编程思想(十一)异常
转载:深入理解java异常处理机制1. JAVA异常 异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发转载 2017-10-17 22:55:13 · 403 阅读 · 0 评论 -
Java 线程安全之volatile\StringBuffer\ArrayList\HashMap
一、volatile1.1 volatile并非线程安全的Java语言包含两种内在的同步机制:同步块(synchronize关键字)和volatile 变量。但是其中 Volatile 变量虽然使用简单,有时候开销也比较低,但是同时它的同步性较差,而且其使用也更容易出错。下面我们先使用一个例子来展示下volatile有可能出现线程不安全的情况:public class ShareD转载 2017-08-29 15:19:45 · 1456 阅读 · 0 评论 -
Java多线程Thread/Runnable/Callable之间的区别
编写多线程程序一般有三种方法,Thread,Runnable,Callable。1. RunableRunnable是个接口,使用很简单:1. 实现该接口并重写run方法2. 利用该类的对象创建线程3. 线程启动时就会自动调用该对象的run方法package com.callable.runnable;/** * Created on 2016/5/18.转载 2017-08-29 11:04:02 · 3700 阅读 · 0 评论 -
Java AOP & Spring AOP 原理和实现
转载:http://www.cnblogs.com/hongwz/p/5764917.html1. AOPAOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OO转载 2017-08-08 20:15:07 · 7633 阅读 · 2 评论 -
MyBatis的使用和SSM框架基础
转载:MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作1. MyBatis与Hibernate 1.1 Hibernate 简介 Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过Hi...转载 2017-08-21 20:24:05 · 1477 阅读 · 3 评论 -
Java 数据库连接池的实现
转载:javaweb学习总结(三十九)——数据库连接池一、连接池的定义数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释转载 2017-08-29 19:07:15 · 14535 阅读 · 4 评论 -
JavaWeb从新手到入门(一)Intellj Idea 2017下的Maven聚合工程体系
参考:传智播客《电商项目-淘淘商城》一、说明本系列博客是对JavaWeb后台实战项目的一个总结和记录,项目来自于传智播客的《淘淘商城》项目,网上已经有不少博客介绍项目的情况,港真,这是一个比较容易获得的、贴近生产场景的例子,所以学习一下还是很有价值的,在学习过程中还可以作为自己的练手项目,在闲暇时光进行重构和升级(就是不知道多少程序员能够有不加班重构一份学习代码的时间~),如是。项目G原创 2018-01-16 12:04:59 · 1933 阅读 · 0 评论 -
新的一年,怀揣技术追求,一直在路上
转载:无0. 写在离职前上一篇文章写在12月初,转眼将近一个月过去我并无产出,这一个月发生了个不大不小的事情,我如愿从公司离职,得以加入一直想去的公司,一家赫然将“积极提倡社会和经济公正”作为核心支柱的公司。过去的一个月中一直在对未来的憧憬和惶恐中度过,愈发觉得才疏学浅,于是疯狂得买书,终日学习,碎碎念却被一道离职网络信息安全保护挡在心中。离职前最终还是要给自己一个交代,哪怕哪日回望前原创 2018-01-03 23:55:41 · 1160 阅读 · 2 评论 -
Java Jedis操作Redis示例(三)——setnx/getset实现分布式锁
转载:http://www.cnblogs.com/0201zcr/p/5942748.html转载: http://blog.youkuaiyun.com/fengshizty/article/details/53561562转载:http://www.hollischuang.com/archives/1716转载:一 分布式锁由于在平时的工作中,线上服务器是分布式多台部署的,经常转载 2017-09-11 19:16:16 · 17694 阅读 · 0 评论 -
Java 并发机制(synchronize/Lock/volitale/CAS/AtomicInteger)的使用和实现
一、volatile的内存语义volatile关键字的特性简而言之,volatile关键字具有以下两个特性:可见性。对一个volatile变量的读,总是能看到(任意线程)对这个变量最后的写入。原子性。对任意**单个**volatile变量的读/写具有原子性,但是类似volatile++这样的操作是不具有原子性的。那么Volatile是如何来保证可见性的呢?在x86处理器转载 2017-07-22 16:10:43 · 1947 阅读 · 0 评论 -
Java 多线程和线程同步总结
转载:http://www.fx114.net/qa-241-86276.aspx1.JAVA多线程实现方式JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。2. 继承Thr转载 2017-07-22 00:48:09 · 1991 阅读 · 1 评论 -
Java HashTable/HashMap/HashSet的区别
转载:http://blog.youkuaiyun.com/speedme/article/details/224856811. HashTable和HashMap的区别HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。HashMap几乎可以等价于转载 2017-07-21 16:32:56 · 955 阅读 · 0 评论 -
Java中Map, List, Set和Queue的区别和使用场景
转载:http://www.cnblogs.com/LittleHann/p/3690187.html1. Java集合类基本概念在编程中,常常需要集中存放多个数据。从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量。一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确转载 2017-07-21 00:53:37 · 9020 阅读 · 0 评论 -
Java ArrayList和LinkedList的区别
转载:http://pengcqu.iteye.com/blog/502676一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList绝对优于LinkedList,因为LinkedList要移动指针。转载 2017-07-21 00:16:22 · 969 阅读 · 0 评论 -
Java 创建对象的四种方式
转载:http://blog.youkuaiyun.com/mhmyqn/article/details/7943411转载:http://blog.youkuaiyun.com/wantianwen/article/details/9532373Java有4种显式地创建对象的方式:1. 用new语句创建对象,这是最常用的创建对象的方式。2. 运用反射手段,调用Java.lang.Cl转载 2017-07-20 23:50:36 · 840 阅读 · 0 评论 -
IO多路复用之select、poll、epoll详解
转载:http://www.cnblogs.com/jeakeven/p/5435916.html目前支持I/O多路复用的系统调用有 select,pselect,poll,epoll,I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,pselect,poll,epoll本质上都是同转载 2017-08-29 23:10:38 · 678 阅读 · 0 评论 -
Java程序性能优化 读书笔记(十六)集合访问优化
转载:Java优化集合代码的一些方法我们平常在开发中都会用到很多的集合类,但是在使用的时候会有很多自己都不怎么注意的小习惯会影响一些效率,这次就介绍一下优化集合代码的一些小方法;一、分离循环中被重复调用的代码假设我们要循环一个数组,最简单的方法如下:for (String value : strings) { // Do something useful here翻译 2017-11-02 22:14:09 · 483 阅读 · 0 评论 -
Java程序性能优化 读书笔记(十四)并行设计模式:生产者-消费者模式
转载:java线程深度解析(五)——并发模型(生产者-消费者)转载:java 多线程并发系列之 生产者消费者模式的两种实现一、生产者-消费者模式在经典的多线程模式中,生产者-消费者为多线程间协作提供了良好的解决方案。基本原理是两类线程,即若干个生产者和若干个消费者,生产者负责提交用户请求任务(到内存缓冲区),消费者线程负责处理任务(从内存缓冲区中取任务进行处理),两类线程之间通过共享内翻译 2017-11-01 11:06:43 · 678 阅读 · 0 评论 -
Java 编程思想(五)Java泛型
1. Java泛型的目的:a. Java语言引入泛型的好处是安全简单。可以将运行时错误提前到编译时错误。在java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现转载 2017-09-19 09:33:28 · 857 阅读 · 0 评论 -
Java 编程思想(四)动态代理
转载:转载:转载:一 代理模式代理模式是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个真实对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。通过代理层这一中间层,有效的控制对于真实委托类对象的直接访问,同时可以实现自定义的控制策略(如Spring的AOP机制),设计上获得更大的灵活性。转载 2017-09-15 16:46:33 · 726 阅读 · 0 评论 -
Java 编程思想(三)集合容器
转载:Map是不是集合?转载:《Java编程思想》学习笔记4——集合容器1. Java中集合和容器的区别是什么a. 容器的概念 Java容器类类库的用途是保存对象(引用),主要分两个概念: 1、Collection:一个独立元素的序列。List、Set、Queue。 2、Map:一组成对的键值对对象。其实ArrayList也可以看做是数字与对象的关联关系,而转载 2017-09-15 11:16:13 · 431 阅读 · 0 评论 -
Java JVM/JMM/GCC剖析
转载:http://blog.youkuaiyun.com/ithomer/article/details/6252552转载:http://blog.youkuaiyun.com/suifeng3051/article/details/526113101. JMM简介Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式转载 2017-07-24 22:27:22 · 1391 阅读 · 0 评论 -
Java ConcurrentHashMap(JDK8)的实现原理
转载:http://blog.youkuaiyun.com/u010723709/article/details/48007881ConcurrentHashMap是conccurrent家族中的一个类,由于它可以高效地支持并发操作,以及被广泛使用,经典的开源框架spring的底层数据结构就是使用ConcurrentHashMap实现的。与同是线程安全的老大哥HashTable相比,它已经更胜一筹,因转载 2017-07-21 23:19:27 · 832 阅读 · 0 评论 -
Java 编程思想(一)面向对象和JVM基础
1. Java中的静态绑定和动态绑定的区别Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意味着通常情况下,我们不必判定是否应该进行动态绑定—它会自动发生。final方法会使编译器生成更有效的代码,一般是采用内联函数的方式,这也是为什么说声明为final方法能在一定程度上提高性能(效果不转载 2017-09-14 19:10:41 · 560 阅读 · 0 评论 -
Java 编程思想(六)Java I/O
转载:java基础学习总结——流转载:《Java编程思想》学习笔记11——Java I/O转载:1. Java I/O和流Java中使用流来处理程序的输入和输出操作,流是一个抽象的概念,封装了程序数据于输入输出设备交换的底层细节。Java I/O中又将流分为字节流和字符流,字节流主要用于处理诸如图像,音频视频等二进制格式数据,而字符流主要用于处理文本字符等类型的输入输出。2转载 2017-09-19 10:24:55 · 736 阅读 · 0 评论 -
Java程序性能优化 读书笔记(十三)并行设计模式:不变模式
转载:《Java高并发程序设计》学习 --5.2 并行模式之不变模式一、不变模式在并行软件的开发过程中,同步操作似乎是不可避免的,当多线程对同一个对象进行读写操作时,为了保证数据一致性和正确性,有必要对对象进行同步。而同步操作对系统的性能是有相当的损耗的,为了尽可能的取出这些同步操作,提高程序并行能力,可以使用一种不可变对象,依靠对象的不变性,可以确保其在没有同步操作的多线程环境中依然时钟翻译 2017-11-01 10:09:54 · 606 阅读 · 0 评论 -
Java程序性能优化 读书笔记(十二)并行设计模式:Guarded Suspension模式
转载:一、Guarded Suspension模式Guarded Suspension意为保护暂停,其核心思想是仅当服务进程准备好时,才提供服务。设想一种场景,服务器可能会在很短时间内承受大量的客户端请求,客户端请求的数量可能超过服务器本身的即时处理能力,而服务端程序又不能丢弃任何一个客户请求。此时,最佳的处理方案莫过于让客户端要求进行排队,由服务端程序一个接一个处理。这样,既保证了所有的翻译 2017-10-31 23:04:05 · 664 阅读 · 0 评论