安装 Google BBR 加速VPS网络

最近总在折腾。之前在rectified买了一个年付9.6刀的128MB KVM架构的小VPS,其实它的线路本身就不错,直连国内电信和联通的洛杉矶鲨鱼机房,现在已经卖断货了。为了在这个小内存的VPS上搭建一个完美的梯子,我使用了使用Google BBR的全新内核。

预备知识

在使用Google BBR之前,我们首先要了解它是什么。了解计算机网络的人都知道,在TCP连接中,由于需要维持连接的可靠性,引入了拥塞控制和流量管理的方法。Google BBR就是谷歌公司提出的一个开源TCP拥塞控制的算法。在最新的linux 4.9及以上的内核版本中已被采用。对于该算法的分析,这里有一篇文章值得一读。在本人的网络环境(武汉电信20MB)测试下,ss不经过其它的任何的优化就能轻松的跑满带宽。(speedtest测试或fast测试)。由于Google BBR非常新,任何低于4.9的linux内核版本都需要升级到4.9及以上才能使用,故若VPS本身内核版本较低的话,只有KVM架构的VPS才能使用本教程升级内核并使用,openvz的VPS用户若内核版本较低则无法使用!

实施过程

基础方法

最简单的方法就是使用Google BBR一键安装脚本。

  1. 使用root用户登录,运行以下命令:
    1. wget –no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
    2. chmod +x bbr.sh
    3. ./bbr.sh
  2. 安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。
    重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:

    1. uname -r

查看内核版本,含有 4.9 就表示 OK 了

  1. sysctl net.ipv4.tcp_available_congestion_control

返回值一般为:
net.ipv4.tcp_available_congestion_control = bbr cubic reno

  1. sysctl net.ipv4.tcp_congestion_control

返回值一般为:
net.ipv4.tcp_congestion_control = bbr

  1. sysctl net.core.default_qdisc

返回值一般为:
net.core.default_qdisc = fq

  1. lsmod | grep bbr

返回值有 tcp_bbr 模块即说明bbr已启动。

进阶方法 推荐!

由于一键包会进行很多很多判断和处理,而其中有很多步骤可以用更高的效率手工实现。

  1. 升级内核

对于Centos用户, 请执行如下命令:

  1. yum –enablerepo=elrepo-kernel -y install kernel-ml kernel-ml-devel

对于Centos 6,执行:

  1. sed -i ‘s/^default=.*/default=0/g’ /boot/grub/grub.conf

对于Centos 7,执行:

  1. grub2-set-default 0

而对于Debian / Ubuntu系统,可以在Ubuntu Kernel上下载最新版的内核deb安装包。

对于64位系统,下载amd64的linux-image中含有generic的deb包,

对于32位系统,下载i386的linux-image中含有generic的deb包。

安装命令:

  1. dpkg -i xxxxxxxxxx.deb

安装完后执行:

  1. /usr/sbin/update-grub

升级完后请立即重启VPS reboot

  1. 启用Google BBR

写入配置文件

  1. echo “net.core.default_qdisc=fq” >> /etc/sysctl.conf
  2. echo “net.ipv4.tcp_congestion_control=bbr” >> /etc/sysctl.conf

保存配置文件

  1. sysctl -p

输入以下命令以检查是否成功

  1. sysctl net.ipv4.tcp_available_congestion_control

若返回

  1. net.ipv4.tcp_available_congestion_control = bbr cubic reno

则说明开启成功。

后记

目前,常见的加速方式有Finalspeed(tcpspeed),Kcptun,锐速等单双边加速工具。Google BBR的优势就在于,其能单边地从TCP连接的拥塞控制算法着手解决网络加速的问题,并且已经集中到内核中成为新一代的规范,没有其他对于系统性能的开销。并且,可以配合锐速,Finalspeed等使用以达到最佳的使用效果。关于Finalspeed的使用教程可参见《网络环境的科学主义现代化改造》

参考资料:

  1. 一键安装最新内核并开启 BBR 脚本
  2. #为VPS加速度# Debian/Ubuntu安装bbr教程
  3. TCP BBR Quick-Start: Building and Running TCP BBR on Google Compute Engine

泰融科技-超声工作站

每周学习第四期 (2019-01-25)

新闻

曾国藩:如果你40岁还在低谷期,做到这5个字,钱必来追你!

 

伊斯坦布尔机场群吞吐量破亿 现最大机场将关闭

机场航班转机的那些事儿

同样转机!你在机场白等几个小时,人家竟可以出机场逛嗨!差距呀

