13541 字
68 分钟
技术笔记与实用工具汇总

window自动执行脚本#

start.bat

Terminal window
@echo off
start "" "D:\Soft\Clash Verge\clash-verge.exe"
timeout /t 10
start "" "D:\Soft\SunloginClient\SunloginClient.exe"
timeout /t 8
start "" "D:\Soft\RustDesk\rustdesk.exe" --install-service -wait -Verbose
taskkill /f /im cmd.exe
exit

放在启动文件夹:按下 Win + R打开运行对话框,输入 shell:startup并回车,这会打开当前用户的启动文件夹。

Github release的各种类型文件#

版本名称代表软件包内二进制文件使用的指令集

universal 是通用包,您看到的所有版本的二进制文件都包含在其中,几乎支持所有处理器架构的机器,但相应的安装包比较大

armeabiv-v7a: 第7代及以上的 ARM 处理器。是较为古老的手机处理器,以及Wear OS手表常用的指令集,向上兼容arm64

【现在手机这个】arm64-v8a: 第8代、64位ARM处理器,是除少数低端机外,大多数现代智能手机所使用的指令集,使用这个安装即可

armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。

x86: 平板、模拟器用得比较多。x86 向上兼容x86_64,现在很少32位设备了,很少用

x86_64: 64位的平板。常在桌面平台上使用,其中部分ChromeBook和桌面计算机上使用此指令集

tv指的是Android TV,国内几乎没有,暂且放下

各编程语言代码折叠#

LanguageRegion startRegion end
Bat::#region [name] or REM #region [name]::#endregion or REM #endregion
C##region [name]#endregion
C/C++#pragma region [name]#pragma endregion
CSS / Less / SCSS/*#region [name]*//*#endregion*/
Coffeescript#region [name]#endregion
F#//#region [name] or (#region [name])//#endregion or (#endregion)
Go//#region [name]//#endregion
HTML / XML<!-- #region [name] --><!-- #endregion -->
Java//#region [name]//#endregion
Markdown<!-- #region [name] --><!-- #endregion -->
Perl5#region [name]#endregion
PHP#region [name]#endregion
PowerShell#region [name]#endregion
Python#region [name] or # region [name]#endregion or # endregion
Shellscript#region [name] or # region [name]#endregion or # endregion
TypeScript / JavaScript//#region [name]//#endregion
Visual Basic#Region [name]#End Region
Yaml#region [name] or # region [name]#endregion or # endregion

端口占用#

在Windows上关闭占用端口的进程#

  1. 打开命令提示符(CMD)或 PowerShell。

  2. 使用以下命令查找占用指定端口的进程ID(PID):

    Terminal window
    netstat -ano | findstr :<port_number>

    <port_number>替换为要查找的端口号。

    例如,要查找占用端口号为3306的进程,可运行以下命令:

    Terminal window
    netstat -ano | findstr :3306

    如果被占用,会有PID和端口号被占用的情况被查询到,这将显示占用该端口的进程的相关信息,包括进程ID(PID)——最后一列。

    20201016102629299
  3. 记下显示的进程ID(PID)。查询PID为15904的进程:

    tasklist | findstr 15904
    或者我们直接查看对应的进程:
    tasklist |findstr 进程名称
    20201016102801365
  4. 选择杀死进程的方式:taskkill /f /t /im + "PID or process name"

    taskkill /f /t /im 15904
    taskkill /f /t /im java.exe

    4.1一般通过PID终止占用指定端口的进程:

    Terminal window
    taskkill /F /PID <pid>

    <pid>替换为要终止的进程ID(PID)。

    例如,如果占用端口3306的进程ID为1234,可以运行以下命令:

    Terminal window
    taskkill /F /PID 1234

    这将强制终止该进程。

    4.2或者:

    taskkill /f /t /im “java.exe”

请注意,使用taskkill命令终止进程是一种强制操作,可能会导致数据丢失或其他不可预知的问题。在终止进程之前,请确保您了解该进程的用途,并确保没有重要的数据正在进行处理。

此外,如果您有管理员权限,也可以使用图形界面的任务管理器来终止进程。打开任务管理器,切换到”详细信息”选项卡,找到相应的进程,右键单击并选择”结束任务”。

请谨慎操作,并确保只终止您了解的进程,以避免可能的系统问题。

目录#

1.Windows#

root/根目录:

image-20220709184629141

home/主页/注目录:

C:\Users\Sage

2.Linux(Ubuntu22.04LTS)#

root/根目录:

/

截图 2022-07-09 18-54-40

主目录/用户文件夹(视频、文档、音乐、下载桌面文件夹都在这里,以及默认Ctrl+Alt+T快捷键打开的命令行窗口都是这个内置):

/home/sage/

截图 2022-07-09 18-56-01

image-20220620194618297

环境变量#

用户变量和系统变量。用户变量只有当前用户可以用,一般都是添加系统变量。其中最主要的是添加修改系统环境变量的Path变量的值。在系统Path变量中添加exe文件所在文件夹路径,即可在cmd中直接输入执行。例如C:\Python311\python.exe在Path中添加C:\Python311\,即可在cmd命令行中输入python启动该exe文件。如果输入命令弹出的是应用商店,那说明在系统设置的应用执行别名【直接搜索【管理应用执行别名】关闭下面两个按钮【应用安装程序】就可以】里面有设置对应的命令启动对应的程序,只要找到对应命令关掉即可。因为powershell不会和系统深度绑定,所以不受这个限制不会跳转。

在Windows操作系统中,环境变量是一种用于存储系统范围内配置信息的机制。它们是一组键值对,其中每个键都对应一个值。这些键值对用于定义操作系统和应用程序的行为。

环境变量可以包含各种类型的信息,例如路径、系统文件位置、临时文件位置、默认应用程序等。通过设置环境变量,可以方便地配置系统和应用程序的行为,而无需修改源代码或重新编译应用程序。

在Windows中,有两种类型的环境变量:用户级别的环境变量和系统级别的环境变量。

  • 用户级别的环境变量只适用于当前用户。每个用户都可以设置自己的环境变量,这些变量只对该用户的会话有效。
  • 系统级别的环境变量适用于整个系统。这些变量对所有用户和应用程序都可见,它们在系统启动时就会加载。

可以通过操作系统提供的界面来管理环境变量,例如在Windows中,可以使用“系统属性”对话框或命令行工具(如setx命令)来添加、修改或删除环境变量。

应用程序可以使用环境变量来获取配置信息,例如读取某个路径、访问系统资源或执行特定的操作。通过使用环境变量,可以使应用程序更加灵活和可配置,同时也方便了系统管理员和用户对系统行为进行自定义。

以下是一些常见的系统变量及其含义:

  1. PATHPATH变量定义了系统在命令行中搜索可执行文件的路径。当在命令行中输入一个命令时,系统会按照PATH变量中指定的路径顺序搜索可执行文件。通过在PATH中添加自定义路径,可以让系统在任何位置找到需要的可执行文件。

  2. TEMPTMP:这两个变量定义了系统和应用程序使用的临时文件的存储位置。当应用程序需要创建临时文件时,它们会使用TEMPTMP变量指定的路径。通常,这些变量指向一个临时文件夹,用于存储临时数据,如下载的文件、缓存文件等。

  3. USERNAMEUSERNAME变量存储当前登录用户的用户名。它可以被应用程序使用来获取当前用户的信息,例如在日志文件中记录用户名或根据用户进行个性化设置。

  4. OSOS变量存储当前操作系统的名称。它可以被应用程序使用来确定正在运行的操作系统类型,从而执行特定的操作或加载适当的库文件。

  5. COMPUTERNAMECOMPUTERNAME变量存储计算机的名称。它可以被应用程序使用来标识计算机,进行网络通信或执行与计算机相关的操作。

