目录

Life in Flow

Embrace your dreams and unlock your full potential at every stage of life.

Windows Terminal

简介  Windows Terminal 是一个新的,现代的,功能丰富的,高效的终端应用程序,适用于命令行用户。它包含 Windows 命令行社区最常请求的许多功能,包括对选项卡,富文本,全球化,可配置性,主题和样式等的支持。 安装 Chocolatey Windows Terminal requires Windows 10 1903 (build 18362) or later Desktop Bridge VC++ v14 Redistributable Package # 安装 PS C:\WINDOWS\system32> Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) # 验证是否安装成功 PS C:\WINDOWS\system32> choco Chocolatey v0.10.15 Please run 'choco ....

JMH基准测试

JMH 简介  JMH,即 Java Microbenchmark Harness,这是专 ⻔ ⽤于进 ⾏代码的微基准测试的 ⼀套 ⼯具 API,JMH 由 OpenJDK/Oracle ⾥ ⾯那群开发了 Java 编译器的人员所开发。 使用场景 已经找出了热点函数,⽽需要对热点函数进 ⾏进 ⼀步的优化时,就可以使 ⽤ JMH 对优化的效 果进 ⾏定量的分析。 想定量地知道某个函数需要执 ⾏多 ⻓时间,以及执 ⾏时间和输 ⼊ n 的相关性 ⼀个函数有两种不同实现(例如 JSON 序列化/反序列化有 Jackson 和 Gson 实现),不知道哪种 实现性能更好 快速上手 引入依赖 <dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh-core</artifactId> <version>1.21</version> </dependency> <dependency> <groupId>or....

JDK8~13新特性

接口新特性_JDK8 使用场景  接口里面定义公用的业务逻辑,抽取出来,每个子类都必须具备;静态方法可以充当工具类 默认方法default  接⼝⾥⾯定义⼀个默认⽅法,这个接⼝的实现类实现了这个接⼝之后,不⽤管这个 default修饰的⽅法就可以直接调⽤,即接⼝⽅法的默认实现。 Animal_interface public interface Animal { void run(); void eat(); default void breath(){ System.out.println("使用氧气呼吸"); } static void test(){ System.out.println("这个是静态方法"); } } Dog public class Dog implements Animal { @Override public void run() { System.out.println("dog 跑"); } @Override public void eat() { System.out.println("dog 吃"); } } 静态方法  接⼝名.静态⽅法来访....

Golang

安装  根据PC架构下载对应版本的安装包。  Go语言官网 配置环境变量 GOROOT:Go语言安装根目录的路径,也就是GO语言的安装路径。 GOPATH:若干工作区目录的路径。是我们自己定义的工作空间。 GOBIN:GO程序生成的可执行文件(executable file)的路径。 GOPATH的作用  GOPATH简单理解成Go语言的工作目录,它的值是一个目录的路径,也可以是多个目录路径,每个目录都代表Go语言的一个工作区(workspace)。  我们需要利于这些工作区,去放置Go语言的源码文件(source file),以及安装(install)后的归档文件(archive file,也就是以“.a”为扩展名的文件)和可执行文件(executable file)。 源码文件通常会被放在某个工作区的src子目录下。 安装后如果产生了归档文件(以“.a”为扩展名的文件),就会放进该工作区的pkg子目录 如果产生了可执行文件,就可能会放进该工作区的bin子目录。 归档文件存放的具体位置和规则  源码文件会以代码包的形式组织起来,一个代码包其实就对应一个目录。  安装某个代码....

Mybatis

# MyBatis  MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 快速入门 引入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>....

MyBatis-Plus

什么是 MyBatis?  MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。消除了 JDBC 的复杂性,MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 MyBatis vs JPA MyBatis 的优势 SQL 语句可以自由控制,更灵活、性能较高。 SQL 与代码分离、易于阅读和维护 提供 XML 标签,支持编写动态 SQL 语句 MyBatis 的劣势 简单的 CRUD 操作还得写 SQL 语句(XML 或注解) XML 中有大量的 SQL 要维护 MyBatis 自身功能很有限,但支持 Plugin MyBatis-Plus  MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。  官网  码云  GitHun 无侵入:只做....

Netty

剖析:启动服务 # 服务启动主线 * Selector selector = sun.nio.ch.SelectorProviderImpl.openSelector() * ServerSocketChannel serverSocketChannel = provider.openServerSocketChannel() * selectionKey = javaChannel().register(eventLoop().unwrappedSelector(), 0, this); * javaChannel().bind(localAddress, config.getBacklog()); * selectionKey.interestOps(OP_ACCEPT); • Selector 是在 new NioEventLoopGroup()(创建一批 NioEventLoop)时创建。 • 第一次 Register 并不是监听 OP_ACCEPT,而是 0: selectionKey = javaChannel().register(eventLoop().unwrap....