出国还在租WiFi蛋?其实国际漫游更划算

不用开通国际漫游也能在国外接打电话

全网通手机=全国际漫游?要信你可能就上当了

做了半年自由职业,我才知道这些真相

7.73亿邮件帐号密码泄漏,你的密码可能就在其中

 

 

 

数码

自媒体利器 Final Cut Pro X 10.4.5破解+Compressor 4.4.3破解

网上卖80块的PS调色插件Alien Skin Exposure免费送,教安装使用

简单十步设置Huawei Share,手机与电脑传输从此告别数据线

 

 

IT

纯JS与Electron攻破微信公众号自动登录到扫码功能

「优秀AI开源项目推荐」Sketch2Code:自动将草图转换为代码

推荐几款项目管理工具 总有一款适合你

开源的分析与可视化平台—Kibana

HTML5的五种客户端离线存储方案

2019年第一波实用油猴脚本推荐

功夫宅-又一个全栈直播写代码!油管最赚钱程序员!

为什么说 GraphQL 可以取代 REST API?

2018年度国产开源软件排行

曾被大众误认为是外国佬研发的四款软件,个个都很了不起

网络在线预约管理系统

项目任务管理系统

一个轻量级的HTTP REST API框架

ASP.NET Core 3.0:将会拥有更少的依赖

基于 Voovan 开发的通用 Restful 服务框架

DotNET Core 3.0:System.Data的变化

最新拼多多技术部面试题:幻影读+分段锁+死锁+Spring Cloud+秒杀

 

Flutter

《Flutter 实战》开源电子书

Android Studio 3.0 WIFI真机调试,开发无束缚舒适感瞬间提升!

书旗小说 Flutter 版 flutter_shuqi

Flutter 2019 产品路线图正式公布

 

 

 

JAVA

学习Spring Boot看这两个开源项目就够了!非得值得收藏的资源

大型网站分库分表的基本思想


泰融科技-超声工作站

每周学习第三期 (2019-01-18)

这里记录过去一周,我看到的值得分享的东西,每周五发布。

新闻

产品设计

IT

JAVA

flutter环境更新方法

常规更新方法:

运行:flutter upgrade,然后等待自动更新完成即可,

非常贵更新方法:

1.更新flutter代码库

找到flutter库的安装目录,运行git,同步拉取到最新的代码,

2.更新依赖

运行flutter doctor -v 自动下载更新依赖的库

Microsoft Windows [版本 10.0.17134.112]
(c) 2018 Microsoft Corporation。保留所有权利。

F:\JavaWorker\deheng\android\hemodialysis>flutter doctor -v
Checking Dart SDK version...
Downloading Dart SDK from Flutter engine 72c7a7567228cdaf8b7aa4a9e3d212ef9d4cc0ed...
Unzipping Dart SDK...
Building flutter tool...
Running pub upgrade...
Downloading package sky_engine...                            1.1s
Downloading common tools...                                  2.6s
Downloading windows-x64 tools...                             5.9s
Downloading android-arm-profile/windows-x64 tools...         1.2s
Downloading android-arm-release/windows-x64 tools...         0.8s
Downloading android-arm64-profile/windows-x64 tools...       0.9s
Downloading android-arm64-release/windows-x64 tools...       0.9s
Downloading android-x86 tools...                             4.8s
Downloading android-x64 tools...                             4.9s
Downloading android-arm tools...                             3.4s
Downloading android-arm-profile tools...                     1.8s
Downloading android-arm-release tools...                     2.2s
Downloading android-arm64 tools...                           1.9s
Downloading android-arm64-profile tools...                   1.8s
Downloading android-arm64-release tools...                   1.5s
Downloading android-arm-dynamic-profile tools...             1.9s
Downloading android-arm-dynamic-release tools...             2.8s
Downloading android-arm64-dynamic-profile tools...           2.0s
Downloading android-arm64-dynamic-release tools...           1.7s
[√] Flutter (Channel beta, v0.10.3-pre.3, on Microsoft Windows [Version 10.0.17134.112], locale zh-CN)
    • Flutter version 0.10.3-pre.3 at F:\ProgramFiles\flutter
    • Framework revision 233435c02a (42 minutes ago), 2018-11-30 10:00:27 +0800
    • Engine revision 72c7a75672
    • Dart version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)

[√] Android toolchain - develop for Android devices (Android SDK 28.0.3)
    • Android SDK at F:\ProgramFiles\android\sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • ANDROID_HOME = F:\ProgramFiles\android\sdk
    • Java binary at: F:\ProgramFiles\android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
    • All Android licenses accepted.

