Java8新特性
包含一些原计划在 Java 7 中却延迟发布的功能。
简介
我们通常所说的接口的作用是用于定义一套标准、约束、规范等,接口中的方法只声明方法的签名,不提供相应的方法体,方法体由对应的实现类去实现。
在JDK1.8中打破了这样的认识,接口中的方法可以有方法体,但需要关键字static或者default来修饰,使用static来修饰的称之为静态方法,静态方法通过接口名来调用,使用default来修饰的称之为默认方法,默认方法通过实例对象来调用。
静态方法和默认方法的作用:
静态方法和默认方法都有自己的方法体,用于提供一套默认的实现,这样子类对于该方法就不需要强制来实现,可以选择使用默认的实现,也可以重写自己的实现。当为接口扩展方法时,只需要提供该方法的默认实现即可,至于对应的实现类可以重写也可以使用默认的实现,这样所有的实现类不会报语法错误:Xxx不是抽象的, 并且未覆盖Yxx中的抽象方法。
Oracle JDK与OpenJDK之间的区别
Oracle JDK与OpenJDK之间的区别
查看及调试JDK源码
V2Ray
V2Ray 不区分服务器版和客户端版,它们运行的是同一个软件,区别是配置文件的不同。
应用场景
场景:外网无法访问部署在内网的 MySQL,导致 SpringBoot 项目启动时连不上数据库,接口无法调试,开发效率低。
解决:部署 v2ray,然后配置 JVM 启动参数 -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=18998
注意:Navicat 不支持 socks 代理,仅支持以下两种方式:
- 使用 SSH 隧道。会话的连接 ID 不会变。
- 使用 HTTP 隧道(nginx 配置见 location.conf)。会话的连接 ID 会变化,所有基于连接级别(Session 级别)的功能和状态全部失效。
使用 HTTP 隧道后,会话的连接 ID 变化的核心原因:无状态与短连接:
1、HTTP 协议是无状态的(Stateless)
标准的数据库连接(如直连或通过 SSH 隧道)是长连接。客户端与 MySQL 之间会保持一个持久的 TCP 握手状态,在此期间分配的
CONNECTION_ID是固定不变的。但 HTTP 协议每次请求都是独立的、无状态的。
2、隧道脚本(ntunnel_mysql.php)的运行机制
当你通过 Navicat 的 HTTP 选项卡配置并运行:
- 你在 Navicat 中点击或执行的每一次 SQL 查询,Navicat 都会向服务端的
ntunnel_mysql.php脚本发送一个 HTTP POST 请求。- PHP 脚本接收到请求后,在服务器本地通过
mysqli_connect()临时新建一个数据库连接,执行你的 SQL,拿到结果返回给 Navicat,然后立刻关闭该数据库连接。- 既然每次发送 SQL 都是服务端 PHP 重新
connect的过程,MySQL 自然会为这个全新的连接分配一个新的内部线程 ID。因此,你连续执行SELECT CONNECTION_ID();拿到的永远是不同的 ID。
部署方案一(推荐加密协议)
在服务器部署 V2Ray 服务端,本地部署客户端。
解压
1 | mkdir -p /data/local/v2ray-linux-64/log/ |
服务端
配置
vim /data/local/v2ray-linux-64/config.json,更多配置见官网 v2fly 。
1 | { |
启动
1 | chmod /data/local/v2ray-linux-64/v2ray +x # 授予可执行权限 |
开机自启
v2ray-linux-64.zip 解压文件中包含 systemd/system/v2ray.service,需要的选项包括 User、ExecStart 等。
vim /etc/systemd/system/v2ray.service
1 | # v2ray.service |
重新加载配置文件:systemctl daemon-reload
客户端
配置
更多配置见官网 v2fly 。
1 | { |
启动
新建 windows 启动脚本 D:\Program\v2ray-windows-64\v2ray-run.cmd 内容如下:
1 | v2ray.exe run |
部署方案二
仅在服务器部署 V2Ray 服务端。
解压
请参考上文。
服务端
配置
vim /data/local/v2ray-linux-64/config.json,更多配置见官网 v2fly 。
1 | { |
启动
请参考上文。
启动后可以使用 SwitchyOmega 插件测试 socks 代理。
shadowsocks
If you want to keep a secret, you must also hide it from yourself.
Project V,一个工具集合,官网: https://www.v2ray.com/ ,它可以帮助你打造专属的基础通信网络。Project V 的核心工具称为V2Ray,其主要负责网络协议和功能的实现,与其它 Project V 通信。V2Ray 可以单独运行,也可以和其它工具配合,以提供简便的操作流程。
Project V 工具比较复杂,本文仅针对 Shadowsocks 。
H5和HTML5区别
markdown转html后没有缩进问题:
1 |   半角空格 |
注意注意:H5不=HTML5
H5 是一个产品名词
HTML5是一个技术名词