<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lby0307]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/lby0307</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; lby0307]]></copyright><item><title><![CDATA[闲谈Tomcat性能优化]]></title><link>https://blog.csdn.net/lby0307/article/details/89194909</link><guid>https://blog.csdn.net/lby0307/article/details/89194909</guid><author>lby0307</author><pubDate>Wed, 10 Apr 2019 21:10:24 +0800</pubDate><description><![CDATA[Tomcat在各位JavaWeb从业者常常就是默认的开发环境，但是Tomcat的默认配置作为生产环境，尤其是内存和线程的配置，默认都很低，容易成为性能瓶颈.

幸好Tomcat还有很多的提升空间.下文介绍一下Tomcat优化,可以分为内存,线程,IO.

一:Tomcat内存优化,启动时告诉JVM我要一块大内存(调优内存是最直接的方式)

Windows 下的catalina.bat

Linux...]]></description><category></category></item><item><title><![CDATA[Tomcat Connector三种运行模式（BIO, NIO, APR）的比较和优化]]></title><link>https://blog.csdn.net/lby0307/article/details/89171860</link><guid>https://blog.csdn.net/lby0307/article/details/89171860</guid><author>lby0307</author><pubDate>Wed, 10 Apr 2019 07:11:04 +0800</pubDate><description><![CDATA[昨天看到基础平台做了线上Tomcat配置优化的文章，借此了解下Tomcat三种运行模式！

Tomcat Connector的三种不同的运行模式性能相差很大，有人测试过的结果如下：





这三种模式的不同之处如下：

BIO：
一个线程处理一个请求。缺点：并发量高时，线程数较多，浪费资源。

Tomcat7或以下，在Linux系统中默认使用这种方式。

NIO：
利用Java的异步IO处理，...]]></description><category></category></item><item><title><![CDATA[RandomLoadBalance]]></title><link>https://blog.csdn.net/lby0307/article/details/88982448</link><guid>https://blog.csdn.net/lby0307/article/details/88982448</guid><author>lby0307</author><pubDate>Tue, 02 Apr 2019 21:56:12 +0800</pubDate><description><![CDATA[今天总结下之前看过的dubbo源码中RandomLoadBalance使用的算法！

一：每个服务的权重不同

算法分析：在该段代码中，通过获取提供者服务的权重，然后计算出总权重，通过总权重计算出offset，然后在减去每个服务的权重，如果发现小于0，则调用当前服务。



例：有3个服务 A,B,C其中A的权重为1，B的权重为2，C的权重为3；

此时的invokers中的服务的顺序有6种情...]]></description><category></category></item><item><title><![CDATA[docker 基本原理及快速入门]]></title><link>https://blog.csdn.net/lby0307/article/details/88982251</link><guid>https://blog.csdn.net/lby0307/article/details/88982251</guid><author>lby0307</author><pubDate>Tue, 02 Apr 2019 21:46:10 +0800</pubDate><description><![CDATA[今天简单总结下docker相关知识！

什么是docker

Docker 是一个开源项目，诞生于 2013 年初，最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会，遵从了 Apache 2.0 协议，项目代码在 GitHub 上进行维护。

Docker 自开源后受到广泛的关注和讨论，以至于 dotCloud...]]></description><category></category></item><item><title><![CDATA[数据库的联合索引]]></title><link>https://blog.csdn.net/lby0307/article/details/88919243</link><guid>https://blog.csdn.net/lby0307/article/details/88919243</guid><author>lby0307</author><pubDate>Sat, 30 Mar 2019 21:18:13 +0800</pubDate><description><![CDATA[今天简单总结下联合索引相关的知识！
数据库表T有A，B，C三个字段，对其建立联合索引uniq(A,B,C)，请问如下查询哪些会用到索引？
1. SELECT * FROM T WHERE A=a AND B=b AND C=c;
2. SELECT * FROM T WHERE A=a AND B=b;
3. SELECT * FROM T WHERE A=a AND C=c;
4. SE...]]></description><category></category></item><item><title><![CDATA[Mybatis执行流程分析（源码篇）]]></title><link>https://blog.csdn.net/lby0307/article/details/88431035</link><guid>https://blog.csdn.net/lby0307/article/details/88431035</guid><author>lby0307</author><pubDate>Tue, 12 Mar 2019 22:43:54 +0800</pubDate><description><![CDATA[1. SqlSessionFactory 与 SqlSession.

