- 博客(61)
- 资源 (1)
- 问答 (4)
- 收藏
- 关注
原创 从整个SecurityFilterChain的角度,一个请求经过Spring Security的流程
从整个SecurityFilterChain的角度,一个请求经过Spring Security的流程
2024-12-13 13:16:28
442
原创 Spring Security OAuth2内置的服务提供者
Spring Security 5.7.5版本,接入OAuth2登录后需要在配置文件中进行相关配置。如果是框架内置的服务提供者,则配置文件中只需要配置client-id, client-secret即可。org.springframework.security.config.oauth2.client.CommonOAuth2Provider类中。org.springframework.security:spring-security-config依赖包下的。,成功接入了GitHub,欢迎访问。
2024-12-12 15:00:08
346
原创 Spring MVC Controller返回json日期格式配置失效的解决办法
RequestMappingHandlerAdapter(位置在WebMvcConfigurationSupport类中),其中setMessageConverters方法会覆盖掉我们配置的jackson converter,因此问题的解决从Spring容器中获取RequestMappingHandlerAdapter这个bean,然后找到内部的MappingJackson2HttpMessageConverter,以代码的方式重新配置即可。标签会自动注册。
2024-08-17 20:06:25
541
原创 Idea使用Maven下载源码
如题,Idea中使用Maven下载源码提示Cannot download sources for 'xxx'。原因是在对应的镜像站没有找到源码包。笔者尝试下载spring-web-4.3.0.RELEASE的源码包时提示如此,原因可能是配置的阿里云镜像站没有上传对应的源码包,配置了华为镜像站后就可以下载源码了。
2024-08-16 12:02:40
765
原创 Idea启动Tomcat控制台中文乱码
网上搜索资料会发现有要改server.xml URIEncoding=UTF-8的,有要改idea文件夹下idea64.exe.vmoptions添加-Dfile.encoding=UTF-8的,有要在idea里Tomcat配置中VM Options指定-Dfile.encoding=UTF-8的。Idea配置Tomcat后启动,控制台显示中文乱码。
2024-08-15 11:09:38
593
1
原创 Idea安装vim插件快捷键冲突的解决办法
Idea安装vim插件后,Ctrl-A, Ctrl-C等快捷键会与vim冲突,找不到设置的话只能等冲突的时候右下角弹窗设置,一旦错过了就没法更改,很难受。真正的设置页面在Setting-Vim Emulation,把有冲突的快捷键改为IDE即可。
2024-08-15 09:58:05
483
原创 RateLimiter google限流组件试析(SmoothBursty/SmoothWarmingUp)
RateLimiter google限流组件试析(SmoothBursty)RateLimiter是guava包里的限流组件,位于com.google.common.util.concurrent.RateLimiter包下。RateLimiter的使用:RateLimiter limiter = RateLimiter.create(8);在需要限流的地方只需:limiter.acquire();看一下相关源码首先是创建过程RateLimiter.create(8)对应的构造方法是Rat
2021-02-04 16:22:47
1499
1
原创 【算法】面试题 16.16. 部分排序
【算法】面试题 16.16. 部分排序给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。示例:输入: [1,2,4,7,10,11,7,12,6,7,16,18,19]输出: [3,9]提示:0 <= len(array) <= 1000000【解法】如果存在这样的m和n,则数组
2021-01-22 16:09:57
483
原创 【算法】将单链表的每K个节点之间逆序
【算法】将单链表的每K个节点之间逆序头条的一道面试题,折磨死我了,为了下次不再被折磨贴一下……将单链表的每K个节点之间逆序限定语言:C、Python、C++、Javascript、Python 3、Java、Go给定一个单链表,实现一个调整单链表的函数,使得每 K 个节点之间的值逆序,如果最后不够 K 个节点一组,则不调整最后几个节点。示例1输入[1,2,3,4,5],3输出{3,2,1,4,5}思路我的想法比较朴素,用一个节点从头到尾遍历链表,并计数,每k个数字执行一次逆序操作
2021-01-05 23:09:19
682
原创 MyBatis查询的意外问题 <if>标签 ==和=的区别
MyBatis查询的意外问题使用MyBatis的注解写sql,像往常一样加入条件查询,如下:"<if test=\"type!=null and type!=2\"> and (show_position=#{type,jdbcType=TINYINT} or show_position=2)</if>","<if test=\"type!=null and type=1\"> ORDER BY seq ASC</if>",代码里注入参数,type是
2020-12-25 09:16:16
1987
3
原创 Redis Cluster分布式集群搭建
Redis Cluster分布式集群搭建下载和准备工作# download and compilewget https://download.redis.io/releases/redis-4.0.10.tar.gztar zxvf redis-4.0.10.tar.gzcd redis-4.0.10make# prepare environmentmkdir redis_essentialcp redis-4.0.10/src/redis-cli redis_essential/c
2020-12-05 15:06:11
356
原创 【计算机网络】TCP的运输连接管理(三次握手、四次挥手)
TCP的运输连接管理TCP是面向连接的协议,TCP运输连接的建立和释放是每次数据传输必不可少的过程。因此面向连接的通信有三个阶段:连接建立、数据传输、连接释放。1. TCP的连接建立TCP连接建立过程要解决三个问题:使每一方能够确认对方的存在。允许双方协商一些参数(如最大窗口值,是否使用窗口扩大选项等)。能够对运输实体资源(如缓存大小、连接表等)进行分配。TCP连接的建立采用客户-服务器方式,由客户端主动发起连接建立,服务器被动接收连接建立请求。(好像也存在同时主动发起连接建立的情况)T
2020-10-03 19:35:46
556
1
原创 【计算机网络】TCP可靠传输的原理
计算机网络之TCP可靠传输一、可靠传输的工作原理由于计算机网络是分层的,TCP发送的报文段是交给网络层的IP协议处理的。但是IP只能提供"最大努力服务",也就是说下层的网络提供的是不可靠传输,因此TCP必须采取一些措施保证可靠传输。当传输过程中分组出现差错(检验和)时,应当让发送方重新传送分组;当网络状况不好或者接收方来不及接收分组时,应当适当降低发送速率(流量控制和拥塞控制)。1.1 停止等待协议简单的停止等待协议,即发送方每发送一个分组就等待确认,收到接收方的确认后在发送下一个分组。当传
2020-10-02 20:14:38
4963
原创 【LeetCode.10 正则表达式匹配】
【LeetCode.10 正则表达式匹配】10. 正则表达式匹配给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。【分析】这道题曾经困扰了我好久……直到今天看到力扣官方题解有点思路,记录一下。这道
2020-09-08 00:26:21
407
原创 【计算机网络】DNS域名系统
DNS域名系统域名系统(Domain Name System, DNS)是互联网使用的命名系统,用来把熟知的域名转换为IP地址。DNS被设计为一个联机分布式数据库系统,DNs使大多数解析都在本地进行,仅有少量的解析请求需要通过互联网通信,因此DNS的效率很高。同时因为DNS是分布式的,即使单个计算机出现故障,也不会影响DNS系统的整体运行。当某一个应用进程需要解析主机名时,就调用相应的解析程序,并成为DNS的一个客户。把带解析的域名放在DNS请求报文中,以UDP数据包的方式发送给本地域名服务器(节省
2020-08-30 12:24:07
612
原创 【计算机网络】socket机制
Socket机制系统调用(system call):通过用户进程和操作系统控制权的切换,向操作系统请求服务。应用编程接口(Application Programming Interface, API):从程序设计角度定义的许多标准系统调用函数。套接字(Socket): Berkley Unix操作系统定义的API,用来使用TCP/IP协议的功能。也称作套接字接口。微软的Windows操作系统采用了套接字接口API,进行修改,称之为WinSock(WIndows Socket)。计算机之间的通信就
2020-08-30 12:18:35
476
原创 idea中Spring Boot项目Profile不生效的问题
idea中Spring Boot项目Profile不生效的问题开发Spring Boot项目,会根据不同环境的配置设定不同的Profile,每个Profile下对应一些资源文件。比如数据库的配置,在开发环境下有一套,测试环境有一套,生产环境也有一套。而使用Intellij Idea开发时,Maven选项卡中可以选择要使用哪一个Profile,如图所示。需要使用哪一个环境,勾选哪一个profile,然后点击运行就好了。但是有时候会遇到一个诡异的问题,那就是勾选的dev环境,最终实际使用的却是prod
2020-08-24 22:45:01
6144
原创 【左神算法课学习笔记】动态规划
【左神算法课学习笔记】动态规划动态规划是对暴力递归算法的优化,主要是通过数组记录的方法,优化掉一些重复计算的过程。总结下动态规划的过程:(1) 抽象出一种“试法”,递归解决问题的方法,很重要(2) 找到“试法”中的可变参数,规划成数组表,可变参数一般是0维的,有几个可变参数就是几维的表(3) 找到base case,问题最基础的解,填入数组表中(4) 根据“试法”中的递归过程,和base case已经填到数组表的值,继续填表(5) 根据问题给定的参数,找到数组中对应的位置,就是最终的解然后
2020-08-23 23:42:16
984
1
原创 Java中的四种引用类型
Java中的四种引用类型Java中使用对象都是通过引用,很常见的就是通过new获取一个对象引用来进行后续操作。实际上在Jdk1.2之后,Java中对引用的概念做了扩充,四种引用类型,引用强度由强到弱依次为强引用>软引用>弱引用>虚引用。强引用:程序代码中普遍存在的一般引用,比如Object obj=new Object();就是一个强引用。只要强引用存在(GC Root可达),垃圾回收期永远不会回收被引用的对象。软引用:软引用关联的对象在系统将要OOM时会再次回收软引用关联的对象
2020-06-25 11:22:01
314
原创 WordPress简易安装教程
WordPress简易安装教程WordPress,可能是比较流行的博客了,于是随便下下来装着玩玩。需要准备的软件:wordpress, nginx/apache, mysqlwordpress可以从官网下载最新的安装包;如果想要中文版可移步中文官网。然后解压到某个路径下,如/usr/local/wordpress。大概看一下包里的东西,会发现好多是php文件,因此需要安装php环境,并且开启mysql支持。环境准备好后,连接到mysql数据库,创建一个数据库(database)。然后进入到word
2020-06-18 01:36:40
446
原创 【计算机网络】Http强制缓存和协商缓存
Http缓存Http前端与后端交互的过程,不是每次都要从后端取得数据的,其中有强制缓存和协商缓存机制。所谓强制缓存是指浏览器的缓存,请求资源时浏览器检查本地资源的标识,如果没有过期那么直接使用浏览器本地缓存;协商缓存是指浏览器本地资源缓存过期,或者判定无效时,需要请求服务器,如果服务器返回304响应码标识缓存仍处于有效状态,那么浏览器直接使用本地缓存,否则服务器返回200标识资源已经修改,需要使用服务器的修改过的版本。使用nginx的情况下,默认会添加E-tag和Last-Modified响应头。例如
2020-06-11 23:06:29
489
原创 Spring源码:加载流程概览
Spring源码:加载流程概览一个简单的xml配置入口函数: ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); Object object = applicationContext.getBean("json"); System.out.println(object.toString())
2020-06-04 01:15:29
385
原创 Java中的注解
Java中的注解Spring开发中经常用到注解,而Spring Boot更是“约定大于配置”,搭建项目仅有的几个都通过注解搞定了。JDK1.5版本引入注解。所有的注解均继承自Annotation接口。查看Annotation的源码可以发现有四个方法,分别是equals, hashCode, toString, annotationType。定义注解的时候,使用特殊标记@interface,而不是显示指定继承自Annotation,又编译器自动做相关处理。三个元注解:@Documented @Rete
2020-06-02 23:26:08
743
原创 Spring打印请求响应日志的两种方式
Spring打印请求响应日志的两种方式第一种:Filter拦截Request、Response@WebFilter(urlPatterns="/*")public class WebFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void
2020-06-02 00:12:56
1375
原创 关于e.printStackTrace的死锁
e.printStackTrace的问题即:代码中检测到异常时,使用e.printStackTrace可能引起的死锁问题。附上一段代码: package javatest.exception; import lombok.extern.slf4j.Slf4j; import java.util.Random; import java.util.concurrent.ArrayBlockingQueue; import j...
2020-05-28 01:14:23
774
原创 二叉树的递归和非递归遍历(附代码)
二叉树的遍历(附代码)二叉树的遍历方法,按遍历顺序可分为先序遍历、中序遍历、后序遍历。先序遍历:根节点->左子树->右子树中序遍历:左子树->根节点->右子树后序遍历:左子树->右子树->根节点通过代码实现,有递归和非递归两种方式,递归比较好理解,非递归效率比较高,直接上代码了:递归方式//先序遍历void preorder_recursive(BTNode *root){ if(root) { printf(
2020-05-10 17:37:33
692
原创 Maven基础知识整理
Maven最近公司要新起项目,回过头来看一下关于构建工具的事。比较常用的就是maven了。maven是一个项目自动构建工具,类似的还有ant, gradle。maven具体是如何管理构建过程的呢?首先什么是构建。写好的代码,要发布到web服务器,需要打包的过程,就是在构建。maven工程必须按照约定的目录结构构建:根目录:工程名|---src:源码|---|---main:存放主程...
2020-03-29 01:16:46
259
原创 Ping不通问题的解决方案
Ping不通问题的解决方案最近公司让远程办公,做项目时会遇到ping不通的情况,分享下我遇到的情况。情况是这样的,公司给开通了vpn,然后我在家里的电脑有一个虚拟ip地址a,公司电脑ip地址b。前端的同事表示ping不通a,也ping不通b。访问a,b上的服务状态码是404。我觉得这种情况服务应该没问题,只是ping不通了。然后网上查了点资料,ping命令加-S参数指定源ip地址,试了...
2020-03-09 12:52:05
1876
原创 RocketMQ入门实例
RocketMQ入门实例RocketMQ官网:http://rocketmq.apache.org从RocketMQ官网下载rocketmq,解压到/usr/local/rocketmq-all-4.4.0目录。启动NameServeradam@adam-G3-3579:/usr/local/rocketmq-all-4.4.0$ nohup sh bin/mqnamesrv &a...
2019-11-09 16:18:26
432
原创 Ubuntu创建Desktop Entry和打开方式
最近在Ubuntu上安装了Typora方便写笔记,从官网上下的压缩包,所以在所有程序里没有入口,只能终端运行。感觉不太适应,研究了下发现可以创建桌面图标来找回程序入口。打开终端。adam@adam-G3-3579:~$ cd /usr/share/applications/adam@adam-G3-3579:/usr/share/applications$ sudo vim typora....
2019-11-09 14:58:44
1623
原创 JVM之JVM内存溢出
JVM内存溢出Java内存区域分为程序计数器,方法区,堆区,虚拟机栈和本地方法栈。其中程序计数器,虚拟机栈和本地方法栈是线程私有的;堆区和方法区是线程共享的。而在HotSpot虚拟机中是直接将虚拟机栈和本地方法栈合到一起。程序计数器。此区域没有定义任何OutOfMemory异常。堆区。设置堆区大小20M,不可扩展;通过list保持对象到GC Roots可达。-Xms20M -...
2019-11-04 00:05:35
1262
原创 微服务学习笔记(三):开发环境准备
3. 开发环境准备JDK安装部署下载安装JDK安装包,设置JAVA_HOME、PATH环境变量。IDEA安装Jetbrains官网下载Ultimate版本。使用IDEA新建Spring Boot项目Create New Project-> Spring Initializr ->Dependencies勾选Web-WebMaven安装Maven官网下载M...
2018-10-09 20:01:21
368
原创 微服务学习笔记(二):Spring Cloud
2. Spring CloudSpring Cloud作为Java语言的微服务框架,依赖于Spring Boot,具有快速开发、持续交付、易于部署等特点。2.1 微服务应该具备的功能微服务的特点:按照业务划分服务。每个微服务运行在独立的进程中,有独立的数据库等组件。通过轻量级机制如HTTP通信。有一套服务治理解决方案,服务之间不耦合。单个微服务能够集群化部署,有负载均衡能力。有一...
2018-10-09 20:00:09
385
原创 微服务学习笔记(一):微服务简介
1.微服务简介传统的单体架构已经很难满足互联网技术的发展要求。主要体现在两方面:一是随着业务复杂度的提高,代码的可读性、可扩展性和可读性在降低;二是维护系统、修改系统的成本在提高。微服务是著名的OO(Object oriented)专家Martin Fowler提出的,用来描述将软件应用程序设计为独立部署的服务的一种特殊方式。1.1 单体架构及其存在的不足在软件设计中经常提及和使用经典的3...
2018-10-09 19:57:45
524
原创 Win10"找不到Wifi网络"解决办法
今天笔记本Win10开机后,右下角网络标识上一直有个小红叉,找不到Wifi网络,折腾了好久,关键点:确定无线网卡设备被Win10识别。打开设备管理器-网络适配器看有没有名称带wireless的适配器。确定无限网卡驱动安装了正确的版本。一般从网卡官网上下载对应型号网卡的驱动进行安装,如[Intel Dual Band Wireless-AC 3160]对应的驱动是[Intel 3160 72...
2018-06-26 22:53:11
14639
3
bash取不到数组元素
2024-11-15
idea编译过程中数字变了
2019-10-16
关于XXL-Job的问题,为啥没日志
2019-09-15
java 查数据库时间不对
2019-05-07
Redis数据持久化问题。。
2018-12-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人