- 博客(161)
- 资源 (3)
- 收藏
- 关注
转载 深入理解分布式事务,高并发下分布式事务的解决方案
1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2、分布式事务的产生的原因2.1、...
2018-04-19 18:55:46 377
转载 使用消息队列实现分布式事务-公认较为理想的分布式事务解决方案
前阵子从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证?!在搜索广告系统中,当用户点击某广告后,除了在点击...
2018-04-19 18:53:46 849
转载 Elasticsearch面试题系列
1.query是怎么分发到每个节点的?2.Elasticsearch使用上的优化有哪些?3.怎么避免脑裂?4.query和filter的区别?5.Elasticsearch的缺点有哪些?你觉得可以在哪些地方进行改进?6.Lucene加快查询的机制有哪些?7.如何使用Lucene构建分布式索引?8.说一下master节点选举算法9.Elasticsearch出现OOM的场景遇到过吗?10.说一下副本...
2018-04-19 18:29:25 2164
转载 缓存淘汰算法--LRU算法(java代码实现)
LRU 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。实现1 最常见的实现是使用一个链表保存缓存数据,详细算法实现如下: 1. 新数据插入到链表头部; 2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部; 3. 当链表满的时候,将链表尾部的数据丢弃。 分析 ...
2018-04-19 18:26:28 578
转载 HashMap 、Hashtable、TreeMap、LinkedHashMap、ConcurrentHashMap 、WeakHashMap
接口java.util.Map,包括3个实现类:HashMap、Hashtable、TreeMap。当然还有LinkedHashMap、ConcurrentHashMap 、WeakHashMap。 Map是用来存储键值对的数据结构,键值对在数组中通过数组下标来对其内容索引的,而键值对在Map中,则是通过对象来进行索引,用来索引的对象叫做key,其对应的对象叫value。 Map与Coll...
2018-04-19 18:24:54 1914
转载 Mycat 不适应场景(改造尽量避免)
1.非分片字段查询Mycat中的路由结果是通过分片字段和分片方法来确定的。例如下图中的一个Mycat分库方案:· 根据 tt_waybill 表的 id 字段来进行分片· 分片方法为 id 值取 3 的模,根据模值确定在DB1,DB2,DB3中的某个分片如果查询条件中有 id 字段的情况还好,查询将会落到某个具体的分片。例如:mysql>select * from...
2018-04-19 18:21:32 1522 1
转载 单点登录实现(spring session+redis完成session共享
v一、前言 项目中用到的SSO,使用开源框架cas做的。简单的了解了一下cas,并学习了一下 单点登录的原理,有兴趣的同学也可以学习一下,写个demo玩一玩。v二、工程结构 我模拟了 sso的客户端和sso的服务端, sso-core中主要是一些sso需要的过滤器和工具类,缓存和session共享的一些XML配置文件,还有springmvc需要的一下jar包的管理。sso-
2017-09-25 20:01:43 1818 1
转载 单点登录原理与简单实现
一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服
2017-09-25 19:59:18 255
转载 Android调用基于cxf的WebService接口
今天遇到个问题,由于应用服务端使用的Spring框架(xfire)的版本过低,与客户的GuideWire理赔系统接口互相调用产生了兼容性问题,根据理赔项目组的要求,我们服务端需要升级Spring版本,导致整体框架的大变动,在此基础上,手机端需要同时测试是否能够兼容升级为cxf的WebService框架的接口。实际上,这次WebService接口的变动对Android应用调用的影响并不太大,因为接口
2017-09-05 18:43:03 692
转载 Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应。第一:介绍Dubbo背景 大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过
2017-06-06 15:59:31 571
转载 jms activeMQ与spring集成进阶篇
前不久,刚学习了jms的简单入门,后面紧接着就做了一个关于jms的负载均衡的项目,做完之后颇有打通任督二脉的感觉,感觉很多之前不是很理解的东西,都有些理解了,比如服务器端的监听、具体的jms的使用等,收获有点大。 流程如下图所示: 客户端: xml配置,这里用到了两台服务器,connectionFactory便可以看出,因
2017-04-14 17:09:22 406
转载 Spring整合JMS(四)——事务管理
Spring提供了一个JmsTransactionManager用于对JMS ConnectionFactory做事务管理。这将允许JMS应用利用Spring的事务管理特性。JmsTransactionManager在执行本地资源事务管理时将从指定的ConnectionFactory绑定一个ConnectionFactory/Session这样的配对到线程中。JmsTemplate会自动检测这样的
2017-04-14 17:07:45 325
转载 Spring整合JMS——基于ActiveMQ实现
Spring整合JMS——基于ActiveMQ实现(一)1.1 JMS简介 JMS的全称是Java Message Service,即Java消息服务。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业
2017-04-14 17:07:13 463
转载 使用Spring实现读写分离( MySQL实现主从复制)
1. 背景我们一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案,其中一个是主库,负责写入数据,我们称之为:写库;其它都是从库,负责读取数据,我们称之为:读库; 那么,对我们的要求是:1、读库和写库的数据一致;2、写数据必须写到写库;3、读数据必须到读库;2. 方
2017-04-14 17:04:59 333
转载 mysql+spring+mybatis实现数据库读写分离[代码配置]
场景:一个读数据源一个读写数据源。原理:借助spring的【org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource】这个抽象类实现,看名字可以了解到是一个路由数据源的东西,这个类中有一个方法[java] view plain copy /**
2017-04-14 17:01:13 624
转载 Spring 实现数据库读写分离
现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库。Master库负责数据更新和实时数据查询,Slave库当然负责非实时数据查询。因为在实际的应用中,数据库都是读多写少(读取数据的频率高,更新数据的频率相对较少),而读取数据通常耗时比较长,占用数据库服务器的CPU较多,从而影响用户体验。我们通常的做法就是把查询从主库中抽取出来,采用多个从库,
2017-04-14 17:00:04 431
转载 Maven 项目打包
1. 关于 Maven 打 war 包《使用 Eclipse 的 Maven 2 插件开发一个 JEE 项目》详细介绍了如何在 Eclipse 使用 Maven 新建一个 JEE 项目并对其进行断点跟踪调试,但是没有介绍如何对 JEE 项目打 war 包。其实很简单,你只需要把 pom.xml 中的 jar 换成 war 就可以使用 mvn package 命令对其打 war 包了,而不需
2017-04-11 09:11:57 411
转载 Java 动态代理机制分析及扩展
引言Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程中,开发人员还可以按需调整委托类对象及其功能,这是一套非常灵活有弹性的代理框架。通过阅读本文,读者将会对 Java 动态代理机制有更加深入的理解。本文首先从 Java 动态代理的运行机制
2017-04-01 16:50:14 347
转载 LRU缓存实现(Java)
LRU Cache的LinkedHashMap实现LRU Cache的链表+HashMap实现LinkedHashMap的FIFO实现调用示例LRU是Least Recently Used 的缩写,翻译过来就是“最近最少使用”,LRU缓存就是使用这种原理实现,简单的说就是缓存一定量的数据,当超过设定的阈值时就把一些过期的数据删除掉,比如我们缓存10000条数据,当数据小于10000时可
2017-04-01 16:31:53 352
转载 缓存淘汰算法--LRU算法
1. LRU1.1. 原理LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。1.2. 实现最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:1. 新数据插入到链表头部;2. 每当缓存命中(即缓存数据被访问),则将数据移到
2017-04-01 16:30:36 307
转载 java程序员面试必备的32个要点
第一,谈谈final, finally, finalize的区别。 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是 Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。第二,Anony
2017-04-01 16:29:37 99
转载 Mysql海量数据存储和解决方案之一—分布式DB方案
1) 分布式DB水平切分中用到的主要关键技术:分库,分表,M-S,集群,负载均衡2) 需求分析:一个大型互联网应用每天几十亿的PV对DB造成了相当高的负载,对系统的稳定性的扩展性带来极大挑战。3) 现有解决方式:通过数据切分提高网站性能,横向扩展数据层 水平切分DB,有效降低了单台机器的负载,也减小了宕机的可能性。 集群方案:解决DB宕机带来的单点DB不能访问
2017-04-01 10:00:43 104
转载 mysql 阿里开源Mysql分布式中间件:Cobar
这几天研究了下Cobar, Cobar是阿里巴巴研发的关系型数据的分布式处理系统(Amoeba的升级版,该产品成功替代了原先基于Oracle的数据存储方案,目前已经接管了3000+个MySQL数据库的schema,平均每天处理近50亿次的SQL执行请求。)(github上面的是源码,大家下来需要自己用maven2编译后运行、者放Eclipse里面运行,一开始我用maven3没有执行成功。)
2017-04-01 09:58:27 1202
转载 【MySQL】海量量数据查询优化
参考资料:mysql处理海量数据时的一些优化查询速度方法:http://www.cnblogs.com/lingiu/p/3414134.htmlmysql千万级大数据SQL查询优化:http://blog.csdn.net/u014421556/article/details/52063904MySQL百万级数据库查询优化技巧:http://blog.csdn.net/d
2017-03-15 17:23:12 758
转载 jQuery同步Ajax带来的UI线程阻塞问题及解决方法
遇到了同步Ajax引起的UI线程阻塞问题,在此记录一下。事情起因是这样的,因为页面上有多个相似的异步请求动作,本着提高代码可重用性的原则,我封装了一个名为getData的函数,它接收不同参数,只负责获取数据,然后把数据return。基本的逻辑剥离出来是这样的:function getData1() { var result; $.ajax({
2017-01-16 09:44:36 1204
转载 HttpClient使用详解
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会
2017-01-05 14:03:49 317
转载 分享到微信微博空间等第三方平台的JS代码
分享功能有利于传播更多优质的内容,所以在web项目中也是比较常用的。今天就抽空整理下常用的分享平台的JS代码。这些代码可以在对应平台的官方网站上生成,官网上对分享内容的参数也有详尽说明。这里只对常用的几个参数说明下,案例未做兼容性处理,建议在chrome下预览。 1.分享到微信,易信分享到微信,易信比较简单,贴上分享链接的二维码就可以了。二维码生成地址:http
2016-08-23 15:27:19 6415
转载 把web项目改造为maven项目
如题,资料网上有一大堆,这里是实践了做个整理。【注意】maven配置maven要运行在JDK:外部JAVA_HOME指定到JDK,eclipse中runtime指定到JDK在eclipse中配置好maven的索引功能,可以事半功倍(在Maven Repositories面板中配置)下载整个索引步骤见网址:http://www.cnblogs.com/mingforyou/arc
2016-08-18 16:25:57 2002
转载 shell命令大全
一、Linux下常用命令:文件与目录操作basename:从文件名中去掉路径和扩展名cd:切换当前工作目录到指定目录chgrp:改变文件所属组chmod:改变文件的权限chown:改变文件的所有者和组cp:复制文件或目录dd:复制文件并转换文件内容file:确定文件类型find:在指定目录下查找文件并执行指定的操作ln:创建文件链接locate/sloc
2016-08-18 14:47:53 10343
转载 Android实现推送方式解决方案
本文介绍在Android中实现推送方式的基础知识及相关解决方案。推送功能在手机开发中应用的场景是越来起来了,不说别的,就我们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅读最新的新闻信息。这种推送功能是好的一面,但是也会经常看到很多推送过来的垃圾信息,这就让我们感到厌烦了,关于这个我们就不能多说什么了,毕竟很多商家要做广告。本文就是来探讨下Android中实现推送功能的一些解决方案,也
2016-08-17 16:44:52 383
转载 本文介绍Android中的5种数据存储方式。
数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是:1 使用SharedPreferences存储数据2 文件存储数据3 SQLite数据库存储数据4 使用ContentProvider存储数据5 网络存储数据 下面将为大家一一详细介绍。 第一种: 使用SharedPreferen
2016-08-17 16:41:50 736
转载 Android自定义控件之仿美团下拉刷新
首页 > 程序开发 > 移动开发 > Android > 正文Android自定义控件之仿美团下拉刷新2015-11-04 1 个评论 来源:阿拉灯神灯的专栏 收藏 我要投稿美团的下拉刷新分为三个状态:第一个状态为下拉刷新状态(pull to refresh),在这个状态下是一个绿色的椭圆随
2016-08-17 14:18:59 547
转载 Android自定义统计图(柱状图,折线图,饼状图)
最近由于项目需要,研究了一些统计图的做法,开始时,看了很多博文,大部分都是引用第三方的库,虽然简单,易上手,但是功能太死板,有很多要求都是不能满足的,所以经过研究,自己使用View中的canvas重新绘图制作统计图。首先上几张的效果图吧。 点击这里下载(0分下载) 一、demo的结构一个activity中嵌套了三个
2016-08-17 14:15:51 1188
转载 Android开源图表库MPAndroidChart
MPAndroidChart是一款基于Android的开源图表库,MPAndroidChart不仅可以在Android设备上绘制各种统计图表,而且可以对图表进行拖动和缩放操作,应用起来非常灵活。和前面介绍的AChartEngine相比,MPAndroidChart显得更为轻巧和简单,MPAndroidChart同样拥有常用的图表类型:线型图、饼图、柱状图和散点图。MPAndroidChar
2016-08-17 14:14:03 455
转载 Android浏览器打开网页
一.你要打开一个网页你可以自己写一个webview,在自己的程序中就可以打开.wv = (WebView) findViewById(R.id.webView1);wv.getSettings().setJavaScriptEnabled(true);wv.setScrollBarStyle(0);WebSettings webSettings = wv.getSettings
2016-08-15 13:39:15 3042
转载 jvectormap地图开发和制作任意国家地图
jvectormap官网上提供了世界地图和很多国家的地图,但不是所有国家的地图都有,比如沙特阿拉伯的国家地图就没有,怎么办呢?在http://www.amcharts.com/svg-maps/上下载沙特阿拉伯的SVG格式地图,然后在http://svgto.jvectormap.com/上在线转换成jvectormap所需的js文件就可以了,不过有时候在线转换会出错,具体原因我不清楚,但
2016-08-15 10:24:28 2012
转载 java多线程分块上传并支持断点续传最新修正完整版本
package com.test; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import ja
2016-08-12 11:26:52 5493 3
转载 java支持断点续传文件上传和下载组件
文件上传 文件上传操作通常会附加一些限制,如:文件类型、上传文件总大小、每个文件的最大大小等。除此以外,作为一个通用组件还需要考虑更多的问题,如:支持自定义文件保存目录、支持相对路径和绝对路径、支持自定义保存的文件的文件名称、支持上传进度反馈和上传失败清理等。另外,本座也不想重新造车轮,本组件是基于 Commons File Upload 实现,省却了本座大量的工作 ^_^ 下面先从一个
2016-08-12 11:24:24 8534
转载 身份证验证
kage my.tools;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.Map;import org.a
2016-08-12 11:23:02 545
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人