软件设计师 - 第1章 计算机网络概论
计算机系统硬件基本组成
- 输入设备:键盘,鼠标
- 输出设备:显示器,打印机...
- 存储器:主存储器,如内存;辅助存储器,如外存
- 运算器:与控制器一同集成在CPU中
- 控制器:与运算器一同集成在CPU中
中央处理单元 CPU
运算器
- 算术逻辑单元 ALU:数据的算术运算和逻辑运算
- 累加寄存器 AC:通用寄存器,为ALU提供工作区,用来暂存数据
- 数据缓冲寄存器 DR:写内存时,暂存指令或数据
- 状态条件寄存器 PSW:存状态标志余控制标志,归属于运算器还是控制器存在争议
控制器
- 程序计数器 PC:存储下一条要执行的指令地址
- 指令寄存器 IR:存储即将执行的指令
- 地址寄存器 AC:保存当前CPU访问的内存地址
- 指令译码器 ID:对指令中的操作码字段进行解析
- 时序部件:提供时序控制信号
寄存器组
- 专用寄存器:运算器和控制器中的寄存器都是专用寄存器
- 通用寄存器
数据表示
进制
常用进制
- 2进制(使用B表示),如10011B,表示19
- 8进制(使用O表示),如23O,表示19
- 16进制(使用H表示),如13H,表示19
- 10进制(使用D表示),如19D,表示19
使用场景
- 主存编址计算
- 段页式存储地址转换
- IP地址转换
进制转换
其他进制 -> 10进制
小数点左右两侧处理逻辑相同,左侧位权从0开始,右侧位权从-1开始,位权...(4)(3)(2)(1)(0).(-1)(-2)(-3)(-4)...,举两个整数的例子:
- 如23O,表示2*8^1+3*8^0=19D,2是最高位数值,8是进制,^1是最高位位权,最低位同理
- 如1234H,表示1*16^3+2*16^2+3*16^1+4*16^0=4660D
10进制 -> 其他进制
除基取余法,直到商为0,基就是进制数,例子:
- 如34H转8进制,34/8=4...2,则42O
其他算法
- 10进制 -> 2进制:减法,记录2的各个位权值,然后计算
- 10进制 -> 8或16进制:(8)421法,每3/4位作为一个数值
定点小数
一般指的是(-1,1)区间的数值,位权(-1)(-2)(-3)(-4)...,例子:
- 如011B,表示0*2^(-1)+1*2^(-2)+1*2^(-3)=0*1/2+1*1/4+1*1/8=3/8=0.375
码制
原码 Sign-Magnitude Representation
通常最高位是符号为,0表示整数,1表示负数,其余位表示该数值
- 由于0的表示数有两个(000...0和100...0),所以原码可表示数值个数,2 ^ n - 1
- 定点整数表示范围,[-2^(n-1)-1,+2^(n-1)-1]
- 定点小数表示范围,[-(1-2^-(n-1)),1-2^-(n-1)]
反码 Ones’ Complement
符号位同原码。当为正时,同原码;当为负数时,其余各位取反表示该数值
- 由于0的表示数有两个(000...0和111...1),所以反码可表示数值个数,2 ^ n - 1
- 定点整数表示范围,[-2^(n-1)-1,+2^(n-1)-1]
- 定点小数表示范围,[-(1-2^-(n-1)),1-2^-(n-1)]
补码 Two’s Complement
符号位同原码。当为正时,同原码;当为负数时,其余各位取反后整体+1表示该数值
- 由于0的表示数只有一个(000...0),所以补码可表示数值个数,2 ^ n
- 定点整数表示范围,[-2^(n-1),+2^(n-1)-1]
- 定点小数表示范围,[-1,1-2^-(n-1)]
移码 Excess-K or Offset Binary
补码的符号位取反,所以移码可表示数值个数,2 ^ n
- 定点整数,[-2^(n-1),+2^(n-1)-1]
- 定点小数,[-1,1-2^-(n-1)]
浮点数表示
表示格式:N = R ^ e * M
- M表示尾数,使用定点小数
- 位数越多表示精度越高,一般使用补码表示,IEEE754标准中使用使用原码书写尾数
- 尾数中一般包含数符,表示尾数的符号位
- e表示阶码,使用定点整数
- 位数越多表示范围越大,一般使用移码表示
- 阶码中一般包含阶符,表示阶码的符号位
- R表示基数,固定为2
浮点数运算
- 对阶:小数向大数看齐,通过较小数的尾数右移实现阶码相同
- 尾数计算
- 结果格式化
校验码
奇偶校验码
可检查奇数位的错误,不可纠错,码距2
- 校验位:1bit,一般在头部,尾部也行
- 奇校验:信息位+校验位 "1" 的个数是奇数
- 偶校验:信息位+校验位 "1" 的个数是偶数
循环冗余校验码 CRC(Cyclic Redundancy Check)
可检错,不可纠错
- 校验位:生成多项式决定,余数0表示正确,一般在尾部
- 模2除法(异或运算——不同为1,不进位,不借位)求余,将余数拼接在信息位后
若信息码字为 111000110,生成多项式 G(x)=x^5+x^3+x+1,则计算出的 CRC 校验码为(11001),步骤如下:
- 将生成多项式的系数作为除数(101011);
- 生成多项式的最高幂次数(5)作为检验码的位数。
- 将信息码左移生成多项式的最高幂次数(5)位,作为被除数。
- 执行模 2 除法,即异或操作。
- 等到(5 位)余数即为校验码,不足左侧补0。
海明校验码
可检错,可纠错
- 公式:2^r -1 >= m + r
- m:信息位的个数,求 r 的最小值
- 校验码位置:1 2 4 8 16 ...
- 采用分组奇偶校验,分组交叉可确定出错位置
以10位数据为例,其海明码表示D9D8D7D6D5D4P4D3D2D1P3D0P2P1中,其中Di(0≤i≤9)表示数据位,P(1≤j≤4)表示校验位,数据位D9由P4、P3和P2进行校验(从右至左D9的位序为14,即等于8+4+2,因此用第8位的P4、第4位的P3和第2位的P2校验),数据位D5由()进行校验。
共14位,D9,14=8+4+2,D5, 10=8+2
Flynn分类
根据指令流、数据流的多倍性特征对计算机系统进行分类,通常称为Flynn分类法
- SISD:单指令单数据
- SIMD:单指令多数据
- MISD:多指令单数据,很少见
- MIMD:多指令多数据
CISC与RISC
| 指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其他 |
| CISC | 数量多,使用频率差别大,可变长格式 | 支持多种 | 微程序控制技术 | 研制周期长 |
| RISC | 数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/Store操作内存 | 支持方式少 | 增加了通用寄存器,硬布线逻辑控制为主,适合采用流水线 | 优化编译,有效支持高级语言 |
复杂指令集 CISC(Complex Instruction Set Computing)
- 指令数量多,使用频率差别大,可变长格式
- 支持多种寻址方式
- 微程序控制技术(微码)
- 研制周期长
精简指令集 RISC(Reduced Instruction Set Computing)
- 指令数量少,使用频率接近,定长格式,大部分为单周期指令
- 操作寄存器,只有Load/Store 操作内存
- 支持方式少量寻址方式,以寄存器寻址为主
- 增加了通用寄存器;硬布线逻辑制为主;适合采用流水线
- 优化编译,有效支持高级语言
流水线技术
流水线技术的前提是个操作可并行,如某条指令的取指不影响其他指令的分析与执行,并且每条指令相同阶段耗时一致,下面介绍流水线技术中的一些概念
流水线建立时间:第一条执行执行时间长度
流水线周期:后续的指令完成时间长度,执行时间最长的一段
流水线执行时间:第一条指令时长 + (n - 1) * 流水线周期
- 理论公式:(t1 + t2 + ... + tk) + (n - 1) * t,没有答案时使用实践公式
- 实践公式:k * t + (n - 1) * t
- k:每条指令操段数量,例如上面的取址、分析、执行,k=3
- t:流水线周期,执行时间最长的一段
流水线吞吐率:单位时间内流水线完成任务量,TP=指令条数/流水线执行时间
流水最大吞吐率:TP=lim(n/(k * t + (n - 1) * t))=1/t
流水线加速比:需要固定执行指令条数,不用流水线时长/使用流水线时长
超流水线技术:细化流水线,增加级数和提供主频。以时间换去空间。
超标量技术:内装多条流水线来同时执行多个处理。以空间换时间。
超长指令技术:提高软件的作用,简化硬件设计,性能提高。
寻址
指令寻址方式
- 顺序:地址顺序执行
- 跳跃:由本条指令指出下一条指令地址
- 指令格式:操作码字段 + 地址码字段
- 操作码:MOV ADD JMP
操作数寻址方式
- 立即寻址方式:操作数直接在指令中,速度快,灵活性差
- 直接寻址方式:指令中存放的是操作数的地址
- 间接寻址方式:指令中存放了一个地址,这个地址对应的内容是操作数的地址
- 寄存器寻址方式:寄存器存放操作数
- 寄存器间接寻址方式:寄存器内存放的是操作数的地址
- 隐含寻址方式:操作数存放在累加器AC中
???有没有一种方式寄存器中存放了一个地址,这个地址对应的内容是操作数的地址
存储系统
层次化存储体系
- 辅助存储器,外存:硬盘,光盘,U盘等,其容量能达到TB级别
- 内存:随机存储器RAM,只读存储器ROM,其容量能达到GB级别
- Cache:按内容存取,其容量能达到MB级别
- CPU中寄存器:最快,容量小,成本高,其容量能达到B级别
- 虚拟存储体系:内存+外存
- 三级存储体系:Cache+内存+外存
局部性原理
局部性原理是层次化存储结构的支撑
- 时间局部性:刚被访问的内容,立即被访问,循环的体现
- 空间局部性:刚被访问的内容,临近的空间很快被访问,顺序的体现,数组
存储器分类
按存储器位置分类:
- 内存
- 外存
按存取方式分类:
- 按内容存取:
- 相联存储器
- Cache
- 按地址存取:
- 随机存取存储器:内容
- 顺序存取存储器:磁带
- 直接存取存储器:磁盘
按工作方式分类:
- 随机存取存储器RAM,内存DRAM,掉电内容丢失,定时刷新
- 只读存储器ROM,BIOS
其他概念
- SRAM:静态随机存取存储器,不需要定时刷新
- EEPROM:电可擦可编程只读存储器
Cache
命中率
命中率会随着容量的扩大而提高,但并非线性的,命中率主要由映射方式决定
平均访问时间
=命中率*Cache访问时间+非命中率*主存访问时间(默认包含了访问Cache不命中的时间)
主存与Cache之间的地址映射有硬件直接完成,映射方式如下:
- 直接相联映像:硬件电路简单,冲突率很高,cache内分块,主存中分区,区内分块,cache内的块只与主存中块号相同的块相联。
- 全相联映像:冲突率低,cache内分块,主存中分块,cache内的块可以和主存中任意块相联。
- 组相联映像:前两者折中,cache内分组,组内分页,主存中分区,区内分组,组内分页,cache内的页只与主存中与其组号相同的组内任意页相连,组间使用直接相联,组内使用全相联。
替换算法
- LRU(Least Recently Used)
- LFU(Least Frequently Used)
- FIFO(First-In, First-Out)
- Random Replacement
- MRU(Most Recently Used)
- ARC(Adaptive Replacement Cache)
- 2Q
- Clock Algorithm
主存编址计算
- 存储单元:一般是8bit,每个存储单元都有一个地址
- 存储单元个数:最大地址-最小地址+1
- 按字编址:这个和系统位数有关
- 按字节编址:8bit一个存储单元
- 总容量:存储单元个数*编址内容
- 总片数:总容量/每片容量
磁盘调度
概述
磁盘中有多个盘面,盘面两面都可存储信息,使用磁头从盘面读取信息;每个盘面可分成多个扇区,每个盘面可分成多个圆形磁道;在不同盘面上的相同位置的扇区成为柱面;读信息时由多个磁头同时读,就会读取同一柱面信息;为什么要有扇区,扇区将磁道分块?应该是读块信息,传输块信息,处理块信息...
调度操作
- 移臂调度:寻找柱面(磁道),按照调度算法调度
- 旋转调度:寻找扇区,按照单向循环寻找
调度算法
- 先来先服务,FCFS
- 最短寻道时间优先,SSTF,可能产生“饥饿”现象
- 扫描算法,SCAN,双向扫描,又称“电梯算法”
- 循环扫描,CSCAN,单向扫描
时间
- 寻道时间:移动到磁道时长,移臂调度
- 旋转延迟时间:移动到扇区时长,旋转调度
- 数据传输时间:读扇区时长
输入/输出技术
数据传输控制方式
- 程序控制(查询)方式:CPU主动查询外设是否完成数据传输,影响CPU效率
- 程序中断方式:CPU无需等待,数据传输完成后进行中断,CPU响应中断。中断请求信号,保存现场,断点,中断向量表
- 中断响应时间:从发出中断请求到进入中断程序间的时长
- 中段处理时间:中断开始处理到中断处理结束的时长
- DMA:直接内存访问,CPU处理初始化后将总线控制权交给DMAC,DMAC进行高速、批量的数据交换,DMAC完成后将总线交给CPU。CPU完成一个总线周期后才会响应DMA请求
编址方式
- 内存与接口地址独立编址方法:指令也不同,用于接口的指令太少,功能太弱
- 内存与接口地址统一编址方法:用于内存的指令也可用于接口
总线结构
通信类型
- 分时双工(半双工):在同一时刻仅允许一个设备发送,同时允许多个设备接收
- 单工:只能是一个方向上传输信息
- 全双工:任意时刻都可双向通信,一般为一条线发,一条线收
分类
按照连接方式分类
- 内部总线:芯片级别的总线
- 外部总线:设备级总线。RS232(串行总线),SCSI(并行总线),USB(通用串行总系)
按照功能分类
- 系统总线:扳级总线。ISA,EISA,PCI
- 数据总线:在CPU和RAM间传递数据
- 地址总线:定位RAM中的数据
- 控制总线:将微处理器控制单元的信号传送到周边设备
按照结构分类
- 串行总线:慢,长距离,波特率可变,可使用程序查询与中断
- 并行总线:快,短距离
- 单总线:设计复杂,性能降低
加密技术和认证技术
加密技术
对称加密
- 数据加密标准,DES,56位
- 三重DES,112位
- RC-5
- 国际数据加密算法,IDEA,128位
- 高级加密标准,AES
- Kerberos,鉴定身份的协议
- 秘钥分发中心,KDC:AS(认证服务器),TGS(票据授予服务器)
- 访问流程:客户端想KDC请求所要访问目标服务器的服务访问票据;客户端拿着票据访问目标服务器。
非对称加密
- RSA,512位
- ECC
- Elganal
- 背包算法
- Rbin
- D-H
信息摘要
- MD5,128位
- SHA-1,160位
认证技术
数字签名
- 公钥:加密,认证(解密证书中的数据)
- 私钥:解密,签名(解密证书中的数据)
数字证书
CA机构颁发给服务端,包含服务端公钥。其中部分使用CA私钥加密(CA签名),客户端使用CA公钥进行对服务端证书的认证。
- X.509#DER 二进制格式证书,常用后缀.cer .crt
- X.509#PEM 文本格式证书,常用后缀.pem
- 有的证书内容是只包含公钥(服务器的公钥),如.crt、.cer、.pem
- 有的证书既包含公钥又包含私钥(服务器的私钥),如.pfx、.p12
- 证书机构CA负责生成和签署数字证书
- 注册机构RA负责验证申请数字证书的用户身份
可靠性
- 平均失效间隔时间 MTBF,Mean Time Between Failure,MTBF=MTTF+MTTR
- 平均失效等待时间 MTTF,Mean Time To Failure
- 平均失效修复时间 MTTR,Mean Time To Restoration/Repair
- 可靠性一般使用MTTF/(MTTF+ 1)表示
- 可用性一般使用MTBF/(MTBF+ MTTR)表示
- 可维护性一般使用1/(MTTR+ 1)表示
性能指标
- 字长和数据通路宽度:与总线宽度有关
- 主存容量和存取速度:多大内存,DDR3
- 主频与CPU时钟周期:2.4GHz,时钟周期是其倒数
- CPI与IPC:每条指令使用的时钟周期,每个时钟周期执行的指令条数
- MIPS与MFLOPS:每秒执行百万条指令,每秒执行百万条浮点数运算指令
- 吞吐量与吞吐率:单位时间内执行指令条数
- 响应时间RT与完成时间TAT:从指令开始请求到响应完成时间,完成时间就是从开始处理到处理完成的时间
- 兼容性
- 响应时间、并发用户/并发、点击率、吞吐量、TPS/QPS、PV/UV
计算机
时钟频率,运算速度,运算精度,内存容量,存储器存储周期,数据处理速率,吞吐率,各种响应时间,各种利用率,RASIS特性(可靠性,可用性,可维护性,完整性和安全性),平均故障时间,兼容性,可扩展性,性能价格比
路由器
设备吞吐量,端口吞吐量,丢包率,时延,时延抖动
网络
设备级性能指标,网络级性能指标,应用级性能指标,用户级性能指标,端口吞吐量,数据丢包率
操作系统
系统的可靠性,系统的吞吐率,系统响应时间,系统资源利用率,可移植性
数据库管理系统
数据库大小,数据库中表的数量,单个表大小,表中允许的记录行数,单个记录大小,表上允许的,索引数量,数据库允许的索引数量,最大并发事务处理能力,负载均衡能力,最大连接数,查询语句性能
WEB服务器
最大并发连接数,响应时间,吞吐量,可用性
性能评价
常用方法
- 时钟频率
- 指令执行速度
- 等效指令速度法
- 数据处理速率
基准程序测试
- 真实程序
- 核心程序
- 小型基准程序
- 合成基准程序
上述评价程序评测准确程度依次递减
应用最频繁的那部分核心程序作为评价计算机性能的标准程序
运行一个标准程序对多种计算机系统进行检查,以比较和评价它们的性能
对计算机进行负载测试就是运行某种诊断程序,加大负载,检查哪个设备会发生故障。
在程序模块测试后进行的集成测试,主要测试各模块之间的接口是否正常起作用。
白盒测试就是根据程序内部结构和内部逻辑,测试其功能是否正确。
事务处理性能委员会 TPC Transaction Processing Performance Council
基准程序用以评测计算机在事务处理、数据库处理、企业管理与决策支持系统等方面的性能
该基准程序的评测结果用每秒完成的事务处理数TPC来表示
TPC-A基准程序规范用于评价在OLTP环境下的数据库和硬件的性能,不同系统之间用性能/价格比进行比较;
TPC-B测试的是不包括网络的纯事务处理量,用于模拟企业计算环境;
TPC-C是专门针对联机事务处理系统(OLTP)的测试标准;
TPC-D、TPC-H和TPC-R测试的都是决策支持系统,其中TPC-R允许有附加的优化选项;
TPC-E测试的是大型企业信息服务系统。
TPC-W是基于Web 应用的基准程序,用来测试一些通过Internet进行市场服务和销售的商业行为,所以TPC-W可以看作是一个服务器的测试标准。
阿姆达尔解决方案
主要用于系统性能改进的计算中
计算机系统中对某一部件采用某种更快的执行方式所获得的系统性能改变程度,取决于这种方式被使用的频率,或所占总执行时间的比例
相关文章:
软件设计师 - 第1章 计算机网络概论
计算机系统硬件基本组成 输入设备:键盘,鼠标输出设备:显示器,打印机...存储器:主存储器,如内存;辅助存储器,如外存运算器:与控制器一同集成在CPU中控制器:与…...
方案丨车险保单OCR:3秒钟完成保单审核
在涉及车辆交易的各种情况下,记录和管理车险保单信息是一项必不可少的任务。然而,面对数量庞大的电子保单,传统的手工录入方式显得尤为低效——它不仅消耗大量时间,而且容易出现错误,这不仅影响了用户的满意度…...
Jmeter中的监听器(一)
监听器 1--查看结果树 用途 调试测试计划:查看每个请求的详细信息,帮助调试和修正测试计划。分析响应数据:查看服务器返回的响应数据,验证请求是否成功。检查错误:识别和分析请求失败的原因。 配置步骤 添加查看结果…...
C++ 标准库 std::vector 的介绍
std::vector 是 C 标准库中的一个动态数组容器,它提供了多种成员函数来管理其内部存储的元素。以下是一些常用的 std::vector 成员函数的介绍: 构造函数和析构函数 vector(): 默认构造函数。vector(size_type n): 构造一个包含 n 个元素的向量…...
鸿蒙开发-装饰器@Link问题
正常示例 class Parent {public count: number;constructor( count: number) {this.count count;} } Entry Component struct TestPage {State parent: Parent new Parent( 11)build() {Column() {SubComponent({ parent: this.parent })}.height(100%)} } Component struct…...
CTFhub靶场RCE学习
靶场 eval执行 <?php if (isset($_REQUEST[cmd])) {eval($_REQUEST["cmd"]); } else {highlight_file(__FILE__); } ?> PHP代码显示,要求将命令赋值给cmd然后执行 先查看一下根目录文件 ?cmdsystem("ls");!切记最后的分…...
一文3000字从0到1带你进行Mock测试(建议收藏)
什么是mock? mock测试是以可控的方式模拟真实的对象行为。程序员通常创造模拟对象来测试对象本身该具备的行为,很类似汽车设计者使用碰撞测试假人来模拟车辆碰撞中人的动态行为 为什么要使用Mock? 之所以使用mock测试,是因…...
数据结构 ——— 链式二叉树的销毁(释放)
目录 链式二叉树示意图 手搓一个链式二叉树 代码实现 示意图 手搓一个链式二叉树 代码演示: // 数据类型 typedef int BTDataType;// 二叉树节点的结构 typedef struct BinaryTreeNode {BTDataType data; //每个节点的数据struct BinaryTreeNode* left; //指向…...
log4j异常堆栈文件输出
目的:log4j异常堆栈关联到traceId一句话中,方便搜索 1、获取堆栈后一起打印 private void logException(Throwable t, ProceedingJoinPoint joinPoint) {if (this.printErrorStackSys) {StringWriter sw new StringWriter();PrintWriter pw new Print…...
在配置环境变量之后使用Maven报错 : mvn : 无法将“mvn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
最近,我在 Windows 系统上安装和配置 Apache Maven 时遇到了一些问题,想在此记录下我的解决历程,希望对遇到类似问题的朋友有所帮助。 问题描述 我下载了 Maven 并按照常规步骤配置了相关的环境变量。然而,在 PowerShell 中输入…...
SpringSecurity源码中核心类
SpringSecurity源码 第一部分 核心类 SecurityBuilderHttpSecurityWebSecuritySecurityFilterChainFilterChainProxy SecurityBuilder是安全构架器,HttpSecurity和WebSecurity都是SecurityBuilder的实现类,HttpSecurity通过build()构建了一个Security…...
【JAVA】使用IDEA创建maven聚合项目
【JAVA】使用IDEA创建maven聚合项目 1.效果图 2.创建父模块项目 2.1删除父模块下面的src目录以及不需要的maven依赖 3创建子模块项目 3.1右击父模块项目选择Module… 3.2创建子模块 3.3删除子模块下不需要的maven依赖 4.子模块创建完成后引入SpringBoot依赖启动项目...
猿创征文|Inscode桌面IDE:打造高效开发新体验
猿创征文|Inscode桌面IDE:打造高效开发新体验 引言 在当今快速发展的软件开发领域,一个高效、易用的集成开发环境(IDE)是每个开发者必不可少的工具。Inscode 桌面 IDE 作为一款新兴的开发工具,凭借其强大…...
概率论中的PMF、PDF和CDF
在概率论中,PMF(概率质量函数)、PDF(概率密度函数)和CDF(累积分布函数)是描述随机变量分布的三个重要概念。它们分别用于不同类型的随机变量,并帮助我们理解随机事件的概率特性。本文…...
Vue 简单入手
前端工程化(Front-end Engineering)指的是在前端开发中,通过一系列工具、流程和规范的整合,以提高开发效率、代码质量和可维护性的一种技术和实践方法。其核心目的是使得前端开发变得更高效、可扩展和可维护。 文章目录 一、Vue 项…...
Github配置ssh key原理及操作步骤
文章目录 配置SSH第一步:检查本地主机是否已经存在ssh key第二步:生成ssh key第三步:获取ssh key公钥内容第四步:Github账号上添加公钥第五步:验证是否设置成功验证原理 往github上push项目的时候,如果走ht…...
大循环引起CPU负载过高
一、问题背景 环境:jdk1.8 tomcat7 在一次发布时,cpu出现负载过高,其负载突破200%,并且响应时间也大幅度超时。 二、问题分析 【1】发布前做过压测,并没有发现cpu异常升高的现象,所以其可能与生产环境的请…...
[Java]微服务治理
注册中心原理 注册中心可以统一管理项目中的所有服务 服务治理中的三个角色分别是什么? 服务提供者: 暴露服务接口,供其它服务调用服务消费者: 调用其它服务提供的接口注册中心: 记录并监控微服务各实例状态,推送服务变更信息 消费者如何知道提供者的…...
深入解析C语言中的extern关键字:语法、工作原理与高级应用技巧
引言 在C语言中,extern 关键字是一个强大的工具,用于声明外部变量和函数,使得这些变量和函数可以在多个源文件之间共享。理解 extern 的工作原理和最佳实践对于编写模块化、可维护的代码至关重要。本文将深入探讨 extern 关键字的各个方面&a…...
元器件封装
元器件封装类型 为什么越来越多用贴片元件,而不是插件元件 为什么越来越多用贴片元件,而不是插件元件 1.体积小、质量小、容易保存和运输; 2.容易焊接和拆卸。抗震效果好。 贴片元件不用过孔,用锡少。直插元件最麻烦的就是拆卸&a…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
