小编xan*_*key的帖子

结构由编译器重新排序

假设我有这样的结构:

struct MyStruct
{
  uint8_t var0;
  uint32_t var1;
  uint8_t var2;
  uint8_t var3;
  uint8_t var4;
};
Run Code Online (Sandbox Code Playgroud)

这可能会浪费很多(不是很多)空间.这是因为uint32_t变量的必要对齐.

实际上(在对齐结构以便它实际上可以使用uint32_t变量之后)它可能看起来像这样:

struct MyStruct
{
  uint8_t var0;
  uint8_t unused[3];  //3 bytes of wasted space
  uint32_t var1;
  uint8_t var2;
  uint8_t var3;
  uint8_t var4;
};
Run Code Online (Sandbox Code Playgroud)

更有效的结构将是:

struct MyStruct
{
  uint8_t var0;
  uint8_t var2;
  uint8_t var3;
  uint8_t var4;
  uint32_t var1;
};
Run Code Online (Sandbox Code Playgroud)

现在,问题是:

为什么编译器禁止(按标准)重新排序结构?

如果对结构进行重新排序,我认为你没有任何方法可以用脚射击自己.

c c++ struct memory-alignment

34
推荐指数
6
解决办法
5639
查看次数

SQL Server - 唯一索引与唯一约束 - 回复。重复值

唯一索引可确保索引键列中的值是唯一的。唯一约束 保证不能将重复值插入到创建约束的列中。创建唯一约束时,会在列上自动创建相应的唯一索引。

问题

  1. 如果我们在列上有唯一索引并且没有唯一约束,是否可以插入重复值?
  2. 列上任何现有重复项怎么样 - 它是否允许创建唯一索引或唯一约束?

sql-server unique-index unique-constraint

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

SpringBoot日志记录中的ClassCastException

我的应用程序启动时遇到问题。在ClassCastException上配置日志级别时,应用程序失败java.util.HashMap cannot be cast to org.springframework.boot.logging.LogLevel

我尝试logging.level.root=INFO在我的设置,application.properties并发生相同的错误。不知道还有什么尝试。

我刚刚将其升级到SpringBoot 2.x,特别是使用了此依赖项BOM:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${springframework.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
Run Code Online (Sandbox Code Playgroud)

请找到依赖关系树的相关部分:

[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.2.0.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:2.2.0.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot:jar:2.2.0.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-autoconfigure:jar:2.2.0.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:2.2.0.RELEASE:compile
[INFO] |  |  |  +- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO] |  |  |  |  \- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] |  |  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.12.1:compile
[INFO] |  |  |  |  \- org.apache.logging.log4j:log4j-api:jar:2.12.1:compile
[INFO] |  |  |  \- …
Run Code Online (Sandbox Code Playgroud)

java spring classcastexception spring-boot spring-cloud

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

Python错误104,由同行重置连接

尝试向各种主机发出Web请求时,我一直遇到此错误.经过调试后,我发现解决方案是通过pip更新请求[安全].

python pip python-3.x python-requests

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

防止事件监视器 OS X 中出现错误“funk”声音

我正在快速编写一个应用程序,它位于屏幕顶部的菜单栏中。我需要一个全局和本地事件监视器来打开特定按键上的弹出窗口。本地事件监视器没有问题,但是当用户从 Finder 等应用程序内部点击键盘命令 (cmd+shift+8) 时,弹出窗口会打开,但也会播放 mac 错误“Funk”声音。有什么办法可以禁用它吗?也许应用程序可以通过某种方式吃掉声音,或者将其注册为有效的键盘快捷键以便永远不会播放声音?

这是代码:

        NSEvent.addGlobalMonitorForEvents(matching: NSEventMask.keyDown, handler: {(event: NSEvent!) -> Void in
        if (event.keyCode == 28 && event.modifierFlags.contains(NSEventModifierFlags.command) && event.modifierFlags.contains(NSEventModifierFlags.shift)){
            self.togglePopover(sender: self)
        }
    });

    NSEvent.addLocalMonitorForEvents(matching: NSEventMask.keyDown, handler: {(event: NSEvent!) -> NSEvent? in
        if (event.keyCode == 28 && event.modifierFlags.contains(NSEventModifierFlags.command) && event.modifierFlags.contains(NSEventModifierFlags.shift)){
            self.togglePopover(sender: self)
        }
        return event
    });
Run Code Online (Sandbox Code Playgroud)

macos menubar swift

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

等待在可枚举上使用

我有一段代码,我想将using语句应用于commands可枚举中的每个命令。什么是 C# 语法?

await using var transaction = await conn.BeginTransactionAsync(cancel);
IEnumerable<DbCommand> commands = BuildSnowflakeCommands(conn, tenantId);

var commandTasks = new List<Task>();
foreach (var command in commands)
{
    command.CommandTimeout = commandTimeout;
    command.Transaction = transaction;
    commandTasks.Add(command.ExecuteNonQueryAsync(cancel));
}