　　通过前面的章节对于mybatis 的介绍及使用，大家都能体会到SqlSession的重要性了吧， 没错，从表面上来看，咱们都是通过SqlSession去执行sql语句（注意：是从表面看，实际的待会儿就会讲）。那么咱们就先看看是怎么获取SqlSession的吧：



（1）首先，SqlSessionFactoryBuild...]]></description><category></category></item><item><title><![CDATA[CAS原理及使用]]></title><link>https://blog.csdn.net/lby0307/article/details/87936631</link><guid>https://blog.csdn.net/lby0307/article/details/87936631</guid><author>lby0307</author><pubDate>Tue, 26 Feb 2019 15:51:40 +0800</pubDate><description><![CDATA[概念介绍：

CAS （Central Authentication Service）中央认证服务，CAS 是 耶鲁大学发起的一个开源项目，旨在为 Web 应用系统提供一种可靠的单点登录方法。其包括两部分： CAS Server 和 CAS Client 。

CAS Server负责完成对用户的认证工作 ，会为用户签发两个重要的票据：登录票据（TGT）和服务票据（ST）来实现认证过程, CAS ...]]></description><category></category></item><item><title><![CDATA[@Primary-在spring中常被忽视的注解]]></title><link>https://blog.csdn.net/lby0307/article/details/87622123</link><guid>https://blog.csdn.net/lby0307/article/details/87622123</guid><author>lby0307</author><pubDate>Mon, 18 Feb 2019 15:15:04 +0800</pubDate><description><![CDATA[在spring 中使用注解，常使用@Autowired， 默认是根据类型Type来自动注入的。但有些特殊情况，对同一个接口，可能会有几种不同的实现类，而默认只会采取其中一种的情况下 @Primary  的作用就出来了。下面是个简单的使用例子。
有如下一个接口


public interface Singer {
    String sing(String lyrics);
}

有下面的两个实...]]></description><category></category></item><item><title><![CDATA[Nginx 通过 Lua + Redis 实现动态封禁 IP]]></title><link>https://blog.csdn.net/lby0307/article/details/86712359</link><guid>https://blog.csdn.net/lby0307/article/details/86712359</guid><author>lby0307</author><pubDate>Thu, 31 Jan 2019 11:11:01 +0800</pubDate><description><![CDATA[一、背景

为了封禁某些爬虫或者恶意用户对服务器的请求，我们需要建立一个动态的 IP 黑名单。对于黑名单之内的 IP ，拒绝提供服务。

二、架构

实现 IP 黑名单的功能有很多途径：

1、在操作系统层面，配置 iptables，拒绝指定 IP 的网络请求；

2、在 Web Server 层面，通过 Nginx 自身的 deny 选项 或者 lua 插件 配置 IP 黑名单；

3、在应用层...]]></description><category></category></item><item><title><![CDATA[MySQL高可用架构之MHA]]></title><link>https://blog.csdn.net/lby0307/article/details/86712256</link><guid>https://blog.csdn.net/lby0307/article/details/86712256</guid><author>lby0307</author><pubDate>Thu, 31 Jan 2019 11:04:18 +0800</pubDate><description><![CDATA[一、MHA简介
        MHA（Master High Availability）目前在MySQL高可用方面是一个相对成熟的解决方案，它由日本DeNA公司的youshimaton（现就职于Facebook公司）开发，是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中，MHA能做到在0~30秒之内自动完成数据库的故障切换操作，并且在进行故障切换...]]></description><category></category></item><item><title><![CDATA[Filebeat+Kafka+Logstash+ElasticSearch+Kibana搭建完整版]]></title><link>https://blog.csdn.net/lby0307/article/details/86711992</link><guid>https://blog.csdn.net/lby0307/article/details/86711992</guid><author>lby0307</author><pubDate>Thu, 31 Jan 2019 10:47:08 +0800</pubDate><description><![CDATA[1. 了解各个组件的作用