[√] Android Studio (version 3.2)
    • Android Studio at F:\ProgramFiles\android\Android Studio
    • Flutter plugin version 31.1.1
    • Dart plugin version 181.5656
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

[√] IntelliJ IDEA Ultimate Edition (version 2018.2)
    • IntelliJ at F:\ProgramFiles\JetBrains\IntelliJ IDEA 2018.2.4
    • Flutter plugin version 30.0.2
    • Dart plugin version 182.5124

[√] Connected device (2 available)
    • MI PAD 4  • 6074f4a0     • android-arm64 • Android 8.1.0 (API 27)
    • Che1 CL20 • f4e3fb7f933b • android-arm   • Android 4.4.4 (API 19)

• No issues found!

F:\JavaWorker\deheng\android\hemodialysis>


You need to add a widget, row, or prebuilt layout before you’ll see anything here. 🙂

Microsoft ASP.NET MVC 安全更新 MS14-059 (KB2990942)

重要! 选择下面的语言后,整个页面内容将自动更改为该语言。

选择语言:

下载DirectX End-User Runtime Web Installer
此安全更新可解决 Microsoft ASP.NET MVC 2.0、MVC 3.0、MVC 4.0、MVC 5.0 和 MVC 5.1 的安全漏洞 MS14-059 (KB2990942)
详情
统要求
支持的操作系统
Windows 7 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008 R2 SP1, Windows Server 2008 Service Pack 2, Windows Vista Service Pack 2, Windows XP Service Pack 3

权限要求: 运行可执行文件之前,必须对安装软件的计算机具有管理权限。有关其他信息,请参阅本文: 此处

软件要求:
ASP.NET MVC 2.0:
要求计算机上已安装 .NET Framework 3.5 SP1,请参阅此产品 .NET 3.5 SP1 的系统要求
ASP.NET MVC 3.0、ASP.NET MVC 4.0:
要求计算机上已安装 .NET Framework 4.0(或更高版本),请参阅此产品 .NET 4.0 的系统要求
ASP.NET MVC 5.0、ASP.NET MVC 5.1:
要求计算机上已安装 .NET Framework 4.5(或更高版本),请参阅此产品 .NET 4.5
的系统要求
安装说明
安装 Microsoft ASP.NET MVC (KB2990942) 的更新:
选择要安装的相应 ASP.NET MVC 版本(MVC 2.0、MVC 3.0、MVC 4.0、MVC 5.0 – KB2992080、MVC 5.1- KB2994397),然后单击此页面上的“下载”按钮开始下载。
或者,也可以单击“保存”将 .msi 安装程序文件下载到你的计算机。然后,导航到 .msi 文件的保存位置,双击 .msi 文件并按照安装程序中显示的说明操作
此 Microsoft ASP.NET MVC 安全更新也可以通过 Microsoft Update 自动更新。请参阅安全公告 ( MS14-059 ) 了解有关哪些用户将通过自动更新获得此项更新的详细信息

托管调试助手报错

今天在调试程序时出现下面的异常:
其他信息: CLR 无法从COM 上下文0x1a0e50 转换为COM 上下文0x1a0fc0,这种状态已持续60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送Windows 消息的情况下处理一个运行时间非常长的操作。这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积。要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。
通过代码没有找出异常,网上有人说把,调试–异常中的contextswitchDeadlock选项去掉:

按照说明去掉后确实没有此问题,但不明白出现这种情况的原因是代码处理不恰当造成的,还是说编译器有问题,期待高手的赐教。

正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。

