Skip to content

Instantly share code, notes, and snippets.

@qiushijie
qiushijie / A_23树.java
Created November 28, 2020 02:49
2-3 树 Java 实现
package com.github.qiushijie;
import java.util.LinkedList;
import java.util.List;
public class A_23树 {
public static void main(String[] args) {
Tree23 tree23 = new Tree23(10);
//
@qiushijie
qiushijie / Skiplist.java
Last active November 1, 2020 04:35
跳跃表最简实现
public class Skiplist {
/**
* 最大层级数
*/
private static final int MAX_LEVEL = 64;
/**
* 概率
*/
@qiushijie
qiushijie / MyCountDownLatch.java
Created October 7, 2020 06:49
自定义倒计数器
public class MyCountDownLatch {
private static class Sync extends AbstractQueuedSynchronizer {
public Sync(int count) {
setState(count);
}
/**
* 返回值 >= 0 说明获取锁成功
@qiushijie
qiushijie / MyReentrantLock.java
Last active October 7, 2020 02:23
自定义可重入锁
public class MyReentrantLock implements Lock {
private static class Sync extends AbstractQueuedSynchronizer {
@Override
protected boolean tryAcquire(int arg) {
// 确保入参为 1,封装可自行根据业务传
assert arg == 1;
// AQS 就是对 state (状态) 进行操作
// 这里我们获取锁后把 state 设置为大于 0
package com.github.qiushijie;
import java.util.concurrent.*;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
public class ForkJoinPoolExample {
public static void main(String[] args) {
// sleepTask();
// ==UserScript==
// @name 战绩分享
// @namespace http://tampermonkey.net/
// @version 0.5.4
// @updateURL https://gist.githubusercontent.com/qiushijie/2572cafcb75935b409748a532c445171/raw/leetcode-cn-submission-share.user.js
// @downloadURL https://gist.githubusercontent.com/qiushijie/2572cafcb75935b409748a532c445171/raw/leetcode-cn-submission-share.user.js
// @description 知识就是力量,学习使我快乐
// @author qiushijie
// @match https://leetcode-cn.com/*
// @grant GM_setClipboard
@qiushijie
qiushijie / KeyboardAvoidingView.tsx
Created April 3, 2019 04:48
react native ios keyboard avoiding view
import React from 'react';
import {Animated, Dimensions, EmitterSubscription, Keyboard, Platform, TextInput, UIManager} from 'react-native';
import {NavigationEventSubscription, NavigationScreenProp} from 'react-navigation';
interface IState {
height: Animated.Value;
}
export interface KeyboardAvoidingViewProps {
navigation: NavigationScreenProp<any, any>;
@qiushijie
qiushijie / Toast.tsx
Created April 3, 2019 04:34
react native typescript toast component
import * as React from 'react';
import {Animated, Dimensions, StyleSheet, Text, TextStyle, View, ViewStyle} from 'react-native';
const {width, height} = Dimensions.get('window');
interface IProps {
textStyle?: TextStyle;
containerStyle?: ViewStyle;
position?: 'top' | 'center' | 'bottom';
opacity?: number;
@qiushijie
qiushijie / json.js
Created January 12, 2019 06:13
手写javascript json解析器
const TokenTypes = {
OPEN_OBJECT: '{',
CLOSE_OBJECT: '}',
OPEN_ARRAY: '[',
CLOSE_ARRAY: ']',
KEY: 'key',
STRING: 'string',
NUMBER: 'number',
TRUE: 'true',
FALSE: 'false',