04 2016 档案
摘要:除了加锁外,其实还有一种方式可以防止并发修改异常,这就是将读写分离技术(不是数据库上的)。 先回顾一下一个常识: 1、JAVA中“=”操作只是将引用和某个对象关联,假如同时有一个线程将引用指向另外一个对象,一个线程获取这个引用指向的对象,那么他们之间不会发生ConcurrentModificatio
阅读全文
摘要:最近看完了杨传辉老师写的《大规模分布式存储系统》一书,发现里面很多知识点和之前看的《大型网站系统与Java中间件》有很多相通之处,也渐渐加 深了我对分布式技术的兴趣。但无奈分布式涵盖范围太广了,分布式存储、分布式计算、CAP理论、Paxos算法、什么GFS、Hadoop、 Dynamo、BigTab
阅读全文
摘要:引言:以前只是看过介绍volatile的文章,对其的理解也只是停留在理论的层面上,由于最近在项目当中用到了关于并发方面的技术,所以下定决心深入研究一下java并发方面的知识。网上关于volatile的文章非常多,但是并没有讲解非常详细的文章。(哪位要是有好的资料麻烦共享一份给我!)多数的都是一些理论
阅读全文
摘要:JVM采用分代的垃圾回收策略:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 从垃圾回收角度看内存分配 从JVM垃圾回收的角度来看,Java内存分为三个区:新生代(Young Generation)、老年代(Old Generation)和持久代(
阅读全文
摘要:摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持 也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是 平常使用
阅读全文
摘要:Java 并发工具包 java.util.concurrent 用户指南 标签: 多线程并发异步java.util.concurrentJava多线程 2015-03-03 09:40 16042人阅读 评论(5) 收藏 举报 标签: 多线程并发异步java.util.concurrentJava多
阅读全文
摘要:Golden Gate(简称OGG)提供异构环境下交易数据的实时捕捉、变换、投递。 OGG支持的异构环境有: OGG的特性: 对生产系统影响小:实时读取交易日志,以低资源占用实现大交易量数据实时复制 以交易为单位复制,保证交易一致性:只同步已提交的数据 高性能 智能的交易重组和操作合并 使用数据库本
阅读全文
摘要:HashTable和HashMap区别 第一,继承不同。 第二 Hashtable 中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。在多线程并发的环境下,可以直接使用Hashtable,但是要使用HashMap的话就要自己增加同步处理了。 第三 Hashtable中,key和val
阅读全文
摘要:void preOrder2(BinTree *root) //非递归前序遍历 { stack<BinTree*> s; BinTree *p=root; while(p!=NULL||!s.empty()) { while(p!=NULL) { cout<<p->data<<" "; s.push
阅读全文
摘要:关于JVM 的垃圾回收机制,我们一般都没过多深入,因为JAVA 和 C++ 的一个很大区别就是,JAVA 帮我们做了垃圾回收,而不用像C++ 那么样手动进行回收,当然任何自动的东西都存在一定弊端,比如机器人,即使自动程度很高,但是在处理某些感情问题上,肯定处理上就会有遗漏,开个玩笑啦, 下面我们先来
阅读全文
摘要:目录[-] 一:Solr 二:Solandra 三:SolrCloud 四:Solr+Katta 五(终篇):Elasticsearch 一:Solr 二:Solandra 三:SolrCloud 四:Solr+Katta 五(终篇):Elasticsearch 一:Solr 我第一个了解到的分布式
阅读全文
摘要:在大型互联网应用中,随着用户数的增加,为了提高应用的性能,我们经常需要对数据库进行分库分表操作。在单表时代,我们可以完全依赖于数据库的自增 ID来唯一标识一个用户或数据对象。但是当我们对数据库进行了分库分表后,就不能依赖于每个表的自增ID来全局唯一标识这些数据了。因此,我们需要提供一 个全局唯一的I
阅读全文
摘要:什么是机器码 机器码 机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据。 通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。 用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代
阅读全文
摘要:Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程。 如下图,Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode) 2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java
阅读全文
摘要:在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显。主要是因为在Job完成后的所得到的 Counters是整个Job的总和,优化是基于这些Counters得出的平均值,而由于数据倾斜的原因造成map处理数据量的差异过大,使得这些平均 值能代表的价值降低。Hiv
阅读全文
摘要:1.图解MapReduceMapReduce整体流程图 并行读取文本中的内容,然后进行MapReduce操作 Map过程:并行读取三行,对读取的单词进行map操作,每个词都以<key,value>形式生成 reduce操作是对map的结果进行排序,合并,最后得出词频。 2.简单过程: Input:
阅读全文
摘要:当你使用synchronized关键字的时候,是通过互斥器来保障线程安全以及对共享资源的同步访问。线程间也经常需要更进一步的协调执行,来完成复杂的并发任务,比如wait/notify模式就是一种在多线程环境下的协调执行机制。 通过API来获取和释放锁(使用互斥器)或者调用wait/notify等方法
阅读全文
摘要:tomcat的运行模式有3种.修改他们的运行模式.3种模式的运行是否成功,可以看他的启动控制台,或者启动日志.或者登录他们的默认页面http://localhost:8080/查看其中的服务器状态。 1)bio 默认的模式,性能非常低下,没有经过任何优化处理和支持. 2)nio 利用java的异步i
阅读全文
摘要:此文是rocketmq作者vintage.wang所写,对于每项对比,后面都增加了我的观点,有不对的地方,请各位指出。 淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011年初,Li
阅读全文
摘要:前言 今天是个开心的日子,又是周末,可以轻轻松松的写写文章了。去年,我写了ENode 1.0版本,那时我也写了一个分析系列。经过了大半年的时间,我对第一个版本做了很多架构上的改进,最重要的就是让ENode实现了分布式,通过新增一个分布式消息队列EQueue来 实现。之所以要设计一个分布式的消息队列是
阅读全文
摘要:今天在统计页面上发现有个节点丢失了,经过仔细分析后,发现同一个节点上的二个应用(同时监控zk)其中一个丢失了一个event,检查zk cluster没有发现异常。。。 通过网络搜寻,出现miss event的情况说的都是监听前已经有node,删除后才register,所以这属于正常现象。 排除网络问
阅读全文
摘要:上一篇介绍了基于ZK的ActiveMQ HA方案,虽然理解起来比较容易,但是有二个不足: 1) 占用的节点数过多,1个zk集群至少3个节点,1个activemq集群也至少得3个节点,但其实正常运行时,只有一个master节点在对外响应,换句话说,花6个节点的成本只为了保证1个activemq mas
阅读全文
摘要:分布式任务调度是非常常见的一种应用场景,一般对可用性和性能要求不高的任务,采用单点即可,例如linux的crontab,spring的quarz,但是如果要求部署多个节点,达到高可用的效果,上面的方案就不适用了。 实际上任务调度的实现有两种情况,第一种是通过mq来实现,mq做好了数据切分,负载均衡的
阅读全文
摘要:java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter at org.apache.catalina.cor
阅读全文
摘要:现象:小于1.3.0版本如1.2.6的spring boot, 当指定profile进行参数打入的时候,发现没有问题,但是比如改用1.3.0,1.3.1及其以上版本的时候,发现参数打不进去,经过比对spring-boot-starter-parent的1.2系列与1.3系列的pom.xml,发现在1
阅读全文
摘要:linux下比较好用的可视化文件比对工具
阅读全文