咸糖 - 自律者自由

Recent content on 咸糖 - 自律者自由

写给还在迷茫的你:我的三本大学回忆

开头 前几天在网上看到一个快毕业的哥们儿抱怨,说大学没意义。这说法我觉得太片面了。以及还有就是我的高中同学总是认为学了计算机就能找到高薪工作,

7/5/2025
articleCard.readMore

2024 年终总结

今天是 2024 即将收尾的最后一个月,我看到很多平台都有在发年度的 recap,像 reddit 啥的,我也想写一篇年度总结,记录一下这一年发生的事情。 2024 年终总结 一

12/1/2024
articleCard.readMore

Neovim: No Crash Incremental Selection

When I use neovim treesitter incremental selection, it randomly crashes, but I cannot stable reproduce it. And I found some issues and complaints about this issue, but no solution. So I decide to write a blog post to record this issue and the solution. related issues: https://www.reddit.com/r/neovim/comments/10wwkft/comment/j7qla2q/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button https://github.com/neovim/neovim/issues/24336 https://github.com/neovim/neovim/issues/25254 https://www.reddit.com/r/neovim/comments/18dn4qt/treesitter_incremental_selection/ TL;DR paste this https://github.com/xiantang/nvim-conf/blob/7c0d6cbf6d9fd7b6a8960de887db1109332419bf/lua/plugins/treesitter.lua#L62-L132 into your neovim configuration file. this is my treesitter incremental selection configuration: 1 2 3 4 5 6 7 8 9 incremental_selection = { enable = true, keymaps = { init_selection = true, node_incremental = "v", node_decremental = "<BS>", }, }, sometime when I use v to expand the selection, it crashes, and it’s a Segmentation fault, and I have the report:

7/11/2024
articleCard.readMore

2022 年终总结

今天是 2023 年的第一天,我想写一篇年终总结,回顾一下 2022 年的一些事情。 同时也是一个自我的回顾。 2022 年终总结 2022 年是一个不大顺利的一年, 似乎因为经济下行

1/1/2023
articleCard.readMore

使用 neovim 作为 PDE(个性化开发环境)

本文不会告诉你如何一步一步地配置 neovim,而是告诉你一些关于 PDE 的 “道”, 不是具体实践的 “术&rdqu

10/29/2022
articleCard.readMore

shell 是一个不错的生产力工具

连续三个命令的序列,重复执行了第二次,那么就建议你将它写成一个 Shell 脚本 – blog.fleeto.us 最近越来越发觉 shell 是一门可以代替 python 作为 devops 的工程师的第二门语言. 因为日常

9/12/2022
articleCard.readMore

使用二八法则省力地学习 awk

篇幅只占20%、然而有效性却达到80% -二八法则 本文你能学到什么? 在本文中,我们将学习到如何使用二八法则来省力轻松学习 linux 文本处理命令 awk。

6/29/2022
articleCard.readMore

肉身翻墙新加坡安顿指南

阅读本文能获得什么 本文主要讲的是如何来到新加坡工作之后,需要做的一些事情。 阅读本文你能获得到在新加坡落地之后,需要做的一些必须的 事项例如租房

6/12/2022
articleCard.readMore

使用 Docker Compose 建立你自己的开发环境

Docker 其实并不是一种新技术,而是一个新瓶装旧酒的工具。 其实我在大学上学的时候就用过 Docker,那个时候还是 17 年左右,Docker 还是如日中天的

5/5/2022
articleCard.readMore

关于编写可维护的代码的一些实践与想法

关于编写可维护的代码的一些实践与想法 最近在改一个代码风格迥异并且经历过很多手的历史代码,发现中间中了很多代码设计上的一些反模式的错误。导致我

4/10/2022
articleCard.readMore

我为什么使用双向链接做笔记?

记忆信息后寻找之间的联系才是人的价值。 之前向身边的朋友推荐双相链接的软件来记录八股文,很多人会来问我“为什么要用双向链接?有啥好处?” 。 我这

2/27/2022
articleCard.readMore

关于焦虑和拖延症

拖延总能让我们苟且偷安,但难题并没有消失。–《番茄工作法图解》 目前存在的问题 压力产生焦虑,在互联网公司始终会有很多的压力,有些是

