- 博客(44)
- 收藏
- 关注
原创 分布式锁1 Java常用技术方案
转自:http://www.cnblogs.com/PurpleDream/p/5559352.html 前言: 由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题。所以自己结合实际工作中的一些经验和网上看到的一些资料,做一个讲解和总结。希望这篇文章可以方便自己以后查阅,同时要是能帮助到他人那也...
2017-03-14 18:34:49
123
原创 ibatis传递map和数组
java代码: Map<String,Object> param = new HashMap<String,Object>();Long[] widArr = new Long[itemList.size()];for(int i = 0; i < itemList.size(); i++){ widArr[i] = itemLi...
2017-01-23 12:23:56
1788
原创 数据库Sharding的基本思想和切分策略
转自:http://blog.csdn.net/bluishglc/article/details/6161475本文着重介绍sharding的基本思想和理论上的切分策略,关于更加细致的实施策略和参考事例请参考我的另一篇博文:数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示 一、基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到...
2016-05-24 22:40:04
105
原创 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案...
作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段。简单地说,Sharding就是将原来单一数据库按照一定的规则进行切分,把数据分散到多台物理机(我们称之为Shard)上存储,从而突破单机限制,使系统能以Scale-Out的方式应对不断上涨的海量数据,但是这种切分对上层应用来说是透明的,多...
2016-05-24 22:37:29
209
原创 netyy EventExecutorGroup 业务线程
Netty作为一个异步非阻塞式的框架,是不允许在ChannelHandler中长时间处理事务(比如数据库的操作),阻塞I/O的读写处理的。在Netty in Action中是这样描述的:While the I/O thread must not be blocked at all, thus prohibiting any direct blocking operations with...
2016-03-28 13:20:21
1843
原创 Netty Associated -- ChannelPipeline
Netty Associated -- ChannelPipelineA list of ChannelHandlers which handles or intercepts inbound events and outbound operations of a Channel. ChannelPipeline implements an advanced form of the In...
2016-03-28 00:15:52
104
原创 Netty 长连接服务
还记得一年半前,做的一个项目需要用到 Android 推送服务。和 iOS 不同,Android 生态中没有统一的推送服务。Google 虽然有 Google Cloud Messaging ,但是连国外都没统一,更别说国内了,直接被墙。所以之前在 Android 上做推送大部分只能靠轮询。而我们之前在技术调研的时候,搜到了 jPush 的博客,上面介绍了一些他们的技术特点,他们主要做的其实...
2016-03-27 23:05:40
84
原创 移动互联网长连接方案实例
1.笔者本人现在在一家创业公司担当整个平台架构的角色,而这家公司是做一移动互联网相关的一些应用产品,由其现在正在和中国最大的互联网公司之一进行合作,负责该互联网公司的手机终端的长连接推送服务,所以有一些总结特在此和大家分享一下。 2.下面这篇文章是笔者在几个月前做的一篇长连接的总结,所以可能写的不是非常严谨,特给javaer们进行一些参考即可,有如下几个数据和大家一起分享下:...
2016-03-27 21:10:01
128
原创 15天玩转redis —— 第二篇 基础的字符串类型
转自:http://www.cnblogs.com/huangxincheng/p/4968085.html 我们都知道redis是采用C语言开发,那么在C语言中表示string都是采用char[]数组的,然后你可能会想,那还不简单,当我执行如下命令,肯定是直接塞给char[]数组的。如果你真的这么想的话,会有几个问题就要过来砍你了,先我们来找一个redis手册,htt...
2016-03-09 00:11:20
100
原创 15天玩转redis —— 第三篇 无敌的列表类型
转自:http://www.cnblogs.com/huangxincheng/p/4970231.html 据说60%的人使用redis看重的是redis中的list类型,那这个list有什么用呢???不用我说大家都明白,做队列使用呗,为什么用它呢,很简单呗,因为有了它我就不需要专门的MQ产品啦,比如说RabbitMQ,ActiveMQ等等。。。对吧。 一:实战 ...
2016-03-09 00:09:43
84
原创 15天玩转redis —— 第一篇 开始入手
转自:http://www.cnblogs.com/huangxincheng/p/4966258.html 双十一终于还是过去了,我负责的mongodb由于做了副本集,最终还是挺过去了,同事负责的redis,还是遗憾的在早上8点左右宕机了,然后大家就是马不停蹄的赶往公司解决问题,因为我对redis也不是很了解,工作上使用redis的时候也是应付的找找资料,所以没有从系统层次上了解r...
2016-03-08 23:59:54
95
原创 Java开发中的23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程...
2016-03-03 17:08:45
75
原创 数据库分库分表系统学习
转自:http://blog.sina.com.cn/s/blog_702a7c3f01016xcx.html 一 为什么要进行数据切分 为什么需要数据切分呢?比如像Oracle这样成熟稳定的数据库,足以支撑海量数据的存储与查询了?为什么还需要数据切片呢?的确,Oracle的DB确实很成熟很稳定,但是高昂的使用费用和高端的硬件支撑不是每一个公司能支付的起的。试想一下一年几千万...
2015-12-24 22:36:37
162
原创 Mybatis分库分表扩展插件
转自:http://fangjialong.iteye.com/blog/2240880对于一个刚上线的互联网项目来说,由于前期活跃用户数量并不多,并发量也相对较小,所以此时企业一般都会选择将所有数据存放在一个数据库中进行访问操作。但随着后续的市场推广力度不断加强,用户数量和并发量不断上升,这时如果仅靠一个数据库来支撑所有访问压力,几乎是在自寻死路。所以一旦到了这个阶段,大部分Mysql...
2015-12-23 22:46:23
121
原创 solr创建文件索引代码
转自:http://blog.csdn.net/mozheshashou/article/details/28610947废话就不多说了,直接上代码,其中索引的字段需要自己在配置文件中配置,这个相信不用多说了吧。 package com.search.commons;import java.io.File;import java.io.IOException;impo...
2015-12-17 22:41:13
92
原创 转:Mybatis分库分表扩展插件
原文地址:http://fangjialong.iteye.com/blog/2240880 对于一个刚上线的互联网项目来说,由于前期活跃用户数量并不多,并发量也相对较小,所以此时企业一般都会选择将所有数据存放在一个数据库中进行访问操作。但随着后续的市场推广力度不断加强,用户数量和并发量不断上升,这时如果仅靠一个数据库来支撑所有访问压力,几乎是在自寻死路。所以一旦到了这个阶段,大部分M...
2015-09-11 14:49:53
98
原创 数据库分库分表(sharding)系列(四) 多数据源的事务处理
系统经sharding改造之后,原来单一的数据库会演变成多个数据库,如何确保多数据源同时操作的原子性和一致性是不得不考虑的一个问题。总体上看,目前对于一个分布式系统的事务处理有三种方式:分布式事务、基于Best Efforts 1PC模式的事务以及事务补偿机制。我们下面对这三种处理方式一一进行分析。本文原文链接:http://blog.csdn.net/bluishglc/article/det...
2015-06-09 00:10:18
83
原创 Redis应用场景(转)
转自:http://blog.csdn.net/hguisu/article/details/8836819#t11 1. MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:...
2015-05-25 22:54:23
108
原创 数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量...
当团队对系统业务和数据库进行了细致的梳理,确定了切分方案后,接下来的问题就是如何去实现切分方案了,目前在sharding方面有不少的开源框架和产品可供参考,同时很多团队也会选择自主开发实现,而不管是选择框架还是自主开发,都会面临一个在哪一层上实现sharding逻辑的问题,本文会对这一系列的问题逐一进行分析和考量。本文原文连接: http://blog.csdn.net/bluishglc/a...
2015-04-14 11:05:10
81
原创 SpringMVC结合REST实现入门级的CRUD
转自:http://www.open-open.com/lib/view/open1379302151537.html 这是一个WebProject,用到的是spring-framework-3.1.1.RELEASE 首先是web.xml(最终应用访问地址为http://IP:port/contextPath/user/add)<?xml version="...
2015-03-19 23:22:04
89
原创 spring MVC原理 (转)
转自:http://www.open-open.com/lib/view/open1365861546828.html Spring MVC工作流程图 图一 图二 Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获; 2. ...
2015-03-19 23:04:15
75
原创 Spring MVC 框架搭建及详解(转)
转自:http://www.open-open.com/lib/view/open1338338587698.html 现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了。不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握...
2015-03-19 22:57:16
78
原创 面向切面编程(AOP)的理解-几个关键概念的理解(转)
在传统的编写业务逻辑处理代码时,我们通常会习惯性地做几件事情:日志记录、事务控制及权限控制等,然后才是编写核心的业务逻辑处理代码。当代码编写完成回头再看时,不禁发现,扬扬洒洒上百行代码中,真正用于核心业务逻辑处理才那么几行,如图6-4所示。方法复方法,类复类,就这样子带着无可奈何遗憾地度过了多少个春秋。这倒也罢,倘若到了项目的尾声,突然决定在权限控制上需要进行大的变动时,成千上万个方法...
2015-03-18 16:02:24
190
原创 Spring AOP原理及简单应用(转)
原文地址:http://blog.csdn.net/zhaozheng7758/article/details/7866202 相信只要使用过Spring框架的,大家对于AOP都不陌生,尤其提起它就能立刻随口说出,一般用在日志处理、异常处理、权限验证等方面。但刚开始接触难免会有各种各样的疑惑,今天抽时间,按照之前的理解整理了一份关于Spring AOP的简单教程,希望能够帮助大家尽快的...
2015-03-18 09:47:36
67
原创 【转】反应器(Reactor)模式
Java NIO非堵塞技术实际是采取反应器模式,或者说是观察者(observer)模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。同步和异步区别 : 有无通知(是否轮询)堵塞和非堵塞区别 : 操作结果是否等待(是否马上又返回值),只是设计方式的不同。NIO 有一个主要的类Selector,...
2015-01-03 22:03:17
71
原创 Java NIO使用及原理分析 (四) (转)
转载自:李会军•宁静致远 在上一篇文章中介绍了关于缓冲区的一些细节内容,现在终于可以进入NIO中最有意思的部分非阻塞I/O。通常在进行同步I/O操作时,如果读取数据,代码会阻塞直至有 可供读取的数据。同样,写入调用将会阻塞直至数据能够写入。传统的Server/Client模式会基于TPR(Thread per Request),服务器会为每个客户端请求建立一个线程,由该线程单独负责处理一...
2015-01-03 14:39:58
76
原创 Java NIO使用及原理分析(三) (转)
转载自:李会军•宁静致远 在上一篇文章中介绍了缓冲区内部对于状态变化的跟踪机制,而对于NIO中缓冲区来说,还有很多的内容值的学习,如缓冲区的分片与数据共享,只读缓冲区等。在本文中我们来看一下缓冲区一些更细节的内容。缓冲区的分配在前面的几个例子中,我们已经看过了,在创建一个缓冲区对象时,会调用静态方法allocate()来指定缓冲区的容量,其实调用 allocate()相当于创建了...
2015-01-03 14:37:31
79
原创 Java NIO使用及原理分析(二)(转)
转载自:李会军•宁静致远 在第一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如果我们使用get()方法从缓冲区获取数据或者使用put()方法把数据写入缓冲区,都会引起缓冲区状态的变化。本文为NIO使用及原理分析的第二篇,将会分析NIO中...
2015-01-03 14:33:56
71
原创 Java NIO使用及原理分析 (一) (转)
转载自:李会军•宁静致远 最近由于工作关系要做一些Java方面的开发,其中最重要的一块就是Java NIO(New I/O),尽管很早以前了解过一些,但并没有认真去看过它的实现原理,也没有机会在工作中使用,这次也好重新研究一下,顺便写点东西,就当是自己学习 Java NIO的笔记了。本文为NIO使用及原理分析的第一篇,将会介绍NIO中几个重要的概念。在Java1.4之前的I/O...
2015-01-03 14:31:40
87
原创 memcached的并发问题
转自: 什么是CAS协议Memcached于1.2.4版本新增CAS(Check and Set)协议类同于Java并发的CAS(Compare and Swap)原子操作,处理同一item被多个线程更改过程的并发问题。在Memcached中,每个key关联有一个64-bit长度的long型惟一数值,表示该key对应value的版本号。这个数值由Memcached server产生,从1...
2014-12-25 13:37:31
121
原创 java socket通信(转)
转载:http://blog.csdn.net/b_h_l/article/details/8712282 1:简介Java语言从一开始就是为了让人们使用互联网而设计的,它为实现程序的相互通信提供了许多有用的抽象应用程序接口(API, Application Programming Interface),这类应用程序接口被称为套接字(sockets)。信息(informati...
2014-12-21 00:23:27
219
原创 quartz的触发器CronTriggerBean 配置(转)
原文地址:http://dongisland.iteye.com/blog/1452515 一个Quartz的CronTrigger表达式分为七项子表达式,其中每一项以空格隔开,从左到右分别是:秒,分,时,月的某天,月,星期的某天,年;其中年不是必须的,也就是说任何一个表达式最少需要六项! 例:0 0 12 ? * WED 表示每个星期三的12点执行,这里没有“年”这项! 字段名...
2014-12-10 12:47:25
177
原创 分布式java事务一(非原创)
Java事务处理全解析(八)——分布式事务入门例子(Spring+JTA+Atomikos+Hibernate+JMS) 在本系列先前的文章中,我们主要讲解了JDBC对本地事务的处理,本篇文章将讲到一个分布式事务的例子。 请通过以下方式下载github源代码: git clone https://github.com/davenkin/jta-atomikos-hibernate-active...
2014-11-30 00:10:44
78
原创 JTA 深度历险 - 原理与实现(非原创)
转自:http://www.ibm.com/developerworks/cn/java/j-lo-jta/#ibm-pcon 在 J2EE 应用中,事务是一个不可或缺的组件模型,它保证了用户操作的 ACID(即原子、一致、隔离、持久)属性。对于只操作单一数据源的应用,可以通过本地资源接口实现事务管理;对于跨数据源(例如多个数据库,或者数据库与 JMS)的大型应用,则必须使用全局事务 ...
2014-11-30 00:03:53
68
原创 J2EE集群(转)
转发自: http://iwin.iteye.com/blog/562127。 对于理解J2EE集群技术不错的文章,虽然是Sun的技术人员撰写的,基本观点还算客观,内容深浅恰当,非常适合刚刚接触集群的朋友阅读,故此大胆翻译过来,放在这里和大家共享,错误难免,欢迎指正。原链接Uncover the hood of J2EE Clustering1 前言越来越多的关键任务和大型应用正运...
2014-11-19 16:49:38
92
原创 通用大型网站页面静态化解决方案二(非原创)
在开发大型网站时,避免不了处理大量的页面静态化操作,这样方便加快网站访问速度与流量分流,那么如何来实现呢?其实说白了比较简单,网站静态化主要包括以下几方面的工作 多个文件服务器读写,这里可采用SMB协议 页面静态化,可采用freemarker开源框架 如果考虑到大量的读写请求,则将请求分布式或采用调度的办法来解决 第一点我们首先应该考虑文件服务器与静态页面的映射关系,即什么文件应该读写到哪台服务器...
2014-11-11 13:35:41
73
原创 通用大型网站页面静态化解决方案一(非原创)
转自:http://chinaxxren.iteye.com/blog/793763 最近自己做了一个做网络广告的网站叫全方位商机平台的项目,由于网站首页上板块划分很多,不同板块的数据库查询方式不同,首页内容量巨大,如果按照一般的动态jsp页面的话那么数据库查询将是巨大的开销,会导致首页访问速度的下降。于是考虑将这个首页全部静态化。 整个网站才用struts2 + ...
2014-11-11 13:31:41
235
原创 Java Web 页面静态化技术(非原创)
转自:http://blog.csdn.net/wuyanwen888/article/details/9125511 package com.yancms.util;import java.io.*;import org.apache.commons.httpclient.*;import org.apache.commons.httpclient.methods...
2014-11-11 13:18:08
66
原创 JavaBeans、EJB和POJO详解
转自:http://developer.51cto.com/art/200906/130814.htm。 J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种轻易理解的角度对这些概念向初学者进行解释,以便把握学习J2EE学习方向。 首先我们需要知道Java和J2EE是两个不同概念,Java不只是指一种语言,已经代表与微软不同的另外一个巨大阵营,所以Java...
2014-11-03 12:26:00
103
原创 scala & eclipse 安装插件
1、eclipse 版本 Eclipse 4.3 (Kepler).2、插件地址:http://download.scala-ide.org/sdk/lithium/e38/scala211/dev/site;总地址===>http://scala-ide.org/download/current.html;可以离线的方式下载zipfile包,将features和plugin...
2014-10-29 14:39:12
87
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人