<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Gblwsnd的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Gblwsnd</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Gblwsnd]]></copyright><item><title><![CDATA[分布式事务]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/133359293</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/133359293</guid><author>Gblwsnd</author><pubDate>Wed, 27 Sep 2023 17:57:51 +0800</pubDate><description><![CDATA[分布式事务用于在分布式系统中保证不同节点之间的数据一致性，分布式事务是指不是在单个服务或单个数据库架构下，产生的事务，例如：跨数据源的分布式事务跨服务的分布式事务综合情况。]]></description><category></category></item><item><title><![CDATA[Java多线程（二）]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/133185359</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/133185359</guid><author>Gblwsnd</author><pubDate>Fri, 22 Sep 2023 21:14:17 +0800</pubDate><description><![CDATA[ThreadPoolExecutor.AbortPolicy:        丢弃任务并抛出RejectedExecutionException异常。ThreadPoolExecutor.DiscardPolicy：            丢弃任务，但是不抛出异常 这是不推荐的做法。ThreadPoolExecutor.DiscardOldestPolicy：    抛弃队列中等待最久的任务 然后把当前任务加入队列中。]]></description><category></category></item><item><title><![CDATA[Java中的锁]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/133148019</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/133148019</guid><author>Gblwsnd</author><pubDate>Thu, 21 Sep 2023 21:32:37 +0800</pubDate><description><![CDATA[对于同一个数据的并发操作，悲观锁认为自己在使用数据的时候一定有别的线程来修改数据，因此在获取数据的时候会先加锁，确保数据不会被别的线程修改。Java中，我们前面介绍过的synchronized关键字和Lock的实现类都是悲观锁。]]></description><category></category></item><item><title><![CDATA[Java多线程（一）]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132993530</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132993530</guid><author>Gblwsnd</author><pubDate>Mon, 18 Sep 2023 19:59:36 +0800</pubDate><description><![CDATA[线程安全是多线程领域的问题，（线程安全问题就是在多线程环境中 , 并且存在数据共享 （即多个线程操作同一个数据））线程安全可以简单理解为一个方法或者一个实例可以在多线程环境中使用而不会出现问题。在同一程序中运行多个线程本身不会导致问题，问题在于多个线程访问了相同的资源。]]></description><category></category></item><item><title><![CDATA[ElasticSearch入门]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132909501</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132909501</guid><author>Gblwsnd</author><pubDate>Fri, 15 Sep 2023 20:51:43 +0800</pubDate><description><![CDATA[从文件的内容查找，得到包含这些内容的文件列表，再得到文件对应的信息，如文件名、作者、文件大小、创建时间等。]]></description><category></category></item><item><title><![CDATA[RabbitMQ入门]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132840173</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132840173</guid><author>Gblwsnd</author><pubDate>Tue, 12 Sep 2023 21:17:20 +0800</pubDate><description><![CDATA[P 生产者：发送消息Q 消息队列：（红色部分）可以缓存消息；生产者向其中投递消息，消费者从其中取出消息C 消费者：消息的接受者，会一直等待消息到来P 生产者：发送消息Q 消息队列：可以缓存消息；生产者向其中投递消息，消费者从其中取出消息C1 消费者：领取任务并完成任务C2 消费者2：领取任务并完成任务P 生产者：发送消息X Exchange（交换机）：生产者将消息发送到交换器，交换器根据路由规则将消息路由一个或多个队列中。]]></description><category></category></item><item><title><![CDATA[MyBatisPlus入门（一）]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132699953</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132699953</guid><author>Gblwsnd</author><pubDate>Tue, 05 Sep 2023 21:42:58 +0800</pubDate><description><![CDATA[MyBatis-Plus+(opens+new+window)（简称+MP）是一个+MyBatis+(opens+new+window)的增强工具，在+MyBatis+的基础上只做增强不做改变，为简化开发、提高效率而生。]]></description><category></category></item><item><title><![CDATA[Socket 编程]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132568626</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132568626</guid><author>Gblwsnd</author><pubDate>Tue, 29 Aug 2023 20:56:59 +0800</pubDate><description><![CDATA[创建套接字对象并将其连接到指定主机上的指定端口号。如果指定的host是null ，则相当于指定地址为回送地址。:  返回此套接字的输入流。: 返回此套接字的输出流。: 关闭此套接字。]]></description><category></category></item><item><title><![CDATA[IO流简单入门(二)]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132544298</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132544298</guid><author>Gblwsnd</author><pubDate>Mon, 28 Aug 2023 21:27:51 +0800</pubDate><description><![CDATA[概述: 缓冲流，也叫高效流，它可以对那些基本的字节字符流进行增强，达到提高数据的读写能力。原理: 创建流对象时，会创建一个内置的默认大小的缓冲区数组，通过缓冲区读写，减少系统IO次数，从而提高读写的效率。Java给我们提供了另外两种流InputStreamReader，OutputStreamWriter，这两个流我们把它叫做转换流。它们可以将字节流转换为字符流，并且可以指定编码方案。转换流原理：字节流+编码表。]]></description><category></category></item><item><title><![CDATA[IO流简单入门(一)]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132507620</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132507620</guid><author>Gblwsnd</author><pubDate>Sun, 27 Aug 2023 18:53:21 +0800</pubDate><description><![CDATA[IO流的作用：就是可以对文件或者网络中的数据进行读、写的操作。把数据从磁盘、网络中读取到程序中来，用到的是输入流。把程序中的数据写入磁盘、网络中，用到的是输出流。]]></description><category></category></item><item><title><![CDATA[双列集合(二)]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132487532</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132487532</guid><author>Gblwsnd</author><pubDate>Fri, 25 Aug 2023 16:22:10 +0800</pubDate><description><![CDATA[LinkedHashMap 和HashMap都是 Java 集合框架中的 Map 接口的实现类。HashMap迭代元素的顺序是不确定的，而 LinkedHashMap 提供了按照插入顺序或访问顺序迭代元素的功能。此外，LinkedHashMap 内部维护了一个双向链表，用于记录元素的插入顺序或访问顺序，而 HashMap则没有这个链表。因此，LinkedHashMap 的插入性能可能会比 HashMap略低，但它提供了更多的功能并且迭代效率相较于 HashMap 更加高效。]]></description><category></category></item><item><title><![CDATA[双列集合（一）]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132480297</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132480297</guid><author>Gblwsnd</author><pubDate>Thu, 24 Aug 2023 20:06:31 +0800</pubDate><description><![CDATA[双列集合,一个键对应一个值键不可以重复,值可以重复HashMap底层是哈希表结构的依赖hashCode方法和equals方法保证键的唯一如果键要存储的是自定义对象，需要重写hashCode和equals方法。]]></description><category></category></item><item><title><![CDATA[Redis常用数据类型及其常用命令(二)]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132420067</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132420067</guid><author>Gblwsnd</author><pubDate>Wed, 23 Aug 2023 19:25:29 +0800</pubDate><description><![CDATA[Redis有序集合是string类型元素的集合，且不允许有重复成员。每个元素都会关联一个double类型的分数。Redis set 是string类型的无序集合。向有序集合添加一个或多个成员，或者更新已存在成员的分数。有序集合中对指定成员的分数加上增量 increment。返回有序集中指定区间内的成员，通过索引，分数从高到低。获取指定索引范围内的元素，分数从低到高。求出集合的交集并存储到并一个集合中。返回有序集中，成员的分数值。判断元素是否在集合中。获取有序集合的成员数。移除有序集合中的元素。]]></description><category></category></item><item><title><![CDATA[Redis常用数据类型及其常用命令(一)]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132412562</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132412562</guid><author>Gblwsnd</author><pubDate>Mon, 21 Aug 2023 19:51:32 +0800</pubDate><description><![CDATA[Redis存储的是key-value结构的数据，其中key是字符串类型，value有5种常用的数据类型：字符串 string : 普通字符串，Redis中最简单的数据类型哈希 hash : 也叫散列，类似于Java中的HashMap结构列表 list : 按照插入顺序排序，可以有重复元素，类似于Java中的LinkedList集合 set : 无序集合，没有重复元素，类似于Java中的HashSet。]]></description><category></category></item><item><title><![CDATA[单列集合(二)]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132343805</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132343805</guid><author>Gblwsnd</author><pubDate>Sun, 20 Aug 2023 19:08:40 +0800</pubDate><description><![CDATA[1.如果希望元素可以重复，又有索引，索引查询要快？用ArrayList集合，基于数组的。(用的最多)2.如果希望元素可以重复，又有索引，增删首尾操作要快？用LinkedList集合，基于链表的。3.如果希望增删改查都快，但元素不重复，无序，无索引？用HashSet集合，基于哈希表的。4.如果希望增删改查都快，但元素不重复，有序，无索引？用LinkedHashSet集合，基于哈希表和双链表的。5.如果要对对象进行排序。用TreeSet集合，基于红黑树，后续也可以用List集合实现排序。]]></description><category></category></item><item><title><![CDATA[如何解决ThreadLocal 的内存泄漏问题]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132366980</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132366980</guid><author>Gblwsnd</author><pubDate>Fri, 18 Aug 2023 19:46:48 +0800</pubDate><description><![CDATA[我们知道造成内存泄漏问题的主要原因,说白了其是就是value没被回收导致的,我们只要采取一个措施,使vuale能被回收就可以解决内存泄漏问题.其实ThreadLocal本身已经考虑到了这个问题,我们只要按照规范,使用完ThreadLocal方法后,手动调用remove()方法,会将key为空的键值对清空,就解决了ThreadLocal可能会产生的内存泄漏问题.从这个示例中我们可以看到，两个线程分表获取了自己线程存放的变量，他们之间变量的获取并不会错乱。]]></description><category></category></item><item><title><![CDATA[单列集合(一)]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132326285</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132326285</guid><author>Gblwsnd</author><pubDate>Wed, 16 Aug 2023 20:56:11 +0800</pubDate><description><![CDATA[ArrayList集合底层是基于数组结构实现的,也就是说当你往集合容器中存储元素时,底层本质上是往数组中存储元素. 那么ArrayList 和 Array（数组）的有区别么,我们带着这个问题来深入探索ArrayList集合.ArrayList的特点是查询快,增删慢. ArrayList可以直接通过索引定位到数据位置,查询任意数据的耗时是相同的,但是在增删数据时,需要将增删元素索引位置后的所有元素都依次向前或后移动一个位置,理论耗时就会很长.系列集合:存储的元素是有序,可重复,有索引的。]]></description><category></category></item><item><title><![CDATA[为什么要重写 equals和hashcode 方法]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132305200</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132305200</guid><author>Gblwsnd</author><pubDate>Tue, 15 Aug 2023 19:39:22 +0800</pubDate><description><![CDATA[我们创建两个姓名和年龄都相同的Person对象,在正常的逻辑下,我们可以清楚的知道这两个对象应该是相同的,但是因为没有重写equals()和hashcode()方法,所以我们比较了两个对象的地址值,自然是得到了false的结果.同样如果将这两个对象放进一个Hashset集合或者Hashmap集合中是达不到去重效果的,在遍历set集合时,我们会得到两个相同的Person{name='张三', age=18}.这边简单的做一个代码演示,我们先随便创建一个实体类Person。]]></description><category></category></item><item><title><![CDATA[手把手学会Springboot基于阿里云实现单文件上传功能]]></title><link>https://blog.youkuaiyun.com/Gblwsnd/article/details/132282514</link><guid>https://blog.youkuaiyun.com/Gblwsnd/article/details/132282514</guid><author>Gblwsnd</author><pubDate>Mon, 14 Aug 2023 20:43:29 +0800</pubDate><description><![CDATA[max-request-size: "设定你想设定的大小,不建议太大" # 最大请求文件大小,默认10MB。max-file-size: "设定你想设定的大小,不建议太大" # 单个请求文件大小,默认1MB。accessKeySecret: "AccessKeySecret对应内容"回到OSS控制台,找到创建好的Bucket,在概览里找到区域。bucketName: "你的Bucket的名称"在这里选择阿里云的OSS服务进行文件存储。endpoint:  "区域,"url: "你的url访问域名"]]></description><category></category></item></channel></rss>