👲👲作者主页:🔗杰森的博客
📒📒本文摘要TCP 三次握手,四次挥手知识点精析。备考、面试前看两眼,加深记忆,祝你一臂之力。顺利通过考试、拿到 offer。
💖💖如果本文帮助到你的话,还请各位小伙伴👍点赞➕收藏⭐➕评论💭支持杰森呀✌️


📚概述

“什么是三次握手,四次挥手?”,该问题作为计算机网络学科中常见问题之一,无论是面试还是考研,我们都有必要细细参透其中的奥妙

在学习之前,我们首先需要了解一些基本的概念

📚基础理论

📐传输控制协议

传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,在 OSI 模型中完成传输层指定功能。
TCP 使用校验和函数检验数据是否出现错误,在数据发送和接收时均需要计算校验和

阅读全文 »

大家好,我是杰森。GitHub 对大家来说一定不陌生,无论是学习还是(爬)(项)(目)。但是今天,我好像和它失联了……

当我像往常一样clone项目时,却得到了这样的报错

1
2
3
4
5
6
$ git clone git@github.com:appletdevelop/full-stack.git
Cloning into ‘full-stack’...
ssh: connect to host github.com port 22: Connection refused
fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

什么都不能阻止打工人搬砖,必须要解决。经过一番排查,终于找到了问题的根源。分享两种解决方案,大家注意避坑。

方案一:配置 DNS

因为错误信息显示 Connection refused ,所以我们需要去看看建立连接时发生了什么,为什么会出错。查看日志,果然发现端倪

1
2
3
4
5
6
7
8
9
$ ssh -vT git@github.com
OpenSSH_9.0p1, OpenSSL 1.1.1o 5 July 2022
debug1: Reading configuration data /c/Users/jason/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to github.com [::1] port 22.
debug1: connect to address ::1 port 22: Connection refused
debug1: Connecting to github.com [127.0.0.1] port 22.
debug1: connect to address 127.0.0.1 port 22: Connection refused
ssh: connect to host github.com port 22: Connection refused

日志显示,IPv6IPv4localhost 地址分别为 ::1127.0.0.1,这意味着我们在连接 github 时,其域名将会被解析为 localhost 地址,当然也就无法连接。

打开查询网站,找到 github.comIP 地址

真实 IP 地址

Windows 下,打开本机 hosts 文件

C:\Windows\System32\drivers\etc

添加域名映射,并在 cmd 窗口刷新 DNS 配置

1
2
3
140.82.112.4 github.com
# Refreshing DNS configurations
$ ipconfig /flushdns

重新拉取,成功。

方案二:修改端口号

从上面的报错信息中可以发现,重点在这一句

1
ssh: connect to host github.com port 22: Connection refused

ssh 连接 GitHub22 号端口被拒绝。但是 ping 一下 github.com 能通,浏览器访问也没有问题,那有可能是该端口被防火墙蔽掉了。既然 22 端口拒绝访问,我们不妨尝试使用 443 端口进行连接。

使用 vim 指令编辑 ssh 配置文件,添加以下端口信息

1
2
3
4
5
$ vim ~/.ssh/config
# Add the following configuration information
Host github.com
Hostname ssh.github.com
Port 443

测试访问是否成功,通常不出意外的话意外就来了……

1
2
3
4
5
6
7
$ ssh -T git@github.com
The authenticity of host ‘[ssh.github.com]:443([unknown ip address]:443)’ can’t be established.
xxx key fingerprint is xxx:xxx.
This host key is known by the following other names/addresses:
# Delete the RSA information in line 8
~/.ssh/known_hosts:8: github.com
Host key verification failed.

这与 ssh 的运行机制有关,ssh 会将本机访问过的计算机的 public key 记录在 ~/.ssh/known_hosts 下。当下次访问相同计算机时,若公钥不同则会发出警告,避免受到攻击。这里只需要找到 known_hosts 文件中对应 ipRSA 并删除便可解决。

再次测试,看到以下信息则表示访问成功

1
2
$ ssh -T git@github.com
Hi xxx! You’ve successfully authenticated, but GitHub does not provide shell access.

这样访问 GitHub 时,ssh 就会连接 443 端口,不会报错。

拉取正常

总结

总结下本次踩坑的原因,主要有两点:

  • 使用了科学上网小工具;
  • 运营商劫持DNS 解析;

