Skip to content

Instantly share code, notes, and snippets.

@sudot
sudot / SnowflakeIdLongTerm.java
Last active October 4, 2025 04:15
Twitter_Snowflake-Twitter雪花算法加长使用年限-Java版
/**
* Twitter_Snowflake加长使用年限Java版
* <pre>
* 此版本在原版的基础上将10位数据机器位分一半增加到时间戳位组成46位时间戳数据位。
* 相对原版来说优点是延长使用时间到2000多年,缺点是最大只能部署32个节点,适合访问量不大的系统。
* 修改后的结构如下(每部分用-分开):
*
* 0 - 0000000000 0000000000 0000000000 0000000000 00000 0 - 00000 - 00000 00000 00
*
* 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0
@sudot
sudot / SnowflakeIdWorker.java
Last active October 4, 2025 04:14
Twitter_Snowflake-Twitter雪花算法-Java版
/**
* Twitter_Snowflake
* <pre>
* SnowFlake的结构如下(每部分用-分开):
*
* 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 0000000000 00
*
* 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0
*
* 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截)得到的值),
@sudot
sudot / vbs
Created October 4, 2025 03:06
防止电脑自动锁屏
' 点击键盘滚动键版本
Const keyString = "{SCROLLLOCK}"
Set vbObj = WScript.CreateObject("WScript.Shell")
Do While True
vbObj.SendKeys keyString
' 间隔300毫秒再按一次,还原键盘状态
WScript.Sleep 300
vbObj.SendKeys keyString
' 锁屏时间是 3 分钟,此处设定提前 3 秒按下键盘
WScript.Sleep 1000 * (60 * 3 - 3)
@sudot
sudot / Pbkdf2PasswordEncoder.java
Created April 2, 2020 14:41
Password Hashing With PBKDF2 (PBKDF2WithHmacSHA1)
/**
* Password Hashing With PBKDF2 (http://crackstation.net/hashing-security.htm).
* Copyright (c) 2013, Taylor Hornby
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
@sudot
sudot / 电脑不锁屏.html
Created September 2, 2019 03:45
电脑不锁屏
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>I need you still work!</title>
</head>
<body bgcolor="#215E21">
<script type="text/javascript">
function PressKey(){
var objWs = new ActiveXObject("Wscript.Shell");
objWs.SendKeys("{SCROLLLOCK}");
@sudot
sudot / LombokReflections.java
Created November 28, 2018 11:47
LombokReflections
import java.beans.Introspector;
import java.io.Serializable;
import java.lang.invoke.SerializedLambda;
import java.lang.reflect.Method;
import java.util.function.Function;
import java.util.regex.Pattern;
/**
* Lombok反射工具
*
@sudot
sudot / JedisRedisLock.java
Last active March 9, 2022 01:00
使用Redis服务实现的分布式锁
package net.sudot.commons.lock;
import redis.clients.jedis.Jedis;
import java.time.Duration;
import java.util.Collections;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition;
/**