问题列表 - 第36529页

导致除法溢出错误(x86)

我有几个关于x86或x86_64架构上的除法溢出错误的问题.最近我一直在阅读整数溢出.通常,当算术运算导致整数溢出时,FLAGS寄存器中的进位或溢出位置位.但显然,根据这篇文章,除法运算产生的溢出不会设置溢出位,而是触发硬件异常,类似于除以零时.

现在,由除法产生的整数溢出比乘法更加罕见.只有几种方法可以触发除法溢出.一种方法是做一些事情:

int16_t a = -32768;
int16_t b = -1;
int16_t c = a / b;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,由于有符号整数的二进制补码表示,您不能在带符号的16位整数中表示正32768,因此除法运算溢出,导致错误值-32768.

几个问题:

1)与本文所说的相反,上述内容并未导致硬件异常.我正在使用运行Linux的x86_64机器,当我除以零时程序终止于Floating point exception.但是当我导致除法溢出时,程序会像往常一样继续,默默地忽略错误的商.那么为什么这不会导致硬件异常呢?

2)为什么硬件会严重处理除法错误,而不是其他算术溢出?为什么要乘法溢出(这是很多更可能发生意外)的硬件被忽略,但一个分区溢出应该引发重大的中断?

=========== 编辑 ==============

好的,谢谢大家的回复.我得到的回答基本上说上面的16位整数除法不应该导致硬件故障,因为商仍然小于寄存器大小.我不明白这一点.在这种情况下,存储商的寄存器是16位 - 这太小而不能存储有符号的正32768.那么为什么不引发硬件异常呢?

好的,让我们直接在GCC内联汇编中执行此操作,看看会发生什么:

int16_t a = -32768;
int16_t b = -1;

__asm__
(
    "xorw %%dx, %%dx;"            // Clear the DX register (upper-bits of dividend)
    "movw %1, %%ax;"              // Load lower bits of dividend into AX
    "movw %2, %%bx;"              // Load the divisor into BX
    "idivw %%bx;" …
Run Code Online (Sandbox Code Playgroud)

c c++ x86 assembly integer-division

7
推荐指数
1
解决办法
8616
查看次数

发现PHP错误的PHP正则表达式

我想要可以在页面上找到错误的PHP正则表达式.因此,当我访问网站并抓取页面时,我可以列出网站上的错误.

目前我有以下代码:

preg_match('/<b>.+<\/b>:.+ in <b>\/.+<\/b> on line <b>[0-9]+<\/b><br( \/)?>/msi',$html,$errors);
Run Code Online (Sandbox Code Playgroud)

它可以显示错误是否发生,但不会列出它们!我在数组中获得完整的html页面($errors[0])

有人可以帮忙吗?

编辑:所以我有一个页面,例如以下HTML源代码,我想从中提取PHP错误:

<b>Warning</b>:  session_start() [<a href='function.session-start'>function.session-start</a>]: The session id contains invalid characters, valid characters are only a-z, A-Z and 0-9 in <b>/home/.../public_html/articlescript/init.php</b> on line <b>127</b><br />
<br />
<b>Warning</b>:  session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at /home/.../public_html/articlescript/init.php:127) in <b>/home/.../public_html/articlescript/init.php</b> on line <b>127</b><br />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
    <title>...
Run Code Online (Sandbox Code Playgroud)

php regex

2
推荐指数
1
解决办法
280
查看次数

如何在MVC模型中编写可重用的业务逻辑?

我的问题是我们尝试使用MVC(PHP)框架.经过讨论后认为MVC非常好,但我错过了编写可重用模型(应用程序)逻辑的可能性.所以,我不确定我们是否有正确的方法在MVC框架中实现我们的软件.

首先,我将描述我们目前使用的非MVC,oo方法.

例如 - 我们正在开发一些浏览器游戏(是的,这是我们的职业).想象一下,我们有一个玩家对象.我们经常使用这个播放器对象.我们有一些不同的页面,您可以购买思考,因此您需要在玩家"银行账户"上进行"金钱"交易,或者想象您可以与其他玩家进行战斗.我们有几个战斗脚本,这些脚本需要2个或更多玩家对象(这取决于战斗类型,即战队战斗,玩家与玩家战斗......).

