This_Wei

Come on!

概述

这篇文章介绍了一个开源功能强大的命令行网络工具 curl,curl 功能丰富,用法简单,被广泛用于命令行、终端的网络请求场景中。这篇文件简要介绍了 curl 的功能和使用方法。

curl 是什么

curl 是一个命令行工具,利用 URL 语法在命令行中完成数据传输的工具,支持文件上传和下载。

官网:https://curl.se/

源码:https://github.com/curl/curl

curl 支持的协议(参考官网介绍):

协议 详情
Protocol DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS, WSS
Proxies SOCKS4, SOCKS5, HTTP, HTTPS (HTTP/1 and HTTP/2), tunneling, via unix domain sockets, haproxy, SOCKS+HTTP proxy chain
HTTP GET, POST, PUT, HEAD, multipart formpost, HTTP/0.9, HTTP/1.0, HTTP/1.1, HTTP/2 (h2c, h2, prior knowledge), HTTP/3 (dual connect h1/h2 + h3 or h3-only), HSTS, Alt-Svc, cookies, PSL, etags, transfer compression, ranges, custom headers, custom method, follow redirects
FTP IPv6 (EPRT, EPSV), STLS, upload/download, append, range, passive/active, kerberos, directory listing, custom commands
SCP + SFTP known hosts, md5/sha256 fingerprint, compression, upload/download, directory listing
TLS 1.0 - 1.3, mutual authentication, STARTTLS, OCSP stapling, ECH, False Start, key pinning, PQC ready, session resumption, early data, export/import sessions
QUIC 0RTT handshakes
Auth Basic, Plain, Digest, CRAM-MD5, SCRAM-SHA, NTLM, Negotiate, Kerberos, Bearer tokens, AWS Sigv4, SASL, .netrc
HTTP compression gzip, brotli and zstd
Name resolving DNS-over-HTTPS, custom address for host, name+port redirect, custom DNS servers, DNS caching, HTTPS RR
Connection connection reuse, Interface binding, Happy Eyeballs, IPv4/IPv6-only, unix domain sockets, TCP keepalive, TCP Fast Open, TCP Nodelay, MPTCP, VLAN priority, IP Type Of Service
Transfers transfer rate limiting, request rate limiting, stall detection, retries, timeouts
URLs Unlimited amount, parallel and serial transfers, globbing
Output IDN hostnames, custom info from transfer, metadata as JSON, per content-disposition, libcurl source code, bold headers
阅读全文 »

概述

这篇文章介绍如何在服务器上使用docker搭建jenkins,并使用jenkins自动从github仓库拉取自己 Hexo 博客的源代码,完成项目构建与部署,使用nginx对外提供博客访问服务。

认识 jenkins

Jenkins 是一个开源的自动化构建、部署工具,支持数百款插件扩展,支持各种自动化业务场景。Jenkins使用 java 开发,支持使用jar包部署或docker部署。

Jenkins 官网:https://www.jenkins.io/

阅读全文 »

概述

ESP8266 作为远程控制器,接入 Home Assistant,实现从 Home Assistant 远程控制开关 LED 灯。这篇文章介绍了使用 ESPHome 从配置文件生成 ESP8266 固件,然后使用乐鑫官方提供的烧录工具烧录固件到板卡,最后将ESP8266 接入到 Home Assistant 进行开关灯控制。

远程控制原理

在局域网中搭建 Home Assistant 和 ESPHome 服务,ESP8266 设备烧录固件后通过 wifi 接入网络,自动识别添加到 Home Assistant。

阅读全文 »

概述

这篇文章介绍了 tcp 协议的含义、特点与使用场景,以 java 语言实现了 tcp 服务端与客户端,并进行通信。

什么是 tcp

传输控制协议(Transmission Control Protocol,缩写 TCP),是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP协议基于 IP 协议实现。与用户数据报协议(User Datagram Protocol,简称 UDP)一起作为传输层的两个重要协议。

五层网络模型 协议
应用层 HTTP、FTP、TELNET、SSH、SNMP、DNS、SMTP、POP3、RPC…
传输层 TCP、UDP、TLS/SSL、PPTP、RSVP…
网络层 IP(v4,v6)、ICMP(v6)、IGMP、RARP、IS-IS…
链路层 Wi-Fi(IEEE 802.11)、ARP、以太网、GPRS、PPP…
物理层 以太网、调制解调器、电力线通信、光导纤维、双绞线…
阅读全文 »

