<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[licux的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/licux</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; licux]]></copyright><item><title><![CDATA[java 远程debug]]></title><link>https://blog.youkuaiyun.com/licux/article/details/138305560</link><guid>https://blog.youkuaiyun.com/licux/article/details/138305560</guid><author>licux</author><pubDate>Mon, 29 Apr 2024 11:05:08 +0800</pubDate><description><![CDATA[【代码】java 远程debug。]]></description><category></category></item><item><title><![CDATA[spring-security 学习笔记一 --- 基于默认配置]]></title><link>https://blog.youkuaiyun.com/licux/article/details/122345128</link><guid>https://blog.youkuaiyun.com/licux/article/details/122345128</guid><author>licux</author><pubDate>Mon, 29 Apr 2024 10:56:37 +0800</pubDate><description><![CDATA[1.前言
本文主要讲解  spring-security 在不做任何配置情况下，它的启动流程和认证过程。
1. 准备工作
这里是基于springboot 2.2.5版本对应  spring-security 5.2.2版本演示的 （按我下面导入即可，版本是它自己匹配的）


引入依赖
&lt;properties&gt;
    &lt;java.version&gt;1.8&lt;/java.version&gt;
    &lt;project.build.sourceEncoding&gt;UTF-8]]></description><category></category></item><item><title><![CDATA[java对象和json对象互转]]></title><link>https://blog.youkuaiyun.com/licux/article/details/116129490</link><guid>https://blog.youkuaiyun.com/licux/article/details/116129490</guid><author>licux</author><pubDate>Mon, 29 Apr 2024 10:55:34 +0800</pubDate><description><![CDATA[在网上找了一大堆  没找到合适的
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.ut]]></description><category></category></item><item><title><![CDATA[dbeaver 导出的sql文件，恢复数据库报错,Unknown command ‘\‘‘.]]></title><link>https://blog.youkuaiyun.com/licux/article/details/133144825</link><guid>https://blog.youkuaiyun.com/licux/article/details/133144825</guid><author>licux</author><pubDate>Fri, 22 Sep 2023 10:36:25 +0800</pubDate><description><![CDATA[这是因为编码格式错误导致的， 加上这个即可 （注意前后不能有空格）]]></description><category></category></item><item><title><![CDATA[子项目中程序报：java.lang.NoClassDefFoundError]]></title><link>https://blog.youkuaiyun.com/licux/article/details/131376210</link><guid>https://blog.youkuaiyun.com/licux/article/details/131376210</guid><author>licux</author><pubDate>Sun, 25 Jun 2023 14:01:47 +0800</pubDate><description><![CDATA[1.项目结构

NoClassDefFoundError 的 java类是在父项目中导入的 ，子项目继承了父项目，在子项目中新建的main 程序中使用了该java类

大家可以看下scope 是否是 provided，大家选上下图的设置就可以了，不同版本idea 可能有差距

然后重新启动


]]></description><category></category></item><item><title><![CDATA[linux reids 安装报错]]></title><link>https://blog.youkuaiyun.com/licux/article/details/123581215</link><guid>https://blog.youkuaiyun.com/licux/article/details/123581215</guid><author>licux</author><pubDate>Fri, 18 Mar 2022 18:01:13 +0800</pubDate><description><![CDATA[dpkg: 处理软件包 redis-server (–configure)时出错：
子进程 已安装 post-installation 脚本 返回错误状态 1
正在处理用于 ureadahead (0.100.0-19.1) 的触发器 …
正在处理用于 systemd (229-4ubuntu21.31) 的触发器 …
在处理时有错误发生：
redis-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
 sudo rm /var/l]]></description><category></category></item><item><title><![CDATA[教学搭建一个gitlab + jenkins+k8s+docker自动化部署的项目]]></title><link>https://blog.youkuaiyun.com/licux/article/details/122211743</link><guid>https://blog.youkuaiyun.com/licux/article/details/122211743</guid><author>licux</author><pubDate>Wed, 29 Dec 2021 17:18:28 +0800</pubDate><description><![CDATA[1. gitlab配置