2/20/2022
articleCard.readMore

Golang: 如何处理日渐膨胀的 interface

The bigger the interface,the weaker the abstraction。Go Proverbs 先说结论吧,如果你的 Golang interface 有太多函数导致你很难横向拓展,那就把它按照职责拆分

2/13/2022
articleCard.readMore

使用番茄工作法来更好的利用你的时间

对于我还来说,很容易陷入一种工作一整天,一整天都很忙但是不知道在忙什么的状态,导致第二天还是很焦虑,早会还是不知道要讲什么,只能做一下让自己

2/3/2022
articleCard.readMore

Unix 如何杀死一个进程和它的子孙进程?

最近周末在维护一个开源项目,叫做 air。它是一个 Golang 的热加载代码的工具,会监听本地的文件变化,然后自动重新加载。 遇到的问题 最近遇到一个特别有意

1/24/2022
articleCard.readMore

Golang: 让你的零值更有用

Make the zero value useful。 –Go Proverbs 让我们从 Golang blog 开始吧:The zero value 当内存被分配来存储一个值时,无论是通过声明还是调用 make 或 new,并且没有提供明确的初始

1/16/2022
articleCard.readMore

使用 Mock 和 Interface 进行 Golang 单测

在工作中我经常会发现很多工程师的 Golang 单测是写的有问题的,只是单纯的调用代码做输出,并且会包含各种 IO 操作,导致单测无法到处运行。 使用 Mock 和 Interface 进行 Golang

1/7/2022
articleCard.readMore

关于 Golang Slice 的一些细节

关于 Golang Slice 的一些细节 在 Golang 中,有两种数据类型: 一种是限定长度的数组,叫做 Array,另外一种是不限定长度的数组,叫做 Slice。 区分 Array 和 Slice Array 和 Slice

12/21/2021
articleCard.readMore

总结一些计算机常用的原则

计算机常用的原则 在写代码的时候我们经常会有一些体会和经验所得,这些经验所得其实老早被之前的大神归纳成为原则。最近这一年我就一直在收集各种原则

11/10/2021
articleCard.readMore

重新学习英语语法

背景 感觉自己对英语还是有很多的欠缺,所以前一段时间学习了一些英语相关的语法,其实很多都是初中要学的东西但是自己当时一点都不上心,压根就没从老

10/14/2021
articleCard.readMore

上班族近期小半年入门投资基金组合的学习与实践经历

”每个人都应该投资,越早越好。哪怕你一直输钱,十年后至少你学会了如何少输。而不是等到十年后被迫必须投资时,一次输掉大部分本金“ –@xiaodotdo 前言 笔者因为

6/1/2021
articleCard.readMore

疫情期间的肉身翻墙新加坡指南

”国外生活的难度比想象的小,但出国需要的决心比想象的大“ –@FreiheitYu 作者写下这篇文章的时候是 2021 年上旬,随着出入境政策的放松与收紧可能会有出入,仅供参考

5/19/2021
articleCard.readMore

About me

About me 欢迎!我是咸糖。这是我的个人网站,我在其中博客是我在日常生活中学到的东西或思考,希望你能喜欢它。 我在这里分享我学到的东西,如果给你造成了

5/15/2021
articleCard.readMore

软技能:大厂底层员工打工指南

“我发现很多文章面经都是在讲如何进入大厂的,但是其实在大厂生存也是一个学问” 前言 笔者最近换了工作,选择了心脏跳动,没有在之前的某跳动继续工作

4/26/2021
articleCard.readMore

软技能:我是如何获取知识与信息的?

​ ”我们每个人都是信息时代的荒野猎人,在信息构成的一望无际的荒野中求存。“ -《为什么要成为信息捕食者》 ​ 在信息爆炸的移动互联网时代,每个互联

4/2/2021
articleCard.readMore

分布式的令牌桶算法的实现

什么是令牌桶算法? 令牌桶算法是一种限流算法,他与漏桶算法的实现是一种相反的实现。 漏桶算法是按照一定频率的速率进行漏水,然后对于我们的请求就可

4/9/2020
articleCard.readMore

实现一个AtomicInteger

