标签: flags

将EnumSet存储在数据库中?

因此,在C++/C#中,您可以创建标记枚举以保存多个值,并且在数据库中存储单个有意义的整数当然是微不足道的.

在Java中你有EnumSets,它似乎是一种在内存中传递枚举的好方法,但是你如何将组合的EnumSet输出到一个整数来存储呢?还有另一种方法来解决这个问题吗?

java flags

18
推荐指数
5
解决办法
8289
查看次数

-XX的含义是什么:NewRatio和-XX:OldSize JVM标志?

我使用以下命令行启动我的Java应用程序:

java -XX:+PrintCommandLineFlags -verbose:gc -XX:+PrintGCDetails \
     -XX:+UseConcMarkSweepGC -jar start.jar
Run Code Online (Sandbox Code Playgroud)

JVM启用以下选项:

-XX:MaxNewSize=87244800 -XX:MaxTenuringThreshold=4 -XX:NewRatio=7
-XX:NewSize=21811200 -XX:OldPLABSize=16 -XX:OldSize=65433600
-XX:+PrintCommandLineFlags -XX:+PrintGC -XX:+PrintGCDetails
-XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
Run Code Online (Sandbox Code Playgroud)

有人能解释我NewRatio和OldSize的含义吗?特别是OldSize是终身一代的初始规模?

java memory flags garbage-collection options

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

Python RegExp全局标志

python中是否有标志或某些特殊键可以多次使用模式.我曾经测试http://gskinner.com/RegExr/我的RegExp,它在它中正常工作.但是,当在正确的环境中进行测试时,匹配仅返回None.

import re
pattern = r"(?P<date>--\d\d-\w+:\d\d)[ \t]+(?P<user>\w+)[ \t]+(?P<method>[\w ]+)[\" ]*    (?P<file>[\w\\:\.]+)@@(?P<version>[\w\\]+)[\" ]*(?P<labels>[\(\w, \.\)]+){0,1}[\s \"]*(?P<comment>[\w \.-]+){0,1}[\"]"
base = """
--02-21T11:22  user3   create version "W:\foo\bar\fooz.bat@@\main\1" (label1, label2,   label3, label22, label33, ...)

"merge in new bat-based fooz installer"

--02-21T11:22  user1   create version "W:\foo\bar\fooz.bat@@\main\0"

--02-21T11:22  user2   create branch "W:\foo\bar\fooz.bat@@\main\"

"merge in new bat-based fooz installer"

--02-13T11:22  user1   create version     "W:\foo\bar\fooz.bat@@\main\1"

  "Made to use new fooz.bat"

"""
r = re.match(pattern, base)
print(r)
Run Code Online (Sandbox Code Playgroud)

python regex flags global

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

PHP函数标志,怎么样?

我正在尝试创建一个以flags作为参数的函数,但输出总是与预期的不同:

define("FLAG_A", 1);  
define("FLAG_B", 4);  
define("FLAG_C", 7);  
function test_flags($flags) {  
 if($flags & FLAG_A) echo "A";  
 if($flags & FLAG_B) echo "B";  
 if($flags & FLAG_C) echo "C";   
}  
test_flags(FLAG_B | FLAG_C); # Output is always ABC, not BC  
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

php flags bit-manipulation function

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

按位检查标志是否存在

是否有一种方法通常用于检查int /其他数据类型中是否存在标志?我想出这样的事情:

if ((host&flagtocheckfor)==flagtocheckfor)
Run Code Online (Sandbox Code Playgroud)

哪个工作正常 - 但是这种常见的设置标志的方法是通常检查标志的方式吗?还是有更简洁的方法?

language-agnostic flags bit-manipulation

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

CMake交叉编译:忽略工具链文件中的C标志

我使用cmake进行交叉编译.在我的工具链文件中有一行

SET(CMAKE_C_FLAGS "-std=gnu99")
Run Code Online (Sandbox Code Playgroud)

此变量未再次在CMakeLists.txt中设置.

当我运行cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ..此标志被忽略.

更详细:显示一行flags.cmakeC_FLAGS =行.但在CMakeOutput.log我能找到一条线Build flags: -std=gnu99.

我发现第二次运行cmake ..(指定或不指定工具链文件)修复了这个问题.

但是为什么我第一次运行cmake时没有设置?

编辑:添加了MNWE

的CMakeLists.txt:

cmake_minimum_required(VERSION 2.6)
project(myproject)

SET(files src/main.c)

add_executable(myexec ${files})
Run Code Online (Sandbox Code Playgroud)

avr.cmake:

SET(CMAKE_SYSTEM_NAME Generic)

SET(CMAKE_C_COMPILER avr-gcc)

SET(CMAKE_C_FLAGS "-std=gnu99")
Run Code Online (Sandbox Code Playgroud)

c flags cmake cross-compiling

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

如何在自定义Android视图中检查重力标记?

问题

我有一个自定义的Android视图,我想让用户设置重力以布局内容onDraw.这是我正在使用的简化版本onDraw:

