标签: flags

标志与Web服务

我有一个标志属性枚举,它位于Web服务后面,如下所示:

[Serializable,Flags]
public enum AccessLevels
{
    None = 0,
    Read = 1,
    Write = 2,
    Full = Read | Write
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我的网络服务的消费者没有枚举的原始常量值.生成的代理类客户端端具有以下内容:

{
   None = 1,
   Read = 2,
   Write = 4,
   Full = 8
}
Run Code Online (Sandbox Code Playgroud)

因此,当消费者检查"读取"访问时,即使"testItem"为"Full",这也将是假的.

((testItem & Svc.Read) == Svc.Read)
Run Code Online (Sandbox Code Playgroud)

如何通过Web服务正确提供标志?

编辑:

根据这篇文章,我可能无法做我想做的事情.Ivan Krivyakov说

Enum的透明度不完美

事实证明,枚举并不像我们希望的那样透明.有三个棘手的问题:

  1. 如果服务器端代码声明枚举并为其成员分配特定的数值,则客户端将无法看到这些值.
  2. 如果服务器端代码声明带有"复合"掩码值的[Flags]枚举(如白色=红色|绿色|蓝色),则它在客户端没有正确反映.
  3. 如果服务器或客户端发送超出枚举范围的"非法"值,则会在另一侧的XML反序列化器中导致异常.

所以我想知道这只是一个限制,是不可能的.

.net c# flags web-services

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

如何使用低级8位标志作为条件?

在我的键盘钩子中,每个按键都会获得一个标志,指示它是否被注入. http://msdn.microsoft.com/en-us/library/ms644967(VS.85).aspx

我从lParam中提取了一个KBDLLHOOKSTRUCT.我可以访问kbd.flags.XXX.我只是不知道如何将这个8位标志转换为if (injected) {...我知道如何使用的条件类型.

如果你们中的一个聪明的计算机科学类型会帮助我,我会非常感激.

    private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
    {
        KBDLLHOOKSTRUCT kbd = new KBDLLHOOKSTRUCT();
        Marshal.PtrToStructure(lParam, kbd);

        //if (injected) {...
Run Code Online (Sandbox Code Playgroud)

干杯!

c# flags low-level

6
推荐指数
2
解决办法
2353
查看次数

使用[Flags]属性定义C#枚举的多种方法?

我理解Enums如何在C#中工作,我得到了Flags属性带给表的内容.

我在这里看到了这个问题.推荐第一种口味,但没有提供任何理由/理由.

这两个定义的方式有什么不同,一个比另一个好吗?使用第一个synax代替第二个synax有什么好处?在定义Flags类型Enums时,我总是使用第二种风格......我一直都在做错吗?

[Serializable]
[Flags]
public enum SiteRoles
{
    User = 1 << 0,
    Admin = 1 << 1,
    Helpdesk = 1 << 2
}
Run Code Online (Sandbox Code Playgroud)

那是不一样的

[Serializable]
[Flags]
public enum SiteRoles
{
    User = 1,
    Admin = 2,
    Helpdesk = 4
}
Run Code Online (Sandbox Code Playgroud)

.net c# enums flags

6
推荐指数
2
解决办法
4151
查看次数

从C程序读取标志寄存器

为了好奇,我试图读取标志寄存器并以一种很好的方式将其打印出来.

我已经尝试使用gcc的asm关键字阅读它,但我无法让它工作.任何提示如何做到这一点?我正在运行Intel Core 2 Duo和Mac OS X.以下代码就是我所拥有的.我希望能告诉我是否发生溢出:

#include <stdio.h>

int main (void){
  int a=10, b=0, bold=0;
  printf("%d\n",b);
  while(1){
    a++;
  __asm__ ("pushf\n\t"
   "movl 4(%%esp), %%eax\n\t"
   "movl %%eax , %0\n\t"
   :"=r"(b)      
   :         
   :"%eax"        
   ); 
  if(b!=bold){ 
    printf("register changed \n %d\t to\t %d",bold , b);
  }
  bold = b;
  }
}
Run Code Online (Sandbox Code Playgroud)

这给出了分段错误.当我运行gdb时,我得到了这个:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x000000005fbfee5c
0x0000000100000eaf in main () at asm.c:9
9       asm ("pushf \n\t"
Run Code Online (Sandbox Code Playgroud)

c x86 assembly flags

6
推荐指数
3
解决办法
6350
查看次数

c ++ fstream - 创建自己的格式化标志

我需要为输出文件的格式创建新的标志.我上课了

class foo{
    bar* members;
    ofstream& operator<<(ofstream&);
    ifstream& operator>>(ifstream&);
};
Run Code Online (Sandbox Code Playgroud)

我想用它像:

fstream os('filename.xml');
foo f;
os << xml << f;
os.close();
Run Code Online (Sandbox Code Playgroud)

这将保存一个xml文件.

fstream os('filename.json');
foo f;
os << json << f;
os.close();
Run Code Online (Sandbox Code Playgroud)

这是一个json文件.

我怎样才能做到这一点?

c++ flags fstream

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

Haxe - 将枚举作为标志发送到函数

我只是想将我的代码从C#转换为Haxe NME.我使用枚举作为标志.

[Flags]
enum State
{
    StateOne    = 1,
    StateTwo    = 2,
    StateThree  = 4
}
Run Code Online (Sandbox Code Playgroud)

并使用它

if (someObj.HasState(State.StateOne | State.StateTwo))
{
    // Contains both the states. Do something now.
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何在Haxe NME中这样做.

谢谢.

enums flags haxe enum-flags nme

6
推荐指数
2
解决办法
1164
查看次数

golang类型转换不起作用(I)预期

我正在使用go-flags来解析命令行选项.

根据go-flags文档:"... [if] -h或--help在命令行参数中指定,将自动打印一条帮助消息.此外,返回特殊错误类型ErrHelp."

我打电话的方法是:

func (p *Parser) Parse() ([]string, error) {
Run Code Online (Sandbox Code Playgroud)

我打电话给:

var opts struct {
    // ...
}

func main() {

    parser := flags.NewParser(&opts, flags.Default)

    args, err := parser.Parse()
Run Code Online (Sandbox Code Playgroud)

定义ErrHelp的文件的片段如下所示:

type ErrorType uint

const (
    // Unknown or generic error
    ErrUnknown ErrorType = iota

    // Expected an argument but got none
    ErrExpectedArgument

    // ...

    // The error contains the builtin help message
    ErrHelp

    // ...
)

// Error represents a parser error. The error returned …
Run Code Online (Sandbox Code Playgroud)

flags types go

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

设置生产中具有与dev中不同的值的标志的一般做法是什么

假设我有一面旗帜public static final boolean FLAG.在开发中,我希望它是true,但在生产中,我希望它是false.

我是否应该true在开发过程中将其设置为,并且当我们构建/发布时,有人会进入并将其更改为false

我有一种感觉,因为它看起来很糟糕,所以不是这样的.

我应该采取什么方法?

java flags

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

重新定义Golang标志

我有可能在多个组件中定义的标志。无法知道某个组件是否已经定义了标志,例如两个组件Foo和Bar需要标志Zed,但是Foo和Bar必须定义标志Zed。在这种情况下,Go的标志将出现错误,并重新定义错误标志。

只有在未在其他地方初始化标志的情况下,才可以选择初始化吗?或者,检查是否已设置标志,然后再查找标志值?

我看到的唯一方法就是这样:

var fooFlag *string

func init() {
    if flag.Lookup("foo") == nil {
        fooFlag = flag.String("foo", "", "some flag foo")
    }
}

func initFlags() {
    if fooFlag == nil && flag.Lookup("foo") != nil {
        temp := (*flag.Lookup("foo")).Value.(flag.Getter).Get().(string)
        fooFlag = &temp
    }
}

func main() {
    flag.Parse()
    initFlags()
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是,这非常丑陋(而且不确定其效果如何)。有什么更好的方法吗?

flags go

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

做java标志Xms和Xmx覆盖标志XX:+ UseCGroupMemoryLimitForHeap?

我正在Kubernetes中运行一个容器化的java应用程序.

为了根据容器规范制作jvm保留存储器,-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap必须设置标志.

如果这两个标志都与Xms和Xmx标志一起设置,那么jvm的行为是什么?一面旗帜会覆盖另一面吗?

例如,如果我们java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Xms -Xms2500M -Xmx2500M -jar myjar.jar 在容器中有容量限制4Gi用于请求而4Gi用于响应,则在具有128Gi内存的主机中,JVM会保留多少内存?

java flags containers docker kubernetes

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

标签 统计

flags ×10

c# ×3

.net ×2

enums ×2

go ×2

java ×2

assembly ×1

c ×1

c++ ×1

containers ×1

docker ×1

enum-flags ×1

fstream ×1

haxe ×1

kubernetes ×1

low-level ×1

nme ×1

types ×1

web-services ×1

x86 ×1