vmware tool无法安装
说明Vmware有概率不能安装tool, 安装程序无法自动安装VirtualMachineCommunicationInterfaceSockets(VSock)安装程序无法自动安装VirtualMachineCommunicationInterfaceSockets(VSock)驱动程序。必须手动安装此驱动程序。 从下面文章看来是因为签名的问题,需要手动更新Windows的签名驱动程序 大佬已经封装了ios,可以直接加载到虚拟机中安装即可 天翼云盘 https://cloud.189.cn/t/7jqiiav2Ib2m(访问码:iwi3) 引用 安装程序无法安装内存管理器同上,安装好了签名驱动程序再安装一次就好了
申请阿里云测试证书
说明阿里云的证书可以使用3个月,3个月到期后再重新生成一个虽然麻烦,谁叫咱是免费的呢,要不然就花68升级Pro版本可以管一年 流程 创建证书 证书申请 选择免费版 然后填上自己的域名 勾选快捷签发, 勾选后会出现域名验证方式、算法、快捷签发等 然后填提交审核 待认证列表 点击 查看进度 详情详情里面查看具体情况,需要记录下解析数据,在域名解析处配置好txt解析方式然后点击验证 配置域名在域名解析处添加一个解析,采用TXT格式配置,将上面的数据填至解析中 验证 域名配置完成后,点击验证,这里就成功了,关闭窗口刷新一下页面就可以看到。 部署列表后面有操作下载、部署,一般点击下载,然后选择合适的格式,自行部署到服务器上。我这里使用nginx,则下载nginx格式,然后配置到Nginx中。 总结总的来说申请还是比较简单的,需要注意的是点击申请之后会提示正在审核中,可能就会导致我们理解需要等待人工审核,实际上是不用的, 需要继续在待认证列表中点击申请审核中的状态继续下一步操作
nginx配置ssl
配置1234567891011121314151617181920212223242526272829303132333435363738394041server { listen 443 ssl; server_name own.liukewen.cn; #root /usr/share/nginx/html; # Load configuration files for the default server block. ssl_certificate /etc/nginx/cret/own.liukewen.cn.pem; ssl_certificate_key /etc/nginx/cret/own.liukewen.cn.key; ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; ssl_ciphers...
SpringSecurity全局异常处理器覆盖全局
说明SpringSecurity的异常过滤器ExceptionTranslationFilter默认在倒数第二位出现,即过滤器即将走完的时候出现,不知道SpringSecurity为啥这样实现,但是这样处理的话就会导致前面过滤器中的异常无法处理到。最终的结果就是对于非认证异常等就会走默认的实现,即重定向到/error页面,但前后端分离项目中我们又没有/error页面,因此又会出现一个循环异常,导致报错到前端的异常为InsufficientAuthenticationException,这个异常是很隐晦的,基本看不出来本质的异常信息,毕竟已经重定向了N次了。因此前后端分离项目中,我们需要第一次报错出去就返回异常信息。 实现方案一: SpringSecurity中加入过滤器链我们需要在Config配置中添加过滤器,在WebAsyncManagerIntegrationFilter之前添加 1234protected void configure(HttpSecurity http) throws Exception { //配置信息中添加过滤器 ...
SpringSecurity异常处理增强,加入ControllerAdvice统一处理异常返回
1. 说明SpringSecurity的实现原理是过滤器,它的执行时间比SpringMVC早,因此在执行SpringSecurity相关功能(如用户登录)时是使用不到SpringMVC的统一返回处理@ContrtollerAdvice + @ExceptionHandler的组合套装的。 2. SpringSecurity 实现 @ContrtollerAdvice增强SpringSecurity想要实现@ControllerAdvice需要对其认证返回 的异常做自定义处理,并引用SpringMVC的异常处理器其思路就是在返回扩展接口中调用SpringMVC的异常解析器来解析处理,这样就衔接上了SpringMVC的扩展 示例实现如下 2.1. 引入依赖引入SpringSecurity和SpringMVC的相关依赖 12345678<dependency> <groupId>org.springframework.boot</groupId> ...
mybatis拦截器Interceptor无法注入spring容器问题及解决方案
说明Mybatis的插件先于spring容器的完全初始化,虽然加了@Component会被扫描加入容器管理,但是此时Mybatis的拦截器lnterceptor注入的对象是还未初始化到容器的。所以通过这种方式拿到的bean为空。 在最后分析为啥插件会先于spring容器完全初始化(不是指在容器之前初始化,是在容器加载完所有的BeanDefinition之前完成) 解决使用@Lazy注解既然先进行完全初始化,那么我们可以先不让其进行属性注入,当需要使用的时候再进行注入,这样就把注入时机延后了采用@Lazy的目的就是在第一次使用时才真正注入,加入容器时注入的是一个代理对象,因此可以解决此问题 12345678@Slf4j@Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})})public class...
java中执行linux命令部署前端代码
说明执行linux命令可以用Runtime来执行,但是不是很方便,而且需要做很多额外的操作,如windows的换行符等,这里采用 apache的 commons-exec 包来处理 引入依赖maven 依赖 123456<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-exec</artifactId> <version>1.3</version></dependency> 应用中使用应用中直接组装好shell语句,然后执行方法即可,方法如下 123456789101112131415161718192021222324252627282930313233/** * 执行指定命令,输出结果到指定输出流中 * * @param command 命令 * @param out 执行结果输出流 * @return 执行结果状态码:执行成功返回0 * @throws...
SpringSecurity之FormLoginConfigurer的泛型参数分析
1. FormLoginConfigurer说明SpringSecurity采用了一系列的Configurer配置来统一配置过滤器链及其中的 Bean对象配置等,通过全局共享Bean对象实现不同地方注入同一个对象FormLoginConfigurer 主要用于配置UsernamePasswordAuthenticationFilter这个过滤器,也就是默认的表单登录的过滤器 2. FormLoginConfigurer解析先说结论,FormLoginConfigurer 有一个泛型<H extendsHttpSecurityBuilder>,但是它父类AbstractAuthenticationFilterConfigurer有三个泛型, FormLoginConfigurer...
vue父组件传方法给子组件的两种方法
说明vue项目中,当组件由引用时,父组件传给子组件的值可以由两种方法实现 方法一: 父组件像传输数据一样直接传方法给子组件方法二: 利用VueComponent实例的 this.$emit()函数实现 应用方法主要在子组件,父组件主要是入参不同和函数的内容不同,search1代表第一种方法以v-bind方式传递 search2代表第二种方法以v-on方式传递 父组件 12345678<template> <!-- searchPage1 方式直接v-bind传递方法到子组件,子组件props接收 --> <!-- searchPage2 方式 v-on方式绑定到子组件,子组件 this.$emit使用 --> <search-table :searchPage1="searchUser" @searchPage2="searchUserCallback" ...
vue语法
父子组件传递子组件调用父组件的方法父组件 1234567891011<template> <auth-object @loadList="listRole"></auth-object></template><script>methods:{ listRole(params){ //...... }}</script> 子组件auth-object 123let data = {}this.$emit("loadList", params)return data 子组件获取父组件的$emit返回值应用场景:子组件调用父组件的方法并获取到父组件方法的返回值 直接使用let data = this.$emit("loadList",...