`
maosheng
  • 浏览: 571258 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
问题分析 一般MQ中间件为了提高系统的吞吐量会把消息保存在内存中,如果不作其他处理,MQ服务器一旦宕机,消息将全部丢失。这个是业务不允许的,造成很大的影响。我知道一个方法就是把消息持久化,RabbitMQ中发消息的时 ...
先看下Ribbon的配置和Hystrix的超时配置: ribbon:   MaxAutoRetries: 1 #最大重试次数,不包括首次调用,当Eureka中可以找到服务,但是服务连不上时将会重试   MaxAutoRetriesNextServer: 1 #切换实例的重试次数,不包括首次调用   OkToRetryOnAllOperations: true #是否对所有的操作请求都进行重试,如果是get则可以,如果是post,put等操作没有实现幂等的情况下是很危险的   ConnectTimeout: 250 #请求连接的超时时间   ReadTimeout: 1000 #请求处理的超时时间 ...
异步消息的规划: 1)消息需要包含哪些数据(业务数据、操作数据等) 2)数据的规划和特点(条数、大小等) 3)消息的类型和包含的数据格式 4)消息的传递域是点对点的还是发布订阅的 5)消息的保存模式:持久模式和 ...
大数据量 处理的基本思路: 一:分 1)用和不用分开,常用和不常用分开 2)对数据库存放的数据:分区,分库,分表 3)数据库集群读写分离 4)对文件存放的数据:拆文件 5)处理数据分批处理 原则:尽量使每次操作的数据的 ...

Java Web技术概览

    博客分类:
  • Web
B/S网络架构概述: B/S网络架构从前端到后端都得到了简化,都基于统一的应用层协议HTTP来交互数据,与大多数传统的C/S互联网应用程序采用的长连接的交互模式不同,HTTP采用无状态的短连接的通信方式,通常情况下,一次请求就完成了一次数据交互,通常也对应一个业务逻辑,然后这次通信连接就断开了。采用这种方式是为了能够同时服务更多的用户,因为当前互联网应用每天都会处理上亿的用户请求,不可能每个用户访问一次后就一直保持这个连接。 当一个用户在浏览器里输入www.taobao.com这个URL时,将会发生很多操作。首先它会请求DNS把这个域名解析成对应的IP地址,然后根据这个IP地址在互联网上找到 ...

DDD 设计

概述: DDD将一个软件系统的核心业务功能集中在一个核心域里面,其中包含了实体、值对象、领域服务、资源库和聚合等概念。在此基础上,DDD提出了一套完整的支撑这样的核心领域的基础设施。此时,DDD已经不再是“面向对 ...
传统的服务器设计是:一连接一处理线程,也就是我们常说的 BIO 编程。BIO 在读取和发送时是阻塞的,在请求的整个生命周期内,不管有没有数据可读或待发送,都绑定和占用了这个处理线程。 BIO 多线程并发模式,一个连接一个线程的优点是:   一定程度上极大地提高了服务器的吞吐量,因为之前的请求在read阻塞以后,不会影响到后续的请求,因为他们在不同的线程中。这也是为什么通常会讲“一个线程只能对应一个socket”的原因。另外有个问题,如果一个线程中对应多个socket连接不行吗?语法上确实可以,但是实际上没有用,每一个socket都是阻塞的,所以在一个线程里只能处理一个socket,就算acce ...
Stack 介绍: Stack是栈。它的特性是:先进后出(FILO, First In Last Out)。 java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的,而非链表。当然,我们也可以将LinkedList当 ...
Vector介绍: Vector 是矢量队列,它是JDK1.0版本添加的类。继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口。 Vector 继承了AbstractList,实现了List;所以,它是一个队列,支持相关的添加、删除、修改、遍历等功能。 Vector 实现了RandmoAccess接口,即提供了随机访问功能。RandmoAccess是java中用来被List实现,为List提供快速访问功能的。在Vector中,我们即可以通过元素的序号快速获取元素对象;这就是快速随机访问。 Vector 实现了Cloneable接口,即实现c ...

JDK 分析工具

    博客分类:
  • Java
常用分析工具: jps:显示指定系统中所有的HotSpot虚拟机进程       jps命令主要用来输出JVM中运行的进程状态信息,包括进程ID,进程启动的路径等等 jstat:收集HotSpot虚拟机各方面的运行数据       jstat命令主要是对java应用程序的资源和性能进行实时的命令行监控,包括了对heap size和垃圾回收状况的监控 jinfo:显示虚拟机配置信息       jinfo命令显示JVM的参数,包括显示设置的和系统默认的。比如所用的垃圾回收器,堆的最大值等 jmap:生成虚拟机的内存转储快照,制作堆dump文件       jmap命令可以获得运行中的jvm ...
从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。这种方案下,我们可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力即可。也就是说如果数据库写成功,缓存更新失败,那么只要到达过期时间,则后面的读请求自然会从数据库中读取新值然后回填缓存。因此,接下来讨论的思路不依赖于给缓存设置过期时间这个方案。 在这里,我们讨论三种更新策略: 先更新数据库,再更新缓存 先删除缓存,再更新数据库 先更新数据库,再删除缓存 1、先更新数据库,再更新缓存 这套方案,大家是普遍反对的。为什么呢?有如下两点原因。 原因一(线程并行角度) 同时有请求A和请求B进行 ...
概述: 1、深度优先遍历(Depth-First-Search)常用的数据结构为栈,广度优先遍历(Breadth-First-Search)常用的数据结构为队列 2、深度优先遍历的思想是从上至下,对每一个分支一直往下一层遍历直到这个分支结束,然后返回上一层,对上一层的右子树这个分支继续深搜,直到一整棵树完全遍历,因此深搜的步骤符合栈后进先出的特点 广度优先遍历的思想是从左至右,对树的每一层所有结点依次遍历,当一层的结点遍历完全后,对下一层开始遍历,而下一层结点又恰好是上一层的子结点。因此广搜的步骤符合队列先进先出的思想 3、深度优先遍历: 对每一个可能的分支路径深入到不能再深入为止, ...

jdk 1.8 新特性

    博客分类:
  • Java
  1、default关键字   在java里面,我们通常都是认为接口里面是只能有抽象方法,不能有任何方法的实现的,那么在jdk1.8里面打破了这个规定,引入了新的关键字default,通过使用default修饰方法,可以让我们在接口里面定义具 ...

Zookeeper 总结

zookeeper是一个开源的分面式协调服务;换句话讲,zk是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于它实现数据的发布/订阅、负载均衡、名称服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式 ...

Java IO 架构

    博客分类:
  • Java
主要两类:     磁盘I/O     网络I/O 基于字节操作的I/O接口:InputStream和OutputStream 基于字符操作的I/O接口:Writer和Reader 基于磁盘操作的I/O接口:File 基于网络操作的I/O接口:Socket 字符解码相关类结构: 字符编码相关类结构: Java序列化就是将一个对象转化成一串二进制表示的字节数组,通过保存或转移这些字节数据来达到持久化的目的。 需要序列化,对象必须继承java.io.Serializable接口。 Socket通信示例: Java NIO 相关 ...
Global site tag (gtag.js) - Google Analytics