分类
Java 编程

JAVA程序通过代理访问网络

指定 Java 程序的代理服务器地址和端口有两种指定方式:

1.通过 命令行参数 指定

如果只需要考虑代理 HTTP 协议请求,只需添加如下命令行参数:

-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1080

想要 HTTP 和 HTTPS 协议的请求都通过代理访问网络,可以追加上:

-Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=1080

最终填写的值为:

-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1080 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=1080

2.在程序中使用System.setProperty(String, String)

同样很简单,这里直接上代码:

String proxyHost = "127.0.0.1";
String proxyPort = "1080";

System.setProperty("http.proxyHost", proxyHost);
System.setProperty("http.proxyPort", proxyPort);

// 对https也开启代理
System.setProperty("https.proxyHost", proxyHost);
System.setProperty("https.proxyPort", proxyPort);

推荐使用第一种方案,通过VM Option 的方式,对代码没有任何侵入,绿色环保。

分类
Linux 软件

Linux 下十大命令行下载工具

我们一想到Linux,肯定会想到黑白终端,真正的Linux用户总是偏爱从终端来进行工作,哪怕是用于下载。相比某种GUI工具,命令行下载工具可以帮助用户更迅速地从网上下载任何东西。有许多可满足一般用途、甚至用于torrent的下载工具,不过相比其它工具,只有像curl或者wget这少数几款工具更受欢迎。我们在本教程中将探讨用于在Linux环境中下载的十大命令行工具。不妨逐一探讨这些CLI工具。

1.Wget

这是最有名的工具,可用于通过CLI下载。这款工具功能很丰富,可以充当某种功能完备的GUI下载管理器,它拥有一款理想的下载管理器所需要的所有功能,比如它可以恢复下载,可以下载多个文件,出现某个连接问题后,可以重新尝试下载,你甚至可以管理最大的下载带宽。

例子

从网上下载某个示例文件:

# wget http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4 
--2016-05-11 16:56:23-- http://www.sample- 
 videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4 
Resolving www.sample-videos.com (www.sample-videos.com)... 
166.62.28.98 
Connecting to www.sample-videos.com (www.sample- 
videos.com)|166.62.28.98|:80... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 1055736 (1.0M) 
Saving to: ‘big_buck_bunny_720p_1mb.mp4’ 
100%[==========================================================================================================>] 10,55,736 52.1KB/s in 24s 
2016-05-11 16:56:47 (43.4 KB/s) - ‘big_buck_bunny_720p_1mb.mp4’ saved [1055736/1055736] 

示例输出:

后台下载文件:

# wget -b http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4

如果互联网连接出现中断,恢复下载。

# wget -c http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4 

从某个密码保护的ftp软件库下载文件。

# wget --ftp-user=<user_name> --ftp-password=<Give_password> Download-url-address 
分类
杂侃

如何从精神上彻底摧毁一个人

“如果你想掌握一个男人的命运,那就让他喜欢上你吧。”——沃·兹基·硕德

“如果你想玩弄一个男人的命运,那就在上一条的基础上,不要喜欢上他。”——·海释·沃·兹基·硕德

由此可见,精神奴役对一个人的控制程度往往更高。当然,这两句引用只是一个类比,今天我们要探讨的是,如何从精神上彻底摧毁一个人,心理学家认为,依恋损伤和精神霸凌是摧毁一个人的关键,如何理解呢?

依恋损伤

什么是依恋损伤?Johnson等人在婚姻咨询的临床研究中,首次提出了“依恋损伤”(attachment injury)这个概念。学者们认为,在亲密关系中,当一方破坏、违背或达不到关系中的“预期”时,就会给另一方造成情感或心理上的创伤,此时“依恋损伤”就出现了。

那么,为什么依恋损伤会对一个人造成巨大的伤害呢?首先,人们儿时与监护人之间的关系决定了一个人的依恋类型,不同的依恋类型预示着不同的处世方式,而依恋类型并不是固定的。

分类
Linux 笔记

Gnome 3桌面调教

Gnome是很多Linux发行版默认的桌面,最新是Gnome 3.x版本。Gnome 3非常简洁,简洁到只有一个空荡荡的桌面。需要调教一番才能更高效率地工作。

Gnome 3优化工具-Gnome Tweaks

Gnome Tweaks是一个图形化配置Gnome 3的工具。它不仅可以自定义Gnome 3桌面,还能集中管理Gnome 3的插件扩展。后面安装的Gnome 3插件都能在Gnome Tweaks中管理,开启/禁用及配置。

在Ubuntu中安装:apt install gnome-tweak

Gnome 3扩展-Dynamic Top Bar

Dynamic Top Bar可以把Gnome 3顶部栏透明化。不过如果使用浅色的壁纸,顶部栏的白色字体会看不清。

Gnome 3扩展-Hide Top Bar

Hide Top Bar可以把Gnome 3顶部栏设为自动隐藏,增大可视面积。

分类
软件

23 款开源的声音、视觉生产工具

无论你是要进行音频、图形、视频、动画还是它们的任意组合,都有一个开源工具可以帮助你产生专业水平的结果。

“开源”在云基础设施、网站托管、嵌入式设备和其他领域已经建立的相当完善。很少数人知道开源在生产专业级的声音视觉素材上也是一个不错的选择。