因此,我们有几个页面(和控制器)具有不同的战斗逻辑.但是这个控制器中的每一个都使用玩家对象来计算玩家拥有的所有属性和物品以及玩家将要做的哪些伤害和防御.

那么,如果是MVC模型,我们如何在播放器对象中重用逻辑呢?在不同的战斗控制器和模型中复制所有必要的逻辑是不好的.

我认为"黄金交易" - 逻辑将是一个很好的例子,可以为您提供更多详细信息.在战斗中你需要交易功能,如果你赢得其他玩家并且掠夺他的一些黄金,你需要交易功能以便购买一些东西而你需要交易功能以防花费一些金币给球员公会......

所以,我想说在一个播放器模型中定义所有这些功能将是一个糟糕的方法!我可以说你这些玩家模型会非常大(实际上我们的问题是我们的玩家级别真的很大 - 它是一个神级)

你认为这个问题有MVC风格的解决方案吗?

model-view-controller logic model reusability

5
推荐指数
1
解决办法
1067
查看次数

什么是MS SQL Server功能类似于MySQL FIELD()函数?

MySQL提供了一个名为FIELD()的字符串函数,它接受可变数量的参数.返回值是剩余值列表中第一个参数的位置.换一种说法:

FIELD('d', 'a', 'b', 'c', 'd', 'e', 'f')
Run Code Online (Sandbox Code Playgroud)

将返回4,因为'd'是第一个之后的第四个参数.

此函数提供基于非常特定的排序对查询结果进行排序的功能.对于我目前的申请,我需要管理四种状态:活跃,已批准,拒绝和提交.但是,如果我只是按状态列进行排序,我觉得结果列表的可用性会降低,因为被拒绝的活动状态项比提交和批准的项更重要.

在MySQL中,我可以这样做:

SELECT <stuff> FROM <table> WHERE <conditions> ORDER BY FIELD(status, 'rejected', 'active','submitted', 'approved')
Run Code Online (Sandbox Code Playgroud)

并且将对结果进行排序,以便首先拒绝项目,然后是活动项目,依此类推.因此,结果的排序降低了对访客的重要性.

我可以创建一个单独的表来枚举状态的这个重要性级别,然后按降序排序查询,但是自从切换到MS SQL Server以来,这已经出现了几次,所以我想我会查询到是否可以使用类似于MySQL的FIELD()的内置函数来避免额外的表和更复杂的查询.

谢谢
David Kees

mysql sql t-sql sql-server sql-order-by

14
推荐指数
1
解决办法
9519
查看次数

从64位十六进制值中获取四个16位数字

我经历过以下相关问题:

但我没有得到答案可能是因为我不理解64位或16位值.

我在Picasa和脸部检测上发布了一个问题,使用Picasa所做的脸部检测来从包含许多照片的照片中获取个人照片.使用API​​自动进行人脸检测

回答 @Joel马丁内斯链接到一个答案Picasa帮助其说:

rect64()中包含的数字是64位十六进制数.

  • 将其分成四个16位数字.
  • 将每个除以最大无符号16位数(65535),并且在0和1之间有四个数字.

全文

@oedious写道: - 这有点技术性,所以坚持下去.*rect64()中包含的数字是64位十六进制数.*将其分成四个16位数字.*除以最大无符号16位数(65535),并且在0和1之间有四个数字.*剩下的四个数字给出面部矩形的相对坐标:(左,上,右,下).*如果您想要以绝对坐标结束,请按图像宽度左右多个,按图像高度左右多个.

一个示例picasa.ini文件:

[1.jpg]
backuphash=65527
faces=rect64(5520c092dfb2f8d),615eec1bb18bdec5;rect64(dcc2ccf1fd63e93e),bc209d92a3388dc3;rect64(52524b7c785e6cf6),242908faa5044cb3
crop=rect64(0)
Run Code Online (Sandbox Code Playgroud)

如何从64位十六进制中获取4个数字?

对不起人,目前我不明白答案.我想我必须学习一些C++(我是一名PHP和Java Web开发人员,数学上有弱点),然后才能进入并编写一些可以在一些坐标的帮助下将图像切割成多个图像的东西.我期待到代码实验室为Paint.net创建插件的

hex

1
推荐指数
1
解决办法
3789
查看次数

HTML表格列宽练习

在表中选择列宽时有哪些好的做法?假设我有四列,名称(可变宽度),描述(文本的长内容),计数(最多3个字符),日期(固定格式).