Filebeat是一个日志文件托运工具，在你的服务器上安装客户端后，filebeat会监控日志目录或者指定的日志文件，追踪读取这些文件（追踪文件的变化，不停的读）
Kafka是一种高吞吐量的分布式发布订阅消息系统，它可以处理消费者规模的网站中的所有动作流数据
Logstash是一根具备实时数据传输能力的管道，负责将数据信息从管道的输入端传输到管道的输出端；与此同时这根管...]]></description><category></category></item><item><title><![CDATA[RabbitMQ事务和Confirm发送方消息确认]]></title><link>https://blog.csdn.net/lby0307/article/details/86432643</link><guid>https://blog.csdn.net/lby0307/article/details/86432643</guid><author>lby0307</author><pubDate>Sun, 13 Jan 2019 19:24:46 +0800</pubDate><description><![CDATA[正常情况下，如果消息经过交换器进入队列就可以完成消息的持久化，但如果消息在没有到达broker之前出现意外，那就造成消息丢失，有没有办法可以解决这个问题？

RabbitMQ有两种方式来解决这个问题：

通过AMQP提供的事务机制实现；
	使用发送者确认模式实现；
一、事务使用

事务的实现主要是对信道（Channel）的设置，主要的方法有三个：


	channel.txSelect()声明启动...]]></description><category></category></item><item><title><![CDATA[mongodb查询内嵌文档]]></title><link>https://blog.csdn.net/lby0307/article/details/86411430</link><guid>https://blog.csdn.net/lby0307/article/details/86411430</guid><author>lby0307</author><pubDate>Sun, 13 Jan 2019 11:35:03 +0800</pubDate><description><![CDATA[mongodb查询内嵌文档

假设有这样一个文档：

db.XXX.remove();

db.XXX.insert({&quot;id&quot;:1, &quot;members&quot;:[{&quot;name&quot;:&quot;BuleRiver1&quot;, &quot;age&quot;:27, &quot;gender&quot;:&quot;M&quot;}, {&quot;name&quot;:&quot;BuleRiver2&quot;, &quot;age&quot;:23]]></description><category></category></item><item><title><![CDATA[MQ消息最终一致性事务]]></title><link>https://blog.csdn.net/lby0307/article/details/86350385</link><guid>https://blog.csdn.net/lby0307/article/details/86350385</guid><author>lby0307</author><pubDate>Sat, 12 Jan 2019 10:54:27 +0800</pubDate><description><![CDATA[本文我们将学习到一种常见的柔性事务解决方案：消息一致性事务方案。

对于TCC型事务，跨系统的调用均是基于服务间的直接调用，即很大程度上是同步调用。基于TCC方案能够保证主子事务同时成功，同时失败。

但实际开发中，由于多方面的考虑，我们会将服务拆分为异步方式，一般是基于MQ进行服务间的解耦，服务发起方执行完本地业务操作后发送一条消息给到消息中间件（比如：RocketMQ、RabbitMQ、Kaf...]]></description><category></category></item><item><title><![CDATA[Git关联到新的远程分支]]></title><link>https://blog.csdn.net/lby0307/article/details/85221507</link><guid>https://blog.csdn.net/lby0307/article/details/85221507</guid><author>lby0307</author><pubDate>Sun, 23 Dec 2018 11:59:18 +0800</pubDate><description><![CDATA[1、如果你已经在远程创建了一个分支，远程分支地址：https://xxxxxxx/wangdong/helloworld.git 
2、从命令行创建一个新的仓库，关联到该远程分支


touch README.md
git init
git add README.md
git commit -m &quot;first commit&quot;
git remote add origin https://xxxxxx...]]></description><category></category></item><item><title><![CDATA[git回滚到任意版本]]></title><link>https://blog.csdn.net/lby0307/article/details/85220828</link><guid>https://blog.csdn.net/lby0307/article/details/85220828</guid><author>lby0307</author><pubDate>Sun, 23 Dec 2018 10:29:50 +0800</pubDate><description><![CDATA[先显示提交的log