概述

本文介绍了 Rust 中的结构体(struct)与枚举(enum),内容包含结构体的定义、实例化、使用与示例,枚举的定义与使用。

结构体和枚举

结构体是一种允许用户自行定义的数据类型,可将多种类型的数据打包成有意义的组合,并给每个数据命名。与 C 语言中的结构体不同,Rust 中可以为结构体和枚举声明方法。

枚举是一种允许用户列举所有可能类型的数据类型,Rust 中枚举允许携带数据,每个枚举变体可以携带不同类型、不同数量的数据。

阅读全文 »

概述

这篇文章介绍了将 Hexo 静态博客部署到云服务器的方法,内容涉及到域名解析、云服务器配置、nginx安装与配置、https证书申请与配置。

原理其实很简单

Hexo 博客编译后会得到一些静态的前端页面和文件,将它们放到服务器上,并启动一个 nginx 作为 web 服务器,就可以访问了。

如果想让访问更加友好,那就申请一个域名,将域名解析到服务器,就可以通过域名访问了。

如果想让博客访问更安全,就申请一个免费的 https 证书,改一下 nginx 配置就行了。

阅读全文 »

概述

这篇文件介绍了 Rust 中最核心,也是最特别的一个概念:所有权(ownership),想学好 Rust 就必须充分的理解所有权。所有权让 Rust 在无需垃圾回收机制就可以保证内存安全,而且在其他编程中从未有过所有权的概念,因此从其他编程语言转来学 Rust 时会感觉难以理解。

什么是所有权

所有权是 Rust 的核心特性,Rust 中使用所有权系统来管理内存使用,它让 Rust 无需 GC (垃圾回收)就可以保证内存安全。所有权机制不像 java、C# 使用垃圾回收器管理内存,也不像 C/C++ 语言一样需要程序员显式的申请与释放内存。

所有权系统让 Rust 在编译时就可以完成内存使用的检查,因而程序在运行时就不会产生任何额外开销,这样既保证了内存安全,又提升了运行速度。真是妙啊!

阅读全文 »

概述

这篇文章介绍了 Rust 语言的基础语法规则,学会了这些语法内容,就可以使用 Rust 编写简单的程序了,文章内容包括 Rust 中最基础的程序结构、注释、基础数据类型、变量定义、函数定义、分支与循环结构。

一个简单的 Rust 程序代码

1
2
3
4
5
6
7
fn main() { 
// 定义变量
let mut name = "C/C++";
println!("Hello, {}!", name); // 打印输出
name = "Rust"; // 修改变量值
println!("Hello, {}!", name);
}
阅读全文 »

概要

这篇文章介绍了 cron 的含义、cron 表达式语法和应用场景。

什么是 cron

cron 读作 “克龙”,是一种时间单位,1cron 等于百万年。在计算机世界中,cron 被用作定时任务,即在指定时间、周期自动执行预置的任务。cron 表达式广泛用于各种定时任务、调度服务。

阅读全文 »

概述

Rust 是一门系统编程语言,在 Stack Overflow 的年度开发者调查中,多年获得 “最喜爱的编程语言” 奖项;Rust 已被 Google、亚马逊、微软、华为、百度、阿里等大厂使用。本文介绍了 Rust 语言的基础特性、优缺点、适用场景,介绍了Rust的使用,包括安装Rust、创建基础体验代码以及代码编译执行,介绍了Rust的开发工具及配置方法。此外,还介绍了一些优秀的 Rust 开源项目和 Rust 学习项目与资料。

关于Rust

官网: https://www.rust-lang.org/

Rust 是一门赋予每个人构建可靠且高效软件能力的语言。

Rust 语言是 2009 年由 Graydon Hoare 设计,由 Mozilla 实验室资助和完善,现已成为 Mozilla 官方项目。Rust 最大的特点是安全可靠、运行速度快,可作为 C/C++ 的替代语言,相比 C/C++,Rust 和它们具有相同的运行速度,却可以避免 C/C++ 中很多常见的 bug,比如悬垂指针问题、内存泄漏问题。Rust 语言的应用场景包括:系统级编程、嵌入式开发、并发编程、高性能WEB服务、跨平台开发、数据处理和机器学习等。

阅读全文 »
0%