try
{
    await Task.WhenAll(commandTasks);
}
catch (SnowflakeDbException)
{
    await transaction.RollbackAsync(cancel);
    return;
}

await transaction.CommitAsync(cancel);
Run Code Online (Sandbox Code Playgroud)

编辑:Rider / ReSharper 似乎认为这两个是等价的,或者至少我得到了将 the 转换for为 a的提示foreach(这显然是错误的):

for (var i = 0; i < commands.Count; i++)
{
    await using var command = …
Run Code Online (Sandbox Code Playgroud)

c# using async-await

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

D3 鼠标滚轮缩放方向

我正在尝试在 d3.js 中创建一些自定义缩放功能。目前缩放是通过单击触发并放大以仅关注被点击的区域。

目前我的代码有一个function zoom(d)完全符合它需要的。还有一个var zoomTransition位于 zoom() 内部,负责大部分功能。不幸的是,我无法分享我的大部分代码。

缩放也需要发生在鼠标滚动上。我遇到的困难是:

        .on("wheel", function(d){
            zoom(d);
        });
Run Code Online (Sandbox Code Playgroud)

忽略滚轮方向。之所以调用 Zoom 只是因为滚轮滚动,无论是向内还是向外。

有什么方法可以访问滚动方向并将其传递给 zoom() 吗?或者有更好的方法来做到这一点?

javascript scroll zooming d3.js

4
推荐指数
2
解决办法
6171
查看次数

LayoutTransform 自定义样式 wpf

我正在尝试设置自定义样式来旋转分隔符。

此代码有效,但不是自定义样式:

 <Separator>
    <Separator.LayoutTransform>
       <RotateTransform Angle="90" />
    </Separator.LayoutTransform>
 </Separator>
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

<Style x:Key="CustomStandaloneSeparatorStyle" TargetType="Separator">
            <Setter TargetName="LayoutTransformProperty" Property="RotateTransform.Angle" Value="{Binding ToolbarTrayElementRotation}" />
            <Setter Property="Margin" Value="2"/>
</Style>
Run Code Online (Sandbox Code Playgroud)

错误消息是:“无法识别LayoutTransformProperty”。然而,当选项卡完成该条目时,它可以作为一个选项使用......奇怪。

wpf xaml binding

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

visual basic的文件扩展名是什么?

它是.vb最新版本,我说的是6.0版(经典版)?我正在尝试为我需要的模块正确标题可视化基本脚本.如果我不得不重做一个脚本,因为我不能命名一个扩展名,我会生气.

vb6

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

多个按钮的一个视图模型

我是WPF和MVVM的新手.我正在尝试理清如何拥有一个干净的项目结构,其中有多个按钮可以启动不同的应用程序(如chrome,IE,记事本).是否可以为多个按钮设置一个ViewModel?

我已经开始使用这里的代码,我尝试解决方案是使该链接的代码成为视图模型库,并为扩展所述基础的每个按钮提供其他视图模型.

每个人都有一个独特的行动:

    public override void ClickAction()
    {
        Process ieProcess = new Process();
        ieProcess.StartInfo.FileName = "IExplore.exe";
        ieProcess.Start();
    }
Run Code Online (Sandbox Code Playgroud)

但是,我不确定这样做的正确方法.如何使用此方法创建DataContext?任何帮助表示赞赏.

c# wpf mvvm

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

使用stream api修改传递的参数

我有关于范围,流和重新分配的问题.

我想知道是否有办法使用流式api执行此操作而无需重新分配列表.重新分配参数的问题是它打破了范围,因此测试没有看到新值.

我知道还有其他方法(迭代器,向后迭代等)来解决问题.这个问题只是出于好奇.

测试代码:

@Test
void testAllNegativesByIterator() {
    List<Integer> values = new ArrayList<>(Arrays.asList(-1, -2, -3, -4, -5, -6, -7, -8, -9));
    p.removeNegativesByIterator(values);
    checkNonNegativeSize(0, values);
}
Run Code Online (Sandbox Code Playgroud)

被测代码:

public void removeNegativesByStream(List<Integer> values) {
    values = values.stream().filter(v -> v > 0).collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我也明白我可以返回一个值.正如我在问题中所说的那样,我特意要求一种方法来利用好奇心来实现这一点.

java java-stream

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

骆驼 3.x 升级

我正在升级到骆驼 3.x 并且在寻找方法时遇到了一些麻烦。他们的迁移指南并没有完全涵盖所有内容。具体来说,我正在寻找替代品:

camelContext.addRouteDefinitions(...)
...
camelContext.getRouteDefinitions()
Run Code Online (Sandbox Code Playgroud)

我无法在文档中找到任何这些内容。

编辑:

我可以用这个直接打电话给他们:

camelContext.getExtension(Model.class).getRouteDefinitions()
Run Code Online (Sandbox Code Playgroud)

但这似乎不太合适……

java apache-camel

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