<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cssnnd的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/cssnnd</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; cssnnd]]></copyright><item><title><![CDATA[MYSQL数据库底层基础专栏]]></title><link>https://blog.csdn.net/cssnnd/article/details/124909587</link><guid>https://blog.csdn.net/cssnnd/article/details/124909587</guid><author>cssnnd</author><pubDate>Mon, 23 May 2022 22:22:28 +0800</pubDate><description><![CDATA[什么时候需要重建索引？
当索引建立后在实际业务使用中频繁发生update delete操作
如何判断索引是否应该被重建？
1.索引倾斜度，看是否浪费了空间，对索引进行分析
analyze index  #index_name validate structrue;
2.在session中查询index_stats表
select height,DEL_LF_ROWS/LF_ROWS from index_stats;
当height的结果，即索引深度，从根节点到叶节点的高度，或者DEL_LF_ROWS/LF]]></description><category></category></item><item><title><![CDATA[JAVA面试宝典面经系列之JAVA基础-含JAVA基础语法，集合，线程等方面的使用与面试热点频点问题（二）]]></title><link>https://blog.csdn.net/cssnnd/article/details/124809727</link><guid>https://blog.csdn.net/cssnnd/article/details/124809727</guid><author>cssnnd</author><pubDate>Sun, 22 May 2022 11:05:55 +0800</pubDate><description><![CDATA[Java的序列化和反序列化
序列化可以将对象转化为字节序列，字节序列可以保存在磁盘上，也可以通过网络传输，并允许程序将字节序列恢复为原来的对象，其中对象的序列化是指将一个对象写入IO流，对象的反序列化指从IO流获取到JAVA对象。
如果对象需要支持序列化机制，则它的类需要实现Serializable接口，该接口是一个标记接口，没有提供任何的方法，只是表明对象可以被序列化，Java的很多类已经实现Serializable接口，String类，Date类都实现了。
如果需要实现序列化，需要用对象流ObjectI]]></description><category></category></item><item><title><![CDATA[JAVA面试宝典面经系列之JAVA基础-含JAVA基础语法，集合，线程等方面的使用与面试热点频点问题]]></title><link>https://blog.csdn.net/cssnnd/article/details/124787258</link><guid>https://blog.csdn.net/cssnnd/article/details/124787258</guid><author>cssnnd</author><pubDate>Mon, 16 May 2022 22:18:59 +0800</pubDate><description><![CDATA[JAVA的基本数据类型
需要了解有哪些基础数据类型，数据范围，以及它们所占内存空间




数据类型
所占内存空间
数据范围




byte
1字节（8位）
-2^8 ~  2^8-1


short
2字节（16位）
-2^16 ~ 2^16-1


int
4字节（32位）
-2^32 ~ 2^32 -1


long
8字节（64位）
-2^64 ~2^64-1


float
4字节(32位）
-2^32 ~ 2^32-1


double
8 字节（64位）
-2^64 ~2^64-1


ch]]></description><category></category></item><item><title><![CDATA[Redis为什么比MYSQL快，理由不止单线程，深耕解析Redis底层结构]]></title><link>https://blog.csdn.net/cssnnd/article/details/124764336</link><guid>https://blog.csdn.net/cssnnd/article/details/124764336</guid><author>cssnnd</author><pubDate>Sat, 14 May 2022 12:36:20 +0800</pubDate><description><![CDATA[Redis为什么比MYSQL快
主要是基于几个方面，其中最重要的就是Redis底层的多路复用

1.Redis的读写是基于内存中的，相比数据库的读写是基于磁盘的，例如在数据库中数据是以树的形式存储的，每经过一个树节点即为一次IO操作，而Redis的读写不涉及磁盘，从操作上就比Mysql快了。
2.第二个方面，即数据结构方面。Redis存储数据是以K-V的形式存储，时间复杂度是O1，而Mysql的底层一般是B+树，时间复杂度是Ologn，所以相比Redis速度也没有它快。
3.第三个方面，也是比较片面的一个方]]></description><category></category></item><item><title><![CDATA[git命令查看代码提交行数和提交次数排名]]></title><link>https://blog.csdn.net/cssnnd/article/details/124756836</link><guid>https://blog.csdn.net/cssnnd/article/details/124756836</guid><author>cssnnd</author><pubDate>Fri, 13 May 2022 17:52:40 +0800</pubDate><description><![CDATA[gitlab有的查看不到总的提交贡献行数。所以只能通过命令查看
上命令
git log --author="xxx" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -

