自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

只作为个人备忘录

仅仅作为备忘录,如有不妥的地方,请海涵

  • 博客(723)
  • 资源 (23)
  • 收藏
  • 关注

原创 二叉树所有节点转换成大于该节点的平均值,没有最大值就转换成0

【代码】二叉树所有节点转换成大于该节点的平均值,没有最大值就转换成0。

2023-05-04 20:07:04 142 1

原创 SpringSecurity权限记录

WebSecurityConfigurerAdapter1、访问过滤器code模式访问:http://localhost:8000/oauth/authorize?response_type=code&client_id=test_client&scope=read&state=test&redirect_uri=http://baidu.comAnonymousAuthenticationFilter拦截进入登陆页面if (SecurityContextHolder

2022-01-24 17:11:47 803

原创 spring注入实验

public interface TestInterface<T> { void test();}@Scope("prototype")@Component("top")public class TestSub1 implements TestInterface<TestSub1>{ @Override public void test() { System.out.println("test1"); }}@Componen

2021-12-31 17:08:47 443

原创 @Transactional导致 dynamic-datasource-spring-boot-starter失效原因分析

1、dynamic-datasource@DB切面是可以将数据源信息push到DynamicDataSourceContextHolder类的ThreadLocal<Deque> LOOKUP_KEY_HOLDER中2、如果controller调用service,且controller -->Aservice–>Bservice–>Bdao(A表示A数据源,B表示B数据源),当且仅当Aservice使用@Transactional进行事物管理时,当controller --&

2021-11-03 17:40:36 2631

原创 mac 设置共享目录于centos虚拟机

1、配置然后root登录2、chmod -R 777 主机目录3、安装包Contents-Library-iosImages-linux.so复制出来4、重新安装或者安装CD(SATA)选择自动检测,重启可以安装so5、解压文件VMwareTools-10.3.10-13959562.tar.gz,执行vmware-install.pl6、重启设置共享,查看/mnt/hgfs...

2021-08-17 14:42:10 214

原创 mysql group by前n条分组

