源码
16 篇文章
- JDK源码-StringBuilder
2021/04/11 00:00:00
1. int newCapacity = (value.length << 1) + 2; 此处+2是为了容纳最后的'\0'; 2. 如果不够用,尝试将容量扩容到需求长度 3. 如果还不
- 分类 · JDK源码
- JDK源码-JUC包中的Atomic类
2020/12/21 00:00:00
JUC包中有多个常用类型的原子操作包装类,内部封装了对于数值、数组的操作。 针对并发计算的情景,提供了Adder和Accumulator类来提高操作效率,前者接收操作数,后者接收一个Function作
- 分类 · JDK源码
- JDK源码-AQS
2020/04/18 00:00:00
AQS位于```java.util.concurrent.locks```包作为JDK实现并发处理的核心类,提供了实现各种锁所需要的一些基础能力,比如公平锁,互斥锁等。 AQS内部维护一个双向链表(C
- 分类 · JDK源码
- Java指令重排序与volatile关键字
2020/04/18 00:00:00
完整代码参见Github,其中关键代码如下: ```java Thread thread1 = new Thread( () - a = 1;
- 分类 · JVM
- JDK源码-HashMap增删与扩容
2020/04/15 00:00:00
public HashMap(int initialCapacity, float loadFactor) - initialCapacity:初始容量,传入时,threshold(下次扩容阈值)为t
- 分类 · JDK源码
- Dubbo源码解析-SPI+动态切换:Extension机制
2020/04/13 00:00:00
JDK的SPI机制允许在打包的时候,通过META-INF下的配置文件来切换某接口不同的实现,但是一般认为这种动态切换发生在打包过程,程序运行前。Dubbo在此基础上进行了扩展,以方便打包,并提供运行时的动态切换功能。
- 分类 · Dubbo
- Dubbo源码-框架初始化
2020/04/02 00:00:00
Dubbo通过利用Spring的生命周期钩子、监听器等机制来初始化及构造自己的配置。 - OverrideDubboConfigApplicationListener:负责加载Dubbo配置,优先级:
- 分类 · Dubbo
- Dubbo源码-RPC调用
2020/04/02 00:00:00
Dubbo调用中,Provider方提供监听程序,在监听到某个Service的调用后,通过内部的代理来调用对应实例的相应方法,将结果或异常序列化后通过socket连接返回给调用方 1. Spring扫
- 分类 · Dubbo
- Dubbo源码-DubboBootstrap.start
2020/04/02 00:00:00
在Spring上下文refresh完成后,会广播```ContextRefreshed```事件,此时```DubboBootstrapApplicationListener```的监听被触发,调用d
- 分类 · Dubbo
- SpringBoot源码-App启动过程
2020/03/29 00:00:00
1. a = new SpringApplication(primarySources) 2. a.run 1. 判断webApplicationType:通过尝试使用ClassLoader加载对应的
- 分类 · Spring
- SpringContext源码(2)-refresh方法
2019/10/02 00:00:00
AbstractApplicationContext类作为所有Context的共同父类,定义了refresh()方法,代码如下: ```java /** * Load or refr
- 分类 · Spring
- SpringContext(3)-配置文件读取成Resource数组
2019/10/02 00:00:00
调用getResource(location)方法获取Resource数组时,程序中判断resourceLoader是否是ResourcePatternResolver实例,是则调用ResourceP
- 分类 · Spring
- SpringContext(4)-xml中的Bean定义节点加载成BeanDefinition对象
2019/10/02 00:00:00
对于XML形式的Resource,实际调用XmlBeanDefinitionReader实例的reader.loadBeanDefinitions(configLocations)方法 下面是XmlB
- 分类 · Spring
- SpringContext(5)-BeanDefinition对象初始化为Bean
2019/10/02 00:00:00
在完成了Environment等必要的bean的创建后,AbstractBeanFactory开始调用doGetBean方法来进行具体的bean创建过程: 1.11.1 初始化自定义的单例B
- 分类 · Spring
- SpringContext(6)-CreateBean
2019/10/02 00:00:00
实际执行具体的bean创建的,是refresh过程新建的DefaultListableBeanFactory的父类AbstractAutowireCapableBeanFactory中的createB
- 分类 · Spring
- SpringContext源码(1)-Xml上下文初始化与Bean获取
2019/09/01 00:00:00
本系列主要介绍了SpringContext框架中,通过纯xml配置来初始化一个ApplicationContext,并通过class 参数来获取实例bean的过程,本节主要介绍了学习过程中的配置文件,
- 分类 · Spring
Linux
10 篇文章
- ACME自动申请HTTPS证书(国内版)
2026/04/10 13:45:51
由于某些原因,直接使用官方的安装方式大概率碰到网络问题,因此使用下面的方案安装,这个方式是来源于acme的github官方文档 ```shell git clone https://gitee.com
- 分类 · Linux
- pgcacher 输出样例
2025/06/17 00:00:00
$ ./pgcacher -pid 1 +-------------------------------------------------------------------------------
- 分类 · 疑难问题
- 命令行申请证书
2024/12/04 13:35:00
参考教程 以HE为例 在```~/.acme.sh/account.conf```文件中增加下列配置 ```conf export HE_Usernmae='username' export HE_P
- 分类 · Linux
- AndroidTV安装CA证书
2024/10/01 22:35:54
1. openssl x509 -inform PEM -subject_hash_old -in your-certificate.pem | head -n 1 将 your-certif
- 分类 · Linux
- LVM扩容
2023/11/19 21:11:26
LVM构建在物理磁盘的分区之上,分别映射到各种文件系统的路径中 LVM(Logical Volume Manager(逻辑卷管理)的简写)文件系统由PV\VG\LV三层组合而来,其中 1. PV与磁盘
- 分类 · Linux
- 在Ubuntu系统安装Monaspace字体
2023/11/18 16:28:15
在Ubuntu系统安装Google新开源的Monaspace字体 ```bash !/bin/bash mkdir -p $HOME/.local/share/fonts/monaspace mv $
- 分类 · Linux
- Arch Linux不完全折腾指南
2023/02/26 18:02:09
```bash sudo steamos-readonly disable passwd sudo flatpak remote-modify flathub --url=https://mirror
- 分类 · Linux
- 修复Ubuntu系统下IDEA中文输入法不跟随光标问题
2020/09/19 00:00:00
```shell git clone https://gitee.com/mirrors_JetBrains/JetBrainsRuntime.git git clone https://github
- 分类 · IDEA
- 1. Linux小技巧
2019/05/14 00:00:00
- 查看Redis配置文件路径:redis-cli -p 6379 info | grep 'config_file' 相关网址 - 需要永久配置密码的话就去redis.conf的配置文件中找到req
- 分类 · 知识&技巧
- Linux 使用update-alternative切换Java版本
2019/01/07 00:00:00
```shell sudo update-alternatives --display java sudo update-alternatives --config java ```
- 分类 · Linux
Spring
8 篇文章
- SpringBoot中CK+MySQL多数据源结合MyBatisPlus配置浅探
2023/05/26 11:34:38
常见的基于Spring框架的web程序中,使用Mybatis作为ORM框架是一个很常见的方案,尤其是一些简单的CRUD场景下,使用```spring-data-starter-jdbc```配合```
- 分类 · Spring
- SpringBoot源码-App启动过程
2020/03/29 00:00:00
1. a = new SpringApplication(primarySources) 2. a.run 1. 判断webApplicationType:通过尝试使用ClassLoader加载对应的
- 分类 · Spring
- SpringContext源码(2)-refresh方法
2019/10/02 00:00:00
AbstractApplicationContext类作为所有Context的共同父类,定义了refresh()方法,代码如下: ```java /** * Load or refr
- 分类 · Spring
- SpringContext(3)-配置文件读取成Resource数组
2019/10/02 00:00:00
调用getResource(location)方法获取Resource数组时,程序中判断resourceLoader是否是ResourcePatternResolver实例,是则调用ResourceP
- 分类 · Spring
- SpringContext(4)-xml中的Bean定义节点加载成BeanDefinition对象
2019/10/02 00:00:00
对于XML形式的Resource,实际调用XmlBeanDefinitionReader实例的reader.loadBeanDefinitions(configLocations)方法 下面是XmlB
- 分类 · Spring
- SpringContext(5)-BeanDefinition对象初始化为Bean
2019/10/02 00:00:00
在完成了Environment等必要的bean的创建后,AbstractBeanFactory开始调用doGetBean方法来进行具体的bean创建过程: 1.11.1 初始化自定义的单例B
- 分类 · Spring
- SpringContext(6)-CreateBean
2019/10/02 00:00:00
实际执行具体的bean创建的,是refresh过程新建的DefaultListableBeanFactory的父类AbstractAutowireCapableBeanFactory中的createB
- 分类 · Spring
- SpringContext源码(1)-Xml上下文初始化与Bean获取
2019/09/01 00:00:00
本系列主要介绍了SpringContext框架中,通过纯xml配置来初始化一个ApplicationContext,并通过class 参数来获取实例bean的过程,本节主要介绍了学习过程中的配置文件,
- 分类 · Spring
Context
6 篇文章
- SpringContext源码(2)-refresh方法
2019/10/02 00:00:00
AbstractApplicationContext类作为所有Context的共同父类,定义了refresh()方法,代码如下: ```java /** * Load or refr
- 分类 · Spring
- SpringContext(3)-配置文件读取成Resource数组
2019/10/02 00:00:00
调用getResource(location)方法获取Resource数组时,程序中判断resourceLoader是否是ResourcePatternResolver实例,是则调用ResourceP
- 分类 · Spring
- SpringContext(4)-xml中的Bean定义节点加载成BeanDefinition对象
2019/10/02 00:00:00
对于XML形式的Resource,实际调用XmlBeanDefinitionReader实例的reader.loadBeanDefinitions(configLocations)方法 下面是XmlB
- 分类 · Spring
- SpringContext(5)-BeanDefinition对象初始化为Bean
2019/10/02 00:00:00
在完成了Environment等必要的bean的创建后,AbstractBeanFactory开始调用doGetBean方法来进行具体的bean创建过程: 1.11.1 初始化自定义的单例B
- 分类 · Spring
- SpringContext(6)-CreateBean
2019/10/02 00:00:00
实际执行具体的bean创建的,是refresh过程新建的DefaultListableBeanFactory的父类AbstractAutowireCapableBeanFactory中的createB
- 分类 · Spring
- SpringContext源码(1)-Xml上下文初始化与Bean获取
2019/09/01 00:00:00
本系列主要介绍了SpringContext框架中,通过纯xml配置来初始化一个ApplicationContext,并通过class 参数来获取实例bean的过程,本节主要介绍了学习过程中的配置文件,
- 分类 · Spring
JS
6 篇文章
- JS:prototype chain
2019/05/14 00:00:00
每个JS对象都有一个prototype,这个prototype又有自己的prototype,以此类推直到某个对象的prototype 是null为止,一个一个串成链。 - ECMA2015: `Obj
- 分类 · JS
- JS: Array.prototype.reduce
2019/05/14 00:00:00
reduce是js里Array.prototype的方法,用来通过给定的函数,对数组进行迭代后得到单值。 1. 回调函数callback的入参如下: - accumulator: 上次调用此回调
- 分类 · JS
- JS里的this
2019/05/14 00:00:00
处于window上下文或者不在任何function中时,this指向window,不管当前是否处于use strict状态。 在一个function中调用this时,要看function如何被调用。
- 分类 · JS
- JS的展开语法(...)
2018/11/24 00:00:00
用在函数参数列表里,收集参数列表 `...args`: ```js function funcName(...args) { // 此时args等同于arguments,参数名args可随意定
- 分类 · JS
- Vue中的this
2018/11/24 00:00:00
ES5定义的内容,进入标志为 `"use strict"`。 严格模式下,this的值不再指向全局对象。 ```js function strict() { 'use strict';
- 分类 · JS
- 模块化:module.exports, exports, require, export/import
2018/11/24 00:00:00
- 标准:Node.js使用的模块化标准 - 导出:`module.exports` 或 `exports` - 导入:`require()` - 特点: - 运行时加载 - 同步加载 -
- 分类 · JS
Ubuntu
5 篇文章
- 将EasyConnect放入Docker容器运行
2022/08/28 11:13:04
以https://github.com/Hagb/docker-easyconnect仓库为基础,进行改造,首先将代码```git clone```到本地 源代码使用阿里云的debian镜像,速度相
- 分类 · Linux
- Ubuntu快捷方式(.desktop文件)与开机自启
2022/04/05 10:59:40
KUbuntu的快捷方式主要是.desktop文件方式存储,影响搜索,dock栏的快捷方式,同时还可以设置开机自启 KUbuntu的desktop文件主要在下面几个地方,在任何一个地方存在(包括符号链
- 分类 · Linux
- Ubuntu18.04 server 配置静态IP地址
2022/01/12 14:12:15
```shell sudo vi /etc/netplan/00-installer-config.yaml sudo netplan try ``` 内容参考 ```yaml network:
- 分类 · Linux
- Ubuntu系统使用Wine方式安装钉钉和微信
2019/04/20 00:00:00
```bash sudo apt-get install -y wine winbind gnome-shell-extension-top-icons-plus gnome-tweaks ``` 从
- 分类 · Linux
- Ubuntu安装Nvidia闭源驱动
2019/04/14 00:00:00
1. 在驱动安装之初,首先要清除老驱动或者没清除干净的驱动残留: ```shell sudo apt-get remove --purge nvidia* ``` 2. 把系统
- 分类 · Linux
Dubbo
4 篇文章
- Dubbo源码解析-SPI+动态切换:Extension机制
2020/04/13 00:00:00
JDK的SPI机制允许在打包的时候,通过META-INF下的配置文件来切换某接口不同的实现,但是一般认为这种动态切换发生在打包过程,程序运行前。Dubbo在此基础上进行了扩展,以方便打包,并提供运行时的动态切换功能。
- 分类 · Dubbo
- Dubbo源码-框架初始化
2020/04/02 00:00:00
Dubbo通过利用Spring的生命周期钩子、监听器等机制来初始化及构造自己的配置。 - OverrideDubboConfigApplicationListener:负责加载Dubbo配置,优先级:
- 分类 · Dubbo
- Dubbo源码-RPC调用
2020/04/02 00:00:00
Dubbo调用中,Provider方提供监听程序,在监听到某个Service的调用后,通过内部的代理来调用对应实例的相应方法,将结果或异常序列化后通过socket连接返回给调用方 1. Spring扫
- 分类 · Dubbo
- Dubbo源码-DubboBootstrap.start
2020/04/02 00:00:00
在Spring上下文refresh完成后,会广播```ContextRefreshed```事件,此时```DubboBootstrapApplicationListener```的监听被触发,调用d
- 分类 · Dubbo
XmlContext
4 篇文章
- SpringContext(3)-配置文件读取成Resource数组
2019/10/02 00:00:00
调用getResource(location)方法获取Resource数组时,程序中判断resourceLoader是否是ResourcePatternResolver实例,是则调用ResourceP
- 分类 · Spring
- SpringContext(4)-xml中的Bean定义节点加载成BeanDefinition对象
2019/10/02 00:00:00
对于XML形式的Resource,实际调用XmlBeanDefinitionReader实例的reader.loadBeanDefinitions(configLocations)方法 下面是XmlB
- 分类 · Spring
- SpringContext(5)-BeanDefinition对象初始化为Bean
2019/10/02 00:00:00
在完成了Environment等必要的bean的创建后,AbstractBeanFactory开始调用doGetBean方法来进行具体的bean创建过程: 1.11.1 初始化自定义的单例B
- 分类 · Spring
- SpringContext(6)-CreateBean
2019/10/02 00:00:00
实际执行具体的bean创建的,是refresh过程新建的DefaultListableBeanFactory的父类AbstractAutowireCapableBeanFactory中的createB
- 分类 · Spring
并发
3 篇文章
- JDK源码-JUC包中的Atomic类
2020/12/21 00:00:00
JUC包中有多个常用类型的原子操作包装类,内部封装了对于数值、数组的操作。 针对并发计算的情景,提供了Adder和Accumulator类来提高操作效率,前者接收操作数,后者接收一个Function作
- 分类 · JDK源码
- JDK源码-AQS
2020/04/18 00:00:00
AQS位于```java.util.concurrent.locks```包作为JDK实现并发处理的核心类,提供了实现各种锁所需要的一些基础能力,比如公平锁,互斥锁等。 AQS内部维护一个双向链表(C
- 分类 · JDK源码
- Java指令重排序与volatile关键字
2020/04/18 00:00:00
完整代码参见Github,其中关键代码如下: ```java Thread thread1 = new Thread( () - a = 1;
- 分类 · JVM
注解
3 篇文章
- Java使用进阶-Java元注解
2020/02/14 00:00:00
在注解定义时,用在注解头部的注解,称为元注解,目前元注解在java.lang.annotation包内,分别```@Target```,```@Retention```,```@Documented`
- 分类 · Java进阶
- JavaSE进阶-注解:元注解@Target
2019/05/14 00:00:00
@Target的可能取值为以下枚举类中值的组合,指征当前的注解类可以在哪些位置使用 ```Java public enum ElementType { /** Class, interface
- 分类 · JDK源码
- JavaSE进阶-注解:基础与定义
2019/05/01 00:00:00
注解是一类特殊的类,在类声明、方法声明、参数列表等位置添加注解,并结合代理等设计模式,可以提高代码的可读性,简化代码等 注解的定义形似接口,具体如下: ```Java @Target(ElementT
- 分类 · JDK源码
Docker
3 篇文章
- qBittorrent Docker 启动命令
2020/10/11 00:00:00
docker create --name=qbittorrent -e PUID=1000 -e PGID=1000 -e TZ=Asia/Shanghai -e UMASK_SE
- 分类 · Linux
- Docker镜像设置
2020/10/01 00:00:00
```shell sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-m
- 分类 · Linux
- Docker容器自动重启
2020/08/16 00:00:00
```shell docker run --restart=always ``` ```shell docker update --restart=always <CONTAINER ID ``
- 分类 · 知识&技巧
MySQL
3 篇文章
- MySQL在UUID建立索引导致的磁盘占用高
2022/10/16 18:43:33
对于MySQL数据库,建立BTREE索引时,如果选择在uuid类型的字段上建立索引时,会引起磁盘占用暴增 1. 创建一个新的MySQL服务器 新建MySQL服务的方法有多种,根据自己的技术储备、机器资
- 分类 · MySQL
- mysql 修改全局sql_mode
2019/05/19 00:00:00
```sql select @@sql_mode; set @@sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR
- 分类 · Linux
- mysql重置密码
2018/11/24 00:00:00
参考https://www.cnblogs.com/activiti/p/7810166.html 操作系统为centos7 x64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加
- 分类 · Linux
分布式
2 篇文章
- 缓存击穿、穿透与雪崩
2021/02/19 00:00:00
缓存击穿指数据存在,但是由于缓存失效同时由于短时间的高并发,导致数据库承受大量读请求,常见于Cache-Aside Pattern。问题出现在缓存失效后,一瞬间收到大量请求,所有的请求同时发现缓存失效
- 分类 · Redis
- 分布式邮件推送系统设计草稿
2020/05/18 00:00:00
分布式邮件推送系统: 1. 前提:服务器NTP时间同步,误差不超过1秒 2. 使用DB持久化存储JOB配置 3. 1. 任务重复执行: 1. 服务器时间NTP同步 2. redis锁
- 分类 · 项目
内存
2 篇文章
- pgcacher 输出样例
2025/06/17 00:00:00
$ ./pgcacher -pid 1 +-------------------------------------------------------------------------------
- 分类 · 疑难问题
- 一次k8s容器内存oom-kill问题研究
2025/06/09 15:45:56
公司最近逐步推进JRE8升级到JRE17,在解决了升级初期的一些库升级、兼容问题后,大部分应用容器趋于稳定。 随着升级的服务越来越多,最近发现部分升级JRE17服务的容器有零星的注册中心健康检查失败报
- 分类 · 疑难问题
问题
2 篇文章
- Tomcat服务,OOM导致异常不自动恢复研究
2023/01/07 20:43:03
某晚,收到同事的告警:“xx服务预发环境挂了,报超时和404错误,来回持续半个小时了,不像是发布导致的,看下?” 由于是预发环境,且整体影响面不大(只是间歇不可用),有足够的时间慢慢排查,因此暂时没有
- 分类 · 经验&教训
- 线程池死锁-线程池嵌套提交
2021/06/02 14:20:22
流量峰值时发现大量调用超时,通过链路追踪锁定超时发生的节点,隔离节点后,在Pod中使用```jstack```命令追踪进程: ```shell jstack -l 1 |grep "java.lang
- 分类 · 线上问题
Array
2 篇文章
- Array.prototype.fill()
2018/11/24 00:00:00
`fill()` 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。 ```js arr.fill(value[, start[, end]]) ``` - value:
- 分类 · JS
- Array.prototype.map()
2018/11/24 00:00:00
`map()` 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。 ```js arr.map(callback(currentValue[, index[, array
- 分类 · JS
IDEA
2 篇文章
- 解决Mac OS系统IDEA同步配置SSH登陆Git仓库报错问题
2021/05/18 15:26:01
IDEA提供了配置同步的功能,支持将配置保存到Git仓库,然后各台电脑/系统上的客户端自动同步仓库中的配置,入口如下: 使用说明见官方文档 在新版Mac OS系统下(我的是11.2),新生成ssh k
- 分类 · 知识&技巧
- IDEA文件头模板自动提示输入摘要
2020/04/17 00:00:00
1. 菜单中File- 2. Files选中Include -> File Header 3. 在右侧的编辑框中输入下列值 ```java /** * @
- 分类 · 知识&技巧
JavaScript
2 篇文章
- Array.prototype.fill()
2018/11/24 00:00:00
`fill()` 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。 ```js arr.fill(value[, start[, end]]) ``` - value:
- 分类 · JS
- Array.prototype.map()
2018/11/24 00:00:00
`map()` 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。 ```js arr.map(callback(currentValue[, index[, array
- 分类 · JS
jvm
2 篇文章
- 《深入Java虚拟机》代码2-7 String.intern()示例代码问题
2020/10/22 00:00:00
openjdk7u11 自己从源码编译的版本 参考书上的源码 ```Java public class FunWithIntern { public static void main(Stri
- 分类 · JVM
- 《深入Java虚拟机》代码3.6.3 长期存活对象进入老年代分析
2020/09/22 00:00:00
1. 运行环境为Linux+自己编译的OpenJDK7u4,运行时使用的jvm参数为 2. 示例代码 ```Java public class PromoteToTenuredGen { p
- 分类 · JVM
k8s
2 篇文章
- pgcacher 输出样例
2025/06/17 00:00:00
$ ./pgcacher -pid 1 +-------------------------------------------------------------------------------
- 分类 · 疑难问题
- 一次k8s容器内存oom-kill问题研究
2025/06/09 15:45:56
公司最近逐步推进JRE8升级到JRE17,在解决了升级初期的一些库升级、兼容问题后,大部分应用容器趋于稳定。 随着升级的服务越来越多,最近发现部分升级JRE17服务的容器有零星的注册中心健康检查失败报
- 分类 · 疑难问题
Net
2 篇文章
- ACME自动申请HTTPS证书(国内版)
2026/04/10 13:45:51
由于某些原因,直接使用官方的安装方式大概率碰到网络问题,因此使用下面的方案安装,这个方式是来源于acme的github官方文档 ```shell git clone https://gitee.com
- 分类 · Linux
- 远端开发机通过本机网络连接私有git仓库
2025/03/07 10:56:16
最近因为工作的原因需要使用到CUDA相关的组件,本地的Mac显然是没有的,因此需要远程开发,但是远程机器在云端,无法连接公司的Git仓库,因此需要代理,方案也比较简单 ```shell ssh -R
- 分类 · Linux
nginx
2 篇文章
- Nginx 反向代理 proxy_pass 配置
2020/10/23 00:00:00
Nginx的配置还是比较简单的,如: 1 2 3 4 location ~ /* { proxy_pass http://127.0.0.1:8008; } 或者可以 1 2 3 4 loc
- 分类 · Linux
- Nginx开机自动启动
2019/07/14 00:00:00
切换到/lib/systemd/system/目录,创建nginx.service文件vim nginx.service ```bash cd /lib/systemd/system/ vim ngi
- 分类 · Linux
Self Host
2 篇文章
- 命令行申请证书
2024/12/04 13:35:00
参考教程 以HE为例 在```~/.acme.sh/account.conf```文件中增加下列配置 ```conf export HE_Usernmae='username' export HE_P
- 分类 · Linux
- AndroidTV安装CA证书
2024/10/01 22:35:54
1. openssl x509 -inform PEM -subject_hash_old -in your-certificate.pem | head -n 1 将 your-certif
- 分类 · Linux
SpringBoot
2 篇文章
- SpringBoot中CK+MySQL多数据源结合MyBatisPlus配置浅探
2023/05/26 11:34:38
常见的基于Spring框架的web程序中,使用Mybatis作为ORM框架是一个很常见的方案,尤其是一些简单的CRUD场景下,使用```spring-data-starter-jdbc```配合```
- 分类 · Spring
- SpringBoot源码-App启动过程
2020/03/29 00:00:00
1. a = new SpringApplication(primarySources) 2. a.run 1. 判断webApplicationType:通过尝试使用ClassLoader加载对应的
- 分类 · Spring
Vibe Coding
2 篇文章
- 鱼和熊掌兼得:ACP协议搭建Vibe Coding环境
2026/02/07 18:22:08
一直以来,在我心目中,Vibe Coding工具环境的完美形态是IDE环境和最新的agent功能的完美结合,这个形态需要包含3个方面 1. 保持最新的agent能力,如Open Code类似,支持mc
- 分类 · Vibe Coding
- OpenCode快速配置
2026/01/26 15:18:03
先前一直用的是Claude Code Cli,配合自己的AI中继提供的三方便宜大碗的模型token,可以兼顾经济性和稳定性。但是最近Claude骚操作不断,最近更是发现自己和小伙伴cli端连接rela
- 分类 · Vibe Coding
测试
1 篇文章
- Mockito 知识图谱
2025/07/16 00:00:00
- 分类 · Java
插件
1 篇文章
- IDEA插件开发学习
2022/12/10 11:00:26
1. 在GitHub页面使用官方模板创建一个仓库 2. ```git clone```仓库到本地,使用idea打开 3. 配置Gradle镜像:修改```build.gradle.kts``
- 分类 · IDEA
代理
1 篇文章
- Nginx 反向代理 proxy_pass 配置
2020/10/23 00:00:00
Nginx的配置还是比较简单的,如: 1 2 3 4 location ~ /* { proxy_pass http://127.0.0.1:8008; } 或者可以 1 2 3 4 loc
- 分类 · Linux
多线程
1 篇文章
- Java指令重排序与volatile关键字
2020/04/18 00:00:00
完整代码参见Github,其中关键代码如下: ```java Thread thread1 = new Thread( () - a = 1;
- 分类 · JVM
反射
1 篇文章
- 一次元空间FullGC导致OOM问题分析
2024/01/14 09:03:45
1. 观测平台告警:FullGC次数大于阈值,5分钟内大于11次,频次大概1-2周有一次 2. 告警后服务概率性会自动恢复,控制台打印 ```shell Exception: java
- 分类 · 疑难问题
泛型
1 篇文章
- 泛型初探-循环形参
2019/05/14 00:00:00
```Java /** * 返回Collections中的最大值(取决于compare方法的实现) * @author kkyeer * @date 2018/10/18
- 分类 · 知识&技巧
故障
1 篇文章
- Tomcat服务,OOM导致异常不自动恢复研究
2023/01/07 20:43:03
某晚,收到同事的告警:“xx服务预发环境挂了,报超时和404错误,来回持续半个小时了,不像是发布导致的,看下?” 由于是预发环境,且整体影响面不大(只是间歇不可用),有足够的时间慢慢排查,因此暂时没有
- 分类 · 经验&教训
缓存
1 篇文章
- 缓存击穿、穿透与雪崩
2021/02/19 00:00:00
缓存击穿指数据存在,但是由于缓存失效同时由于短时间的高并发,导致数据库承受大量读请求,常见于Cache-Aside Pattern。问题出现在缓存失效后,一瞬间收到大量请求,所有的请求同时发现缓存失效
- 分类 · Redis
快捷方式
1 篇文章
- Ubuntu快捷方式(.desktop文件)与开机自启
2022/04/05 10:59:40
KUbuntu的快捷方式主要是.desktop文件方式存储,影响搜索,dock栏的快捷方式,同时还可以设置开机自启 KUbuntu的desktop文件主要在下面几个地方,在任何一个地方存在(包括符号链
- 分类 · Linux
配置
1 篇文章
- SpringBoot中CK+MySQL多数据源结合MyBatisPlus配置浅探
2023/05/26 11:34:38
常见的基于Spring框架的web程序中,使用Mybatis作为ORM框架是一个很常见的方案,尤其是一些简单的CRUD场景下,使用```spring-data-starter-jdbc```配合```
- 分类 · Spring
任务调度
1 篇文章
- 分布式邮件推送系统设计草稿
2020/05/18 00:00:00
分布式邮件推送系统: 1. 前提:服务器NTP时间同步,误差不超过1秒 2. 使用DB持久化存储JOB配置 3. 1. 任务重复执行: 1. 服务器时间NTP同步 2. redis锁
- 分类 · 项目
日志
1 篇文章
- logback日志配置
2019/05/19 00:00:00
```xml <?xml version="1.0" encoding="UTF-8"? <configuration debug="false" scan="false">
- 分类 · 知识&技巧
设计模式
1 篇文章
- 设计模式-单例模式【实现、序列化、反射】
2018/11/22 00:00:00
[toc] 单例模式的实现有很多种,分类方式也不一而足,比如分为预加载和懒加载,以及线程安全的实现及线程不安全的实现 调用时判断实例是否已经初始化,没有的话初始化并赋值。 优点: 1. 懒加载 2.
- 分类 · 设计模式
输入法
1 篇文章
- 修复Ubuntu系统下IDEA中文输入法不跟随光标问题
2020/09/19 00:00:00
```shell git clone https://gitee.com/mirrors_JetBrains/JetBrainsRuntime.git git clone https://github
- 分类 · IDEA
数据结构
1 篇文章
- Redis数据类型与存储结构
2020/05/21 00:00:00
对于Redis来说,Key类似SQL中Table的概念。Key指向某种基本的数据类型。Redis有六种基本的数据类型:Hash, ZSet, Set, String, List, HyperLogLo
- 分类 · Redis
死锁
1 篇文章
- 线程池死锁-线程池嵌套提交
2021/06/02 14:20:22
流量峰值时发现大量调用超时,通过链路追踪锁定超时发生的节点,隔离节点后,在Pod中使用```jstack```命令追踪进程: ```shell jstack -l 1 |grep "java.lang
- 分类 · 线上问题
网卡
1 篇文章
- Ubuntu18.04 server 配置静态IP地址
2022/01/12 14:12:15
```shell sudo vi /etc/netplan/00-installer-config.yaml sudo netplan try ``` 内容参考 ```yaml network:
- 分类 · Linux
网络
1 篇文章
- 将EasyConnect放入Docker容器运行
2022/08/28 11:13:04
以https://github.com/Hagb/docker-easyconnect仓库为基础,进行改造,首先将代码```git clone```到本地 源代码使用阿里云的debian镜像,速度相
- 分类 · Linux
线程池
1 篇文章
- 线程池死锁-线程池嵌套提交
2021/06/02 14:20:22
流量峰值时发现大量调用超时,通过链路追踪锁定超时发生的节点,隔离节点后,在Pod中使用```jstack```命令追踪进程: ```shell jstack -l 1 |grep "java.lang
- 分类 · 线上问题
疑难问题
1 篇文章
- 一次元空间FullGC导致OOM问题分析
2024/01/14 09:03:45
1. 观测平台告警:FullGC次数大于阈值,5分钟内大于11次,频次大概1-2周有一次 2. 告警后服务概率性会自动恢复,控制台打印 ```shell Exception: java
- 分类 · 疑难问题
源码解析
1 篇文章
- Stream类
2018/06/14 00:00:00
collect方法为java.util.Stream类的内部方法,有两种重载形式(Java 1.8),主要用于将Stream中的元素通过一定的计算过程转化为另外的表现形式 方法定义 ```Java &
- 分类 · Java进阶
知识&技巧
1 篇文章
- Linux:叹号!使用总结
2019/10/14 00:00:00
实际上,不起眼的“!”在linux中有着很多让你惊叹的妙用。本文就来细数那些“!”的神奇用法。下面话不多说了,来一起看看详细的介绍吧 引用 例如,在执行完上面一条命令后,可以使用下面的方式再次执行上一
- 分类 · Linux
知识图谱
1 篇文章
- 知识图谱学习
2024/03/09 16:28:16
考虑这么一句话:我是中国人 主语:我 谓语:是 宾语:中国人 更进一步的抽象,可以认为上面这句话是图关系 1. 设计原则 1. 业务原则:一切从业务逻辑出发,图谱设计本身体现业务逻
- 分类 · 知识&技巧
acp
1 篇文章
- 鱼和熊掌兼得:ACP协议搭建Vibe Coding环境
2026/02/07 18:22:08
一直以来,在我心目中,Vibe Coding工具环境的完美形态是IDE环境和最新的agent功能的完美结合,这个形态需要包含3个方面 1. 保持最新的agent能力,如Open Code类似,支持mc
- 分类 · Vibe Coding
ai
1 篇文章
- OpenCode快速配置
2026/01/26 15:18:03
先前一直用的是Claude Code Cli,配合自己的AI中继提供的三方便宜大碗的模型token,可以兼顾经济性和稳定性。但是最近Claude骚操作不断,最近更是发现自己和小伙伴cli端连接rela
- 分类 · Vibe Coding
AndroidTV
1 篇文章
- AndroidTV安装CA证书
2024/10/01 22:35:54
1. openssl x509 -inform PEM -subject_hash_old -in your-certificate.pem | head -n 1 将 your-certif
- 分类 · Linux
ArchLinux
1 篇文章
- Arch Linux不完全折腾指南
2023/02/26 18:02:09
```bash sudo steamos-readonly disable passwd sudo flatpak remote-modify flathub --url=https://mirror
- 分类 · Linux
BUG
1 篇文章
- JDK中的Bug: Array和List的互相转化
2020/09/19 00:00:00
众所周知,JDK提供了一对方法来进行Array和List的互相转换: - ```Arrays.asList()``` Array- - ```arr.toArray()``` List->
- 分类 · 开发问题
claude code
1 篇文章
- OpenCode快速配置
2026/01/26 15:18:03
先前一直用的是Claude Code Cli,配合自己的AI中继提供的三方便宜大碗的模型token,可以兼顾经济性和稳定性。但是最近Claude骚操作不断,最近更是发现自己和小伙伴cli端连接rela
- 分类 · Vibe Coding
Collection
1 篇文章
- JDK源码-JDK里自带的各种Collection
2020/04/24 00:00:00
除了常用的HashSet,HashMap,ArrayList和ConcurrentHashMap外,JDK1.8自带了多种不同的Collection实现,可以适用到不同的场景: Map: - ```E
- 分类 · JDK源码
CompileJDK
1 篇文章
- 深度Deepin编译OpenJDK8
2019/06/14 00:00:00
1. 安装基本组件 ```bash sudo apt-get update sudo apt-get install build-essential sudo apt-
- 分类 · Linux
CSS
1 篇文章
- CSS Deep选择器
2018/11/24 00:00:00
HTML5 Web Components提供了完整的CSS样式封装。 这意味着: - 在组件内定义的样式不会泄漏到页面其他部分 - 页面级别的样式不会修改组件自身的样式 然而,有时你可能需要从页面级别
- 分类 · JS
Debug
1 篇文章
- tomcat8 远程调试配置
2019/12/14 00:00:00
1:修改 startup.sh exec "$PRGDIR"/"$EXECUTABLE" start "$@" 改为exec "$PRGDIR"/"$EXECUTABLE" jpda s
- 分类 · 知识&技巧
Deepin
1 篇文章
- 深度Deepin编译OpenJDK8
2019/06/14 00:00:00
1. 安装基本组件 ```bash sudo apt-get update sudo apt-get install build-essential sudo apt-
- 分类 · Linux
Encode
1 篇文章
- 计算机中的位运算与编码
2017/05/14 00:00:00
- 运算规则为被运算数按位取反, - 由于实际存储使用的为数字的补码,实际上是补码按位取反 - console.log的时候,打印的为原码 因为~0=-1 且\~-1=0,所以string.index
- 分类 · 知识&技巧
FileSync
1 篇文章
- 使用FreeFileSync自动同步文件夹中的文件
2019/05/14 00:00:00
1. 下载安装文件并安装 2. 打开桌面的FreeFileSync 3. 在打开的页面中选中需同步的两个文件夹,点击比较- 4. 打开桌面的RealTimeSync,导入刚才另存的ffs_batch文
- 分类 · 知识&技巧
git
1 篇文章
- git仓库使用指定私钥
2025/02/23 10:52:19
全文引用 当不同的git库需要使用不同的private key的时候,可在运行git命令的时候指定私钥 private key。 我们可以通过SSH配置文件来指定在git clone过程中使用特定的私
- 分类 · 知识&技巧
HashMap
1 篇文章
- JDK源码-HashMap二次Hash与核心变量
2020/04/15 00:00:00
- HashMap内部使用一个```Node<K,V - HashMap内部的table容量不够时,每次扩容到table.size*(1+loadFactor)向上取2的整数次幂,lo
- 分类 · JDK源码
JAR
1 篇文章
- 替换单独Jar包的某个文件
2019/05/14 00:00:00
Java jar 工具来替换。 jar uvf test.jar test.class 这样会直接把test.class 直接添加到jar包的根目录。 jar uvf test.jar com/tes
- 分类 · 知识&技巧
Java
1 篇文章
- SpringBoot中CK+MySQL多数据源结合MyBatisPlus配置浅探
2023/05/26 11:34:38
常见的基于Spring框架的web程序中,使用Mybatis作为ORM框架是一个很常见的方案,尤其是一些简单的CRUD场景下,使用```spring-data-starter-jdbc```配合```
- 分类 · Spring
JDK
1 篇文章
- JDK源码-常用Collection
2020/12/14 00:00:00
LinkedList同时实现了List和Deque两个接口,考虑到底层用链表实现,因此插入效率高,随机查询效率低。 LinkedList底层为双向链表,每个节点为Node对象,内部分别有Prev和Ne
- 分类 · JDK源码
JVM
1 篇文章
- 一次元空间FullGC导致OOM问题分析
2024/01/14 09:03:45
1. 观测平台告警:FullGC次数大于阈值,5分钟内大于11次,频次大概1-2周有一次 2. 告警后服务概率性会自动恢复,控制台打印 ```shell Exception: java
- 分类 · 疑难问题
KDE
1 篇文章
- Ubuntu快捷方式(.desktop文件)与开机自启
2022/04/05 10:59:40
KUbuntu的快捷方式主要是.desktop文件方式存储,影响搜索,dock栏的快捷方式,同时还可以设置开机自启 KUbuntu的desktop文件主要在下面几个地方,在任何一个地方存在(包括符号链
- 分类 · Linux
map
1 篇文章
- Array.prototype.map()
2018/11/24 00:00:00
`map()` 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。 ```js arr.map(callback(currentValue[, index[, array
- 分类 · JS
markdown
1 篇文章
- VsCode自动修复markdown lint报错
2020/11/22 00:00:00
1. 打开用户自定义配置文件:菜单栏File- 2. 添加或修改如下配置项 ```json "editor.codeActionsOnSave": { "source.
- 分类 · 知识&技巧
Mockito
1 篇文章
- Mockito 知识图谱
2025/07/16 00:00:00
- 分类 · Java
NAS
1 篇文章
- 一次SSL证书交换错误的解决记录
2023/11/11 18:50:47
某个网站,当用户手机访问的时候,偶尔出现无法访问,报错如下,点击显示详细信息发现访问```a.my-domain.com```时,返回了```b.my-domain.com```的证书 经过自己的设备
- 分类 · Linux
npm
1 篇文章
- npm 阿里镜像
2018/05/14 00:00:00
1. 方法一 通过config命令 ```bash npm config set registry https://registry.npm.taobao.org npm co
- 分类 · 前端DevOps
Nvidia
1 篇文章
- Ubuntu安装Nvidia闭源驱动
2019/04/14 00:00:00
1. 在驱动安装之初,首先要清除老驱动或者没清除干净的驱动残留: ```shell sudo apt-get remove --purge nvidia* ``` 2. 把系统
- 分类 · Linux
opencode
1 篇文章
- OpenCode快速配置
2026/01/26 15:18:03
先前一直用的是Claude Code Cli,配合自己的AI中继提供的三方便宜大碗的模型token,可以兼顾经济性和稳定性。但是最近Claude骚操作不断,最近更是发现自己和小伙伴cli端连接rela
- 分类 · Vibe Coding
Python
1 篇文章
- CentOS安装配置python3环境
2019/05/14 00:00:00
国内可以从华为镜像源获取:https://mirrors.huaweicloud.com/python/,在页面中进入对应的版本文件夹,获取.tar.xz格式的源码包,下以3.7.4为例 ```bas
- 分类 · Linux
qBittorrent
1 篇文章
- qBittorrent Docker 启动命令
2020/10/11 00:00:00
docker create --name=qbittorrent -e PUID=1000 -e PGID=1000 -e TZ=Asia/Shanghai -e UMASK_SE
- 分类 · Linux
Redis
1 篇文章
- Redis数据类型与存储结构
2020/05/21 00:00:00
对于Redis来说,Key类似SQL中Table的概念。Key指向某种基本的数据类型。Redis有六种基本的数据类型:Hash, ZSet, Set, String, List, HyperLogLo
- 分类 · Redis
Security
1 篇文章
- 网络安全基础
2020/04/17 00:00:00
密码安全思路为对【密码】或【密码+用户名】进行一定的Hash运算,数据库只保存密码的hash值,这样即使被脱库,也无法从hash值直接算出明文密码。常见的Hash方法如下 Hash函数|资源占用|安全
- 分类 · 知识&技巧
SQL
1 篇文章
- SQL数组生成临时表
2020/12/15 00:00:00
考虑如下场景:安全部门用Excel的方式给出了一个Email名单,需要筛选这个名单中最近没有登录过系统的列表,当前报表数据库中有一张表,存储Email登录记录 思路:将Excel的Email导出为临时
- 分类 · 懂
ssh
1 篇文章
- git仓库使用指定私钥
2025/02/23 10:52:19
全文引用 当不同的git库需要使用不同的private key的时候,可在运行git命令的时候指定私钥 private key。 我们可以通过SSH配置文件来指定在git clone过程中使用特定的私
- 分类 · 知识&技巧
SSL
1 篇文章
- 配置免费HTTPS : let's encrypt+centos7+nginx+tomcat
2017/11/14 00:00:00
突然想给自己的基础版阿里云服务器增加https支持,折腾了许久,简单记一下 1)获取certbot-auto脚本 ```shell wget https://dl.eff.org/certbot-au
- 分类 · Linux
Stream
1 篇文章
- Stream类
2018/06/14 00:00:00
collect方法为java.util.Stream类的内部方法,有两种重载形式(Java 1.8),主要用于将Stream中的元素通过一定的计算过程转化为另外的表现形式 方法定义 ```Java &
- 分类 · Java进阶
String
1 篇文章
- String到底相不相等?String初始化及String.intern()方法浅析
2020/01/14 00:00:00
在各种面试题中经常见到类似下述的面试题 写出main方法的打印结果 ```java class test{ public static void main(St
- 分类 · JVM
Terminal
1 篇文章
- 终端zsh中文乱码问题解决
2022/06/20 12:47:14
```shell vi ~/.zshrc export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 source ~/.zshrc ``` 如果是bash,只
- 分类 · Linux
TimeZone
1 篇文章
- 解决Windows与Ubuntu双系统时间同步问题
2019/04/15 00:00:00
本文介绍了不同的时区时间计算系统,并给出Windows和Ubuntu双系统时间同步解决方案
- 分类 · Linux
Tomcat
1 篇文章
- Tomcat服务,OOM导致异常不自动恢复研究
2023/01/07 20:43:03
某晚,收到同事的告警:“xx服务预发环境挂了,报超时和404错误,来回持续半个小时了,不像是发布导致的,看下?” 由于是预发环境,且整体影响面不大(只是间歇不可用),有足够的时间慢慢排查,因此暂时没有
- 分类 · 经验&教训
Transaction
1 篇文章
- SpringTransaction第一篇-代理扫描与组装
2022/11/13 16:37:09
SpringTx为开发者提供了声明式和注解时声明的支持,为了更好理解Spring在底层具体做了什么实现了各种复杂的机制,对过程的探究是必要的。而SpringTx底层依赖SpringAOP机制与实现,因
- 分类 · Spring
VPN
1 篇文章
- 强制OpenVPN仅指定网段走VPN
2021/01/19 00:00:00
在服务端没有配置Split Tunneling的情况下,客户端手动配置 1. 可以拿到ovpn文件 2. 使用TunnelBlick能连接成功 1. 使用TunnelBlick作为客户端,安装好后,双
- 分类 · 知识&技巧
Windows
1 篇文章
- Windows修改iTunes备份文件夹路径
2023/11/18 21:58:08
iTunes默认将iPhone/iPad的备份文件保存在C盘,动辄100G以上的备份对于C盘压力不小,因此希望将备份文件放到数据盘。 iTunes默认未提供此选项,需要使用Windows的软链接来实现
- 分类 · 技巧
Wine
1 篇文章
- Ubuntu系统使用Wine方式安装钉钉和微信
2019/04/20 00:00:00
```bash sudo apt-get install -y wine winbind gnome-shell-extension-top-icons-plus gnome-tweaks ``` 从
- 分类 · Linux
Zerotier
1 篇文章
- ZeroTier-One搭建moon节点
2021/03/18 00:00:00
原文链接 Zerotier可以组建虚拟局域网,并且是P2P直连的,这个可以说是非常爽了,你可以在公司使用微软自带的远程连接直连自己家里边的电脑,访问共享远程控制等。想要P2P访问必须先通过一个中介进行
- 分类 · Linux