$ git log -3
commit 4dc08bb8996a6ee02f
Author: Mark &amp;lt;xxx@xx.com&amp;gt;
Date:   Wed Sep 7 08:08:53 2016 +0800

    xxxxx

commit 9cac9ba76574da2167
Author: xxx&amp;lt;xx@qq.com&amp;gt;
Date:   Tue ...]]></description><category></category></item><item><title><![CDATA[TX-LCN分布式事务原理介绍]]></title><link>https://blog.csdn.net/lby0307/article/details/84551637</link><guid>https://blog.csdn.net/lby0307/article/details/84551637</guid><author>lby0307</author><pubDate>Mon, 26 Nov 2018 17:02:13 +0800</pubDate><description><![CDATA[框架介绍

LCN分布式事务框架其本身并不创建事务，而是基于对本地事务的协调从而达到事务一致性的效果

核心步骤

创建事务组
是指在事务发起方开始执行业务代码之前先调用TxManager创建事务组对象，然后拿到事务标示GroupId的过程。
添加事务组
添加事务组是指参与方在执行完业务方法以后，将该模块的事务信息添加通知给TxManager的操作。
关闭事务组
是指在发起方执行完业务代码以后，将...]]></description><category></category></item><item><title><![CDATA[分布式事务解决方案框架（LCN）]]></title><link>https://blog.csdn.net/lby0307/article/details/84538174</link><guid>https://blog.csdn.net/lby0307/article/details/84538174</guid><author>lby0307</author><pubDate>Mon, 26 Nov 2018 13:33:00 +0800</pubDate><description><![CDATA[事物概念

事物特性(ACID)

原子性（A）

所谓的原子性就是说，在整个事务中的所有操作，要么全部完成，要么全部不做，没有中间状态。对于事务在执行中发生错误，所有的操作都会被回滚，整个事务就像从没被执行过一样。

一致性（C）

事务的执行必须保证系统的一致性，就拿转账为例，A有500元，B有300元，如果在一个事务里A成功转给B50元，那么不管并发多少，不管发生什么，只要事务执行成功了，那...]]></description><category></category></item><item><title><![CDATA[内存屏障]]></title><link>https://blog.csdn.net/lby0307/article/details/84451077</link><guid>https://blog.csdn.net/lby0307/article/details/84451077</guid><author>lby0307</author><pubDate>Sat, 24 Nov 2018 17:43:56 +0800</pubDate><description><![CDATA[内存屏障（Memory barrier）

为什么会有内存屏障

每个CPU都会有自己的缓存（有的甚至L1,L2,L3），缓存的目的就是为了提高性能，避免每次都要向内存取。但是这样的弊端也很明显：不能实时的和内存发生信息交换，分在不同CPU执行的不同线程对同一个变量的缓存值不同。
	用volatile关键字修饰变量可以解决上述问题，那么volatile是如何做到这一点的呢？那就是内存屏障，内存屏障...]]></description><category></category></item><item><title><![CDATA[synchronized的实现原理]]></title><link>https://blog.csdn.net/lby0307/article/details/84451036</link><guid>https://blog.csdn.net/lby0307/article/details/84451036</guid><author>lby0307</author><pubDate>Sat, 24 Nov 2018 17:39:18 +0800</pubDate><description><![CDATA[常见三种使用方法：　

　　　　1）普通同步方法，锁是当前实例；
　　　　2）静态同步方法，锁是当前类的Class实例，Class数据存在永久代中，是该类的一个全局锁；
　　　　3）对于同步代码块，锁是synchronized括号里配置的对象。

　　　　Java中的每个对象都可以作为锁。当一个线程访问同步代码块时，需要首先获取锁，退出代码块或抛出异常时必须释放锁

　　“锁”到底是个什么东东？
...]]></description><category></category></item></channel></rss>