Skip to content

Instantly share code, notes, and snippets.

View zhoulifu's full-sized avatar

zhoulifu zhoulifu

View GitHub Profile
import java.util.Objects;
import java.util.regex.Pattern;
class IPRangeExpander {
private static final Pattern IPV4_PATTERN = Pattern.compile("^(([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){1}(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){2}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$");
public void expand(String from, String to) {
if (from == null || to == null) {
throw new IllegalArgumentException(
"Invalid ip range: from " + from + " to " + to);
@zhoulifu
zhoulifu / PrettyXmlInputStream.java
Last active September 25, 2019 03:50
A InputStream which read inline xml string formatted
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Objects;
public class PrettyXmlInputStream extends InputStream {
private static final byte[] EMPTY_BYTES = new byte[0];
private static final byte[] CLOSE_TAG_PREFIX = new byte[]{'<', '/'};
private static final byte[] CDATA_PREFIX = "[CDATA[".getBytes();
private static final byte[] CDATA_SUFFIX = new byte[]{']', '>'};
@zhoulifu
zhoulifu / AsciiSequence.java
Created July 14, 2019 04:55
bytes array based ascii sequence
import java.util.Arrays;
import java.util.Objects;
public class AsciiSequence implements CharSequence {
private static final AsciiSequence EMPTY_STRING =
new AsciiSequence(new byte[0]);
final byte[] value;
final int offset;
final int length;
@zhoulifu
zhoulifu / TerminableThread.java
Last active May 17, 2019 02:52
two-phrase termination pattern
public abstract class TerminableThread extends Thread {
private volatile boolean stopRequested;
private volatile boolean stopped;
public boolean isStopRequested() {
return stopRequested;
}
public boolean isStopped() {
import static java.lang.Math.abs;
import static java.lang.Math.acos;
import static java.lang.Math.cos;
import static java.lang.Math.sin;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class GeographyUtil {
@zhoulifu
zhoulifu / .alias
Last active November 12, 2018 09:07
Shell alias
alias sbr='mvn clean && mvn spring-boot:run'
alias nem='emacs -nw'
alias ics='dpkg -l|grep'
alias rm='rm -i'
alias psef='ps -ef|grep'
alias gdd='git difftool -t meld -d'
alias psport='netstat -atnl|grep -P'
alias mcp='mvn clean package'
alias mcpnt='mcp -Dmaven.test.skip=true'
alias mcc='mvn clean compile'
@zhoulifu
zhoulifu / all-color.sh
Created September 6, 2017 08:05
Bash colors
#!/bin/bash
for STYLE in 0 1 2 3 4 5 6 7; do
for FG in 30 31 32 33 34 35 36 37; do
for BG in 40 41 42 43 44 45 46 47; do
CTRL="\033[${STYLE};${FG};${BG}m"
echo -en "${CTRL}"
echo -n "${STYLE};${FG};${BG}"
echo -en "\033[0m"
done
echo
@zhoulifu
zhoulifu / HttpClientWithSSL.java
Created September 6, 2017 07:58
HttpClient demo with ssl
import java.io.File;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ssl.DefaultHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
@zhoulifu
zhoulifu / gencrt.sh
Created September 6, 2017 07:40
Shell script for generating self-signed certification and exporting a Java keystore file
#!/bin/bash
_echo() {
echo
# echo $1
echo $'\e[0;33m'"$1"$'\e[0m'
}
_check() {
[ $1 -eq 0 ] || exit $1
@zhoulifu
zhoulifu / coroutine.lua
Last active August 18, 2017 06:19
Lua snippet
--- http://www.lua.org/pil/9.html
function producer()
return coroutine.create(
function()
while true do
local v = io.read()
coroutine.yield(v)
if not v then break end
end