-
Java hashCode陷阱
经常会重写`hashCode`和`equals`方法来实现对象判断是否相等,之前使用`Objects.hash`这个方法,后来发现这个是有点问题的:```java//String一致System.out.println(Objects.hash(newString[]{"1","2","3"}));System.out.println(Objects.hash(newString[]{"1","2","3"}));//Integer一致System.out.println(Objects.hash(newInteger[]{1,2,3}));System.out.println(Objects.hash(newInteger[]{1,2,3}));//int不一致System.out.println(Objects.hash(newint[]{1,2,3}));System.out.println(Objects.hash(newint[]{1,2,3}));//int一致System.out.println(Arrays.hashCode(newint[]{1,2,3}));System.out.print...
Java hasoCode -
lucene搜索不到结果
以前`IndexWriter`和`IndexReader`没有使用常量的时候是没有问题的,改成常量后发现不能及时搜索了。这个问题需要我们每次添加索引后重新创建`IndexReader`对象就好了。
lucene -
Java线程不能唤醒错误
今天发现了一个问题,线程不能被唤醒,发现是我的代码写的有问题:```java//单例privatestaticfinalNatContextINSTANCE=newNatContext();//初始化privateNatContext(){this.register();}```在`register`里面加锁,然后外面获取单例解锁,这样就会出现无法唤醒的情况。
Java notify wait -
JSON Map类型指定类型
####fastjson```javaJSON.parseObject(responseJSON,newTypeReference>(){})````####jackson```java//第一种finalMapdata=mapper.readValue(json,newTypeReference>(){});//第二种finalJavaTypetype=mapper.getTypeFactory().constructParametricType(Map.class,String.class,Object.class);returnmapper.readValue(json,type);```推荐使用`TypeReference`,可以使用返回类型进行泛型推断:```javapublicstaticfinalMaptoMap(Stringjson){if(json==null){returnnull;}try{returnMAPPER.readValue(json,newTypeReference>(){});}catch(IOExceptione){LOGGER.error("JSON字...
JSON -
Chrome多关键字搜索插件
最近开发了一个Chrome浏览器多关键字查询的插件,插件地址:[https://gitee.com/acgist/chrome](https://gitee.com/acgist/chrome)上几个效果图:配置规则:查询结果数量:查询结果标记:
Chrome 插件 -
Eclipse吐槽
家里面装的Eclipse是2019年的版本,然后我升级到2020-09版本。之前在公司装过一次这个版本,忘记了是什么BUG了,所以公司现在还是用的2020-06。这次忘了这茬了,结果装完又出问题了,启动后发现没有JS编辑器了。2019版本的JS编辑器格式化不是很好用,公司的2020-06的很好用,所以才升级的,升级发现居然直接没了。然后我又装了2020-06的,结果发现还是没有,然后我就把工作空间里面的配置`.metadata`删了,全部重新配置了一遍,发现好了。龟龟,花了一个小时。然后就是Eclipse商城里面的freemarker插件居然装不了😑JBoss更新慢就算了,最后还失败了,难受🙉还有我的maven的资源目录改过,发现eclipse并不会自动使用,而是需要手动设置后才有效。
Eclipse -
Spring定时任务和延迟初始化
有一个遗留的Spring项目使用的XML和注解一起使用,然后发现定时任务注解没有执行:```java@Scheduled(cron="0/5****?")publicvoiddiary(){...}```后来发现原来是XML里面配置了延迟初始化`default-lazy-init="true"`,解决办法:1.修改延迟初始化为`false`2.在定时任务类加上注解`@Lazy(value=false)`
Spring task lazy -
Java lambda空指针踩坑
使用`findFirst`方法会出现以下错误:```javajava.lang.NullPointerExceptionatjava.base/java.util.Objects.requireNonNull(Objects.java:221)atjava.base/java.util.Optional.(Optional.java:107)atjava.base/java.util.Optional.of(Optional.java:120)atjava.base/java.util.stream.FindOps$FindSink$OfRef.get(FindOps.java:194)atjava.base/java.util.stream.FindOps$FindSink$OfRef.get(FindOps.java:191)atjava.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)atjava.base/java.util.stream.AbstractPipeline.evaluate(Abstrac...
Java lambda NullPointerException -
HTTP 405错误
这个错误就是方法不允许,最常见的就是只能`POST`请求使用`GET`请求。```java.io.IOException:ServerreturnedHTTPresponsecode:405forURL:https://www.acgist.com/xxxxatjava.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1913)atjava.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1509)atjava.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:245)```还有一种情况也会出现这个问题,就是`GET`请求,但是调用了`connection.getOutputStream()`。
HTTP 405 -
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