07H_JH
阿里云高级工程师,专注于大数据与数据库领域
展开
-
java-开发各种Java示例项目
欢迎大家fork共同学习!https://github.com/JavaExamples原创 2016-05-23 23:26:56 · 11011 阅读 · 1 评论 -
java-设计模式实例
欢迎大家fork共同学习! https://github.com/jinhang/java-DesignPattern原创 2016-05-23 23:28:19 · 561 阅读 · 0 评论 -
java-微信新版自动聊天助手
https://github.com/jinhang/wechat_plugins原创 2016-05-23 23:29:22 · 2180 阅读 · 0 评论 -
基于web的可视化数据库管理
任务:构建基于web的数据库管理系统。思路:关于WebBuilderWebBuilder是一款功能强大的Web应用开发和运行平台,能简单快速地开发功能强大和完备的企业级应用系统。使用WebBuilder可快速构建ERP、OA、CRM、HR、MIS以及电信、银行、政府、企业等各行业的应用系统。完善的基础架构,具备大型系统的完整功能,使应用系统的开发仅需致力于业务的开发。 [立原创 2016-05-26 16:56:48 · 8300 阅读 · 1 评论 -
VO BO PO
PO(persistant object)(个人理解:就是数据库模型 通过映射 转化成的 持久化类 model)持久对象 在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库原创 2016-05-26 17:32:37 · 917 阅读 · 0 评论 -
spring mvc
作者:赵磊博客:http://elf8848.iteye.com 目录 一、前言二、spring mvc 核心类与接口三、spring mvc 核心流程图四、spring mvc DispatcherServlet说明五、spring mvc 父子上下文的说明六、springMVC-mvc.xml 配置文件片段讲解 七、spring mvc 如何访问到静转载 2016-05-26 17:42:16 · 564 阅读 · 0 评论 -
spring mvc3 + fastjson
spring 3可以支持Rest风格参数,其内置了jackson框架作为REST的json参数转换成javabean对象,以及bean对象转换成json参数。下文以spring 3.1.1 + fastjson为例(低于这个版本的不知道能不能行),说明如何使用springmvc构造resuful参数及输出。不说废话了,直接上代码:Controller类:@Controllerpu转载 2016-05-26 18:00:33 · 969 阅读 · 0 评论 -
java- 分布式- 一致性哈希算法(1)
一致性哈希算法是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其他缓存就失效了。 因此,引入了一致性哈希算法:原创 2016-05-30 21:51:20 · 713 阅读 · 0 评论 -
java- 分布式- 一致性哈希算法(2)
一致性哈希用在负载均衡的实例来说,一致性哈希就是先把主机ip从小大到全部放到一个环内,然后客户端ip来连接的时候,把客户端ip连接到大小最接近客户端ip且大于客户端ip的主机。当然,这里的ip一般都是要先hash一下的。[java] view plain copy print?添加客户端,一开始有4个主机,分别为s1,s2,s3,s4,每个主机有10原创 2016-05-30 21:53:36 · 574 阅读 · 0 评论 -
Apache Shiro
Apache Shiro 是功能强大并且容易集成的开源权限框架,它能够完成认证、授权、加密、会话管理等功能。认证和授权为权限控制的核心,简单来说,“认证”就是证明你是谁? Web 应用程序一般做法通过表单提交用户名及密码达到认证目的。“授权”即是否允许已认证用户访问受保护资源。关于 Shiro 的一系列特征及优点,很多文章已有列举,这里不再逐一赘述,本文重点介绍 Shiro 在 Web Appli转载 2016-05-30 21:41:38 · 1334 阅读 · 0 评论 -
java-Netty学习(2)
任务:创建开发环境编写一个Echo服务器和客户端编译测试应用框架: 同时连到一个服务器的多个客户端。理论上,可支持的客户端数量是受可支配系统资源限制的(以及在用的JDK版本带来的限制)。Echo客户端和服务器之间的交互非常简单; 客户端建立一个连接后,它送一条或者多条消息到服务器,然后服务器再将该消息送回客户端。虽然这个交互看起来不那么实用,但却是一个典型的客户端/服务器系统请求-响应交互过程原创 2016-05-30 22:37:53 · 762 阅读 · 0 评论 -
java-对象管理-集合
在实际的项目开发中会有很多的对象,如何高效、方便地管理对象,成为影响程序性能与可维护性的重要环节。Java 提供了集合框架来解决此类问题,线性表、链表、哈希表等是常用的数据结构,在进行 Java 开发时,JDK 已经为我们提供了一系列相应的类来实现基本的数据结构,所有类都在 java.util 这个包里。Collection├List│├LinkedList│├ArrayList│└Vect原创 2016-05-31 19:51:48 · 3390 阅读 · 2 评论 -
Java -网络IO编程
转载请注明出处:http://blog.csdn.net/anxpp/article/details/51512200,谢谢! 本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解。 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端。 代码的所有说明,都直接作为注释,嵌入到代码中,看代码时就转载 2016-05-31 19:53:24 · 734 阅读 · 0 评论 -
java-jstorm
jstorm 是阿里巴巴开源的基于storm采用Java重写的一套分布式实时流计算框架,使用简单,特点如下: 开发非常迅速: 接口简单,容易上手,只要遵守Topology,Spout, Bolt的编程规范即可开发出一个扩展性极好的应用,底层rpc,worker之间冗余,数据分流之类的动作完全不用考虑。 扩展性极好:当一级处理单元速度,直接配置一下并发数,即可线性扩展性能 健壮:当worker失原创 2016-05-31 23:35:15 · 1723 阅读 · 0 评论 -
java-maven
3.1. Maven3.1.1. Maven介绍我们使用maven构建应用环境,因此我们先来简单介绍maven。Maven是什么?如何回答这个问题 要看你怎么看这个问题。 绝大部分Maven用户都称Maven是一个"构建工具":一个用来把源代码构建成可发布的构件的工具。构建工程师和项目经理会说Maven是一个更复杂 的东西:一个项目管理工具。那么区别是什么?原创 2016-06-01 21:45:53 · 514 阅读 · 0 评论 -
key/value存储系统-Memcached、Redis、Tair
每个产品的可配置参数繁多,涉及缓存策略、分布算法、序列化方式、数据压缩技术、通信方式、并发、超时等诸多方面因素,都会对测试结果产生影响,单纯的性能对比存在非常多的局限性和不合理性,所以不能作为任何评估依据,仅供参考。1、尽管 Memcached 和 Redis 都标识为Distribute,但从Server端本身而言它们并不提供分布式的解决方案,需要Client端实现一定的分布算法将数原创 2016-06-01 22:33:51 · 2521 阅读 · 1 评论 -
java-RocketMQ
RocketMQ单机支持1万以上的持久化队列,前提是足够的内存、硬盘空间,过期数据数据删除(RocketMQ中的消息队列长度不是无限的,只是足够大的内存+数据定时删除)RocketMQ版本:3.1.4 一,部署NameServer:1,安装JDK并设置JAVA_HOME环境变量(启动脚本依赖JAVA_HOME环境变量)2,cd /alibaba-rocket转载 2016-06-01 23:36:07 · 1868 阅读 · 0 评论 -
java-容器-collection的sort方法
Java中如果需要对一个collections排序,需要继承于Comparable或者comparator接口,那么使用的排序算法是什么呢,一般情况下,排序算法包括:插入排序、快速排序、合并排序、冒泡排序等,java的Collections.sort算法调用的是合并排序,它是稳定排序,当数据接近有序的时候,效率更高,collections中的数据在排序前需要输入到array中,接着调用Arrays原创 2016-05-19 22:16:21 · 3585 阅读 · 0 评论 -
java-ThreadLocal是解决线程安全问题
早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 从线原创 2016-05-19 23:20:08 · 4005 阅读 · 0 评论 -
java-总结
基础知识对象的理解代码的访问权限代码的封装代码的多态代码继承接口的作用内部类和Lambda异常的设计java.Util包java.lang包java.io包java.net包深入泛型容器IO和NIO到Netty枚举注解并发中的锁和线程实践大数据相关 编程框架:spark、hadoop、jstorm 存储系统:key-value型的Tair、Hbase、Ta原创 2016-06-02 16:16:43 · 496 阅读 · 0 评论 -
java-监视器
监视器可以看做是经过特殊布置的建筑,这个建筑有一个特殊的房间,该房间通常包含一些数据和代码,但是一次只能一个消费者(thread)使用此房间,当一个消费者(线程)使用了这个房间,首先他必须到一个大厅(Entry Set)等待,调度程序将基于某些标准(e.g. FIFO)将从大厅中选择一个消费者(线程),进入特殊房间,如果这个线程因为某些原因被“挂起”,它将被调度程序安排到“等待房间原创 2016-06-02 16:37:18 · 5586 阅读 · 0 评论 -
java-对象的理解-对象在内存的存储
String str; 这段代码表示创建一个名叫str的String类型的reference。这个reference保存在栈stack中,速度很快,但它并没有保存词或者句子的数据,它仅仅是目标数据的一个指向。 如果此时向str发送一个消息,就会返回一个运行时错误,因为此时的str并没有与任何对象相关联。String str = “Hello World”; 创建一个原创 2016-06-02 16:42:47 · 831 阅读 · 0 评论 -
java-Java可以对方法进行序列化?
Java的序列化机制只序列化对象的属性值,而不会去序列化什么所谓的方法。 其实这个问题简单思考一下就可以搞清楚,方法是不带状态的,就是一些指令,指令是不需要序列化的,只要你的JVM classloader可以load到这个类,那么类方法指令自然就可以获得。序列化真正需要保存的只是对象属性的值,和对象的类型。 这些知识找一本Java基础编程的书,或者Java手册就可以查到,我以为是不原创 2016-06-02 16:55:40 · 666 阅读 · 0 评论 -
java-Atomic包
Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作。原子变量的底层使用了处理器提供的原子指令,但是不同的CPU架构可能提供的原子指令不一样,也有可能需要某种形式的内部锁,所以该方法不能绝对保证线程不被阻塞。 Atomic包里一共有12个类,四种原子更新方式,分别是原子更新基本类型,原子更新数组,原子更新引用和原子更原创 2016-06-07 22:41:08 · 488 阅读 · 0 评论 -
java-Apache Commons IO
Google的guava对Java的IO操作进行了一定封装,但是它更偏向于集合、并发和缓存,在实际项目中,我非常喜欢guava,同时我也非常喜欢Apache的一个工具包org.apache.commons.io,这两个工具包提供非常强大的工具能力,能够简化代码逻辑,提高开发效率和质量,是每个Java程序员都应该掌握的工具包.Apache Commons IO是Apache基金会创建并维护的Java函原创 2016-06-07 22:59:05 · 856 阅读 · 0 评论 -
java-线程等待/同步的五种方法
在面试时,经常会有面试官问道,一个主线程有多个子线程,如何能使子线程的业务执行完成之后,再执行主线程业务逻辑。对于这个问题,本人能够想到的有五种方法,详细请移步源码1、使用线程类自带的join方法,将子线程加入到主线程,在子线程执行完之后,在执行主线程逻辑。例如[java] view plain copy print?publ转载 2016-06-07 23:00:48 · 8879 阅读 · 0 评论 -
java-CompletionService
JDK的CompletionService提供了一种将生产新的异步任务与使用已完成任务的结果分离开来的服务,生产者 submit 执行的任务。使用者 take 已完成的任务,并按照完成这些任务的顺序处理它们的结果。例如,CompletionService 可以用来管理异步 IO ,执行读操作的任务作为程序或系统的一部分提交,然后,当完成读操作时,会在程序的不同部分执行其他操作,执行操作的顺序可能与所原创 2016-06-07 23:04:06 · 831 阅读 · 0 评论 -
java-collection的 iterator 返回的迭代器快速失败
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class TreeMapTest { public static void main(String[] ar原创 2016-06-07 23:08:36 · 1204 阅读 · 0 评论 -
java-subString方法易导致内存溢出
String.substring(int beginIndex, int endIndex)方法来截取字串,但是该方法为了节约时间,提升性能,浪费了大量空间,其源代码如下public String substring(int beginIndex, int endIndex) { if (beginIndex < 0) { throw new StringIndexOutOfBoun原创 2016-06-07 23:13:11 · 1187 阅读 · 0 评论 -
java-计数器
第一种,最直观的计数器 每次循环都去检查Map中是否包含Key,如果包含则将原值+1再保存,如果不存在,则直接保存1.这种方式是最简单直接的一种方式,但是并不是最有效的方式,其低效的原因: 1、如果已经存在某个key(a),containsKey()和get()方法会扫描Map两次2、由于Integer是不可变对象,因此每次循环,都会创建一个新的对象放到Map中。public void naiv原创 2016-06-07 23:19:28 · 756 阅读 · 0 评论 -
java-RocketMQ实验
学习分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题:消息的顺序问题消息的重复问题如果M1和M2分别发送到两台Server上,就不能保证M1先达到,也就不能保证M1被先消费,那么就需要在MQ Server集群维护消息的顺序。那么如何解决?一种简单的方式就是将M1、M2发送到同一个Server上。这样可以保证M1先于原创 2016-06-03 18:41:52 · 3890 阅读 · 0 评论 -
java- Java IO
这是java io 比较基本的一些处理流,除此之外我们还会提到一些比较深入的基于io的处理类,比如console类,SteamTokenzier,Externalizable接口,Serializable接口等等一些高级用法极其原理。 一、java io的开始:文件1. 我们主要讲的是流,流的本质也是对文件的处理,我们循序渐进一步一步从文件将到流去。2. java原创 2016-06-26 22:49:26 · 2060 阅读 · 0 评论 -
java- Java 8的新特性
前言: Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级。在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java 8 – Lambdas and Concurrency、Java 8 Date Time API Tutorial : LocalDateTime和Abstract Class Versus转载 2016-06-26 22:51:31 · 827 阅读 · 0 评论 -
网站架构技术
一切以解决业务目标为首要任务; 没有以业务为目标的任何架构、技术,都是毫无意义的耍流氓; 再牛逼的架构、再牛逼的技术,不能够解决业务的问题,你也只能算是会架构、会技术的工匠,而不能算是真正意义上的架构师; 业务成就了技术,平台成就了人,事业成就了人,而不是相反;单机时代纯依赖RDBMS 优点:简单、快速迭代达成业务目标; 缺点:存在单点、谈不上高可用; 技术点:应用设计要保证可扩展;单机原创 2016-06-27 19:34:26 · 609 阅读 · 0 评论 -
java-设计模式-责任链
纯的与不纯的责任链模式 一个纯的责任链模式要求一个具体的处理者对象只能在两个行为中选择一个:一是承担责任,而是把责任推给下家。不允许出现某一个具体处理者对象在承担了一部分责任后又 把责任向下传的情况。 在一个纯的责任链模式里面,一个请求必须被某一个处理者对象所接收;在一个不纯的责任链模式里面,一个请求可以最终不被任何接收端对象所接收。 纯的责任链模式的实际例子很难找到原创 2016-06-27 23:31:49 · 1194 阅读 · 1 评论 -
java-框架-spring概述
Spring作为现在最优秀的框架之一,已被广泛的使用,51CTO也曾经针对Spring框架中的JDBC应用做过报道。本文将从另外一个视角试图剖析出Spring框架的作者设计Spring框架的骨骼架构的设计理念,有那几个核心组件?为什么需要这些组件?它们又是如何结合在一起构成Spring的骨骼架构?Spring的AOP特性又是如何利用这些基础的骨骼架构来工作的?Spring中又使用了那些设计模式来完转载 2016-07-10 22:25:22 · 1062 阅读 · 0 评论 -
java-框架-OkHttp
Android为我们提供了两种HTTP交互的方式:HttpURLConnection 和 Apache HTTP Client,虽然两者都支持HTTPS,流的上传和下载,配置超时,IPv6和连接池,已足够满足我们各种HTTP请求的需求。但更高效的使用HTTP 可以让您的应用运行更快、更节省流量。而OkHttp库就是为此而生。OkHttp是一个高效的HTTP库:支持 SP转载 2016-07-11 12:08:30 · 2018 阅读 · 0 评论 -
java-并发-高并发概述
多线程基础为什么需要并行 有关并行的重要概念 有关并行性能的2个重要定律 多线程基础 线程的基本操作 守护线程 优先级 中断处理 基本的线程同步操作Java内存模型和线程安全原子性 可见性 有序性 Happen-Before 规则 线程安全的概念 线程安全的反例JDK并发包各种同步控制工具的使用 并发容器及典型源码分析 同步工具、并发容器使用小案例第5课:JDK并发包原创 2016-07-22 22:45:27 · 703 阅读 · 0 评论 -
Openstack
OpenStack云平台技术是云计算技术中的主流技术,已得到大量主流商业厂商和研究机构的大力支持。在未来的几年中,OpenStack会对云计算以及IT领域产生极大的影响。由于云计算本身的复杂性,Openstack系统对于初学者显得过于繁杂,自学者往往在各种部署难题前因难而退。各种崭新的概念,对于新接触Openstack平台的人,往往会觉得困惑和难以理解,进而转化为畏惧。 本课程历数了云计算及各种流行原创 2016-07-22 22:51:58 · 908 阅读 · 0 评论 -
阿里面试题——天猫部
设计12306售票系统的数据库订票系统分解,得到位池、余票池、订票池、取票池四个票务处理系统,以及独立的前台伺服系统、支付系统和通知系统,其中的精华就是位池、余票池系统。售票窗和电话取票内部原理与网上订票一样,只是多了一个人工客服或电话客服。将订票系统分解,目的是使订票事件异步处理,独立系统处理专业事件,实现简单,效率更高。子系统对应的数据结构也更符合实际需求,数据处理更快。每个子系统的处理任务不同原创 2016-06-14 17:18:48 · 14775 阅读 · 0 评论