自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 tomcat-springboot

SpringApplication的启动,run方法返回一个ConfigurableApplicationContext。public static void main(String[] args) { SpringApplication.run(OutsideServiceApplication.class, args); }最后调用SrpingApplication的方法:StopWatch stopWatch = new StopWatch(); stopWatch.s...

2022-01-04 13:25:55 357

原创 mybatis sql

list 中 包含null, sql查询 in (null) ,null 也会被作为一个值 被选择 in(null) 只会选择为null的记录。queryWrapper.lambda().select(RiskCheckAsset::getId, RiskCheckAsset::getAssetNo, RiskCheckAsset::getAppNo, RiskCheckAsset::getTaskNo) .in(CollectionUtils.isNotEmpty(a

2021-11-30 12:07:11 560

原创 2021-11-10

三个队列 runnext 、 local queue 、global queue 多级队列是为了解决程序的局部性问题,最新的程序 通常最近需要执行。go 创建runnext 为空的情况go func(){ println("hello world")}()此时runnext 不为空,新来一个踢走本地队列未满,放入到local queuelocal quque 满的情况拿出原来的一般和被踢走的G 组成一个新的链表 ...

2021-11-11 13:25:04 506

原创 源码工具类

MethodIntrospector找到表有目标注解的方法annotatedMethods = MethodIntrospector.selectMethods(targetType, (MethodIntrospector.MetadataLookup<EventListener>) method -> AnnotatedElementUtils.findMergedAnnotation(method, EventListener.class)...

2021-11-03 17:25:22 113

原创 AbstractAutoProxyCreator

不同于ProxyFactory和ProxyFactoryBean 给单个bean增加代理。spring提供了基于一定规则自动发现和代理。public abstract class AbstractAutoProxyCreator extends ProxyProcessorSupport implements SmartInstantiationAwareBeanPostProcessor, BeanFactoryAware {ProxyProcessorSupport 继承自Pro.

2021-10-26 14:20:31 212

原创 spring-advisor-advised

Advisor接口,holding advice(action to take at a joinpoint,在连接点上执行的动作)和pointcut。Advice EMPTY_ADVICE = new Advice() {};Advice getAdvice(); 返回aspect切面的advice部分,advice可以是Interceptor,before advice或者throws advice等,如果pointcut匹配到的话 就返回对应的advice。Default...

2021-10-20 15:29:24 126

原创 aopalliance-invocation-methodInterceptor-advice

org.aopalliance.intercept.Joinpoint 顶层接口表示一个运行时的连接点,For instance, an* invocation is the runtime joinpoint on a method (static joinpoint)proceed() :Proceed to the next interceptor in the chainorg.aopalliance.intercept.Invocation一个invocat...

2021-10-20 11:44:31 117

原创 JdkDynamicAopProxy 和 CglibAopProxy

JdkDynamicAopProxy 属性AdvisedSupport ,它是aop 代理的配置。当我们创建代理的时候会将config传递进去。JdkDynamicAopProxy 获取代理:生成jdk原生动态代理对象,同时将自己传递进去,实现了InvocationHandler的接口,@Override public Object getProxy(@Nullable ClassLoader classLoader) { if (logger.isDebugEnabled()) {...

2021-10-19 18:49:33 131

原创 ProxyFactory

@Test public void test(){ ProxyFactory proxyFactory = new ProxyFactory(); // 可改变target的引用 HotSwappableTargetSource targetSource = new HotSwappableTargetSource(new DemoOne("黄晓明")); proxyFactory.setTargetSource(...

2021-10-19 18:27:08 436

原创 spring bean生命周期和循环引用

spring 对单例的简单bean(未被代理)解决了循环引用的问题,且spring是通过set方式才能实现,构造器注入是不行的关于多级缓存的问题:https://cloud.tencent.com/developer/article/1497692首先创建原始的bean添加到缓存(此时一级缓存坑定是没有的)添加入到三级缓存,这是一个factorygetEarlyBeanReference SmartInstantiationAwareBeanPostProce...

2021-10-12 09:43:00 84

原创 MyAdvisor

{ return false; } } }; } @Override public MethodMatcher getMethodMatcher() { return new MethodMatcher() { .

2021-10-11 18:28:08 133

原创 spring redis缓存原理

spring cache启动开关 EnabelCaching @EnableAsync@SpringBootApplication(scanBasePackages={"com.lls.asset.service"},exclude={DataSourceAutoConfiguration.class,MybatisPlusConfig.class})@NacosPropertySources({@NacosPropertySource(dataId=...

2021-10-09 14:04:25 103

原创 Lambda表达式

方法引用:

2021-09-30 11:23:27 66

原创 go-errors

1、error接口提供Error() 方法供实现// http://golang.org/pkg/builtin/#errortype error interface { Error() string}// http://golang.org/src/pkg/errors/errors.gotype errorString struct { s string}// http://golang.org/src/pkg/errors/errors.gofunc (e *errorSt

2021-09-29 11:44:42 96

原创 类型断言assertion

类型断言有个非常好的使用场景:当某个类型为interface{}的变量,真实类型为A时,才做某件事时,这时可以使用类型断言,注意 x必须是接口类型x.(T):import "fmt"func printValue(v interface{}) { fmt.Printf("The value of v is: %v", v.(int))}func main() { v := 10 printValue(unc printValue(v interface{}) { if v,

2021-09-27 14:21:12 82

原创 ApplicationEvent原理

org.springframework.context.support.AbstractApplicationContext#publishEvent(org.springframework.context.ApplicationEvent)/** * Publish the given event to all listeners. * @param event the event to publish (may be an {@link ApplicationEvent} * or a

2021-09-27 13:22:19 325

原创 泛型-type

能够取到的一定是确定好的,字节码里面存在的一些泛型参数类型

2021-09-23 21:50:49 76

原创 interface and embedding

多态性:// Sample program to show how polymorphic behavior with interfaces.package mainimport ( "fmt")// notifier is an interface that defines notification// type behavior.type notifier interface { notify()}// user defines a user in the program

2021-09-16 11:29:57 82

原创 方法参数Parameter获取参数信息

public void test1(UpdateContractInfo updateContractInfo){ }public void test(List<String> args){}private static void fa() { List<String> dataStr = new ArrayList<>(); dataStr.add("abc"); ReflectionUtils.do.

2021-09-15 18:12:37 2244

原创 function-

function1 值类型或者指针类型都可以互相调用值接受者或者指针接受者2 是否改变原来的值 取决于接受者是值类型还是指针类型// Sample program to show how to declare methods and how the Go// compiler supports them.package mainimport ( "fmt")// user defines a user in the program.type user struct { na

2021-09-15 12:51:34 76

原创 map---

声明一个map var my map[int]int 这个map 是nil ,值为map[],长度为0 ,hash[key]=value 赋值报错,单允许访问 声明map make方式 var my make(map[T]T,num) ,num为初始map长度,默认为0 map的key 不能是function,slice,map,可以是bool,数字,string,指针,channer,interface,struct,array in short 可以用==判断 As men...

2021-09-15 11:07:28 48

原创 spring 挂扣

SmartInitializingSingleton:调用链路: 在所有bean完成初始化之后回调 bean需要实现此接口org.springframework.context.support.AbstractApplicationContext#refresh-// Instantiate all remaining (non-lazy-init) singletons. finishBeanFactoryInitialization(beanFactory); -// Inst..

2021-09-14 14:54:23 54

原创 FactoryBean

先工厂bean &beanName 后再次 getBean(beanName):

2021-09-14 12:49:09 43

原创 ex-常量

未定义类型常量和已定义类型常量constant a = 123等式左边已命名常量,右边是未命名常量,拥有未定义的类型。当有足够的内存来存储整数值时,可以始终精确地表示整数未命名常量只会在编译期间存在,因此其不会存储在内存中,而命名常量存在于内存静态只读区,不能被,Go语言禁止了对常量取地址的操作// Constants live within the compiler. // They have a parallel type system. // Compiler can per..

2021-09-13 15:56:19 102

原创 maven-qa

1、java.lang.Exception: java.io.IOException: DerInputStream.getLength(): lengthTag=111, too big.<resource> <directory>src/main/resources</directory> <filtering>true</filtering>解决:filter = true 可能会破坏文件<r..

2021-09-02 12:25:44 131

原创 arthas

session 当前会话 reset 重置增强类,将被Arthas增强过得类全部还原,Arthas 服务器端关闭会重置所有增强过得类 keymapthread -b 查询死锁的进程thread -status WAITINGvmoptionjad --source-only package.class 只显示源码反编译指定的函数 jad class method...

2021-09-01 00:30:18 70

原创 go反射-

var z = 123var y = &zvar x interface{} = yfmt.Println("y ",reflect.ValueOf(y))fmt.Println("x ",reflect.ValueOf(x))reflect.ValueOf(y) 和 reflect.ValueOf(x) 都是 &z 即123的地址如果var x interface{} = &y 那么reflect.ValueOf(x) 就是&y...

2021-08-30 16:40:18 119

原创 javac-java

2021-08-16 12:15:15 77

原创 git---

git checkout --track origin/远程分支名

2021-08-11 19:41:05 51

原创 @Aspectj 自动代理原理

@EnableAspectJAutoProxyorg.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator extends AspectJAwareAdvisorAutoProxyCreator extendsAbstractAdvisorAutoProxyCreator extendsAbstr...

2021-08-10 17:48:41 179

原创 Spring AOP APIs-Part III. Core Technologies翻译

12.Spring AOP APIs12.1 介绍12.2 spring中的Pointcut12.2.1 概念spring的pointcut模式可以使得pointcut重复使用advice类型,它可以使用相同的poincut定位到不同的advice上。org.springframework.aop.Pointcut接口是个核心的接口,用于将advices定位到特定的类和方法上。完整接口如下:public interface Pointcut { ClassF...

2021-08-10 16:37:18 71

原创 go-关于nil

在go语言中nil只是一个变量名,buildin/buildin.go 中 定义// nil is a predeclared identifier representing the zero value for a// pointer, channel, func, interface, map, or slice type.var nil Type // Type must be a pointer, channel, func, interface, map, or slice ty...

2021-08-10 16:36:09 504

原创 JDK动态代理原理

JDK 动态代理:通过Proxy类中内部类 ProxyClassFactory生成的代理对象生成包号,和自增num,每生成一个代理对象就会加 num后缀,直接生成一个字节码数组文件,然后defineClass,生成class对象newProxyInstanceJDK 动态代理: 定义接口: public interface Star{String sing(String name);String dance(S...

2021-08-10 16:34:00 51

原创 ali-java-多线程

java多线程 Thread的原理:private native void start0(); start0 是一个native 方法 ,jvm虚拟机在不同的操作系统上(windows,linux,unix)都是不同的算法来实现的。A native method is a Java method whose implementation is provided by non-java codeJNI技术Java不在乎Native方法是用什么语言实现的,只要一来语言能和底层打...

2021-08-10 16:33:32 98

原创 spring方法级别数据校验-MethodValidationPostProcessor原理

一、向容器中注入BeanMethodValidationPostProcessor@Beanpublic MethodValidationPostProcessor methodValidationPostProcessor() { return new MethodValidationPostProcessor();}二、MethodValidationPostProcessor 创建advisor,对应的是AnnotationMatchingPointcut,这个切点用来匹配Va.

2021-08-10 15:44:09 1893

原创 2021-08-09

一、线程执行完毕 join,wait time ,直接返回现场:在sftp建立连接的时候,不到4毫秒 ,timeout 异常,但是设置了2分钟,com.jcraft.jsch.Util#createSocket原因:tmp 是另起线程,主线程启动join等待超时时间,但是tmp线程执行完成之后,就会直接返回,因此timeout 设置的2分钟无意义。...

2021-08-09 15:19:44 67

原创 java-beans

BeanInfo Introspector.getBeanInfoBeanDescriptor PropertyDescriptor[] MethodDescriptor[]PropertyDescriptor 属性编辑器 通过beanInfo获取 描述javabean的属性以及提供暴露出可访问的方法。PropertyChangeListener PropertyEditor ==》 PropertyEditorSupportPropertyEdito...

2021-08-08 14:08:03 132

原创 jdk-虚拟机

jdk-虚拟机从java.exe 开始讲投java类加载运行全过程jdk远吗级别剖析jvm核心类加载器jdk源码级别剖析类加载双亲委派机制手写自定义类加载器打破双亲委派机制tomcat了加载机制深度剖析手写tomcat类加载器实现多个版本代码共存隔离classLoad.loadClass(.class) ==> 类 如果加载在虚拟机上的验证 字节码文件是否正确,有规范javap -v Math.class ,下面就是 二进制的另...

2021-08-05 22:49:35 177

原创 goland-gopath

通过在goland 的terminal 可以go env 可以查看到go 配置set GO111MODULE=onset GOPATH=D:\opt\gopath;C:\Users\lixiaojian\go电脑上powderShell go env 查看set GOPATH=C:\Users\lixiaojian\gogoland 的go 配置仅限goland编译器关于下载包的问题当我们开启go mod 模式 go env -w GO111MODULE=on 即s...

2021-07-29 15:40:53 470

原创 docker-compose

语法:docker compose文件的语法说明https://docs.docker.com/compose/compose-file/先来一个简单的实例:之前做了一个go-web 程序的镜像,这里通过docker-compose来创建容器version: "3.8"services: dockergo-demo: image: godocker:1.0 networks: - demo-network ports: - 8081.

2021-07-28 23:35:14 291

空空如也

空空如也

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

TA关注的人

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