<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Here_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Here_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Here_]]></copyright><item><title><![CDATA[欧姆龙CP1E PLC]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/119914456</link><guid>https://blog.youkuaiyun.com/Here_/article/details/119914456</guid><author>Here_</author><pubDate>Thu, 26 Aug 2021 20:21:32 +0800</pubDate><description><![CDATA[存储区分配


CIO区

W区



H区

具有断电保持，可以当做是W区的扩展
D区

断电保持



CIO输入输出
内部辅助继电器区WR
保持继电器HR
特殊辅助继电器AR
暂存区TR
数据存储区DM
定时器TIM
计数器CNT
任务标志TK
变址寄存器（IR）
数据寄存器DR

有的是只读的，不能强制给信号
存储地址表示方式

字地址

-位地址



D通道不能位寻址
单通道的组成（单字16位）

双通道组成（双字）

w0.10对应b9;w1.03对应b19
单通道内容十六进制表示


0（0]]></description><category></category></item><item><title><![CDATA[redis分布式锁解决超卖问题]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/119858192</link><guid>https://blog.youkuaiyun.com/Here_/article/details/119858192</guid><author>Here_</author><pubDate>Sun, 22 Aug 2021 21:51:31 +0800</pubDate><description><![CDATA[SETNX

模拟场景代码

问题一
redis是单线程，web服务挂掉后，finally代码块的锁始终无法释放，导致其他请求也无法进行
解决：
增加key的过期时间
问题二
超时时间设置成功之前出现了bug怎么处理
解决：把设置值和超时时间绑定在一起

问题三
高并发场景下存在的问题，前面线程释放了后面线程刚加的锁。B线程自己加的锁被A线程给释放了。

解决方法：
每一个线程设置一个uuid,并将uuid作为redis的value;那么在释放锁的时候先判断是不是自己线程的锁，如果是再释放


...]]></description><category></category></item><item><title><![CDATA[（项目）springboot整合MQ，以及应用的场景]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/119764442</link><guid>https://blog.youkuaiyun.com/Here_/article/details/119764442</guid><author>Here_</author><pubDate>Wed, 18 Aug 2021 10:27:05 +0800</pubDate><description><![CDATA[引入依赖
&lt;!--引入消息中间件的依赖--&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
			&lt;artifactId&gt;spring-boot-starter-amqp&lt;/artifactId&gt;
		&lt;/dependency&gt;

配置

rabbitmq:
    host: 192.168.142.137
    port: 5672
    ]]></description><category></category></item><item><title><![CDATA[MQ消息的几种模式]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/119531952</link><guid>https://blog.youkuaiyun.com/Here_/article/details/119531952</guid><author>Here_</author><pubDate>Tue, 17 Aug 2021 10:14:19 +0800</pubDate><description><![CDATA[```csharp
private Material material;
    public float moveSpeed = 0.5f;
    void Start()
    {
        material = GetComponent&lt;Renderer&gt;().sharedMaterial;
    }


    void Update()
    {   
        if (material)
        {
            float m_Offset .]]></description><category></category></item><item><title><![CDATA[dubbo+springboot项目]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/119516249</link><guid>https://blog.youkuaiyun.com/Here_/article/details/119516249</guid><author>Here_</author><pubDate>Sun, 08 Aug 2021 22:03:30 +0800</pubDate><description><![CDATA[数据同步

性能有影响。有新的系统，代码需要更新，耦合太高。
方案二：引入消息中间件（MQ），可解耦，异步化。

RabbitMQ
1、simple模式：一对一

2、work模式：消息是共享模式

限流：对于消费者说，哪个干的快，哪个就干的多。给1个，处理完后再给下一个。
用限流+手工确认。
3、发布订阅模式

X:交换机，有两个队列，每个消费者都有队列。
生产者面向的是交换机。
4、路由模式：可以指定推送消息给消费者。打标记。
5、通配符模式：

*
采用MQ的场景




...]]></description><category></category></item><item><title><![CDATA[排序算法]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/116913811</link><guid>https://blog.youkuaiyun.com/Here_/article/details/116913811</guid><author>Here_</author><pubDate>Tue, 18 May 2021 14:22:13 +0800</pubDate><description><![CDATA[1. 堆排序
public class HeapSort {
    public static void main(String[] args) {
        int [] tree={2,5,3,1,10,4};
        int n=6;
       // heap(tree,6,0);
        heap_sort(tree,6);

        for (int i=0;i&lt;n;i++){
            System.out.println(tree[i])]]></description><category></category></item><item><title><![CDATA[后台管理分页查询的实现]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/116833572</link><guid>https://blog.youkuaiyun.com/Here_/article/details/116833572</guid><author>Here_</author><pubDate>Sat, 15 May 2021 09:52:48 +0800</pubDate><description><![CDATA[dao层
接口TypeRepository 继承 JpaRepository
@Repository
public interface TypeRepository extends JpaRepository&lt;Type,Long&gt; {
   
}

service层
-PagelistType(Pageable pageable);
public interface TypeService {
    Type saveType(Type type);
    Type getType(Long]]></description><category></category></item><item><title><![CDATA[后台登录管理小结]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/116794270</link><guid>https://blog.youkuaiyun.com/Here_/article/details/116794270</guid><author>Here_</author><pubDate>Fri, 14 May 2021 18:19:46 +0800</pubDate><description><![CDATA[1、DAO层
提供数据库操作，继承JpaRepository
@Repository
public interface UserRepository extends JpaRepository&lt;User,Long&gt; {
    //在数据库中根据username和password查找
    public User findByUsernameAndPassword(String username,String password);
}

2、Service层
调用dao层去，数据库中查找
pu]]></description><category></category></item><item><title><![CDATA[单例模式]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/116720123</link><guid>https://blog.youkuaiyun.com/Here_/article/details/116720123</guid><author>Here_</author><pubDate>Wed, 12 May 2021 21:02:23 +0800</pubDate><description><![CDATA[1、饿汉式
class Bank{
    //1.私有化一个构造函数
    private Bank() {
    }

    //2.内部创建一个类的对象
    //4.要求这个对象也是静态的
    private static Bank instance=new Bank();

   //3.提供公共方法，返回类的对象
    public static Bank getInstance(){
        return instance;
    }
}

2、懒汉式
class Or]]></description><category></category></item><item><title><![CDATA[B树和B+树]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/116144423</link><guid>https://blog.youkuaiyun.com/Here_/article/details/116144423</guid><author>Here_</author><pubDate>Mon, 26 Apr 2021 10:28:52 +0800</pubDate><description><![CDATA[B树的由来：
1、首先是查找树，就是为了提高查找效率；
2、从二叉查找树，到多路查找树；
3、但是会带来不平衡的问题，导致树的深度过深，查询依旧效率低；
4、所以要定义为平衡的
因此 B树是多路的并且平衡的查找树；



B＋树：


...]]></description><category></category></item><item><title><![CDATA[二叉树]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/116131147</link><guid>https://blog.youkuaiyun.com/Here_/article/details/116131147</guid><author>Here_</author><pubDate>Sun, 25 Apr 2021 19:59:11 +0800</pubDate><description><![CDATA[二叉树的概念


二叉树的遍历


创建结点：

定义二叉树：

前序遍历：

中序遍历：

后续遍历：

测试：

前中后序查找指定节点

前序遍历查找

中序遍历查找


删除节点


]]></description><category></category></item><item><title><![CDATA[深入理解反射]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/116128147</link><guid>https://blog.youkuaiyun.com/Here_/article/details/116128147</guid><author>Here_</author><pubDate>Sun, 25 Apr 2021 14:50:09 +0800</pubDate><description><![CDATA[什么是反射?
加载完类之后，在堆内存的方法区中（jdk1.8改为元空间），产生一个Class类型的对象（一个类只有一个Class对象），这个对象包含了类的完整的结构信息；因此通过反射可以得到：
1）一个对象所属的类；
2）获取一个类所有的成员方法和变量
包括：私有的构造器，方法和属性；（十分强大）
3）在运行时创建对象
4）在运行时调用对象的方法
2、获取Class实例的方式：

3。类的加载过程



反射的应用
动态代理！！就是SpringAOC的底层原理



...]]></description><category></category></item><item><title><![CDATA[String、StringBuilder、StringBuffer的区别]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/116043043</link><guid>https://blog.youkuaiyun.com/Here_/article/details/116043043</guid><author>Here_</author><pubDate>Fri, 23 Apr 2021 09:58:52 +0800</pubDate><description><![CDATA[1、可变性
String类使用了final char[] value修饰的字符数组，不可变
StringBuilder、StringBuffer也是使用char[] value字符数组来保存字符串，但是没有用final，是可变的
2、线程安全性
String对象是不可变的，也理解为常量，线程安全
StringBuilder：不安全
StringBuffer：线程安全，对调用的方法加了同步锁
3、效率
StringBuilder：效率高；StringBuffer：效率低
4、源码分析

String:



]]></description><category></category></item><item><title><![CDATA[Spring中的Aop底层原理]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/116004218</link><guid>https://blog.youkuaiyun.com/Here_/article/details/116004218</guid><author>Here_</author><pubDate>Thu, 22 Apr 2021 21:16:02 +0800</pubDate><description><![CDATA[什么是AOP


2.AOP底层原理（动态代理）


3、实现动态代理


这里先回顾一下静态代理
特点：代理类和被代理类在编译期间就确定下来!
//接口：代理类和被代理都实现这个接口
interface CloseFactory{
	void produceCloth();
}

//代理类
class ProxyClothFactory implements ClothFactory{
	private ClothFactory factory;//用被代理类对象进行实例化
	public Proxy.]]></description><category></category></item><item><title><![CDATA[Spring中IOC的底层原理]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/116001652</link><guid>https://blog.youkuaiyun.com/Here_/article/details/116001652</guid><author>Here_</author><pubDate>Thu, 22 Apr 2021 10:31:56 +0800</pubDate><description><![CDATA[什么是IOC？
控制反转，把对象的创建和对象之间调用付哦成交给Spring进行管理，目的是为了降低耦合。
底层原理


xml文件解析


工厂模式




反射

通过解析xml配置文件拿到类的属性值（全路径），然后通过反射去创建实例，(反射得到一个类的字节码文件）。


IOC接口




...]]></description><category></category></item><item><title><![CDATA[Springboot JPA无法自动建表,求助！！]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/115719986</link><guid>https://blog.youkuaiyun.com/Here_/article/details/115719986</guid><author>Here_</author><pubDate>Thu, 15 Apr 2021 11:41:27 +0800</pubDate><description><![CDATA[yaml配置文件：
spring:
  datasource:
    username: root
    password: 123456
    #加入时区报错了，就增加一个时区ok了&amp;serverTimezone=UTC&amp;
    url: jdbc:mysql://localhost:3306/blog?&amp;serverTimezone=UTC&amp;useUnicode=false&amp;charactEncoding=utf-8&amp;useSSL=false
  ]]></description><category></category></item><item><title><![CDATA[二叉树的遍历]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/108972345</link><guid>https://blog.youkuaiyun.com/Here_/article/details/108972345</guid><author>Here_</author><pubDate>Sat, 10 Oct 2020 09:00:53 +0800</pubDate><description><![CDATA[序指的是根结点在何时被访问
NLR（先序）、LNR(中序)、LRN(后续)
先序遍历


中序遍历

把线去掉向下压缩就是中序遍历系列。
后续遍历

后序遍历序列：452631

]]></description><category></category></item><item><title><![CDATA[初始类与命名空间]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/108984487</link><guid>https://blog.youkuaiyun.com/Here_/article/details/108984487</guid><author>Here_</author><pubDate>Fri, 09 Oct 2020 20:04:07 +0800</pubDate><description><![CDATA[Console类是命名空间System里面的，类的符号是黄色小方块连接起来；
命名空间的引用可以避免冲突；
类库（dll）是物理基础：里面有命名空间{}，命名空间里有类；
DLL引用（黑盒引用，无源代码）：
如何引用?引用-&gt;浏览-》添加

里面的命名空间.类名.方法
TOOLS是引用的MyLibrary的命名空间；
Calculator是类，Add是方法

依赖关系：

program类依赖了Calculator类，如果Calculator类有问题，那么program类也有问题；
“”高内聚，低耦合]]></description><category></category></item><item><title><![CDATA[二叉树的存储结构]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/108972158</link><guid>https://blog.youkuaiyun.com/Here_/article/details/108972158</guid><author>Here_</author><pubDate>Fri, 09 Oct 2020 08:56:05 +0800</pubDate><description><![CDATA[二叉树的顺序存储
完全二叉树

这个是在完全二叉树中，什么是完全二叉树呢？简单就是结点的编号要和满二叉树的编号一一对应。
非完全二叉树：

补成完全二叉树，然后在补入的结点位置放入0；

二叉树的链式存储

data存入数据，再声明两个指针


...]]></description><category></category></item><item><title><![CDATA[二叉树性质]]></title><link>https://blog.youkuaiyun.com/Here_/article/details/108959435</link><guid>https://blog.youkuaiyun.com/Here_/article/details/108959435</guid><author>Here_</author><pubDate>Thu, 08 Oct 2020 09:26:35 +0800</pubDate><description><![CDATA[]]></description><category></category></item></channel></rss>