// check gravity
if ((mGravity & Gravity.CENTER_VERTICAL) == Gravity.CENTER_VERTICAL) {
    // draw the content centered vertically
} else if ((mGravity & Gravity.BOTTOM) == Gravity.BOTTOM) {
    // draw the content at the bottom
}
Run Code Online (Sandbox Code Playgroud)

其中mGravity从XML属性(获得这样).

如果我将引力设置为Gravity.CENTER_VERTICAL它可以正常工作.但我很惊讶地发现,如果我把它设置为Gravity.BOTTOM,那么Gravity.CENTER_VERTICAL检查仍然是真的!

为什么会这样?

我必须查看二进制值才能看出原因:

因此,当我这样做

mGravity = Gravity.BOTTOM;
(mGravity & Gravity.CENTER_VERTICAL) == Gravity.CENTER_VERTICAL
//  (0101 & 0001) == 0001 …
Run Code Online (Sandbox Code Playgroud)

java flags android android-layout android-gravity

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

C#中的大型标志枚举

嘿大家,得到一个我似乎无法找到任何关于......的快速问题

我正在开发一个需要带有大量标志(最多40-ish)的标志枚举的项目,我真的不想为每个枚举值键入精确的掩码:

public enum MyEnumeration : ulong
{
    Flag1 = 1,
    Flag2 = 2,
    Flag3 = 4,
    Flag4 = 8,
    Flag5 = 16,
    // ...
    Flag16 = 65536,
    Flag17 = 65536 * 2,
    Flag18 = 65536 * 4,
    Flag19 = 65536 * 8,
    // ...
    Flag32 = 65536 * 65536,
    Flag33 = 65536 * 65536 * 2
    // right about here I start to get really pissed off
}
Run Code Online (Sandbox Code Playgroud)

此外,我也希望有一种简单的方法可以控制不同端机器上的实际比特排列,因为这些值最终将通过网络进行序列化:

public enum MyEnumeration : uint
{
    Flag1 = 1,     // …
Run Code Online (Sandbox Code Playgroud)

c# flags enumeration endianness

16
推荐指数
3
解决办法
8601
查看次数

PowerShell必需参数取决于另一个参数

我有一个PowerShell函数,它可以更改注册表项值.码:

param(
    [Parameter()] [switch]$CreateNewChild,
    [Parameter(Mandatory=$true)] [string]$PropertyType
)
Run Code Online (Sandbox Code Playgroud)

它有一个参数"CreateNewChild",如果设置了该标志,该函数将创建key属性,即使找不到它也是如此.参数"PropertyType"必须是必需的,但仅限于已设置"CreateNewChild"标志.

问题是,如何强制执行参数,但仅在指定了其他参数的情况下?

好的,我一直在玩它.这确实有效:

param(
  [Parameter(ParameterSetName="one")]
  [switch]$DoNotCreateNewChild,

  [string]$KeyPath,

  [string]$Name,

  [string]$NewValue,

  [Parameter(ParameterSetName="two")]
  [switch]$CreateNewChild,

  [Parameter(ParameterSetName="two",Mandatory=$true)]
  [string]$PropertyType
)
Run Code Online (Sandbox Code Playgroud)

但是,这意味着$ KeyPath,$ Name和$ NewValue不再是强制性的.将"one"参数设置为必需会中断代码("参数集无法解析"错误).这些参数集令人困惑.我确定有办法,但我无法弄清楚如何做到这一点.

registry parameters powershell flags dependencies

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

更改RegExp标志

所以基本上我自己编写了这个函数,以便能够计算String中Substring的出现次数:

String.prototype.numberOf = function(needle) {
  var num = 0,
      lastIndex = 0;
  if(typeof needle === "string" || needle instanceof String) {
    while((lastIndex = this.indexOf(needle, lastIndex) + 1) > 0)
      {num++;} return num;
  } else if(needle instanceof RegExp) {
    // needle.global = true;
    return this.match(needle).length;
  } return 0;
};
Run Code Online (Sandbox Code Playgroud)

该方法本身表现相当不错,基于RegExp和基于字符串的搜索与执行时间相当(在整个庞大的Ray Bradbury的"451 Fahrenheit"上搜索所有"the"的两个~2ms).

但是,令我感到困扰的是,无法更改提供的RegExp实例的标志.在没有提供的正则表达式的全局标志设置为true的情况下调用此函数中的String.prototype.match是没有意义的,因为它只会记录第一次出现.你当然可以在传递给函数的每个RegExp上手动设置标志,但我更喜欢能够克隆然后操作提供的正则表达式的标志.

令人惊讶的是,我不允许这样做,因为RegExp.prototype.global标志(更确切地说是所有标志)似乎是只读的.从那里评论出来的第8行.

所以我的问题是:有没有一种很好的方法来更改RegExp对象的标志?

我真的不想做这样的事情:

if(!expression.global)
  expression = eval(expression.toString() + "g");
Run Code Online (Sandbox Code Playgroud)

某些实现可能不支持RegExp.prototype.toString事件,只是从Object.prototype继承它,或者它可能完全是不同的格式.而这似乎是一个糟糕的编码实践开始.

javascript regex flags prototype

15
推荐指数
3
解决办法
9575
查看次数