其中xxx替换为你的账号
与其他用户比较提交的代码行数与排]]></description><category></category></item><item><title><![CDATA[雪花算法如何确保全局唯一，原理详解]]></title><link>https://blog.csdn.net/cssnnd/article/details/117886257</link><guid>https://blog.csdn.net/cssnnd/article/details/117886257</guid><author>cssnnd</author><pubDate>Sun, 13 Jun 2021 22:49:42 +0800</pubDate><description><![CDATA[概念部分：

雪花算法，是 Twitter 开源的分布式 id 生成算法。
一般数据库的ID自增并不能满足分布式场景下全局唯一的情况。
雪花算法主要是为了在分布式的场景下，生成有序，且全局唯一的ID。
但是也不是所有地方/所有表都需要生成全局唯一ID，一般应用于比如订单，商品信息等系统主流程的情况下。也就是说一般像非主业务部分（系统配置，工作流配置等）
系统配置：比如配置某个开关，比方美团订单派单给配送员的公里数配置，这个公里数一定不是在系统中写固定值的，一定是某个可以配置的范围值。否则改一次配置需要发一次]]></description><category></category></item><item><title><![CDATA[利用SQL做好数调，修改表中某个日期的字段，只改变它的日期年月日，不改变原本的小时，分钟，秒]]></title><link>https://blog.csdn.net/cssnnd/article/details/116400386</link><guid>https://blog.csdn.net/cssnnd/article/details/116400386</guid><author>cssnnd</author><pubDate>Tue, 04 May 2021 14:29:31 +0800</pubDate><description><![CDATA[假设需求：
把表 user的字段 created_time 的日期修改到 2021-05-04，时分秒不变
sql：
UPDATE user SET created_time =ADDTIME(DATE(‘2021-05-04’) +INTERVAL 0 HOUR,TIME(created_time)) where id=21203 ;
说明：
DATE() : 提取日期或日期/时间表达式的日期部分
DATE(‘2020-02-25’) +INTERVAL 0 HOUR 等于 2020-02-25 00:0]]></description><category></category></item><item><title><![CDATA[关于Maven编译时出现：unable to find valid certification path to requested target]]></title><link>https://blog.csdn.net/cssnnd/article/details/116110148</link><guid>https://blog.csdn.net/cssnnd/article/details/116110148</guid><author>cssnnd</author><pubDate>Sat, 24 Apr 2021 23:11:54 +0800</pubDate><description><![CDATA[首先这是一个网络证书问题，通常接入一些特殊的网络环境就会这样，比如校园网，这时就要跳过证书认证。
在Maven命令后加入参数“-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true”



...]]></description><category></category></item><item><title><![CDATA[Maven生命周期解读，生命周期三阶段与Maven构建直接的关系]]></title><link>https://blog.csdn.net/cssnnd/article/details/114854576</link><guid>https://blog.csdn.net/cssnnd/article/details/114854576</guid><author>cssnnd</author><pubDate>Mon, 15 Mar 2021 22:28:14 +0800</pubDate><description><![CDATA[Maven 构建生命周期定义了一个项目构建跟发布的过程。

一个典型的 Maven 构建（build）生命周期是由以下几个阶段的序列组成的：





阶段
作用




验证validate
验证项目，验证项目是否正确且所有必须信息是可用的


编译 compile
执行编译，源代码编译在此阶段完成


测试 Test
测试，使用适当的单元测试框架（例如JUnit）运行测试。


包装 package
打包，创建JAR/WAR包如在 pom.xml 中定义提及的包


检查 verify
检查，对集成测试]]></description><category></category></item><item><title><![CDATA[Java8--20道关于Stream流的题目练习]]></title><link>https://blog.csdn.net/cssnnd/article/details/114776858</link><guid>https://blog.csdn.net/cssnnd/article/details/114776858</guid><author>cssnnd</author><pubDate>Sun, 14 Mar 2021 09:51:30 +0800</pubDate><description><![CDATA[正题开始
Student 类
具有属性：
不及格次数failCount，
名字name，
科任老师chineseTeacher，
班主任classTeacher


题目1：筛选学生不及格次数3次及3次以上的学生列表

  List&lt;String&gt; arrayList = array.stream().filter(s -&gt; s.getFailCount()&gt;=3).map(s -&gt; s.getName()).collect(Collectors.toList());
   .]]></description><category></category></item><item><title><![CDATA[SpringBoot整合ElasticSearch篇章一，点赞收藏，2021爱情事业满满]]></title><link>https://blog.csdn.net/cssnnd/article/details/112467712</link><guid>https://blog.csdn.net/cssnnd/article/details/112467712</guid><author>cssnnd</author><pubDate>Sun, 17 Jan 2021 23:06:21 +0800</pubDate><description><![CDATA[一、SpringBoot整合ElasticSearch