具有比较值的栗子如下,如果不具有比较值,则使用统计总数,生成比较值select Person,[group],agefrom(select * ,row_number() over(partition by [group] order by age desc) rnfrom mytable) twhere rn <= 2生成比较值SELECT a.*FROM (select depart_id,bu_id,login_name, count(1) total from data i

2021-07-05 16:56:08 179

原创 PropertySources

备忘记录查找类PropertySources PropertyResolver存储MapPropertySource过程

2021-06-04 17:14:16 127

原创 spring常用代码

import java.util.Map;/** * RPC Server * <p> * 1:如果bean实现了 BeanNameAware接口,则调用BeanNameAware.setBeanName() * 2:如果bean实现了BeanFactoryAware接口,则调用BeanFactoryAware.setBeanFactory() * 3:如果bean实现了ApplicationContextAware接口,则调用ApplicationContextAware.se.

2021-06-04 17:11:23 308

原创 一些基本引言的知识点

文章目录一些基本引言的知识点系统调优你所不知道的TIME_WAIT和CLOSE_WAIT一些基本引言的知识点⻦哥在 PHP7 中 把 HashTable 结构体从 72 字节压缩到了 56 字节,表⾯看起来不⼤的优化,实际上是成倍的性能提醒。因为 CPU 在向内存要数据的时候是以 Cache Line 为单位进⾏的,⼀个 Cache Line 是 64 字节。56 字节可以⼀次请求搞定,⽽原来的 72 字节则需要两次。另外就是 L1/L2/L3 的命中率也会提升很多,这个对性能的帮助更⼤。ka

2021-06-04 17:08:50 126 1

原创 循环依赖-Autowired方式

@Autowired方式例子@Componentpublic class TestA { @Autowired private TestB testB;}@Componentpublic class TestB { @Autowired private TestA testA;}TestA开始,AbstractBeanFactory.doGetBean方法开始分析,getSingleton一级缓存获取beanName,结果nullprotected

2021-06-04 17:03:32 692

原创 循环依赖构造器方式

文章目录@构造器方式例子@构造器方式例子@Componentpublic class TestA { private TestB testB; public TestA(TestB testB) { this.testB = testB; }}@Componentpublic class TestB { private TestA testA; public TestB(TestA testA) { this.te

2021-06-04 17:02:46 392 1

原创 特殊情况下会导致循环依赖失效

文章目录来源@Async方式例子来源spring 默认使用三级缓存解决循环依赖问题。特殊情况下会导致循环依赖失效。 比如 1.互相循环依赖使用构造器注入。 2. 通过类似 @Async 注解在对象初始化时期被生成代理对象替换原对象原因@Async方式例子@Componentpublic class TestA { @Autowired private TestB testB; @Async public String test() { retur

2021-06-04 17:01:39 629

原创 springboot类加载关系以及资源加载bug分析

加载器关系当使用 tomcat 容器时,运行时上下文类加载器是 TomcatEmbeddedWebappClassLoader,其父类加载器是 LaunchedURLClassLoader。在IDEA中运行时,上下文类加载器是 AppClassLoader,即应用程序类加载器。TomcatServletWebServerFactory设置TomcatEmbeddedWebappClassLoader类加载的时候,会设置parentclassloader即LaunchedURLClassLoader,因为

2021-05-25 20:20:50 734

原创 Netty启动分析

文章目录NIO SelectorImpl分析Netty前置知识简单总结**知识点**服务端分析NioEventLoop服务端代码继承关系SingleThreadEventLoop registerAbstractChannel register第一步startThread第二步addTask客户端发送数据,服务端处理客户端分析addTask不同Tail 管道连接AbstractChannelHandlerContext connect()建立连接NIO SelectorImpl分析java Channe

2021-05-24 19:13:31 210

原创 Springboot IDEA启动分析

文章目录链路分析核心加载类PathMatchingResourcePatternResolverIDEA启动分析idea启动后对包进行格式化处理获取路径下的File[]文件然后进行antPathMatcher匹配class文件返回Set集合包装成FileSystemResource循环Resource包装成MetadataReaderjar -jar命令启动Java资源管理URL如何解析各种协议`org.springframework.core.io.Resource`启动类JarLauncher不同环境获

2021-05-24 19:09:54 423 5

原创 1、Hadoop

1、基础知识2、安装3、时间同步1、基础知识涞源时Google三篇论文:1: 小文件存储占用大量的内存2: 2.x以后支持文件修改append功能,但是生产不开放这个功能,因为修改过程文件大小修改,切分重新定义,CPU 内存 IO 都会处理这个过程,性能浪费3: 原数据信息存放在NameNode中,生产环境有且只有一个NameNode处于工作状态中4: 1.x存在secondary namenode的概念 只能部分备份namenode数据,2.x 做HA就不需要了...

2020-08-10 16:10:04 133

原创 Sentinel注解集合排序-代码笔记

private static void insertSorted(List<OrderWrapper> list, InitFunc func) { int order = resolveOrder(func); int idx = 0; for (; idx < list.size(); idx++) { if (list.get(idx).getOrder() > order) { ..

2020-07-17 10:50:22 159

原创 ServiceLoader SPI的简单认知

写了这么长时间的代码,竟然没有用过jdk SPI的ServiceLoader,深表遗憾!为什么写这个,因为在看Sentinel配置代码的时候,看到了这个,挺好用的。用法:在jar包中,resources 中建立 META-INF/services文件夹,文件名作为接口的全限定名 public static <S> ServiceLoader<S> getServiceLoader(Class<S> clazz) { if

2020-07-16 20:48:42 316

原创 二分查找

闲来无趣,云品台也开发的差不多了,回顾回顾小小算法,防止老年痴呆/** * 又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较, * 如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小, * 则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。 */public class BinarySerach { @Test public void binarySearchTest() { .

2020-07-16 11:51:39 123

原创 归并排序算法

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。public class MergeSortTest { @Test public void mergeSortTest() { Integer[] arr = {2, 4, 1, 5, 73, 2}; // 数组下标 mergeSort(arr, 0, ar...

2020-07-15 16:14:42 133

原创 Nacos 配置变更http异步通知集群其他服务,并不是长链接

配置变更接口:/nacos/v1/cs/configs获取注册中心服务信息:private static final Executor EXECUTOR = Executors.newScheduledThreadPool(100, new NotifyThreadFactory());Queue<NotifySingleTask> queue = new LinkedList<NotifySingleTask>(); for (int i =

2020-07-07 14:21:35 906

原创 Nacos server事件分发EventDispatcher代码小结

EventDispatcher类,作为事件分发器。AbstractEventListener静态内部抽象类,继承该类后实例化的子类,将在该类中的构造方法被注册到EventDispatcher中,这一点以前我没有想到,挺好的写法,设计模式是监听器模式,通过事件调用具体事件的监听类。对于Spring监听器的实现也是类似,只不过spring监听器将事件作为参数与监听器绑定,通过监听器轮询反射获取参数类型进行比对,而nacos事件分发监听是直接通过监听器与事件类进行成员变量的绑定,注册监听事件的过程有点绕,过程

2020-07-07 14:06:44 648

原创 发现stream里边一个好用的retry组件

说明:代码设计的挺好的,以后可以参考,在此记录下翻译说明使用重试语义简化操作执行的模板类。Retryable操作封装在RetryCallback接口的实现中,并使用提供的execute方法之一执行。默认情况下,如果抛出任何异常或异常的子类,则重试操作。可以使用setRetryPolicy(RetryPolicy)方法更改此行为。另外,在默认情况下,每个操作最多重试三次,其间没有后退。可以使用setRetryPolicy(RetryPolicy)和setBackOffPolicy(Back

2020-07-06 16:56:09 432

原创 sentinel责任链

关于插槽Slot类图分析,其中使用的建造者模式、责任链模式。

2020-07-06 11:54:44 413

原创 ThreadPoolTaskScheduler 简单的记录

initializeBean方法:protected Object initializeBean(final String beanName, final Object bean, @Nullable RootBeanDefinition mbd) { // 省略。。。。 // 对于实现BeanNameAware接口的类,将执行setBeanName方法, // 我觉的setBeanName的作用更倾向于日志方面的记录,比如Spring async线程池

2020-07-03 18:31:17 816

原创 redis设计与实现读书笔记-主从复制

主从复制:在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave)。如果从服务器创建的套接字能成功连接(connect)到主服务器,那么从服务器将为这个套接字关联一个专门用于处理复制工作的文件事件处理器,这个处理器将负责执行后续的复制工作,比如接收RDB文件,以及接收主服务器传播来的写命令,诸如此类。PSYNC

2020-06-29 10:57:00 136

原创 redis设计与实现读书笔记-事件

事件Redis服务器是一个事件驱动程序,❑文件事件(file event):Redis服务器通过套接字与客户端(或者其他Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或者其他服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。❑时间事件(time event):Redis服务器中的一些操作(比如serverCron函数)需要在给定的时间点执行,而时间事件就是服务器对这类定时操作的抽象。文件事件Redis基于R

2020-06-29 10:45:18 182

原创 redis设计与实现读书笔记-持久化

RDB持久化RDB持久化功能所生成的RDB文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时的数据库状态,RDB文件的创建与载入有两个Redis命令可以用于生成RDB文件,一个是SAVE,另一个是BGSAVE。SAVE命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在服务器进程阻塞期间,服务器不能处理任何命令请求,BGSAVE命令会派生出一个子进程,然后由子进程负责创建RDB文件,服务器进程(父进程)继续处理命令请求RDB文件的载入工作是在服务器启动时自动执行的,

2020-06-29 10:26:25 143

原创 redis设计与实现读书笔记-数据库

前言键空间和用户所见的数据库是直接对应的:❑键空间的键也就是数据库的键,每个键都是一个字符串对象。❑键空间的值也就是数据库的值,每个值可以是字符串对象、列表对象、哈希表对象、集合对象和有序集合对象中的任意一种Redis对象。设置键的生存时间或过期时间通过EXPIRE命令或者PEXPIRE命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间(Time To Live,TTL),在经过指定的秒数或者毫秒数之后,服务器就会自动删除生存时间为0的键:❑EXPIRE<key.

2020-06-28 16:57:04 193

原创 redis设计与实现读书笔记-对象

Redis用到的所有主要数据结构,比如简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合等等,Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,每种对象都用到了至少一种我们前面所介绍的数据结构。Redis的对象系统还实现了基于引用计数技术的内存回收机制,当程序不再使用某个对象的时候,这个对象所占用的内存就会被自动释放;另外,Redis还通过引用计数技术实现了对象共享

2020-06-28 16:40:27 166

原创 redis设计与实现读书笔记-数据结构

数据结构:SDS与C字符串的区别:C语言使用长度为N+1的字符数组来表示长度为N的字符串,并且字符数组的最后一个元素总是空字符'\0'。C字符串并不记录自身的长度信息,所以为了获取一个C字符串的长度,程序必须遍历整个字符串,和C字符串不同,因为SDS在len属性中记录了SDS本身的长度,所以获取一个SDS长度的复杂度仅为O(1)。与C字符串不同,SDS的空间分配策略完全杜绝了发生缓冲区溢出的可能性:当SDS API需要对SDS进行修改时,API会先检查SDS的空间是否满足修改所需的要求,如.

2020-06-28 15:46:47 144

原创 一致性哈希算法的理解

概念一致性哈希算法及其在分布式系统中的应用http://blog.codinglabs.org/articles/consistent-hashing.html简单总结:普通分布式缓存痛点:服务器宕机或扩容,数据重新hash计算影响大。虚拟环:一致性hash算法是来做服务器的负载均衡,而服务器的IP地址是32位,所以是2^32-1次方的数值空间。服务器寻址:h = Hash(ip或主机名) % N, N为服务器的台数,并且服务器按照0 – (N-1)编号数据定位服务器:采用..

2020-06-27 20:03:00 180

原创 springgateway限流-令牌桶算法

限流配置参见:https://blog.csdn.net/forezp/article/details/85081162https://cloud.spring.io/spring-cloud-gateway/2.2.x/reference/html/#the-requestratelimiter-gatewayfilter-factoryhttp://www.ityouknow.com/springcloud/2019/01/26/spring-cloud-gateway-limit.ht

2020-06-26 21:19:07 1295

原创 SpringGateway转发过程

为什么写?就想看看springgateway的限流咋做的?但是看着看着就想知道转发过程,然后就写了,总之:转发是通过重组请求头header、uri等信息建立netty客户端连接的访问过程。Lettuce相较于Jedis有哪些优缺点?Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server。Jedis在实现上是直接连接的redis server,如果在多线程环境下是非线程安全的,这个时候只有使用连接池,为每个Jedis实例增加物理连接

2020-06-26 19:24:41 3625

原创 一个SpringBoot里边函数式编程的例子

为什么写因为看到了SpringBoot一个关于函数式编程的完美例子,以前很少用到,但是写的真是太美了,就像美女一样,真养眼。先看下lambda常用的函数接口接下来看看她长什么样子public final class PropertyMapper { private static final Predicate<?> ALWAYS = (t) -> true; private static final PropertyMapper INSTANCE = new

2020-06-26 12:41:50 1111

原创 Druid的数据库连接获取过程以及是否可热切换域名

为什么写?我就想看看,到底和普通建立当有啥区别,另外是否可以热切换域名普通的Mysql创建连接的过程:public class Conn { Connection con; public Connection getConnection() { try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("数据库驱动加载成功");

2020-06-25 19:29:13 1063

原创 关于@EnableFeignClients的认识

今天起了大早,偶尔发现,项目忘记加入注解@EnableFeignClients,导致启动失败,于是想知道它做了啥呢?为什么项目没有加载相关bean?原来@EnableFeignClients是通过@Import把FeignClientsRegistrar注入到IOC容器中,当项目启动执行invokeBeanFactoryPostProcessors--》invokeBeanDefinitionRegistryPostProcessors—》ConfigurationClassPostProc

2020-06-24 10:37:37 5360

原创 回顾篇-SpringBoot-Tomcat

为什么写?今天看了Spring实战第五版,里边有句话如下:传统的基于Servlet的Web框架,如Spring MVC,在本质上都是阻塞和多线程的,每个连接都会使用一个线程。在请求处理的时候,会在线程池中拉取一个工作者(worker)线程来对请求进行处理。(读到这里没啥疑问,但是接下来说的我有点疑惑)同时,请求线程是阻塞的,直到工作者线程提示它已经完成为止。我就在想SpringBoot默认内置的Tomcat应该是Nio,请求线程不应该是阻塞的,应该是同步非阻塞的,于是变回顾下请求过程。To

2020-06-23 11:37:22 293

原创 使用常见的反应式操作

import lombok.Data;import org.junit.Test;import reactor.core.publisher.Flux;import reactor.core.publisher.Mono;import reactor.core.scheduler.Schedulers;import reactor.test.StepVerifier;import reactor.util.function.Tuple2;import java.time.Duratio...

2020-06-22 18:15:20 1073

原创 回顾篇-mysql索引-读书笔记

事务日志事务日志可以帮助提高事务的效率。使用事务日志,存储引擎在修改表的数据时只需要修改其内存拷贝,再把该修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。事务日志采用的是追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O,而不像随机I/O需要在磁盘的多个地方移动磁头,所以采用事务日志的方式相对来说要快得多。事务日志持久以后,内存中被修改的数据在后台可以慢慢地刷回到磁盘。目前大多数存储引擎都是这样实现的,我们通常称之为预写式日志(Write-Ahead Lo...

2020-06-20 19:45:07 211

restful zip请求直接解析和下载

restful zip请求直接解析和下载restful zip请求直接解析和下载restful zip请求直接解析和下载restful zip请求直接解析和下载restful zip请求直接解析和下载restful zip请求直接解析和下载restful zip请求直接解析和下载restful zip请求直接解析和下载

2018-08-11

华为日志说明

华为日志说明华为日志说明华为日志说明华为日志说明华为日志说明华为日志说明华为日志说明华为日志说明华为日志说明华为日志说明华为日志说明华为日志说明华为日志说明华为日志说明华为日志说明华为日志说明

2018-07-13

syslog工具(win10可以用)

syslog工具(win10可以用)syslog工具(win10可以用)syslog工具(win10可以用)syslog工具(win10可以用)syslog工具(win10可以用)syslog工具(win10可以用)syslog工具(win10可以用)syslog工具(win10可以用)syslog工具(win10可以用)syslog工具(win10可以用)syslog工具(win10可以用)syslog工具(win10可以用)syslog工具(win10可以用)syslog工具(win10可以用)syslog工具(win10可以用)

2018-07-13

华为交换机手册配置(包括syslog日志)

华为交换机日志说明华为交换机日志说明华为交换机日志说明华为交换机日志说明华为交换机日志说明华为交换机日志说明华为交换机日志说明华为交换机日志说明华为交换机日志说明华为交换机日志说明

2018-07-13

webgoatwebgoatwebgoat

webgoatwebgoatwebgoatwebgoatwebgoatwebgoatwebgoatwebgoatwebgoatwebgoatwebgoatwebgoatwebgoatwebgoatwebgoatwebgoatwebgoatwebgoatwebgoat

2017-09-22

iBase4J配置部署说明+代码

iBase4J配置部署说明+代码 iBase4J配置部署说明+代码 iBase4J配置部署说明+代码 iBase4J配置部署说明+代码 iBase4J配置部署说明+代码 iBase4J配置部署说明+代码 iBase4J配置部署说明+代码

2017-09-13

listener-tnsname

listener-tnsnamelistener-tnsnamelistener-tnsnamelistener-tnsnamelistener-tnsnamelistener-tnsnamelistener-tnsnamelistener-tnsname

2017-09-09

PLSQL Developer11中文绿色

PLSQL Developer11中文绿色PLSQL Developer11中文绿色PLSQL Developer11中文绿色PLSQL Developer11中文绿色PLSQL Developer11中文绿色

2017-09-09

bootstrap demo 大全

bootstrap demo 大全。。非常多的例子。。立马上手 bootstrap demo 大全。。非常多的例子。。立马上手 bootstrap demo 大全。。非常多的例子。。立马上手

2017-09-03

bootstrap树 bootstrap-treeview完整例子

bootstrap树 bootstrap-treeview完整例子bootstrap树 bootstrap-treeview完整例子bootstrap树 bootstrap-treeview完整例子bootstrap树 bootstrap-treeview完整例子bootstrap树 bootstrap-treeview完整例子

2017-09-03

Jboss源码解析

Jboss源码解析

2017-08-30

深入理解Java虚拟机——JVM高级特性与最佳实践(第2版).pdf,完整

深入理解Java虚拟机——JVM高级特性与最佳实践(第2版).pdf,完整,带书签, 完整版

2017-08-27

深入java虚拟机源码

深入java虚拟机源码

2017-08-22

servlet反射注解例子

利于学习注解和反射知识

2016-10-13

上传下载java

上传下载java

2016-10-11

发送邮件的代码

发送邮件的代码

2016-10-11

cronolog-1.6.2.tar

cronolog-1.6.2.tar

2016-08-03

wsdl说明书查看方法

wsdl开发文档,的查看方式,支持开源,反对积分!

2016-01-15

dwr简单例子

dwr简单例子 ,自己根据文档写的例子,有一点要注意:就是页面不能写在web-info下,只能写在webcontext下,因为找不到;支持开源,反对积分!

2016-01-15

webservice和socket简单例子

webservice和socket简单例子,支持开源,反对积分!

2016-01-15

安卓eclipse配置

安卓eclipse配置.

2016-01-06

oracle习题

这是一个很好地 练习题,帮助我们更好的了解oral

2015-10-23

oracle课件

ORACLE的上课文档,很好很实用,希望能帮助更多的我们!

2015-10-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除