<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Uracil</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Uracil]]></copyright><item><title><![CDATA[【Bug/Spring Cache】Caused by: java.lang.IllegalArgumentException]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/131613832</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/131613832</guid><author>Uracil</author><pubDate>Sat, 08 Jul 2023 16:41:34 +0800</pubDate><description><![CDATA[【代码】【Bug/Spring Cache】Caused by: java.lang.IllegalArgumentException。]]></description><category></category></item><item><title><![CDATA[【Bug/Redis集群】连接公网集群失败问题]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/131211299</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/131211299</guid><author>Uracil</author><pubDate>Wed, 14 Jun 2023 16:55:38 +0800</pubDate><description><![CDATA[在阿里云上租了四台linux服务器，因为是4个账号白嫖的不在同一个局域网，但是有4个公网IP。在每一台服务器上安装redis，并搭建为一个四台主服务器，无从服务器的集群。搭建好后在每一台服务器上连接到其他服务器都是能连通的。配置的外网IP会报出一个内网IP连接失败。]]></description><category></category></item><item><title><![CDATA[【练习/JUC】实现ReentrantLock简单版]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/130703374</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/130703374</guid><author>Uracil</author><pubDate>Tue, 16 May 2023 13:21:12 +0800</pubDate><description><![CDATA[实现了一个精简版的ReentrantLock，逻辑比较清晰。思路应该和真正的ReentrantLock差不多？希望发现Bug的读者指点下。经过测试没什么问题。]]></description><category></category></item><item><title><![CDATA[【设计模式】简单理解五种设计模式]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/130490753</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/130490753</guid><author>Uracil</author><pubDate>Thu, 04 May 2023 18:49:14 +0800</pubDate><description><![CDATA[而且单例模式的所有写法都是可以用一些奇怪的方式破坏的。对于普通的单例模式写法（即不使用静态内部类和枚举类），根据类加载机制，如果单例类。动态代理主要就是用JDK动态代理（通过接口）和CGLIB动态代理（通过继承）。回调函数就是一种订阅者只有一个的观察者模式。工厂模式又分为三种：简单工厂、工厂方法、抽象工厂。套娃模式，比如JDK中的IO流使用了这种模式。（权限检查，日志记录等），装饰者模式重在。，饿汉式和懒汉式其实本质没什么不同。代理模式又分为静态代理和动态代理。单例模式又分为懒汉式和饿汉式。]]></description><category></category></item><item><title><![CDATA[【练习/Android】使用okhttp3阻塞建立WebSocket连接]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/130469222</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/130469222</guid><author>Uracil</author><pubDate>Wed, 03 May 2023 01:56:27 +0800</pubDate><description><![CDATA[这个方法是异步的，不管连接成功与否都会直接先返回一个WebSocket对象。有时后面的处理需要连接结果，也就是阻塞处理，下面是一个解决方式。]]></description><category></category></item><item><title><![CDATA[【练习/后端】JWT实现新设备登录顶掉旧设备的一种简单实现]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/130469193</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/130469193</guid><author>Uracil</author><pubDate>Wed, 03 May 2023 01:43:06 +0800</pubDate><description><![CDATA[中心思想就是在JWT令牌中生成一个随机数，并记录这个令牌的第一次生成的时间。如果之后使用这个令牌进行登录但发现当前记录的最近一次的登录令牌不是这个，就要阻止登录。方法返回true说明允许登录，false则是令牌失效。]]></description><category></category></item><item><title><![CDATA[【原理/深度学习】基本原理入门]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/130163643</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/130163643</guid><author>Uracil</author><pubDate>Sat, 15 Apr 2023 00:32:33 +0800</pubDate><description><![CDATA[神经网络的学习本质上就是通过大量训练进行网络中的参数更新。这么说有点笼统，下面使用一个简单的例子介绍下神经网络训练的过程。经常看到神经网络的图片是下面这样的（百度百科）：初看可能摸不到头脑，实际上只是进行了简单的矩阵乘法。绿色的输入层是一个1*4的矩阵图中的每一个圆代表一个神经元，其中存储一个数输入层和隐层之间的连线每一条线代表了一个参数wijw_{ij}wij​，参数和输入层的数相乘并与其他指向相同输出神经元的乘积相加得到隐层中那个神经元的值。]]></description><category></category></item><item><title><![CDATA[【Bug/跨域】Springboot配置了允许跨域浏览器仍然提示]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/129679680</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/129679680</guid><author>Uracil</author><pubDate>Tue, 21 Mar 2023 00:26:12 +0800</pubDate><description><![CDATA[用chrome浏览器查看一下响应头，情况可能是每个和跨域相关的响应头设置了两遍，这种情况下浏览器仍然会阻止跨域。我是在网关中配置了跨域，转发的微服务中又配置了一遍导致的。]]></description><category></category></item><item><title><![CDATA[【Bug/Mybatis Plus】Cannot resolve symbol ‘MybatisPlusInterceptor‘]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/129671272</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/129671272</guid><author>Uracil</author><pubDate>Mon, 20 Mar 2023 16:57:01 +0800</pubDate><description><![CDATA[解决：1. mybatis-plus-boot-starter 3.4之后的分页才会使用这个类，更改版本。2. 第一条改完还有这个问题，去本地maven仓库。下把baomidou删了让依赖重新下载。]]></description><category></category></item><item><title><![CDATA[【原理/Java容器】简单理解ConcurrentHashMap源码]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/129562566</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/129562566</guid><author>Uracil</author><pubDate>Wed, 15 Mar 2023 21:57:48 +0800</pubDate><description><![CDATA[右移位16位让int类型的高16位与低16位异或，尽可能打散哈希值。向ConcurrentHashMap中放值都会走这个方法。这样它们就都会加在table[1]的位置上，方便看扩容。，相与完保证hash为正，负数有特殊含义。HASH_BITS是最大整型值，用于二次哈希提高均匀性，传入了。]]></description><category></category></item><item><title><![CDATA[【原理/计算机网络】理解分层和寻址]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/129350661</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/129350661</guid><author>Uracil</author><pubDate>Mon, 06 Mar 2023 00:15:00 +0800</pubDate><description><![CDATA[我们对于计算机网络的学习通常是按照网络结构的分层结构逐层进行学习的，各层之间的协议都是分开讲解的，学完可能某个协议听明白了，但这个协议在实际网络传输中起到了什么作用可能感觉还是云里雾里。本篇根据网络五层结构（应用层、传输层、网络层、数据链路层、物理层）说下数据是如何从一台计算机的应用程序通过网络一步步传到远程计算机目标应用程序的。（每一层实际的处理要比本篇叙述要复杂得多，本文中只涉及最核心的流程）]]></description><category></category></item><item><title><![CDATA[【原理/Java并发】深入理解volatile与MESI]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/129326651</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/129326651</guid><author>Uracil</author><pubDate>Sun, 05 Mar 2023 13:54:43 +0800</pubDate><description><![CDATA[要说Java里面并发相关的内容里最复杂的，我觉得就是volatile关键字了。最基本的功能大部分Java程序员都能说出来，就是保证了可见性有序性，但是不保证原子性。至于原理，看过的各种文章和视频既有说原理是内存屏障的，又有说是lock前缀。本篇结合我看过的文章，从解决可见性和有序性的两方面精炼总结一下volatile从JVM层面到CPU执行的原理。文章链接已经插入在本文当中。全文主要内容都是基于x86平台。水平有限，有错误还请指出。]]></description><category></category></item><item><title><![CDATA[【原理/Java并发】简单理解ThreadLocal]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/129281899</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/129281899</guid><author>Uracil</author><pubDate>Wed, 01 Mar 2023 18:19:28 +0800</pubDate><description><![CDATA[【代码】【Java并发】快速理解ThreadLocal。]]></description><category></category></item><item><title><![CDATA[【原理/Sentinel】RT降级策略原理]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/129230976</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/129230976</guid><author>Uracil</author><pubDate>Mon, 27 Feb 2023 23:58:14 +0800</pubDate><description><![CDATA[在1.8.0之前的版本中，Sentinel的降级策略可以选择RT，也就是平均响应时间的降级策略。从网上也能了解到基本规则就是：平均响应时间 (DEGRADE_GRADE_RT)：当资源的平均响应时间超过阈值（DegradeRule 中的 count，以 ms 为单位）之后，资源进入准降级状态。]]></description><category></category></item><item><title><![CDATA[【Bug/环境配置】Nginx配置问题]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/128921082</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/128921082</guid><author>Uracil</author><pubDate>Tue, 07 Feb 2023 17:06:41 +0800</pubDate><description><![CDATA[如何查看nginx运行过程中的日志在nginx.conf中最外层级添加，info是日志记录级别。使用后nginx并没有启动首先使用先查看是否启动，或者端口是否被应用占用。之后可以直接使用nginxuser root;admin在linux和macOS下想把nginx部署在小于1024端口需要root权限，可以使用sudo -i切换到root用户来运行（homebrew又强烈不建议这样做，很迷惑）。如果只使用sudo修饰我遇到了上面问题2中的第四个问题。]]></description><category></category></item><item><title><![CDATA[【练习/Java并发】实现CompletableFuture简单版]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/128118813</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/128118813</guid><author>Uracil</author><pubDate>Wed, 30 Nov 2022 17:57:45 +0800</pubDate><description><![CDATA[最近在学习过程中了解到了CompletableFuture异步编排，感觉很好用。（不过我还是更习惯使用传统方式控制多线程）还没有看过源码，想试试能不能简单实现部分功能。如果你发现代码的问题希望指出。暂时实现了和。]]></description><category></category></item><item><title><![CDATA[【练习/shell】谷粒商城环境启动脚本]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/128082192</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/128082192</guid><author>Uracil</author><pubDate>Mon, 28 Nov 2022 16:24:11 +0800</pubDate><description><![CDATA[为了方便启动和关闭环境，写了下面的脚本。需要的可以根据自己环境配置进行修改，适用于macOS。]]></description><category></category></item><item><title><![CDATA[【原理/计算机网络】HTTPS中TLS握手过程（实验）]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/128001330</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/128001330</guid><author>Uracil</author><pubDate>Wed, 23 Nov 2022 19:35:33 +0800</pubDate><description><![CDATA[之前总是看到各种关于https流程的总结，关于数字证书和数字签名什么的也都知道个大概，但是具体https是怎么执行的一直也没验证过。看过一个视频讲得很好【HTTPS是什么？加密原理和证书。SSL/TLS握手过程】，今天想学着用WireShark抓包实验一下。Wireshark官网。]]></description><category></category></item><item><title><![CDATA[【笔记/后端】谷粒商城高级篇]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/127943673</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/127943673</guid><author>Uracil</author><pubDate>Sat, 19 Nov 2022 23:37:27 +0800</pubDate><description><![CDATA[可以嵌套多个server，配置代理，缓存，日志定义等绝大多数功能和第三方模块的配置，如文件引入，mime-type定义，日志自定义，是否使用sendile传掩文件，连接超时时间，单连接请求数等。查询一个一定不存在的数据，由于缓存没命中，去查数据库，数据库也不存在这条记录，不会写入缓存，之后再请求这个不存在数据都会到数据库去查询。电商类应用，商品分类，商品列表等适合缓存并加一个失效时间（根据更新频率来定），后台如果发布一个商品，买家需要5分钟才能看到新的商品一般还是可以接受的。配置影响nginx全局的指令。]]></description><category></category></item><item><title><![CDATA[【练习/Python】绘图给点标数值]]></title><link>https://blog.youkuaiyun.com/Uracil/article/details/127895731</link><guid>https://blog.youkuaiyun.com/Uracil/article/details/127895731</guid><author>Uracil</author><pubDate>Wed, 16 Nov 2022 23:37:33 +0800</pubDate><description><![CDATA[函数可以实现，不过不那么优雅。原理就是把数添加到图中指定的位置。第1个参数是x轴位置，第2个参数是y轴位置，第3个是要标注的值。]]></description><category></category></item></channel></rss>