什么是 AtomicInteger AtomicInteger 顾名思义是一个具有原子化操作的 Integer,与普通的 Integer 的区别是 AtomicInteger 采用一个 CAS 的方式使 Integer 的自增等操作变成原子化操作。 实现的之前需要了

4/6/2020
articleCard.readMore

GC root 在哪里?

什么是GC Root 首先我们知道标记算法,JVM 的标记算法我们可以了解为一个可达性算法,所以所有的可达性算法都会有起点,那么这个起点就是GC Root

4/6/2020
articleCard.readMore

什么是 Minor GC/Major GC

什么是 Minor GC/Major GC 首先我们先科普一下JVM 经典的堆布局: 对于经典的 JVM heap 布局,有两个区域比较清晰,首先是Young 区,一般会来存放年轻的对象或者刚被

4/6/2020
articleCard.readMore

漏桶算法的设计与实现

什么是漏斗算法? 漏斗算法顾名思义采用一个漏斗来对流量进行限制。 因为漏斗下面有孔,所以会定时的漏水下去,然后我们可以将流量想象为从上边落入漏斗

4/5/2020
articleCard.readMore

剑指offer

No2 单例模式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class No2TwiceCheckSingleton { private volatile static No2TwiceCheckSingleton instance = null; private static final Object sybObj = new Object(); // 一定记住要私有化构造器,不然人家还是能够创建 private No2TwiceCheckSingleton() { }

4/3/2020
articleCard.readMore

单例模式

单例模式是什么? 单例模式,也叫单子模式,是一种常用的软件设计模式,属于创建型模式的一种。 在这个设计模式中,单例对象的类必须保证只有一个实例存

4/3/2020
articleCard.readMore

TCP 针对面试学习

什么是 TCP TCP 是一个全双工面向字节流的基于 IP 协议的协议。 TCP 端到端的准确传输。 对于每一个字节进行确认 对于恶劣的网络情况的处理 超时重传 拥塞控制 效率提

4/1/2020
articleCard.readMore

Actor 如何处理阻塞消息

观察了一下业务的代码中发现在 Actor 中采用了很多 import scala.concurrent.ExecutionContext.Implicits.global 来作为 Actor 内部的执行 Future 的线程池,之前觉得好像也没啥问题。 但是在看完 akka 源码后发现好像有些不妥。 简单

1/15/2020
articleCard.readMore

Akka 源码解析

1 2 3 4 5 6 7 8 9 10 11 12 13 14 object Main1 extends App { val system = ActorSystem("HelloSystem") val jazzListener = system.actorOf(Props[Listener]) val musicListener = system.actorOf(Props[Listener]) system.eventStream.subscribe(jazzListener, classOf[Jazz]) // jazzListener 订阅 Jazz 事件 system.eventStream.subscribe(musicListener, classOf[AllKindsOfMusic]) // musicListener 订阅 AllKindsOfMusic 以及它的子类 事件 // 只有 musicListener 接收到这个事件 system.eventStream.publish(Electronic("Parov Stelar")) // jazzListener

1/15/2020
articleCard.readMore

How to learn scala

背景: 刚来到以scala为技术栈的公司的时候,配置了半天环境,然后终于将项目起了起来,发现里面的代码很奇怪,没有任何循环,数据的操作是一个函

1/15/2020
articleCard.readMore

AES 需要限制 SEED 长度

写了一个工具类用来加密解密数据库的 app 字段 本地环境运行单测什么都没有任何问题,但是一到生产环境就出现 BUG。 这个的原因是因为线上环境没有支持 AES

10/20/2019
articleCard.readMore

Java 如何区分==与.equals()方法

一般来说equals()和"=="运算符是用来比较两个对象是否相等,但是这两者之前还是有许多不同: 最主要的不同是.equ

2/24/2019
articleCard.readMore

2018年年度总结

到年底啦,稍微写一点总结总结一下这个2018年。 这一年有失去也有获得吧。失去是一段没有结果的感情的失败,获得则是整个人质的提升。 失去的就让他

12/30/2018
articleCard.readMore

Java 集合扩容

集合扩容 ArrayList 对于 ArrayList 他默认的容量为 10,所以如果需要对 ArrayList 进行大数据量的处理的时候的话,就需要使用显式制定容量的方式进行处理。这样可以减少不必要的

12/7/2018
articleCard.readMore