Java的ES client 有两个API; 分别是termQuery() 和 termsQuery()
他们两个的入参完全一样,接口名字也只差了一个S; 实际上功能差距很大,前者相当于SQL 中的 = ,后者相当于SQL中的 in;
今年年初踩过这个坑没有记录,结果前两天又掉进去了;写述职时候才想起来,这里还是记录一下……
遇到了这样一个场景:
我需要使用消息队列将一个object发送出去;
但是公司的kafka只支持接受String(具体原因很复杂,但是这个是绕不过去的)。
现在就有了这么几个方案
- 直接使用json序列化
- 使用序列化产品进行序列化(hessian,Kryo)等
验证之后发现直接json的性能实在是太差了,耗时长且占CPU。
所以优化的方向变成了使用序列化协议进行序列化;
但是序列化出来的一定都是byte流而不是字符串,发送出去时需要再编码成字符串;
这里最初使用的是new String(bytes, StandardCharsets.UTF_8)
这种方法。
问题有:
- 序列化结果中会有UTF_8中不包含的比特组合;java会将这些bit丢弃,导致得到的消息无法反序列化
- 由于UTF_8是变长编码,所以慢的令人发指
之后想到了使用base64;可以胜任但是耗时还是有一些长;
最后发现了ISO_8859_1 这个编码集;定长编码所以速度快& 全覆盖所以不会丢bit,使用它将byte转字符串的速度是base64的五十倍,uft-8的500倍!
在读《微精通》。觉得自己需要一个愿望清单:
-
Takagi : 可以学和女生接触
-
-
Tars-knock 博主 : 这个难度太高
-
最近不再只读科幻小说了,因为感觉无书能出《银河系搭车客指南》其右~
读了几本综述类的 浅显的社会科学的书;为了防止知识划过我的大脑不留痕迹,决定开启一个读书笔记计划。有空的时候更新几篇读书笔记,尝试把读过书的逻辑梳理清楚讲出来,用自己的话叙述。这样才能让书内化成自己的东西~
FLAG++
对照着看了下新旧Java版本里CopyOnWriteList的源码,发现在Java11中许多曾经使用reentrantlock的地方已经换成了synchronized;
//old style function
final ReentrantLock lock = this.lock;
lock.lock();
try{
//do somthing
}finally{
lock.unlock();
}
//new style function
synchronized (lock){
//do something
}
代码简洁了不少,侧面也反映出Java团队已经将synchronized的性能打磨的相当不错,足以应付一些复杂的场景了。
要去看朴树和房东的猫了!!! 开心的想哭
-
Tars-knock 博主 : 曹了 两个人上场时间重叠的…… 太难抉择了
https://www.snapeda.com/
外国的网站,注册之后免费下载各种EDA软件中各种器件的封装库;缺点就是器件都不够本土化;
国内之前嘉立创应该也做这个,但是开始搞立创EDA之后就关闭了下载封装库的选项,忘记初心了啊~
点击这里下载
吐槽一下,怎么这种厂家给的资料找起来就这么费劲? 一个个的还都要收费下载…… 就这个还是我用脚本图片转出来的……
官网也没有这个手册,就这种做产品的态度,发展个屁……
顺便推荐一个对抗各大收费文库平台的油猴脚本Wenku Doc Downloader
开个贴记录毕设时间线
我向来觉得我的喉咙要比别人敏感;无论是刷牙还是做核酸都非常容易干呕;
但是今天去看牙医时,在我呕到眼泪流到后脑勺时,医生终于蚌埠住了,问“你吃饭时候怎么办呀?吃饭塞得肯定比现在满”
那一瞬间感觉被人猛锤了一拳…… 对啊 我真的是更敏感么? 还是心理防线太高了呢
所以后来我就尽量放松,想象自己在吃饭 果然直到结束也没有再干呕……
晚上去学游泳也同样,之前手的唯一作用就是扶着边缘或者是浮板,放下戒备之后 就想象是在洗脸 果然发现其实手在水中反而会更灵活,学的也快多了~
所以说嘛 别太矫情~
-
Takagi : 做个核酸好像孕吐
-
Tars-knock 博主 : 没用 还是学不会换气 焯
回归Java主业吧,从小项目开始读一读优秀源码,暂时有几个目标
坚持博客,十年之约!
-
Takagi : 你又十年了
冠上了 😷 高烧一天低烧两天没吃退烧药,今天终于扛过去了; 我这个 还算是康复比较快的hhhh,只希望不会有后遗症,不会再感染啥的吧😮💨
-
Tars-knock 博主 : 感觉确实没啥后遗症 大号流感名不虚传
- 不能使用chsh命令切换shell
解决方法:yum install util-linux-user
- 安装zsh插件
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
- 腾讯云安装docker&加速
https://cloud.tencent.com/document/product/1207/45596 - pip安装爆 Python.h: No such file or directory
yum install python36-devel
- pip换源
创建 ~/.pip/pip.conf[global] index-url = https://mirrors.cloud.tencent.com/pypi/simple trusted-host = mirrors.cloud.tencent.com
-
编译安装高版本pyhton
首先要安装开发工具包,否则编译出来的python会缺少许多模块sudo dnf groupinstall 'development tools' sudo dnf install bzip2-devel expat-devel gdbm-devel \ ncurses-devel openssl-devel readline-devel \ sqlite-devel tk-devel xz-devel zlib-devel wget
然后下载python源码,国内可以用华为镜像站
tar -xzf解压后进入Python-3.7.6目录运行:./configure --enable-optimizations sudo make altinstall
即可
public static int getGCD(int a, int b){
return (a % b == 0)?b:getGCD(b, a%b);
}
读一本从来没想读的书
见一群可能一生都不再有交集的人(如果他们不往死喝酒的话~
适用于使用powershell直接ssh的情况
- 使用windows自带openssh生成密钥(生成在~.ssh文件夹下)
- 在~.ssh文件下新建config文件,其中填写设置
# 别名(Host):Host 和 HostName 的值可以相同 # 如 ssh aliyun,在这里等于 ssh -i C:\Users\Think\.ssh\id_rsa_aliyun root@144.90.100.144 # 用别名登录会使用别名下的配置,不用别名登录(如IP)不会使用别名下的配置 Host tars-knock User tars HostName tars-knock.cn # 私钥文件位置 IdentityFile "私钥绝对路径"
- 将公钥拷贝至服务器~/.ssh/authorized_keys 文件
- .ssh 目录权限700 authorized_keys文件权限600
- 完成,直接
ssh tars-knock
即可
Grafana 支持多种数据源,支持远程与本地机器,支持特殊应用监控(mysql k8s之类)
有空折腾一个
把树莓派的80端口反向代理到服务器
先不说能不能远程看电影,起码要能远程控制
系列注解: 优雅的校验接口入参是否合法@Valid
:全局异常处理,防止异常细节传给前端@RestContollerAdvice + @ExceprionHandler
java中向上取整可以简写成:(a+b-1)/b,
这等价于(int)Math.ceil(1.0*a/b);
这个记录随笔的功能还是不错的哈