1.SpringBoot整合ElasticSearch
导入依赖
Maven库



以上加上SpringBoot整合ElasticSearch需要的maven依赖，通过官方文档我们可以知道其实就是这两个jar包在起作用

2.链接ES的客户端 		Link to ES client
如下图：
通过RestHighLevelCilent  对象，指定
RestHighLevelCilent  client = new RestHighLevelClie]]></description><category></category></item><item><title><![CDATA[MYSQL数据库查询库中所有表是否包含指定列的SQL]]></title><link>https://blog.csdn.net/cssnnd/article/details/112587626</link><guid>https://blog.csdn.net/cssnnd/article/details/112587626</guid><author>cssnnd</author><pubDate>Wed, 13 Jan 2021 20:09:33 +0800</pubDate><description><![CDATA[select * from INFORMATION_SCHEMA.columns where COLUMN_NAME Like '%placement%';  

本来都不想写的，后面发现给库中表加上统一的字段，比如人员id，操作人name，最后更新时间time等等一些每张表必要的字段。
根据以上SQL查询来验证是否漏加还是挺效率的。


...]]></description><category></category></item><item><title><![CDATA[ElasticSearch安装启动时出现闪退，yml语法]]></title><link>https://blog.csdn.net/cssnnd/article/details/112154906</link><guid>https://blog.csdn.net/cssnnd/article/details/112154906</guid><author>cssnnd</author><pubDate>Sun, 03 Jan 2021 21:07:25 +0800</pubDate><description><![CDATA[在elasticsearch.yml文件中加上
http.cors.enabled: true 
http.cors.allow-origin: "*"

在yml语法中 ：后面必须有空格，否则语法失效，会导致启动失败


]]></description><category></category></item><item><title><![CDATA[Java程序员如何理解并使用RabbitMQ（二），从底层出发讲解MQ消息中间件的经典的七种工作模式]]></title><link>https://blog.csdn.net/cssnnd/article/details/109566651</link><guid>https://blog.csdn.net/cssnnd/article/details/109566651</guid><author>cssnnd</author><pubDate>Mon, 09 Nov 2020 22:48:48 +0800</pubDate><description><![CDATA[继上文 Java程序员如何理解并使用RabbitMQ（二），从底层出发讲解MQ消息中间件的经典的七种工作模式
不多笔笔

Routing路由模式

队列和交换机的绑定，在订阅模式中可以任意绑定，但是在路由模式中不再可以任意绑定，而是要指定一个RoutingKey（路由key）
消息的发送在向交换机（Exchange）发送消息时候，也必须指定消息的RoutingKey
Exchange（交换机）不再把消息交给每一个绑定的队列，而是根据消息的Routing Key进行判断，只有队列的RoutingKey和消息的]]></description><category></category></item><item><title><![CDATA[Java8新特性：利用Stream的操作数据源，集合，数组等使用场景。再也不怕面试官问新特性]]></title><link>https://blog.csdn.net/cssnnd/article/details/109548437</link><guid>https://blog.csdn.net/cssnnd/article/details/109548437</guid><author>cssnnd</author><pubDate>Sat, 07 Nov 2020 17:22:11 +0800</pubDate><description><![CDATA[Stream介绍
操作数据源–集合，数组等
可以对数据源进行一系列流水线的操作–&gt;产生一个新流，而且原数据不会有任何改变

stream的特点：
1.stream不会存储任何元素
2.stream不改变源对象，返回一个持有结果的新stream
3.stream操作是延迟执行的，意味着等到需要结果的时候才会执行
步骤：
创建stream -&gt; 中间操作 -&gt; 终止操作（如果不进行终止操作前面两步操作无效，终止操作可以是打印，可以是collect方法等）

