Java
文章平均质量分 83
五柳-先生
宅边有五柳树,因以为号焉。
展开
-
图解 Monad
函数式编程有一个重要概念,叫做Monad。网上有很多解释(这里和这里),但都很抽象,不容易看懂。我尝试了好多次,还是不明白Monad到底是什么。昨天,我读到了Aditya Bhargava的文章,他画了很多图。我想了半天,终于恍然大悟。下面,我就用这些图来解释Monad。1.软件最基本的数据,就是各种值(value)。2.转载 2016-06-18 10:54:14 · 1480 阅读 · 0 评论 -
JMX的Hello World
1、JMX的Hello World 一、JMX简介 什么是JMX?在一篇网文中是这样说的:"JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理",这句话我现在看着还是不知所云,云里雾里。 我们还是从JMX能给我们提供什么好处入手转载 2015-10-21 10:50:52 · 444 阅读 · 0 评论 -
模型Bean:Model Bean
在上一节是用apache的commons-modeler来开发的一个model,只不过commons-modeler帮助我们实现了很多的代码,而我们只需要写描述XML文件就行了。这一节,来一个实打实的Model Bean,不借助任何第三方工具包。例子还是沿用Hello这个类,以便于和以前的实现相比较。 一、Model MBean实例1、Hello.java还是和以前的一样。这里它没有再转载 2015-10-21 11:14:28 · 709 阅读 · 0 评论 -
Java NIO 系列教程
Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。本系列教程将有助于你学习和理解Java NIO。感谢并发编程网的翻译和投递。 (关注ITeye官微,随时随地查看最新开发资讯、技术文章。) Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲转载 2015-09-13 14:09:51 · 428 阅读 · 0 评论 -
《深入理解mybatis原理》 Mybatis数据源与连接池
对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题。本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池。 本文首先会讲述MyBatis的数据源的分类,然后会介绍数据源是如何加载和使用的。紧接着将分类介绍UNPOOLED、POOLED和JNDI类型的数据源组织;期间我们会重点讲解POOLED类型的数据源和其实现的连接转载 2015-05-30 15:44:07 · 483 阅读 · 0 评论 -
收集的Java科学计算库
将数学、物理、生物、航天、经济学等的计算集成到单一系统架构,提供了细致全面的计算系统。科学计算框架 Catalanohttp://www.oschina.net/p/catalanoCatalano Framework 是一个 Java 和 Android 的科学计算框架。 主要计算功能: 图像处理 模糊逻辑 数学计算 统计 机器学习 神经网络转载 2015-05-27 21:11:24 · 1088 阅读 · 0 评论 -
优秀程序设计的18大原则
摘要:良好的编程原则与良好的设计工程原则密切相关。本文总结的这些设计原则,帮助开发者更有效率的编写代码,并帮助成为一名优秀的程序员。【CSDN编译】良好的编程原则与良好的设计工程原则密切相关。本文总结的这些设计原则,帮助开发者更有效率的编写代码,并帮助成为一名优秀的程序员。1.避免重复原则(DRY - Don’t repeat yourself)编程的最基本原则是避免重复。在程序代码中转载 2014-03-22 00:50:59 · 471 阅读 · 0 评论 -
用Apache的commons-modeler来辅助开发JMX
一、前言 每一个MBean都要有一个接口,比如前面的Hello要有一个HelloMBean接口。要多维护一个接口,的确是件麻烦的事。 Apache的commons-modeler利用JMX中的动态MBean原理很好的解决了这一问题,commons-modeler使用得我们可以只写Hello,而不用写HelloMBean这个接口。不过这是有代价的,它要求我们写一个mbean的xml描述文转载 2015-10-21 11:12:25 · 826 阅读 · 0 评论 -
Notification的使用
一、简介 Mbean之间的通信是必不可少的,Notification就起到了在Mbean之间沟通桥梁的作用。JMX notification 由四部分组成: * Notification 这个相当于一个信息包,封装了需要传递的信息 * Notification broadcaster 这相当于一个广播器,把消息广播出去 * Notification l转载 2015-10-21 10:56:24 · 567 阅读 · 0 评论 -
动态MBean:DynamicMBean
一、前言 动态MBean是在运行期才定义它的属性和方法,也就是说它有什么属性和方法是可以动态改变的。动态MBean主要利用一些辅助类(构造函数类MBeanConstructorInfo、属性类MBeanAttributeInfo、方法类MBeanOperationInfo)来完成这个功能,所有的动态MBean必须实现DynamicMBean接口。DynamicMBean写好后,使用方法转载 2015-10-21 10:58:15 · 465 阅读 · 0 评论 -
jstack, jstat, jmap, jinfo, 教你如何在背后偷窥你的进程^^
呵呵,不着急,先一下“是什么”,再说一下“怎么用”。 是什么jps查看所有的jvm进程,包括进程ID,进程启动的路径等等。我自己也用PS,即:ps -ef | grep javajstack观察jvm中当前所有线程的运行情况和线程当前状态。系统崩溃了?如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stac转载 2016-06-15 16:21:49 · 1035 阅读 · 0 评论 -
使用jvisualvm来远程观察Java程序
这里要介绍的第一种方式是,使用JMX来进行监控。这种方式要求我们在启动Java程序的时候手动开启jmx remote功能。开启的方式是使用下面的命令行参数启动Java程序:-Dcom.sun.management.jmxremote.port= -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote转载 2016-06-15 15:55:07 · 549 阅读 · 0 评论 -
理解Java中字符流与字节流的区别
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列。和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序列的对象被称为输入流;能够向其写入一个字节序列的对象被称为输出流。 2. 字节流 Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据。J转载 2016-05-23 14:57:22 · 362 阅读 · 0 评论 -
深入理解Java之泛型
1. Why ——引入泛型机制的原因 假如我们想要实现一个String数组,并且要求它可以动态改变大小,这时我们都会想到用ArrayList来聚合String对象。然而,过了一阵,我们想要实现一个大小可以改变的Date对象数组,这时我们当然希望能够重用之前写过的那个针对String对象的ArrayList实现。 在Java 5之前,ArrayList的实现大致如下:转载 2016-05-23 14:40:51 · 357 阅读 · 0 评论 -
Java经典类库-Guava中的函数式编程讲解
如果我要新建一个java的项目,那么有两个类库是必备的,一个是junit,另一个是Guava。选择junit,因为我喜欢TDD,喜欢自动化测试。而是用Guava,是因为我喜欢简洁的API。Guava提供了很多的实用工具函数来弥补java标准库的不足,另外Guava还引入了函数式编程的概念,在一定程度上缓解了java在JDK1.8之前没有lambda的缺陷,使使用java书写简洁易读的函数式风格的代转载 2016-05-23 14:32:30 · 407 阅读 · 0 评论 -
JVM内存堆布局图解分析
JAVA能够实现跨平台的一个根本原因,是定义了class文件的格式标准,凡是实现该标准的JVM都能够加载并解释该class文件,据此也可以知道,为啥Java语言的执行速度比C/C++语言执行的速度要慢了,当然原因肯定不止这一个,如在JVM中没有数据寄存器,指令集使用的是栈来保存中间数据...等,尽管Java的贡献者们为执行速度的提高想了各种办法,如JIT、动态编译器等,以下是Leetcode中一道转载 2016-06-07 20:11:13 · 550 阅读 · 0 评论 -
关于字符编码,你所需要知道的(ASCII,Unicode,Utf-8,GB2312…)
字符编码的问题看似很小,经常被技术人员忽视,但是很容易导致一些莫名其妙的问题。这里总结了一下字符编码的一些普及性的知识,希望对大家有所帮助。还是得从ASCII码说起说到字符编码,不得不说ASCII码的简史。计算机一开始发明的时候是用来解决数字计算的问题,后来人们发现,计算机还可以做更多的事,例如文本处理。但由于计算机只识“数”,因此人们必须告诉计算机哪个数字来代表哪个特定字符,例如转载 2016-05-17 17:35:21 · 726 阅读 · 0 评论 -
Java资源大全中文版
Java资源大全中文版我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、Java 站点等等。伯乐在线已经把 awesome-java 资源列表翻成中文后发布于 ImportNew。转载 2016-05-04 15:14:59 · 1066 阅读 · 1 评论 -
log4jdbc数据库访问日志框架使用
log4jdbc官网地址http://code.google.com/p/log4jdbc/https://github.com/arthurblake/log4jdbc当前最新版本是1.2, 支持JDBC3, JDBC4log4jdbc是在jdbc层的一个日志框架,可以将占位符与参数全部合并在一起显示,方便直接拷贝sql在数据库客户端运行未使用log4jd转载 2016-05-04 15:02:32 · 850 阅读 · 0 评论 -
log4jdbc记录全部SQL日志
log4jdbc 是工作在jdbc层的一个日志框架,能够记录SQL及数据库连接执行信息。一般的SQL日志会把具体的参数值用?代替,有时候很不方便,log4jdbc则会记录数据库执行的完整SQL字符串,在数据库应用开发调试阶段非常有用。log4jdbc具有以下特性:•支持JDBC3和JDBC4。•支持现有大部分JDBC驱动。•易于配置(在大部分情况下,只需转载 2016-05-04 14:30:00 · 774 阅读 · 0 评论 -
Java开发者值得关注的7款新工具
云计算、大数据地快速发展催生了不少热门的应用及工具。作为老牌语言Java,其生态圈也出来了一些有关云服务、监控、文档分享方面的工具。本文总结了7款较新的Java工具,大家不妨看下。1. JClarity——性能监控JClarity目前提供两款有关Java性能的工具:Illuminate和Censum,Illuminate是一款性能监控工具,而Censum是一款专注于垃圾回收的日志分转载 2016-04-08 00:16:22 · 376 阅读 · 0 评论 -
深入剖析Java中的装箱和拆箱
自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。 以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? 二.装箱和拆箱是如何实现的 三.面试中相关的问题 若有不正之处,请谅解和批评指正,不胜感激。 请尊重作者劳动成果,转载请标转载 2016-03-21 21:53:16 · 458 阅读 · 0 评论 -
【Spring】java.lang.IndexOutOfBoundsException: Index: 256, Size: 256
Spring接受前台的数据超过256出现如下异常:[java] view plain copy print?org.springframework.beans.InvalidPropertyException: Invalid property 'specificationValues[256]' of bean class [com.sen转载 2016-01-29 09:24:11 · 3125 阅读 · 0 评论 -
使用JAXP进行SAX解析(XMLReaderFactory、XMLReader 、SAXParserFactory与SAXParser)
SAX解析XML文件采用事件驱动的方式进行,也就是说,SAX是逐行扫描文件,遇到符合条件的设定条件后就会触发特定的事件,回调你写好的事件处理程序。使用SAX的优势在于其解析速度较快,相对于DOM而言占用内存较少。而且SAX在解析文件的过程中得到自己需要的信息后可以随时终止解析,并不一定要等文件全部解析完毕。凡事有利必有弊,其劣势在于SAX采用的是流式处理方式,当遇到某个标签的时候,它并不会记录下以转载 2015-11-24 21:00:50 · 489 阅读 · 0 评论 -
JMX简介
一、JMX简介 JMX是一种JAVA的正式规范,它主要目的是让程序且有被管理的功能,那么怎么理解所谓的“被管理”呢?试想你开发了一个软件(如WEB网 站),它是在24小时不简断运行的,那么你可能会想要“监控”这个软件的运行情况,比如收到了多少数据,有多少人登录等等。或者你又想“配置”这个软件, 比如现在访问人数比较多,你想把数据连接池设置得大一些。 当然,你也许会专门为这些管理转载 2015-10-21 10:53:08 · 486 阅读 · 0 评论 -
Jstatd命令(Java Statistics Monitoring Daemon)
JDK内置工具使用一、javah命令(C Header and Stub File Generator)二、jps命令(Java Virtual Machine Process Status Tool)三、jstack命令(Java Stack Trace)四、jstat命令(Java Virtual Machine Statistics Monitoring Tool)五、j转载 2014-03-03 21:31:14 · 756 阅读 · 0 评论 -
JAVA反射机制
JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。但是JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的clas转载 2014-03-03 21:34:18 · 558 阅读 · 0 评论 -
Java中hashCode的作用
以下是关于HashCode的官方文档定义:[plain] view plaincopyhashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。 hashCode 的常规协定是: 在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整转载 2014-03-03 21:31:29 · 589 阅读 · 0 评论 -
JAVA中使用Schema校验XML
源程序来源于网络,感谢程序的原作者。源程序比较不容易看懂,如没有引用相关的包,没有说明相关包如何获取,相关的理论依据是什么,这里我补充完整。完整源程序如下: [java] view plaincopy/* 1、需要四个JAR包的支持:isorelax、dom4j、relaxngDatatype、xsdlib,都可以在sourceforge上面下载,如果不知道如何查找转载 2014-03-03 21:30:58 · 1705 阅读 · 0 评论 -
JavaBean之间拷贝利器-Dozer 映射数据类型不一致,级联映射与自定义映射
今天我们来讨论如何使用Dozer映射复杂类型: 1. 数据类型不一致。 2. 级联映射。 3. 自定义映射。 在讨论之前,我们来说说一个朋友在上篇留言中提到的一个问题。估计大家应该都很关心。这个问题就是性能问题。Dozer其实底层使用了现成的BeanUtil,通过反射来映射,况且Dozer应用了Cache技术,转载 2013-12-12 13:04:15 · 3225 阅读 · 0 评论 -
深入分析 iBATIS 框架之系统架构与映射原理
iBATIS 框架主要的类层次结构总体来说 iBATIS 的系统结构还是比较简单的,它主要完成两件事情:根据 JDBC 规范建立与数据库的连接;通过反射打通 Java 对象与数据库参数交互之间相互转化关系。iBATIS 的框架结构也是按照这种思想来组织类层次结构的,其实它是一种典型的交互式框架。先期准备好交互的必要条件,然后构建一个交互的环境,交互环境中还划分成会话,每次的会话也有转载 2013-11-02 00:17:11 · 787 阅读 · 0 评论 -
linux下安装jdk1.6版本显示1.4
linux下安装jdk1.6版本显示1.4,修改默认jdk版本当成功把jdk1.6安装到 /usr/java,并且配置好了系统环境变量案例演示执行 # java -version 时显示的不是你安装的jdk版本,而是其它版本如jdk1.4.2,是因为linux系统有默认的jdk,版本为1.4.2;[root@ip-10-0-0-54 lib]# java -versionjav原创 2013-10-21 21:52:05 · 830 阅读 · 0 评论 -
JAVA虚拟机体系结构
一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中。 Java虚拟机实例通过调用某个初始类的main()方法来运行一个Java程序。而这个main()方法转载 2013-10-08 22:34:39 · 798 阅读 · 0 评论 -
Linux jdk1.6安装与卸载
一、下载安装JDK1.6 1、下载jdk1.6的官方地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html 2、jdk1.6提供以下两种自解压文件: 1)jdk-6u22-linux-i586.bin 2)jdk-6u22-linux-i586-rpm.bin 3、我下载的转载 2013-06-30 09:50:04 · 759 阅读 · 0 评论 -
转载 CXF-Webservice 视频-only URL address
http://www.iteye.com/topic/305642转载 2012-02-09 19:51:10 · 472 阅读 · 0 评论 -
Java枚举的七种常见用法
JDK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。用法一:常量在JDK1.5 之前,我们定义常量都是: public static fianl…. 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。123public enum Color转载 2014-03-03 21:33:37 · 695 阅读 · 0 评论 -
sleep和wait有什么区别
1、这两个方法来自不同的类分别是Thread和Object 2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在 任何地方使用(使用范围) synchronized(x){ x.notify() //或者w转载 2014-03-10 21:13:04 · 599 阅读 · 0 评论 -
Java轻量级锁原理详解(Lightweight Locking)
大家知道,Java的多线程安全是基于Lock机制实现的,而Lock的性能往往不如人意。原因是,monitorenter与monitorexit这两个控制多线程同步的bytecode原语,是JVM依赖操作系统互斥(mutex)来实现的。互斥是一种会导致线程挂起,并在较短的时间内又需要重新调度回原线程的,较为消耗资源的操作。为了优化Java的Lock机制,从Java6开始引入了轻量级锁的概转载 2014-03-05 11:58:54 · 696 阅读 · 0 评论 -
json与xml对比
曾几何时,XML是程序员的宠儿,是数据传输、API、AJAX应用等方面的不二选择,但自从JSON横空出世后,或者你会发觉你身边就有很多人开始抛弃XML,在他们的心目中,JSON已经完全取代了XML的位置。JSON有很多优势,但也存在缺点,而XML虽然确实存在不少问题,但孰优孰劣,并不是可以依据个人喜好就轻易得出结论的。JSON(Javascript Object Notation) 是一种轻量转载 2014-04-30 10:50:04 · 502 阅读 · 0 评论 -
java动态代理(JDK和cglib)
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为转载 2014-04-30 01:18:19 · 425 阅读 · 0 评论