Skip to content

Instantly share code, notes, and snippets.

@dangshanli
dangshanli / NIOClient.java
Created April 7, 2021 12:52
Selector NIO模式Echo服务器 客户端
public class NIOClient {
public static void main(String[] args) throws IOException, InterruptedException {
InetSocketAddress crunchifyAddr = new InetSocketAddress("localhost", 8888);
SocketChannel crunchifyClient = SocketChannel.open(crunchifyAddr);
log("Connecting to Server on port 1111...");
ArrayList<String> companyDetails = new ArrayList<String>();
@dangshanli
dangshanli / redis_pub.py
Created April 4, 2021 07:58
python 使用redis 发布订阅模式
from fuckconn import redis_conn
import random
ins=redis_conn.get_redis_lab()
cats=['cat'+str(n) for n in range(10)]
hats=['hat'+str(n) for n in range(10)]
for msg in range(10):
cat = random.choice(cats)
hat=random.choice(hats)
@dangshanli
dangshanli / redis_conn.py
Created April 4, 2021 07:18
python连接redis redis 作为队列 消费队列多进程
import redis
redis_ins = None
def get_redis_lab():
host = 'redis-13060.c256.us-east-1-2.ec2.cloud.redislabs.com'
port = 13060
psd = 'pqzuEMkeUz2JPeG2ONBhU004yjtdfUgO'
global redis_ins;
@dangshanli
dangshanli / DecayComputePrime.java
Created October 9, 2020 06:58
【延迟列表】一个延迟列表的示例 生成一个延迟计算的素数列表
import java.util.function.Predicate;
import java.util.function.Supplier;
//使用延迟列表 计算素数一个素数列表
public class DecayComputePrime {
public static void main(String[] args) {
LazyList<Integer> numbers = from(2);
int two = primers(numbers).head();
int three = primers(numbers).tail().head();
int four = primers(numbers).tail().tail().head();
@dangshanli
dangshanli / NewTime.java
Created October 7, 2020 03:34
【日期 Java Time API】Java8 Time API的一些示例:创建、获取、解析、修改、格式化、时区
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjuster;
import java.time.temporal.TemporalAdjusters;
import static java.time.temporal.TemporalAdjusters.*;
//新日期API 新的API是Immutable ThreadSafe的
@dangshanli
dangshanli / ChainOfResponsibility.java
Created October 6, 2020 23:46
【设计模式 Design Pattern】 责任链模式 Chain Of Responsibility Pattern,使用Lambda表达式实现
import java.util.function.Function;
import java.util.function.UnaryOperator;
//责任链模式
//同一个对象经过多个链接的处理器,Object ->[HandlerObject1]->[HandlerObject2]->...
//使用lambda expression方式
public class ChainOfResponsibility {
public static void main(String[] args) {
UnaryOperator<String> header = (input) -> "from Areth,Mario and Alan: "+input;
@dangshanli
dangshanli / ObserverDesign.java
Created October 6, 2020 23:30
【设计模式 Design Pattern】 观察者模式(Oberver Pattern) 使用lambda表达式方式实现
import java.util.ArrayList;
import java.util.List;
//观察者模式
//使用lambda表达式
public class ObserverDesign {
public static void main(String[] args) {
Subject f = new Feed();
f.registerObserver(tweet -> {
if (tweet != null && tweet.contains("money"))
@dangshanli
dangshanli / CollectorCreator.java
Created October 5, 2020 14:19
【Stream API】 自定义Collector实现模板
import java.util.*;
import java.util.function.*;
import java.util.stream.Collector;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import static java.util.stream.Collector.Characteristics.CONCURRENT;
import static java.util.stream.Collector.Characteristics.IDENTITY_FINISH;
//自定义Collector模板
@dangshanli
dangshanli / CollectOperates.java
Last active October 5, 2020 18:11
【Stream API】 Stream.collect(Collector)终端操作
import lombok.Data;
import java.util.*;
import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.stream.IntStream;
import static java.util.Comparator.comparingInt;
import static java.util.stream.Collectors.*;
@dangshanli
dangshanli / PythagoreanGenerator.java
Last active October 5, 2020 18:13
【Stream API】 使用Stream生成勾股数
import java.util.stream.IntStream;
import java.util.stream.Stream;
//Stream生成勾股数,范围1到100
public class PythagoreanGenerator {
public static void main(String[] args) {
Stream<double[]> pythagorean = IntStream.rangeClosed(1, 100).boxed()
.flatMap(a -> IntStream.rangeClosed(a, 100)
.mapToObj(b -> new double[]{a, b, Math.sqrt(a * a + b * b)})
.filter(t -> t[2] % 1 == 0)