《星光不问赶路人》节选分享
书籍介绍
书籍简介
这本书的封面背景大概有三个部分:
一个是封面上的银河和星光:象征着梦想、希望和未知的可能性
一个是孤寂辽阔的沙漠:沙漠通常与孤独、挑战和生存斗争联系一起
一个是站在沙漠顶端、张开双手的人:张开的双手象征着开放、接纳和准备迎接挑战的姿态,也表示对成功的渴望和对未知世界的拥抱。
《星光不问赶路人》是由华为全球技术服务部一线员工的真实故事汇编而成的纪实文学作品,由华为高级顾问田涛主编,2022 年 1 月由生活·读书·新知三联书店出版。
这本书通过多个真实案例,生动展现了华为人在全球各地极端环境下完成通信网络交付的艰难历程和感人故事。从珠峰的 5G 网络建设到北极圈内的 GSM 网络搭建,从战火纷飞的战乱地区到地震灾区的通信抢修,书中记录了华为员工在面对自然极限、战争威胁、疫情挑战等重重困难时,如何凭借坚韧不拔的毅力、卓越的专业能力以及团队协作精神,完成了一个又一个看似不可能的任务。
书中不仅展现了华为人在技术领域的卓越成就,更深刻体现了他们在面对困难时的人性光辉和情感力量。通过这些故事,读者可以感受到华为人对技术的执着追求、对客户的高度责任感以及对团队的信任和尊重 ...
TR069协议初探
1. TR069 协议介绍
TR069,全称“Technical Report 069”是由 DSL Forum(一个非盈利性的全球行业联盟,致力于发展宽带网络范,其成员包括通讯、设备、计算机、网络和服务提供商等行业的领先厂商,现已更名为“Broadband Forum”)修订一份技术规范,该规范是应用层的管理协议,命名为“CPE 广域网管理协议(CPE WAN Management Protocol)”,简称 CWMP。这个协议主要用于网管中心远程管理配置数量较大的网络设备。目前主要应用在企业级路由器、一体化皮基站等网络设备的管理,所以 TR069 是一个功能强大的用于数据中心、网管中心管理它所属的所有网络设备的网管协议。
在 TR069 协议定义的网管模型中管理服务器称为自动配置服务器 (ACS),负责完成对用户终端设备 (CPE) 的管理。ACS 与 CPE 之间的接口称为南向接口,ACS 与运营商的其他网管系统、业务管理系统、计费系统 (OSS/BSS) 之间的接口称为北向接口,TR069 协议主要定义南向接口的标准。
TR069 协议网络拓扑如下图,ACS 是在网络中的服务器 ...
AI分享会
AI 的发展史
这几年 AI 的发展十分迅猛,
2022 年年末的 ChatGPT 3.5,大模型对话(起初国内普遍看衰)。
2023 年上半年,ChatGPT4 发布,国内各种大模型也随之蹦了出来,都声称对标 GPT-4,但体验 dddd。
2023 年年末 Copilot 插件和 Cursor 编程,后续的 cursor 接入 claude 让大模型大大提升了生产力。
2024 年,各大厂商逐渐意识到在使用 AI 时数据隐私的重要性,私有化部署浮出水面。
年末的 DeepSeek 横空出世,突然爆火。
新技术的出现,人们往往会展现出担忧和恐惧,其根源在于人们对未知的恐惧以及可能带来的负面影响的担忧。
目前 AI 使用的几种方式:
AI 对话(你问我答)
AI 应用(生成图片、语音和视频等)
嵌入工作流(生成 PPT、AI 智能代码编辑器)
构建 AI 私有知识库
使用 Agent 自动化
大部分人使用 AI,大概都跟我一样,平时常用 AI 对话和生成代码,偶尔用一些现成的服务,例如生成图片、PPT 和翻译文章等,今天来探索一下本地部署模型。
部署 OpenWebUI + ...
Git的使用及出现的问题
Git 的使用及出现的问题
Git教程 Git Bash详细教程-CSDN博客
(´∇`) 被你发现啦~ git与github常用教程 | Only My Ego (onecanx.github.io)
1. Git 基本命令
创建仓库
12初始化一个 git 仓库: git init克隆一个 git 仓库: git clone 仓库链接
设置用户名和邮箱
12git config --global user.name "你的用户名"git config --global user.email "你的邮箱"
添加文件和提交文件
123添加所有文件到缓存: git add . 添加某一文件到缓存: git add 文件名将缓存区内容添加到仓库中(-m 添加提交注释) git commit -m "提交注释"
查看更新状态
1234567查看相关文件的状态(只显示更新的状态): git statusModified: 已修改; Added: 已添加; Deleted: 已删除; Renamed: 重命名查看更新的详细信息(可以 ...
本地安装MySQL数据库以及在Qt中的使用
本地安装MySQL数据库以及在Qt中的使用
本地安装 MySQL 过程
1. 安装 MySQL
下载地址:
MySQL 官网:https://dev.mysql.com/downloads/mysql/
Windows 可以选择两种:msi 和 zip,以下过程是 zip 方法:
2. 新建配置文件
1234567891011121314151617181920212223[mysqld]# 设置3306端口port=3306# 设置mysql的安装目录 ----------是你的文件路径-------------basedir=H:\mysql-9.1.0-winx64# 设置mysql数据库的数据的存放目录 ---------是你的文件路径data文件夹自行创建# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错#datadir=H:\mysql-9.1.0-winx64\data# 允许最大连接数max_connections=200# 允许连接失败的次数。max_connect_errors=10# 服务端使用 ...
重装系统后重新配置hexo和docsify环境
重装系统后重新配置hexo和docsify环境
序言
电脑重装系统后 hexo 和 docsify 环境没了,但还留着两个环境的本地目录,就不用重头来过了,只需要配置一下基础环境就可以继续玩耍了。
过程
1. 安装 git bash 和 Node.js
安装 git bash:
Git - Downloading Package (git-scm.com)
安装 node.js
Node.js — 在任何地方运行 JavaScript (nodejs.org)
查看版本:
12node -v npm -v
npm 换镜像源(镜像源找最新可用的):
1npm config set registry https://registry.npmmirror.com
国内npm源镜像(npm加速下载) 指定npm镜像_npm 国内镜像-CSDN博客
2. 安装 hexo 和 docsify
安装 hexo 环境:
1npm install -g hexo
这时候在原来目录即可使用命令运行预览网站:
1hexo c && hexo g && hexo s ...
Qt-Android环境搭建
Qt 安卓环境搭建
序言
Qt 开发 Android 需要 jdk、ndk、sdk 三个包,并且 Qt 的版本要与这些包的版本对应,否则会出现一堆奇怪的 bug,我的环境如下:
qt 版本:5.14.2
JDK:1.8.0_172
NDK:r20b
SDK:24.4.1
安装时注意安装目录不能有中文,这一点不用多说,网上有些说不能带空格,但我是直接使用默认安装目录的,而默认目录是有空格的,所以这个应该不是大问题,最终我使用默认目录也可以成功。
Qt 和 Android 版本依赖关系:
Getting Started with Qt for Android | Qt 5.15
搭建过程
Qt | Qt For Android、Qt5.14.2安卓开发环境搭建详细步骤_觉皇不秃头的技术博客_51CTO博客
1. 安装 qt
我选择的版本为:5.14.2,勾上 Android 组件,其他按需选择即可,
下载地址(这个可能需要开梯子,镜像源中没找到这个版本,所以我直接开梯子下载了):
Index of /archive/qt/5.14/5.14.2
2. 安装 JAVA JD ...
搭建TeamSpeak服务器
搭建TeamSpeak服务器
需要一台长时间开机以及拥有公网 IP 的电脑,因为没有公网 IP,所以这里就购买了云服务器进行搭建,经过价格对比最终选择了[腾讯云](腾讯云 产业智变·云启未来 - 腾讯 (tencent.com))服务器,初次购买优惠一年 79 元,2 核 2 G、系统盘 50 G、流量包 300 GB/月、带宽 4 Mbps。
Linux 环境安装服务器
准备工作
考虑到安全性,这里新建一个用户存放服务器文件:
1useradd teamspeak
下载和解压压缩包
123wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2tar -xvf teamspeak3-server_linux_amd64-3.13.7.tar.bz2
修改下目录名
1mv teamspeak3-server_linux_amd64-3.13.7 teamspeak3
赋予目录给新建的用户权限
12chown -R teamsp ...
Linux内核锁机制
Linux内核锁机制
Linux 并发与竞争
并发:Linux 系统是个多任务操作系统,会存在多个任务同时访问同一片内存空间,这些任务可能会相互覆盖这段内存中数据,造成内存数据混乱。
并发访问带来的问题就是竞争,竞争并发的执行单元对共享资源(硬件资源和软件上的全局变量)的访问而导致的竞争状态。因此我们需要对共享数据进行保护处理,防止多个任务同时访问它。
并发的原因一般有:
多线程并发访问:Linux 是多任务(线程)的系统,多线程访问是最基本的原因。
抢占式并发访问:Linux 内核支持抢占,调度程序可以在任意时刻抢占正在运行的线程,从而运行其他的线程。
中断程序并发访问:硬件中断的优先级很高。
SMP(多核)核间并发访问:多个 CPU 核存在核间并发访问。
临界资源:多个进程访问的资源,共享数据段。
临界区:多个进程访问的代码段。
Linux 内核锁机制
Linux 内核提供解决竞争的手段有如下几个方法:原子操作、自旋锁、信号量、互斥体。
原子操作
原子操作是指不能再进一步分割的操作,一般原子操作用于整型变量或者位操作
例如 C 语言中的整型变量 a 进行赋值操作,C 语言编译转 ...
Linux-V4L2-USB-Camera
Linux-V4L2-USB-Camera
序言
在 Linux 开发板上使用 V4L2 框架驱动 usb 摄像头。
V4L2 简述
V4L2(Video for Linux 2)是 Linux 内核中用于视频捕获设备的一个 API(应用程序编程接口),它提供了一套标准的方法来访问和控制视频捕获硬件,如摄像头、视频编码器等。
市面上有各种型号各种厂商的摄像头,驱动需要一个一个写很麻烦,于是出现了 v4l2 框架。现在大多数摄像头都适配 v4l2 框架,使用 v4l2 框架可以很方便地驱动各种接口的摄像头。
V4L2 在include/uapi/linux/videodev2.h 文件中定义了一些重要的数据结构,在采集图像的过程中,就是通过对这些数据的操作来获得最终的图像数据。
V4L2 支持两种方式来采集图像:内存映射方式(mmap)和直接读取方式(read),前者一般用于连续视频数据的采集,后者常用于静态图片数据的采集,本次是用摄像头进行视频采集所以使用 mmap 的方式。
应用程序通过 V4L2 接口采集视频数据步骤:
打开视频设备文件(/dev/videoX),进行视频采集的参 ...