.NET2.0中增加了42种非常强大的调试助手(MDA,Loaderlock 是其中之一。Loaderlock检测在一个拥有操作系统loader lock的线程上(如上例的video的运行线程)运行托管代码的情况。这样做有可能会引起死锁,并且有可能在操作系统加载器初始化DLL前被使用。虽然这样做很有必要,但在进行开发调试的时候,实在太麻烦

这是由于正在加载特定资源:例如换肤控件时

办法一
把vs2005菜单的 调试->异常->Managed Debuggin Assistants->LoaderLock 的选中状态去掉
如果异常(exception)这一项没有的话,在工具—自定义—命令选项卡—左边选择调试–右边把异常托到菜单里
快捷键Ctrl+Alt+E,修改Managed Debuggin Assistants->LoaderLock 的选中状态去掉
方法二
在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework下面增加一个String,值为”0″
不过这样做,在该计算机上所有基于.NET2.0开发都得不到MDA的好处

按钮扁平化用法示例-buildFlatButton

Widget buildFlatButton() {
    return Align(
      alignment: const Alignment(0.0, -0.2),
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          ButtonBar(
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              FlatButton(
                child: const Text('FLAT BUTTON', semanticsLabel: 'FLAT BUTTON 1'),
                onPressed: () {
                  // Perform some action
                },
              ),
              const FlatButton(
                child: Text('DISABLED', semanticsLabel: 'DISABLED BUTTON 3',),
                onPressed: null,
              ),
            ],
          ),
          ButtonBar(
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              FlatButton.icon(
                icon: const Icon(Icons.add_circle_outline, size: 18.0),
                label: const Text('FLAT BUTTON', semanticsLabel: 'FLAT BUTTON 2'),
                onPressed: () {
                  // Perform some action
                },
              ),
              FlatButton.icon(
                icon: const Icon(Icons.add_circle_outline, size: 18.0),
                label: const Text('DISABLED', semanticsLabel: 'DISABLED BUTTON 4'),
                onPressed: null,
              ),
            ],
          ),
        ],
      ),
    );
  }

 

 

 

 

 

  factory FlatButton.icon({
    Key key,
    @required VoidCallback onPressed,
    ValueChanged<bool> onHighlightChanged,
    ButtonTextTheme textTheme,
    Color textColor,
    Color disabledTextColor,
    Color color,
    Color disabledColor,
    Color highlightColor,
    Color splashColor,
    Brightness colorBrightness,
    EdgeInsetsGeometry padding,
    ShapeBorder shape,
    Clip clipBehavior,
    MaterialTapTargetSize materialTapTargetSize,
    @required Widget icon,
    @required Widget label,
  }) = _FlatButtonWithIcon;

 

 

 const FlatButton({
    Key key,
    @required VoidCallback onPressed,
    ValueChanged<bool> onHighlightChanged,
    ButtonTextTheme textTheme,
    Color textColor,
    Color disabledTextColor,
    Color color,
    Color disabledColor,
    Color highlightColor,
    Color splashColor,
    Brightness colorBrightness,
    EdgeInsetsGeometry padding,
    ShapeBorder shape,
    Clip clipBehavior = Clip.none,
    MaterialTapTargetSize materialTapTargetSize,
    @required Widget child,
  }) : super(
         key: key,
         onPressed: onPressed,
         onHighlightChanged: onHighlightChanged,
         textTheme: textTheme,
         textColor: textColor,
         disabledTextColor: disabledTextColor,
         color: color,
         disabledColor: disabledColor,
         highlightColor: highlightColor,
         splashColor: splashColor,
         colorBrightness: colorBrightness,
         padding: padding,
         shape: shape,
         clipBehavior: clipBehavior,
         materialTapTargetSize: materialTapTargetSize,
         child: child,
      );

 

7 of 7 in the series: Fltter移动开发相关

每周学习第二期 (2019-01-11)

新闻

向老前辈,致敬!!!
一句话新闻
  • 统计显示,美国55%的智能手机用户、全世界86%的智能手机用户,使用安卓系统。
  • GitHub 宣布,个人用户可以免费使用私有库,数量不限,该功能以前是付费使用。
  • 印度的2018年安卓应用程序排行榜里面,前10名有5个来自中国,2017年是2个;前100名有44个来自中国,2017年是18

 

 

5G 通信的频率(3300-3600MHz 和 4800-5000MHz)比 4G (1880-1900MHz、2320-2370MHz、2575-2635MHz)高很多。频率越高,覆盖能力越差,这注定很多角落收不到 5G 信号,所以需要修建更多的信号发射装置。
英国沃达丰公司的工程师提出,可以使用城市的下水道盖子,作为无线信号的发射基地。这样不会占用地面空间,外部也看不到

 

 

诺丁汉大学发明了一种微型太阳能电池,每个发电单元的长度为3毫米,宽度为1.5毫米,可以嵌入纱线,进而编织成服装,使得后者具备发电功能,而且肉眼还看不出任何差别。电池封装在树脂之中,所以纺织品可以进行洗涤,也不怕磨损。
用户穿上这种纺织品,就可以发电。该技术已经过测试,能够为手机充电。一块5厘米×5厘米大小的纺织品,可以放置多达200个发电单元,产生2.5-10伏特和高达80毫瓦的功率,如果发电单元达到2000个,就能为手机充电。

 

 

