<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wangle965235568的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangle965235568</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangle965235568]]></copyright><item><title><![CDATA[三、网络编程-NIO]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/114273059</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/114273059</guid><author>wangle965235568</author><pubDate>Mon, 01 Mar 2021 23:00:54 +0800</pubDate><description><![CDATA[一、NIO是什么
1、概念
NIO 库是在 JDK 1.4 中引入的。NIO 弥补了原来的 I/O 的不足，它在标准 Java 代码中提供了高速的、面向块的 I/O。NIO 翻译成 no-blocking io 或者 new io 都说得通。
2、和BIO的区别
2.1 面向流&amp;面向缓冲

BIO面向流
Java IO 面向流意味着每次从流中读一个或多个字节，直至读取所有字节， 它们没有被缓存在任何地方。此外，它不能前后移动流中的数据。如果需要前后 移动从流中读取的数据，需要先将它缓存到一个缓冲区
]]></description><category></category></item><item><title><![CDATA[二、网络编程]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/113900702</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/113900702</guid><author>wangle965235568</author><pubDate>Mon, 22 Feb 2021 19:28:24 +0800</pubDate><description><![CDATA[一、linux网络I/O模型
1、同步和异步、阻塞和非阻塞
1.1、同步和异步
关注的是消息的通知机制

同步
调用方主动等待结果的返回
异步
调用方不需要主动等待结果的返回，通过其他方式：回调函数、状态通知等通知

1.2 阻塞和非阻塞
关注的是等待结果返回调用方的状态

阻塞
结果返回之前，当前线程被挂起，不做任务事情
非阻塞
结果返回之前，当前线程不阻塞，可做其他事情

1.3 组合含义

同步阻塞
主动等待调用返回，期间不做任何事情，调用方被挂起
同步非阻塞
主动等待调用方返回，期间可以做其他事情，]]></description><category></category></item><item><title><![CDATA[一、计算机网络体系结构]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/111502699</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/111502699</guid><author>wangle965235568</author><pubDate>Thu, 21 Jan 2021 20:29:29 +0800</pubDate><description><![CDATA[一、OSI/TCP模型
Transmission Control Protocol/Internet Protocol的简写，中译名为传输控制协议/因特网互联协议，是Internet最基本的协议、Internet国际互联网络的基础，由网络层的IP协议和传输层的TCP协议组成。协议采用了4层的层级结构。然而在很多情况下，它是利用 IP 进行通信时所必须用到的协议群的统称。

1、应用层
1⃣️ 作用
文件传输、电子邮件、文件服务。数据格式化，数据加密，建立和接触于别的接点的联系。定义数据格式，并按照对应的格式]]></description><category></category></item><item><title><![CDATA[六、缓存方案实战]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/109554259</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/109554259</guid><author>wangle965235568</author><pubDate>Sun, 08 Nov 2020 13:23:27 +0800</pubDate><description><![CDATA[一、缓存读取数据

public Provinces detail(String provinceid) {
        Provinces provinces = null;

        //在redis查询
        provinces = (Provinces)redisTemplate.opsForValue().get(provinceid);
        if (null != provinces){
//            redisTemplate.expire(pr]]></description><category></category></item><item><title><![CDATA[五、redis高可用模式解读]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/109436116</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/109436116</guid><author>wangle965235568</author><pubDate>Wed, 04 Nov 2020 14:09:26 +0800</pubDate><description><![CDATA[一、主从模式
1、主从复制

方式一、新增 redis6380.conf, 加入 slaveof 192.168.42.111 6379, 在 6379 启动完后再启 6380，完成配置;
方式二、redis-server --slaveof 192.168.42.111 6379
查看状态:info replication
断开主从复制:在 slave 节点，执行 6380:&gt;slaveof no one
断开后再变成主从复制:6380:&gt; slaveof 192.168.42.111 637]]></description><category></category></item><item><title><![CDATA[四、redi性能测试、协议、事务]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/109170322</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/109170322</guid><author>wangle965235568</author><pubDate>Mon, 19 Oct 2020 23:06:37 +0800</pubDate><description><![CDATA[一、redis慢查询
慢查询的作用：通过慢查询分析，找到有问题的命令进行优化。
Redis slowlog是Redis用来记录查询执行时间的日志系统。
查询执行时间指的是不包括像客户端响应(talking)、发送回复等IO操作，而单单是执行一个查询命令所耗费的时间。
1、慢查询配置

动态设置： config set slowlog-log-slower-than 10000 //10 毫秒
使用 config set 完后,若想将配置持久化保存到 redis.conf，要执行 config rewrite]]></description><category></category></item><item><title><![CDATA[三、redis实战]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/109093688</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/109093688</guid><author>wangle965235568</author><pubDate>Fri, 16 Oct 2020 20:42:15 +0800</pubDate><description><![CDATA[一、Redis高并发投票网站
1、需求背景

用户可以发表文章,发表时默认给自己的文章投了一票
用户在查看网站时可以按评分进行排列查看
用户也可以按照文章发布时间进行排序
为节约内存，一篇文章发表后，7天内可以投票,7天过后就不能再投票了
为防止同一用户多次投票，用户只能给一篇文章投一次票

2、关系数据库设计

文章基本信息表

文章票数于分值表

文章投票详情表

3、redis数据结构设计


使用hash存储文章的基本信息
key: article：00x
value:

title “标题”
li]]></description><category></category></item><item><title><![CDATA[一、redis简介和基础入门]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/108642378</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/108642378</guid><author>wangle965235568</author><pubDate>Mon, 21 Sep 2020 20:58:27 +0800</pubDate><description><![CDATA[一、基础入门
1、简介
redis 是一种基于键值对(key-value)数据库，其中 value 可以为 string、hash、list、 set、zset 等多种数据结构，可以满足很多应用场景。还提供了键过期，发布订阅，事务， 流水线，等附加功能。
流水线: Redis 的流水线功能允许客户端一次将多个命令请求发送给服务器， 并将 被执行的多个命令请求的结果在一个命令回复中全部返回给客户端，使用这个功能可以 有效地减少客户端在执行多个命令时需要与服务器进行通信的次数。
2、特性

速度快
数据存储在内]]></description><category></category></item><item><title><![CDATA[五、duubo的服务订阅发布过程源码剖析]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/107549323</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/107549323</guid><author>wangle965235568</author><pubDate>Sat, 25 Jul 2020 23:37:32 +0800</pubDate><description><![CDATA[前言
dubbo消费端是如何拿到服务端的url的呢，上节我们讲过服务暴露和消费过程是按照消费方直接拿到的服务端url，但是在实际的dubbo源码中是不会直接拿到服务端的url，我们本章节就主要剖析将duubo的服务订阅和发布嵌套到服务的暴露和消费中的.
在上节的 dubbo 服务暴露和引入过程中，核心动作是两个，通过 protocol.export(serviceInvoker)将服务暴露出去，通过 protocol.refer(DemoService.class, registryUrl)将网络上的
服务]]></description><category></category></item><item><title><![CDATA[四、dubbo的服务暴露与消费过程]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/107476704</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/107476704</guid><author>wangle965235568</author><pubDate>Tue, 21 Jul 2020 22:18:29 +0800</pubDate><description><![CDATA[一、通过dubbo协议来将服务暴露出去
1、暴露过程


接下来就到了服务暴露的这行代码里面了。
protocol.export(invoker)

反射逻辑

最终调用的是我们自己实现的simpleInvoker的invoke方法

思考：为什么要这样实现？
可以结偶具体的网络服务和业务接口，如果没有invoken，不同的网络协议要针对不通的业务类来进行服务的暴露和消费，这很难做到，也很费事。
2、消费端：




...]]></description><category></category></item><item><title><![CDATA[三、dubbo的SPI机制原理]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/107441532</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/107441532</guid><author>wangle965235568</author><pubDate>Sun, 19 Jul 2020 11:26:18 +0800</pubDate><description><![CDATA[一、JAVA的SPI机制
1、简介
SPI 全称 Service Provider Interface，是 Java 提供的一套用来被第三方实现或 者扩展的 API，它可以用来启用框架扩展和替换组件

可以看到，SPI 的本质，其实是帮助程序，为某个特定的接口寻找它的实 现类。而且哪些实现类的会加载，是个动态过程(不是提前预定好的)。
有点类似 IOC 的思想，就是将装配的控制权移到程序之外，在模块化设 计中这个机制尤其重要。所以 SPI 的核心思想就是解耦。
常见例子：

数据库驱动加载接口实现类的加载，]]></description><category></category></item><item><title><![CDATA[二、dubbo高级特性使用]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/107428097</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/107428097</guid><author>wangle965235568</author><pubDate>Sat, 18 Jul 2020 14:45:37 +0800</pubDate><description><![CDATA[1、启动时检查

check=true,检测到某接口没有提供者时，抛异常，阻止系统启动， reference对象置null，在系统测试阶段，开启可快速发现问题。reference对象为空，则即使后续补进了provider，也不能补救
2、 check=false，不检测接口是否有提供者，直接为reference生成代理对象只要后续补入provider，程序会自动探测到，线上正式环境使用

2、集群容错配置

Failover ：当出现失败，重试其它服务器。 retries=“2” 来设置重试次数(不含第一次]]></description><category></category></item><item><title><![CDATA[一、RPC场景和实现过程+dubbo的基础配置使用]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/107426036</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/107426036</guid><author>wangle965235568</author><pubDate>Sat, 18 Jul 2020 13:58:38 +0800</pubDate><description><![CDATA[一、RPC场景和过程+实现原理
1、rpc场景
在微服务环境下，存在大量的跨 JVM 进行方法调用的场景，如下图：

具体到某一个调用来说，希望 A 机器能通过网络，调用 B 机器内的某个服 务方法，并得到返回值。
2、rpc如何实现
我们知道调用一个服务的方法最基本的是获取到jvm中的bean实例，jdk还提供了一种通过反射的方式来调用，只需要提供：反射需要的目标对象、方法名称、参数即可。传递这些信息的桥梁有很多，例如：webService、Http、Rmi等等。
实现一个远程调用所需要的组件：反射所需要]]></description><category></category></item><item><title><![CDATA[五、ZK实战之高性能分布式锁]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/107304810</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/107304810</guid><author>wangle965235568</author><pubDate>Sun, 12 Jul 2020 20:48:58 +0800</pubDate><description><![CDATA[前言：
数据库和redis也可实现分布式锁，本文只将三者做一个对比，不实现数据库和redis，将实现ZK的分布式锁
1、数据库、redis、zk实现分布式锁的特点

2、ZK实现高性能分布式锁
2.1实现思路

2.2 具体实现code

lock接口

package cn.enjoy.zk;

/*
 * @author wangle25
 * @description lock接口
 * @date 20:38 2020-07-12
 * @param 
 * @return 
 **/

publi]]></description><category></category></item><item><title><![CDATA[四、Zookeeper集群一致性协议ZAB解析和领导选举算法实现]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/107303515</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/107303515</guid><author>wangle965235568</author><pubDate>Sun, 12 Jul 2020 19:58:53 +0800</pubDate><description><![CDATA[前言：
之前第一部分讲解过CAP、BASE理论，基本上可以概述为：致力于打造一个，平时系统要求是基本可用，除开成功失败，运行有可容忍的延迟状 态，但是，无论如何经过一段时间的延迟后系统最终必须达成数据是一致的。
一、2pc : 两阶段提交


首先第一阶段叫准备阶段，事务的请求都发送给一个个的资源，这里的资源可以是数据库，也可以是其他支持事务 的框架，他们会分别执行自己的事务，写日志到 undo 与 redo，但是不提交事务。
当事务管理器收到了所以资源的反馈，事务都执行没报错后，事务管理器再发送 comm]]></description><category></category></item><item><title><![CDATA[三、ZK客户端框架]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/107295655</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/107295655</guid><author>wangle965235568</author><pubDate>Sun, 12 Jul 2020 11:16:26 +0800</pubDate><description><![CDATA[一、Zookeeper原生客户端
1、jdk包引入
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org]]></description><category></category></item><item><title><![CDATA[二、ZK命令行操作]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/107291255</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/107291255</guid><author>wangle965235568</author><pubDate>Sat, 11 Jul 2020 22:30:33 +0800</pubDate><description><![CDATA[一、服务端常用命令

启动 ZK 服务: sh bin/zkServer.sh start
查看 ZK 服务状态: sh bin/zkServer.sh status
停止 ZK 服务: sh bin/zkServer.sh stop
重启 ZK 服务: sh bin/zkServer.sh restart

二、客户端常用命令
使用 zkCli.sh -server ip:port 连接到 ZooKeeper 服务，连接成功后，系统会输 出 ZooKeeper 的相关环境以及配置信息。 命令行工具的一些简]]></description><category></category></item><item><title><![CDATA[一、zk基础-分布式系统存在的问题以及解决方式+ZK是什么]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/106764393</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/106764393</guid><author>wangle965235568</author><pubDate>Wed, 08 Jul 2020 17:10:31 +0800</pubDate><description><![CDATA[1、单机的优缺点
2、分布式优点、存在的问题
3、解决分布式存在的问题的理论-cap、base
4、zk在分布式起了哪些作用，怎么做到保证cap的，使用的什么算法（zab算法）
5、zk各个客服端使用
6、客户端源码阅读
7、
5、zk可以做那些事，怎么实现的

...]]></description><category></category></item><item><title><![CDATA[六、mysql性能优化]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/106606423</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/106606423</guid><author>wangle965235568</author><pubDate>Sun, 07 Jun 2020 21:58:11 +0800</pubDate><description><![CDATA[一、慢查询
1、慢查询日志
是指 mysql 记录所有执行超过long_query_time参数设定的时间阈值的 SQL 语句的日志。
2、慢查询配置
# 默认 10 秒，这里为了演示方便设置为 0 
set global long_query_time=0;
#W开启慢查询日志
set GLOBAL slow_query_log = 1; 
# 项目开发中日志只能记录在日志文件中，不能记表中
set global log_output='FILE,TABLE' 
# 查看慢查询日志信息
cat /usr/]]></description><category></category></item><item><title><![CDATA[五、mysql之业务设计]]></title><link>https://blog.youkuaiyun.com/wangle965235568/article/details/106593682</link><guid>https://blog.youkuaiyun.com/wangle965235568/article/details/106593682</guid><author>wangle965235568</author><pubDate>Sat, 06 Jun 2020 22:43:40 +0800</pubDate><description><![CDATA[一、逻辑设计
1、范式设计
1.1第一范式
数据库表中的所有字段都只具有单一属性，单一属性的列是由基本数据类型所构成的，设计出来的表都是简单的二维表
1.2第二范式
要求表中只具有一个业务主键，也就是说符合第二范式的表不能存在非主键列只对部分主键的依赖关系
举例来说： 有两张表:订单表，产品表


一个订单有多个产品，所以订单的主键为【订单 ID】和【产品 ID】组成的联合主键，这样 2 个组件不符合第二范式，而且产品 ID 和订单 ID 没有强关联，故把订单表进行拆分为订单 表与订单与商品的中间表。

1]]></description><category></category></item></channel></rss>