问题列表 - 第21830页

C和C++中联合的目的

我早先使用过工会; 今天,当我读到这篇文章并开始知道这段代码时,我感到震惊

union ARGB
{
    uint32_t colour;

    struct componentsTag
    {
        uint8_t b;
        uint8_t g;
        uint8_t r;
        uint8_t a;
    } components;

} pixel;

pixel.colour = 0xff040201;  // ARGB::colour is the active member from now on

// somewhere down the line, without any edit to pixel

if(pixel.components.a)      // accessing the non-active member ARGB::components
Run Code Online (Sandbox Code Playgroud)

实际上是未定义的行为即从工会成员读取而不是最近编写的那个导致未定义的行为.如果这不是工会的预期用途,那是什么?有人可以详细解释一下吗?

更新:

事后我想澄清一些事情.

  • 这个问题的答案与C和C++不一样; 我无知的年轻自我将其标记为C和C++.
  • 在仔细研究了C++ 11的标准后,我无法确切地说它调用了访问/检查非活动的union成员是未定义/未指定/实现定义的.我能找到的只是§9.5/ 1:

    如果标准布局联合包含多个共享公共初始序列的标准布局结构,并且如果此标准布局联合类型的对象包含其中一个标准布局结构,则允许检查任何标准布局结构的公共初始序列.标准布局结构成员.§9.2/ 19:如果相应的成员具有布局兼容类型且两个成员都不是位字段,或者两者都是具有相同宽度的位字段,则一个或多个初始序列的两个标准布局结构共享一个公共初始序列成员.

  • 在C中,(C99 TC3 - DR 283以后)这样做是合法的(感谢Pascal Cuoq提出这个问题).但是,如果读取的值对于读取的类型无效(所谓的"陷阱表示"),尝试执行此操作仍会导致未定义的行为.否则,读取的值是实现定义的.
  • C89/90在未指明的行为(附件J)中称之为,而K&R的书称其实施已定义.来自K&R的报价:

    这是联合的目的 - 一个可以合法地保存几种类型中的任何一种的变量.[...]只要用法一致:检索到的类型必须是最近存储的类型.程序员有责任跟踪当前存储在联合中的类型; 如果将某些内容存储为一种类型并将其提取为另一种类型,则结果将依赖于实现. …

c c++ unions type-punning

237
推荐指数
9
解决办法
10万
查看次数

如何将mysql结果格式化为json php

mysql表

ID >> Name >> Salary
Run Code Online (Sandbox Code Playgroud)

$ row_set <<数据库表信息.

我的问题是我何时使用

json_encode($row_set);
Run Code Online (Sandbox Code Playgroud)

输出将是这样的:

[{"0":"1","ID":"1","1":"x","Name":"x","2":"12345","Salary":"12345"}]
Run Code Online (Sandbox Code Playgroud)

我希望结果是这样的

[{"ID":"1","Name":"x","Salary":"12345"}]
Run Code Online (Sandbox Code Playgroud)

怎么做 ?

编辑::完整代码

$result = mysql_query("SELECT * FROM emp");

while($row = mysql_fetch_array($result))
  {
     $row_set[] = $row;
  }
echo json_encode($row_set);
Run Code Online (Sandbox Code Playgroud)

php arrays json

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

为什么String的hashCode()没有缓存0?

我注意到在Java 6的String源代码中,hashCode只缓存0以外的值.下面的代码片段展示了性能上的差异:

public class Main{
   static void test(String s) {
      long start = System.currentTimeMillis();
      for (int i = 0; i < 10000000; i++) {
         s.hashCode();
      }
      System.out.format("Took %d ms.%n", System.currentTimeMillis() - start);
   }
   public static void main(String[] args) {
      String z = "Allocator redistricts; strict allocator redistricts strictly.";
      test(z);
      test(z.toUpperCase());
   }
}
Run Code Online (Sandbox Code Playgroud)

在ideone.com中运行此命令将提供以下输出:

Took 1470 ms.
Took 58 ms.
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  • 为什么String的hashCode()没有缓存0?
  • Java字符串哈希值为0的概率是多少?
  • 对于散列为0的字符串,每次重新计算哈希值的性能损失的最佳方法是什么?
  • 这是缓存值的最佳实践方式吗?(即缓存除一个以外的所有?)

为了您的娱乐,这里的每一行都是一个散列为0的字符串:

pollinating sandboxes
amusement & hemophilias
schoolworks = perversive
electrolysissweeteners.net
constitutionalunstableness.net
grinnerslaphappier.org
BLEACHINGFEMININELY.NET
WWW.BUMRACEGOERS.ORG
WWW.RACCOONPRUDENTIALS.NET …
Run Code Online (Sandbox Code Playgroud)

java string hashcode

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

如何在Mac上以编程方式阅读Chrome和Firefox的缓存?

背景