这里主要是在gitlab上新建一个Project,作为自己的代码仓库。
把自己需要部署的项目推上去即可。

这里大家可以看到 .idea 文件夹下的文件报红，通常情况下我们不想让它被git记录，我们可以向下面那样新建一个 .gitignore 文件中 配置一下即可。接下来我们在这里写自己的项目代码即可。这套自动化部署流程主要地方还是在 jenkins+k8s+docker。
2. jenkins 配置
1. 创建jenkins流水线项目
这个的前提是你已经安装过 jenkins,首先]]></description><category></category></item><item><title><![CDATA[java volatile 关键字详解]]></title><link>https://blog.youkuaiyun.com/licux/article/details/122085030</link><guid>https://blog.youkuaiyun.com/licux/article/details/122085030</guid><author>licux</author><pubDate>Thu, 23 Dec 2021 11:31:35 +0800</pubDate><description><![CDATA[1. 简介
volatile 关键字：当多个线程进行操作共享数据时，可以保证内存中的数据可见。
相较于 synchronized 是java虚拟机提供的一种较为轻量级的同步策略。
主要有以下特性：

可见性
禁止指令重排

注意：
3. volatile 不具备“互斥性”
4. volatile 不能保证变量的“原子性”
2.可见性详解
2.1 JMM(java 内存模型) 简介

JMM(Java内存模型Java Memory Model，简称JMM)本身是一种抽象的概念 并不真实存在，它描述的是一组规则]]></description><category></category></item><item><title><![CDATA[Comparison method violates its general contract 出现原因和解决方法]]></title><link>https://blog.youkuaiyun.com/licux/article/details/121030423</link><guid>https://blog.youkuaiyun.com/licux/article/details/121030423</guid><author>licux</author><pubDate>Fri, 29 Oct 2021 11:35:31 +0800</pubDate><description><![CDATA[错误如下：

代码如下：



刚开始运行，没有什么问题，当我数据量一大的时候，就开时抛出异常，然后一点点拆解，我发现
当nums1和nums2如下时，即list存在太多相同的数组就会抛出这个异常。

		int[]nums1 = {-1,-1,0,0,1,1};
        int[] nums2 ={-1,-1,0,0,1,1};


改进后的代码



当两个元素相等时，返回0即可。 但问题又来了，前面我有一些数据比较也是相等的，并没有报这个异常，然后就去百度，查资料。
解释如下：
在 JDK7.]]></description><category></category></item><item><title><![CDATA[java中Queue和Deque详解]]></title><link>https://blog.youkuaiyun.com/licux/article/details/121021393</link><guid>https://blog.youkuaiyun.com/licux/article/details/121021393</guid><author>licux</author><pubDate>Thu, 28 Oct 2021 20:12:14 +0800</pubDate><description><![CDATA[Queue和 Deque 共有方法




boolean add(E e);
在队列尾部添加一个元素 成功返回true 失败抛出异常


boolean offer(E e);
在队列尾部添加一个元素 成功返回true 失败返回false


E remove();
取出队列的第一个元素，并从队列中移除该元素，成功返回该元素，失败返回false,如果指定元素为空，抛出NullPointerException


E poll();
取出队列第一个元素，并从队列中移除该元素，成功返回该元素，失败返...]]></description><category></category></item><item><title><![CDATA[Manacher详解]]></title><link>https://blog.youkuaiyun.com/licux/article/details/120822212</link><guid>https://blog.youkuaiyun.com/licux/article/details/120822212</guid><author>licux</author><pubDate>Mon, 18 Oct 2021 11:08:28 +0800</pubDate><description><![CDATA[Manacher

Manacher算法是一个用来查找一个字符串中的最长回文子串(不是最长回文序列)的线性算法。它的优点就是把时间复杂度为O(n2)的暴力算法优化到了O(n)。首先先让我们来看看最原始的暴力扩展，分析其存在的弊端，以此来更好的理解Manacher算法。

暴力匹配

