Java
文章平均质量分 78
「已注销」
这个作者很懒,什么都没留下…
展开
-
Java异常处理总结(荐)
Java异常处理总结 异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦! Java语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有转载 2011-12-12 21:29:09 · 742 阅读 · 0 评论 -
Java数据结构和算法系列2--数组
1.介绍Java最常用的数据结构就是数组了,Java中得数组有2种数据类型:基本类型(如int,long)和对象类型。在许多编程语言中数组是基本类型,但在Java中把它们当做对象来对待,因此在创建数组时必须使用new操作符: int[] intArray = new int[100];[]操作符对编译器来说是一个标志,它说明正在命名的是数组对象而不是普通变量,当然数组变量还可以这么写,就是将它放原创 2015-12-28 00:20:51 · 1276 阅读 · 0 评论 -
Java数据结构和算法系列1--链表
在Java编程道路上已经行走了6年多了,平时在工作当中,一般都是应用层面的开发,很少涉及到底层,就算有些逻辑算法要写,也可以找到现成的框架来完成,这里不得不自吹自擂下Java的好处了,因为Java开源框架太多了,而且非常成熟丰富。 对于Java数据结构和算法可能有些模糊了,那么现在就来对Java基础知识–数据结构和算法做些整理。 今天就来介绍下链表的数据结构,简单实现一个单向链表。 1 链表数原创 2015-12-23 15:08:11 · 1027 阅读 · 0 评论 -
一致性Hash算法与Java实现
1.简介1.1 普通hash算法普通hash算法是通过key将数据映射到具体节点上,如key%N,key为数据的hash值,N为节点数量,如果有机器加入或者退出集群,则key映射失效了,导致数据丢失。 1.2 一致性hash算法相比普通hash算法,一致性hash就可以解决这种问题。一致性hash是分布式系统常用的一种算法,常用于负载均衡。2.原理分析2.1 环形Hash空间一致性hash算法,将原创 2015-12-17 17:14:02 · 2258 阅读 · 1 评论 -
Java数据结构和算法系列3--ThreadLocal类原理详解
1.ThreadLocal介绍Java实现多线程的2种方式,继承Thread类和实现Runnable接口。今天我们介绍下另外一种常用的多线程类ThreadLocal类。 ThreadLocal在维护变量时,为每个使用变量的线程提供了独立的副本,所以每个线程都可以独立的改变自己的副本,而不影响其他线程对应的副本。2.原理ThreadLocal类接口很简单,只有4个方法,我们先来了解一下:void s原创 2016-01-04 22:09:31 · 2458 阅读 · 0 评论 -
Spring IOC原理分析
1. IOC简介Spring IOC:英文全拼 Inversion of Control,翻译中文就是控制权反转的意思。大家都知道,在编程时会经常用到1个或者多个对象来完成业务操作。在普通的Java代码中,常常使用new关键字来实例化对象。现在有了Spring IOC,不需要自己去管理对象,而是将对象的管理交由Spring平台框架,由它来负责对象的生命周期和对象间的关系。所以叫做控制权反转。 比如原创 2015-12-21 11:56:56 · 995 阅读 · 0 评论 -
探索 ConcurrentHashMap 高并发性的实现机制
简介ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本文需要读者了解 Java 内存模型。同时,ConcurrentHashMap 的源代转载 2015-12-21 16:40:42 · 727 阅读 · 0 评论 -
Java的内存泄漏
问题的提出Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与C++不同。随着越来越多的服务器程序采用Java技术,转载 2015-12-21 16:58:48 · 942 阅读 · 0 评论 -
JVM 垃圾回收器工作原理及使用实例介绍
垃圾收集基础Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况。自动垃圾收集虽然大大减轻了开发人员的工作量,但是也增加了软件系统的负担。拥有垃圾收集器可以说是 Java 语言与 C++语言的一项显著区别。在 C++语言中,程序员必须小心谨慎地处理每一项内存分配,且内存使用完后必须手工释放曾经占用的内存空间。当内存释放不够完全转载 2015-12-21 17:34:27 · 694 阅读 · 0 评论 -
JVM 优化经验总结
开始之前Java 虚拟机有自己完善的硬件架构, 如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 Java 虚拟机上运行的目标代码 (字节码), 就可以在多种平台上不加修改地运行。Java 虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。注意:本文仅针对 JDK7、HotSPOT转载 2015-12-21 17:48:10 · 687 阅读 · 0 评论 -
JVM工作原理学习笔记
一、 JVM的生命周期1. JVM实例对应了一个独立运行的java程序它是进程级别a) 启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点b) 运行。main()作为该程序初始线程的起点,任何其他线程均由该转载 2015-12-21 18:03:16 · 598 阅读 · 0 评论 -
Spring的AOP原理
一、什么是 AOPAOP(Aspect-OrientedProgramming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为(日志、安全、事务)的时候,OOP则显得无能为力。也就是说,OOP允许转载 2015-12-21 18:07:41 · 1772 阅读 · 0 评论 -
springMVC工作原理
SpringMVC框架介绍 1) Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。通过策略接口,Sprin转载 2015-12-21 18:15:00 · 746 阅读 · 0 评论 -
Redis实现消息队列
基于Redis消息队列-实现短信服务化1.Redis实现消息队列原理常用的消息队列有RabbitMQ,ActiveMQ,个人觉得这种消息队列太大太重,本文介绍下基于Redis的轻量级消息队列服务。 一般来说,消息队列有两种模式,一种是发布者订阅模式,另外一种是生产者和消费者模式。Redis的消息队列,也是基于这2种原理的实现。 发布者和订阅者模式:发布者发送消息到队列,每个订阅者都能收到一样的消原创 2016-04-25 22:48:34 · 60747 阅读 · 17 评论 -
Quartz管理类
package com.sihuatech.project.task.manager;import java.text.ParseException;import org.quartz.CronTrigger;import org.quartz.Job;import org.quartz.JobDetail;import org.quartz.Scheduler;import or转载 2012-03-31 10:08:13 · 876 阅读 · 0 评论 -
Quartz 多个触发器
package com.f139.frame.job;import static org.quartz.JobBuilder.newJob;import static org.quartz.TriggerBuilder.newTrigger;import static org.quartz.CronScheduleBuilder.cronSchedule;import java.tex转载 2012-03-31 10:16:50 · 3068 阅读 · 0 评论 -
Spring MVC中使用Mongodb总结
近期项目做了次架构调整,原来是使用MySQL+GeoHash来存储LBS数据(地理位置信息),现在使用NOSQL数据库Mongodb来存储LBS数据(地理位置信息)。由于项目是基于Spring MVC开发的,今天就Mongodb的使用做下总结。Spring MVC 集成Mongodb1.加载jar,maven配置 <!-- 新加入的spring整合mongodb的包 开始 -->原创 2015-11-13 11:47:17 · 13749 阅读 · 3 评论 -
Java 多播套接字
多播数据报套接字类用于发送和接收 IP 多播包。MulticastSocket 是一种 (UDP) DatagramSocket,它具有加入 Internet 上其他多播主机的“组”的附加功能。 1、IP多播地址和多播组 IP多播通信必须依赖于IP多播地址。在IPv4中它是一个D类IP地址,范围从224.0.0.0到239.255.255.255,地址 2转载 2012-03-29 11:22:37 · 2027 阅读 · 0 评论 -
基于Android的VoIP系统实现原理
VoIP(Voice over Internet Protocol)即首先数字化语音信号并压缩成帧,转换为IP数据包在网络上传输,以此完成语音通话的业务,是一种利用IP协议传输语音数据的、新兴的通信技术。随着我国三网融合的推进,VoIP与IPTV(Interactive Personality TV)一起成为这一庞大工程的重要标志。而目前手机中,VoIP的解决方案并不是很多,特别是在Googl转载 2012-03-29 11:25:32 · 1101 阅读 · 0 评论 -
ConcurrentHashMap解析
曾经研究过jkd1.5新特性,其中ConcurrentHashMap就是其中之一,其特点:效率比Hashtable高,并发性比hashmap好。结合了两者的特点。 集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发转载 2012-03-30 10:52:21 · 638 阅读 · 0 评论 -
JAVA 正则表达式 (超详细)
在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包。 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式。正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性。在Unix世界里,正则表达式几乎没有什么限制,可肯定的是,它应用非常之广泛。 正转载 2012-04-06 16:52:34 · 2702 阅读 · 0 评论 -
P2P之UDP穿透NAT的原理与实现
论坛上经常有对P2P原理的讨论,但是讨论归讨论,很少有实质的东西产生(源代码)。呵呵,在这里我就用自己实现的一个源代码来说明UDP穿越NAT的原理。首先先介绍一些基本概念: NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Netw转载 2012-04-06 16:40:00 · 1483 阅读 · 0 评论 -
Java实现UDP穿透NAT试验
早就听说用UDP穿透NAT可以解决P2P软件中的两个通过NAT上网的客户端直接通信的问题。当然,需要一个中介来帮助找到对方。终于用Java做了这个试验。代码贴出来吧。UDPAgent.java:import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.DatagramPacket转载 2012-04-06 16:41:07 · 6724 阅读 · 2 评论 -
MINA官网教程
简介: Apache MINA 2 是一个开发高性能和高可伸缩性网络应用程序的网络应用框架。它提供了一个抽象的事件驱动的异步 API,可以使用 TCP/IP、UDP/IP、串口和虚拟机内部的管道等传输方式。Apache MINA 2 可以作为开发网络应用程序的一个良好基础。本文将介绍 Apache MINA 2 的基本概念和 API,包括 I/O 服务、I/O 会话、I/O 过滤器和 I/O 处理转载 2012-04-06 16:47:47 · 14087 阅读 · 0 评论 -
Spring事务配置的五种方式
前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识。通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的。 总结如下: Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一转载 2013-01-15 14:49:09 · 867 阅读 · 1 评论 -
Spring MVC 3 深入总结
一、前言:大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了。Spring3 MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,性能也很优秀。官方的下载网址是:http://www.springsource.org/download (本文使用是的Spring 3.0.5版本)转载 2013-01-15 14:33:09 · 868 阅读 · 0 评论 -
hibernate里createSQLQuery
一、addEntity()和setResultTransformer()方法1.使用SQLQuery对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。最简单的情况下,我们可以采用以下形式:List cats = sess.createSQLQuery( " select * from cats " ).转载 2013-02-19 15:02:55 · 18697 阅读 · 0 评论 -
Spring3 mvc 复杂的Form提交
SpringMVC 文档提到了 @SessionAttributes annotation,和 @ModelAttribute 配合使用可以往 Session 中保存或者从 Session 中取指定属性名的具体对象。 @SessionAttributes 是用来在 controller 内部共享 model 属性的。从文档自带的例子来看,标注成 @SessionAttributes 属性的对象,转载 2013-02-22 10:24:02 · 19458 阅读 · 7 评论 -
浅谈 SpringMVC 数据绑定
查看spring源码可以看出spring支持转换的数据类型:org.springframework.beans.PropertyEditorRegistrySupport: /** * Actually register the default editors for this registry instance. */ private void createDefault转载 2013-02-22 13:06:31 · 1373 阅读 · 0 评论 -
Spring execution 表达式
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)除了返回类型模式(上面代码片断中的ret-type-pattern),名字模式和参数模式以外,所有的部分都是可选的。 返回类型模式决定了方法的返回类型必须依次匹配一个连原创 2013-03-20 15:23:32 · 780 阅读 · 0 评论 -
数据抽取工具Kettle使用
在我们开发的过程中,经常碰到多个系统之间需要相互抽取数据的问题,以往我们可以通过写Webservices接口,或者FTP共享来完成,但是这样会存在工作量大,不便于维护,性能不高的问题。今天介绍一款常用的数据抽取工具—-Kettle。 Kettle是一款国外开源的ETL工具,纯Java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。下面我们使用一个Demo程序介绍下其常用组件原创 2015-10-20 09:09:31 · 9531 阅读 · 2 评论 -
Spring集成Shiro权限管理
Spring集成Shiro实例原创 2015-10-09 11:58:29 · 2843 阅读 · 0 评论 -
深入学习微框架:Spring Boot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。多年以来,Spring IO平台饱受非议的一点就是大量的XML配置转载 2015-11-10 13:38:33 · 1538 阅读 · 1 评论