社区首页
Java版本防抖函数Debouncer
防抖函数debounce作用是让某个函数在某段时间内,无论它被触发多少次,它都只执行最后一次的触发
import lombok.RequiredArgsConstructor;
import lombok.val;
import java.time.Duration;
import java.time.Instant;
import java.util.concurrent.*;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
/**
* A utility for debouncing function calls.
*/
public class Debouncer<T> {
private final ScheduledExecutorService executorService;
private final ConcurrentHashMap<Object, DebouncedTask<T>> buffer = new ConcurrentHashMap<>();
private final Duration debounceDuration;
Angular面包屑组件
结合路由的data,自动生成路由的面包屑
import { Component } from '@angular/core';
import { Observable } from 'rxjs';
import { Breadcrumb } from './breadcrumb.model';
import { BreadcrumbService } from './breadcrumb.service';
@Component({
selector: 'breadcrumb',
templateUrl: './breadcrumb.component.html',
styleUrls: ['./breadcrumb.component.scss']
})
export class BreadcrumbComponent {
breadcrumbs$: Observable<Breadcrumb[]>;
Java高效转换List<char[]>为char[]的代码
基于CharBuffer高效展开List
/**
* 要高效把List<char[]>展开为char[]要注意:
* 1. 使用Buffer,对应于char的Buffer是CharBuffer
* 2. 避免使用多次复制
* 3. 避免字符串转换
* @param list
* @return
*/
char[] flatten(List<char[]> list) {
//为了高效分配空间,预先计算转换的空间大小
CharBuffer fullBuffer = CharBuffer.allocate(
list.stream().mapToInt(array -> array.length).sum());
list.forEach(fullBuffer::put);
//注意点:CharBuffer.array()返回的是buffer内的数组,避免数据的多次复制。
Vuetify确认对话框组件
此vue对话框组件基于composition-api实现
<script>
import { defineComponent, reactive, toRefs } from "@vue/composition-api";
export default defineComponent({
setup() {
const state = reactive({
dialog: false,
resolve: null,
reject: null,
message: null,
title: null,
options: {
color: "primary",
width: 290,
zIndex: 200
}