暴力匹配算法的原理很简单，就是从原字符串的首部开始，依次向尾部进行遍历，每访问一个字符，就以此字符为中心向两边扩展，记录该点的最长回文长度。那么我们可以想想，这样做存在什么弊端，是不是可以求出真正的最长回文子串？
答案是显然不行]]></description><category></category></item><item><title><![CDATA[queryWrapper 自定义排序（亲测有效）]]></title><link>https://blog.youkuaiyun.com/licux/article/details/120311923</link><guid>https://blog.youkuaiyun.com/licux/article/details/120311923</guid><author>licux</author><pubDate>Wed, 15 Sep 2021 16:45:34 +0800</pubDate><description><![CDATA[queryWrapper.eq("is_delete",0);
queryWrapper.orderByAsc("(case state when 0 then 0 when 1 then 2 when 2 then 1 else 3 end)");
queryWrapper.orderByDesc("update_time");

"(case state when 0 then 0 when 1 then 2 when 2 then 1 else 3 end)" case 后面跟你要排序的列  然后按你]]></description><category></category></item><item><title><![CDATA[JVM尚硅谷版 jvm上篇：内存与垃圾回收篇（后八章）]]></title><link>https://blog.youkuaiyun.com/licux/article/details/120162553</link><guid>https://blog.youkuaiyun.com/licux/article/details/120162553</guid><author>licux</author><pubDate>Mon, 13 Sep 2021 17:00:03 +0800</pubDate><description><![CDATA[JVM尚硅谷版 jvm上篇：内存与垃圾回收篇（后八章）01 jvm上篇：内存与垃圾回收篇（后八章）10.对象的实例化内存布局与访问定位1.对象的实例化2.对象的内存和布局3.对象的访问定位11.直接内存12.执行引擎1.执行引擎概述2.Java代码的编译和执行过程3.机器码，指令，汇编语言4.解释器5.JIT编译器13.StringTable1.String的基本特性2.String的内存分配3.String的基本操作4.字符串的拼接操作5.intern() 的使用6.StringTable 的垃圾回收7.]]></description><category></category></item><item><title><![CDATA[JVM尚硅谷版 jvm上篇：内存与垃圾回收篇（前九章）]]></title><link>https://blog.youkuaiyun.com/licux/article/details/119840315</link><guid>https://blog.youkuaiyun.com/licux/article/details/119840315</guid><author>licux</author><pubDate>Tue, 07 Sep 2021 16:51:31 +0800</pubDate><description><![CDATA[JVM尚硅谷版01 jvm上篇：内存与垃圾回收篇1.jvm与Java体系结构1.java层级2.jvm的位置3.跨平台4.跨语言的平台5.字节码6.虚拟机与Java虚拟机7.jvm整体结构8.java代码执行流程9.jvm架构模型10.jvm生命周期11.jvm发展历程2.类加载子系统1.内存结构概述2.类加载器与类的加载过程3.类加载器分类4.classLoader使用说明5.双亲委派机制6.其他3.运行时数据区概述与线程1.运行是数据区内部结构2.线程4.程序寄存器（PC寄存器）1.pc介绍2.举例说明]]></description><category></category></item><item><title><![CDATA[mysql中模糊查询 输入 %和_会出现全部数据的几种解决办法]]></title><link>https://blog.youkuaiyun.com/licux/article/details/118897530</link><guid>https://blog.youkuaiyun.com/licux/article/details/118897530</guid><author>licux</author><pubDate>Mon, 19 Jul 2021 15:41:07 +0800</pubDate><description><![CDATA[使用 /  escape ‘/’