总之:“网上冲浪也要注意暗礁,低头走路也要抬头看路”,以上就是本期分享啦,希望可以帮到您!

👲👲作者主页:🔗杰森的博客
📒📒本文摘要微信分身(多开)教程
💖💖如果本文帮助到你的话,还请各位小伙伴👍点赞➕收藏⭐➕评论💭支持杰森呀✌️


系统环境:Windows 11

前言

微信,相信已经是我们生活中离不开的东西之一了,但随着使用时间增多,我们添加的好友也越来越多。本来想着分分类,让工作和生活分离开来。但看着近千人的通讯录列表实在是苦于操作,于是我们注册了另一个账户。亦称,“小号”、“工作号”

但随之而来的麻烦又来了,电脑只能登录一个微信账户。那这时候就有同学说了:“来回切换账户发消息,不累么?”

当然,伟大的程序猿们怎么能浪费时间在这种事情上呢!那今天杰森教大家微信分身,一台电脑同时登录多个微信账户

阅读全文 »

服务器 快到期了,这几天迁移到 GitHub 上,用免费的 GitHub Pages 重新部署下 杰森的博客 。以下样式及优化配置基于 Hexo,主题 Next

GitHub Actions 自动化部署

本文最具价值的配置莫过于此,没有用到 GitHub Actions 前,每次发文需要将 markdown 文件放入 _post 文件夹下,然后执行 hexo clean && hexo g && hexo s && hexo g一连串命令,执行无报错还好说,万一本地环境出现错误,还得花时间找错,非常麻烦

使用 GitHub Actions 后,发文只需要在博客的源文件仓库中拖拽源文件或者 push 源文件到仓库,GitHub Actions 即可监测仓库状态,自动执行部署操作到指定位置,不必担心本地环境出错等系列问题

阅读全文 »

👲👲作者主页:🔗杰森的博客
📒📒本文摘要攻城狮杂谈,谈谈对创作的感受
💖💖希望对你有所帮助👍点赞➕收藏⭐➕评论💭支持杰森呀✌️


今天咱们不聊技术,不谈知识要点,单纯聊聊✒️写博客✒️这件事情,分享下我的收获

阅读全文 »

👲👲作者主页:🔗杰森的博客
📒📒本文摘要Idea 开发常用快捷键总结,祝你一臂之力,不加班!
💖💖感觉本文不错的话,还请各位小伙伴👍点赞➕收藏⭐➕评论💭支持杰森呀✌️

like

🚀1.高频快捷键列表

