解决 spring boot devtool 热部署后出现访问404问题

DevTools的检测时间和idea的编译所需时间存在差异。在idea还没完成编译工作前,DevTools就开始进行重启和加载,导致@RequestMapping没有被全部正常处理。其他方法没试,就直接用了看起来最简单的方法:牺牲一点时间,去加长devtools的轮询时间,增大等待时间。 解决方案如下: spring.devtools.restart.poll-interval=3000ms spring.devtools.restart.quiet-period=2999ms   from:https://www.cnblogs.com/yxfcnbg/p/11510426.html

龙生   13 Dec 2020
View Details

把object转成JSONObject JSON.toJSON

把object转成JSONObject JSON.toJSON public void onNext(Object o) { LogUtil.i("getFavorites", "json=" + o.toString()); JSONObject json = JSON.parseObject(o.toString()); // JSONObject json = JSON.parseObject("{\"code\":1001,\"timestamp\":\"2018-11-05 03:40:54\"}"); LogUtil 的可以打印o.toString() 出来,直接传字符串解析json可以获得属性值,为什么JSONObject json = JSON.parseObject(o.toString()); 就报错了?强制转换也报错,把object转成JSONObject 这种要怎么用的? 或者怎么把Object o 这个对象里面的属性值读出来的? 怎么变成字符串的? public interface ObserverResponseListener<T> { void onNext(T t); 传进来的Object是个泛型的 JSONObject json = (JSONObject) JSON.toJSON(o); 用这样可以了   from:https://www.cnblogs.com/zdz8207/p/java-object-JSONObject.html

龙生   11 Dec 2020
View Details

java 遍历数组常见的3种方式

1.for循环,最常见 2.利用foreach 3.利用jdk自带的方法  --> java.util.Arrays.toString()   from:https://www.cnblogs.com/baiaixing/p/11369514.html

龙生   11 Dec 2020
View Details

X-Frame-Options响应头配置详解

X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 <frame>, </iframe> 或者 <object> 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌套到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。 X-Frame-Options三个参数: 1、DENY 表示该页面不允许在frame中展示,即便是在相同域名的页面中嵌套也不允许。 2、SAMEORIGIN 表示该页面可以在相同域名页面的frame中展示。 3、ALLOW-FROM uri 表示该页面可以在指定来源的frame中展示。 换一句话说,如果设置为DENY,不光在别人的网站frame嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为SAMEORIGIN,那么页面就可以在同域名页面的frame中嵌套。正常情况下我们通常使用SAMEORIGIN参数。   Apache配置 需要把下面这行添加到 'site' 的配置中

  nginx配置 需要添加到 ‘http’, ‘server’ 或者 ‘location’ 的配置项中,个人来讲喜欢配置在‘server’ 中 正常情况下都是使用SAMEORIGIN参数,允许同域嵌套

  允许单个域名iframe嵌套

  允许多个域名iframe嵌套,注意这里是用逗号分隔

  IIS配置 添加下面的配置到 ‘Web.config’文件中

  HAProxy配置 添加下面这行到 ‘front-end, listen, or backend’配置中

  Tomcat配置 在 ‘conf/web.xml’填加以下配置

  配置后如何确定X-Frame-Options是否已生效呢?我这里以Google浏览器为例,打开网站按F12键,选择Network,找到对应的Headers,如下图所示   from:https://blog.whsir.com/post-3919.html

龙生   10 Dec 2020
View Details

idea中配置Lombok + Logback + Slf4j打印日志(附所有踩坑记录)

本文介绍非spring项目中利用Lombok + Logback + Slf4j记录日志,并附上所有的踩坑记录 本文环境 macos Idea2019.2 配置过程 首先在idea中下载lombok插件 在pom.xml文件中引入Lombok,Logback,Slf4j依赖

  在项目中的resources文件夹中添加logback.xml配置文件

  编写代码测试

输出为 踩过的坑 看上去简简单单几步就完成了,然后并不是,接下来附上踩过的坑以及解决方法 idea中plugins的marketplace直接打不开 ​ 在idea中使用lombok需要在plugins中的marketplace中下载插件,然而我下载时marketplace迟迟无法连接上 ​ 我们需要在设置中的Appearance & Behavior --> System Settings --> Http Proxy中选择Auto-detect proxy settings勾选Automatic proxy configuration URL选项并填写url为http://127.0.0.1:1080,重启idea 代码运行成功,但是不显示日志信息 ​ 也是很邪门的一种情况,代码没错,但是不显示log打印的信息。 ​ 解决方案为,在Build,Execution,Deployment–>compiler–>Annotation Processors中勾选Enable annotation processing,重启idea 多个Slf4j冲突 报错信息如下

  ​ 说明是jar包冲突了,maven仓库中可能同时包含了log4j,logback,然后slf4j在程序运行时,不知道binding哪一个jar包。 解决方案为:在maven仓库中删除其中一个jar包,只保留一个即可。   from:https://blog.csdn.net/jerseywwwwei/article/details/105871320

龙生   09 Dec 2020
View Details

基于 spring boot 下logback 的 logback-spring.xml 配置文件

  from:https://my.oschina.net/haopeng/blog/3065616

龙生   09 Dec 2020
View Details

日志配置logback-spring.xml

参考官方网址: https://logging.apache.org/log4j/2.x 一、log4j日志级别配置说明

二、logback-spring.xml配置文件

注意:登录日志的记录还需进行以下配置,用lombok的话直接使用注解即可 @Slf4j(topic = "user-login") 配置效果如下:   from:https://www.cnblogs.com/54hsh/p/12684241.html

龙生   09 Dec 2020
View Details

Android Studio首次使用问题解决

今天下了个Android Studio,准备换个平台,但是创建新的项目遇到点问题,网上也没有找到完整的解决方法,研究了一下发出来供大家参考 问题:找不到R文件 报错Error:Execution failed for task ':app:processDebugResources'. > com.android.ide.common.process.ProcessException: Failed to execute aapt 问题原因:compileSdkVersion高于buildToolsVersion,可以用高版本的build-tool去构建一个低版本的sdk工程,但是反过来就不行了 解决方法:1.更新Android-SDK Build-Tools 2.修改build.gradle中相应版本号 之后我的问题就解决了 可能对于很多人来说根本不是问题,但是既然我遇上了,也就有可能有朋友还会遇到相同问题,希望能提供参考   from:https://www.cnblogs.com/madzxr/p/6322504.html

龙生   09 Dec 2020
View Details

js调app原生方法

// 定义 const ApiBridge = {     msgQueue: [],     callbackCache: [],     callbackId: 0,     processingMsg: false,     isReady: false,     isNotifyReady: false }; ApiBridge.callNative = function(clz, method, args, callback) {     var msgJson = {};     msgJson.clz = clz;     msgJson.method = method;     if (args != undefined)         msgJson.args = args;     return prompt(JSON.stringify(msgJson)); }; // 调用 setTimeout(() => {         this.$ApiBridge.callNative("KCApiTSLModule", "notifyF", {           action: 'closePage',           param: {}         });       }); 以上代码经测试不能很好的兼容ios,下面的代码可以:

 

龙生   09 Dec 2020
View Details

Springboot整合log4j2日志全解

在项目推进中,如果说第一件事是搭Spring框架的话,那么第二件事情就是在Sring基础上搭建日志框架,我想很多人都知道日志对于一个项目的重要性,尤其是线上Web项目,因为日志可能是我们了解应用如何执行的唯一方式。在18年大环境下,更多的企业使用Springboot和Springcloud来搭建他们的企业微服务项目,此篇文章是博主在实践中用Springboot整合log4j2日志的总结。 目录 Springboot整合log4j2日志全解 常用日志框架 日志门面slf4j 为什么选用log4j2 整合步骤 引入Jar包 配置文件 配置文件模版 配置参数简介 Log4j2配置详解 简单使用 使用lombok工具简化创建Logger类 参考文章 1|0Springboot整合log4j2日志全解 1|1常用日志框架 java.util.logging:是JDK在1.4版本中引入的Java原生日志框架 Log4j:Apache的一个开源项目,可以控制日志信息输送的目的地是控制台、文件、GUI组件等,可以控制每一条日志的输出格式,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。虽然已经停止维护了,但目前绝大部分企业都是用的log4j。 LogBack:是Log4j的一个改良版本 Log4j2:Log4j2已经不仅仅是Log4j的一个升级版本了,它从头到尾都被重写了 1|2日志门面slf4j 上述介绍的是一些日志框架的实现,这里我们需要用日志门面来解决系统与日志实现框架的耦合性。SLF4J,即简单日志门面(Simple Logging Facade for Java),它不是一个真正的日志实现,而是一个抽象层( abstraction layer),它允许你在后台使用任意一个日志实现。 前面介绍的几种日志框架一样,每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,这就大大的增加应用程序代码对于日志框架的耦合性。 使用了slf4j后,对于应用程序来说,无论底层的日志框架如何变,应用程序不需要修改任意一行代码,就可以直接上线了。 1|3为什么选用log4j2 相比与其他的日志系统,log4j2丢数据这种情况少;disruptor技术,在多线程环境下,性能高于logback等10倍以上;利用jdk1.5并发的特性,减少了死锁的发生; 在这列举一下一些网上其他博文中对它们的性能评测: 可以看到在同步日志模式下, Logback的性能是最糟糕的. log4j2的性能无论在同步日志模式还是异步日志模式下都是最佳的. log4j2优越的性能其原因在于log4j2使用了LMAX,一个无锁的线程间通信库代替了,logback和log4j之前的队列. 并发性能大大提升。 1|4整合步骤 引入Jar包 springboot默认是用logback的日志框架的,所以需要排除logback,不然会出现jar依赖冲突的报错。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions><!-- 去掉springboot默认配置 --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <!-- 引入log4j2依赖 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> 配置文件 如果自定义了文件名,需要在application.yml中配置 logging: config: xxxx.xml level: cn.jay.repository: trace 默认名log4j2-spring.xml,就省下了在application.yml中配置 配置文件模版 log4j是通过一个.properties的文件作为主配置文件的,而现在的log4j2则已经弃用了这种方式,采用的是.xml,.json或者.jsn这种方式来做,可能这也是技术发展的一个必然性,因为properties文件的可阅读性真的是有点差。这里给出博主自配的一个模版,供大家参考。 <?xml version="1.0" encoding="UTF-8"?> <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出--> <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数--> <configuration monitorInterval="5"> <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN […]

龙生   08 Dec 2020
View Details
1 101 102 103 410