半导体元件
二极管
两个极:
P(Positive)积极的;
N(Negative)消极的;
二极管的电子只能从 N -> P [等效于] 电流只能从 P -> N
P极硅晶体参杂3价硼,最外层7电子意图夺取一个电子形成8电子稳态。
N极硅晶体参杂5价磷元素,最外层9电子意图扔掉一个电子形成8电子稳态。
原理
电子的方向从负极->N ->P ->正极,电子从N -> P(能级下降约0.7v,释放能量)
电子如果反向就会从P -> N,即PN结增大,P型空穴被填,N型电子被夺,此时P/N型都不能导电
PN结:P和N结合处P中的P-Si参杂意图失去一个电子,B-Si参杂意图得到一个电子,结合形成PN结。PN结有两层,其中 P层带-电,N层带+电。
正向电压:目标电子势能需大于0.7V左右,从而克服PN结形成的势垒电势,,才能使PN结导通
反向电压:二级管反接PN结拉宽
P区获得电子带负电,空穴载流子消失,不能导电
N区失去电子带正电,电子载流子消失,不能导电
三极管
三极管(又称晶体管)是一种具有三个电极的半导体器件,用 ...
PostgreSQL
初识
PostgreSQL 是一个免费的开源数据库系统,支持关系(SQL)和非关系(JSON)查询。
PostgreSQL是在加州大学伯克利计算机科学系发明的。
它始于1986年的一个项目,目标是创建一个具有支持多种数据类型所需的最小功能的数据库系统。
一开始,PostgreSQL运行在UNIX平台上,但现在它可以运行在各种平台上,包括Windows和MacOS。
参考:
w3schools:PostgreSQL Tutorial
GitHub:postgres
安装
windows 详见:w3schools:Install Introduction
我的电脑使用Arch Linux
Docker安装
参考:
DockerHub:postgres
YouTube:How To Build A Complete JSON API In Golang (JWT, Postgres, and Docker) Part 2
这将创建一个postgres的Docker容器,密码gobank、映射5432端口到主机端口,默认数据库postgres,用户名默认postgres
1docker ...
浅谈多线程
需了解
参考:Piotr Kołaczkowski:How Much Memory Do You Need to Run 1 Million Concurrent Tasks?
多核心
一般情况下,比如嵌入式芯片多核心,一个核心只有一个线程。核心数目一定,操作系统线程数目一定。
线程
超线程:超线程技术(Hyper-Threading Technology)是由英特尔推出的一项技术,它可以在单个物理处理器核心上模拟多个逻辑处理器核心,以提高处理器的并行度和整体性能。一般单核会被模拟出一个线程(共2线程)。
单线程
简单的理解只有一个工人
相当于单核CPU(未使用超线程技术)
人脑就是单线程
多线程
简单的理解同时有多个工人
多核心CPU
使用超线程技术
进程vs线程
对比点
线程(Thread)
进程(Process)
资源共享
共享进程资源,如内存、变量
独立资源,不共享内存
开销
创建、切换成本低
创建、切换成本高
通信方式
直接访问共享变量
需要 IPC(如管道、消息队列、共享内存等)
适用于
I/O 密集型任务(如文件读写、网络请求 ...
Golang
基础数据类型
引用类型是对底层数据结构的引用, 值类型是数据结构的副本。y := x ,如果 x 是一个引用类型,那么 y 将指向与 x 相同的内存地址。但是,如果 x 是一个值类型,那么 y 将获得一个 x 的副本,而不是 x 的地址。
值类型
整数
浮点数
布尔值
数组
结构体
字符串
引用类型
指针
切片
映射
通道
接口
结构体
结构体相当于面向对象中的Class,创建不进行new或者创建实例就不能进行使用,换句话说必须进行实例化后才可以使用。
使用未初始化的结构体变量这种情况下,p 被声明为一个 Person 类型的变量。即使没有显式初始化,Go 语言会自动将其字段设置为零值。你可以安全地访问这些字段。
12345678910package mainfunc main() { var p Person // 声明但未初始化,p 是一个零值初始化的结构体实例 fmt.Println(p.Name) // 输出空字符串 "" fmt.Println(p.Age) // 输出 0}
使用 new ...
浅谈操作系统引导过程
BISO
默认启动项(Boot Loader)数据:引导代码中存储EFI文件路径
无NVRAM,启动代码和分区表存储于磁盘0柱面0扇区(512字节)
UEFI
默认启动项(Boot Loader)数据:NVRAM中存储EFI文件路径
有NVRAM,启动代码存于NVRAM
分区表存储于磁盘最开始位置到1MB空间
启动项编辑工具efibootmgr
efibootmgr可用来修改NVRAM中的数据
执行此命令会打印出在BIOS设置的启动项:
123456789$ efibootmgr BootCurrent: 0000Timeout: 1 secondsBootOrder: 0000,0001,0002,0003,0004Boot0000* Arch Linux HD(1,GPT,c8f79300-07ea-4a02-8bc6-7cb19803be54,0x800,0xfa000)/\EFI\ARCHLINUX\GRUBX64.EFIBoot0001* Mac OS HD(1,GPT ...
OpenWrt
下载ImmortalWrt
Github:immortalwrt
ImmortalWrt官方固件
虚拟机
我这里是通过ProxmoxVE虚拟机进行安装的,于是选择 x86-64-generic-ext4-combined-efi.qcow2.gz 文件
选择固件时候会带有一些名词
EFI:这是 Extensible Firmware Interface 的缩写,是一种用于启动计算机的标准接口。EFI 固件通常用于 x86 架构的计算机,支持 UEFI 启动。
QCOW2:这是一种磁盘映像文件格式,通常用于虚拟机。它支持压缩和快照功能,适用于 QEMU 和 KVM 虚拟化平台。
VDI:这是 VirtualBox Disk Image 的缩写,是 Oracle VirtualBox 虚拟机的磁盘映像格式。
VHDX:这是 Virtual Hard Disk 的缩写,是 Microsoft Hyper-V 虚拟机的磁盘映像格式
VMDK:这是 Virtual Machine Disk 的缩写,是 VMware 虚拟机的磁盘映像格式。
导入ProxmoxVE虚拟机
将此qcow2硬盘 ...
NVM
简述
NVM (Node Version Manager) Node 版本管理器
参考:
Github:nvm
Akamai:Installing and Using NVM
安装
nvm 可工作在任何 POSIX-compliant shell (sh, dash, ksh, zsh, bash), 特别是以下平台: unix, macOS, and windows WSL(Windows Subsystem for Linux).
需提前安装curl/wget
install.sh二选一执行:
1curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
1wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
安装完成后的NVM一般情况下会安装在~/.nvm
执行完成后会提示重新打开Shell或执行重载shell环境的命令,建议重新打开Shell
Arch ...
MongoDB
初识
我们可以将MongoDB看作是一个非常强大的文件存储器,类似于一个巨大的文件夹,可以存储各种各样的文档。这些文档可以是JSON格式的,就像我们在编程中使用的数据结构,其中包含键值对、数组和嵌套的子文档。
MongoDB适用于需要存储大量非结构化数据并具备高度灵活性和可扩展性的应用场景。
MongoDB的用途非常广泛,下面列举几个常见的应用场景:
Web应用程序的数据存储:MongoDB非常适合存储Web应用程序中的数据。它可以存储用户信息、文章、评论、日志等等。由于MongoDB具有灵活的数据模型,可以轻松地修改和扩展数据结构,这对于快速迭代和开发新功能非常有帮助。
实时分析和日志处理:MongoDB支持高度可扩展的数据处理能力,可以用于实时数据分析和日志处理。它可以存储大量的日志数据,并且可以使用强大的查询和聚合功能,从中提取有用的信息和统计数据。
物联网(IoT)应用程序:随着物联网的发展,越来越多的设备生成大量的数据。MongoDB可以作为物联网应用程序的数据存储解决方案,存储设备传感器数据、监控数据、设备状态等信息,并支持快速查询和实时数据处理。
缓存数据存储:Mon ...
浅谈Node-Vue-ES6-调试-编译-前端原理
引入话题
我在使用Vue2开发一个前端项目,由于在代码中经常使用console.log()打印输出某些重要的参数,不过有一个地方忘记注释掉console.log(),此时浏览器正处于开发者模式,打印输出以下数据,这些数据是前端请求后端,我进行了console.log()打印。上线环境中这种console.log()打印肯定是要注释掉的,因为浏览器打印出来的同时后面会标明
运行方式
console.log()打印输出
如果将相关index.vue:159 处的代码在VSCode中注释掉就会出现VM1634 94736:177,这是因为 index.vue:159 处的代码已经注释掉了,浏览器中的此处源代码也会注释,我还以为会剩下编译打包后的静态代码
为了验证VM1634 94736:177是否为编译打包后的静态代码,我重新打包为H5的方式,使用Python自带的HTTP服务器重新部署了一个服务
再次运行到之前的console.log()
点进pages-admin-set_conf-index.720cbcbe.js,此文件其实是由源码src/pages/admin/set_ ...











![JBCT12焊台项目[9号开源]](/images/2026-04-07-JBCT12%E7%84%8A%E5%8F%B0%E9%A1%B9%E7%9B%AE-9%E5%8F%B7%E5%BC%80%E6%BA%90/543717820590162.png)


