04 2018 档案
摘要:Spring-Bean配置-使用外部属性文件 所以可以通过@value注解获取配置文件的key-value,生成一个配置文件bean。用以在代码中直接使用bean的方式。 •在配置文件里配置Bean时,有时需要在Bean的配置里混入系统部署的细节信息(例如:文件路径,数据源配置信息等).而这些部署细
阅读全文
摘要:1.spring 事务这个东西,是轮子,每个service,都需要用到。所以干脆就做在框架层实现。 2.spring是怎么给你的service方法加事务的呢?jdk动态代理,会针对每个service类里的方法进行before(),atfer()开启和关闭事务。 3.所以@autowired注入进来的
阅读全文
摘要:Spring事务传播机制与隔离级别 博客分类: Spring Spring事务传播机制与隔离级别 Spring 转自:http://blog.csdn.net/edward0830ly/article/details/7569954 (写的不错) 事务是逻辑处理原子性的保证手段,通过使用事务控制,可
阅读全文
摘要://重建数据库 101, create database testdatabase;use database testdatabase; 102, create table tt1(id int, name varchar(20),age int,sex boolean); 103, show ta
阅读全文
摘要:项目中需要用到很多配置文件,不同环境的配置文件是不一样的,因此如果只用一个配置文件,势必会造成配置文件混乱,这里提供一种利用环境变量控制配置文件加载的方法,如下: 一、配置环境变量 如果是windows环境,只要右击“计算机”->“属性”-"高级"->"高级系统设置"->“环境变量”,增加环境变量即
阅读全文
摘要:水平分库分表的关键问题及解决思路 分片技术的由来 关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。 单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服
阅读全文
摘要:TCP半连接和syn攻击 转载 2014年04月06日 21:36:10 4243 转载 2014年04月06日 21:36:10 4243 摘自:http://blog.sina.com.cn/s/blog_54b5ea250100g2r8.html SYN攻击属于DOS攻击的一种,它利用TCP协
阅读全文
摘要:所有的主机平台都有抵御DoS的设置,总结一下,基本的有几种: 关闭不必要的服务 限制同时打开的Syn半连接数目 缩短Syn半连接的time out 时间 及时更新系统补丁 网络设置 网络设置 网络设备可以从防火墙与路由器上考虑。这两个设备是到外界的接口设备,在进行防DDoS设置的同时,要注意一下这是
阅读全文
摘要:本文转自https://blog.csdn.net/php_younger/article/details/59673879 mysql 主从复制原理 本文转自https://blog.csdn.net/php_younger/article/details/59673879 mysql 主从复制原
阅读全文
摘要:共享锁 共享锁指的就是对于多个不同的事务,对同一个资源共享同一个锁。相当于对于同一把门,它拥有多个钥匙一样。就像这样,你家有一个大门,大门的钥匙有好几把,你有一把,你女朋友有一把,你们都可能通过这把钥匙进入你们家,进去啪啪啪啥的,一下理解了哈,没错,这个就是所谓的共享锁。 刚刚说了,对于悲观锁,一般
阅读全文
摘要:共享锁【S锁】又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。 排他锁【X锁】又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,
阅读全文
摘要:1、基本思想 堆是一种特殊的树形数据结构,其每个节点都有一个值,通常提到的堆都是指一颗完全二叉树,根结点的值小于(或大于)两个子节点的值,同时,根节点的两个子树也分别是一个堆。 堆排序就是利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就
阅读全文
摘要:则堆实质上是满足如下性质的完全二叉树:注意:①堆中任一子树亦是堆。②以上讨论的堆实际上是二叉堆(Binary Heap),类似地可定义k叉堆。 注意:①堆中任一子树亦是堆。②以上讨论的堆实际上是二叉堆(Binary Heap),类似地可定义k叉堆。 注意:①堆中任一子树亦是堆。②以上讨论的堆实际上是
阅读全文
摘要:使用Merge INTO优化SQL,性能提升巨大 分类: Oracle 2017-04-13 10:55:07 分类: Oracle 2017-04-13 10:55:07 说说背景:开发有个需求,需要对新加的一个字段根据特定的业务逻辑更新数据。TPS_TRADE表数据有4000多万,TPS_EXT
阅读全文
摘要:本文转自https://www.cnblogs.com/onetwo/p/6420062.html 1.ZooKeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交
阅读全文
摘要:Broker 在收到Producer发送过来的消息后,会存入CommitLog对应的内存映射区中,见CommitLog类的putMessage方法。该方法执行OK后,会判断存储配置中刷盘模式:同步or异步?继而进行对应的操作。 ServiceThread –> FlushCommitLogServi
阅读全文
摘要:RocketMQ 的 Broker 有三种集群部署方式: 1. 单台 Master 部署; 2. 多台 Master部署; 3. 多 Master 多 Slave 部署;采用第 3 种部署方式时, Master 和 Slave 可以采用同步复制和异步复制两种方式。 刷盘策略 在commitLog.p
阅读全文
摘要:NameServer、Broker、Producer、Consumer之间如何进行通信,如何工作: NameServer和Broker: NameServer主要做两件事情,第一就是管理Broker,接受来自Broker集群发送的注册, 以及提供心跳机制来检查我们的Broker是否还存活。第二件事情
阅读全文
摘要:https://blog.csdn.net/oMaverick1/article/details/51331004
阅读全文
摘要:2) broadcast,这是启动完毕之后,集群中的服务器开始接收客户端的连接一起工作的过程,如果客户端有修改数据的改动,那么一定会由leader广播给follower,所以称为”broadcast”.
阅读全文
摘要:在开发中,有时候需要限制访问的权限,白名单就是一种方法。对于Java Web应用,Spring的拦截器可以拦截Web接口的调用;而对于dubbo接口,Spring的拦截器就不管用了。 dubbo提供了Filter扩展,可以通过自定义Filter来实现这个功能。本文通过一个事例来演示如何实现dubbo
阅读全文
摘要:Major GC 是清理老年代。 Full GC 是清理整个堆空间—包括年轻代和老年代。
阅读全文
摘要:Java实现归并排序 本文转自https://www.cnblogs.com/of-fanruice/p/7678801.html 归并排序 (merge sort) 是一类与插入排序、交换排序、选择排序不同的另一种排序方法。归并的含义是将两个或两个以上的有序表合并成一个新的有序表。归并排序有多路归
阅读全文
摘要:选择排序是外面循环的array[i]与内循环的array[j]比较。冒泡排序是内循环的相邻两个值做比较修改
阅读全文
摘要:在时间最宝贵的时候去过多享受,不是个明智的选择。年轻就该做打好根基。磨刀不误砍柴功。后面有我享受的,前半段辛苦一点很正常。
阅读全文
摘要:默认HTTP的端口号为80,HTTPS的端口号为443。 HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。
阅读全文
摘要:聊聊JVM的年轻代 本文转自http://ifeve.com/jvm-yong-generation/ 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时
阅读全文
摘要:堆与栈分开设计是为什么呢? 栈存储了处理逻辑、堆存储了具体的数据,这样隔离设计更为清晰 堆与栈分离,使得堆可以被多个栈共享。 栈保存了上下文的信息,因此只能向上增长;而堆是动态分配 栈的大小可以通过-XSs设置,如果不足的话,会引起java.lang.StackOverflowError的异常 栈区
阅读全文
摘要:本文转自https://blog.csdn.net/rongxiang111/article/details/53008829 一、<url-pattern>/</url-pattern> 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url< url-pattern
阅读全文
摘要:十大经典排序算法(动图演示) 本文转自https://www.cnblogs.com/onepixel/articles/7674659.html 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nl
阅读全文
摘要:稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。 空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函
阅读全文
摘要:条件概率 首先,理解这两个公式的前提是理解条件概率,因此先复习条件概率。 P(A|B)=P(AB)P(B)P(A|B)=P(AB)P(B) 理解这个可以从两个角度来看。 第一个角度:在B发生的基础上,A发生的概率。那么B发生这件事已经是个基础的条件了,现在进入B已经发生的世界,看看A发生的概率是多少
阅读全文
摘要:以前写SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,感觉好麻烦,其实重写WebMvcConfigurerAdapter中的addViewControllers方法即可达到效果了
阅读全文
摘要:怎么保证系统可靠性? 1.断路器 断路器实现原理:心跳机制监听应用接口,如果应用挂掉的话,断开负载均衡到应用的路由
阅读全文
摘要:1.zookeeper是怎么写数据的?因为是master写再同步广播到follow节点,如果master写完,following在写的过程中出现失败怎么办? :zookeeper支持原子的写入操作,要么全部写入成功,要么全部写入失败。 zookeeper支持的写操作是原子的。 zookeeper支持
阅读全文
摘要:1,脏读 脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据。 当一个事务正在多次修改某个数据,而在这个事务中这多次的修改都还未提交,这时一个并发的事务来访问该数据,就会造成两个事务得到的数据不一致。例如:用户A向用户B转账100元,对应SQL命令如下 当只执行第一条SQL时,A通知B查看
阅读全文
摘要:Minor GC ,Full GC 触发条件 Minor GC触发条件:当Eden区满时,触发Minor GC。 Full GC触发条件: (1)调用System.gc时,系统建议执行Full GC,但是不必然执行 (2)老年代空间不足 (3)方法去空间不足 (4)通过Minor GC后进入老年代的
阅读全文
摘要:垃圾回收算法 标记清除 标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。在标记阶段首先通过根节点,标记所有从根节点开始的对象,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象。标记清除算法带来的一个问题是会存在大量的空间碎片,因为回收后的空间是不连续的,这样给
阅读全文
摘要:B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即
阅读全文
摘要:结构上 B树中关键字集合分布在整棵树中,叶节点中不包含任何关键字信息,而B+树关键字集合分布在叶子结点中,非叶节点只是叶子结点中关键字的索引; B树中任何一个关键字只出现在一个结点中,而B+树中的关键字必须出现在叶节点中,也可能在非叶结点中重复出现; 性能上(也即为什么说B+树比B树更适合实际应用中
阅读全文
摘要:设想你有一个20GB的文件,每行一个字符串,说明如何对这个文件进行排序。 内存肯定没有20GB大,所以不可能采用传统排序法。但是可以将文件分成许多块,每块xMB,针对每个快各自进行排序,存回文件系统。 然后将这些块逐一合并,最终得到全部排好序的文件。 外排序的一个例子是外归并排序(External
阅读全文
摘要:快速排序算法 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 算法原理 编
阅读全文
摘要:TCP的传输连接分为3个阶段:连接建立(三次握手)、数据传送和连接释放(四次挥手)。TCP传输连接的管理就是使传输连接的建立和释放都能正常地进行。 可以把TCP连接时的三次握手换成两次握手吗?(假设客户端主动,服务器端被动) 防止重复连接,防止服务端的重复连接。经过三次握手,客户端和服务器都有应有答
阅读全文
摘要:TCP通信粘包问题分析和解决(全) 在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小、数据
阅读全文
摘要:HashMap和双向链表合二为一即是LinkedHashMap。所谓LinkedHashMap,其落脚点在HashMap,因此更准确地说,它是一个将所有Entry节点链入一个双向链表的HashMap。由于LinkedHashMap是HashMap的子类,所以LinkedHashMap自然会拥有Has
阅读全文
摘要:在Java web的开发过程中,目前企业级应用程序采用较多的开发框架是SSH(Spring+SpringMVC+Hibernate,用SpringMVC来代替Struts)。本文通过阅读Spring的官方手册和源代码来分析Spring创建者的设计理念,主要梳理在使用Spring的过程中遇到的设计模式
阅读全文
摘要:1.任务:获得进程信息 :ps命令,或者top命令,它能显示当前运行中进程的相关信息,包括进程的PID。 ps命令能提供一份当前进程的快照。如果想状态可以自动刷新,可以使用top命令。 2.任务:获得线程信息 : 输入下列命令: 1、查找指定进程 1 第一条记录是查找出的进程;第二条结果是grep进
阅读全文
摘要:B、 jstack jstack主要用来查看某个Java进程内的线程堆栈信息。语法格式如下: 1 jstack [option] pid 2 jstack [option] executable core 3 jstack [option] [server-id@]remote-hostname-o
阅读全文
摘要:第一、dubbo Dubbo 缺省协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。 反之,Dubbo 缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。
阅读全文
摘要:作者:网易云链接:https://www.zhihu.com/question/45413135/answer/226794957来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 简而言之,Dubbo确实类似于Spring Cloud的一个子集,Dubbo功能和文档完善
阅读全文
摘要:dubbo作为rpc框架,实现的效果就是调用远程的方法就像在本地调用一样。如何做到呢?就是本地有对远程方法的描述,包括方法名、参数、返回值,在dubbo中是远程和本地使用同样的接口;然后呢,要有对网络通信的封装,要对调用方来说通信细节是完全不可见的,网络通信要做的就是将调用方法的属性通过一定的协议(
阅读全文
摘要:在上一篇文章中我们大致浏览了zookeeper的启动过程,并且提到在Zookeeper的启动过程中leader选举是非常重要而且最复杂的一个环节。那么什么是leader选举呢?zookeeper为什么需要leader选举呢?zookeeper的leader选举的过程又是什么样子的?本文的目的就是解决
阅读全文
摘要:比较敏感的数据比如金额修改,同一时间只能有一个人操作,想象下2个人同时修改金额,一个加金额一个减金额,为了防止同时操作造成数据不一致,需要锁,如果是数据库需要的就是行锁或表锁,如果是在集群里,多个客户端同时修改一个共享的数据就需要分布式锁
阅读全文
摘要:zookeeper集群,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的。
阅读全文
摘要:分布式应用正在运行的一组系统称为集群,而在集群中运行的每台机器被称为节点。 分布式应用有两部分, Server(服务器) 和 Client(客户端) 应用程序。服务器应用程序实际上是分布式的,并具有通用接口,以便客户端可以连接到集群中的任何服务器并获得相同的结果。 客户端应用程序是与分布式应用进行交
阅读全文
摘要:Solr有两个不同的部分,索引和搜索。索引是以适当格式存储数据以便后续可以搜索的过程。Solr使用ZooKeeper对多个节点中的数据进行索引和搜索。ZooKeeper提供以下功能: 根据需要添加/删除节点 在节点之间复制数据,随后最小化数据丢失 在多个节点之间共享数据,随后从多个节点搜索以获得更快
阅读全文
摘要:在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这
阅读全文
摘要:配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的。 这篇主要分析leader的选择机制,zookeeper提供了三种方式: LeaderElection Au
阅读全文
摘要:hash表实际上由size个的桶组成一个桶数组table[0...size-1] 。 当一个对象经过哈希之后。得到一个对应的value , 于是我们把这个对象放到桶table[ value ]中。当一个桶中有多个对象时。我们把桶中的对象组织成为一个链表。 这在冲突处理上称之为拉链法。 负载因子(lo
阅读全文
摘要:时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。(算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度)。 时间复杂度: (1)时间频度 一个算法中的语句执行次数称为语句频度或时
阅读全文