<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hgswsdn的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hgswsdn</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hgswsdn]]></copyright><item><title><![CDATA[由@EnableWebMvc注解引发的Jackson解析异常]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/134964161</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/134964161</guid><author>hgswsdn</author><pubDate>Wed, 13 Dec 2023 09:46:24 +0800</pubDate><description><![CDATA[但是查看了他合并过来的代码，也并未涉及到jar依赖的升级变更等。，因为@EnableWebMvc注解会导入DelegatingWebMvcConfiguration类，而这个类继承了WebMvcConfigurationSupport类，并且有@Order注解，指定了加载顺序。这样的话，Spring Boot的默认MVC配置就会被关闭，你需要自己配置Spring MVC的功能，例如拦截器、视图解析器、消息转换器等。所以当@RequestBody修饰的类没有无参构造函数的时候解析就报错了。]]></description><category></category></item><item><title><![CDATA[开始使用Spring Boot Admin吧-使用Nacos注册SBA]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/134662660</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/134662660</guid><author>hgswsdn</author><pubDate>Tue, 28 Nov 2023 11:02:41 +0800</pubDate><description><![CDATA[本文使用nacos作为注册中心，实现客户端通过nacos注册到服务端。
使用注册中心注册的好处在于，客户端无感知就能被监控。]]></description><category></category></item><item><title><![CDATA[原来user.dir竟然会影响classpath的值]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/134646523</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/134646523</guid><author>hgswsdn</author><pubDate>Mon, 27 Nov 2023 15:27:15 +0800</pubDate><description><![CDATA[我百思不得其解，只能翻JDK的源码看看AppClassLoader怎么加载它的URL。起因：使用脚本启动，脚本设置了classpath的路径为当前路径。但是从tomcat日志打印来看，扫描的不仅仅是当前路径，而是主目录下所有的文件夹都被扫描。classpath的值就变成了user.dir的值。从上方的代码可以看到pathToURLs(path)是把"."转化为路径的关键代码。那么接下看看这个方法干了啥吧。这就解释了为什么classpath设置了“.”而APPClassLoader的url却变成了主目录。]]></description><category></category></item><item><title><![CDATA[Spring Boot Admin(SBA)核心流程-注册篇]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/134646450</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/134646450</guid><author>hgswsdn</author><pubDate>Mon, 27 Nov 2023 15:25:52 +0800</pubDate><description><![CDATA[SBA的实例默认都是保存在内存中的，SBA服务端通过保存的实例信息，每间隔一段时间（可配置）会发送http请求去请求健康状态、端点信息等。简单了解了SBA是什么，我们就开始介绍SBA的核心流程，至于怎么搭建SBA客户端and服务端，可自行百度，这类的文章居多。通过服务发现的方式注册最大的不同就是，客户端不需要配置服务的url.只需要配置注册中心，就能自动注册到服务端。应用可以通过我们的SBA客户端（通过HTTP的方式）或者使用Spring Cloud ®（比如Eureka，consul的方式）注册。]]></description><category></category></item><item><title><![CDATA[一篇文章读懂Tomcat的Context配置]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/127513812</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/127513812</guid><author>hgswsdn</author><pubDate>Tue, 25 Oct 2022 15:16:57 +0800</pubDate><description><![CDATA[Context元素代表一个Web应用程序，它在特定的虚拟主机中运行。处理每个 HTTP 请求的 Web 应用程序，都是基于将请求 URI的前缀与每个定义的Context的*Context路径进行匹配。* 一旦选择，该Context将根据 Web应用程序部署定义的servlet映射选择适当的servlet来处理传入请求。可以根据需要定义任意数量的Context元素。每个Context必须在Host中具有唯一的Context名称。Context路径不需要是唯一的（参考并行部署）。]]></description><category></category></item><item><title><![CDATA[Tomcat的JDBC数据源之一（如何使用配置JDBC数据源）]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/125886984</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/125886984</guid><author>hgswsdn</author><pubDate>Wed, 20 Jul 2022 10:32:12 +0800</pubDate><description><![CDATA[许多 Web 应用程序需要通过 JDBC 驱动程序访问数据库，以支持该应用程序所需的功能。Java EE 平台规范要求 Java EE 应用服务器为此目的提供DataSource实现（即用于 JDBC 连接的连接池）。]]></description><category></category></item><item><title><![CDATA[druid监控流程源码分析]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/124612349</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/124612349</guid><author>hgswsdn</author><pubDate>Fri, 06 May 2022 16:03:28 +0800</pubDate><description><![CDATA[druid号称为监控而生的数据库连接池。
详情请介绍参考官方链接：(https://github.com/alibaba/druid/wiki/Druid%E8%BF%9E%E6%8E%A5%E6%B1%A0%E4%BB%8B%E7%BB%8D)
本次文章只做监控流程的源码分析。初始化等流程一笔带过，不做详解。首先druid初始化会创建一个DruidDataSource数据源对象。以一次查询为例。当我们请求接口查询用户信息时，会执行DruidDataSource
的getConnection()方法。该方法]]></description><category></category></item><item><title><![CDATA[kubelet cgroup driver与docker cgroup drive不一致解决方案]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/120862027</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/120862027</guid><author>hgswsdn</author><pubDate>Wed, 20 Oct 2021 11:24:00 +0800</pubDate><description><![CDATA[某个早上，本人刚打开电脑测试就开始找上了我。啊！！！测试环境的k8s启动不了了！！！作为一个成天摸鱼哦不！！努力工作的小姑娘。本着助人为乐的原则，我决定要发挥一下我的作用~今天就要去测试环境给他搞好！！！
好了回到正题，首先第一步我们应该干啥？当然是确认k8s的状态。
1、查看k8s状态 systemctl status kubelet
看到k8s确实是启动失败了，但是这里并没有什么关键信息能让我们知道启动失败的原因。
2、查看k8s日志 journalctl -xefu kubelet

日志有一大堆但是]]></description><category></category></item><item><title><![CDATA[总结几种常见的网络攻击，及解决方案]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/117386446</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/117386446</guid><author>hgswsdn</author><pubDate>Sat, 29 May 2021 17:10:05 +0800</pubDate><description><![CDATA[背景：最近公司技术分享，同事分享了常见的安卓系统攻击方式，作为一个服务端的开发工程师，当然是也要科普一下web安全。本文章会简单介绍一下目前常见的web常见攻击方式，跟如何应对这些攻击方式。如果你对这方面有兴趣，就一起看下去吧(✪ω✪)！！
常见的网络攻击有哪些
首先呢简单介绍一下目前常见的几种网络攻击：
XSS攻击、SQL注入、CSRF攻击、上传文件攻击、DDos攻击
XSS攻击：Cross Site Script跨站脚本攻击，它指的是恶意攻击者往Web页面里插入恶意的html+javascript的脚本]]></description><category></category></item><item><title><![CDATA[详解redis单线程模型]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/115354798</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/115354798</guid><author>hgswsdn</author><pubDate>Wed, 31 Mar 2021 17:12:26 +0800</pubDate><description><![CDATA[背景：但凡你用redis都知道redis的一大特点就是单线程，那么在如今服务器普遍多核的时代下，为什么redis要采用单线程模型？单线程模型好在哪里？不用单线程模型redis是不是可以更快？带着这些问题我们一起来回顾一下redis的单线程模型。
首先认识一下redis的单线程模型是什么：
redis 内部使用文件事件处理器 file event handler，这个文件事件处理器是单线程的，所以 redis 才叫做单线程的模型。
文件事件处理器的结构包含 4 个部分：

多个 socket
IO 多路复用程]]></description><category></category></item><item><title><![CDATA[Springboot+oauth2.0实现微信登录（oauth2.0自定义授权模式）]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/113885859</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/113885859</guid><author>hgswsdn</author><pubDate>Sat, 20 Feb 2021 16:20:19 +0800</pubDate><description><![CDATA[1、前置准备参考 https://blog.youkuaiyun.com/qq_34190023/article/details/81133619
2、微信登录实现流程图

3、oauth自定义授权模式
上图大概描述了微信登录的一个流程。如果你是用oauth2.0，就会存在一个问题。oauth2.0自身支持四种授权模式，分别是：

authorization code（授权码模式）
implicit（简化模式）
resource owner password credentials（密码模式）
client crede]]></description><category></category></item><item><title><![CDATA[幂等性是什么/如何保证接口幂等性]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/111932290</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/111932290</guid><author>hgswsdn</author><pubDate>Tue, 29 Dec 2020 16:56:04 +0800</pubDate><description><![CDATA[1. 什么是幂等性？
幂等（idempotent、idempotence）是一个数学与计算机学概念，常见于抽象代数中。
在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数，或幂等方法，是指可以使用相同参数重复执行，并能获得相同结果的函数。这些函数不会影响系统状态，也不用担心重复执行会对系统造成改变。例如，“setTrue()”函数就是一个幂等函数,无论多次执行，其结果都是一样的。
在HTTP/1.1规范中的幂等性定义：
Methods can also have the ]]></description><category></category></item><item><title><![CDATA[深度解析OAuth2.0授权协议]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/109098773</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/109098773</guid><author>hgswsdn</author><pubDate>Thu, 15 Oct 2020 16:07:10 +0800</pubDate><description><![CDATA[**
OAuth2.0简介
**
OAuth产生背景
很多网站、APP 弱化甚至没有搭建自己的账号体系，而是直接使用社会化登录的方式，这样不仅免去了用户注册账号的麻烦、还可以获取用户的好友关系来增强自身的社交功能。
　　比如我们可以使用微信登录优快云，优快云会自动将你的微信头像设置为你的优快云头像，将你的微信昵称设置为你的优快云昵称，甚至还可以获取你微信中的好友列表，提示你哪些朋友已经在使用优快云，这是如何做到的呢？
最传统的办法是让用户直接在优快云的登录页面输微信的账号和密码，优快云通过用户]]></description><category></category></item><item><title><![CDATA[学习笔记之《RPC与HTTP的区别》]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/108241358</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/108241358</guid><author>hgswsdn</author><pubDate>Wed, 26 Aug 2020 16:13:11 +0800</pubDate><description><![CDATA[1、HTTP 1.0 、1.1、 2.0有什么区别
1.0：短连接。例如发100张图。需要TCP100次握手跟挥手。
1.1 ：长连接，发100张图，只需要一次握手挥手。
2.0 ：长连接+IO多路复用。
2、 RPC与HTTP的区别
2.1 性能
主要差别在序列化与反序列化，RPC通过thrift二进制传输。Http json序列化更消耗性能。
2.2 传输协议
rpc基于tcp协议，也可基于http协议。
http只能用http协议。
2.3 负载均衡
rpc自带负载均衡。http不提供负载均衡，需要自]]></description><category></category></item><item><title><![CDATA[springBoot聚合websocket如何实现单机10万+长连接]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/106939964</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/106939964</guid><author>hgswsdn</author><pubDate>Wed, 24 Jun 2020 11:40:27 +0800</pubDate><description><![CDATA[1、springboot项目聚合websockert代码。代码如下:
/**
 * 开启WebSocket支持
 *
 */
@Configuration
public class WebSocketConfig {
    /**
     * 扫描并注册带有@ServerEndpoint注解的所有服务端
     * @return
     */
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
       ]]></description><category></category></item><item><title><![CDATA[java.lang.IncompatibleClassChangeError异常（在将包含LocalDateTime字段类型的Java对象JSON.toJSONString转换时出现的错误）]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/106193133</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/106193133</guid><author>hgswsdn</author><pubDate>Mon, 18 May 2020 15:07:11 +0800</pubDate><description><![CDATA[问题：在处理包含LocalDateTime字段类型的Java对象JSON.toJSONString转换时出现的错误
在网上找了一大堆方案都不靠谱，大概猜到了是fastjson对LocalDateTime处理出现的错误，以下是错误信息
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.IncompatibleClassChangeError: F]]></description><category></category></item><item><title><![CDATA[docker删除redis数据]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/105726462</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/105726462</guid><author>hgswsdn</author><pubDate>Fri, 24 Apr 2020 11:15:59 +0800</pubDate><description><![CDATA[1、docker ps -a 查看当前运行的容器



2、进入redis客户端 docker exec -it xxx（ID） redis-cli



3、查询所有key： keys *

4、删除指定key：del xxx（key）

5、退出容器 exit


...]]></description><category></category></item><item><title><![CDATA[并发编程之CompletableFuture例子详解]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/102641188</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/102641188</guid><author>hgswsdn</author><pubDate>Sat, 19 Oct 2019 17:56:00 +0800</pubDate><description><![CDATA[public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService executor = Executors.newFixedThreadPool(5);
long time1 = System.currentTimeMillis()/1000;
//   ...]]></description><category></category></item><item><title><![CDATA[什么是强引用，弱引用，软引用，虚引用]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/96481006</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/96481006</guid><author>hgswsdn</author><pubDate>Sat, 07 Sep 2019 17:17:39 +0800</pubDate><description><![CDATA[架构

强引用：当内存不足，JVM开始垃圾回收，对于强引用的对象，就算出现了OOM也不会对该对象进行回收。
通常我们所使用的百分之95都是强引用。例如Object object=new Object()就是强引用。
软引用：SoftReference 软引用通常是用在对内存敏感的程序中，比如高速缓存就有用到软引用。内存够用的时候就保留，不够用就回收。
弱引用：WeakReference对于弱引用的...]]></description><category></category></item><item><title><![CDATA[OOM详解]]></title><link>https://blog.youkuaiyun.com/hgswsdn/article/details/96482816</link><guid>https://blog.youkuaiyun.com/hgswsdn/article/details/96482816</guid><author>hgswsdn</author><pubDate>Sat, 07 Sep 2019 17:15:17 +0800</pubDate><description><![CDATA[StackOverFlowError:栈溢出。属于错误还是异常？属于错误 深度的方法调用会导致栈溢出。

OutOfMemoryError:Java heap space堆内存溢出。也是属于错误。频繁的创建新对象大对象会导致堆溢出。
OutOfMemoryError:GC OverHead limit exceeded GC回收时间过长时会抛出这个异常，过长的定义是，超过98%的时间用来做GC并...]]></description><category></category></item></channel></rss>