image-20231119142540605

image-20231119142854703

npm 和 pip 介绍#

相信大家应该经常看到 npm 和 pip 两个术语,我也经常看到,pip 经常用,但是 npm 只是眼熟,没仔细了解过,今天了解 typescript 的时候又看到了,所以特地对比了一下 pip 和 npm 两个,查阅相关资料和博客后,发现 npm 和 pip 简直出奇的像,功能非常类似,都是负责各自领域的工具包的安装和下载,只不过 npm 服务于 Node.js,pip 服务于 Python。甚至可以共用一套相同的文字介绍框架,仅仅是替换了少数术语名词。

pip#

pip,全称是:package installer for Python,它是一个现代的,通用的 Python 包管理工具,是 easy_install 的替代品。提供了对 Python 包的查找、下载、安装、卸载的功能。只要有人把某个代码模块打包放在一个叫做 PiPI 的地方,其他人就可以从这个 PiPI 中下载安装包。只要包存在于 PiPI,都能使用 pip 命令来安装下载。

如果不指定下载源,默认从官方的 PyPI 下载,也可以通过指定下载源来让 pip 从指定的 pypi 找包然后安装,比如有些公司可能有自己的源,如果想下载公司内部的工具包,就得在使用 pip 命令时加上源参数。

PyPI,全称是:Python Package Index,它是Python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到 PyPI。

Python 内置了 pip,Python 使用 pip 来安装包。pip 运行在 Python 上。

npm#

npm 全称是 Node Package(包) Manager(管理器),连起来就是 Node.js 的包管理器,提供了对 Node.js 包的查找、下载、安装、卸载的功能。只要有人把某个代码模块打包放在一个叫做「npm Registry」的地方,其他人就可以从这个「npm Registry」中下载安装包,只要包存在于「npm registry」,都能使用 npm 命令来安装下载。

如果不指定下载源,默认从官方的 「npm Registry」下载,也可以通过指定下载源来让 npm 从指定的 Registry 找包然后安装,比如有些公司可能有自己的源,如果想下载公司内部的工具包,就得在使用 npm 命令时加上源参数。

Node.js 内置了 npm,Node.js 使用 npm 来安装 module 包,npm 是用 Javascript 写的,运行在 Node.js 上。

Python解释器安装及使用#

安装文件结构#

查看 Python 解释器的位置(安装python默认会安装pip,python的位置就相当于pip的位置):

Terminal window
python -c "import sys; print(sys.executable)"
C:\
└── Python311
├── DLLs
├── Doc
├── include
├── Lib
│ ├── site-packages #用于存放第三方库(包括通过 pip install 安装的库)的地方。
│ └── ... # 其他 Python 库和模块
├── Scripts
│ ├── activate
│ ├── pip.exe
│ └── ... # 其他脚本和可执行文件
├── tcl
├── python.exe
└── ... # 其他 Python 相关文件和目录

验证是否安装成功#

1.验证python解释器

验证:命令行输入python会显示对应信息则证明安装成功

image-20231119153507879

2.验证pip

验证:命令行输入pip会显示对应信息则证明安装成功

image-20231119150057756

使用虚拟环境进行安装#

以下是在 Windows 系统上使用虚拟环境安装 MkDocs 的具体步骤:

  1. 创建虚拟环境: 打开命令提示符(Command Prompt)或 PowerShell,进入到你希望创建虚拟环境的目录【在哪里使用这个命令就会在哪里新建这个虚拟环境文件夹】,并运行以下命令:

    Terminal window
    python -m venv myenv
    或者直接
    C:\Python311\Scripts\python.exe -m venv myenv

    这将在当前目录下创建一个名为 myenv 的虚拟环境。确保 C:\Python311\Scripts\python.exe 是你 Python 3.11 版本的解释器路径。

  2. 激活虚拟环境:【只有激活后才可以正常使用pip和python命令】 在命令提示符或 PowerShell 中运行以下命令激活虚拟环境:

    • 在 Command Prompt 中:

      Terminal window
      myenv\Scripts\activate
    • 在 PowerShell 中:

      Terminal window
      .\myenv\Scripts\Activate

    你会在命令行前面看到虚拟环境名称,表示已成功激活虚拟环境。

  3. 安装 MkDocs: 在激活的虚拟环境中运行以下命令来安装 MkDocs:

    Terminal window
    pip install mkdocs

    这将会安装 MkDocs 及其所有依赖项到虚拟环境的 site-packages 目录中。

  4. 验证安装: 确保安装成功,你可以运行以下命令来检查 MkDocs 版本:

    Terminal window
    mkdocs --version

    如果一切顺利,你应该看到 MkDocs 的版本信息。

现在,你已经在虚拟环境中成功安装了 MkDocs。你可以在虚拟环境中使用 MkDocs 命令行工具进行文档的创建和管理。

删除虚拟环境#

删除只需要确保退出当前虚拟环境使其处于非激活状态后,直接删除对应文件夹即可。

你可以使用以下步骤来删除虚拟环境:

  1. 确保虚拟环境处于非激活状态: 在命令提示符或 PowerShell 中,确保你已退出当前虚拟环境。如果虚拟环境仍处于激活状态,可以运行以下命令退出:

    • 在 Command Prompt 中:

      Terminal window
      myenv\Scripts\deactivate
    • 在 PowerShell 中:

      Terminal window
      .\myenv\Scripts\Deactivate
  2. 删除虚拟环境文件夹: 使用文件资源管理器或命令行,删除虚拟环境文件夹。例如,在命令行中,你可以运行以下命令:

    Terminal window
    rmdir /s /q myenv

    这将删除 myenv 文件夹及其所有内容。

    rmdir 是用于删除目录的命令,而 /s/qrmdir 命令的选项。

    • /s 选项表示删除目录时,也要删除其所有子目录和文件。
    • /q 选项表示删除目录时,不要询问确认。

    因此,rmdir /s /q myenv 的含义是在命令行中强制删除名为 myenv 的目录及其所有子目录和文件,而不进行任何确认提示。

    请小心使用这个命令,因为一旦执行,目录及其内容将不可恢复地被删除。确保你不再需要这个虚拟环境,并备份重要数据(如果有的话)之后再执行删除操作。

在任何路径下都可以激活进入虚拟环境吗?还是只能在虚拟环境目录下#

在任何路径下都可以激活虚拟环境,只要你知道虚拟环境的路径并运行正确的激活命令。——我觉得还不如直接在该目录下面使用

在 Windows 上,使用 Command Prompt 或 PowerShell:

Terminal window
C:\Path\To\Your\Virtualenv\Scripts\activate

在 Unix/Linux 系统上,使用终端:

Terminal window
source /path/to/your/virtualenv/bin/activate

这样,在命令提示符或终端中,你会看到虚拟环境名称出现在命令行前面,表示你已经成功激活了虚拟环境。这使得你可以在任何路径下使用虚拟环境中的 Python 解释器和安装的包。

一旦虚拟环境被激活,你可以运行相关的 Python 脚本、安装依赖项等,而这些操作将会在虚拟环境中进行。

pip#

pip install会直接安装在当前目录下面吗?#

不,pip install 不会直接安装在当前目录下。默认情况下,pip install 会将包安装到系统级别的 Python 环境中,除非你在虚拟环境中运行该命令。

如果你希望在当前目录下安装包,可以使用 -t--target 选项,指定安装目录。例如:

Terminal window
pip install package_name -t .

上述命令会将 package_name 安装到当前目录。在这种情况下,你需要确保当前目录对于写入操作是可用的,因为安装会在当前目录下创建一个名为 package_name 的文件夹,并将包安装到其中。

请注意,这种做法可能会导致包与其他文件混杂在一起,因此在实际项目中,通常更推荐使用虚拟环境来隔离项目的依赖关系。

World-机场/VPN#

代理教程在线文档#

所有教程:https://help.happynothings031.xyz/

clash中文网:https://clashcn.com/clash

代理协议类型/代理方式#

一次搞懂Xray/V2ray/Trojan/Trojan-go/SSR/SS的区别

HTTP/HTTPS代理:#

Http#

基于Http协议的代理,主要用于处理Http流量,对于Https等其他类型的流量不具备透明性,需要进行特殊配置。

优势:

  1. 广泛支持: Http代理是最常见的代理类型,几乎所有的网络应用和浏览器都支持它。
  2. 缓存: Http代理可以缓存请求的内容,提高响应速度,减轻服务器负担。
  3. 支持身份验证: Http代理可以通过基本身份验证或其他手段进行身份验证,提高安全性。

劣势:

  1. 只支持Http/Https: Http代理主要用于Http和Https流量,对于其他类型的流量支持较差。
  2. 通信不加密: Http代理在传输数据时是明文的,容易被中间人窃听。

HTTPS#

基于Http协议,但支持加密的SSL/TLS协议,用于处理加密的Https流量,适用于需要处理加密通信的场景,如安全访问网站等。

优势:

  1. 加密通信: Https代理通过SSL/TLS加密通信,提供更高级别的安全性,适用于需要保护敏感信息的场景。
  2. 身份验证: Https代理同样支持身份验证,增强了访问控制和安全性。

劣势:

  1. 性能开销: 由于加密和解密的过程,Https代理可能会引入一些性能开销。
  2. 仅适用于Https: Https代理只能处理Https流量,对于其他类型的流量需要其他代理类型的支持。

总体而言,Http代理主要用于处理Http流量,Https代理用于处理加密的Https流量,而Socks5代理是一种通用性较强的代理,支持多种协议。选择适当的代理类型取决于具体的使用场景和需求。例如:如果需要处理多种协议的通信,且不仅限于Http和Https,那么使用Socks5代理可能是更好的选择。如果只涉及到简单的网页浏览,Http代理可能足够。如果需要处理安全的加密通信,就需要使用Https代理。

Socks5#

基于Socks协议的代理,第五个版本是最新版本,常简称为Socks5,适用于各种类型的网络通信,包括但不限于Http和Https。

SOCKS代理:只是单纯的传递数据包,不关心具体协议和用法,所以速度快很多,一般有缓存功能,端口号一般为1080.SOCKS代理协议又分为SOCKS4和SOCKS5,前者只支持TCP,后者支持TCP和USP,还支持各种身份验证和服务器域名解析等。SOCK4包含于SOCK5。

劣势:

  1. 不提供加密: Socks5本身不提供加密功能,因此在需要保护数据隐私的场景下,可能需要额外的加密手段,例如使用TLS/SSL。

  2. 不具备身份验证机制: Socks5协议没有内置的身份验证机制,这可能导致安全性的一些问题,尤其是在公共网络上使用时。

SSL/TLS加密:

SS(ShadowSocks)/SSR(ShadowSocksR)#

ShadowSocks是一种基于Socks5代理方式的加密传输协议。最早被个人开发的科学上网梯子协议。

ShadowSocksR俗称 酸酸乳,小飞机。在Shadowsocks的基础上增加了一些数据混淆方式,修复了部分安全问题并提高QoS优先级。

image-20240222200406042

目前由于中国运营商已有能检测这两种流量的技术,所以使用SS/SSR的人已经比较少了。

VMess#

是V2Ray 专用的加密传输协议,它分为入站和出站两部分,通常作为 V2Ray 客户端和服务器之间的桥梁。因为增加了混淆和加密,据说比 Shadowsocks 更安全。底层基于 TCP 的协议,所有数据使用 TCP 传输。现在的机场支持 V2Ray,一般是指支持 VMess 协议。VMess 依赖于系统时间,请确保使用 V2Ray 的系统 UTC 时间误差在 90 秒之内,时区无关。在 Linux 系统中可以安装ntp服务来自动同步系统时间。

V2ray核心和Project V项目#

V2Ray 是在Shadowsocks 被封杀之后,为了表示抗议而开发的,属于后起之秀,功能更加强大,为抗GFW封锁而生。V2Ray 现在已经是 Project V 项目的核心工具,而 Project V 是一个平台,其中也包括支持 Shadowsocks 协议。由于 V2Ray 早于 Project V 项目,而且名声更大,所以我们习惯称 Project V 项目为 V2Ray,所以我们平时所说的 V2Ray 其实就是 Project V 这个平台,也就是一个工具集。其中,只有 VMess协议是V2Ray社区原创的专属加密通讯协议,被广泛应用于梯子软件。

V2Ray目前支持以下协议(截止到2019年12月):

  • Blackhole:中文名称“黑洞”,是一个出站数据协议,它会阻碍所有数据的出站,配合路由(Routing)一起使用,可以达到禁止访问某些网站的效果。
  • Dokodemo-door:中文名称“任意门”,是一个入站数据协议,它可以监听一个本地端口,并把所有进入此端口的数据发送至指定服务器的一个端口,从而达到端口映射的效果。
  • Freedom:是一个出站协议,可以用来向任意网络发送(正常的) TCP 或 UDP 数据。
  • HTTP:超文本传输协议,是传统的代理协议
  • MTProto:Telegram 的开发团队开发的专用协议,是一个 Telegram 专用的代理协议。在 V2Ray 中可使用一组入站出站代理来完成 Telegram 数据的代理任务。目前只支持转发到 Telegram 的 IPv4 地址。
  • Shadowsocks:最早被个人开发的科学上网梯子协议,但 V2Ray 目前不支持 ShadowsocksR。
  • Socks:标准 Socks 协议实现,兼容 Socks 4、Socks 4a 和 Socks 5,也是传统的代理协议。
  • VMess:是V2Ray 专用的加密传输协议,它分为入站和出站两部分,通常作为 V2Ray 客户端和服务器之间的桥梁。因为增加了混淆和加密,据说比 Shadowsocks 更安全。现在的机场支持 V2Ray,一般是指支持 VMess 协议。VMess 依赖于系统时间,请确保使用 V2Ray 的系统 UTC 时间误差在 90 秒之内,时区无关。在 Linux 系统中可以安装ntp服务来自动同步系统时间。

截止到2019年12月,V2Ray 可选的传输层配置有:TCP、mKCP、WebSocket、HTTP/2、DomainSocket、QUIC。其中,mKCP、QUIC和TCP用于优化网络质量;WebSocket用于伪装;HTTP/2和DomainSocket用于传输以及TLS加密。

V2Ray不仅可以在传输层配置 TLS 使 HTTP 和 SOCKS 变成 HTTPS 和 SOCKS over TLS 协议,也可以使MTProto、Shadowsocks 和 VMess 通过传输层配置TLS加密伪装成 TLS 流量。所以,VMess 配置 TLS 加密是最常见的做法,但没人会对 Shadowsocks 使用 TLS 加密,因为这完全没意义。

目前应用最多的科学上网方式

Xray核心和Project X 项目#