快捷键 含义
Ctrl+Shift + Enter 语句完成
否定完成,输入表达式时 “!”键
Ctrl+E 最近文件
Ctrl+Shift+E 最近更改的文件
Shift+Click 关闭文件
Ctrl+[ OR ] 可以跑到大括号的开头与结尾
Ctrl+F12 显示当前文件的结构
Ctrl+F7 查询当前元素在当前文件中的引用,按 F3 可以选择
Ctrl+N 快速打开类
Ctrl+Shift+N 快速打开文件
Alt+Q 可以看到当前方法的声明
Alt+Q 可以看到当前方法的声明
Ctrl+P 可以显示参数信息
Ctrl+Shift+Insert 可以选择剪贴板内容并插入
Alt+Insert 可以生成构造器/Getter/Setter等
Ctrl+Alt+V 可以引入变量。例如:new String(); 自动导入变量定义
Ctrl+Alt+T 可以把代码包在一个块内 例如:try/catch
Ctrl+Enter 导入包,自动修正
Ctrl+Alt+L 格式化代码
Ctrl+Alt+I 将选中的代码进行自动缩进编排,这个功能在编辑 JSP 文件时也可以工作
Ctrl+Alt+O 优化导入的类和包
Ctrl+R 替换文本
Ctrl+F 查找文本
Ctrl+Shift+Space 自动补全代码
Ctrl+空格 代码提示(与系统输入法快捷键冲突)
Ctrl+Shift+Alt+N 查找类中的方法或变量
Alt+Shift+C 最近的更改
Alt+Shift+Up/Down 上/下移一行
Shift+F6 重构 – 重命名
Ctrl+X 删除行
Ctrl+D 复制行
Ctrl+/或Ctrl+Shift+/ 注释(//或者/**/)
Ctrl+J 自动代码(例如:serr)
Ctrl+Alt+J 用动态模板环绕
Ctrl+H 显示类结构图(类的继承层次)
Ctrl+Q 显示注释文档
Alt+F1 查找代码所在位置
Alt+1 快速打开或隐藏工程面板
Ctrl+Alt+left/right 返回至上次浏览的位置
Alt+left/right 切换代码视图
Alt+Up/Down 在方法间快速移动定位
Ctrl+Shift+Up/Down 向上/下移动语句
F2 或 Shift+F2 高亮错误或警告快速定位
Tab 代码标签输入完成后,按 Tab,生成代码
Ctrl+Shift+F7 高亮显示所有该文本,按 Esc 高亮消失
Alt+F3 逐个往下查找相同文本,并高亮显示
Ctrl+Up/Down 光标中转到第一行或最后一行下
Ctrl+B/Ctrl+Click 快速打开光标处的类或方法(跳转到定义处)
Ctrl+Alt+B 跳转到方法实现处
Ctrl+Shift+Backspace 跳转到上次编辑的地方
Ctrl+O 重写方法
Ctrl+Alt+Space 类名自动完成
Ctrl+Alt+Up/Down 快速跳转搜索结果
Ctrl+Shift+J 整合两行
Alt+F8 计算变量值
Ctrl+Shift+V 可以将最近使用的剪贴板内容选择插入到文本
Ctrl+Alt+Shift+V 简单粘贴
Shift+Esc 不仅可以把焦点移到编辑器上,而且还可以隐藏当前(或最后活动的)工具窗口
F12 把焦点从编辑器移到最近使用的工具窗口
Shift+F1 要打开编辑器光标字符处使用的类或者方法 Java 文档的浏览器
Ctrl+W 可以选择单词继而语句继而行继而函数
Ctrl+Shift+W 取消选择光标所在词
Alt+F7 查找整个工程中使用地某一个类、方法或者变量的位置
Ctrl+I 实现方法
Ctrl+Shift+U 大小写转化
Ctrl+Y 删除当前行
Shift+Enter 向下插入新行
psvm/sout main/System.out.println(); Ctrl+J,查看更多
Ctrl+Shift+F 全局查找
Ctrl+F 查找/Shift+F3,向上查找/F3,向下查找
Ctrl+Shift+S 高级搜索
Ctrl+U 转到父类
Ctrl+Alt+S 打开设置对话框
Alt+Shift+Inert 开启/关闭列选择模式
Ctrl+Alt+Shift+S 打开当前项目/模块属性
Ctrl+G 定位行
Alt+Home 跳转到导航栏
Ctrl+Enter 上插一行
Ctrl+Backspace 按单词删除
Ctrl+”+/-” 当前方法展开、折叠
Ctrl+Shift+”+/-” 全部展开、折叠
阅读全文 »

Problem 14 Longest Collatz sequence

The following iterative sequence is defined for the set of positive integers:

$$
\large n\rightarrow \frac{n}{2}\ \left ( n\ is\ even \right ) ,n\rightarrow3n+1\ \left ( \ n\ is\ odd \right )
$$

Using the rule above and starting with $13$, we generate the following sequence:

$$
\large 13\rightarrow40\rightarrow20\rightarrow10\rightarrow5\rightarrow16\rightarrow8\rightarrow4\rightarrow2\rightarrow1
$$

It can be seen that this sequence (starting at $13$ and finishing at 1) contains $10$ terms. Although it has not been proved yet (Collatz Problem), it is thought that all starting numbers finish at $1$.
Which starting number, under one million, produces the longest chain?
NOTE: Once the chain starts the terms are allowed to go above one million.

阅读全文 »

👲👲作者主页:🔗杰森的博客
📒📒本文摘要升级驱动到 mysql-connector-java 8.0.28 的注意事项
💖💖如果本文对您有帮助的话,还请各位小伙伴👍点赞➕收藏⭐➕评论💭支持杰森呀✌️


🐛问题描述

升级驱动到 mysql-connector-java 8.0.28 后,部署执行各种报错,但是把连接器切换到 mysql-connector-java-5.1.48 又没有问题,很是疑惑!

报错的信息大都是无法找到该类、无法连接

阅读全文 »

题目来源:【欧拉计划第 12 题】 高度可除的三角数 Highly divisible triangular number

这道题我们在枚举完三角数后,最重要的是去判断何时某个三角数约数的个数大于 500

下面我们来看下,针对计算约数的个数问题,用不同的算法解决,逐步求得最优解

阅读全文 »