斯坦福大学的科学家将电极植入瘫痪病人的大脑皮层,接受脑电波,转为数字信号,控制无线蓝牙鼠标,操作平板电脑。参与实验的患者,可以使用常见程序(网页浏览、电子邮件、聊天、发送短信等)。
这项发明不仅对瘫痪者有用,长期来看,可能会为意念操作电脑创造可能性。

 

 

美国路易斯安娜州开始采用数字驾照。用户下载一个 App,输入自己的物理驾照的信息,然后 App 会将这些信息提交到州政府的机动车辆数据库进行验证。通过验证,App 就会生成一个二维码。
需要驾照的场合,警察就可以拿自己的手机扫描 App 的二维码,从数据库返回这个驾照的信息。

学习资料

伯克利大学最新深度学习课程资料中文版下载

关于本书

本教材是加州大学伯克利分校 2019 年春学期《 Introduction to Deep Learning 》课程教材,伯克利的CS(计算机科学)是非常强的。由于伯克利就在湾区(硅谷),所以他们的计算机大佬们即是学术精英,也是业界大拿。本课程主要由李沐老师开设,基本上涵盖了深度学习的方方面面,可以说是一门比较全的参考资料了,
链接:https://pan.baidu.com/s/1-RGOQaD6Jr5Inks476MquQ
密码:k1q8

「优秀开源AI项目推荐」vid2vid:超逼真高清视频生成

英伟达和MIT的研究团队高出一个超逼真高清视频生成AI。
只要一幅动态的语义地图,就可获得和真实世界几乎一模一样的视频。换句话说,只要把你心中的场景勾勒出来,无需实拍,电影级的视频就可以自动P出来:
这背后的vid2vid技术,是一种在生成对抗性学习框架下的新方法:精心设计的生成器和鉴别器架构,再加上时空对抗目标。
研究论文:https://tcwang0509.github.io/vid2vid/paper_vid2vid.pdf
GitHub地址:https://github.com/NVIDIA/vid2vid

数码

在,网络技术越来越发达,无线网络覆盖越来越广泛,移动网络已经不满足于我们,WiFi的使用率就越来越多,在外面想要连接WiFi,但是外面的无线网络设置了密码,怎么连接呢?这时可能我们会想到WiFi万能钥匙,并不是所有的密码都可以破解,当然也可以破解一部分吗,除了WiFi万能钥匙,小编还寻到一款比较不错的无线密码破解工具ewsa,全称为Elcomsoft Wireless Security Auditor,拥有强大的密码破解能力,该软件通过密码词典去尝试破解无线AP上的WPA和WPA2密码,一般密码由8位数的字符组成,所有你可以使用暴力破解、字典破解等常用的破解方式来破解密码,帮助你轻松获得无线WiFi的密码,蹭网轻松松松。不仅支持密码破解,它还支持WiFi信号搜索功能,比如笔记本等移动设备都可以搜索WiFi信号,然后快速进行密码破解。而且对于你经常需要用的WiFi信号源提供记录功能,下次使用可以直接进行连接,无需重新破解,非常方便。

IT

第一名 GitKraken

适用于Windows、Mac和Linux的Git 客户端。在2018年,超过100万用户,连续3年获得用户最佳!
下载地址:https://www.gitkraken.com/git-client
  1. 压轴出场:微软主打的革命性开发扩展:VS Live Share,在这个扩展的加持下,你可以和你的同事完成真正的远程实时代码协同开发,对方并不需要将整个工程clone下来,只需要连接到你开的session,你和他就可以对一个文件进行开发,修改。

抖音热门视频制作工具,都在这儿了!

一、抖音数据分析平台
1)西瓜短视频助手
监测视频热度、音乐热度、主播热度工具,网页版和微信小程序都有
2)Kolranking
收集和监测大部分头部的账号,更多的是通过API 抓取抖音视频数据,做成了榜单形式
二、去水印工具
1)水印宝、InShot (功能强大,还有自由裁剪功能)
这些软件和APP 各有优缺点,有一些是付费的功能
三、字体工具
1)尖叫字体生成工具
2)文字翻转特效制作工具:字说、美册
3)变声APP :配音变声器、VoiceChanger
四、视频剪辑和字幕添加工具
Pr(专业级软件,电脑操作,较复杂) 、Ae 、巧影、Videoleap(苹果手机)、快剪辑、爱剪辑、印象、VUE
五、抖音视频拍摄
1)录屏:录屏大师、录制屏幕视频工具

一个不收集隐私的搜索引擎duckduckgo.com

python

JAVA

Spring Boot 的 10 个核心模块