我想在我的Cocoa应用程序中访问Chrome和Firefox的缓存.我需要获取最近访问过的页面的HTML.Safari是小菜一碟 - 所有这些信息都可以在SQLite数据存储中获得,但在Chrome和Firefox中却不是这样.

问题

对于Firefox,缓存位于/Library/Caches/Firefox/Profiles/xxx.default/Cache中,文件名为_CACHE_001_ _CACHE_002_ _CACHE_003_和_CACHE_MAP_

对于Chrome,缓存位于/ Library/Caches/Google/Chrome/Default/Cache中,文件名为data_0 data_1 data_2和data_3

我试过的

我能找到的唯一一篇文章,阐明了什么样的格式,这些缓存是在任何光线就在这里.它建议使用缓存查看器工具,但不解释如何以编程方式执行此操作.

问题

  1. 有没有办法使用命令行工具或Cocoa框架重建这些数据?还是它太低了?

  2. 有没有其他方法来获取我不知道的最近网页的HTML?

macos firefox cocoa caching google-chrome

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

缓存 - 刷新和无效操作

我对缓存同步操作有一些疑问.

无效:在cpu尝试读取设备更新的部分内存之前,需要使相应的内存无效.

刷新:在设备读取CPU更新的部分内存之前,CPU必须刷新(写回也是正确的?)从缓存到内存的内容,以便设备从内存中读取更新内容的内容.

如果不执行刷新,则它可以读取存储器中存在的垃圾数据,因为存储器仍未使用写入高速缓存的内容进行更新.

请确认我的上述理解是否正确?

您想什么时候将flush和invalidate结合起来?我听说在使用设备控制描述符时,我们需要通过组合flush和invalidate进行同步.为什么这样?

我们是否需要遵循像flush这样的序列然后无效?

是否有一个场景,其中有效的后续执行无效?

hardware caching driver device-driver dma

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

绑定WPF组合框并将其值显示到TextBox

你好朋友我想显示从DB到组合框的数据,DB表有id,investPlan,金额.现在我想在组合框中显示'investPln'col,当用户选择任何计划时,相应的金额显示在textBox控件中.我能够在comboBox中显示'invetsPlan'行,但不知道如何做休息的事情.帮我!!

XAML部分

<ComboBox Height="23" Margin="70,72,88,0" Name="comboBox1" VerticalAlignment="Top" DropDownClosed="comboBox1_DropDownClosed" 
              ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" SelectedValue="{Binding Path=id}" DisplayMemberPath="fullName" SelectedValuePath="id"/>
Run Code Online (Sandbox Code Playgroud)

部分背后的代码

private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        DataSet1TableAdapters.membersTableAdapter ta = new ComboBoxDB.DataSet1TableAdapters.membersTableAdapter();
        comboBox1.ItemsSource = ta.GetData();
    }
Run Code Online (Sandbox Code Playgroud)

c# wpf combobox

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

Java中的语言识别

是否有任何语言识别开源Java?仅适用于c/c ++.

UPD:

我在谈论人类文本语言.例:

输入:我叫约翰.输出:英文.

输入:Ich heisse John.输出:德语.

输入:МенязовутДжон.输出:俄语.

java open-source nlp

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

自定义HTML属性的正确方法

我正在编写自定义表单验证javascript库,我正在考虑正确的标记语法.假设我的输入需要1 000到10 000之间的数字.

到目前为止,我提出了这样的事情:

<input class='validate required number' min='1000' max='10000' />
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?我有两个问题:

  1. 我不喜欢上课.感觉好像是滥用.可以像这样使用它们吗?
  2. 我的自定义属性min,max不验证.

xhtml markup attributes custom-attributes

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

如何在php中删除我网站的所有cookie

我想知道当用户点击退出时我是否可以删除我所有网站的cookie,因为我使用此功能来删除cookie但是它无法正常工作:

setcookie("user",false);
Run Code Online (Sandbox Code Playgroud)

有没有办法在PHP中删除一个域的cookie?

php cookies

89
推荐指数
4
解决办法
13万
查看次数

JSF 2.0上用户身份验证的最佳实践?

我搜索了如何在我的JSF Web项目中进行用户身份验证的最佳方法.我在库存过流中找到了BalusC的这个非常好的例子(顺便说一下,谢谢你BalusC).但我不明白这个系统.

我写了一个注册页面.注册后,用户进入我的数据库.但是谁可以使用j_security_check从我的数据库中检查用户?

在我的webproject中,我没有用户和非用户的站点.当用户进入时,他会看到更多选项,例如他可以发布文本.我可以检查一下吗?我可以在登录时使用userdata保存用户类并检查:

if(user != null){
 <h:inputText value="User Only Text" id="text"  />
}
Run Code Online (Sandbox Code Playgroud)

但我认为这种方式并不是很优雅.另外我的问题是,让用户登录并在网页上显示有效用户的更多选项的最佳方式是什么,而不是非用户.

谢谢,抱歉我的英语不好.

java jsf glassfish

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