- dependencyManagement
- 用于父类的管理,一般写在顶层父类的pom.xml中
- 只是做声明依赖,不做具体引入,只有在子项目中使用到是才会实现依赖
- 子类声明了version,就用子类自己的,否则都继承父类的version和scope
- dependencies
- 默认被子类全部继承
日期类
1 | System.out.println(new Date()); |
Date获取7天后的日期
1 | 1、 DateUtils.addDays(); |
SpringSecurity+ oauth2实现同账号多端同时登录
SpringSecurity+ oauth2实现同账号多端同时登录
参考链接:https://blog.csdn.net/m0_67391377/article/details/126509478
单点登录:https://mp.weixin.qq.com/s/DGFFPl93kZxS5G_DSFTBDA
多端登录:https://blog.csdn.net/zhourenfei17/article/details/88826911
shiro中的Realm如何使用
参考链接:https://blog.csdn.net/m0_54849873/article/details/124345270
shiro域(安全数据源)
shiro从Realm获取安全的数据(例如用户,角色,权限等)
SecurityManager需要进行身份验证就必须从Realm中获取到一个合法的用户身份,从而比较用户身份是否合法,同时在SecurityManager获取身份的同时Realm也需要维护一套用户身份用来判断用户是否能执行某项操作
cookie和session的区别
cookie 和 session 的区别
localstorage 和cookie 的区别
- 都可以用来做本地存储,实现数据的持久化,区别如下
- localstroage存储的内容会多一点,5M;cookie存储的只有4k;
- 有效时间不一样;cookie 的有效时间可以自行设置,local可以一直生效;
- 请求时cookie可以被携带,同源的cookie信息会自动作为请求头的一部分发给服务端;local不会,一直存储在浏览器端
localstroage 和sessionstroage 的区别
- 都是前端的本地存储(保存在客户端,不与服务器进行交互通信,存储数据的大小一样,只能存储字符串类型的数据)
- 生命周期不同,local是永久的,除非主动删除;session的生命周期仅在当前会话下有效,在同源的窗口中始终存在的数据(只要浏览器的窗口没有关闭,即使刷新页面或者进入同源的另一个页面数据依旧存在,但在关闭浏览器窗口就会被销毁)
session 和sessionStroage 的区别
- session主要的作用是维持会话状态的key,sessionStroage则是存储会话期间的数据
ftp问题
问题 :FTP上传storefile一直返回false的解决,报500
https://blog.csdn.net/LiHuiJUNMate/article/details/124257181
https://blog.csdn.net/weixin_44901564/article/details/108062627
javacv学习笔记
java版opencv之Javacv各种场景使用案例
————————————————
版权声明:本文为CSDN博主「jwolf2」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39506978/article/details/133251234
java opencv 基本操作6
js运行进制的梳理
参考连接:https://mp.weixin.qq.com/s/0tLxTybwJ7NCLBPtQClXoA
js运行进制的梳理
进程与线程
- 两者区别
- 简单来讲,能看到的就是进程,例如:资源管理器中的进程列表;看不到的就是线程;
- 进程是cpu资源分配的最小单元(系统会给他分配资源,能拥有资源和独立运行的最小单位);
- 线程是cpu调度的最小单位(线程是建立在进程的基础上的一次程序运行单位);
浏览器是多线程的,它包括哪些进程
- Browser线程:浏览器的主线程,只有一个
- 第三方的插件进程:每个类型的插件对应一个进程,使用时才会创建
- GPU进程(最多一个,用于3D绘制等)
- 浏览器渲染进程(浏览器内核) Renderer进程,每个tab页面一个进程:用于页面渲染、脚本执行、事件处理
为什么浏览器是多线程的
如果是单线程的,某个tab页面崩溃或者插件崩溃,就会影响到整个的浏览器
浏览器内核(渲染进程)多线程的
- GUI渲染线程(渲染页面,解析html、css)
- js引擎线程(js内核,处理js脚本程序,一个tab页面只有一个js线程来运行js程序)
- GUI渲染线程和js线程是互斥的
- 事件触发归属于浏览器,用于控制事件循环;js是单线程,事件队列中的任务都是排队等待js引擎处理
- 定时触发器线程
- 异步http请求线程
Browser进程和浏览器内核(Renderer进程)的通信过程
- B进程收到用户请求,需要获取页面内容,随后将该任务通过RendererHost接口传递给Renderer进程;
Renderer接口收到信息后,交给渲染线程(加载网页开始渲染网页,可能会使用到Brwerer进程获取资源或者GPU进程来帮助渲染-可能会有js线程操作DOM-最后Renderer进程将结果传递给Browser进程),Browser进程收到结果并绘制出来
浏览器内核线程之间的关系
- GUI渲染线程和js引擎线程互斥
- js是可以操作DOM的,如果在修改这个元素属性的同时渲染界面,那渲染线程前后获取的元素数据就不一样了;
- js阻塞页面加载
- 避免js执行实践过长,这样会造成页面的渲染不连贯,导致渲染加载阻塞,用户体验不佳
- WebWorker,js的多线程?
Spring Joinpoint类注解
Spring Joinpoint类注解
joinpoint是AOP 的连接点(一个连接点代表一个被代理的方法)
静态连接点就是被代理的方法本身,可以直接通过getStaticPart方法调用,动态连接点就是对静态方法之外的增强方法;
动态连接点从静态连接点的拦截器上获取静态部分,并进行加强,形成动态连接点;
proceed() 方法得作用是:转到链的下一个拦截器上;
getStaticPart() 方法的作用是:返回连接点的静态部分;静态部分是一个拥有连接器链的对象;(这个静态方法都要被谁拦截使用,可以通过该方法返回)
ReflectiveMethodInvocation类是joinpoint的实现类
至此,proceed()方法解析完毕。我们来总结一下。
首先要明确的一点就是一个连接点代表着一个对象里的一个方法。一个对象里的多个方法,就是多个连接点。每个连接点对象中,都存着一个拦截器链,proceed方法就是遍历拦截器链,如果和连接点所代表的方法一致,则执行MethodInterceptor的invoke方法,进行方法的代理,如果拦截器和代理方法不匹配,则进入下一个拦截器。直到都不匹配,则执行原始方法。
代理对象的所有方法,都会形成一个连接点对象;
由此可知,我们定义的方法,最终会封装为相应的MethodInterceptor对象,在连接点的proceed中被调用;而在连接点的拦截器中,已经封装好了连接点所代理方法MethodInterceptor;连接点直接使用拦截器进行方法的调用;
综合所述,连接点就是AOP中的最小单元,连接点里存放了代理对象的目标类,目标方法,方法拦截器;进行代理的时候,调用拦截器MethodInterceptor的加强方法,执行代理方法;
参考链接:https://blog.csdn.net/qq1309664161/article/details/120159606
Shiro之@RequiresPermissions注解原理详解
原理:使用了AOP进行了增强,来判断当前用户是否有该权限标识;
从proceed()方法进来,然后发送请求,进入断点,加强链上的AopAllianceAnnotationsAuthorizingMethodInterceptor元素就是加强@RequiresPermissions而生成的元素,该类实现了MethodInterceptor 接口,其中invoke方法就是对原对象方法的增强,进入方法,执行到了assertAuthorized()方法,调用其中的getMethodInterceptors()方法获取注解,若有则调用相应的注解Handler去处理相应的逻辑(就是调用Realm中定义的权限获取方法);
这样就对注解@RequiresPermissions的方法进行了增强
参考链接:https://blog.csdn.net/qq1309664161/article/details/123181245
报错
报错:Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is java.lang.NullPointe
报错:springboot/cloud项目接口调用返回结果从json变为xml原因
报错:java.net.SocketException: Software caused connection abort: recv failed
问题总结
1.跨域问题 Cross-Origin Read Blocking (CORB) blocked cross-origin response
https://blog.csdn.net/Gemini_Kanon/article/details/114025078
2.跨域的请求在服务端会不会真正执行?
https://blog.csdn.net/qq_41720396/article/details/124702736
3.nginx实现跨域的原理:就是把前端项目和后端项目放在一个域中
https://blog.csdn.net/weixin_39860280/article/details/111647823
4.new File()会不会在本地创建文件(File类是对文件系统的映射,并不是硬盘上真实的文件)
https://blog.csdn.net/weixin_33994429/article/details/94455128