1、spring-boot
这是 Spring Boot 的主模块,也是支持其他模块的核心模块,主要包含以下几点:
1) 提供了一个启动 Spring 应用的主类,并提供了一个相当方便的静态方法,它的主要是作用是负责创建和刷新 Spring 容器的上下文;
2) 内嵌式的并可自由选择搭配的 WEB 应用容器,如:Tomcat, Jetty, Undertow等;
3) 对配置外部化的支持;
4) 提供一个很方便的 Spring 容器上下文初始化器,包括合理记录日志默认参数的支持。
2、spring-boot-autoconfigure
Spring Boot能根据类路径下的内容自动一些公共大型应用,提供的@EnableAutoConfiguration 注解就能启用 Spring 功能的自动配置。
自动配置功能可以推断用户可能需要加载哪些 Spring Bean, 如:如果类路径下有HicariCP 这个连接池的包,此时并未提供任何有效连接池的配置,那么 Spring Boot 就知道你可能需要一个连接池,并做相应配置。如果用户配置了其他连接池,那么 Spring Boot 会放弃自动配置。
3、spring-boot-starters
Starters,我们叫它启动器好了,它是包括一系列依赖的描述符。简单的说就是,它可以一站式的帮你打包 Spring 及相关技术应用,而不需要你到处找依赖和示例配置代码,它都帮你做好了。
例如,第一章我们在介绍 Spring Boot 的时候就说了 spring-boot-starter-web 这个启动器,你只要引用了这个启动器应用,就会自动配置 WEB 应用的能力。
spring-boot-starters 这个启动器这主要提供了 spring-boot, spring-context,spring-beans 这三个 Spring 模块而已。
4、spring-boot-cli
这是 Spring Boot 的命令行工具,用于编译和运行 Groovy 源程序,可以十分简单的编写并运行一个应用程序。它也能监控你的文件,一旦有变动就会自动重新编译和重新启动应用程序。
5、spring-boot-actuator
这是 Spring Boot 提供的执行端点,你可以更好的监控及和你的应用程序交互。这个模块提供了像健康端点、环境端点、Spring Bean端点等。
6、spring-boot-actuator-autoconfigure
这个原理同上,为 Spring Boot 执行端点提供自动配置。
7、spring-boot-test
Spring Boot测试模块,为应用测试提供了许多非常有用的核心功能。
8、spring-boot-test-autoconfigure
这个原理同上,为 Spring Boot 测试模块提供自动配置。
9、spring-boot-loader
这个模块可以用来构建一个单独可执行的 jar 包,使用 java -jar 就能直接运行。一般不会直接使用这个来打包,使用 Spring Boot 提供的 Maven 或者 Gradle 插件就行了。
10、spring-boot-devtools
开发者工具模块,主要为 Spring Boot 开发阶段提供一些特性,如修改了代码自动重启应用等。这个模块的功能是可选的,只限于本地开发阶段,当打成整包运行时这些功能会被禁用。

Java工具包,提高开发效率,里面应有尽有Hutoo

Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。Hutool最初是作者(Looly)项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。

包含组件

一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件

 

  • hutool-aop JDK动态代理封装,提供非IOC下的切面支持
  • hutool-bloomFilter 布隆过滤,提供一些Hash算法的布隆过滤
  • hutool-cache 缓存
  • hutool-core 核心,包括Bean操作、日期、各种Util等
  • hutool-cron 定时任务模块,提供类Crontab表达式的定时任务
  • hutool-crypto 加密解密模块
  • hutool-db JDBC封装后的数据操作,基于ActiveRecord思想
  • hutool-dfa 基于DFA模型的多关键字查找
  • hutool-extra 扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码等)
  • hutool-http 基于HttpUrlConnection的Http客户端封装
  • hutool-log 自动识别日志实现的日志门面
  • hutool-script 脚本执行封装,例如Javascript
  • hutool-setting 功能更强大的Setting配置文件和Properties封装
  • hutool-system 系统参数调用封装(JVM信息等)
  • hutool-json JSON实现
  • hutool-captcha 图片验证码实现
  • hutool-poi 针对POI中Excel的封装
<dependency>
 <groupId>cn.hutool</groupId>
 <artifactId>hutool-all</artifactId>
 <version>4.4.0</version>
</dependency>

数据库

Web服务端/前端

walle 2.0.0 正式发布,可能是春节前最良心的免费开源部署工具

教程


