<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Luo_CC的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Luo_CC</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Luo_CC]]></copyright><item><title><![CDATA[SQL 性能起飞]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/121225492</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/121225492</guid><author>Luo_CC</author><pubDate>Tue, 09 Nov 2021 12:30:26 +0800</pubDate><description><![CDATA[1. 对查询进行优化，应尽量避免全表扫描，首先应考虑在 where 及 order by 涉及的列上建立索引。

2. 应尽量避免在 where 子句中对字段进行 null 值判断，创建表时NULL是默认值，但大多数时候应该使用NOT NULL，或者使用一个特殊的值，如0，-1作为默 认值。

3. 应尽量避免在 where 子句中使用!=或&lt;&gt;操作符， MySQL只有对以下操作符才使用索引：&lt;，&lt;=，=，&gt;，&gt;=，BETWEEN，IN，以及某些时候的LIKE。

关..]]></description><category></category></item><item><title><![CDATA[java 使用ReentrantLock与Condition实现简单的消息队列]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/119774902</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/119774902</guid><author>Luo_CC</author><pubDate>Wed, 18 Aug 2021 10:39:26 +0800</pubDate><description><![CDATA[import java.util.LinkedList;
import java.util.Queue;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;

/**
 * @author luocc
 */
public class ConditionTest {

 .]]></description><category></category></item><item><title><![CDATA[【程序员思维】用两个鸡蛋判断鸡蛋在多少楼层扔下不会碎]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/84585740</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/84585740</guid><author>Luo_CC</author><pubDate>Thu, 05 Aug 2021 13:57:53 +0800</pubDate><description><![CDATA[题目：如果你有两个鸡蛋，并且想搞清楚在不摔破鸡蛋的前提下最高能从多高的地方往下扔鸡蛋，你会采取怎样的做法？最优的解决方案是哪种？

解题思维：如果鸡蛋刚好在n层碎掉，那么说明鸡蛋在n-1层不会碎。

设 楼层高度为m层 ，先用第一个鸡蛋在m/2层扔下

1）如果碎掉，即最坏可能，第二个鸡蛋只能从1层到(m/2-1)层继续依次扔下，测试刚好碎掉的楼层n，这样需要操作n次

2）如果未碎掉，则我们再将...]]></description><category></category></item><item><title><![CDATA[Redis 进阶]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/119376568</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/119376568</guid><author>Luo_CC</author><pubDate>Thu, 05 Aug 2021 11:26:06 +0800</pubDate><description><![CDATA[这一块内容建议结合教学视频与官网进行学习，这里只提及一些关键词的说明


主从复制Replication

一般搭建redis集群时使用，集群搭建
]]></description><category></category></item><item><title><![CDATA[Redis 数据类型与使用命令大全以及Java使用]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/119179349</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/119179349</guid><author>Luo_CC</author><pubDate>Wed, 28 Jul 2021 14:33:57 +0800</pubDate><description><![CDATA[基础数据类型
具体详情可直接访问Redis官网，这里只做命令总结

String 二进制安全的字符串
Lists: 按插入顺序排序的字符串元素的集合。他们基本上就是链表（linked lists）。
Sets: 不重复且无序的字符串元素的集合。
Sorted sets (ZSets),类似Sets,但是每个字符串元素都关联到一个叫score浮动数值（floating number value）。里面的元素总是通过score进行着排序，所以不同的是，它是可以检索的一系列元素。（例如你可能会问：给我前面10个或]]></description><category></category></item><item><title><![CDATA[Docker 安装Redis]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/118979386</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/118979386</guid><author>Luo_CC</author><pubDate>Wed, 21 Jul 2021 23:44:33 +0800</pubDate><description><![CDATA[安装与部署  （Docker 安装Redis）
1 获取最新版的 Redis 镜像
这里我们拉取官方的最新版本的镜像：
$ docker pull redis:latest

2 查看本地镜像
使用以下命令来查看是否已安装了 redis：
$ docker images


在上图中可以看到我们已经安装了最新版本（latest）的 redis 镜像。
3、配置文件
redis.conf
# Redis配置文件样例

# Note on units: when memory size is needed, i]]></description><category></category></item><item><title><![CDATA[java面试题知识点整理（五 对象拷贝）]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/118363941</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/118363941</guid><author>Luo_CC</author><pubDate>Wed, 30 Jun 2021 17:24:18 +0800</pubDate><description><![CDATA[1. 为什么要使用克隆？

克隆可以基于原型实例，进行复制对象，并且不影响原型对象

优点 ： 不需要new 实例对象，再逐一初始化参数。

（Java 中 clone 是 native 方法，克隆使用也非常快）

2. 如何实现对象克隆？

实现首先需要克隆的类 要实现Cloneable，使用类对象 调用 Object#clone()

注意：

不实现Cloneable,使用clone() 会抛出CloneNotSupportedException。
	类重写clone()，需要调用super...]]></description><category></category></item><item><title><![CDATA[LRU缓存，基于哈希表与链表实现]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/117226911</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/117226911</guid><author>Luo_CC</author><pubDate>Mon, 24 May 2021 16:49:48 +0800</pubDate><description><![CDATA[public class LRUCache&lt;K,V&gt; {

    class DLinkedNode{
        K key;
        V value;
        DLinkedNode prev;
        DLinkedNode next;
        public DLinkedNode() {}
        public DLinkedNode(K _key, V _value) {key = _key; value = _value;}
    }
]]></description><category></category></item><item><title><![CDATA[js时间类操作整理]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/113769342</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/113769342</guid><author>Luo_CC</author><pubDate>Tue, 09 Feb 2021 14:33:41 +0800</pubDate><description><![CDATA[js篇
Date对象

常见对象方法

//
var d = new Date()  // 当前获取当前时间
//Tue Feb 09 2021 13:21:03 GMT+0800 (中国标准时间)
d.getFullYear() // 根据时间获取 年
//2021
d.getMonth() // 根据时间获取 月 0-11 对应 1到12月
//1  对应2月
d.getDate() //  根据时间获取 日
//9
d.getDay() // 根据时间获取周  0-6  对应  星期日、一、二、三、四]]></description><category></category></item><item><title><![CDATA[动态规划练习入门（斐波拉契数列）]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/113351885</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/113351885</guid><author>Luo_CC</author><pubDate>Thu, 28 Jan 2021 17:25:48 +0800</pubDate><description><![CDATA[算法这一块，动态规划问题的一般形式就是求最值，在计算机问题上应用比较多，需要多探究，这是我对动态规划的一个练习入门-斐波拉契数列
/**
 * 斐波拉契 练习动态规划
 *         { 1 , n=1 | n=2
 * f(x) =  {
 *         { f(x-2) + f(x-1)
 * @author
 */
public class Fibonacci {
    /**
     * 暴力递归 直接根据方程进行递归，
     * 但是这种方法 会重复计算多次
     * 如 ]]></description><category></category></item><item><title><![CDATA[基础数据int与包装类Integer使用总结]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/112776392</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/112776392</guid><author>Luo_CC</author><pubDate>Mon, 18 Jan 2021 14:16:23 +0800</pubDate><description><![CDATA[取值问题
默认值 ： int = 0  ,Integer = null
范围：两者均为  -231 (-2147483648)~ 231-1 (-2147483648)
比较
相等

int == int : 基本比较使用  ==
int == Integer : Integer 默认会拆包成基础数据，对两者数值进行比较，但是Integer 如果为 null ,则会抛出NullPointerException

	int a;Integer b;
	a == b //throw NullPointerExc]]></description><category></category></item><item><title><![CDATA[设计模式（创建型）]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/112624983</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/112624983</guid><author>Luo_CC</author><pubDate>Thu, 14 Jan 2021 18:03:00 +0800</pubDate><description><![CDATA[创建型
单例（Singleton）

确保一个类只有一个实例，并提供该实例的全局访问点。

实现
Ⅰ 懒汉式-线程不安全
以下实现中，私有静态变量 uniqueInstance 被延迟实例化，这样做的好处是，如果没有用到该类，那么就不会实例化 uniqueInstance，从而节约资源。
这个实现在多线程环境下是不安全的，如果多个线程能够同时进入 if (uniqueInstance == null) ，并且此时 uniqueInstance 为 null，那么会有多个线程执行 uniqueInstance]]></description><category></category></item><item><title><![CDATA[设计模式-设计原则]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/112325992</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/112325992</guid><author>Luo_CC</author><pubDate>Thu, 07 Jan 2021 18:01:59 +0800</pubDate><description><![CDATA[设计模式
设计原则 S.O.L.I.D
1. 单一责任原则  SRP  (The Single Responsibility Principle  )

修改一个类的原因应该只有一个。

换句话说就是让一个类只负责一件事，当这个类需要做过多事情的时候，就需要分解这个类。
如果一个类承担的职责过多，就等于把这些职责耦合在了一起，一个职责的变化可能会削弱这个类完成其它职责的能力。
2. 开闭原则  OCP (The Open Closed Principle )

类应该对扩展开放，对修改关闭。

扩展就是添加]]></description><category></category></item><item><title><![CDATA[Java 切换win10壁纸]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/112288671</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/112288671</guid><author>Luo_CC</author><pubDate>Wed, 06 Jan 2021 18:32:49 +0800</pubDate><description><![CDATA[选择壁纸图片

以图片或幻灯片指定一张图片或文件夹，具体操作（省略）

使用JAVA从网上下载图片

注 ： 这里采用了360 图库 api

import cn.hutool.json.JSON;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

import javax.imageio.ImageIO;
import java.awt.image.Buff]]></description><category></category></item><item><title><![CDATA[算法与数据结构（算法）]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/112244327</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/112244327</guid><author>Luo_CC</author><pubDate>Tue, 05 Jan 2021 16:54:17 +0800</pubDate><description><![CDATA[算法
时间复杂度

T(n) = O(f(n)) 大O计算法  代码执行次数最多原则进行计算

1.O(1) 常量级

可数的量时即为O(1) 如循环次数为100次也为O(1)

2.O(n) 线性级

时间复杂度根据n增长而增长

3.O(log2n)、O(nlog2n) 对数级
执行x次大于n时，2x=n -&gt; x=log2 n
wihle(i&lt;n){
    i = i*2 
}

空间复杂度
1.O(1) 常量级

可数的量时即为O(1) 如int i = 0;

2.O(n) 线性级
]]></description><category></category></item><item><title><![CDATA[JAVA面试题整理大全 （四、反射）]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/111559328</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/111559328</guid><author>Luo_CC</author><pubDate>Mon, 04 Jan 2021 11:05:56 +0800</pubDate><description><![CDATA[反射
1. 什么是反射？
在运行状态中，都能够查看/调用它的任意一个方法和属性；这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2. 什么是 Java 序列化？什么情况下需要序列化？
3. 动态代理是什么？有哪些应用？
4. 怎么实现动态代理？

...]]></description><category></category></item><item><title><![CDATA[算法与数据结构（java数据结构）]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/112007808</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/112007808</guid><author>Luo_CC</author><pubDate>Thu, 31 Dec 2020 14:10:04 +0800</pubDate><description><![CDATA[数据结构：存储数据的结构


算法：操作数据的方法 如何操作数据效率高，更节约资源

数据结构

可分为 线性结构、树形结构、图
动画效果

线性表

数据像线一样排列   主要有：数组、链表、队列、栈等

数组

线性表结构，用一组连续的内存空间来存储相同类型的数据

如   [1,2,3,4,5,6,7,8,9…,n]
逻辑结构：数组a有n个元素，可表示为（a1,a2,a3..an）

物理结构：在连续的内存空间存储数组，设置每个元素的下标进行查找

数据访问:

    a[i] = bassAdd.]]></description><category></category></item><item><title><![CDATA[MultipartFile上传附件文件名处理记录]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/111510388</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/111510388</guid><author>Luo_CC</author><pubDate>Tue, 22 Dec 2020 10:39:46 +0800</pubDate><description><![CDATA[getOriginalFilename()   获取原始文件名。
在chorme中获取是文件名+后缀，在IE模式中获取的是路径+文件名+后缀。
如 文件路径 D:/temp/1.txt
chorme上传文件，getOriginalFilename() == “1.txt”；
IE模式上传文件，getOriginalFilename() ==“D:/temp/1.txt”
所以要对文件名要进行统一处理，避免文件名处理问题。
for (MultipartFile file:files) {
      Stri]]></description><category></category></item><item><title><![CDATA[SpringBoot-监控Druid数据源整合]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/108006387</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/108006387</guid><author>Luo_CC</author><pubDate>Fri, 14 Aug 2020 16:51:51 +0800</pubDate><description><![CDATA[1.介绍
&nbsp;&nbsp;Druid是阿里巴巴开源平台上一个数据库连接池实现，它不但结合了C3P0、DBCP、PROXOOL等数据库连接池的优点，同时还加入了日志监控，可以分别监控DB池连接和SQL的执行情 况，是一款针对监控而生的数据库连接池
2.添加POM依赖
&nbsp;&nbsp;添加druid启动场景
&lt;!-- druid连接池 --&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;com.alibaba&lt;/groupId&gt;]]></description><category></category></item><item><title><![CDATA[JAVA面试题整理大全（三、容器）]]></title><link>https://blog.youkuaiyun.com/Luo_CC/article/details/107787085</link><guid>https://blog.youkuaiyun.com/Luo_CC/article/details/107787085</guid><author>Luo_CC</author><pubDate>Fri, 07 Aug 2020 13:18:14 +0800</pubDate><description><![CDATA[18. Java 容器都有哪些？
1）Collection：一个独立元素的序列，这些元素都服从一条或者多条规则。 List必须按照插入的顺序保存元素，而set不能有重复的元素。Queue按照排队规则来确定对象产生的顺序（通常与它们被插入的顺序相同）。
2）Map：一组成对的“键值对”对象，允许你使用键来查找值。]]></description><category></category></item></channel></rss>