Xray与V2Ray完全类同,Xray 是 Project X 项目的核心模块。因为Xray和XTLS黑科技的作者rprx曾经是V2fly社区的重要成员,所以Xray直接Fork全部V2Ray的功能,然后进行性能优化,并增加了新功能,使Xray在功能上成为了V2Ray的超集,且完全兼容V2Ray。

简而言之,Xray是V2Ray的项目分支,Xray是V2Ray的超集,就跟Trojan-Go和Trojan-GFW的关系类似,而且Xray性能更好、速度更快,更新迭代也更频繁。由于自V2ray-core 4.33.0 版本起,删除了XTLS黑科技,但仍然支持VLESS,所以是否原生支持XTLS是Xray和V2Ray最大的区别之一。

VLESS#

VLESS(VMess over TLS)是在VMess协议的基础上进行改进的一种协议。与VMess相比,VLESS在传输过程中使用了TLS(Transport Layer Security)协议进行加密,这增加了传输的安全性。

Trojan#

原来多是指特洛伊木马,是一种计算机病毒程序。但是,我们今天所说的Trojan是一种新的科学上网技术,全称为Trojan-GFW,是目前最成功的科学上网伪装技术之一。你可以认为Trojan是V2Ray的“WS+TLS”模式的精简版,速度比V2Ray更快,伪装比V2Ray更逼真,更难以被GFW识别。

Trojan工作原理:Trojan通过监听443端口,模仿互联网上最常见的 HTTPS 协议,把合法的Trojan代理数据伪装成正常的 HTTPS 通信,并真正地完整完成的TLS 握手,以诱骗GFW认为它就是 HTTPS,从而不被识别。Trojan处理来自外界的 HTTPS 请求,如果是合法的,那么为该请求提供服务,否则将该流量转交给Caddy、Nginx等 web 服务器,由 Caddy、Nginx 等为其提供网页访问服务。基于整个交互过程,这样能让你的VPS更像一个正常的web服务器,因为Trojan的所有行为均与 Caddy、Nginx等 web 服务器一致,并没有引入额外特征,从而达到难以识别的效果。

云服务器搭建代理#

搭建V2ray代理——VMess + TCP#

最好的教程:https://guide.v2fly.org/basics/vmess.html#%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%85%8D%E7%BD%AE

其他教程【不推荐】:https://www.v2ray.com/chapter_00/start.html

https://qzone.work/technologys/514.html

1.云服务器输入命令安装/更新V2ray#

根据fhs-install-v2ray项目给到的命令:https://github.com/v2fly/fhs-install-v2ray/blob/master/README.zh-Hans-CN.md

Terminal window
// 通过官方安装脚本安装和更新 V2Ray,安装可执行文件和 .dat 数据文件
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)

连接raw.githubusercontent.com失败需要在hosts文件添加对应最低延迟可连接的ip【参考SwitchHosts项目】

安装最新发行的 geoip.dat 和 geosite.dat——ip数据文件和域名数据文件#
Terminal window
// 只更新 .dat 数据文件
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-dat-release.sh)
移除 V2Ray#
Terminal window
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh) --remove

2.启动服务器的V2Ray#

Terminal window
systemctl start v2ray

在首次安装完成之后,V2Ray 不会自动启动,需要手动运行上述启动命令。

设置开机自启动 V2Ray:

Terminal window
systemctl enable v2ray

接下来看看 V2ray 是不是真的运行起来了:

Terminal window
$ systemctl status v2ray
v2ray.service - V2Ray Service
Loaded: loaded (/etc/systemd/system/v2ray.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2020-08-16 23:17:13 CST; 41min ago
Main PID: 1984 (v2ray)
Tasks: 6 (limit: 2359)
Memory: 6.9M
CGroup: /system.slice/v2ray.service
└─1984 /usr/local/bin/v2ray -confdir /usr/local/etc/v2ray/
Aug 16 23:17:13 debian v2ray[1984]: v2ctl> Read config: /usr/local/etc/v2ray/01_api.json
Aug 16 23:17:13 debian v2ray[1984]: v2ctl> Read config: /usr/local/etc/v2ray/02_dns.json
Aug 16 23:17:13 debian v2ray[1984]: v2ctl> Read config: /usr/local/etc/v2ray/03_routing.json
Aug 16 23:17:13 debian v2ray[1984]: v2ctl> Read config: /usr/local/etc/v2ray/04_policy.json
Aug 16 23:17:13 debian v2ray[1984]: v2ctl> Read config: /usr/local/etc/v2ray/05_inbounds.json
Aug 16 23:17:13 debian v2ray[1984]: v2ctl> Read config: /usr/local/etc/v2ray/06_outbounds.json
Aug 16 23:17:13 debian v2ray[1984]: v2ctl> Read config: /usr/local/etc/v2ray/07_transport.json
Aug 16 23:17:13 debian v2ray[1984]: v2ctl> Read config: /usr/local/etc/v2ray/08_stats.json
Aug 16 23:17:13 debian v2ray[1984]: v2ctl> Read config: /usr/local/etc/v2ray/09_reverse.json
Aug 16 23:17:13 debian v2ray[1984]: 2020/08/16 23:17:13 [Warning] v2ray.com/core: V2Ray 4.27.0 start
lines 1-19/19 (END)

看到类似于这样的提示就算启动成功了。

但是由于此时你还没有为 V2ray 配置,所以咱们还是把它关掉吧:

Terminal window
systemctl stop v2ray

3.写入服务器的V2ray配置文件#

进入下面目录查看是否存在config.json 文件,存在则按照模板写入,修改”port”和”id”,修改完成后输入命令检查是否正确配置,最后重启 V2Ray 才会使修改的配置生效。

Terminal window
# 进入修改写入配置
cd /usr/local/etc/v2ray
vim config.json
# 检查配置命令
/usr/local/bin/v2ray test -config /usr/local/etc/v2ray/config.json
# 重启 v2ray
systemctl start v2ray

输入检查配置命令输出如下则为正常:

Terminal window
[root@iZ7xvaxy0ord4x7vffy883Z ~]# /usr/local/bin/v2ray test -config /usr/local/etc/v2ray/config.json
V2Ray 5.12.1 (V2Fly, a community-driven edition of V2Ray.) Custom (go1.21.4 linux/amd64)
A unified platform for anti-censorship.
Configuration OK.

配置文件模板【模板中的注释写入时一定要删除,因为JSON不支持注释】:

Terminal window
{
"inbounds": [ //入站配置
{
"port": 10000, // 服务器监听端口,自己设置
"protocol": "vmess", // 主传入协议/入站协议
"settings": {
"clients": [ //客户端
{
"id": "d3f78b80-cd93-fc34-4b9e-cdcc494c6981" // 用户 ID,客户端与服务器必须相同,自己随机生成uuid
}
]
}
}
],
"outbounds": [ //出站设置
{
"protocol": "freedom" // 主传出协议/出站协议
}
]
}

4.客户端使用代理#

可以下载V2rayN软件,或者使用Clash新增代理,写入yml配置文件

V2rayN#

使用教程:https://v2rayhub.net/zh/v2rayN/

各平台v2ray客户端汇总:https://v2rayndl.org/clients-summary/

Clash#
image-20240222210244960image-20240222210319631

最基础的yml配置文件模板:

proxies:
- name: "vmess Proxy测试"
type: vmess
server: 8.134.142.93
port: 10000
uuid: d3f78b80-cd93-fc34-4b9e-cdcc494c6981
alterId: 0
cipher: auto

同步时间以确定时间准确#

V2Ray 对于时间有比较严格的要求,要求服务器和客户端时间差绝对值不能超过90 秒,所以一定要保证时间足够准确。还好 V2Ray 并不要求时区一致。比如说自个儿电脑上的时间是北京时间(东 8 区)2017-07-31 12:08:31,但是 VPS 上的时区是东 9 区,所以 VPS 上的时间应该是 2017-07-31 13:07:01 到 2017-07-31 13:10:01 之间才能正常使用 V2Ray。当然,也可以自行改成自己想要的时区。

对于 VPS(Linux) 可以执行命令 date -R 查看时间:

Terminal window
$ date -R
Sun, 22 Jan 2017 10:10:36 -0500

V2ray各种方案的配置文件模板及原理#

https://github.com/v2fly/v2ray-examples

how-to-choose-a-v2ray-plan

安装Google BBR一键加速VPS#

https://github.com/bannedbook/fanqiang/blob/master/v2ss/%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84Google%20BBR%20%E4%B8%80%E9%94%AE%E5%8A%A0%E9%80%9FVPS%E6%95%99%E7%A8%8B.md

搭建http代理——利用Squid#

https://blog.csdn.net/dddgggd/article/details/122411969

socks5/http代理其他教程:https://cloud.tencent.com/developer/article/2296617

一、配置不需要身份验证的Squid代理服务器#

Squid介绍 Squid是Linux自带的代理软件,与其它代理软件如Apache、Socks等相比,下载安装简单,配置灵活,支持缓存和多种协议。

1.安装Squid

Terminal window
yum install squid -y

2.配置 进入squid配置文件

Terminal window
cd /etc/squid/

设置监听端口,设置为允许所有ip访问

Terminal window
vim squid.conf
将conf文件的内容设置为如下:
dns_v4_first on
http_port 3228 # 修改端口,默认为 3128
http_access allow all # 添加 ,为允许所有ip

检查配置文件是否有误:

Terminal window
squid -k parse # 配置文件解析日志中,没有出现ERROR 就没有问题

启动服务:

Terminal window
systemctl start squid

查看squid监听的端口:

Terminal window
netstat -lnpt
squid的日志目录为/var/log/squid/, 两种类型日志access 和cache;

在防火墙中打开squid代理服务器

Terminal window
[root@squid-proxy ~]# firewall-cmd --permanent --add-service=squid
success
[root@squid-proxy ~]# firewall-cmd --reload
success

重启squid加载更改

Terminal window
systemctl restart squid

在mac客户端上配置代理ip,就可以了 在这里插入图片描述

二、配置需要身份验证的Squid代理服务器#

1.安装httpd-tools

yum install httpd-tools -y
  1. 创建密码文件 username改为你的用户名
htpasswd -cd /etc/squid/passwd username

3.验证用户名密码 输入指令

/usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd

然后输入用户名 空格 密码

OK 显示 ok代表成功

4.配置squid.conf

vim squid.conf

在acl行之后添加如下

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

在这里插入图片描述 重启以使配置文件生效

systemctl restart squid

使用浏览器登录时会提示输入用户名密码,输入即可联网 在这里插入图片描述

订阅链接类型#

SSR 订阅

Clash 订阅

Shadowrocket 订阅

Surge 订阅

V2Ray 订阅

Surfboard 订阅

代理软件客服端#

浏览器插件#

浏览器自动代理插件:SmartProxy【强烈推荐】、Proxy SwitchyOmega

image-20220909001045621

Windows#

1.Clash【原版】#

最原始的版本,包括多个平台,但都是命令行执行,推荐在Linux服务器上面用的,不带界面。

https://github.com/Dreamacro/clash

最新版:v1.10.0

如何开始?Home · Dreamacro/clash Wiki (github.com)


2.clash_for_windows_pkg【好看GUI版非中文】——已经删库跑路了#

A Windows/macOS GUI based on Clash

为了在 Windows/macOS 上面用的。

https://github.com/Fndroid/clash_for_windows_pkg

最新版:v 0.19.19

使用手册【中文文档】:https://docs.cfw.lbyczf.com/contents/quickstart.html#%E5%90%AF%E5%8A%A8

缩写CFW指代 Clash for Windows

3.Clash_Chinese_Patch【汉化补丁】#

给第2个汉化用的。所以其实第2个+第3个就可以用了——【推荐,也是我在用的方案。更新时候下载第3个补丁复制替换CFW源文件夹下\resources\app.asar】

https://github.com/BoyceLig/Clash_Chinese_Patch

最新版:Clash for Windows V0.19.19汉化版


4.Clash-for-Windows_Chinese【汉化版,汉化需要下载release的app.asar文件并替换】#

这个仓库带了第2个和第3个,但是实测不好看,不推荐。

https://github.com/ender-zhao/Clash-for-Windows_Chinese

最新版:Clash for Windows V0.19.15汉化版

5.Clash Meta#

Clash Meta 是基于原 Clash 核心的重写项目,支持原 Clash Premium 核心的大部分功能。由于原 Clash Premium 核心已经删库停更,现在还在继续更新的 Clash 客户端,几乎都采用 Clash Meta 内核,是原 Clash 核心的继任者

https://github.com/MetaCubeX/mihomo/tree/Meta

6.✅clash-verge-rev#

Clash Verge 的延续 - 基于 Tauri 的 Clash Meta GUI。

https://github.com/clash-verge-rev/clash-verge-rev

V2rayN#

Android#

5.ClashForAndroid【Android 版】#

https://github.com/Kr328/ClashForAndroid

最新版:v2.4.14

V2rayN#

Surfboard#

Linux#

6.Linux:clash verge【完全不太推荐】#

zzzgydi/clash-verge: A Clash GUI based on tauri. Supports Windows, macOS and Linux. (github.com)

最新版:Clash Verge v1.0.3Latest

clash-verge_1.0.3_amd64.AppImage

怎么安装,直接下载AppImage运行即可,或者ubuntu下载deb安装包安装dpkg -i XXXXX.deb

使用方法:windows上翻墙也是打开clash,点击系统代理,并且系统代理设置中设置手动IP地址和端口号(clash可以查看port:7890,IP地址我记得也可以看百度还是自动生成127.0.0.1)这样之后便可以翻墙了。这便是软件开代理给系统。

公司代理IP地址为192.0.11.251 port:8118

switchomega仅仅浏览器使用代理的扩展

iPhone/iPad#

Shadowrocket 非国区App Store购买及下载#

Quantumult X 非国区App Store购买及下载#

Surge#

Mac#

ClashX#

找免费节点#

关键字 inurl/proxies

浏览器搜索引擎(谷歌)搜索

测速#

IP地址查看#

https://ip.skk.moe/

https://ip.cn/显示的位置是电脑地理位置

在线测速#

1、 CloudFlare : https://speed.cloudflare.com/

2、SPEEDTEST : https://www.speedtest.net/

http://mybroadbandspeed.speedtestcustom.com/

http://aaaaaa.speedtestcustom.com/

http://rixcloud.speedtestcustom.com/

http://cordcloud.speedtestcustom.com/

3、Fast : https://fast.com/

机场推荐#

魔戒#

平民机场,量大管饱,非常火

冲浪猫#

启动后:

平均速度:26.25MB/s

image-20230917130502360

image-20230917130444343

image-20230917130436023

启动前:

12MB/s

image-20230917130856907

image-20230917130737404

性价比机场#

https://xn—6nq44r2uh9rhj7f.net/#/dashboard

垃圾机场#

机场描述价格网址
XFLTD公司环境节点全挂,覆写DNS后仍然不可用
海獭VPN公司环境节点全挂,覆写DNS后可用(最低延迟70)月付16 100G 有点小贵https://honven20.haitacdn.com/dashboard
飞鸟云公司环境节点全挂,覆写DNS后可用(最低延迟70)10元200G流量包还行https://feiniaoyun.xyz/#/dashboard
赔钱机场最低延迟80月付1.5 100G 便宜https://xn—mes358aby2apfg.com/#/dashboard

IntelliJ必装插件#

软件界面中文翻译插件

Chinese(Simplified)Language Pack/中文语言包

Translation

Active Tab Highlighter

Atom Material Icons

Dracula Theme

One Dark theme(太黑了)

Key Promoter X(用来了解快捷键)

Statistic(查看文件大小、代码行等)

Indent Rainbow

image-20220602202700985

image-20220602201943451

image-20220602195432591

外观#

image-20220602203308476

image-20220602203338408

image-20220602203821192

image-20220602203350960

image-20220602203955847

关于操作系统,你必须知道的名词#

具体内容查看《程序员必知操作系统》

字符编码问题#

现在最流行的就是UTF-8编码,其他什么都基本不用淘汰了。

编码:https://mp.weixin.qq.com/s/JxD7LC33zbFD5QBxJ6jMWw

一旦走上了编程之路,如果你不把编码问题搞清楚,那么他将像幽灵一样纠缠你的整个职业生涯,各种灵异事件接踵而至,挥之不去。只有充分发挥程序员死磕到底的精神,你猜有可能彻底摆脱编码问题带来的烦恼。

ASCII 占1个字节,只支持英文
ANSI
GB2312 占2个字节,支持6700+中文
GBK GB2312的升级版,支持21000+汉字
shift-JIS 日本字符
ks_c_5601-1987 韩国编码
TIS-620 泰国编码
unicode
UTF-8

由于每个国家都有自己的字符,所以其对应关系也涵盖了自己国家的字符,但是以上编码都存在局限性,应运而生,出现了万国码,它涵盖了全球所有的文字和二进制的对应关系。

unicode 2-4字节,已经收录136690个字符,并还在一致不断扩张中…

unicode解决了字符和二进制的对应关系,但是使用unicode表示一个字符,太浪费空间,例如:利用unicode表示”Python”需要12个字节,比原来的ASCII增加了一倍!

为了解决存储和网络传输的问题,出现了Unicode Transformation Format ,学术名:UTF。

UTF-8 :使用1,2,3,4个字节表示所有字符,优先使用1个字符,无法满足则增加一个字节,最多4个 【英文占1个,欧洲语系占2个,东亚占3个,其他及特殊字符占4个】
UTF-16 :使用2,4个字节表示所有字符,优先使用2个字节,否则使用4个。
UTF-32 :使用4个字节表示所有字符。

总结:UTF是为unicode编码涉及的一种在存储和传输时节省空间的编码方案。

字符在硬盘上的存储:#

  无论以什么编码在内存里显示字符,存到硬盘上都是二进制。要注意的是,存到硬盘上时是以何种编码存的,再从硬盘上读取出来时,就必须以何种编码读。

  虽然国际语言是英语,但是大家在自己的国家依然说自己的语言,不过出了国,你就得学会英语,编码也一样,虽然有了UTF-8,但是由于历史原因,各个国家依然在大量使用自己的编码, 比如中国的Windows,默认编码依然是GBK,而不是UTF-8

编码转换过程:#

20210802034357

实际代码演练中,在py3上,把你的代码以utf-8编写,保存,然后再Windows上执行。

so一切都很美好,到这里,我们关于编码的学习按说就可以结束了。

但是,如生活一样,美好的表面下,总是隐藏着不进入人意,上面的UTF-8编码之所以能在Windows GBK的终端下显示正常,是因为到了内存里python解释器吧utf-8转成了unicode,单这只是Python3,并不是所有的编程语言在内存里默认编码都是unicode,比如万恶的Python2就不是,他的默认编码是ASCII,想写中文就必须声明文件头的coding为gbk或者UTF-8,声明之后,python2解释器仅以文件头生命的编码去解释你的代码,加载到内存后,并不会主动帮你转成Unicode,也就是说你的文件编码是UTF-8加载到内存里,你的变量字符串就也是UTF-8,这意味着什么你知道吗?

  意味着你以UTF-8编码的文件,在Windows是乱码。

image-20210802031947524

乱是正常的,不乱才不正常,因为只有两种情况,你的Windows上显示才不会乱。

  1.字符串以GBK格式显示

  2.字符串是unicode编码

既然Python2并不会自动的把文件编码转换为unicode存在内存里,那就只能使出最后一招了,你自己人肉转。Py3自动把文件编码转为unicode必定是调用了什么方法,这个方法就是,decode(解码)

和encode(编码)。

UTF-8 ---> decode解码 ---> Unicode
Unicode ---> encode编码--->GBK/UTF-8

decode实例:

20210802034744

encode实例:

20210802035000

记住下图规则:

1373275-20181204113300426-448572925

一般UTF-8一个中文占三个字节,GBK一个占2个字节。

Python bytes类型#

在python2上写字符串。

20210802035101

虽说打印的是路飞,但是直接调用变量s.看到的却是一个个的16进制表示的二进制字节,我们怎么称呼这样的数据呢?直接叫二进制么?也可以,但相比于010101,这个数据穿在表示形式上又把2进制转成了16进制来表示,这是为什么呢?哈,为的就是让人们看起来更可读,我们称之为bytes类型,即字节类型,他把8个二进制一组称为一个byte,用16进制来表示。

想告诉你一个事实,Python2里面bytes == str,其实这是一回事,除此之外,python2里面还有个单独的类型是unicode,把字符串解码后,就会变成unicode。

20210802035052

20210802035044

python的发展越来越快,已经不能再修修补补。Python3横空出世,

python3除了把字符串的编码改成了unicode,还把str和bytes做了明确的区分,str就是unicode格式的字符,bytes就是单纯的二进制了。

20210802035017

python只要出现了各种编码问题,无非是哪里的编码设置错了。

常见编码错误的原因:

  1. Python解释器的默认编码

  2. Python源文件编码

  3. Terminal使用的编码

  4. 操作系统的语言设置,掌握了编码之前的关系后,挨个排错就好了。

vmware-hostd.exe 占用443端口导致某些应用加速无法正常启动?#

如果我们的电脑既安装了VMware虚拟机软件,又安装了XAMPP,启动XAMPP的时候,经常会报错。 提示信息说明: 443号端口被vmware-hostd.exe进程占用了,导致Apache无法启动。

这是因为vmware-hostd.exe默认是使用443号端口的,而它又是默认自动启动的。

我们知道,Apache 的 httpd 服务默认是使用80端口的,而 httpd-ssl 默认是使用443端口的。这就导致了443号端口的冲突。

一般来说,解决方法有两种:

  1. 修改 httpd-ssl.conf 配置文件,将443端口改为其他空闲的端口(如4430)。
  2. 将 vmware-hostd.exe 的自动启动改为手动启动并将其停止。在桌面的计算机图标点击鼠标右键,选择 “管理→服务和应用程序→服务”,将显示名称为“VMware Workstation Server”的服务的启动类型改为手动,并停止该服务即可。

说明: 上面两种方法中的任何一种都可以。第二种方法一般也不会影响VMware的正常使用。VMware Workstation Server 服务的描述信息为“Remote access service for registration and management of virtual machines.”,也就是说它与远程管理VMware有关。而我们一般也不会使用到VMvare的远程访问功能,所以第二种方法基本没有影响。

一般游戏编程用什么语言和软件#

https://zhidao.baidu.com/question/11753953.html?sort=11&rn=5&pn=0#wgt-answers

JetBrains PyCharm 2017.3.1汉化包及汉化教程听语音#

https://jingyan.baidu.com/article/9113f81b73add12b3214c73a.html

我的编程软件使用相关#

IntelliJ IDEA 2020.3#

安装位置:

F:\JetBrains\IntelliJ IDEA 2020.3\bin\idea64.exe

PhpStorm 2020.3#

安装位置:

F:\JetBrains\PhpStorm 2020.3\bin\phpstorm64.exe

PyCharm Community Edition 2021.3.2#

安装位置:

F:\JetBrains\PyCharm Community Edition 2021.3.2\bin

Shell——命令行解释器#

1.cmd/Command Prompt(命令提示符)#

2.PowerShell#

PowerShell和Windows PowerShell是不同的应用程序。Windows PowerShell应该还是属于windows范畴,而PowerShell属于Linux范畴。

3.Git Bash#

4.Ubuntu/Linux Bash#

linux最早的shell好像是sh,后面变成Bash

终端(terminal)、shell区别与联系#

命令行界面 (CLI)、终端 (Terminal)、Shell、TTY的区别 - stardsd - 博客园 https://www.cnblogs.com/sddai/p/9769086.html

1、终端(terminal) 终端(terminal),作用是提供一个命令的输入输出环境,在Linux下使用组合键ctrl+alt+T打开的就是终端。

2、shell shell是一个命令行解释器,是Linux内核的一个外壳,负责外界与Linux内核的交互。shell接收用户或者其他应用程序的命令, 然后将这些命令转化成内核能理解的语言并传给内核, 内核执行命令完成后将结果返回给用户或者应用程序。当你打开一个terminal时,操作系统会将terminal和shell关联起来,当我们在terminal中输入命令后,shell就负责解释命令。

命令行界面 (英语:Command-line Interface,缩写:CLI)

图形用户界面 (英语:Graphical User Interface,缩写:GUI,又称图形用户接口)

Java相关#

MyBatis#

MyBatis 是一个开源的 Java 持久层框架,它简化了数据库操作,将 Java 对象与 SQL 语句之间的映射自动化,同时保留了 SQL 的灵活性和控制力。

扩展生态

  • MyBatis-Plus:国内流行的增强工具,提供通用 CRUD、分页、代码生成等功能。
  • Spring Boot 集成:通过 mybatis-spring-boot-starter 快速整合。

hosts文件修改#

Win11#

Win11如何修改hosts文件?Win11修改hosts文件的方法 - 哔哩哔哩 (bilibili.com)

比较麻烦

Win10#

直接改,找到hosts文件夹。

hosts文件位置在:C:\windows\system32\drivers\etc\hosts

Ubuntu/Linux#

vim /etc/hosts

正则表达式【有空好好看一下】#

我们来解释一下: Patterns

https?://www.connectedpapers.com/*
https?

在正则表达式中,?表示匹配前面的子表达式零次或一次。那么这句话的意思就是匹配http或是https。 最终的*号表示,在这个网址下的所有地址都会禁止使用vimium的快捷键。

浏览器访问出错代码#

403 禁止访问#

“禁止访问该资源。当用户尝试访问他们无权访问的内容时,将返回此代码。例如,尝试在不登录的情况下查看受密码保护的内容可能会产生 403 错误。

404 未找到#

“未找到请求的资源。”它们中最常见的错误消息。此代码表示请求的资源不存在,并且服务器不知道它是否曾经存在过。

412 前提条件失败#

对此错误类型一无所知

500 内部服务器错误#

“服务器上出现错误,无法完成请求。一个通用代码,仅表示“内部服务器错误”。服务器上出现问题,请求的资源未传递。

502 错误网关#

“网关不好。”此错误代码通常意味着一台服务器从另一台服务器收到了无效响应。有时,查询或请求将花费太长时间,因此服务器会取消或终止查询或请求,并且与数据库的连接会中断。

请求超时#

程序员发音#

GitHub - shimohq/chinese-programmer-wrong-pronunciation: 中国程序员容易发音错误的单词

程序员必知的术语#

计算机专业术语翻译:handle把手,socket插座 ,context

https://www.zhihu.com/answer/52189679

a对b透明

透明度

环境变量(Environment Variable)#

深入理解环境变量

环境变量 | 白月黑羽 (byhy.net)

Windows#

变量名大小写无所谓——在cmd中都可以。因为windows是大小写不区分和Linux不一样。

理解:环境变是可以理解为影响程序运行的一些信息配置项。英文叫Environment Variables,下文中,有时我会简称env。 每个环境变显都是个配置项,给程序提供一个信息。

下图所示只是个界面,环境变量实际上是存储在Windows的注册表里面。环境变量是个键值对——都是字符串。

注意:环境变量不仅仅是路径。!!!看到这些环境变量,很容易对环境变量产生误解,以为它们就是用来配百路径的。其实不是!! 环境变量可以用来配百路径,也可以用来配首其他,比如上图中的NUMBER_OF_PROCESSORS,指明了系统中处理器核心是4个。

image-20221024214409158

系统目录/系统根目录/系统总目录#

C:\Windows

%systemroot%

系统变量#

Path——最重要的,和编程息息相关#

环境变量中,我们接触最密切的恐怕就是Path这个环境变量了。因为很多程序都会根据它的值决定自己的行为。

最典型的就是命令行解释器(运行在命令行窗口中的),有时也叫shell程序。 就是解释执行我们从命令行窗口中(术语是伪终端模拟器)输入命令的程序。 当我们在命令行窗口敲入如下一行指令的时候

python.exe hyhy.py

shell程序会接收到这行命令,它会以空格作为分隔符,把指令分割为个部分,第一个部分就是要执行的程序。扩展名可输可不输。

在运行对话框中输入cmd后,系统会尝试在Path指明的目录中一个个查找cmd这个程序,找到的话就运行程序,否则就会提示找不到文件。

前面 安装的时候,我们强调要勾选 Add Python3.8 to path ,这是什么意思呢?

就是把 Python解释器所在的目录 加入到 环境变量Path 中。

Windows 下,我们可以用 echo %path% 命令查看一下环境变量path的内容是什么。

比如,我的电脑执行结果如下

C:\Users\byhy>echo %path%
C:\Python38\Scripts\;C:\Python38\;
C:\Python27\Scripts\;C:\Python27\;
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\

环境变量 Path 中包含的 这些目录, 就是 Windows查找程序的目录

环境变量 Path 的内容包括了多个目录,目录之间用分号隔开。

假如你编写了一段代码,保存到名为 code.py 的文件中, 当我们敲入下面的命令时,

Terminal window
python code.py

Windows 命令执行器 就会 依次 搜索如下目录:

C:\Python38\Scripts\;
C:\Python38\;
C:\Python27\Scripts\;
C:\Python27\;
C:\Windows\system32;
C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\

看这些目录中,是否有 python.exe 或者 python.bat 之类的可执行文件。

如果有就执行他们。

注意,在 C:\Python38\ 和 C:\Python27\ 这两个目录里面 都有python.exe,会执行哪个呢?

哪个目录在前面 ,就去执行哪个目录下面的python.exe。

比如现在是 C:\Python38\ 在前面,就先执行 C:\Python38\ 里面的 python.exe。

修改环境变量#

修改完后点击两个确定。然后重启程序,比如说重新启动命令行,才可以生效。

image-20221024230100559

explorer每次启动新的进程,会重新读取配首环境变量,作为子进程的环境变量。所以重启cmd就有效了。

Linux#

Linux环境变量配置全攻略 - 悠悠i - 博客园 (cnblogs.com)

【Linux】第五章 环境变量(概念补充+作用+命令+main三个参数+environ+getenv())_企鹅不叫的博客-CSDN博客

1.查看读取环境变量:#

  • export命令显示当前系统定义的所有环境变量
  • echo $PATH命令输出当前的PATH环境变量的值

这两个命令执行的效果如下

设置:

在 /etc/profile文件中设置,export的意思就是将局部变量设置为环境变量。现有的变量是被这样一行代码设置的:

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

这几个环境变量已经有一些默认值了,不过我们可以追加内容,比如修改PATH:

# : 的意思是并列
PATH = /abc/def:$PATH

查看:

查看全部,使用env命令即可。

查看单个,可以使用echo:如echo $JAVA_HOME。

JAVA设置#

PATH#

这个变量一定要保证将JRE/JDK的bin纳入其中。

JDK,JRE,JVM三者之间的关系,以及JDK,JRE包含的主要结构有哪些
JDK = JRE + Java的开发工具(javac.exe,java.exe,javadoc.exe)
JRD = JVM + Java核心类库

JAVA_HOME#

JAVA_HOME是一个约定,通常它指的是JDK的目录。如果需要JDK的话,大部分程序会默认去环境变量中取JAVA_HOME这个变量。

很重要,一些java开发的工具例如IDEA就需要。

CLASSPATH【废弃】#

在于告诉Java执行环境,在哪些目录下可以找到我们所要执行的Java程序所需要的类或者包。不过在JDK1.5之后的版本完全可以不用设置classpath环境变量就能正常运行程序。

总结#

  1. 需要在操作系统下设置的变量:
  2. PATH中包含JRE/JDK的bin目录。 JAVA_HOME
  3. 一条命令语句包含命令本身(操作)和操作对象:Command + object,编译和运行Java程序必须经过两个步骤:
  • 将源文件编译成字节码 (javac)
  • 执行平台无关的字节码程序(java)

查看安装的各个软件版本/查看是否安装#

Java:

Terminal window
java -version

Windows资源管理器#

日期/创建内容的时间/最后一次保存的日期/修改的日期:这个文件/视频/照片最早拍摄或者生成的日期,只要内容一直不更改,即便一直复制到别的地方,前面几个都保持一样。

创建日期:这个文件从别的地方第一次复制粘贴到这台电脑上的这个位置的时间。

访问日期:最近一次打开的时间。

DNS污染#

网上冲浪一定要知道的事:DNS污染怎么解决?别慌,我来教你~ https://mp.weixin.qq.com/s/zS1ZSEpETzCvpVrNwU8S2A

主要8个状态码#

只使用这8个状态代码,并配合您自定义的响应描述来表述程序工作一切是否正常,客户端应用程序发生了什么错误或API发生错误。
选谁呢:
200 OK GET, PUT 或 POST 请求响应成功.
201 Created 标识一个新实例创建成功。当创建一个新的实例,请使用POST方法并返回201状态码。
304 Not Modified 发现资源已经缓存在本地,浏览器会自动减少请求次数。
400 Bad Request 请求未被处理,因为服务器不能理解客户端是要什么。
401 Unauthorized 因为请求缺少有效的凭据,应该使用所需的凭据重新发起请求。
403 Forbidden 意味着服务器理解本次请求,但拒绝授权。
404 Not Found 表示未找到请求的资源。
500 Internal Server Error 表示请求本身是有效,但由于某些意外情况,服务器无法实现,服务器发生了故障。

清楚DNS缓存#

浏览器#

Chrome#

chrome://net-internals/#dns

Edge#

edge://net-internals/#dns

Windows#

管理员模式打开命令行输入:

Terminal window
ipconfig /flushdns

访问或者连接不上某些网站,例如Github#

网络问题导致连不上或延迟过高,出现问题的场景:

  • npm install的时候下载安装失败————RequestError: connect ETIMEDOUT 20.205.243.166:443
  • 打不开某些网站,例如github.com
  • Linux安装不了

网络问题导致连不上或延迟过高——RequestError: connect ETIMEDOUT 20.205.243.166:443

参考:https://blog.csdn.net/weixin_42728767/article/details/122568179

Terminal window
PS C:\Users\tech\Desktop\my-electron-app> npm install --save-dev electron
npm ERR! code 1
npm ERR! path C:\Users\tech\Desktop\my-electron-app\node_modules\electron
npm ERR! command failed
npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node install.js
npm ERR! RequestError: connect ETIMEDOUT 20.205.243.166:443
npm ERR! at ClientRequest.<anonymous> (C:\Users\tech\Desktop\my-electron-app\node_modules\got\dist\source\core\index.js:970:111)
npm ERR! at Object.onceWrapper (node:events:629:26)
npm ERR! at ClientRequest.emit (node:events:526:35)
npm ERR! at origin.emit (C:\Users\tech\Desktop\my-electron-app\node_modules\@szmarczak\http-timer\dist\source\index.js:43:20)
npm ERR! at TLSSocket.socketErrorListener (node:_http_client:495:9)
npm ERR! at TLSSocket.emit (node:events:514:28)
npm ERR! at emitErrorNT (node:internal/streams/destroy:151:8)
npm ERR! at emitErrorCloseNT (node:internal/streams/destroy:116:3)
npm ERR! at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
npm ERR! at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1595:16)
npm ERR! A complete log of this run can be found in: C:\Users\tech\AppData\Local\npm-cache\_logs\2023-12-16T07_03_22_454Z-debug-0.log