1、文档站点生成工具(英文)
本文以 JS 项目为例,介绍各种生成文档站点的工具。
本文总结了历史上重大的软件创新,进而提出专利制度不适合软件业,应该废除软件专利。
3、Wireguard 安装教程(英文)
介绍 Wirdguard 如何安装和配置。
fx 可以方便地在命令行操作 JSON 数据,本文是 fx 用法的教程。
作者谈了他不喜欢的8个 Python 语法。
本文较通俗地介绍了神经网络的历史发展和计算原理。
7、10年博客的经验(英文)
作者写了10年博客,介绍怎么可以通过博客取得最佳效果。
假设放大镜可以无限大,能够聚焦月光以点火吗?答案是不能。
一个软件工程师介绍自己安装的 iOS 软件。

资源


 

 

该网站提供美国的好奇号火星车拍摄的多张火星全景照片,各种不同的地貌,可以360度旋转观看。
《Rust 编程语言》的 EPUB 版本下载,可以从这本书开始学习 Rust 语言。
字体搜索引擎。
该网站是数学知识科普,覆盖了代数,几何,统计,微积分等领域。有一个爱好者翻译的中文镜像。(@rolitter 投稿)
介绍如何搭建 OAuth 服务的电子书。
Linux 命令的搜索入口,提供中文解释。(@jaywcjlove__ __投稿)
7、Awesome Mac(中文版)
收入各种好用的 Mac 软件。(@jaywcjlove 投稿)、

工具


1、WBO
一个多人实时分享的在线白板。

 

 

国人开发的 MacOS 视频播放器,特点是点击文本字幕,会显示英语单词的中文解释,英语学习者的小帮手。

 

 

一个生成网页互动表格的 JS 库,提供很多功能。
各种云服务之间转移文件的命令行工具。

 

 

jerverless 是一个 Web 服务器,可以将任何语言的程序转为 Serverless 函数,从网络调用。它会把源程序放在 Docker 容器里面运行,然后提供 Web 接口与用户通信。
这个库可以根据击打键盘的声音,分析用户的输入内容。
7、fx
命令行 JSON 数据的浏览工具。
一种将 HTML 转成 JSON 格式的规范标准。
Puppeteer 现在不仅封装 Chrome,还开始封装 Firefox 了,API 完全一样。以后,浏览器自动化可能只用它就可以了,其他库都要被干掉了。
基于 vue + elementUI 构建的网站管理后台脚手架。(@umi-soft__ __投稿)
一款 Hexo 的主题,提供更好的用户体验和更清爽的UI设计。(@dongyuanxin 投稿)

文摘


英国科幻小说家亚瑟.C.克拉克,提出了三个定律。
克拉克的第一定律:“如果一位杰出的老科学家表示,某些事情是可能的,那么他几乎肯定是对的。如果他说某事是不可能的,他很可能是错的。”
克拉克还补充说,上面定律里面“老人”的定义,取决于他所在的学科。“物理学、数学和航天科技中,超过三十岁的人就是老人;其他学科中,老人有时会推迟到四十岁。当然也有一些了不起的例外,但是每个刚刚大学毕业的研究人员都知道,超过五十岁的科学家只能去参加会议,其他什么也干不了,而且他本人也应该有自知之明,绝不要让自己去碰实验室的工作。”
克拉克的第二定律:“发现极限的唯一方法,就是尝试一些不可能的事情。”
克拉克的第三定律:“任何足够先进的技术都像魔术一样。”
20世纪50年代开始,鸡肉消费量大幅增长,成了人类最多消费的肉类来源。如今,全世界一共存在210亿只鸡。
为了适应对鸡肉的需求,人类逐步改变了鸡这个物种,使得当代肉鸡与原始的野生鸡差异越来越大。
肉鸡的腿部和胸部肌肉,生长得特别快,而内脏(包括心脏和肝脏)则比野生鸡小。这意味着,肉鸡根本没法在野外生存,而且较多的鸡肉和较小的器官也限制了肉鸡的寿命。
科学家认为,肉鸡实际上是人工设计的物种,使其适合人类的食物消费,让它成为地球上数量最多的陆生脊椎动物。

 

 

