WSL2 使用 Windows 代理上网
WSL 2 配置代理在 Windows 上设置好代理,连上了谷歌开开心心,但是 WSL 2 不能共享 Windows 的代理策略,如果在 WSL 上再装一个代理软件那可太麻烦了,所以得想想办法。 其实办法还挺简单的,可能有的同学不知道,在一个局域网下如果有一台机器配置好了代理,那么这个代理是可以共享给这个局域网下的其他设备的,比较类似软路由哈! 具体方法如下: Windows 端这里以 Clash 为例,打开 Allow LAN 选项,如下图所示。如果你使用其他软件,那可能是叫「网关模式」、「允许来自局域网的链接」或者其它的什么,都是一个东西,打开就好了,注意打开这个选项后你的电脑就可以代理整个局域网内的机器了,虽然其他的机器还需要额外的配置,但也还是注意安全。 对于 Clash 来说,这个选项是一次性的,下次开机它就关了,不过可以在配置文件里改,通常文件的开头就是。如下图,改成 true 就行。 开启这个选项后,仔细找找,你会找到一个 IP 地址和一个端口号,IP 其实就是本机 IP 啦,这两个数一会有用。 Clash 这个端口 http 和 socks...
k3d学习笔记
1. 安装k3d1brew install k3d 2. 启动docker3. 创建集群1k3d cluster create test-cluster 4. 安装仪表盘4.1 部署仪表盘1kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 4.2 仪表板 RBAC 配置 重要提示:在本指南中创建的 admin-user 将在仪表板中拥有管理权限。 创建以下资源清单文件: dashboard.admin-user.yml 12345apiVersion: v1kind: ServiceAccountmetadata: name: admin-user namespace: kubernetes-dashboard dashboard.admin-user-role.yml 123456789101112apiVersion: rbac.authorization.k8s.io/v1kind:...
细说Mmongo ES 数据过期机制
数据过期在redis上非常容易实现,mongo中可使用TTL索引实现类似的功能。 Mongo数据过期TTL索引TTL是mongo 中的一种特殊的单字段索引,可以支持文档在一定时间之后自动删除,字段类型必须是 ISODate类型或者包含有ISODate类型的数组,创建TTL索引和创建普通索引的方法一样,只是多加了一个属性而已: 12db.collection(集合).createIndex({create_time(ISODate类型字段):1(正序),{expireAfterSeconds:过期时间,单位秒},{backgroud(后台执行):true}}) TTL索引包含以下特点: _id字段不支持TTL索引 如果索引字段是数组,并且字段中多个日期值,则mongo使用数组中最早的日期值来计算到期阈值 如果文档中的索引字段不是ISODate 类型或者不包含ISODate...
细说SpringBootBean定义覆盖机制
印象中Spring Boot 2.x中的bean定义是不能重复的,如下demo: 12345678910111213141516171819202122232425@SpringBootApplicationpublic class BeanDemoApplication { public static void main(String[] args) { SpringApplication.run(BeanDemoApplication.class, args); }}@Configurationclass Bean1Config { @Bean public String bean() { return "BEAN1"; }}@Configurationclass Bean2Config { @Bean public String bean() { return...
Maven依赖中的scope详解
Maven的一个设计范式是约定优于配置(convention over configuration), Maven默认的依赖配置项中,scope的默认值是compile,项目中经常傻傻的分不清,直接默认了。今天梳理一下maven的scope。 scope的分类compile默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。 providedprovided意味着打包的时候可以不用包进去,别的设施(如JDK或者容器)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。 runntimerunntime表示被依赖项不是编译所必需的,而是执行所必需的。与compile相比,跳过编译而已,说实话在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。比较常见的如JSR×××的实现,对应的API...
基于DFA算法实现的敏感词过滤算法
一、 DFA 算法简介在实现文字过滤的算法中,DFA是唯一比较好的实现算法。 DFA 全称为:Deterministic Finite Automaton,即确定有穷自动机。其特征为:有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个符号,其中一个状态是初态,某些状态是终态。但不同于不确定的有限自动机,DFA 中不会有从同一状态出发的两条边标志有相同的符号。 简单点说就是,它是是通过 event 和当前的 state 得到下一个 state,即 event + state= nextstate。理解为系统中有多个节点,通过传递进入的 event,来确定走哪个路由至另一个节点,而节点是有限的。 二、 DFA 算法实践敏感词过滤 敏感词库构造以王八蛋和王八羔子两个敏感词来进行描述,首先构建敏感词库,该词库名称为SensitiveMap,这两个词的二叉树构造为: 用 hash 表构造为: 1234567891011121314151617{ "王":{ ...
仿Kafka实现的JAVA版时间轮算法
项目地址 https://github.com/weylanshi/timing-wheel 从 2 个面试题说起,第一个问题: 如果一台机器上有 10w 个定时任务,如何做到高效触发? 具体场景是:有一个 APP 实时消息通道系统,对每个用户会维护一个 APP 到服务器的 TCP 连接,用来实时收发消息,对这个 TCP 连接,有这样一个需求:“如果连续 30s 没有请求包(例如登录,消息,keepalive 包),服务端就要将这个用户的状态置为离线”。其中,单机 TCP 同时在线量约在 10w 级别,keepalive 请求包较分散大概 30s 一次,吞吐量约在 3000qps。怎么做? 常用方案使用 time 定时任务,每秒扫描一次所有连接的集合 Map<uid, last_packet_time>,把连接时间(每次有新的请求更新对应连接的连接时间)比当前时间的差值大 30s 的连接找出来处理。 另一种方案,使用环形队列法: 三个重要的数据结构: 30s 超时,就创建一个 index 从 0 到 30 的环形队列(本质是个数组) 环上每一个 slot...
图解Java虚拟机系列(二)节码指令
虚拟机是一个相对于物理机的概念,这两种机器都有代码执行能力,其区别在于物理机的执行引擎是直接建立在 CPU 处理器、指令集、操作系统和硬件层面上的。 而虚拟机的执行引擎则由自己实现,因此可以制定自己的指令集和执行引擎的结构体系,而且还可以执行一些不被硬件直接支持的指令集格式。这就是虚拟机相对于物理机的优势所在。 但是缺点也比较明显,由于多了一层虚拟指令,执行虚拟机指令后还要转化为本地机器码,所以在执行效率上,虚拟机是不如物理机的。 Java 虚拟机的字节码指令由一个字节长度的操作码(Opcode)以及紧随其后的零至多个操作数(Operands)构成。 如果忽略异常处理,那么 Java 虚拟机的解释器通过下面这个伪代码的循环即可有效工作: 1234567do{ 自动计算pc寄存器以及从pc寄存器的位置取出操作码; if(存在操作数){ 取出操作数; } 执行操作码所定义的操作;} while(处理下一次循环); 由于字节码指令集限制了其操作码长度为 1 个字节(0 ~...
图解 Java 虚拟机系列(一)字节码文件结构
我们都知道 .java 文件在执行之前会编译成 .class 文件后再执行。比如下面的代码: 12345678package com.jeanboy.jvm;public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }} 在 控制台 执行下面命令: $ cd JVMTraning/src/main/java/com.jeanboy.jvm/ $ javac HelloWorld 在 HelloWorld.java 的同级目录下会看到创建了一个 HelloWorld.class 文件。 将 HelloWorld.class 文件用 16 进制编辑器打开,可以看到如下内容: ClassFile 结构每个 class 文件对应一个如下所示的 ClassFile...
Java中关于try、catch、finally中的细节分析
前言阿里巴巴开发手册中有这么一条:【强制】不要在 finally 块中使用 return , 在开发过程中发现部分同学对这条规则理解不是很透彻,本文将就 try 、catch、finally 的一些问题,分析一下 try 、catch、finally 的处理流程。 首先看一个例子: 例11234567891011121314151617181920public class TryCatchFinally { public static String test() { String t = ""; try { t = "try"; return t; } catch (Exception e) { t = "catch"; return t; } finally { t =...