Memory 手臂霓虹灯:什么';vld4_f32和vld4q_f32的区别是什么?

我无法区分ARM霓虹灯指令中的vld4_f32和vld4q_f32之间的区别 当我提高编码级别,开始查看汇编指令而不是信息量较小的内部函数时,开始出现混乱 我需要在这里使用vld4变量指令的原因是,我想从我的大数组的每个4位置捕获4float32\t vld4_f32intrinsic和相应的组装说明如下所示() vld4q_f32intrinsic及其相应的汇编指令如下所示 float32x4x4_t vld4q_f32 (const float32_t *) Form of expect

Memory Qt中的基本I/O

我希望以与写入文件(使用数据流)相同的方式读取/写入内存。我找不到适合这个的类,但我确信它存在。Qt框架中此类类的名称是什么?查看从QIODevice继承的类 我不清楚你想要什么,但很可能是在那里。例如,听起来你想要一个QBuffer,但如果你说的是在操作系统级别写入共享内存,那么这就不一样了

Memory 数组或malloced内存的mmap()

我试图使用mmap()查找数组的内存映射或从malloc()分配的一些内存,但它显示的参数无效 #include<stdio.h> #include<sys/mman.h> #include<stdlib.h> int main() { int *var1=NULL; size_t size=0; size = 1000*sizeof(int); var1 = (int*)malloc(si

Memory Windows中的Erlang-进程增加?

我正在使用Erlang,并且刚刚开始使用它。我在Windows中不断遇到进程限制,却不知道如何提高进程限制 我正在使用WERL.exe,希望您能使用命令来增加这个值 谢谢在您的windowscmd提示符中,您可以通过在终端提示符上键入erl并点击Enter来启动erlang shell。但是,只有在windows$path环境变量中有erl.exe完整路径时,这才有效。这应该是我的机器上的文件夹:C:\ProgramFiles(x86)\erl5.8.5\bin,用于最新的Erlang。我相信您

Memory 为什么64位对齐异或的运行速度不快于32位对齐异或?