创建stream的方式
第一种方式 ]]></description><category></category></item><item><title><![CDATA[Java程序员如何理解并使用RabbitMQ（一），从底层出发讲解MQ消息中间件的经典的七种工作模式]]></title><link>https://blog.csdn.net/cssnnd/article/details/109434086</link><guid>https://blog.csdn.net/cssnnd/article/details/109434086</guid><author>cssnnd</author><pubDate>Sun, 01 Nov 2020 23:01:34 +0800</pubDate><description><![CDATA[RabbitMQ
前言：
RabbitMQ是一个消息代理 ： 负责接受并转发消息。
放在生活的角度来看，RabbitMQ就好比快递站点，快递员将快递放到站点，并确信快递员最终会把快递交给收件人。
在这个例子里面，RabbitMQ好比快递站点，快递员。
消费者是收件人。
AMQP协议中的核心思想是生产者和消费者隔离，生产者不直接把消息发给队列消费。
生产者通常不知道是否一个消息会被发送到队列，或者说生产者不知道消费何时会被队列消费，怎么消费。就好比快递员把快递放到站点，他不知道你何时过来取。生产者只是将消息发]]></description><category></category></item><item><title><![CDATA[如何防止页面重复提交，经典问题之一]]></title><link>https://blog.csdn.net/cssnnd/article/details/109275810</link><guid>https://blog.csdn.net/cssnnd/article/details/109275810</guid><author>cssnnd</author><pubDate>Sun, 25 Oct 2020 19:24:06 +0800</pubDate><description><![CDATA[表单重复提交面临页面优化时需要处理的最重要的问题之一，最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题，比如：
点击提交按钮两次。 点击刷新按钮。点击退出按钮等待， 使用浏览器后退按钮重复之前的操作，导致重复提交表单。 使用浏览器历史记录重复提交表单。 浏览器重复的HTTP请求。
提交请求时可能因为网速的原因，或者网页被恶意刷新，或者用户频繁点击，致使同一次请求被重复的操作数据库，这是一个比较棘手的问题。从前后端的角度共同出发，有很多种方式解决问题，提升浏览器性能和体验感]]></description><category></category></item><item><title><![CDATA[Java程序员必须掌握的Oracle关于listagg() WITHIN GROUP()行转列函数的使用]]></title><link>https://blog.csdn.net/cssnnd/article/details/109152336</link><guid>https://blog.csdn.net/cssnnd/article/details/109152336</guid><author>cssnnd</author><pubDate>Mon, 19 Oct 2020 00:10:11 +0800</pubDate><description><![CDATA[前言
所有版本的Oracle软件都可以使用 :
select wm_concat(name) as name from user;

但如果是oracle11g或者以上版本，官方推荐使用以下方法 :
select listagg(name, ',') within group( order by name) as name from user;


这个函数该怎么使用？
首先，建一个表含以下字段 ：




列名
字段类型




xType
NUMBER


City
nvachar2（200）


然后]]></description><category></category></item><item><title><![CDATA[盘点IDEA那些你不知道的快捷键，学会不一定能涨薪，但一定会加大你的效率]]></title><link>https://blog.csdn.net/cssnnd/article/details/108970097</link><guid>https://blog.csdn.net/cssnnd/article/details/108970097</guid><author>cssnnd</author><pubDate>Thu, 08 Oct 2020 23:20:13 +0800</pubDate><description><![CDATA[以下是我整理的IDEA的快捷键，学会不一定能涨薪，但一定会加大你的效率。。。
1.不多BB
快捷键 ：  alt + insert
效果 ： 生成部分方法快捷键

快捷键 ：  shift连按两下或者ctrl+shrift+F
效果 ： 查找代码

快捷键 ：   ctrl+/
效果 ： 注释和取消注释选中行或者光标所在行
快捷键 ：  ctrl+l
效果 ： 选中指定行
快捷键 ：  按住ctrl，移至代码中的类、接口上
效果 ： 可查看源码
快捷键 ：  ctrl+d
效果 ： 复制并粘贴当前行
快捷.]]></description><category></category></item><item><title><![CDATA[Git分布式版本控制工具和如何用IDEA提交代码至Git总结]]></title><link>https://blog.csdn.net/cssnnd/article/details/108969654</link><guid>https://blog.csdn.net/cssnnd/article/details/108969654</guid><author>cssnnd</author><pubDate>Thu, 08 Oct 2020 22:48:46 +0800</pubDate><description><![CDATA[1. Git概述
1.1 Git与SVN对比
SVN是集中式版本控制系统，版本库是集中放在中央服务器的，而开发人员工作的时候，用的都是自己的电脑，所 以首先要从中央服务器下载最新的版本，然后开发，开发完后，需要把自己开发的代码提交到中央服务器。
集中式版本控制工具缺点：
服务器单点故障
容错性差
1.2 Git是分布式版本控制系统（Distributed Version Control System，简称 DVCS） ，分为两种类型的仓库：
本地仓库和远程仓库
本地仓库：是在开发人员自己电脑上的Git仓库.]]></description><category></category></item></channel></rss>