Skip to content

Instantly share code, notes, and snippets.

@xuyecan
xuyecan / CodeEnumTypeHandler.java
Created October 10, 2018 04:44
mybatis enum handler
public class CodeEnumTypeHandler<E extends Enum<E> & CodeEnum> extends BaseTypeHandler<CodeEnum>
{
private Class<E> type;
public CodeEnumTypeHandler(Class<E> type) {
if (type == null) {
throw new IllegalArgumentException("Type argument cannot be null");
}
this.type = type;
}
protocol Animal {
associatedtype H: Human
func action(by human: H)
}
protocol Human {
associatedtype A: Animal
}

前言

ACM相关的算法有很宽的广度和很高的深度,如果只是为了锻炼编程能力、辅助理解计算机的运行原理,不需要在每个方向都钻研清楚,而只梳理出一些基础的、常见的、有代表意义的,侧重训练下,就可以了。

以下是从网络上找到的算法分类,做了一些调整,加上注解。

算法分类

原文:https://www.cnblogs.com/zxj015/archive/2011/04/12/2740239.html

---
// BarModel.h
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface BarModel : NSMutableDictionary<NSString *, NSString *>
@end

TCP + TLS + Web

背景

  • 目前 Vmess + WebSocket + TLS (以下简称 wss)方式,因其特征如同 HTTPS 流量,可以隐藏 V2Ray 路径,主动侦测会得到正常 HTTP 网站响应,具有良好的伪装能力,目前被广泛用于反审查。

  • 但是如此强大的伪装能力,需要付出严重的性能代价:TLS 1.3 握手需要消耗 1-rtt,WS 握手也需要消耗 1-rtt,增大了握手延迟。V2Ray 增加了 mux 以减少握手的发生,然而实际使用中 mux 体验并不好,很多用户选择关闭。

  • 最近兴起了一个新的反审查工具——Trojan,这个工具将一个类似 Socks 的协议直接通过 TLS 传输,并将认证失败的流量交由 Web 服务器处理。降低 WS 延迟的同时,提供与 wss 方式一样的伪装能力。但是该工具较为年轻,没有路由功能,各平台图形化客户端也不完善。