SMOKEN 发布的文章

1、安装中文版的Navicat Premium 12.1.24 for Mac
2、删掉钥匙串访问(Keychain.app)中所有由 Navicat 保存的密码
3、打开钥匙串访问,点击左上角的钥匙串访问,再点击证书助理中的创建证书,在弹出的创建证书窗口中输入和选择以下信息,然后点击创建按钮:

- 阅读剩余部分 -

1、在系统偏好设置-网络-你的VPN连接-高级,将通过VPN连接发送所有流量的选项取消勾选。
2、打开终端,执行以下命令,指定192.168.199.1至192.168.199.255的IP地址通过ppp0网关访问(其他IP地址走默认网关),ppp0是VPN连接的网关名称,通过ifconfig可以查看到VPN连接的网关名称,请将192.168.199.0和ppp0修改为你自己实际的值。

sudo touch /etc/ppp/ip-up
sudo chmod 755 /etc/ppp/ip-up
sudo sh -c 'cat /dev/null > /etc/ppp/ip-up'
sudo sh -c 'echo "#!/bin/sh" >> /etc/ppp/ip-up'
sudo sh -c 'echo "/sbin/route add -net 192.168.199.0/16 -interface ppp0" >> /etc/ppp/ip-up'

- 阅读剩余部分 -

准备工作

以下操作均需要用root账号登录服务器,服务器最好开启bbr,开启了bbr后,v2ray的数据传输速度要快很多。

安装v2ray服务器

对于 V2Ray的验证方式包含时间,就算是配置没有任何问题,如果时间不正确,也无法连接 V2Ray 服务器的,服务器会认为你这是不合法的请求。所以客户端和服务端的系统时间一定要正确,只要保证时间误差在90秒之内就没问题。

- 阅读剩余部分 -

1、在VPN连接属性–>网络–>Internet协议版本4–>属性–>高级,去掉《在远程网络上使用默认网关》,这样做让所有连接都走本地网络连接,不走VPN
2、以管理员身份打开cmd,执行命令:ipconfig,找到VPN连接的IP地址,再执行命令:route -p add 192.168.199.0 mask 255.255.0.0 192.168.200.100(其中192.168.199.0是需要通过VPN访问的IP段,192.168.200.100是VPN连接的IP地址,这两个IP需要修改为自己实际的IP),这样做是让192.168.199.1至192.168.199.255的IP地址通过VPN访问
3、重新连接VPN

connectionTimeout:连接超时时间(单位:毫秒,默认值:60000),tomcat接受连接后到客户端首次发送数据的最大等待时间,如果超过此时间,tomcat将会主动关闭连接
keepAliveTimeout:长连接最大空闲时间(单位:毫秒,默认值:等于connectionTimeout),表示长连接两次请求之间最大等待时间,该长连接最后一次请求后等待此时间仍然没有接收到另一个请求,tomcat将会主动关闭连接
maxKeepAliveRequests:长连接最大请求数(默认值:100,1表示禁用长连接,-1表示不限制),该长连接请求次数达到此数值后,tomcat将会主动关闭连接

- 阅读剩余部分 -

mvn clean package -pl bioframe-api -am -Dmaven.test.skip=true

参数说明:
-am --also-make 同时构建所列模块的依赖模块;
-amd -also-make-dependents 同时构建依赖于所列模块的模块;
-pl --projects <arg> 构建制定的模块,模块间用逗号分隔;
-rf -resume-from <arg> 在完整的反应堆构建顺序基础上,指定从哪个模块开始构建;

mvn deploy:deploy-file -Durl=http://nexus.xxx.com/repository/3rd-party/ -DrepositoryId=nexus -DgroupId=3rd-party -DartifactId=com.sun.jna -Dversion=4.1.0 -Dpackaging=jar -Dfile=./com.sun.jna_4.1.0.v20170410-1117.jar

public static class IntSumReducer extends Reducer<Text, Text, Text, IntWritable> {
        private List<Text> list=null;
        
        @Override
        protected void setup(Reducer<Text, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException {
            list=new ArrayList<Text>();
        }
        
        @Override
        public void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
            for (Text value : values) {
                //错误的写法,reduce的key和value分别共享同一对象,每次迭代的时候,只是更新了这个共享对象的值,如果直接引用此对象,该list中所有的对象的值都会变成最后一次迭代的value的值
                list.add(value);
                //正确的写法,应该将value复制出一个新的对象,key同理
                list.add(new Text(value));
            }
        }
        
        @Override
        protected void cleanup(Reducer<Text, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException {
            for(Text obj:list){
                context.write(obj, new IntWritable(1));
            }
        }
}