-
Tomcat无法设置cookie、session失效
其实这个问题很久以前就遇到过了,只不过以前没有记录,又遇到了这里记录一下。问题就是`session`里面设置了属性,但是取值时都是`null`。其实这个根本原因就是无法设置`cookie`。为什么会设置不了呢,主要就是配置了`cookie`的`secure`属性,同时没有使用`https`协议,所以导致`cookie`设置失败。设置方法:```//Cookie设置cookie.setSecure(true);//web.xml配置true````SpringBoot`集成`RedisSession`也会有这个问题,主要就是如果你的项目配置了`RedisSession`,但是访问另外一个没有集成`RedisSession`项目的时候,系统会认为你的`session`失效了,就会导致重写你的`sessioncookie`导致`session`失效。可以通过设置`sessioncookie`的`path`、`name`、`domain`解决这个问题。
Tomcat cookie session secure -
jdeps
这个命令可以查询依赖模块:```javajdeps--list-deps*.jarjdeps--list-deps--module-pathlib--ignore-missing-deps.\snail-1.17.0.jarunzipacgist-1.0.0.jar-ddepsjdeps\--ignore-missing-deps\--print-module-deps\-q\--recursive\--multi-release9\--class-path="./deps/BOOT-INF/lib/*"\--module-path="./deps/BOOT-INF/lib/*"\./acgist-1.0.0.jarjlink\--verbose\--add-modulesmodules\--strip-debug\--no-man-pages\--no-header-files\--compress=2\--output./jre```
jdeps -
消失的Java日志堆栈信息
最近生产环境出了很多空指针异常,但是今天发现都没有堆栈信息了,只有个异常名称。正常堆栈信息:```javaNov16,2020@21:37:07.184[acgist]2020-11-1621:37:07,183ERROR[com.acgist.controller.ExceptionHandlerControllers]-系统异常java.lang.NullPointerExceptionatcom.acgist.controller..GatewayControllers.callback(GatewayControllers.java:1100)...```现在没有堆栈信息:```javaNov17,2020@09:40:57.062[acgist]2020-11-1709:40:57,059ERROR[com.acgist.controller.ExceptionHandlerControllers]-系统异常java.lang.NullPointerException```原来JDK里面如果一个异常频繁抛出,达到一定数量后就会隐藏堆栈信息:`-XX:-OmitStackTraceInFastThro...
Java 日志 堆栈信息 -
Audition CS6导入M4A
最近想学学调音,现在开始学习Audition,发现不能导入m4a,老是提示:`错误:Wewereunabletoopenthisfileusinganyofthecurrentlyavailableimporters.IfyouwouldliketotryusingtheDynamicLinkMediaServer,pleasegotoPreferences>Media&DiskCacheandenabletheoption"EnableDLMSFormatSupport"andtrytoopenthefileagain.`我们需要修改:编辑→首选项→媒体与暂存盘→将`EnableDLMSFormatSupport`勾选上就可以了
Audition -
Java去掉科学记数法
直接上代码和结果```java@Testpublicvoidscientific(){floata=0.000012F;System.out.println(a);System.out.println((double)a);System.out.println(String.valueOf(a));System.out.println(Float.toString(a));System.out.println(newBigDecimal(a));System.out.println(newBigDecimal(String.valueOf(a)));System.out.println(newBigDecimal(Float.toString(a)));doubleb=0.000012D;System.out.println(b);System.out.println((float)b);System.out.println(String.valueOf(b));System.out.println(Double.toString(b));System.out.println(newBigDecimal(b)...
Java 科学记数法 -
Java获取Win10主题颜色
首先我在网上找了很多的方法,主要还是读取注册表`计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\DWM`中的`AccentColor`这个值。如果是手动选择的颜色这个值也是没有问题的,但是如果主题颜色通过背景自动选择的主题色这个值就不准确了。后来我找了半天,最后终于找到了一个非常完美的注册表值`计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\History\Colors`中的`ColorHistory0`这个值,完美解决。Java代码:```java@TestpublicvoidgetTheme(){//longcolor=Advapi32Util.registryGetIntValue(WinReg.HKEY_CURRENT_USER,"SOFTWARE\\Microsoft\\Windows\\DWM","AccentColor");longcolor=Advapi32Util.registryGetIntValue(WinReg.HKEY_CURRENT_USE...
Java Win10 主题颜色 -
泛型自动推断
异常:```java[ERROR]Failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.1:compile(default-compile)onprojectacgist:Compilationfailure[ERROR]Client.java:[207,85]不兼容的类型[ERROR]需要:com.api.response.ResponseImpl[ERROR]找到:com.api.Response[ERROR]->[Help1]```代码:```javafinalResponseImplresponse=client.execute(request);```按道理来说是不应该出现异常的,因为开发的时候没有异常,但是编译的使用就报错了。最后只能进行一下强转:```javafinalResponseImplresponse=(ResponseImpl)client.execute(request);```
泛型 -
WebRTC续集
以前的WebRTC部分API已经过时,这里记录一下新的方法和注意事项。现在发送`offer`和`answer`消息:```jspeer.createOffer().then();peer.createAnswer().then();```获取用户媒体:```jsnavigator.mediaDevices.getUserMedia({"audio":true,"video":true}).then(onUserMediaSuccess).catch(onUserMediaError);```如果你的电脑没有摄像头可以使用一个软件`WeCam`模拟一个摄像头,不过上面获取媒体只能获取`video`,要把音频去掉。页面代码:[WebRTC视频聊天](https://www.acgist.com/demo/video/)WebSocket代码:[Java使用WebSocket和WebRTC视频通话](https://www.acgist.com/article/72.html)
WebSocket WebRTC 视频通话 Java -
Win10快捷键
常用快捷键就不介绍了,介绍一些比较新的快捷键。|功能|快捷键||----|----||截图|Win+Shift+S||表情|Win+.||查看桌面|Win+,||搜索|Win+S||查看通知|Win+A||放大镜放大|Win++||放大镜缩小|Win+-||退出放大镜|Win+Esc||历史剪贴板|Win+V||设置|Win+I||新建桌面|Win+Ctrl+D||关闭桌面|Win+Ctrl+F4||桌面切换|Win+Tab||桌面快速切换左边|Win+Ctrl+←||桌面快速切换右边|Win+Ctrl+→||窗口最大化|Win+↑||窗口缩小/最小化|Win+↓|资源管理器小窗口可以直接使用鼠标中键关闭
Win10 -
VirtualBox 安装 MacOS
神秘代码:`62D0B1558260A69F5FD90632F2E2CAA65172719A`安装文件时CDR格式的,直接用这个文件启动就可以了,不用转为ISO文件。创建虚拟机:**MacOS**关闭虚拟机,进入`VirtualBox`根目录执行一下命令:```VBoxManagemodifyvmMacOS--cpuidset00000001000106e5001008000098e3fdbfebfbffVBoxManagesetextradataMacOS"VBoxInternal/Devices/efi/0/Config/DmiSystemProduct""iMac11,3"VBoxManagesetextradataMacOS"VBoxInternal/Devices/efi/0/Config/DmiSystemVersion""1.0"VBoxManagesetextradataMacOS"VBoxInternal/Devices/efi/0/Config/DmiBoardProduct""Iloveapple"VBoxManagesetextradataMacOS"VBoxInternal/Devi...
VirtualBox MacOS -
记录两个小问题
记录最近遇到的两个小问题。**Dubbo注册非常慢或者服务找不到**查看是否配置多个网卡(包括虚拟网卡)**Maven更新导致Eclipse卡死**查询Maven配置是否相互依赖
Dubbo Maven -
BitSet转为图片
将BitSet数据转为图片,每位占一个格子,效果如图:下面是图片实现版本:```javapackagecom.acgist.snail.gui.statistics;importjava.awt.Color;importjava.awt.Graphics2D;importjava.awt.image.BufferedImage;importjava.io.Closeable;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.BitSet;importjava.util.Objects;importjavax.imageio.ImageIO;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importcom.acgist.snail.utils.Nu...
BitSet 位图 -
Java获取HTTP下载文件文件名称
**注意中间有段去符号的代码,这段代码只适合Java11默认HttpClient使用**。```java/***获取文件名称*下载文件名称:如果不存在返回默认的文件名称*Content-Disposition:attachment;filename=snail.jar?version=1.0.0*Content-Disposition:attachment;filename="snail.jar"**@paramdefaultName默认文件名称*/publicStringfileName(finalStringdefaultName){StringfileName=header(CONTENT_DISPOSITION);if(StringUtils.isEmpty(fileName)){returndefaultName;}finalStringfileNameLower=fileName.toLowerCase();if(fileNameLower.contains(FILENAME)){//包含文件名称fileName=UrlUtils.decode(fileName);//URL解码intindex=...
Java -
Java11 HttpClient下载中文文件名称乱码
不知道这个是不是BUG,记录一下。下载文件如果文件名称含有中文时,设置文件名称一般有以下两种方式:```java//使用URL编码解决//responseHeaders.add("Content-Disposition","attachment;filename="+UrlUtils.encode("蜗牛.txt"));//设置ISO-8859-1编码解决responseHeaders.add("Content-Disposition","attachment;filename="+newString("蜗牛.txt".getBytes(),SystemConfig.CHARSET_ISO_8859_1));```URL编码这个在浏览器和`HttpClient`都是没有问题的。但是使用`ISO-8859-1`编码时浏览器可以,但是`HttpClient`却提示乱码。最后发现不知道为什么`HttpClient`这里可能存在`byte`转为`char`没有去符号`&0xFF`,所以这里就会出现这个问题。解决办法:```javafinalchar[]chars=fileName.toCharArray();...
Java11 HttpClient -
JavaFX隐藏滚动条
JavaFX通过CSS影藏滚动条代码```css/*垂直滚动条*//*.main.table-view.virtual-flow.scroll-bar:vertical{-fx-pref-width:0;}*//*水平滚动条*/.main.table-view.virtual-flow.scroll-bar:horizontal{/*关闭滚动条*/-fx-pref-height:0;}.main.table-view.virtual-flow.scroll-bar:horizontal.increment-button.increment-arrow{/*影藏箭头*/-fx-background-color:transparent;}.main.table-view.virtual-flow.scroll-bar:horizontal.decrement-button.decrement-arrow{/*影藏箭头*/-fx-background-color:transparent;}```**注意:垂直滚动条设置`-fx-pref-width`、水平滚动条设置`-fx-pref-height`**
JavaFX 滚动条 -
Travis CI编译卡住
今天使用了一下TravisCI,但是发现编译时卡住不动然后失败了。开始我以为以为gpg签名导致的,添加`-Dgpg.skip=true`发现并没有解决。后来发现打包时需要拷贝两个资源文件配置的路径是`/`,猜想可能是这个问题导致的,改为`./`编译成功。`/`改为`./`pom.xml:```xmlorg.apache.maven.pluginsmaven-resources-plugin${maven.resources.version}src/main/resourcesfalse**profiles/**./falseMETA-INF/LICENSEREADME.mdauto-copy-resources-profilescompilecopy-resourcestrue${project.build.outputDirectory}src/main/resources/profiles/${package.environment}false```
TravisCI Java Github -
Java CPU占用过高
今天发现一个奇怪的问题,发现运行一个Java程序时CPU占用超过了50%。在公司测试并没有这个问题,而且家里电脑配置比公司更好,理论上不应该出现这个问题。后来发现这个问题的原因是没有配置JVM参数:`-Xms128m-Xmx256m`暂时还不清楚原理,以后在研究。问题找到了,并不是上面参数的问题,是由于Java11默认的HttpClient使用TLSv1.3的问题,修复代码:```javapublicstaticfinalHttpClientnewClient(inttimeout){returnHttpClient.newBuilder().executor(EXECUTOR)//线程池.version(Version.HTTP_1_1).followRedirects(Redirect.NORMAL)//重定向:正常.sslParameters(newSSLParameters())//SSL参数.connectTimeout(Duration.ofSeconds(timeout))//超时.build();}privatestaticfinalSSLParametersnewSSLParameters(...
Java CPU -
Java使用jlink导出模块访问HTTPS连接握手异常
错误日志如下:```Causedby:java.io.IOException:Receivedfatalalert:handshake_failureatjava.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:565)atjava.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:119)atcom.acgist.snail.net.http.HTTPClient.request(HTTPClient.java:206)...71commonframesomittedCausedby:javax.net.ssl.SSLHandshakeException:Receivedfatalalert:handshake_failureatjava.base/sun.security.ssl.Alert.createSSLException(Alert.java:128)atjava.base/sun.security.ssl...
Java jlink 模块化 handshake_failure -
使用flexmark将Markdown转为HTML
最近将网站后台文章编辑器改为Markdown。直接写Markdown感觉比使用富文本编辑器更好,主要是富文本编辑会多出非常多的标签,编辑不受控制。使用Markdown转换HTML就比较令人满意了。但是这里又有一个问题了,就是外链没有加上`rel="nofollow"`,我们需要自己实现这个功能,代码如下:```javapackagecom.acgist.utils;importcom.vladsch.flexmark.ast.AutoLink;importcom.vladsch.flexmark.ast.Link;importcom.vladsch.flexmark.html.AttributeProvider;importcom.vladsch.flexmark.html.AttributeProviderFactory;importcom.vladsch.flexmark.html.HtmlRenderer;importcom.vladsch.flexmark.html.IndependentAttributeProviderFactory;importcom.vladsch.flexmark.html....
flexmark Markdown -
Tomcat启动缓慢
今天Tomcat启动很慢,以前就十几秒,现在有时候要一分钟。今天去看了下日志:```14-Oct-201911:48:05.686警告[main]org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandomCreationofSecureRandominstanceforsessionIDgenerationusing[SHA1PRNG]took[19,409]milliseconds.14-Oct-201911:48:08.221信息[main]org.apache.coyote.AbstractProtocol.startStartingProtocolHandler["http-nio-8080"]14-Oct-201911:48:08.251信息[main]org.apache.catalina.startup.Catalina.startServerstartupin39973ms```可以看到一个警告,后来看到一些文章里面说修改Java的配置:```#原配置:securerandom.source=file:/dev/uran...
Tomcat haveged