我用这段代码在C++中试验析构函数:
#include <iostream>
struct temp
{
~temp() { std::cout << "Hello!" << std::endl; }
};
int main()
{
temp t;
t.~temp();
}
Run Code Online (Sandbox Code Playgroud)
我看到"你好!" 正在打印两次.不应该调用析构函数释放对象,并且当它超出范围时不应该再次调用析构函数吗?或者还有其他一些概念吗?
(我不打算在实践中这样做.我只是想了解这里发生了什么.)
该类的setView()方法AlertDialog允许为对话框指定自定义视图.是否可以在此自定义视图中包含哪些控件?
此外,如果我们设置自定义视图,我们还可以使用添加按钮setPositiveButton(),setNegativeButton()等?
从Windows服务中调用Environment.Exit是否使SCM调用服务的onStop()方法,或者这种行为是不可预测的?
我有几个有这个代码的Windows服务.不幸的是,我无法删除此行为.但是我需要知道是否会调用onStop()来决定是在该方法中还是在调用Environment.Exit的方法中放置一些常用的停止代码.
我创建了一个带按钮的简单应用程序.单击它会触发通知,单击通知会启动同一应用程序的新实例.但是,我希望点击通知应该会将我带回到触发通知的应用程序实例.为此,我咨询了Android文档的FLAG_ACTIVITY_NEW_TASK标志 -
使用此标志时,如果任务已在您正在启动的活动上运行,则不会启动新活动; 相反,当前任务将简单地以其最后一个状态被带到屏幕的前面.请参阅FLAG_ACTIVITY_MULTIPLE_TASK以获取禁用此行为的标志.
基于此,在创建传递给PendingIntent的意图时,我设置了这个标志.但是,单击通知仍会启动应用程序的新实例.
我究竟做错了什么 ?
我有以下目录层次结构:
SigarTest
src
SigarTest
.java files
bin
SigarTest
.class files
Run Code Online (Sandbox Code Playgroud)
这里,SigarTest是一个包名.根文件夹位于jdk的bin文件夹中.从那里,我运行以下命令来创建我的项目的jar文件 -
./jar cfe temp.jar SigarTest.SigarMain SigarTest/bin/ tools.jar sigar.jar mongo-2.7.3.jar
Run Code Online (Sandbox Code Playgroud)
其中tools.jar,mongo-2.7.3.jar和sigar.jar是必需的,并且与根目录(jdk的bin文件夹)位于同一文件夹中.然而,在运行它,我得到
ClassNotFoundException : SigarTest.SigarMain
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么 ?
我对应该做什么感到困惑onPause,onStop并且onSaveInstanceState.例如,Android文档说For onPause-
提交未保存的更改,但前提是用户希望此类更改在离开时永久保存(例如草稿电子邮件).
对于onStop-
您应该使用onStop()执行更大,更密集的CPU关闭操作,例如将信息写入数据库.
对于 onSaveInstanceState
您的活动可能包含您要恢复的更多状态信息,例如跟踪用户在活动中的进度的成员变量.
难道这三件事基本上都指向存储表格或电子邮件等信息吗?那么应该保存哪种方法?
我一直在阅读BrokenThorn的操作系统开发教程,我正在创建和加载第二阶段引导加载程序.本教程适用于Windows,但我在Linux(Ubuntu 13.04)中这样做.
这就是我所做的:
floppy.img下~/Documents/floppy用mkfs.vfat命令boot.asm使用nasm 编译的文件给我boot.bindd if=boot.bin of=~/Documents/floppy/floppy.img bs=512 count=1因此,我有第一阶段bootloader的软盘映像.在使用qemu开始时,它工作正常.
但是,在我创建第二阶段引导加载程序之后,(如果我是正确的)我将必须floppy.img将第二阶段2安装到已安装的文件系统上.在这种情况下,如何使用qemu启动已安装的软盘?它甚至可能吗?如果没有,我如何使用第二阶段引导加载程序.
请原谅我任何愚蠢的假设/问题,因为我是新手.
对于BIOS,维基百科说:
BIOS内存的地址位于首次启动计算机时执行.然后,跳转指令指示处理器开始在BIOS中执行代码.
我知道BIOS存在于非易失性存储器中.但它必须加载到RAM中才能执行.那么谁将BIOS加载到RAM中?
我还读到在启动时加载了内存映射.BIOS加载此内存映射吗?存放在哪里?
作为基准测试任务的一部分,我正在研究可用于测量经过时间的不同机制.我已经完成了使用clock_gettime,但我也做了充分的研究和测试RDTSC.我有几个相同的问题(基于我在几个在线线程上读到的内容):
在较新的处理器(> Pentium 4)上,TSC以系统上CPU的最大频率进行计时.它是否正确?在这种情况下,使用滴答数和频率来确定时间是否有效?
如果以上情况属实,则意味着TSC不受由于省电和其他功能导致的CPU频率变化的影响.知道这一点,是否意味着通过使用获得的总滴答数RDTSC不是采样的代码段使用的实际滴答 - 因为代码将以CPU的频率而不是TSC的频率运行?此外,这是否意味着使用TSC滴答获得的时间和CPU频率不是代码片使用的实际时间?
我发现了许多关于跨核心同步TSC值的不同陈述(参见本篇文章).我不确定什么是正确的,我猜这也取决于处理器型号.但是可以假设它在新CPU的内核之间同步吗?(这是没有用的sched_set_affinity)?
请注意,RDTSC由于与之相关的各种问题(便携性,可靠性等),我没有使用.这些问题只是为了提高我对TSC如何工作以及一般基准测试的理解.