什么是好习惯?我正在考虑固定宽度的descr.,count和width(因此实际上也使名称为"固定"宽度).但我真正的问题是,如何选择特定的宽度尺寸.例如,如果日期格式是yyyy-MM-dd,那么有一些技巧可以将这10个字符转换为宽度,这将保证它在使用任何字体和字体大小的任何浏览器中都显示正常(不会占用任何过多的空间) )?

编辑:固定我的意思是类似于"相对于字体宽度的固定像素数"

html html-table width

14
推荐指数
1
解决办法
2万
查看次数

什么函数返回Drupal-6有效密码哈希?

我想创建一个脚本,将大约100个用户插入Drupal 6数据库 - 他们的用户名,邮件和密码哈希.

在阅读了Drupal 6使用的PHP类之后,我不确定是否可以解决这个问题.我的方法是向每个用户发送一封邮件,例如"Hello,x!你的新密码是y",然后将散列的"y"插入Drupal的用户表.

我知道Drupal会返回一个md5.但它不仅仅是md5的原始密码,而是一个非常混乱的密码(使用salt和其他方法).

我已经研究了Drupal使用的Portable PHP密码哈希框架,但我认为它只能用于复制+粘贴方法.

所以,我的问题是:我可以创建一个PHP函数,返回一个有效的Drupal 6密码哈希,将其插入到用户表中吗?

php passwords drupal password-hash

6
推荐指数
1
解决办法
4883
查看次数

为什么SynchronizationContext无法正常工作?

我有以下代码:

[TestMethod]
public void StartWorkInFirstThread()
{
    if (SynchronizationContext.Current == null)
        SynchronizationContext.SetSynchronizationContext(
            new SynchronizationContext());

    var syncContext = SynchronizationContext.Current;

    Console.WriteLine("Start work in the first thread ({0})", 
        Thread.CurrentThread.ManagedThreadId);

    var action = ((Action) DoSomethingInSecondThread);
    action.BeginInvoke(CallbackInSecondThread, syncContext);

    // Continue its own work
}

private static void DoSomethingInSecondThread()
{
    Console.WriteLine("Do something in the second thread ({0})", 
        Thread.CurrentThread.ManagedThreadId);   
}

private void CallbackInSecondThread(IAsyncResult ar)
{
    Console.WriteLine("Callback in the second thread ({0})", 
        Thread.CurrentThread.ManagedThreadId);
    var syncContext = (SynchronizationContext) ar.AsyncState;
    syncContext.Post(CallbackInFirstThread, null);
}

private void CallbackInFirstThread(object obj)
{
    Console.WriteLine("Callback in the …
Run Code Online (Sandbox Code Playgroud)

.net multithreading asynchronous synchronizationcontext

3
推荐指数
2
解决办法
5448
查看次数

简单的INNER JOIN查询返回没有值 - 我哪里错了?

下面的查询根据当前活动的招聘信息记录和工资记录获取wageTypeID.

  SELECT wt.wageTypeID
    FROM TimeSheet t 
  INNER JOIN Employee e ON e.employeeID = t.employeeID
  INNER JOIN Salary s ON s.salaryID = t.salaryID
  INNER JOIN Wage w ON w.wageID = s.wageID
  INNER JOIN EmpHiringInfo ehf ON ehf.EmpHiringInfoID = s.EmpHiringInfoID
  INNER JOIN WageType wt ON wt.wageTypeID = w.wageTypeID
  WHERE ehf.employeeID = 300  
    AND ehf.isActive = 1 
    AND s.isActive = 1
Run Code Online (Sandbox Code Playgroud)

上面的查询应该返回值15!我想知道我哪里出错了?


这是连接表的模式:

TimeSheet:
timeSheetID
employeeID - 300
salaryID
.
.

Salary:
salaryID
EmpHiringInfoID
wageID
isActive - true
.
.

WageType:
wageTypeID - …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005

1
推荐指数
1
解决办法
2210
查看次数

程序关闭JFrame

点击JFrame右上角的关闭(x)按钮的程序化等价物是什么?

dispose()方法,但这不是一回事,因为JFrame可以设置为在关闭时做几个不同的事情(更不用说是否涉及WindowListener)

java swing jframe

13
推荐指数
1
解决办法
8323
查看次数