03 2018 档案

摘要:1、穿透 穿透:频繁查询一个不存在的数据,由于缓存不命中,每次都要查询持久层。从而失去缓存的意义。 解决办法: 持久层查询不到就缓存空结果,查询时先判断缓存中是否exists(key) ,如果有直接返回空,没有则查询后返回,注意insert时需清除查询的key,否则即便DB中有值也查询不到(当然也可 阅读全文
posted @ 2018-03-30 21:48 BarryW 阅读(1060) 评论(0) 推荐(0) 编辑
摘要:1、为什么要用锁? 锁-是为了解决并发操作引起的脏读、数据不一致的问题。 2、锁实现的基本原理 2.1、volatile Java编程语言允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁要更加方 阅读全文
posted @ 2018-03-30 21:34 BarryW 阅读(25405) 评论(4) 推荐(3) 编辑
摘要:【1】假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。 由满6向空5倒,剩1升,把这1升倒5里,然后6剩满,倒5里面,由于5里面有1升水,因此6只能向5倒4升水,然后将6剩余的2升,倒入空的5里面,再灌满6向5里倒3升,剩余3升。 阅读全文
posted @ 2018-03-28 18:27 BarryW 阅读(9984) 评论(0) 推荐(0) 编辑
摘要:1、匹配验证-验证Email是否正确 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public static void main(String[] args) { // 要验证的字符串 String str = "service@xsoftlab.net"; // 邮箱验证规则 阅读全文
posted @ 2018-03-26 18:08 BarryW 阅读(309) 评论(0) 推荐(0) 编辑
摘要:HashMap概述 HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 HashMap的数据结构 在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用), 阅读全文
posted @ 2018-03-21 22:15 BarryW 阅读(422) 评论(0) 推荐(0) 编辑
摘要:一、什么是事务: 事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败. 二、事务特性(4种): 原子性 (atomicity):强调事务的不可分割;一致性 (consistency):事务的执行的前后数据的完整性保持一致;隔离性 (isolation):一个事务执行的过程中 阅读全文
posted @ 2018-03-19 22:35 BarryW 阅读(579) 评论(0) 推荐(0) 编辑
摘要:一:代理模式(静态代理) 代理模式是常用设计模式的一种,我们在软件设计时常用的代理一般是指静态代理,也就是在代码中显式指定的代理。 静态代理由 业务实现类、业务代理类 两部分组成。业务实现类 负责实现主要的业务方法,业务代理类负责对调用的业务方法作拦截、过滤、预处理,主要是在方法中首先进行预处理动作 阅读全文
posted @ 2018-03-19 15:38 BarryW 阅读(419) 评论(0) 推荐(0) 编辑
摘要:Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经走了一年多。 在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的。从最初的开源软件云收藏来熟悉 Spring Boot,到项目中的慢慢使用,再到最后全面拥抱 Sprin 阅读全文
posted @ 2018-03-18 23:21 BarryW 阅读(1920) 评论(0) 推荐(0) 编辑
摘要:简介 线程池作为提高程序处理数据能力的一种方案,应用非常广泛。大量的服务器都或多或少的使用到了线程池技术,不管是用Java还是C++实现,线程池都有如下的特点:线程池一般有三个重要参数: 来 看一下线程池究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若 阅读全文
posted @ 2018-03-18 23:16 BarryW 阅读(779) 评论(0) 推荐(0) 编辑
摘要:电商平台营销时候,经常会碰到的大流量问题,除了做流量分流处理,可能还要做用户黑白名单、信誉分析,进而根据用户ip信誉权重做相应的流量拦截、限制流量。Nginx自身有的请求限制模块ngx_http_limit_req_module、流量限制模块ngx_stream_limit_conn_module基 阅读全文
posted @ 2018-03-18 23:06 BarryW 阅读(599) 评论(0) 推荐(0) 编辑
摘要:开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如 阅读全文
posted @ 2018-03-18 23:03 BarryW 阅读(683) 评论(0) 推荐(0) 编辑
摘要:一. 什么是单例模式 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。 二. 单例模式的特点 1. 单例模式只能有一个实例。 2. 单例类必须创建自己的唯一实例。 3. 单例类必须向其他对象提供这一实例。 三. 单例模式VS静态类 在知道了什么是 阅读全文
posted @ 2018-03-18 21:32 BarryW 阅读(2801) 评论(0) 推荐(0) 编辑
摘要:现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有可能再服务器处理完毕后返回结果的时候挂掉,这个时候用户端发现很久没有反应,那么就会多次点击按钮,这样 阅读全文
posted @ 2018-03-18 21:11 BarryW 阅读(245) 评论(0) 推荐(0) 编辑
摘要:排序算法稳定性表示两个值相同的元素在排序前后是否有位置变化。如果前后位置变化,则排序算法是不稳定的,否则是稳定的。稳定性的定义符合常理,两个值相同的元素无需再次交换位置,交换位置是做了一次无用功。 下面为七种经典排序算法指标对比情况: 一、插入排序 InsertionSort 介绍: 插入排序的工作 阅读全文
posted @ 2018-03-18 17:18 BarryW 阅读(528) 评论(0) 推荐(0) 编辑
摘要:1、 MyCAT概述 1.1 背景 随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩充,数据库应用已经普遍建立于计算机网络之上。这时集中式数据库系统表现出它的不足: (1)集中式处理,势必造成性能瓶颈; (2)应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统受到影 阅读全文
posted @ 2018-03-17 22:58 BarryW 阅读(5882) 评论(0) 推荐(0) 编辑
摘要:1.非分片字段查询 Mycat中的路由结果是通过分片字段和分片方法来确定的。例如下图中的一个Mycat分库方案: 根据 tt_waybill 表的 id 字段来进行分片 分片方法为 id 值取 3 的模,根据模值确定在DB1,DB2,DB3中的某个分片 如果查询条件中有 id 字段的情况还好,查询将 阅读全文
posted @ 2018-03-17 22:44 BarryW 阅读(1457) 评论(0) 推荐(0) 编辑
摘要:搜索引擎:Solr与Elasticsearch比较分析 Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。 它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。 Elasticsearch是一个建立在全文搜索引擎 Apache 阅读全文
posted @ 2018-03-17 22:23 BarryW 阅读(323) 评论(0) 推荐(0) 编辑
摘要:Solrcloud介绍: SolrCloud(solr集群)是Solr提供的分布式搜索方案。 当你需要大规模,容错,分布式索引和检索能力时使用SolrCloud。 当索引量很大,搜索请求并发很高时,同样需要使用SolrCloud来满足这些需求。 不过当一个系统的索引数据量少的时候是没有必要使用Sol 阅读全文
posted @ 2018-03-17 22:17 BarryW 阅读(260) 评论(0) 推荐(0) 编辑
摘要:先来看个例子: 1. 示例1:假设有如下的一张表: DROP TABLE IF EXISTS testTable; CREATE TABLE testTable ( ID BIGINT NOT NULL AUTO_INCREMENT COMMENT 'auto increment id', HOST 阅读全文
posted @ 2018-03-17 21:52 BarryW 阅读(10822) 评论(5) 推荐(6) 编辑
摘要:一、不落俗套的开始 1、背景介绍 单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 CAS框架:CAS(Central Authentication Service)是实现SSO单点登录的框架。 2、盗一张学习CAS 阅读全文
posted @ 2018-03-17 18:29 BarryW 阅读(4659) 评论(1) 推荐(0) 编辑
摘要:Round 1:背景 Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如:JStorm捐赠给Apache并加入Apache基金会等,为中国互联网人争足了面子,使得阿里巴巴在国人眼里已经从电商升级为一 阅读全文
posted @ 2018-03-17 14:05 BarryW 阅读(3924) 评论(0) 推荐(1) 编辑
摘要:Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的。下面我们就针对Dubbo的每种协议详解讲解,以便我们在实际应用中能够正确取舍。 dubbo协议 缺省协议,使用基于mina1.1.7 阅读全文
posted @ 2018-03-17 13:45 BarryW 阅读(4496) 评论(0) 推荐(0) 编辑
摘要:Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider 阅读全文
posted @ 2018-03-17 13:33 BarryW 阅读(218) 评论(0) 推荐(0) 编辑
摘要:目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两 阅读全文
posted @ 2018-03-16 18:15 BarryW 阅读(417) 评论(0) 推荐(0) 编辑
摘要:synchronized是一个重量级的锁,虽然JVM对它做了很多优化,而下面介绍的volatile则是轻量级的synchronized。如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。Java语言规范对volatile的定义如下 阅读全文
posted @ 2018-03-15 22:14 BarryW 阅读(388) 评论(0) 推荐(0) 编辑
摘要:JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jinfo、jstat、jmap+jhat、jstack等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰 阅读全文
posted @ 2018-03-15 21:19 BarryW 阅读(5139) 评论(0) 推荐(1) 编辑
摘要:一、线程5种状态 新建状态(New) 新创建了一个线程对象。 就绪状态(Runnable) 线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。 运行状态(Running) 就绪状态的线程获取了CPU,执行程序代码。 阻塞状态 阅读全文
posted @ 2018-03-15 21:15 BarryW 阅读(2127) 评论(0) 推荐(0) 编辑
摘要:Redis 基于 Reactor 模式开发了自己的网络事件处理器: 这个处理器被称为文件事件处理器(file event handler): 文件事件处理器使用 I/O 多路复用(multiplexing)程序来同时监听多个套接字, 并根据套接字目前执行的任务来为套接字关联不同的事件处理器。 当被监 阅读全文
posted @ 2018-03-14 23:28 BarryW 阅读(27097) 评论(0) 推荐(7) 编辑
摘要:本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解。 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端。 代码的所有说明,都直接作为注释,嵌入到代码中,看代码时就能更容易理解,代码中会用到一个计算结果的工具类,见文章代码部分。 相关 阅读全文
posted @ 2018-03-14 23:25 BarryW 阅读(2396) 评论(0) 推荐(0) 编辑
摘要:对称加密:双方使用的同一个密钥,既可以加密又可以解密,这种加密方法称为对称加密,也称为单密钥加密。 优点:速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高。 缺点:在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方 阅读全文
posted @ 2018-03-14 23:04 BarryW 阅读(22127) 评论(0) 推荐(0) 编辑
摘要:专栏导航 HTTPS协议详解(一):HTTPS基础知识 HTTPS协议详解(二):TLS/SSL工作原理HTTPS协议详解(三):PKI 体系HTTPS协议详解(四):TLS/SSL握手过程HTTPS协议详解(五):HTTPS性能与优化 1、握手与密钥协商过程 基于RSA握手和密钥交换的客户端验证服 阅读全文
posted @ 2018-03-14 22:59 BarryW 阅读(35662) 评论(1) 推荐(3) 编辑
摘要:1. 为什么使用线程池 诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达 阅读全文
posted @ 2018-03-14 22:27 BarryW 阅读(15983) 评论(3) 推荐(0) 编辑
摘要:超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。 为了解决HT 阅读全文
posted @ 2018-03-14 20:56 BarryW 阅读(194) 评论(0) 推荐(0) 编辑
摘要:随着今年 5 月 14 日 HTTP/2 协议正式版的发布,越来越多的网站开始部署 HTTP/2 了。我对 HTTP 协议一直都比较有兴趣,本文汇总一些关于 HTTP/2 的资料以及我写过的文章,会持续更新。如果大家有任何问题,欢迎留言交流探讨。 协议 HTTP/2 协议由以下两个 RFC 组成: 阅读全文
posted @ 2018-03-14 20:50 BarryW 阅读(421) 评论(0) 推荐(0) 编辑
摘要:HTTP2.0作为新版协议,改动细节必然很多,不过对应用开发者和服务提供商来说,影响较大的就几点。 新的二进制格式(Binary Format) http1.x诞生的时候是明文协议,其格式由三部分组成:start line(request line或者status line),header,body 阅读全文
posted @ 2018-03-14 20:45 BarryW 阅读(7975) 评论(0) 推荐(0) 编辑
摘要:HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等) 阅读全文
posted @ 2018-03-14 20:33 BarryW 阅读(1010) 评论(0) 推荐(0) 编辑
摘要:HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与 阅读全文
posted @ 2018-03-14 18:31 BarryW 阅读(2080) 评论(0) 推荐(0) 编辑
摘要:1 概述 本文档主要介绍了Tomcat的性能调优的原理和方法。可作为公司技术人员为客户Tomcat系统调优的技术指南,也可以提供给客户的技术人员作为他们性能调优的指导手册。2 调优分类 由于Tomcat的运行依赖于JVM,从虚拟机的角度我们把Tomcat的调整分为外部环境调优和自身调优两类来描述。  阅读全文
posted @ 2018-03-14 12:02 BarryW 阅读(1098) 评论(0) 推荐(0) 编辑
摘要:Dubbo的负载均衡已经是服务层面的了,和nginx的负载均衡还在http请求层面完全不同。至于二者哪个优秀,当然没办法直接比较。 涉及到负载均衡就涉及到你的业务,根据业务来选择才是最适合的。 dubbo具备了server注册,发现、路由、负载均衡的功能,在所有实现了这些功能的服务治理组件中,个人觉得dubbo还是略微笨重了,因为它本身是按照j2EE范畴所制定的中规中矩的服务治理框架。 dub... 阅读全文
posted @ 2018-03-14 11:57 BarryW 阅读(4946) 评论(1) 推荐(2) 编辑
摘要:1、安装nginx和tomcat 我这里是使用docker安装的。安装流程可参照 dockerfile 这里安装了两个tomcat,端口分别是42000和42001。第二个tomcat的首页随便加了些代码区分 2、nginx配置 3、测试 刷新页面发现页面会发生变化,证明负载配置成功。因为我配的权重 阅读全文
posted @ 2018-03-14 11:51 BarryW 阅读(492) 评论(0) 推荐(0) 编辑
摘要:前两种均需要使用 memcached 或 redis 存储 session ,最后一种使用 terracotta 服务器共享。 建议使用 redis ,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单个对象比较大,而且数据类型丰富, 不只是缓存 session ,还可以做其他用途,一举几得啊。 阅读全文
posted @ 2018-03-14 11:48 BarryW 阅读(740) 评论(0) 推荐(0) 编辑
摘要:数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而 阅读全文
posted @ 2018-03-13 23:14 BarryW 阅读(306) 评论(0) 推荐(0) 编辑
摘要:一:缓存——热数据 热点数据(经常会被查询,但是不经常被修改或者删除的数据),首选是使用redis缓存,毕竟强大到冒泡的QPS和极强的稳定性不是所有类似工具都有的,而且相比于memcached还提供了丰富的数据类型可以使用,另外,内存中的数据也提供了AOF和RDB等持久化机制可以选择,要冷、热的还是 阅读全文
posted @ 2018-03-13 23:06 BarryW 阅读(374) 评论(0) 推荐(0) 编辑
摘要:非脚本实现 以上代码有两点缺陷 可能会出现竞态条件: 解决方法是用 WATCH 监控 rate.limit:$IP 的变动, 但较为麻烦; 以上代码在不使用 pipeline 的情况下最多需要向Redis请求5条指令, 传输过多. Lua脚本实现 Redis 允许将 Lua 脚本传到 Redis 服 阅读全文
posted @ 2018-03-13 22:59 BarryW 阅读(13457) 评论(0) 推荐(2) 编辑
摘要:方式一:使用DECR减库存 1、使用watch,采用乐观锁 2、不使用悲观锁,因为等待时间非常长,响应慢 3、不使用队列,因为并发量会让队列内存瞬间升高 Redis对事物的支持目前比较简单。Redis只能保证一个client发起的事务中的命令可以连续的执行,但后面命令出错前面不会回滚。而中间不会插入 阅读全文
posted @ 2018-03-13 22:56 BarryW 阅读(1278) 评论(0) 推荐(0) 编辑
摘要:在学习Redis的常用操作时,经常看到介绍说,Redis的set、get以及hset等等命令的执行都是原子性的,但是令自己百思不得其解的是,为什么这些操作是原子性的? 原子性 原子性是数据库的事务中的特性。在数据库事务的情景下,原子性指的是:一个事务(transaction)中的所有操作,要么全部完 阅读全文
posted @ 2018-03-13 22:44 BarryW 阅读(632) 评论(0) 推荐(0) 编辑
摘要:从 2.6版本 起, Redis 开始支持 Lua 脚本 让开发者自己扩展 Redis … 非脚本实现 以上代码有两点缺陷 可能会出现竞态条件: 解决方法是用 WATCH 监控 rate.limit:$IP 的变动, 但较为麻烦; 以上代码在不使用 pipeline 的情况下最多需要向Redis请求 阅读全文
posted @ 2018-03-13 22:30 BarryW 阅读(23146) 评论(0) 推荐(3) 编辑
摘要:官方地址: 主站:Mycat-server@github : https://github.com/MyCATApache/Mycat-Server.git Mycat-web@github : https://github.com/MyCATApache/Mycat-Web.git Mycat-d 阅读全文
posted @ 2018-03-13 22:10 BarryW 阅读(15663) 评论(0) 推荐(0) 编辑
摘要:数据存储演进思路一:单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到。 数据存储演进思路二:单库多表 随着用户数量的增加,user表的数据量会越来越大,当数据量达到一定程度的时候对user表的查询会渐渐的变慢,从而影 阅读全文
posted @ 2018-03-13 21:26 BarryW 阅读(3998) 评论(0) 推荐(0) 编辑
摘要:Remoting:网络通信框架,实现了sync-over-async和request-response消息机制。 RPC:一个远程过程调用的抽象,支持负载均衡、容灾和集群功能。 Registry:服务目录框架用于服务的注册和服务事件发布和订阅。(类似第一篇文章中的点菜宝) dubbo架构 Provi 阅读全文
posted @ 2018-03-13 00:20 BarryW 阅读(2212) 评论(0) 推荐(0) 编辑
摘要:package com.algorithm;import java.util.ArrayList;import java.util.List;/** * 类功能描述: * * @author Barry * @version 1.0.0 * @auther Create by Barry * @da 阅读全文
posted @ 2018-03-13 00:16 BarryW 阅读(407) 评论(0) 推荐(0) 编辑
摘要:树的遍历分两种:1、深度优先遍历 1.1 递归算法实现 2.2 非递归算法实现(使用栈存储)2、广度优先遍历(使用队列存储) import java.util.*; /** * 类功能描述: 二叉树遍历算法Java实现 * * @version 1.0.0 * @auther Create by Barry * @date Create on 2018/3/12. * @h... 阅读全文
posted @ 2018-03-12 23:45 BarryW 阅读(333) 评论(0) 推荐(1) 编辑
摘要:1. 定义栈所有方法接口:package com.dataStructure.stack;/** * 类功能描述: * * @version 1.0.0 * @auther Create by Barry * @date Create on 2018/3/12. * @history */publi 阅读全文
posted @ 2018-03-12 23:40 BarryW 阅读(878) 评论(0) 推荐(0) 编辑
摘要:基本的IO编程过程(包括网络IO和文件IO)是,打开文件描述符(windows是handler,java是stream或channel),多路捕获(Multiplexe,即select和poll和epoll)IO可读写的状态,而后可以读写的文件描述符进行IO读写,由于IO设备速度和CPU内存比速度会 阅读全文
posted @ 2018-03-11 23:16 BarryW 阅读(914) 评论(0) 推荐(0) 编辑
摘要:完成三次握手,客户端与服务器开始传送数据 A与B建立TCP连接时:首先A向B发SYN(同步请求),然后B回复SYN+ACK(同步请求应答),最后A回复ACK确认,这样TCP的一次连接(三次握手)的过程就建立了! 一、TCP报文格式 图1 TCP报文格式 图2 TCP三次握手 图3 TCP四次挥手 图 阅读全文
posted @ 2018-03-11 22:44 BarryW 阅读(703) 评论(0) 推荐(0) 编辑
摘要:AIO系列文档(1) 图解ByteBuffer中介绍了ByteBuffer用法,下面通过介绍t-io介绍如何使用: hello world例子简介 本例子演示的是一个典型的TCP长连接应用,代码位于example/helloworld目录中。 服务端和客户端的消息协议比较简单,消息头为4个字节,用以 阅读全文
posted @ 2018-03-11 22:35 BarryW 阅读(1083) 评论(0) 推荐(0) 编辑
摘要:因何而写 用极易的方式认识一下bytebuffer bytebuffer之第一眼印象 bytebuffer之常用操作及各操作对内部变量带来的变化 创建bytebuffer: ByteBuffer.allocate(6) 写入一个字节: byteBuffer.put((byte)3) 读取一个字节: 阅读全文
posted @ 2018-03-11 22:23 BarryW 阅读(1083) 评论(0) 推荐(0) 编辑
摘要:在Dubbo+zookeeper构建高可用分布式集群(一)-单机部署中我们讲了如何单机部署。但没有将如何配置微服务。下面分别介绍单机与集群微服务如何配置注册中心。 Zookeeper单机配置:方式一、 方式二、 Zookeeper集群配置: 方式一、 方式二、 集群配置方式一,特别适用于dubbo- 阅读全文
posted @ 2018-03-11 21:36 BarryW 阅读(6882) 评论(0) 推荐(3) 编辑
摘要:不久前,我们讨论过Nginx+tomcat组成的集群,这已经是非常灵活的集群技术,但是当我们的系统遇到更大的瓶颈,全部应用的单点服务器已经不能满足我们的需求,这时,我们要考虑另外一种,我们熟悉的内容,就是分布式,而当下流行的Dubbo框架,不容我们忽视,这里,咱们一起来探讨一下这个框架的使用。 一, 阅读全文
posted @ 2018-03-11 21:33 BarryW 阅读(14823) 评论(0) 推荐(2) 编辑
摘要:抢红包的需求分析 抢红包的场景有点像秒杀,但是要比秒杀简单点。因为秒杀通常要和库存相关。而抢红包则可以允许有些红包没有被抢到,因为发红包的人不会有损失,没抢完的钱再退回给发红包的人即可。另外像小米这样的抢购也要比淘宝的要简单,也是因为像小米这样是一个公司的,如果有少量没有抢到,则下次再抢,人工修复下 阅读全文
posted @ 2018-03-10 19:23 BarryW 阅读(498) 评论(0) 推荐(0) 编辑
摘要:会话发起协议(Session Initiation Protocol,SIP)是一种信号传输协议,用于建立、修改和终止两个端点之间的会话。SIP 可用于建立 两方呼叫、多方呼叫,或者甚至 Internet 呼叫、多媒体呼叫和多媒体分发的多播会话。JSR 116:SIP Servlet API 是一个 阅读全文
posted @ 2018-03-10 18:35 BarryW 阅读(3582) 评论(0) 推荐(0) 编辑
摘要:概述 网页HTML 静态化: 其实大家都知道网页静态化,效率最高,消耗最小的就是纯静态化的 html 页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法,但是对于大量内容并且频繁更新的网站,我们无法全部手动去挨个实现,于是出现了我们常见的信息发布系统 C 阅读全文
posted @ 2018-03-10 18:01 BarryW 阅读(1139) 评论(0) 推荐(0) 编辑
摘要:先下载源码: 这里我下载的是1.8.2,因为这个是目前的最稳定版本,(虽然已经有1.9及2.0了) http://opensips.org/pub/opensips/1.8.2/src/opensips-1.8.2_src.tar.gz 编译前需要安装如下软件: apt-get install pe 阅读全文
posted @ 2018-03-10 17:45 BarryW 阅读(2645) 评论(0) 推荐(0) 编辑
摘要:移动互联网的发展为整个VOIP通信行业开拓了新的战场,一时间各类即时通信软件如雨后春筝般冒了出来,再一次创造了移动互联网的发展神话。SIP协议做为音视频通信的首选标准,应用也越来越广泛。 神奇的分割线 以下内容为干货 本文以SIP协议为基础,以实现电信级VOIP运营平台为背景,结合当前中国的网络特点 阅读全文
posted @ 2018-03-10 17:37 BarryW 阅读(4443) 评论(1) 推荐(0) 编辑
摘要:阿里 分布式 事物处理 微服务 阅读全文
posted @ 2018-03-09 13:18 BarryW 阅读(17201) 评论(1) 推荐(0) 编辑
摘要:电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因? 一、 阅读全文
posted @ 2018-03-08 23:09 BarryW 阅读(1705) 评论(0) 推荐(0) 编辑
摘要:前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名 :-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。 毕竟受文章和理论之限,本文将 阅读全文
posted @ 2018-03-08 22:28 BarryW 阅读(400) 评论(0) 推荐(0) 编辑
摘要:摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用My 阅读全文
posted @ 2018-03-08 22:20 BarryW 阅读(285) 评论(0) 推荐(0) 编辑
摘要:简介 Trie树,又称为前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。 它的主要特点如下: 根节点不包含字符,除根节点外的 阅读全文
posted @ 2018-03-08 21:47 BarryW 阅读(872) 评论(0) 推荐(0) 编辑
摘要:一、知识简介 最近在看字符串算法了,其中字典树、AC自动机和后缀树的应用是最广泛的了,下面将会重点介绍下这几个算法的应用。 字典树(Trie)可以保存一些字符串->值的对应关系。基本上,它跟 Java 的 HashMap 功能相同,都是 key-value 映射,只不过 Trie 的 key 只能是 阅读全文
posted @ 2018-03-08 21:38 BarryW 阅读(231) 评论(0) 推荐(0) 编辑
摘要:TCP与UDP区别总结:1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付3、TCP面向字节流,实际上是TCP把数据看 阅读全文
posted @ 2018-03-08 21:14 BarryW 阅读(210) 评论(0) 推荐(0) 编辑
摘要:一、前言 项目中用到的SSO,使用开源框架cas做的。简单的了解了一下cas,并学习了一下 单点登录的原理,有兴趣的同学也可以学习一下,写个demo玩一玩。 二、工程结构 我模拟了 sso的客户端和sso的服务端, sso-core中主要是一些sso需要的过滤器和工具类,缓存和session共享的一 阅读全文
posted @ 2018-03-08 21:03 BarryW 阅读(735) 评论(0) 推荐(0) 编辑
摘要:MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka。这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求。下面我列出这些MQ之间的对比数据和资料。 第一部分:RabbitMQ,ActiveMq,ZeroMq比较 1、 TPS比较 一 ZeroMq 最好, 阅读全文
posted @ 2018-03-08 20:56 BarryW 阅读(517) 评论(0) 推荐(0) 编辑
摘要:英文原始出处: Bloom filter for Scala, the fastest for JVM 本文介绍的是用Scala实现的Bloom filter。 源代码在github上。依照性能测试结果,它是JVM上的最快的Bloom filter实现。零分配(Zero-allocation)和高度 阅读全文
posted @ 2018-03-08 17:03 BarryW 阅读(2449) 评论(0) 推荐(0) 编辑
摘要:Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,B 阅读全文
posted @ 2018-03-08 16:36 BarryW 阅读(236) 评论(0) 推荐(0) 编辑
摘要:数据量的问题是很多面试笔试中经常出现的问题,比如 google、淘宝、百度、 腾讯 这样的一些涉及到海量数据的公司经常会问到。 下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直 阅读全文
posted @ 2018-03-08 16:04 BarryW 阅读(772) 评论(0) 推荐(0) 编辑
摘要:Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider 阅读全文
posted @ 2018-03-08 15:42 BarryW 阅读(21018) 评论(0) 推荐(2) 编辑
摘要:项目码云GIT地址:https://gitee.com/xshuai/dubbo/ dubbo-admin-2.5.3下载地址:http://pan.baidu.com/s/1bozCMzP zookeeper下载地址:http://www-eu.apache.org/dist/zookeeper/ 阅读全文
posted @ 2018-03-08 14:11 BarryW 阅读(494) 评论(0) 推荐(0) 编辑
摘要:延时队列,第一他是个队列,所以具有对列功能第二就是延时,这就是延时对列,功能也就是将任务放在该延时对列中,只有到了延时时刻才能从该延时对列中获取任务否则获取不到…… 应用场景比较多,比如延时1分钟发短信,延时1分钟再次执行等,下面先看看延时队列demo之后再看延时队列在项目中的使用: 简单的延时队列 阅读全文
posted @ 2018-03-07 22:47 BarryW 阅读(41837) 评论(1) 推荐(4) 编辑
摘要:在多节点的项目中,经常要涉及到某些方法加锁的控制。而这个时候,简单易用的synchronized已经不能满足多节点的部署结构。 之前在项目中,用的比较多的是数据库的更新锁:for udpate。但是这个有个缺点,就是对于本来就容易出现瓶颈的数据库,造成了更大的压力。同时,如果是锁表的语句,同时表数据 阅读全文
posted @ 2018-03-07 22:41 BarryW 阅读(539) 评论(0) 推荐(0) 编辑
摘要:项目中有些业务方法希望在有缓存的时候直接从缓存获取,不再执行方法,来提高吞吐率。而且这种情况有很多。如果为每一个方法都写一段if else的代码,导致耦合非常大,不方便后期的修改。 思来想去,决定使用自动注解+Spring AOP来实现。 直接贴代码。 自定义注解类: 这个注解方便我们标志那个方法需 阅读全文
posted @ 2018-03-07 22:40 BarryW 阅读(257) 评论(0) 推荐(0) 编辑
摘要:之前在介绍Spring Redis进行存储的时候,都是通过RedisTemplate中的defaultSerializer,即JdkSerializationRedisSerializer。通过Jdk的序列化比较简单,但是有时候线上调试的时候通过控制台查看,完全看不出来存储了什么东西。而且在空间占用 阅读全文
posted @ 2018-03-07 22:39 BarryW 阅读(435) 评论(0) 推荐(0) 编辑
摘要:摘要: 主要针对Dao层的一些数据库查询的操作,数据实时性不强,直接加入缓存。当缓存中有的时候,就使用缓存中的数据。这样的方法,最终仅仅使用一个注解实现。对于之前的hibernate二级缓存使用,比较陌生。比如是否支持Redis或者可以自己开发支持。是否支持针对部分需要加入缓存的方法配置,而不是所有 阅读全文
posted @ 2018-03-07 22:36 BarryW 阅读(550) 评论(0) 推荐(0) 编辑
摘要:对于Redis脚本使用过的同学都知道,这个主要是为了防止竞态条件而用的。因为脚本是顺序执行的。(不用担心效率问题)比如我在工作用,用来设置考试最高分。 如果还没有用过的话,先去看Redis脚本的介绍,发送脚本,缓存脚本,发送sha1执行脚本,以及基本的lua脚本的语法。 1. Redis脚本的使用场 阅读全文
posted @ 2018-03-07 22:35 BarryW 阅读(593) 评论(0) 推荐(0) 编辑
摘要:目前我所知道的Redistemplate里面,我没有使用到的就是管道。这个可以进行批量的读写。类似于jdbc的batch。还有就是Redis的集群部署。但是由于我业务里没有这种需求,所以没有使用无法给大家进行讲解。 遇到的问题有: 1.序列化器。 由于我是配置了全局唯一一个RedisTemplate 阅读全文
posted @ 2018-03-07 22:35 BarryW 阅读(137) 评论(0) 推荐(0) 编辑
摘要:上一篇说了RedisTemplate对注解事务的支持,以及提供的序列化器。 事务需要开启enableTransactionSupport,然后使用@transactional注解,里面直接通过回调的connection,就不需要自己进行multi和exec的事务开启提交了。但是通过回调去获取conn 阅读全文
posted @ 2018-03-07 22:33 BarryW 阅读(413) 评论(0) 推荐(0) 编辑
摘要:上一篇文章我们讲解了RedisTemplate的基本使用,通过RedisCallback来获得connection,然后去操作Redis。网上的教程,大部分也都是这样的操作。 这个类似于HibernateTemplate里面提供的executeWithNativeSession方法,是Java中的一 阅读全文
posted @ 2018-03-07 22:32 BarryW 阅读(361) 评论(0) 推荐(0) 编辑
摘要:关于spring redis框架的使用,网上的例子很多很多。但是在自己最近一段时间的使用中,发现这些教程都是入门教程,包括很多的使用方法,与spring redis丰富的api大相径庭,真是浪费了这么优秀的一个框架。这里,我们就对比之前对spring orm中对hibernate的使用,来理解使用s 阅读全文
posted @ 2018-03-07 22:31 BarryW 阅读(329) 评论(0) 推荐(0) 编辑
摘要:最近在开发的时候,发现之前APP客户端的一部分页面用的是webview交互,这些页面请求很多,打开一套试卷,将会产生100+的请求量,导致系统性能下降。于是考虑在最靠近客户端的Nginx服务器上做Redis缓存。综合了下网上对于php缓存的资料,经过一番改动,终于搭建成功。由于网上的是针对php的, 阅读全文
posted @ 2018-03-07 22:26 BarryW 阅读(276) 评论(0) 推荐(0) 编辑
摘要:对于ActiveMQ消息的发送,原声的api操作繁琐,而且如果不进行二次封装,打开关闭会话以及各种创建操作也是够够的了。那么,Spring提供了一个很方便的去收发消息的框架,spring jms。整合Spring后,代码不仅变得非常优雅,而且易用性和扩展性更好。 废话不多说,直接开搞。 1. mav 阅读全文
posted @ 2018-03-07 22:19 BarryW 阅读(705) 评论(0) 推荐(0) 编辑
摘要:最近的项目中用到了mq,之前自己一直在码农一样的照葫芦画瓢。最近几天研究了下,把自己所有看下来的文档和了解总结一下。 一. 认识JMS 1.概述 对于JMS,百度百科,是这样介绍的:JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件 阅读全文
posted @ 2018-03-07 22:14 BarryW 阅读(2139) 评论(0) 推荐(0) 编辑
摘要:龙果支付系统是国内首款开源的互联网支付系统,其核心目标是汇聚所有主流支付渠道,打造一款轻量、便捷、易用,且集支付、资金对账、资金清结算于一体的支付系统,满足互联网业务系统的收款和业务资金管理需求。 主要特点: 1. 具备支付系统通用的支付、对账、清算、资金账户管理、支付订单管理等功能; 2. 目前已 阅读全文
posted @ 2018-03-07 19:53 BarryW 阅读(13286) 评论(0) 推荐(0) 编辑
摘要:1. 商家开通支付 1.1 在用户信息页面添加用户,系统会自动生成对应的资金账户 1.2 添加支付产品 1.3 在支付产品列表添加支付方式,支付费率是支付系统用来计算商家手续费,单位:%,将支付产品上架 1.4 在用户支付配置页面添加支付配置信息,绑定已上架的支付产品 收款方式:如果是商家收款,则需 阅读全文
posted @ 2018-03-07 19:51 BarryW 阅读(2490) 评论(0) 推荐(0) 编辑
摘要:前一段一直在研究支付宝的扫码支付,不得不说,支付宝的文档写的真是一个烂(起码在下刚开始看的时候是mengbi的)。文档上面的示例和demo里面的示例长的完全不一样。往往文档上面的例子很简单,而demo的代码写的很复杂,所以一开始就不知道该采用哪个代码,后来仔细看了一下demo的那些包里面的代码,发现 阅读全文
posted @ 2018-03-07 17:27 BarryW 阅读(2154) 评论(0) 推荐(0) 编辑
摘要:一般来说,银行会提供两种支付途径:无跳转的快捷支付接口和带跳转的网银接口。前者在绑卡,支付的时候,不需要跳到银行页面上去处理,后者则需要在银行的网银页面上完成。显然前者对用户来说体验要好多了,用户流程不会被打断。快捷支付要求支付系统在本地保存用户的支付信息,如卡号,登记手机。系统要确保这些信息不被泄 阅读全文
posted @ 2018-03-07 15:17 BarryW 阅读(541) 评论(0) 推荐(0) 编辑
摘要:支付网关前置 支付网关前置是对接业务系统,为其提供支付服务的模块。它是所有支付服务接口的集成前置,将不同支付渠道提供的接口通过统一的方式呈现给业务方。这样接入方就只需要对接支付网关,增加和调整支付渠道对业务方是透明的。 支付网关前置的设计对整个支付系统的稳定性、功能、性能以及其他非功能性需求有着直接 阅读全文
posted @ 2018-03-07 15:16 BarryW 阅读(993) 评论(0) 推荐(0) 编辑
摘要:导读: 在支付系统中,支付网关和支付渠道的对接是最核心的功能。其中支付网关是对外提供服务的接口,所有需要渠道支持的资金操作都需要通过网关分发到对应的渠道模块上。一旦定型,后续就很少,也很难调整。而支付渠道模块是接收网关的请求... 在支付系统中,支付网关和支付渠道的对接是最核心的功能。其中支付网关是 阅读全文
posted @ 2018-03-07 15:15 BarryW 阅读(1119) 评论(0) 推荐(0) 编辑
摘要:思路 OSGi每个模块都有自己独立的classpath。如何实现这一点呢?是因为OSGi采取了不同的类加载机制: OSGi为每个bundle提供一个类加载器,该加载器能够看到bundle Jar文件内部的类和资源; 为了让bundle能互相协作,可以基于依赖关系,从一个bundle类加载器委托到另一 阅读全文
posted @ 2018-03-07 14:34 BarryW 阅读(1061) 评论(0) 推荐(0) 编辑
摘要:定义 OSGi(Open Service Gateway Initiative)技术是面向Java的动态模型系统。 这个框架实现了一个优雅、完整和动态地组价模型。应用程序(称为bundle)无序重新引导可以被远程安装、启动、升级和卸载。 OSGi服务平台提供在多种网络设备上无需重启的动态改变构造的功 阅读全文
posted @ 2018-03-07 14:29 BarryW 阅读(324) 评论(0) 推荐(0) 编辑
摘要:osgi最明显的缺陷 bundle尽管可以为隔离的服务建立独立生命周期管理的热部署方式,以及明确的服务导出和导入依赖能力,但是其最终基于jvm,无法对bundle对应的服务实现计算资源的隔离,一个服务的故障依然会导致整个jvm crush,这使得在一个运行时的osgi上部署模块级服务只获得了模块部署 阅读全文
posted @ 2018-03-07 14:25 BarryW 阅读(1517) 评论(1) 推荐(1) 编辑
摘要:框架比较 TDDL Amoeba Cobar MyCat 点评 TDDL不同于其它几款产品,并非独立的中间件,只能算作中间层,是以Jar包方式提供给应用调用。属于JDBC Shard的思想,网上也有很多其它类似产品。 另外,网上有关于TDDL的图,如http://www.tuicool.com/ar 阅读全文
posted @ 2018-03-07 14:12 BarryW 阅读(516) 评论(0) 推荐(0) 编辑
摘要:第一部分: Servlet不是线程安全的。 要解释Servlet为什么不是线程安全的,需要了解Servlet容器(即Tomcat)使如何响应HTTP请求的。 当Tomcat接收到Client的HTTP请求时,Tomcat从线程池中取出一个线程,之后找到该请求对应的Servlet对象并进行初始化,之后 阅读全文
posted @ 2018-03-07 11:45 BarryW 阅读(670) 评论(0) 推荐(0) 编辑
摘要:在分布式开发中,锁是线程控制的重要途径。Java为此也提供了2种锁机制,synchronized和lock。做为Java爱好者,自然少不了对比一下这2种机制,也能从中学到些分布式开发需要注意的地方。 我们先从最简单的入手,逐步分析这2种的区别。 一、synchronized和lock的用法区别 sy 阅读全文
posted @ 2018-03-06 22:39 BarryW 阅读(8538) 评论(0) 推荐(1) 编辑
摘要:首先一个思维导图来看下Tomcat的类加载机制和JVM类加载机制的过程 类加载 在JVM中并不是一次性把所有的文件都加载到,而是一步一步的,按照需要来加载。 比如JVM启动时,会通过不同的类加载器加载不同的类。当用户在自己的代码中,需要某些额外的类时,再通过加载机制加载到JVM中,并且存放一段时间, 阅读全文
posted @ 2018-03-06 16:55 BarryW 阅读(811) 评论(0) 推荐(0) 编辑
摘要:Netty的主要组成模块: Channels Callbacks Futures Events 和 handlers 这些模块代表了不同类型的概念:资源,逻辑和通知。你的应用将会利用这些模块来获取网络和网络上的数据。 对每个组件,我们会给出一个基本的定义,并且在合适的情况下,用一个简单的代码实例说明 阅读全文
posted @ 2018-03-06 16:44 BarryW 阅读(203) 评论(0) 推荐(0) 编辑
摘要:了解人了解工作可以在公司,但了解人一定要在工作场合外,所以我要求每周五早上周会结束后,中午我们一起出去找好吃的,要求是尽量不重复。刚开始时我掏钱,后来是大家自愿AA,新人等转正之后才参与平摊,之前都是老人之间分摊。饭桌上才能什么都聊,爱好、家庭、业余生活,原本不熟悉的人,很快就拉近距离了。 了解事交 阅读全文
posted @ 2018-03-06 14:56 BarryW 阅读(291) 评论(0) 推荐(0) 编辑
摘要:hikari druid c3p0 dbcp jdbc 阅读全文
posted @ 2018-03-04 22:32 BarryW 阅读(2127) 评论(0) 推荐(0) 编辑
摘要:我觉得事务的管理不应该属于Dubbo框架, Dubbo只需实现可被事务管理即可, 像JDBC和JMS都是可被事务管理的分布式资源, Dubbo只要实现相同的可被事务管理的行为,比如可以回滚, 其它事务的调度,都应该由专门的事务管理器实现。 在Java中,分布式事务主要的规范是JTA/XA, 其中:J 阅读全文
posted @ 2018-03-04 22:26 BarryW 阅读(18626) 评论(0) 推荐(0) 编辑
摘要:分布式系统架构中,分布式事务问题是一个绕不过去的挑战。而微服务架构的流行,让分布式事问题日益突出! 下面我们以电商购物支付流程中,在各大参与者系统中可能会遇到分布式事务问题的场景进行详细的分析! 如上图所示,假设三大参与平台(电商平台、支付平台、银行)的系统都做了分布式系统架构拆分,按上数中的流程步 阅读全文
posted @ 2018-03-04 22:22 BarryW 阅读(13922) 评论(0) 推荐(0) 编辑
摘要:问题: 有一个请求去调用了服务A,A中需要向数据库写入数据,其中A里面又调用了服务B,B中也向服务器写入了一些数据,当A成功调用B之后,B正常执行了,A的操作发生了异常,A操作的数据可以正常回滚,那么问题是B服务的事务如何与A保持一致呢? 解决方案: 服务A与服务B属于不同的应用,通过dubbo远程 阅读全文
posted @ 2018-03-04 22:19 BarryW 阅读(16133) 评论(0) 推荐(0) 编辑
摘要:海量积分数据实时排名处理方式介绍一中介绍了几种海量数据实时排名的方法 本文章将介绍使用Redis sorted-set及自己开发的多线程算法实现 方法一:使用Redis sorted-set /*** 多线程-根据Redis缓存添加往排行榜添加元素,并获取排行前10的元素* @param rankS 阅读全文
posted @ 2018-03-02 18:30 BarryW 阅读(1061) 评论(0) 推荐(0) 编辑
摘要:问题描述: 十个猴子围成一圈选大王,依次1-3 循环报数,报到3 的猴子被淘汰,直到最后一只猴子成为大王。问,哪只猴子最后能成为大王? 方法一:Java链表 public class TestAll { static Scanner scanner = new Scanner(System.in); 阅读全文
posted @ 2018-03-02 17:59 BarryW 阅读(2976) 评论(0) 推荐(0) 编辑
摘要:首先考虑如下因素: 1.数据的容量:1-3年内会大概多少条数据,每条数据大概多少字节; 2.数据项:是否有大字段,那些字段的值是否经常被更新; 3.数据查询SQL条件:哪些数据项的列名称经常出现在WHERE、GROUP BY、ORDER BY子句中等; 4.数据更新类SQL条件:有多少列经常出现UP 阅读全文
posted @ 2018-03-01 16:52 BarryW 阅读(1543) 评论(0) 推荐(1) 编辑
摘要:规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节。另外MyISAM数据和索引是分开,而InnoDB的数据存储是按聚簇(cluster)索引有 阅读全文
posted @ 2018-03-01 16:42 BarryW 阅读(356) 评论(0) 推荐(0) 编辑
摘要:一、MySQL的存储引擎 完整的引擎说明还是看官方文档:http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html 这里介绍一些主要的引擎 1、InnoDB存储引擎 InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(sh 阅读全文
posted @ 2018-03-01 16:00 BarryW 阅读(314) 评论(0) 推荐(0) 编辑
摘要:前面Zabbix使用的数据库是mysql,数据库备份不用多说,必须滴,由于使用的是innodb引擎,既然做,那就使用第三方强大的Xtrabackup工具来热备吧,Xtrabackup的说明,参见https://my.oschina.net/u/1171265/blog/200437 数据库备份: 数 阅读全文
posted @ 2018-03-01 15:51 BarryW 阅读(388) 评论(0) 推荐(0) 编辑
摘要:MySQL的备份和还原 备份:副本 RAID1,RAID10:保证硬件损坏而不会业务中止; DROP TABLE mydb.tb1; 备份类型: 热备份、温备份和冷备份(根据服务器是否在线) 热备份:读、写不受影响; 温备份:仅可以执行读操作; 冷备份:离线备份;读、写操作均中止; 物理备份和逻辑备 阅读全文
posted @ 2018-03-01 15:40 BarryW 阅读(233) 评论(0) 推荐(0) 编辑
摘要:方法/步骤 使用navicat工具连接mysql数据库,这里以navicat for Mysql工具为例。如果数据库在本机,那么连接ip处写localhost即可,如果数据库在其他机器,那需要写具体的ip地址。 设置mysql备份文件的存储路径。新建连接页面,设置连接信息的右侧有个高级按钮,点击,进 阅读全文
posted @ 2018-03-01 15:37 BarryW 阅读(768) 评论(0) 推荐(0) 编辑
摘要:有几种方式: 1 mysqldump, 这种方式不仅适用于InnoDB,还适用于其它类型的存储引擎,如MyISAM。备份的时候将数据库备份成SQL(包含drop,create,insert等语句),恢复的时候直接导入即可。属于逻辑备份。 2 copy file, 我们知道InnoDB底层存储的时候会 阅读全文
posted @ 2018-03-01 15:27 BarryW 阅读(2131) 评论(0) 推荐(0) 编辑
摘要:序章 Atlas是360团队弄出来的一套基于MySQL-Proxy基础之上的代理,修改了MySQL-Proxy的一些BUG,并且优化了很多东西。而且安装方便。配置的注释写的蛮详细的,都是中文。英文不好的同学有福了。 Atlas官方链接: https://github.com/Qihoo360/Atl 阅读全文
posted @ 2018-03-01 15:14 BarryW 阅读(345) 评论(0) 推荐(0) 编辑
摘要:在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 (2)一个线程持有锁会导致其它所有需要此锁的线程挂起。 (3)如果一个优先级高的线程等待一个优先级低的线 阅读全文
posted @ 2018-03-01 11:06 BarryW 阅读(20972) 评论(0) 推荐(5) 编辑
摘要:一、可运行Jar配置 1. 设置JDK 2. 设置源码 #!/bin/bash export BUILD_ID=xxxxxx_content_170 myPath="/data/deploy/iol8-content-service" core_name="content_service_core" 阅读全文
posted @ 2018-03-01 10:44 BarryW 阅读(244) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示