<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wflovejava的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wflovejava</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wflovejava]]></copyright><item><title><![CDATA[理解BIO和NIO]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/102947321</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/102947321</guid><author>wflovejava</author><pubDate>Thu, 07 Nov 2019 14:22:57 +0800</pubDate><description><![CDATA[通过一个例子理解BIO
服务端：
public class Server {
    public static void main(String[] args) {
        byte[] buffer = new byte[1024];

        try {
            ServerSocket serverSocket = new ServerSocket(8080...]]></description><category></category></item><item><title><![CDATA[Linux环境下以命令和脚本方式启动jar包]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/102928805</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/102928805</guid><author>wflovejava</author><pubDate>Wed, 06 Nov 2019 09:25:19 +0800</pubDate><description><![CDATA[start.sh

启动

#!/bin/bash java -Dfile.encoding=utf-8 -jar -server -Xms512m -Xmx512m -Xss256K -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar /mnt/ware...]]></description><category></category></item><item><title><![CDATA[Java并发编程-读写锁]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/97913389</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/97913389</guid><author>wflovejava</author><pubDate>Wed, 31 Jul 2019 14:07:15 +0800</pubDate><description><![CDATA[Java并发编程-读写锁

]]></description><category></category></item><item><title><![CDATA[Java并发编程-Semaphore使用]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/97803710</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/97803710</guid><author>wflovejava</author><pubDate>Tue, 30 Jul 2019 17:50:27 +0800</pubDate><description><![CDATA[Java并发编程-Semaphore使用
使用场景：Semaphore（信号量）同时运行多少个并发执行，比如我现在设置30个线程访问，可以通过Semaphore控制同时多个线程同时访问的，
代码如下：
public class SemaphoreTest {
    private static final int THREAD_COUNT = 30;
    private static fin...]]></description><category></category></item><item><title><![CDATA[Java并发编程-重入锁]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/97793785</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/97793785</guid><author>wflovejava</author><pubDate>Tue, 30 Jul 2019 16:29:31 +0800</pubDate><description><![CDATA[Java并发编程-重入锁
例子：
   public static void main(String[] args) {
    for (int i = 0; i &lt; 5; i++) {
    new Thread(new Runnable() {
        public void run() {
            synchronized (this){
         ...]]></description><category></category></item><item><title><![CDATA[Java并发编程-ReentrantLock原理]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/97764855</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/97764855</guid><author>wflovejava</author><pubDate>Tue, 30 Jul 2019 11:26:30 +0800</pubDate><description><![CDATA[Java并发编程-ReentrantLock原理

]]></description><category></category></item><item><title><![CDATA[Java并发编程- AQS原理]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/97108841</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/97108841</guid><author>wflovejava</author><pubDate>Wed, 24 Jul 2019 10:29:47 +0800</pubDate><description><![CDATA[Java并发编程- AQS原理

]]></description><category></category></item><item><title><![CDATA[Java并发编程- CAS原理]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/97024053</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/97024053</guid><author>wflovejava</author><pubDate>Tue, 23 Jul 2019 19:23:30 +0800</pubDate><description><![CDATA[Java并发编程- CAS原理

例子：


/**
 * CAS原理
 * @author wufei
 * @create 2019-07-23 19:03
 **/
public class CAS1 {

    private static  volatile  int m =0;

    //原子性的保证
    private static AtomicInteger atomic...]]></description><category></category></item><item><title><![CDATA[Java并发编程- Synchronized原理]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/96857849</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/96857849</guid><author>wflovejava</author><pubDate>Mon, 22 Jul 2019 14:40:51 +0800</pubDate><description><![CDATA[Java并发编程- Synchronized原理

在jdk.1.6之前是重量级锁，jdk1.6之后对synchronzied的关键字的优化之后，引入了偏向锁，轻量级锁。

1.先来看synchronzied使用的基础：


static  A a = new A();

//普通同步方法
public synchronized void test(){
    System.out.printl...]]></description><category></category></item><item><title><![CDATA[Java并发编程- CyclicBarrier用法]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/96484435</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/96484435</guid><author>wflovejava</author><pubDate>Fri, 19 Jul 2019 17:58:15 +0800</pubDate><description><![CDATA[Java并发编程- CyclicBarrier用法
使用场景：
用于多线程处理计算数据，最后合并计算结果的场景
例子：
public class CyclicBarrierTest {
   static CyclicBarrier cyclicBarrier = new CyclicBarrier(3);
    public static void main(String[] args) {
...]]></description><category></category></item><item><title><![CDATA[Java并发编程- CountDownLatch用法]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/96476483</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/96476483</guid><author>wflovejava</author><pubDate>Fri, 19 Jul 2019 10:58:08 +0800</pubDate><description><![CDATA[Java并发编程- CountDownLatch用法

使用场景：需要在主线程等待其他子线执行完毕之后，然后再执行主线程的任务，这时需要使用CountDownLatch比较合适了。

代码例子：


public class TestCountDownLatch1 {
    final static CountDownLatch latch = new CountDownLatch(2);
  ...]]></description><category></category></item><item><title><![CDATA[mysql常用命令]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/94554537</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/94554537</guid><author>wflovejava</author><pubDate>Wed, 03 Jul 2019 11:27:16 +0800</pubDate><description><![CDATA[mysql常用命令
查看MySQL线程列表
show processlist;



]]></description><category></category></item><item><title><![CDATA[Kafka的使用和错误解决]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/91388582</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/91388582</guid><author>wflovejava</author><pubDate>Mon, 10 Jun 2019 17:49:39 +0800</pubDate><description><![CDATA[Kafka的使用和错误解决
单节点：223

]]></description><category></category></item><item><title><![CDATA[kafka集群搭建]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/90702521</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/90702521</guid><author>wflovejava</author><pubDate>Thu, 30 May 2019 18:15:33 +0800</pubDate><description><![CDATA[kafka集群搭建
第一步部署三个节点zk
3.1.	下载Zookeeper
下载地址：http://mirror.bit.edu.cn/apache/zookeeper/
解压文件：
#tar -zxvf  zookeeper-3.4.11.tar.gz
3.2.	配置相关文件
1）	配置conf/zoo.cfg
将zk安装目录下conf/zoo_sample.cfg修改为zoo.cfg
#cp...]]></description><category></category></item><item><title><![CDATA[Elasticsearch 运维]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/90241869</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/90241869</guid><author>wflovejava</author><pubDate>Wed, 15 May 2019 18:01:31 +0800</pubDate><description><![CDATA[Elasticsearch 运维

]]></description><category></category></item><item><title><![CDATA[Zabbix4安装]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/89703803</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/89703803</guid><author>wflovejava</author><pubDate>Tue, 30 Apr 2019 09:56:36 +0800</pubDate><description><![CDATA[Zabbix4安装
1.下载安装包
zabbix-4.0.1.tar.gz
192.168.3.185 server端
在zabbix server充当两个角色：server、angent
192.168.3.185 客户端
先按照php环境：
php编译安装
添加用户
useradd -r -s /sbin/nologin php-fpm

下载解压安装包
cd /mnt/zabbix
wget...]]></description><category></category></item><item><title><![CDATA[nginx配置（https，负载均衡，80重定向443）]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/89671215</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/89671215</guid><author>wflovejava</author><pubDate>Mon, 29 Apr 2019 11:26:53 +0800</pubDate><description><![CDATA[nginx配置（https，负载均衡，80重定向443）
#user  nobody;
worker_processes  4;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


event...]]></description><category></category></item><item><title><![CDATA[spring boot-自动配置原理和实战]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/89313236</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/89313236</guid><author>wflovejava</author><pubDate>Mon, 15 Apr 2019 15:38:58 +0800</pubDate><description><![CDATA[spring boot-自动配置原理和实战
spring boot 自动配置原理
以spring配置的数据源源码为例，DataSourceAutoConfiguration分析原理。
当我们需要配置一个数据源连接时，时常如下配置完成数据源连接。
  spring:
      application:
          name: auth-server
      datasource:
  ...]]></description><category></category></item><item><title><![CDATA[Spring事物]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/89245565</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/89245565</guid><author>wflovejava</author><pubDate>Fri, 12 Apr 2019 16:49:28 +0800</pubDate><description><![CDATA[Spring事物
基本原理（AOP）：对执行方法前后进行拦截，然后在目标方法开始之前创建或加入一个事物，
在执行完目标方法之后，根据执行情况提交或者回滚事物。


...]]></description><category></category></item><item><title><![CDATA[Spring Cloud下基于OAUTH2认证授权的实现]]></title><link>https://blog.youkuaiyun.com/wflovejava/article/details/88558149</link><guid>https://blog.youkuaiyun.com/wflovejava/article/details/88558149</guid><author>wflovejava</author><pubDate>Thu, 14 Mar 2019 18:00:16 +0800</pubDate><description><![CDATA[Spring Cloud下基于OAUTH2认证授权的实现

]]></description><category></category></item></channel></rss>