我想测试两个内存块的速度,我在64位机器(4M缓存)上做了一个实验,分别对32位对齐和64位对齐的两个内存区域进行异或。我认为64位对齐区域的异或比32位对齐区域的异或快得多,但两种异或的速度是相同的 代码: void region\u xor\u w32(无符号字符*r1,/*区域1*/ 无符号字符*r2,/*区域2*/ 无符号字符*r3,/*和区域*/ int nbytes)/*区域中的字节数*/ { uint32_t*l1; uint32_t*l2; uint32_t*l3; uint32

Memory 为什么malloc/new会返回指向块中间的指针?

一般背景: 我试图分析发生堆损坏的转储。堆损坏发生在std::vector.push_back中-当超过向量容量且需要更多空间时,调用旧向量的“free”失败 分析详情: 从转储的分析中,我看到“释放”的指针位于一个现有的“HeaPixEnter”块的中间。我通过使用“!heap-h”枚举相关堆的所有块,发现空闲块位于两个现有块之间(它们之间的差异非常显著,当然不仅仅是8-16字节的元数据,或者类似的东西) 问题: 以前的堆损坏是否会导致堆管理器将地址返回到块的中间,从而在尝试释放它时必然导致崩

Memory Can';不保存到闪存?

我正在使用以下库来擦除/写入/读取内存,但不幸的是,我试图保存的数据似乎没有写入闪存。我正在使用带有MPLAB XC8编译器的PIC18F87j11。另外,当我尝试写入PIC后从PIC读取程序内存时,地址0x1C0CA上没有数据。我做错了什么 char read[1]; /* set FOSC clock to 8MHZ */ OSCCON = 0b01110000; /* turn off 4x PLL */ OSCTUNE = 0x00; TRISDbits.TRISD6 = 0;

Memory Cocos2d不释放内存

我有一个Cocos2d游戏,包含3个“世界”之间的加载。要做到这一点,应用程序使用: [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:spriteSheetName]; 要卸载加载中的上一个“世界”,我需要: [[CCSpriteFrameCache sharedSpriteFrameCache]removeSpriteFramesFromFile:plist]; NSString * textureFi

Memory 从unity3d中的url异步获取图像

我正在制作一个游戏,在这个游戏中,我需要像在地铁冲浪者中一样,集成Facebook leader board和Facebook好友邀请。我使用了官方的facebook sdk并完成了它。但我所遵循的方法并不有效 我的好友邀请屏幕有自己的UI,因此我无法使用facebook SDK附带的默认弹出窗口。 我从graph api获取所有好友列表,它为我提供了所有用户ID的列表。但我需要在滚动列表中显示朋友的姓名和图片。我正在从url异步获取图像,但每当我尝试获取图像时,我的滚动列表就会挂起。这是我的密

Memory 64位体系结构页表大小

我已经看到了一些关于32位页表的示例,大多数都假设页表条目为4字节。我想知道64位体系结构是否以同样的方式工作?如果我想在64位1中实现2级和3级页表,页表大小范围有什么区别?英特尔64位支持4kb、2mb和1GB页。32位体系结构和64位体系结构太模糊了。如果你指的是IA32和AMD64/EMT64,也可以这么说。我一般可以使用64位地址吗@user2864740A 64位计算机并不意味着64位寻址。例如,在AMD64上,它是48位虚拟、52位物理IIRC(但嘿,我不是计算机工程师!)。32位

Memory 我有一个64位操作系统,但Mathematica没有完成评估

我一直对mathematica计算积分的方法有问题。它是一个多重积分,外部积分是一个countour积分。当我按“Shift+Enter”运行mathematica时,它表示它正在运行,但一段时间后它停止计算,并且不给出任何输出 文章说,在64位操作系统上,Mathematica将自由使用所有可用内存,并使系统停止,而在32位操作系统中,分配给任何一个程序的最大内存是有限的 虽然我有一个64位操作系统,但我尝试使用MemoryConstrained设置了1G上限,但Mathematica仍然停止

Memory Actionscript-带绘图API的心率监视器?

大家晚上好。我有一个movieclip,它可以监控和绘制进入的活动水平,就像医院的心率监视器一样。图形会将数据从屏幕上滚动下来,但movieclip永远不会被清除,屏幕外的数据会无限期地累积。用户停留在页面上的时间越长,图形中看不见的部分占用的内存就越多 清理电影中看不见的部分最好的方法是什么 代码如下: this.stage.addEventListener(flash.events.Event.ENTER_FRAME, function(event){ var dif = md.

Memory 内存映射I/O的含义是什么?

这是否意味着I/O设备的缓冲区在总内存空间中被分配了地址,就像主内存的字节被分配一样???差不多。并不是说必须映射实际的外围硬件缓冲区,而是操作系统/映射程序会以某种方式处理它。基本上就是这样。您有I/O设备,可以监视处理器的地址线(以及数据线和控制线),以“捕获”某些地址并对其进行操作 例如,您可能有一个内存映射键盘设备(使用address0xff00),该设备基本上从物理键盘收集击键,并对其进行缓冲,以备处理器接收 因此,当它看到地址行上的地址0xff00和读取信号(例如memio行和r/n

Memory 使用valgrind获取两点之间的泄漏

我正在使用valgrind查找和跟踪内存问题。现在我想做这样的事情: before = getValgrindState(); do_something_curious(); after = getValgrindState(); difference = after - before; std::cout << difference; before=getValgrindState(); 做一些奇怪的事; after=getValgrindState(); 差异=之后-之前; 你

Memory 如何在asm中将内存范围推送到堆栈中?

是否有将一定范围的内存推送到堆栈的选项 使用foo resd x我可以保留x个地址连续的双字 有没有一个选项可以将所有双字从addressfoo推送到addressfoo+(4*x)到堆栈中?这是汇编程序在编译时无法完成的。堆栈操作需要在运行时由代码完成。这不能由汇编程序在编译时完成。堆栈操作需要在运行时由代码完成。这取决于CPU,您还没有指定它(我猜它是x86,因为resd是nasm保留内存的方式,而nasm仅是x86) 没有x86指令可以在堆栈上推送任意数量的(d/q)字。你可以在一个循环中

Memory ScrollView内存问题

我正试图将50张png图像加载到scrollview中,我选择了延迟加载。但我仍然有很大的内存问题,当我滚动30页时,我的应用程序崩溃了 请帮助我理解为什么会发生这种情况,我的代码是: UIImage *1 = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"30" ofType:@"png"]]; .... imageArray = [NSArray arrayWithObjects:1,2,3

Memory 什么导致CUDA中的指令重放开销

我在我的CUDA应用程序上运行了可视化分析器。如果数据太大,应用程序会多次调用单个内核。这个内核没有分支 探查器报告了高指令重放开销为83.6%,以及高全局内存指令重放开销为83.5% 以下是内核的总体外观: // Decryption kernel __global__ void dev_decrypt(uint8_t *in_blk, uint8_t *out_blk){ __shared__ volatile word sdata[256]; register uint3

Memory 将十进制值分隔为最小值&;最高有效字节

我正在处理一些65802代码(不要问:p),我需要将一个16位的值分成两个8位的字节来存储在内存中。我该怎么办 编辑: 另外,如何将两个相似的字节合并成一个16位值 编辑: 为了澄清这一点,互联网上的许多解决方案都不可能与我使用的编程语言(MS-BASIC的一个版本)配合使用。我不能取模,也不能左移或右移。我已经发现,我可以通过将高字节乘以256并将其添加到低字节来将两个字节放在一起,但我该如何逆转这个过程?事实上,我不是在使用Minecraft中改装的Redpower Control 65EL

Memory 如何同时在多个精灵上运行操作

我是cocos2d的新手。我正在编写我的第一个应用程序。但我有个问题,我解决不了。问题是,当我移动多个精灵时,除了最后一个之外,其他精灵都正常。我希望我的精灵同时运行动作。但我不知道如何修复它。任何关于推广我的代码的想法或建议。谢谢 这是我的密码 -(void) setHeadFace:(Face *)headFace moveFrom:(CGPoint)startPosition moveTo:(CGPoint)endPosition` { CCMoveTo *moveOu

Memory CUDA-同步线程->;等到第一个完成写作

我正在尝试做以下(简化):请阅读编辑部分 __shared__ int currentPos = 0; __global__ myThreadedFunction(float *int, float *out) { // do calculations with in values ... // now first thread reach this: //suspend other threads up here out += currentPos;

Memory 清理子进程地址空间的方法,即使它仍然存在

在我的过程中,我创建了10个线程,并将使用这些线程,直到我的应用程序处于活动状态。每个线程每次都会执行一些文件输入和输出操作。所以问题是每次线程开始执行时,我的进程虚拟内存都会增加。 我的分析是,当一个文件输入输出任务被分配给线程时,当线程开始复制文件时,文件将被加载到线程地址空间,复制完成后,线程地址空间将不会被清除,因为线程仍然没有退出。因此,如果我再次为线程分配另一个任务,那么新文件将加载到线程地址空间 因此,主进程虚拟内存地址空间将增加。因此,如果我错了,请纠正我的错误,如果进程在日志时

Memory 使用boundsChecker检测内存泄漏

我正在用boundsChecker检测我的源代码以进行内存检测,但当我用 原生c/c++工具管理器的错误检测工具类型,我得到 生成错误。当我看到输出窗口时,它显示在检测此错误期间使用的NM2002:Inline expansion(/Ob) 但当我选择instrumentation类型作为性能或覆盖率分析时,源代码正在成功构建,但当我运行测试用例检查内存泄漏时,它没有显示任何内存泄漏。。 有人能帮我吗。。。 另外,请建议我使用哪种类型的仪器来检测内存泄漏。关于检测内存泄漏,您需要激活“内存跟踪”

Memory 我可以直接从设备到主机STL向量中CudAMCPY吗?

正如标题所说的-我计划通过STL向量.reserve()主机上的一些内存,然后cudaMemcpy从设备到主机的数组(即进入保留的主机内存) STL向量是否会发现我(通过外部方法)已将新数据复制到向量中?也就是说,它是否正确 确定它应该是什么新尺寸 允许我通过索引或迭代器访问数据吗 通常表现为预期的行为,即与任何法向量一样 STL向量是否会根据我所拥有的事实(通过外部方法)进行识别 将新数据复制到向量中?也就是说,它是否正确 不,它不会,因为您只保留了,而没有实际调整向量的大小reserve

Memory 如何知道ffmpeg中一个AV数据包的大小?

我正在使用ffmpeg库。我想知道一个包能占用多少内存。 我调试以检查AVPacket上的成员,但它们似乎都不合理,例如AVPacket.size,ec。AVPacket::size保存引用数据的大小。因为它是一个通用的数据容器,所以这个问题没有明确的答案 一个数据包可以占用多少内存 它实际上可以从零到很多。一切都取决于数据类型、编解码器和其他相关参数 根据FFmpeg示例: static void audio\u encode\u示例(const char*filename) { // ...

Memory 如何使用可用的RAM(32GB)和多核CPU处理器直接调整或运行Java程序

我有一台32GB的高端机器,我想有效地利用Java进程可用的RAM。实际上,我已经看到,我可以在一个盒子中运行最多3个JBoss实例(或Java进程),最大堆大小为3GB,但仍然没有使用20GB的可用空间。有没有可能创建一个Java程序,它可以像C++一样有效地直接使用RAM,而不依赖Java内存模型在JVM上创建对象,也不依赖GC回收内存。我指的是直接使用RAM的Java程序

Memory 静态std::C+中的向量+;功能

我有一个函数foo(),它声明并使用std::vector,例如: int foo(int n, ... other args) { vector<int> myVett(n); // foo is used for computation } intfoo(intn,…其他参数) { 载体myVett(n); //foo用于计算 } main()多次调用foo(): int main() { //... for(int ii = 0; ii < 1e3

Memory 我可以使用物理寻址的内存指针从RAM加载数据吗?

我可以使用指向内存的指针从我的驱动程序(Linux内核)加载数据,而不在虚拟寻址中分配页面(PDE/PTE)吗?是!“/dev/mem”是物理内存的映像,您甚至可以从用户空间访问它 例如,要访问物理地址0x7000000,下面的代码总结了以下步骤: fd = open("/dev/mem", O_RDWR); map = mmap(NULL, SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0x7000000); 什么是“CPU-RAM”?有一个CP

Memory 在Arduino和#x27之间读写结构;可编程只读存储器

我正在尝试将C中定义的数据结构写入Arduino Uno板的非易失性内存,因此在断电或重置后,结构的值将保留。 据我所知,唯一的方法(在草图运行时)是写入arduino的EEPROM。虽然我可以写入单个字节(在地址0处设置值为1的字节): 我一直在努力写一个完整的结构: typedef struct NewProject_Sequence { NewProject_SequenceId sequenceId; NewProject_SequenceLength maxRange;

Memory 数组缓存是否为本地数组?

如果一个数组 [1,2,3,4,5,6] 存在于连续的内存块中,是否存在数组数组 [[1,2,3],[4,5,6]] 是否必须具有相同的缓存位置 在数组的情况下,数组本身将具有与元素数组相同的局部性属性,因为这种情况没有什么不同-这里的“元素”是数组。然而,每个子数组的元素在内存中是否与另一个子数组的元素相邻取决于子数组的实现 因为你没有指定语言,我将用C++语法来演示,但是这根本上是语言不可知的,因为它涉及到硬件的各个方面。如果数组的数组与C++代码> STD::vector < /C>

Memory 在无效内存访问中,内部实际发生了什么?

我想知道当你试图访问一个非法的内存地址时,内部到底发生了什么 我的意思是,我知道你会遇到分段错误,但在设备(微芯片或CPU)中到底发生了什么 例如: int *p = NULL; *p = 0; 提前谢谢你 在“底部”,请参见,-这些被处理(fsvo)并通过操作系统向上传播。在“底部”,请参见,-这些被处理(fsvo)并通过操作系统向上传播

Memory 英特尔80386程序员&x27;s参考手册:解释示例数据结构

在存储器中数据结构的图示中,较小的地址出现在图的右下部分;地址向左和向上增加。位位置从右向左编号。图1-1说明了这一惯例 据我所知,大多数现代计算机都是字节可寻址的,这意味着位的组合对应于内存中的一个字节。我的问题是如何将其转化为上面给出的示例图 我看到图1-1按顺序显示了32个字节,当我们移向左上角时,每个字节的地址都在增加,但对于位偏移量,我感到困惑。位偏移量与字节的关系如何?特别是最上面的数字0,7,15,23,31 我在imgur的链接上得到了一个404。一个字节通常(总是在x86上)由

Memory MIPS双字边界和堆栈指针

在MIPS中,为了存储双精度(8字节),堆栈指针$sp递减4: addi $sp, $sp, -4 s.d $f10, 0($sp) 这对我来说没有意义,因为内存中占用了8个字节,但堆栈指针移动时就好像使用了单个字边界一样。要存储两个double,堆栈指针似乎应该减少12,而不是预期的16: addi $sp, $sp, -12 s.d $f10, 0($sp) s.d $f12, 8($sp) 为什么会发生这种行为?如果递归调用子例程(第一次对齐,第二次

Memory NSData访问字节导致内存泄漏

我使用NSData对象来维护内存数据。但是当我使用NSData.bytes访问内存数据时。这将导致内存泄漏。 示例代码如下所示: char buf[12]; @interface ViewController () @property (nonatomic, copy) NSData *tempData; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self

Memory 关于ARM处理器端性的混淆

我对手臂装置的末端很困惑。我正在测试的设备使用little endian 假设这里有一段代码可以交换数组中的元素: uint32_t* srcPtr = (uint32_t*)src->get(); uint8_t* dstPtr = dst->get(); dstPtr[0] = ((*srcPtr) >> 16) & 0xFF; dstPtr[1] = ((*srcPtr) >> 8) & 0xFF; dstPtr[2] = (*srcP

Memory 为什么x86#u64内核中有这么大的虚拟地址';内存布局

内核的文档/x86/x86_64/mm.txt说: ffff880000000000 - ffffc7ffffffffff (=64 TB) direct mapping of all phys. memory 所以我假设在这个区域中不应该有大于实际物理DRAM大小的地址映射。但在带有16GB DRAM和内核v4.2.8的x86_64 PC上,我从/sys/kernel/debug/kernel_page_表中得到了以下结果: ---[ Low Kernel Mapping ]--- ...

Memory CUDA_错误\u内存不足:如何在Tensorflow中从Keras激活多个GPU

我正在使用Keras在tensorflow上运行一个大型模型,在培训即将结束时,jupyter笔记本内核停止运行,在命令行中出现以下错误: 2017-08-07 12:18:57.819952: E tensorflow/stream_executor/cuda/cuda_driver.cc:955] failed to alloc 34359738368 bytes on host: CUDA_ERROR_OUT_OF_MEMORY 我想这很简单——我的内存快用完了。我有4个NVIDIA

Memory 如何查找程序使用的内存量?

我正在用BlueJ运行几个Java程序。我想知道程序对给定的输入值使用了多少内存。有什么方法可以做到这一点吗?1)以获得Java应用程序可以使用的最大内存量: 2) 要获取JVM为应用程序分配的内存量,请执行以下操作: Runtime runtime = Runtime.getRuntime(); System.out.println("allocated memory: " + runtime.totalMemory() / 1024); 3) 要获取应用程序正在使用的内存量,请执行以下

Memory 这个过程如何';虚拟内存比物理内存大+;交换

据我所知,在本例中,docker的守护进程已经从操作系统请求了1114MB的内存,为其分配了一部分虚拟地址空间,但直到进程实际需要物理内存时,才使用物理内存。那很好 然而,当操作系统无法满足这个请求时,它怎么能说“当然,这是你的1.1GB”呢?malloc()(或docker正在使用的任何东西)不应该立即失败吗 如果它实际上是“过度销售”内存空间,那么malloc()的返回值有什么意义 没有一个rational操作系统允许您在没有页面空间的情况下分配虚拟内存。可悲的是,有些操作系统是不合理的(或

Memory 导入文件Stata时将数据保留在内存中

我想写一个模拟程序。然而,由于我是Stata的新手,我会一次慢慢地完成每一步,以了解Stata是如何工作的。一旦我对Stata有了更多的了解,就会进行调整 其思想是创建一个向量/数字列表(一些特定的和其他随机的),并将该向量作为参数传递给mvrs命令。然后,我将运行一个模拟,以找到具有较小AIC的结的模式。更多信息可在Spika等人的BMC Cancer(2017)论文中找到 多亏了StackOverflow社区,我才能够生成随机数(请参阅)。但是我以后导入Excel文件时遇到问题有没有办法保持

Memory DLL/exe注入到正在运行的进程中

将DLL或exe程序注入正在运行的进程是否正常?注入后,我能够读取显示注入的DLL/exe内容的进程内存 是的,将DLL或exe插入正在运行的进程是“正常的”。如果您的应用程序没有其他有效的方法来完成它的工作,并且您必须将DLL注入到其他进程中,请务必这样做 是一个Windows API函数,一旦线程在远程进程中运行,您只需调用即可将DLL加载到进程中 这些是Windows API函数,只要您的帐户是管理员帐户,就没有任何东西可以阻止您注入DLL,这些都是来自Microsoft的文档函数,许多合

Memory 在Kubernetes中如何定义硬件资源?CPU和RAM

kubernetes中资源分配和定义的简单解释是什么? 分配“1000m”CPU单元和1024M内存意味着什么?(尝试用比官方更简单的语言编写) CPU 在Kubernetes中,每个CPU核心以一个“milicore”为单位分配,这意味着一个虚拟核心(在虚拟机上)可以分成1000个1 milicore的共享。分配1000毫内核将使pod拥有一个完整的CPU。给予更多将需要pod中的代码能够利用多个核心 内存 很简单。您分配的每个兆字节都是为pod保留的 请求 保证提供给pod的最小资源。如果没

Memory 在命令提示符中显示ram使用百分比

我知道这可能是一个noob问题,但我正在尝试编写一个脚本,该脚本需要获得系统ram使用率的百分比,并像这样输出5%,但我找不到任何关于如何做到这一点的资源。如果有人能帮忙,我将不胜感激。谢谢 这是在哪个操作系统上?如果是Linux,这里有一个dup:你喜欢做free-h吗?

Memory 我的机器有足够的内存,但kubernetes无法安排pod并指示内存不足

我有一个kubernetes的1.16.2版本集群。当我在集群中部署所有服务时,复制副本为1,工作正常。然后,我将所有服务的副本缩放到2,然后签出。发现某些服务正在正常运行,但某些状态处于挂起状态。 当我描述一个待处理的pod时,我得到如下消息 [root@runsdata-bj-01 society-training-service-v1-0]# kcd society-resident-service-v3-0-788446c49b-rzjsx Name: society

Memory 此代码是否导致定义的行为?

我正在努力学习生锈。我遇到了一个片段。我认为代码中的指针可能是无效的引用,但它可以工作 fn main() { let x={ let mut y=[3]; y.as_mut_ptr() }; unsafe {println!("{}",*x);} } 非常快的回答:很简单,很容易。内存在内部块的末尾失效,因此x从创建时起就处于不可取消引用的状态。事实上,它似乎做了你所期望的是无关紧要的 点击“工具->Miri” “工作”不是一

Memory DOS旧版地址范围在哪里?

DOS旧版地址范围在哪里? 它是主存储器吗?还是缓存为RAM? 发件人:您可以发布数据表中的相关摘录吗?您指的是范围0-9FFFF?它在记忆中。

Memory 闪存更新后STM32F030系统复位

在STM32F030控制器中,我想在闪存上写入某些变量。 此外,在运行时,这些变量可能会更改。所以,当检测到变量值的变化时,我将擦除闪存并再次写入 问题:是否每次检测到变量更新时都需要进行系统重置 下面是我的代码 void FlashWrite(void) { //Channel A SlaveHolding_New[0] = SlaveHoldingReg[0]; if(SlaveHolding_Prev[0]!=SlaveHolding_New[0]) {

Memory 内存段和物理RAM

一个进程的内存映射似乎被分段(堆栈、堆、bss、数据和文本) 我想知道这些片段是否只是 方便的过程和物理RAM只是一个线性阵列 或者物理RAM是否也被分割成这些地址 分段 另外,如果RAM不是碎片化的,只是一个线性阵列,那么如何实现呢 操作系统是否为流程提供了这些部分的抽象 另外,如果进程的内存映射看起来只是一个线性数组,而不是分成段(MMU将虚拟地址转换为物理地址),那么编程将如何改变 在支持虚拟内存的现代操作系统中,进程的地址空间被划分为这些段。在一般情况下,进程的地址空间以完全随机的方式

上一页   1   2   3   4    5   6  ... 下一页 最后一页 共 80 页