721 日 , 2024 23:34:16
ES的逆天API

Java的ES client 有两个API; 分别是termQuery() 和 termsQuery()
他们两个的入参完全一样,接口名字也只差了一个S; 实际上功能差距很大,前者相当于SQL 中的 = ,后者相当于SQL中的 in;
今年年初踩过这个坑没有记录,结果前两天又掉进去了;写述职时候才想起来,这里还是记录一下……

311 日 , 2024 14:32:25

linux 中可以使用 jenv 工具来管理多个java版本

1214 日 , 2023 23:33:36
byte流编码成字符串二三事

遇到了这样一个场景:
我需要使用消息队列将一个object发送出去;
但是公司的kafka只支持接受String(具体原因很复杂,但是这个是绕不过去的)。
现在就有了这么几个方案

  1. 直接使用json序列化
  2. 使用序列化产品进行序列化(hessian,Kryo)等

验证之后发现直接json的性能实在是太差了,耗时长且占CPU。

所以优化的方向变成了使用序列化协议进行序列化;
但是序列化出来的一定都是byte流而不是字符串,发送出去时需要再编码成字符串;
这里最初使用的是new String(bytes, StandardCharsets.UTF_8)这种方法。
问题有:

  1. 序列化结果中会有UTF_8中不包含的比特组合;java会将这些bit丢弃,导致得到的消息无法反序列化
  2. 由于UTF_8是变长编码,所以慢的令人发指

之后想到了使用base64;可以胜任但是耗时还是有一些长;

最后发现了ISO_8859_1 这个编码集;定长编码所以速度快& 全覆盖所以不会丢bit,使用它将byte转字符串的速度是base64的五十倍,uft-8的500倍!
file

1114 日 , 2023 16:14:41
愿望清单

在读《微精通》。觉得自己需要一个愿望清单:





  1. Takagi : 可以学和女生接触
1029 日 , 2023 22:44:34
读书笔记计划

最近不再只读科幻小说了,因为感觉无书能出《银河系搭车客指南》其右~
读了几本综述类的 浅显的社会科学的书;为了防止知识划过我的大脑不留痕迹,决定开启一个读书笔记计划。有空的时候更新几篇读书笔记,尝试把读过书的逻辑梳理清楚讲出来,用自己的话叙述。这样才能让书内化成自己的东西~
FLAG++

812 日 , 2023 23:24:26
709 日 , 2023 0:00:24

对照着看了下新旧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的性能打磨的相当不错,足以应付一些复杂的场景了。

417 日 , 2023 18:14:30

要去看朴树和房东的猫了!!! 开心的想哭
img

  1. Tars-knock 博主 : 曹了 两个人上场时间重叠的…… 太难抉择了
406 日 , 2023 13:58:17
免费下载AD封装库

https://www.snapeda.com/
外国的网站,注册之后免费下载各种EDA软件中各种器件的封装库;缺点就是器件都不够本土化;
国内之前嘉立创应该也做这个,但是开始搞立创EDA之后就关闭了下载封装库的选项,忘记初心了啊~

310 日 , 2023 15:32:12
307 日 , 2023 17:39:34

开个贴记录毕设时间线

2023-3-4
完成开题报告
2023-3-7
学习进行PCB绘制
使用AD,绘制了一个STM32F103C8T6的最小系统,耗时4天,教程:BV1Rf4y1q7cL
2023-3-9
学习自定义器件符号
改为使用KiCAD绘制PCB
2023-3-17
完成系统原理图绘制
改回使用AD
2023-4-27
完成hello world
说明PCB设计没有大问题

228 日 , 2023 21:36:15
放下戒备~

我向来觉得我的喉咙要比别人敏感;无论是刷牙还是做核酸都非常容易干呕;
但是今天去看牙医时,在我呕到眼泪流到后脑勺时,医生终于蚌埠住了,问“你吃饭时候怎么办呀?吃饭塞得肯定比现在满”
那一瞬间感觉被人猛锤了一拳…… 对啊 我真的是更敏感么? 还是心理防线太高了呢
所以后来我就尽量放松,想象自己在吃饭 果然直到结束也没有再干呕……
晚上去学游泳也同样,之前手的唯一作用就是扶着边缘或者是浮板,放下戒备之后 就想象是在洗脸 果然发现其实手在水中反而会更灵活,学的也快多了~
所以说嘛 别太矫情~

  1. Takagi : 做个核酸好像孕吐
  2. Tars-knock 博主 : 没用 还是学不会换气 焯
215 日 , 2023 10:10:14
立两个flag

回归Java主业吧,从小项目开始读一读优秀源码,暂时有几个目标



201 日 , 2023 17:30:56

坚持,就会改变!
Persistence Brings Changes!

131 日 , 2023 16:10:40
1219 日 , 2022 14:51:46

冠上了 😷 高烧一天低烧两天没吃退烧药,今天终于扛过去了; 我这个 还算是康复比较快的hhhh,只希望不会有后遗症,不会再感染啥的吧😮‍💨

  1. Tars-knock 博主 : 感觉确实没啥后遗症 大号流感名不虚传
1026 日 , 2022 14:54:42
centos8 踩坑记
  • 不能使用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

    即可

818 日 , 2022 16:19:16
725 日 , 2022 17:56:22
723 日 , 2022 23:18:50
windows配置ssh密钥,免密连接服务器

适用于使用powershell直接ssh的情况

  1. 使用windows自带openssh生成密钥(生成在~.ssh文件夹下)
  2. 在~.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 "私钥绝对路径"
  3. 将公钥拷贝至服务器~/.ssh/authorized_keys 文件
  4. .ssh 目录权限700 authorized_keys文件权限600
  5. 完成,直接ssh tars-knock 即可
712 日 , 2022 14:38:30
服务器监控面板

Grafana 支持多种数据源,支持远程与本地机器,支持特殊应用监控(mysql k8s之类)
有空折腾一个

627 日 , 2022 23:45:23
625 日 , 2022 21:37:21
620 日 , 2022 16:34:38
一些SpringBoot实用工具

@Valid 系列注解: 优雅的校验接口入参是否合法
@RestContollerAdvice + @ExceprionHandler:全局异常处理,防止异常细节传给前端

607 日 , 2022 19:09:38
向上取整

java中向上取整可以简写成:(a+b-1)/b,
这等价于(int)Math.ceil(1.0*a/b);

605 日 , 2022 1:02:08