声音是一种波,人耳能够听到的频率范围在 20Hz – 20kHz 之间。
为了将音频变成数字信号,需要对音频进行抽样。每秒之内的抽样次数越多,就能越好地还原声音。CD 质量的音频就是每秒进行抽样44100次,也就是 44.1kHz。由于至少两次抽样才能确定一个波峰或波谷,所以 44.1kHz 的抽样频率,最高可以记录 22kHz 频率的声音。
抽样频率越高,所能记录的声音频率也就越高。但是,人耳最高只能听到 20kHz 频率的声音,所以抽样频率太高,意义不大。另一方面,抽样频率太低,高频声音无法记录到,会影响音质。比如,电话质量的声音,抽样频率是 8KHz,因此记录不到 4kHz 以上的声音。
CD 质量的音频在抽样以后,使用16个二进制位保存每一次抽样结果。所以,每秒的数据量是 16位 x 44,100 x 2个立体声声道 = 1411.2kbps,即 176.4KB,保存成 wav 文件,一分钟就是10.1MB。
wav 文件体积太大,一首歌有几十MB,因此人们就发明了音频压缩技术,缩小音频文件的体积。“无损”的音频压缩(比如 FLAC、ALAC、MP3 HD 格式),跟普通的文件压缩技术并无太大不同。为了达到更好的压缩效果,一般都是使用“有损”的音频压缩(比如 MP3、AAC、WMA、Ogg Vorbis 格式)。它的原理是,随着年龄增长,中年人会逐渐听不到 16kHZ 以上的声音,所以这部分信号可以抛弃掉。
MP3 格式可以把每秒钟的数据量压缩到 128kbps(即 16KB),一分钟只有 960KB,比起 wav 格式小了90%多。

本周图片


 

 

Pepper 是一只1970年出生在实验室的大猩猩,她一直被用于医学研究,曾经307次被麻醉枪击倒,36次肝脏活检,1次开放式肝脏活组织检查,6次宫颈活检,10次淋巴结活检和4次骨髓活检,还被接种了艾滋病病毒。由于恐惧和焦虑,她在实验室生活的后期曾经拒绝饮食,宁愿饿死。
从出生开始,她一直住在一个 5米 x 5米 x 7米 的笼子,从未离开过。这样生活了27年以后,1997年,经过动物保护组织的争取,实验室同意将她移交给动物保护组织,她被转移到佛罗里达州一个专门收留实验猩猩的场所。上面的照片摄于2002年。他死于2012年,一共活了42岁。
像这样专门用于实验的大猩猩,在美国共有几百只。美国国立卫生研究院已经宣布,将退出其中的大部分。
2、珍珠宫(组图)

 

 

珍珠宫是上个世纪70年代,伊朗革命爆发之前,美国建筑师为伊朗国王的妹妹设计的住所,具有未来主义风格,如今已成废墟。本文是珍珠宫的介绍 + 照片。上图是整个建筑的模型,下图是室内游泳池。

 

 

2014年,人工智能已经可以生成人脸,但你可以很容易看出哪几张是机器生成的。下图都是那时人工智能生成的人脸。

 

 

2018年,AI 生成的人脸,就不太容易跟真实的人脸区分了。

 

 

本周金句


1、一个敢于浪费一小时生命的人并没有发现生命的价值。
— 查尔斯·达尔文
2、创建一个手机操作系统有多难?
2014年,六个移动操作系统企图替代 iOS 和 android:Blackberry OS,Sailfish,Ubuntu Mobile,Firefox OS,Tizen 和 Windows Phone,现在它们都死了或不再有这种可能。
3、如果你不懂 p 值这样的概念,然后企图在3-4个月内完成机器学习的课程,能够使用 R 和 Python 编写代码。这意味着,你可以成为一名营销分析师,并能处理一些数字,仅此而已。
4、一家公司想装修办公室地板,结果发现下面是蜿蜒曲折的通信电缆。如果彻底装修,必须更换并重新连接电缆。他们这样做了吗?没有,当他们看到复杂的电缆后,就没有碰任何东西,只是小心地更换了地板。谁知道每根电缆的作用和连接方式?最好保持原样。

1 of 3 in the series: 分享每一周

免费作图工具

本页收集一些免费的工具,创建漂亮的图表。

ProcessOn

在线版:https://www.processon.com/

yEd

桌面版:https://www.yworks.com/products/yed

在线版:https://www.yworks.com/products/yed-live

Pencil

桌面版:https://pencil.evolus.vn/

Dia

桌面版:http://dia-installer.de/

Inkscape

网址:https://inkscape.org/

Draw.io

在线版:https://www.draw.io/

桌面版:https://about.draw.io/integrations/#integrations_offline

Whimsical

在线版:https://whimsical.co/

PlantUML

在线版:http://www.plantuml.com/plantuml/

迅捷画图

在线版:https://www.liuchengtu.com/

百度脑图

在线版:http://naotu.baidu.com/

Visual Paradigm Online

在线版:https://online.visual-paradigm.com

Creately

在线版:https://creately.com/

Coggle

在线版:https://coggle.it

3 of 7 in the series: Fltter移动开发相关