//要查%或者_，需要使用escape，转义字符后面最近的%或_就不作为通配符了
//sql
select username from gg_user where username like '%/%%' escape '/';
//mybatis中
( name LIKE CONCAT('%','/',#{key},'%') escape '/'


使用字符串替换

// java
private String queryReplace(String query) .]]></description><category></category></item><item><title><![CDATA[数据库MySQL学习笔记高级篇(周阳）]]></title><link>https://blog.youkuaiyun.com/licux/article/details/118110457</link><guid>https://blog.youkuaiyun.com/licux/article/details/118110457</guid><author>licux</author><pubDate>Tue, 22 Jun 2021 20:28:05 +0800</pubDate><description><![CDATA[数据库MySQL学习笔记高级篇1. mysql的架构介绍mysql简介高级MysqlmysqlLinux版的安装mysql配置文件mysql逻辑架构介绍mysql存储引擎2. 索引优化分析性能下降SQL慢常见通用的Join查询索引简介性能分析索引优化3. 查询截取分析查询优化
1. mysql的架构介绍
mysql简介

高级Mysql
完整的mysql优化需要很深的功底，大公司甚至有专门的DBA写上述

mysql内核
sql优化工程师
mysql服务器的优化
各种参数常量设定
查询语句优化
主从复制
软]]></description><category></category></item><item><title><![CDATA[消息中间件RabbitMQ学习笔记]]></title><link>https://blog.youkuaiyun.com/licux/article/details/118093103</link><guid>https://blog.youkuaiyun.com/licux/article/details/118093103</guid><author>licux</author><pubDate>Mon, 21 Jun 2021 20:19:21 +0800</pubDate><description><![CDATA[消息中间件RabbitMQ1.简介2.使用1.依赖2.客户端3.配置信息4. 代码实现1.发送消息，创建 Exchange,Queue,Binding测试2.rabbit  配置3队列 交换机等创建消费端代码举例
1.简介

RabbitMQ是实现了高级消息队列协议（AMQP）的开源消息代理软件（亦称面向消息的中间件）。RabbitMQ服务器是用Erlang语言编写的,基于AMQP协议实现，支持多种场景，高性能，高可用，支持海量数据。
rabbitmq 的一些概念，需要了解的话 点这里

2.使用
1.依赖]]></description><category></category></item><item><title><![CDATA[RabbitMQ概念详解]]></title><link>https://blog.youkuaiyun.com/licux/article/details/118093275</link><guid>https://blog.youkuaiyun.com/licux/article/details/118093275</guid><author>licux</author><pubDate>Mon, 21 Jun 2021 19:58:05 +0800</pubDate><description><![CDATA[RabbitMQ概念详解一．AMQP协议1. AMQP协议简介2. 功能范围3. 技术术语二．RabbitMQ1. RabbitMQ基础概念2. Exchange消息调度策略1. Fanout （订阅模式|广播模式）2. Direct（路由模式）3.Topic （通配符模式）4. Headers（键值对模式）3.RPC4. 消息确认:Message acknowledgment5.消息持久化:Message durability6.分发机制①.轮询分发：Round-robin dispatching②.公平]]></description><category></category></item><item><title><![CDATA[java压缩包遍历解压 zip和 7z中指定格式的文件]]></title><link>https://blog.youkuaiyun.com/licux/article/details/117924521</link><guid>https://blog.youkuaiyun.com/licux/article/details/117924521</guid><author>licux</author><pubDate>Tue, 15 Jun 2021 15:02:50 +0800</pubDate><description><![CDATA[import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry;
import org.apache.commons.compress.archivers.sevenz.SevenZFile;

import java.io.*;
import java.nio.charset.Charset;
import java.nio.file.Files;
import]]></description><category></category></item><item><title><![CDATA[shell脚本调用接口获取返回值 遍历下载文件]]></title><link>https://blog.youkuaiyun.com/licux/article/details/117851936</link><guid>https://blog.youkuaiyun.com/licux/article/details/117851936</guid><author>licux</author><pubDate>Sat, 12 Jun 2021 17:30:46 +0800</pubDate><description><![CDATA[#!/bin/bash
#获取当前服务器的名称
HN=`hostname`
#截取当前模型名称
name= echo ${HN%-*}
#name=ceshi_lcx
#echo $name
#当前模型下可用数据下载地址
url="http://ip:30388/aFile?name=$name"
#returnData=$(curl -X GET $url -H "accept:*/*" | jq '.[] | {path:.path}')
#请求接口返回完整数据
returnData=$(curl -X]]></description><category></category></item></channel></rss>