<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[kgcourage的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/kgcourage</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; kgcourage]]></copyright><item><title><![CDATA[Redis缓存数据一致性]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/134966426</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/134966426</guid><author>kgcourage</author><pubDate>Sat, 23 Dec 2023 17:25:16 +0800</pubDate><description><![CDATA[综上，针对cache处理方式和操作顺序进行分析，最终最靠谱的方案就是先更新DB，后删除Cache。但是如果业务场景要求为弱一致性或者最终一致性。先删除Cache后更新DB的方式也是可以接受的，同时安全起见，可以引入延时双删的策略。在写请求更新完DB后休眠一会儿，再次将缓存删除，可以达到最终一致性的要求。]]></description><category></category></item><item><title><![CDATA[Redis持久化]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/134793985</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/134793985</guid><author>kgcourage</author><pubDate>Tue, 19 Dec 2023 10:52:07 +0800</pubDate><description><![CDATA[Redis是内存数据库，它将所有数据存储在内存。其优点是可以高速的读写，但是缺点是如果机器一旦宕机，数据也会消失。为了数据安全，Redis需要将内存的数据持久化到磁盘上。持久化方式有和。]]></description><category></category></item><item><title><![CDATA[Redis数据库]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/134767250</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/134767250</guid><author>kgcourage</author><pubDate>Sun, 03 Dec 2023 18:53:44 +0800</pubDate><description><![CDATA[redisServer的参数比较多，主要的是**redisDb *db;**里面是每个数据库的存储信息，dbnum代表数据库的个数。]]></description><category></category></item><item><title><![CDATA[Redis对象]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/134754509</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/134754509</guid><author>kgcourage</author><pubDate>Sun, 03 Dec 2023 11:14:59 +0800</pubDate><description><![CDATA[Redis根据基本数据结构构建了自己的一套对象系统。主要包括和同时不同的对象都有属于自己的一些特定的redis指令集，而且每种对象也包括多种编码类型，和实现方式。]]></description><category></category></item><item><title><![CDATA[Redis数据结构之压缩列表]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/134753319</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/134753319</guid><author>kgcourage</author><pubDate>Sat, 02 Dec 2023 16:17:29 +0800</pubDate><description><![CDATA[每个节点的previous_entry_length保存着前一个节点的长度信息，如果前置节点发生变更时，previous_entry_length也会有可能变更。如果previous_entry_length长度发生变更，那么该节点的内存占用空间也会变更。如果本节点长度的变更，正好是后置节点的长度也在临界点（本节点长度更新后，节点长度大于254，且后置节点previous_entry_length发生变更，占用空间也由小于254变成了大于了254）发生空间占用变更。又再次引起其后置节点长度发生变化。]]></description><category></category></item><item><title><![CDATA[Redis数据结构之跳表]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/134747897</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/134747897</guid><author>kgcourage</author><pubDate>Sat, 02 Dec 2023 11:43:17 +0800</pubDate><description><![CDATA[跳表是一种有序的数据结构，它通过在每个节点中维持多个指向其他节点的指针，从而达到快速访问节点的目的。其核心思想就是通过建立多级索引来实现空间换时间。在Redis中，使用跳表作为Zset的一种底层实现之一，这也是跳表在Redis中的唯一使用场景。]]></description><category></category></item><item><title><![CDATA[Redis数据结构之字典]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/134325010</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/134325010</guid><author>kgcourage</author><pubDate>Thu, 16 Nov 2023 10:01:43 +0800</pubDate><description><![CDATA[哈希的过程就是给定一个输入，然后经过指定的哈希函数，计算出一个输出。输入的值范围大于输出的值范围，所以一定存在某多个输入，经过哈希函数计算的输出是相等的。那么这些不同的输入就是发生了哈希碰撞。]]></description><category></category></item><item><title><![CDATA[Redis数据结构之SDS]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/134305834</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/134305834</guid><author>kgcourage</author><pubDate>Thu, 09 Nov 2023 10:47:19 +0800</pubDate><description><![CDATA[redis构建了一种简单动态字符串(Simple Dynamic String， SDS)，作为Redis的默认字符串表示。SDS除了被用于保存数据中的字符串值之外，还可以用作缓冲区。]]></description><category></category></item><item><title><![CDATA[Redis文件事件模型]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/134059073</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/134059073</guid><author>kgcourage</author><pubDate>Fri, 27 Oct 2023 11:05:14 +0800</pubDate><description><![CDATA[Redis文件事件模型]]></description><category></category></item><item><title><![CDATA[Web服务器虚拟目录]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/47042829</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/47042829</guid><author>kgcourage</author><pubDate>Fri, 24 Jul 2015 16:13:07 +0800</pubDate><description><![CDATA[刚开始接触Java Web开发。在进行Web应用执行时，可以把应用直接放到Tomcat服务器安装目录下面的webapps文件夹中，就可以直接被外界访问。但是如果将所有的应用如果都这样操作，难免会有很多的不便。入股Tomcat安装在C盘更是容易在C盘产生垃圾。针对这个问题，使用虚拟目录是一个不错的选择。]]></description><category></category></item><item><title><![CDATA[dom、dom 4j解析xml文件]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/47041593</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/47041593</guid><author>kgcourage</author><pubDate>Fri, 24 Jul 2015 15:11:58 +0800</pubDate><description><![CDATA[Dom解析Dom解析是将xml文件全部载入，组装成一颗dom树，然后通过节点以及节点之间的关系来解析xml文件。本文将先建立xml文件，然后通过dom解析器对xml文件进行解析，最后通过JUnit进行代码测试。]]></description><category></category></item><item><title><![CDATA[字符串]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/46850601</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/46850601</guid><author>kgcourage</author><pubDate>Sun, 12 Jul 2015 15:38:34 +0800</pubDate><description><![CDATA[String类
String类使用private final char value[]来实现字符串的存储，也就是说，String对象创建够，就不能再改变此对象中存储的字符串内容。]]></description><category></category></item><item><title><![CDATA[数组、链表、堆栈和队列]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/46830797</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/46830797</guid><author>kgcourage</author><pubDate>Fri, 10 Jul 2015 14:50:29 +0800</pubDate><description><![CDATA[数据存储结构它是计算机的一个概念，简单讲，就是描述数据在计算机中存储方式的学科；常用的数据存储方式就两种：顺序存储，非顺序存储！顺序存储就是把数据存储在一块连续的存储介质（比如硬盘或内存）上]]></description><category></category></item><item><title><![CDATA[抽象类]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/46820857</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/46820857</guid><author>kgcourage</author><pubDate>Thu, 09 Jul 2015 19:33:16 +0800</pubDate><description><![CDATA[抽象类抽象方法和抽象类必须使用abstract修饰符来修饰，有抽象方法的类只能被定义为抽象类，抽象类里可以没有抽象方法。利用抽象类和抽象方法，我们可以更好地发挥多态的优势，让我们的程序更加灵活。]]></description><category></category></item><item><title><![CDATA[集合]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/46819571</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/46819571</guid><author>kgcourage</author><pubDate>Thu, 09 Jul 2015 17:23:50 +0800</pubDate><description><![CDATA[集合类集合时用来只能存储其他对象的对象，代表了一种底层结构，用于扩展数组的功能。集合框架有一些列的接口和实现类组成，包括：列表(List)、集合(Set)、映射(Map)等，它们大多具有可迭代性和可比较性。Java容器类库一共有两种主要类型：Collection和Map]]></description><category></category></item><item><title><![CDATA[构造器]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/46808295</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/46808295</guid><author>kgcourage</author><pubDate>Wed, 08 Jul 2015 20:40:52 +0800</pubDate><description><![CDATA[构造器（构造函数）构造器是一个特殊的方法，这个特殊方法用于创建类的实例。Java类必须包含一个或一个以上的构造器。构造器主要用于被其他方法来调用，用以返回该类的实例。构造器必须与类名相同。]]></description><category></category></item><item><title><![CDATA[this&super]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/46806607</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/46806607</guid><author>kgcourage</author><pubDate>Wed, 08 Jul 2015 17:49:37 +0800</pubDate><description><![CDATA[this&superthis和super在java中是比较重要而且有点可比性的两个关键字。现在将this和super关键字的相关用法进行总结thisthis关键字使用在一个成员函数的内部，指向当前对象，当前对象指的是调用当前正在执行方法的那个对象。]]></description><category></category></item><item><title><![CDATA[多线程]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/46791893</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/46791893</guid><author>kgcourage</author><pubDate>Tue, 07 Jul 2015 17:14:58 +0800</pubDate><description><![CDATA[一、线程概述线程和进程进程：正在运行的程序。线程：线程依赖于进程，CPU运行进程，其实就是在运行这个进程的线程。Java语言无法直接操作系统，比如IO和我们的线程都要依赖于第三方语言，java语言又把这些内容封装成类，多线程封装成一个类Thread。Java语言如果要实现多线程，必须依赖于Thread这个类。线程工作机理线程的随机原理：多个程序其实是CPU的在做着高效切换执行的二、创建线程方法一：继]]></description><category></category></item><item><title><![CDATA[异常]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/45173697</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/45173697</guid><author>kgcourage</author><pubDate>Tue, 21 Apr 2015 17:50:09 +0800</pubDate><description><![CDATA[异常参考：http://www.cnblogs.com/xiohao/p/3547443.html在java程序运行时，常常会出现一些非正常的现象，这种情况被称为运行错误。根据其性质分为“错误”和“异常”。所有抛出（throw）的异常都必须被从Throwable派生而来。类Throwable有两个直接子类。Error类和Exception类。什么是错误Java对应的错误类为Error类。Error类]]></description><category></category></item><item><title><![CDATA[子线程实现UI更新]]></title><link>https://blog.youkuaiyun.com/kgcourage/article/details/45150445</link><guid>https://blog.youkuaiyun.com/kgcourage/article/details/45150445</guid><author>kgcourage</author><pubDate>Mon, 20 Apr 2015 14:56:47 +0800</pubDate><description><![CDATA[参考：http://www.cnblogs.com/lyroge/p/3837905.html 
参考：http://www.cnblogs.com/codingmyworld/archive/2011/09/14/2174255.html#!comments概述我们开发应用程序的时候，处于线程安全的原因子线程通常是不能直接更新主线程（UI线程）中的UI元素的。但是一般网络编程中，业务实现是不提倡在]]></description><category></category></item></channel></rss>