作为一名产品经理(有时候也是市场支持),我为终端用户提供很多内容:文档、文章、视频教学,甚至是展台物料、白皮书、采访等等。我找到了很多可以帮我制作音频、视频、排版、截屏的开源软件。人们选择开源软件而不是专有软件的原因有很多,而我也为以下人群编制了一份开源音视频工具清单:

  • 想要入坑 GNU/Linux,但需要在原来的操作系统上慢慢从使用跨平台软件开始
  • 热爱开源,但对音视频开源软件所知甚少,不知道该如何选择
  • 想要为创造力充电而探索新的工具,并且不想使用其他人使用过的方法工具
  • 存在某些其他的原因使用开源音视频解决方案(如果是你,不妨在评论里分享一下)

幸运的是,存在着很多开源的音视频创作软件,也存在着很多硬件来支持这些应用。本文清单里的所有软件都符合以下标准:

  • 跨平台
  • 开源(软件和驱动)
  • 稳定
  • 积极维护
  • 良好的文档与技术支持

我将清单中的解决方案划分为图形、音频、视频和动画。注意,本文中提到的应用程序并不完全等同于一些有名的私有软件,它们需要花时间来学习,并且可能需要改变你的工作流程,但是学习新的工具能够让体验全新的创造方式。

分类
Linux

在 awk 中怎么使用循环

awk 脚本有三个主要部分:BEGIN 和 END 函数(都可选),用户自己写的每次要执行的函数。某种程度上,awk 的主体部分就是一个循环,因为函数中的命令对每一条记录都会执行一次。然而,有时你希望对于一条记录执行多次命令,那么你就需要用到循环。

有多种类型的循环,分别适合不同的场景。

while 循环

一个 while 循环检测一个表达式,如果表达式为 true 就执行命令。当表达式变为 false 时,循环中断。

#!/bin/awk -f

BEGIN {
        # Loop through 1 to 10

    i=1;
    while (i <= 10) {
        print i, " to the second power is ", i*i;
        i = i+1;
    }
exit;
}

在这个简单实例中,awk 打印了放在变量 i 中的整数值的平方。while (i <= 10) 语句告诉 awk 仅在 i 的值小于或等于 10 时才执行循环。在循环最后一次执行时(i 的值是 10),循环终止。

分类
Java 笔记 编程

Feign设置header无效

把原生Http Connection改为使用Feign请求调用外部接口,在方法上添加注解:

@PostMapping("{接口url}")
@Headers({"Content-Type: application/json"})

返回:

看来用@Headers设置的Content-Type没有生效。@Headers是Feign自带的注册,而@PostMapping是Spring MVC的注解。在@PostMapping中也有header属性,于是改为:

@PostMapping(value = "{接口url}", headers = {"Content-Type: application/json"})

问题依旧。

分类
Linux

awk 中的字段、记录和变量

Awk 有好几个变种:最早的 awk,是 1977 年 AT&T 贝尔实验室所创。它还有一些重构版本,例如 mawknawk。在大多数 Linux 发行版中能见到的,是 GNU awk,也叫 gawk。在大多数 Linux 发行版中,awk 和 gawk 都是指向 GNU awk 的软链接。输入 awk,调用的是同一个命令。GNU awk 用户手册中,能看到 awk 和 gawk 的全部历史。

这一系列的第一篇文章 介绍了 awk 命令的基本格式:

$ awk [选项] '模式 {动作}' 输入文件

awk 是一个命令,后面要接选项 (比如用 -F 来定义字段分隔符)。想让 awk 执行的部分需要写在两个单引号之间,至少在终端中需要这么做。在 awk 命令中,为了进一步强调你想要执行的部分,可以用 -e 选项来突出显示(但这不是必须的):

$ awk -F, -e '{print $2;}' colours.txt
yellow
blue
green
[...]
分类
Java

Mybatis Generator 1.4.0 发布

Mybatis Generator是一个自动代码工具,此版本相较于旧版本有很多重要的更新。

Mybatis Generator目前有5种运行模式,分别为:MyBatis3DynamicSql、MyBatis3Kotlin、MyBatis3、MyBatis3Simple、MyBatis3DynamicSqlV1。

<context id="MysqlTables" targetRuntime="MyBatis3DynamicSql" defaultModelType="flat">
 <!-- 省略中间 -->
</context>

1、MyBatis3、MyBatis3Simple是比较老的模式,通常生成mapper接口、model实体和XML文件(当javaClientGenerator type为 ANNOTATEDMAPPER 时不生成XML)。这两种模式生成的文件只需要依赖Mybatis3即可正常工作,但是对于很多操作不支持。如果想要使用数据库函数或者多表联合查询,这种模式下是不支持的,需要写额外的SQL。

2、MyBatis3DynamicSqlV1是比较新的模式。除了需要依赖Mybatis3以外,还需要mybatis-dynamic-sql才能正常工作。相比上面的老模式,这种模式更加方便。

分类
Java 编程

再见Mybatis Generator,你好Mybatis Plus

很久以前就使用Mybatis开发,Mybatis官方出品的Mybatis Generator能够自动生成Mapper和XML映射文件,提供基本的CRUD操作方法。

Mybatis Generator生成Entity同时可以生成Example,做为条件对像查询,避免写SQL。Example会跟据字段生成and,or,like等方法,也有eq,lt,gt,le,lt等比较方法和order by排序。

Mybatis Generator生成的SQL语句不提供数据库分页和排序,很多功能实现起来需要插件。我以前也写过分页插件,自定义封装了一个DaoService。在分页插件中增加了like查询,传入Entity跟据字段是否为空做条件用and查询。因为大多情况都是and查询,封装后很多操作不需要写SQL,也不需要用代码判断条件,提高了开发效率。

最近的项目用上了Mybatis Plus,虽说是第一次用,但很多东西与Mybatis Generator相似。Mybatis plus作者说,只在Mybatis上做增强,不做修改。因为这点我很钟意这个框架。