自动拆箱调用方法原理
没有知识,我们就谈不到欣赏。——别林斯基 今天分享一个冷门基础小知识 我们一般使用boolean的类型,使用结构控制语句条件表达式的时候都是这样: 12if (bar) {} 此处如果是一个基本类型,也就是boolean的时候,完全ok 但如果是一个包装类型的java.lang.Boolean对象,则在bar为null的时候,抛出 1java.lang.NullPointerException 这是因为底层调用了java.lang.Boolean#valueOf(boolean)拆箱 此处 1234@IntrinsicCandidatepublic static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE);} 由于添加了@IntrinsicCandidate注解,所以会调用其进行自动拆箱 因此如果是Boolean包装类型,则调用 12if (bar) {} 等同于 12if (Boolean.valueOf(bar)) {...
安卓和webview交互
劳动是人类财富的创造者。——韦伯斯特 安卓代码: 12345678910111213141516171819202122232425262728293031323334353637383940414243package com.example.webviewdemo;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.JavascriptInterface;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private WebView myWebView; @Override protected void onCreate(Bundle savedInstanceState...
openssl生成密钥
君子不蔽人之美,不言人之恶。——韩非 分享openssl生成指定长度的密钥: 1openssl rand -hex 16 然后还有RSA的 1openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 甚至ECDSA的 1openssl ecparam -name prime256v1 -genkey -noout -out ec_private_key.pem 还可以生成密钥对 12openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048openssl rsa -pubout -in private_key.pem -out public_key.pem 非常方便易用
pinterest
工作使你免于三大害:无聊、恶行和贫穷。——伏尔泰 分享一个画师、设计师用来查找绘画灵感的网站: https://www.pinterest.com/
docker运行nacos
当华美的叶片落尽,生命的脉络才历历可见。——聂鲁达 命令: 1docker pull nacos/nacos-server 运行: 1docker run -d --name nacos -p 8848:8848 nacos/nacos-server 如果需要连接自定义mysql可以 1docker run -d --name nacos -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=127.0.0.1 -e MYSQL_SERVICE_DB_NAME=nacos -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_USER=nacos -e MYSQL_SERVICE_PASSWORD=nacos -p 8848:8848 nacos/nacos-server 也可以挂载配置文件: 1docker run -d --name nacos -p 8848:8848 -v /path/to/your/application.properties:/home/naco...
gitlab迁移后报错OpenL::cipher::CipherError
大言必自招尤,小心终是寡过。——弘一大师 每次一点gitlab里的保存就500 弄了半天,总算弄好了,方式是采用重置命令 1234~] gitlab-rails console> ApplicationSetting.first.delete> ApplicationSetting.first=> nill
cannot open shared object file: No such file or directory
偿付能力,完全是个调节问题,不是收入问题。——洛根·史密斯 今天集成声网native rtc-linux-server-sdk的时候,遇到报错: 1234567Caused by: java.lang.UnsatisfiedLinkError: /usr/java/packages/lib/libbinding.so: libagora_rtc_sdk.so: cannot open shared object file: No such file or directory at java.base/jdk.internal.loader.NativeLibraries.load(Native Method) ~[na:na] at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388) ~[na:na] at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLib...
spring-state-machine拦截器
不乘人于利,不迫人于险。——刘向 继续分享spring-state-machine状态机的拦截器使用,这里需要留意一个细节: 如果一个事件没有被状态机接受(例如当前状态不是事件的source导致无法转换) 则不会进入拦截器进行处理(但监听器仍然工作,监听器的博客) 这里配置拦截器也很简单: 1234567891011machine.addStateMachineInterceptor(new StateMachineInterceptorAdapter<TestStates,TestEvents>() { @Override public void postStateChange(State<TestStates, TestEvents> state, Message<TestEvents> message, Transition<TestStates, TestEvents> transition, StateMachine<TestStates, TestEvents> stateMac...
spring-state-machine监听器
在做艺术家之前,先要做一个人。——罗丹 分享一个spring-state-machine监听器的用法: 12345678910111213141516171819202122232425262728293031323334353637383940stateMachine.addStateListener(new StateMachineListenerAdapter<States, Events>() { @Override public void stateEntered(State<States, Events> state) { StateMachineMessage message = new StateMachineMessage(); message.setMessage("Enter state " + state.getId().toString()); simpMessagingTemplate.convertAndSend("/topic/sm.messag...
feign使用url参数传参@SpringQueryMap使用
与人沟通,最重要的事情是听取没有说出来的话。——德拉克 今天使用open-feign发起请求时发现个问题,我特别喜欢的url参数传参不好使了: 12345@FeignClient("another-service")public interface MyFeignClient { @GetMapping("/foo/bar") Foo<Bar> get(Foo bar);} 对应我们的controller 12345@GetMapping("foo/bar")public Foo<Bar> get(Foo bar) { // ... return foo;} 然后发起了请求发现根本没收到参数。。。 但如果我们添加了注解@RequestParam 12345@FeignClient("another-service")public interface MyFeignClient { @Get...
