当前位置: 首页 > news >正文

ArmSoM RK3588/RK3576核心板,开发板网络设置

ArmSoM系列产品都搭配了以太网口或WIFI模块,PCIE转以太网模块、 USB转以太网模块等,这样我们的网络需求就不止是上网这么简单了,可以衍生出多种不同的玩法。

rk3588/rk3576开发板

1. 网络连接​

连接互联网或者组成局域网都需要满足一个前提–设备需要获取到ip, ip可以理解为设备的名字,局域网内的设备在局域网内可以通过ip进行沟通。 如下 192.168.10.100

armsom@armsom-sige7:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
2: enP4p65s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 92:be:6d:d5:e7:b4 brd ff:ff:ff:ff:ff:ff permaddr 72:d3:55:ba:fe:0ainet 192.168.10.100/24 brd 192.168.10.255 scope global dynamic noprefixroute enP4p65s0valid_lft 34665sec preferred_lft 34665sec

1.1. ping命令​

ping(Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。 它是用来检查网络是否通畅或者网络连接速度的命令

ping的原理: 向指定的网络地址发送一定长度的数据包,按照约定,若指定网络地址存在的话, 会返回同样大小的数据包,当然,若在特定时间内没有返回,就是“超时”,会被认为指定的网络地址不存在

1.2.局域通信​

一个局域网中是必备网关(gateway)的, 我们可以通过ping网关来看自己的ip能不能成功使用,如果连网关都ping不通就证明这个局域网是没有连接起来。

#ping命令
sudo ping + ip地址
  • 成功联网就可以看到有一连串的数据,如下
armsom@armsom-sige7:~$ sudo ping 192.168.10.1
ping: socket: Address family not supported by protocol
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=0.649 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=0.583 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=64 time=0.571 ms
64 bytes from 192.168.10.1: icmp_seq=4 ttl=64 time=0.614 ms
64 bytes from 192.168.10.1: icmp_seq=5 ttl=64 time=0.583 ms
64 bytes from 192.168.10.1: icmp_seq=6 ttl=64 time=0.703 ms

1.3. 连接互联网​

我们可以通过ping网站来查看产品是否连接互联网

#ping命令
sudo ping xxx.com
  • 以baidu.com为例,成功联网就可以看到有一连串的数据,如图下
armsom@armsom-sige7:~$ sudo ping www.baidu.com
ping: socket: Address family not supported by protocol
PING www.a.shifen.com (183.2.172.185) 56(84) bytes of data.
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=1 ttl=52 time=7.83 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=2 ttl=52 time=7.80 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=3 ttl=52 time=8.36 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=4 ttl=52 time=8.39 ms

2. 命令行图形化连接​

  • 进入图形配置
armsom@armsom-sige7:~$ sudo nmtui
  • 移动键盘方向键移动到 Active a connection 按 Enter键 进入wifi设置
  • 移动方向键到你要连接的wifi,按 Enter键
  • 如果是连接未连接的有密码的热点则进入输入密码界面
  • 如果想要断开wifi,在已连接的状态按下 Enter键 就可以断开连接

3. 命令行连接​

  • 列出wifi列表
armsom@armsom-sige7:~$ nmcli dev wifi list
  • 连接wifi

以热点: armsom 密码:armsom88 使用接口wlan0为例

# 第一次连接
armsom@armsom-sige7:~$ sudo nmcli dev wifi connect armsom password 'armsom88' ifname wlan0
Device 'wlan0' successfully activated with '7867c3af-dca2-4e9a-9721-a20f7a0e1b46'.# 第一次连接成功后,再连接或切换wifi后
armsom@armsom-sige7:~$ sudo nmcli dev wifi connect armsom

4. 桌面端连接​

使用有线上网时,请将网线插入RJ45接口。 桌面右上角会有一个网络连接图标,选择你要连接的网络,输入密码就可以上网了。

5. USB共享网络​

todo

6. 静态网络配置​

6.1. nmtui​

  • 设置静态地址前的ip地址
armsom@armsom-sige7:~$ sudo ifconfig
enP4p65s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.10.100  netmask 255.255.255.0  broadcast 192.168.10.255ether 92:be:6d:d5:e7:b4  txqueuelen 1000  (Ethernet)RX packets 23758  bytes 1774543 (1.6 MiB)RX errors 0  dropped 80  overruns 0  frame 0TX packets 67013  bytes 3879463 (3.6 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0device interrupt 155

如果想要成功的设置静态地址需要留意你想要设置的ip地址是否被其他设备占用, 可以用ping 设置的静态地址,如果有数据返回证明ip是被其他设备占用的

这里建议不懂网络配置的萌新可以把静态地址设为动态连接时获得的ip地址

以下为详细步骤

  • 进入图形配置
armsom@armsom-sige7:~$ nmtui 

移动键盘方向键移动到 Edit a connection 按 Enter键 进入wifi设置

选择你要编辑的网络,这里以eth0为例

  • 进入可以看到网络的默认配置

nmtui-network

  • 需要将 IPV4 CONFIGURATION 设置为Manual
  • 然后移动光标到 show 按enter进入详细配置

这里以ip地址192.168.10.13 , 网关 192.168.10.1 为例

ip地址和网关需要根据自己的实际网络情况进行配置, 如果照抄这里的配置,很大机率会让你的产品连不上网, 初级开发者建议将静态ip修改为动态获取的ip

  • 网关的获得方式
#1.将网络设置为自动获取ip#2.成功获取ip后,使用命令
route#结果
root@armsom-w3:/home/armsom# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.10.1    0.0.0.0         UG    100    0        0 enP4p65s0
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 enP4p65s0#3.Gateway就是我们的网关,使用下列命令
route -n#结果
root@lubancat:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.10.1    0.0.0.0         UG    100    0        0 enP4p65s0
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 enP4p65s0#可以看到我们的网关地址 ---- 192.168.10.1
  • 192.168.10.13/24 其中/24表示为掩码255.255.255.0,

  • DNS servers 全国通用DNS–>114.114.114.114 全球通用DNS–>8.8.8.8

  • search domain 可沿用DNS servers设置,

  • DNS servers 和 search domain 可以设置多个。

  • 设置完后,就可以移动到后面点击ok完成设置

  • 完成设置后需要激活设置才能让网络生效,点击 Activate a connection 进入连接,按一次enter取消连接,再按一次enter键重新连接

  • 重新连接后的IP就变成了我们设置的ip了

root@armsom-w3:/home/armsom# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
2: enP4p65s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 92:be:6d:d5:e7:b4 brd ff:ff:ff:ff:ff:ff permaddr be:87:f6:b4:e5:adinet 192.168.10.13/24 brd 192.168.10.255 scope global noprefixroute enP4p65s0valid_lft forever preferred_lft forever
3: wlP2p33s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000link/ether 2c:05:47:8e:4a:6c brd ff:ff:ff:ff:ff:ff
4: wlan1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000link/ether 2e:05:47:8e:4a:6c brd ff:ff:ff:ff:ff:ff

我们还可以使用 ping mi.com 来查看是否成功连接外部网络

root@armsom-w3:/home/armsom# ping mi.com
ping: socket: Address family not supported by protocol
PING sgp.ali.cdn.b2cop.lb.mi.com (161.117.94.231) 56(84) bytes of data.
64 bytes from 161.117.94.231 (161.117.94.231): icmp_seq=1 ttl=87 time=48.8 ms
64 bytes from 161.117.94.231 (161.117.94.231): icmp_seq=2 ttl=87 time=49.5 ms

6.1. nmcli​

以 enP4p65s0 为例,这一步操作和在nmtui的编辑网络一样,只不过从图形界面变成命令行的操作, 命令行里还有各种各样的命名,这里只介绍部分,有兴趣的可以自行探索

#先列出连接的配置,eth0现在连接的是Wired connection 1root@armsom-w3:/home/armsom# nmcli c s
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  e01f934d-7fae-344f-90bf-e2483db3f3e5  ethernet  enP4p65s0
armsom                d3d9a6ff-9c9c-44f8-a366-6a69af1edd1a  wifi      --
armsom 1              7867c3af-dca2-4e9a-9721-a20f7a0e1b46  wifi      --

然后对Wired connection 1进行修改

#静态ip设置
sudo nmcli c modify 'Wired connection 1' [ + | - ]选项 选项值  # 或sudo nmcli c m 'Wired connection 1' ipv4.address 192.168.10.13/24     # 修改 IP 地址和子网掩码
sudo nmcli c m 'Wired connection 1' ipv4.method manual                  # 修改为静态配置,默认是 auto
sudo nmcli c m 'Wired connection 1' ipv4.gateway 192.168.10.1        # 修改默认网关
sudo nmcli c m 'Wired connection 1' ipv4.dns 8.8.8.8                        # 修改 DNS
sudo nmcli c m 'Wired connection 1' +ipv4.dns 114.114.114.114           # 添加一个 DNS
sudo nmcli c m 'Wired connection 1' ipv6.method disabled                            # 将 IPv6 禁用
sudo nmcli c m 'Wired connection 1' connection.autoconnect yes              # 开机启动注意,必须先修改 ipv4.address,然后才能修改 ipv4.method!
用空引号""代替选项的值,可将选项设回默认值(以 ipv4.method 为例):
#激活配置
sudo nmcli c up ifname eth0

配置完后,ip就改变了

armsom@armsom-sige7:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
2: enP4p65s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 92:be:6d:d5:e7:b4 brd ff:ff:ff:ff:ff:ff permaddr be:87:f6:b4:e5:adinet 192.168.10.14/24 brd 192.168.10.255 scope global noprefixroute enP4p65s0valid_lft forever preferred_lft forever
3: wlP2p33s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000link/ether 2c:05:47:8e:4a:6c brd ff:ff:ff:ff:ff:ff
4: wlan1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000link/ether 2e:05:47:8e:4a:6c brd ff:ff:ff:ff:ff:ff

7. 创建WIFI热点​

create_ap是一个帮助快速创建Linux上的WIFI热点的脚本,并且支持bridge和NAT模式,能够自动结合hostapd, dnsmasq和iptables完成WIFI热点的设置,避免了用户进行复杂的配置,github地址如下: GitHub - oblique/create_ap: [NOT MAINTAINED] This script creates a NATed or Bridged WiFi Access Point.

root@armsom-sige7:/home/armsom/create_ap# make install

7.1 create_ap 以 NAT 模式创建 WIFI 热点的方法​

  1. 输入下面的命令以 NAT 模式创建名称为 armsom、密码为 armsom 的 WIFI 热点
armsom@armsom-sige7:~$ sudo create_ap -m nat wlan0 enP2p33s0 armsom armsom

相关文章:

ArmSoM RK3588/RK3576核心板,开发板网络设置

ArmSoM系列产品都搭配了以太网口或WIFI模块&#xff0c;PCIE转以太网模块、 USB转以太网模块等&#xff0c;这样我们的网络需求就不止是上网这么简单了&#xff0c;可以衍生出多种不同的玩法。 1. 网络连接​ 连接互联网或者组成局域网都需要满足一个前提–设备需要获取到ip&a…...

【学Rust开发CAD】1 环境搭建

文章目录 一、搭建C/C编译环境二、安装Rust三、配置 PATH 环境变量四、验证安装结果五、安装编辑工具 一、搭建C/C编译环境 Rust 的编译工具依赖 C 语言的编译工具&#xff0c;这意味着你的电脑上至少已经存在一个 C 语言的编译环境。如果你使用的是 Linux 系统&#xff0c;往…...

数据结构与算法之二叉树: LeetCode 108. 将有序数组转换为二叉搜索树 (Ts版)

将有序数组转换为二叉搜索树 https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/ 描述 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列请你将其转换为一棵 平衡 二叉搜索树 示例 1 输入&#xff1a;nums [-10,-3,0,5,9…...

Java 多线程之@Async

SpringBoot 中使用 Async 使用 Async 注解步骤&#xff1a; 添加 EnableAsync 注解。在主类上或者 某个类上&#xff0c;否则&#xff0c;异步方法不会生效 添加 Async注解。在异步方法上添加此注解。异步方法不能被 static 修饰需要自定义线程池&#xff0c;则可以配置线程池…...

代码随想录day38 动态规划6

题目&#xff1a;322.零钱兑换 279.完全平方数 139.单词拆分 多重背包 背包总结 需要重做&#xff1a;322&#xff0c;139 322. 零钱兑换 思路&#xff1a;零钱&#xff0c;可取多次-》完全背包。 注意&#xff1a; 五部&#xff1a; 1.dp[j]:价值为j的时候&#xff0c;最…...

LabVIEW无标题的模态VI窗口的白框怎么去除?

在LabVIEW中&#xff0c;如果你遇到无标题的模态&#xff08;modal&#xff09;VI窗口显示有一个白框&#xff0c;通常是由于VI界面的一些属性或者控件设置问题导致的。为了去除这个白框&#xff0c;可以尝试以下几种方法&#xff1a; 1. 检查VI窗口属性设置 确保你的VI窗口属…...

iOS - 原子操作

在 Objective-C 运行时中&#xff0c;原子操作主要通过以下几种方式实现&#xff1a; 1. 基本原子操作 // 原子操作的基本实现 #if __has_feature(c_atomic)#define OSAtomicIncrement32(p) __c11_atomic_add((_Atomic(int32_t) *)(p), 1, __ATOMIC_RELAXED) #define …...

Go语言的语法

Go语言入门与实战 引言 在当今的开发环境中&#xff0c;随着互联网的快速发展&#xff0c;程序员们面临着越来越复杂的系统需求。针对这些需求&#xff0c;Go语言&#xff08;又称Golang&#xff09;作为一种新的编程语言应运而生。Go语言由Google开发&#xff0c;它具有简单…...

【MySQL 保姆级教学】用户管理和数据库权限(16)

数据库账户管理是指对数据库用户进行创建、修改和删除等操作&#xff0c;以控制用户对数据库的访问权限。通过账户管理&#xff0c;可以设置用户名、密码、主机地址等信息&#xff0c;确保数据库的安全性和可控性。例如&#xff0c;使用 CREATE USER 创建用户&#xff0c;ALTER…...

什么是 ES6 “模板语法” ?

ES6 提出了“模板语法”的概念。在 ES6 以前&#xff0c;拼接字符串是很麻烦的事情 var name css var career coder! var hobby [coding ,"writing] var finalString my name is name &#xff0c;I work as a career I love hobby[0] and hobby[1]仅仅几…...

[项目实战2]贪吃蛇游戏

目录 贪吃蛇游戏&#xff1a;&#xff1a; 一、游戏效果及功能实现&#xff1a; 1.规则 ​​​​​​​ ​​​​​​​ ​​​​​​​ 2.基本功能实现 ​​​​​​​ ​​​​​​​ ​​​​​​​ 3.技术要点 ​​​​​​​…...

关于FPGA中添加FIR IP核(采用了GOWIN EDA)

文章目录 前言一、IP核二、MATLAB文件三、导出系数COE文件1.设计滤波器2.用官方的matlab代码或者直接用文本文件 四、进行模块化设计源文件 前言 FIR滤波器的特点是其输出信号是输入信号的加权和&#xff0c;权值由滤波器的系数决定。每个系数代表了滤波器在特定延迟位置上的“…...

1. 使用springboot做一个音乐播放器软件项目【前期规划】

背景&#xff1a; 现在大部分音乐软件都是要冲会员才可以无限常听的。对于喜欢听音乐的小伙伴&#xff0c;资金又比较紧张&#xff0c;是那么的不友好。作为程序员的我&#xff0c;也是喜欢听着歌&#xff0c;敲着代码。 最近就想做一个音乐播放器的软件&#xff0c;在内网中使…...

【Dify】Dify自定义模型设置 | 对接DMXAPI使用打折 Openai GPT 或 Claude3.5系列模型方法详解

一、Dify & DMXAPI 1、Dify DIFY&#xff08;Do It For You&#xff09;是一种自动化工具或服务&#xff0c;旨在帮助用户简化操作&#xff0c;减少繁琐的手动操作&#xff0c;提升工作效率。通过DIFY&#xff0c;用户能够快速完成任务、获取所需数据&#xff0c;并且可以…...

【Rust自学】10.8. 生命周期 Pt.4:方法定义中的生命周期标注与静态生命周期

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 10.8.1. 方法定义中的生命周期标注 还记得在上一篇文章 10.7. 生命周期 Pt.3 中所提到的省略生命周期的三条规则吗&#xff1a; 规则1&…...

121 买入股票的最佳时机

思路1&#xff1a; 买的那天一定是卖的那天之前的最小值。 每到一天&#xff0c;维护那天之前的最小值即可。 假设第一天是最小值&#xff0c;最大值初始化为0&#xff0c;当以后某天的价格小于最小值时&#xff0c;将最小值更新 当天价格大于最小值&#xff0c;说明有利可图…...

PID学习资料

TI公司的CONTROLSUITE https://www.ti.com.cn/tool/cn/CONTROLSUITE学点PID专栏-小麦大叔PID控制器算法系列TI公开培训(中文字幕) 电机控制&#xff0c;PI控制器&#xff0c;PID控制器和现场定向控制 书籍&#xff1a; Advanced PID Control先进PID控制及其MATLAB仿真Practic…...

采用标准化的方式开展设计-研发中运用设计模式

概述 实现规范化、标准化的引导式设计&#xff0c;以业务需求为输入&#xff0c;识别业务特点&#xff0c;并通过引导式设计&#xff0c;找到最适合的设计模式、具体方案&#xff0c;汇总成为应用的设计&#xff0c;拉齐各应用的设计一的致性。 采用标准化的方式开展设计…...

【Linux系列】并发与顺序执行:在 Linux 脚本中的应用与选择

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Scala语言的数据库交互

Scala语言的数据库交互 引言 在当今互联网应用的开发中&#xff0c;数据库几乎是每一个应用程序中不可或缺的一部分。选择合适的编程语言和工具与数据库进行交互&#xff0c;对于提升开发效率和应用性能至关重要。Scala作为一种现代的多范式编程语言&#xff0c;结合了面向对…...

AI Agent Harness Engineering 伦理:当机器拥有自主权

当机器握有「方向盘」:AI Agent 驾驭工程(Harness Engineering)的伦理框架与实践指南 第一部分:引言与伦理觉醒 1.1 引人注目的标题与副题 主标题: 当机器握有「方向盘」:AI Agent 驾驭工程的伦理框架与实践指南 副标题: 从伦理红线到可落地的「安全控制杆」—— 为自…...

TwinCAT3 安装避坑与项目兼容性实战指南

1. TwinCAT3安装前的版本匹配策略 第一次装TwinCAT3时&#xff0c;我像大多数工程师一样直接下载最新版本开干&#xff0c;结果打开老项目时直接弹窗报错。后来才发现&#xff0c;TwinCAT3的版本兼容性问题比想象中复杂得多。这里分享几个血泪教训&#xff1a; 版本号玄学不是开…...

LabVIEW网络通讯:TCP连接三菱PLC FX3U ENET-ADP的MC协议网络通讯与程序开发

LabVIEW网络网口TCP通讯三菱PLC FX3U ENET-ADP&#xff0c;MC协议网络通讯FX3U网络通讯。 官方MC协议&#xff0c;报文读取&#xff0c;安全稳定。 程序代开发&#xff0c;代写程序。 通讯配置&#xff0c;辅助测试。 FX3U无程序网络通讯实现。 常用功能一网打尽。 1.命令帧读写…...

YOLOv8头部改进全攻略:从SEAM到MultiSEAM的代码实现与效果对比

YOLOv8头部改进全攻略&#xff1a;从SEAM到MultiSEAM的代码实现与效果对比 在目标检测领域&#xff0c;YOLO系列模型因其卓越的实时性能而广受欢迎。YOLOv8作为最新一代的代表&#xff0c;其头部结构的设计直接影响着检测精度与速度。本文将深入探讨两种创新性头部改进方案——…...

5分钟快速上手:抖音无水印批量下载工具完整指南

5分钟快速上手&#xff1a;抖音无水印批量下载工具完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…...

蓝桥杯10天备战-day3基础算法

二分&#xff1a;int xxlower_bound(a,an,x)-a;返回>x的指针&#xff0c;减去a才是下标int yyupper_bound(a,an,x)-a;二分万能模板&#xff1a;#include<bits/stdc.h> using namespace std; #define int long long int a[10000]; int n, m; bool isblue(int mid) {if …...

C++高性能编程技巧:Phi-4-mini-reasoning解读内存管理与并发模型

C高性能编程技巧&#xff1a;Phi-4-mini-reasoning解读内存管理与并发模型 1. 核心能力概览 Phi-4-mini-reasoning作为新一代代码理解模型&#xff0c;在C高性能编程领域展现出令人印象深刻的分析能力。它能准确识别现代C中的复杂编程范式&#xff0c;特别是对以下关键技术的…...

深入理解 V8 引擎:C++ 与 JavaScript 的跨界传送门

在进行 Chromium 浏览器内核开发的日常中&#xff0c;我们经常需要追踪一段 JavaScript 代码是如何被浏览器执行的&#xff0c;或者一个扩展 API&#xff08;如 chrome.tabs.query 或 chrome.account.login&#xff09;是如何从 JS 穿透到 C 底层的。 当我们顺着 Blink 的 HTM…...

50款创意HTML5错误页模板集锦(403/404/500全适配)

1. 为什么你需要这些HTML5错误页模板&#xff1f; 做网站的朋友都知道&#xff0c;遇到403、404、500这些错误状态码是家常便饭。但很多开发者往往把精力都放在主页面设计上&#xff0c;忽略了错误页面的用户体验。我见过太多网站的错误页面就是一行冷冰冰的文字提示&#xff…...

我用9个AI Agent,从0到1复刻了一个完整的Claude Code

起因4月初&#xff0c;Claude Code的源码泄露了。拿到源码之后通读了一遍&#xff0c;大概1,900个文件、512K行TypeScript代码。看完之后就有了一个想法&#xff1a;能不能用Go把它重写一遍&#xff1f;不是写个Demo玩玩&#xff0c;而是把所有功能都搬过来——CLI入口、LLM查询…...