解决步骤#

首先查一下这个地址是什么网站

1.首先ping一下github.com看看延迟有没有超时#
Terminal window
ping github.com
2. 超时处理#

则打开 http://ping.chinaz.com/github.com,搜索github的ip地址。

在这里插入图片描述 红色的表示请求超时,是不能采用的。

选择一个请求时间少的IP,复制前面的IP,我用的是【德国 140.82.121.3】的。

可能时间最短的不一定有用,那就换一个第二短的IP地址。

或者使用这个网站:https://ip.chinaz.com/avatars0.githubusercontent.com 可以自动查询对应的IP地址

3. 找到并打开本地Host文件,添加刚刚找到的IP地址保存#

Windows:

打开C:\Windows\System32\drivers\etc\hosts

在这里插入图片描述

注意:如果再保存的过程中给出提示:“ 拒绝访问 ”,不能有效保存问题,可以参考下面这个方法: 1、先把hosts文件拷贝到桌面 2、打开hosts,编辑后进行保存,此时不会出现 “ 拒绝访问 ” 提示信息 3、再将保存好的hosts文件拷贝到etc目录下,直接替换原来的hosts文件就行

Linux:

vim /etc/hosts
4. 再次ping一下github.com#

hosts文件中关于Github的配置#

20.200.245.247 github.com
104.23.124.189 github.global.ssl.fastly.net
185.199.108.153 assets-cdn.github.com
185.199.111.153 assets-cdn.github.com
185.199.109.153 assets-cdn.github.com
185.199.110.153 assets-cdn.github.com
185.199.110.133 avatars0.githubusercontent.com
185.199.111.133 avatars0.githubusercontent.com
185.199.108.133 avatars0.githubusercontent.com
185.199.109.133 avatars0.githubusercontent.com
技术笔记与实用工具汇总
https://fuwari.vercel.app/posts/程序员基础/
作者
Sage
发布于
2024-07-14
许可协议
CC BY-NC-SA 4.0