洋蔥

贪婪,找不到比这更好的词了,是件好事。

Java7的新特性

新的invokedynamic字节码指令

JVM本身对动态语言的支持:新的invokedynamic字节码指令(JSR-292),与多语言虚拟机(Multi Language Virtual Machine)原型

Java语言的动态性-invokedynamic

新的 File I/O 程序库

新的文件 I/O 程序库 (JSR 203 定义) 增加多重文件的支持、文件原始数据和符号链接。新的包为:java.nio.filejava.nio.file.attributejava.nio.file.spi

阅读全文 »

Java6的新特性

Pluggable Annotation Processing API

可拔插注解处理API:用于编译时处理注解,而不是在运行时处理注解。

在运行时,我们仍然可以使用反射来分析注解并自定义行为。

阅读全文 »

Java5的新特性

泛型(Generics)

泛型 : 为集合提供编译期间 (静态) 类型安全,且不须为大多数类型转换 (类型转换) (规范在 JSR 14)

由来

​ 早期的时候,我们使用Object来代表任意的类型。向上转型是没有任何问题的,但是在向下转型的时候其实隐含了类型转换的问题。也就是说这样的程序其实并不是安全的。所以Java在JDK5后引入了泛型,提高程序的安全性。

​ 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

阅读全文 »

从软件上 V2Ray 不区分服务器版和客户端版,也就是说在服务器和客户端运行的 V2Ray 是同一个软件,区别只是配置文件的不同。

部署

应用场景

问题:外网无法访问部署在内网的 MySQL,导致 SpringBoot 项目启动时连不上数据库,接口无法调试,开发效率低。

解决:参考以下方式部署 v2ray,然后配置 JVM 参数 -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=18998

部署方案一

在服务器部署 V2Ray 客户端。配置文件如下(更多配置见官网 v2fly):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"inbounds": [
{
"listen": "0.0.0.0", // 服务器监听IP
"port": 8997, // 服务器监听端口
"protocol": "socks", // 协议名称
"settings": { // 详见每个协议中的InboundConfigurationObject
"auth": "noauth", // "noauth" | "password"。password模式下IDEA代理MySQL连接,提示socks验证失败
"accounts": [ // 支持多个用户账号。此选项仅当auth为password时有效。
{
"user": "zhaolq",
"pass": "123456789"
}
],
"udp": true // 是否开启UDP协议的支持
}
}
],
"outbounds": [
{
"protocol": "freedom"
}
]
}

执行 chmod ./v2ray +x./v2ray run 启动 V2Ray 客户端,可以使用 SwitchyOmega 插件测试 socks 代理是否生效。

注意:

Navicat 不支持 socks 代理,但可以使用 HTTP 隧道。Nginx 配置见 Nginx教程 章节的 常用配置。具体参考 https://blog.csdn.net/baikunlong/article/details/132596536

部署方案二(推荐加密协议)

服务端

在服务器部署 V2Ray 服务端,本地部署客户端。

1
2
cd /opt/local/
unzip v2ray-linux-64.zip -d ./v2ray-linux-64

服务端配置(更多配置见官网 v2fly):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
// 请提前创建log目录。请使用绝对路径。
"log" : {
"access": "/opt/local/v2ray-linux-64/log/access.log",
"error": "/opt/local/v2ray-linux-64/log/error.log",
"loglevel": "warning"
},
"inbounds": [
{
"port": 8998, // 服务器监听端口
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "755bc63b-e26d-47cd-85a1-b6ebbecbbabc"
}
]
}
}
],
"outbounds": [
{
"protocol": "freedom"
}
]
}

Linux 启动前需授予可执行权限 chmod ./v2ray +x,然后参考下文 开机自启

客户端

客户端配置(更多配置见官网 v2fly):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
{
/*
// 请提前创建log目录。请使用绝对路径。
"log" : {
"access": "X:\Program\v2ray-windows-64\log\access.log",
"error": "X:\Program\v2ray-windows-64\log\error.log",
"loglevel": "warning"
},
// 配置Routing路由。不建议配置,因为这样才能打印访问日志。
"routing": {
"domainStrategy": "IPOnDemand",
"rules": [
{
"type": "field",
"ip": [
"geoip:private"
],
"outboundTag": "direct" // 当一个规则生效时,即将这个连接转发至它所指定的 outboundTag。当没有匹配到任何规则时,流量默认被转发至第一个 outbound。
}
]
},
*/
"inbounds": [
{
"port": 18998, // SOCKS 代理端口,在浏览器中需配置代理并指向这个端口
"listen": "127.0.0.1",
"protocol": "socks",
"settings": {
"udp": true
}
}
],
// 一个数组,每个元素是一个出站连接配置。列表中的第一个元素作为主出站协议。当路由匹配不存在或没有匹配成功时,流量由主出站协议发出。
"outbounds": [
{
"protocol": "vmess",
"settings": {
"vnext": [
{
"address": "192.168.0.7", // 服务器地址,请修改为你自己的服务器 ip 或域名
"port": 8998, // 服务器端口
"users": [
{
"id": "755bc63b-e26d-47cd-85a1-b6ebbecbbabc"
}
]
}
]
}
},
{
"protocol": "freedom",
"tag": "direct" // 出站连接的标识,用于在其它的配置中定位此连接。当其值不为空时,必须在所有 tag 中唯一。配置Routing路由时可以指定使用哪个出站连接
}
]
}

windows启动脚本

1
2
3
:: 新建文件 v2ray-run.cmd
v2ray.exe run
pause

开机自启

v2ray-linux-64.zip 解压文件中包含 systemd/system/v2ray.service,需要的选项包括 User、ExecStart 等。

vim /etc/systemd/system/v2ray.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# v2ray.service
[Unit]
Description=V2Ray Service
Documentation=https://www.v2fly.org/
After=network.target nss-lookup.target

[Service]
User=root
Group=root
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ExecStart=/opt/local/v2ray-linux-64/v2ray run -config /opt/local/v2ray-linux-64/config.json
Restart=on-failure
RestartPreventExitStatus=23

[Install]
WantedBy=multi-user.target

重新加载配置文件:systemctl daemon-reload

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

官网:https://shadowsocks.org/

阅读全文 »

markdown转html后没有缩进问题:

1
2
3
  半角空格
  全角空格
  不断行的空格

注意注意:H5不=HTML5

  H5 是一个产品名词

  HTML5是一个技术名词

阅读全文 »
0%