小编use*_*922的帖子

虚函数与函数指针 - 性能?

调用多态基类的C++虚函数和调用C风格的函数指针一样快吗?真的有什么区别吗?

我正在考虑重构一些具有性能意识的代码,这些代码利用函数指针并将它们转换为多态中的虚函数.

c c++

19
推荐指数
4
解决办法
9142
查看次数

Xamarin PCL中缺少Type.GetProperties()

在Xamarin PCL中,我正在尝试获取我编写的类的System.Reflection.PropertyInfo,以便我可以通过其字符串名称访问其属性来获取/设置,并且缺少Type.GetTypeInfo(),以及作为Type.GetProperties.但System.Reflection.PropertyInfo是一个有效的类.我怎样才能获得课程的属性信息?我是否必须为每个平台编写一个包装器?(它在Android/iOS项目中表现得很好).

c# xamarin.ios xamarin.android xamarin

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

在Qt QML中更改按钮的字体大小

如何在QML中设置Button控件中文本的字体大小?设计器没有选项,'font'不是Button的有效属性.

Button {
    id: cmdQuit
    text: qsTr("Quit")
    width: 64
    height: 32
}
Run Code Online (Sandbox Code Playgroud)

qt qml qt-quick

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

安排并发症更新

我在 Apple Watch 上有一个自定义的复杂功能,我想每小时更新一次。它应该每小时 ping 一个 API 端点,如果上次检查后数据发生了变化,则应该更新复杂性。

这是我目前拥有的似乎只能在蓝色月亮中工作一次的东西。当它工作时,它确实会 ping 我的服务器并更新并发症。看来 WatchOS 并没有每小时调用一次我的预定任务。是否有我缺少的更好的标准做法?

@implementation ExtensionDelegate

- (void)applicationDidFinishLaunching {
    // Perform any final initialization of your application.
    [SessionManager sharedManager];

    [self scheduleHourlyUpdate];
}

- (void) scheduleHourlyUpdate {
    NSDate *nextHour = [[NSDate date] dateByAddingTimeInterval:(60 * 60)];
    NSDateComponents *dateComponents = [[NSCalendar currentCalendar]
    components: NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:nextHour];

    [[WKExtension sharedExtension] scheduleBackgroundRefreshWithPreferredDate:nextHour userInfo:nil scheduledCompletion:^(NSError * _Nullable error) {
        // schedule another one in the next hour
        if (error …
Run Code Online (Sandbox Code Playgroud)

apple-watch watchkit apple-watch-complication

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

在C++中使用String-To-Class Lookup表来实例化类

寻找一种避免大规模IF/ELSE并使用查找表将字符串解析为特定类来实例化的方法,这些方法都来自基类.这是可能的,如果是这样,怎么样?

typedef struct BaseClass
{
} BaseClass;

typedef struct DerivedClassOne : BaseClass
{
} DerivedClassOne;

typedef struct DerivedClassTwo : BaseClass
{
} DerivedClassTwo;

typedef struct
{
    const char *name;
    BaseClass class;
} LookupList;

LookupList list[] = {
    {"ClassOne", DerivedClassOne},
    {"ClassTwo", DerivedClassTwo}
};

BaseClass *InstantiateFromString(char *name)
{
    int i;
    for (i = 0; i < 2; i++)
    {
        if (!strcmp(name, list[i].name))
            return new list[i].class();
    }
}

int main (int argc, char *argv[])
{
    BaseClass *myObjectFromLookup = InstantiateFromString("ClassOne");
}
Run Code Online (Sandbox Code Playgroud)

c++

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

将OpenGL ES 2.0渲染为图像

我正在尝试对图像文件执行一些OpenGL ES 2.0渲染,而不依赖于在屏幕上向用户显示的渲染.我渲染的图像尺寸与用户屏幕不同.我只需要一个GL_RGB数据的字节数组.我对glReadPixels很熟悉,但我不认为它会在这种情况下发挥作用,因为我没有从已经渲染的用户屏幕中拉出来.

伪代码:

// Switch rendering to another buffer (framebuffer? renderbuffer?)

// Draw code here

// Save byte array of rendered data GL_RGB to file

// Switch rendering back to user's screen.
Run Code Online (Sandbox Code Playgroud)

如何在不中断用户显示的情况下执行此操作?我宁愿不必忽略用户的屏幕,为单帧绘制我想要的信息,glReadPixeling然后让它消失.

同样,我不希望它向用户显示任何内容.这是我的代码.不行......我错过了什么吗?

unsigned int canvasFrameBuffer;
bglGenFramebuffers(1, &canvasFrameBuffer);
bglBindFramebuffer(BGL_RENDERBUFFER, canvasFrameBuffer);
unsigned int canvasRenderBuffer;
bglGenRenderbuffers(1, &canvasRenderBuffer);
bglBindRenderbuffer(BGL_RENDERBUFFER, canvasRenderBuffer);
bglRenderbufferStorage(BGL_RENDERBUFFER, BGL_RGBA4, width, height);
bglFramebufferRenderbuffer(BGL_FRAMEBUFFER, BGL_COLOR_ATTACHMENT0, BGL_RENDERBUFFER, canvasRenderBuffer);

unsigned int canvasTexture;
bglGenTextures(1, &canvasTexture);
bglBindTexture(BGL_TEXTURE_2D, canvasTexture);
bglTexImage2D(BGL_TEXTURE_2D, 0, BGL_RGB, width, height, 0, BGL_RGB, BGL_UNSIGNED_BYTE, 0);
bglFramebufferTexture2D(BGL_FRAMEBUFFER, BGL_COLOR_ATTACHMENT0, BGL_TEXTURE_2D, canvasTexture, 0);

Matrix::matrix_t identity; …
Run Code Online (Sandbox Code Playgroud)

opengl-es

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

没有ftransform()的桌面GLSL

我正在将我的代码库从固定功能OpenGL 1.x移植到OpenGL 2.x - 技术上是OpenGL ES 2.0,但我仍然在桌面上编码,只记得ES 2.0强加的限制类似到3.1'新'个人资料.

问题是,对于2D以外的任何其他内容,创建一个着色器传递到modelviewprojection矩阵中,因为制服不起作用.通常我会得到一个黑屏,但是如果我将所有顶点的Z值设置为0,我就会显示出来的东西.

当我启用ES 2.0模式时,将我的着色器放在RenderMonkey中,但在标准桌面GL上,它只是一个黑屏(没有编译器错误/警告):

vert着色器:

uniform mat4 mvp_matrix;
uniform mat4 obj_matrix;
uniform vec4 u_color;
attribute vec3 a_vertex;
attribute vec2 a_texcoord0;

varying vec4 v_color;
varying vec2 v_texcoord0;

void main(void)
{
   v_color = u_color;
   gl_Position = mvp_matrix * (obj_matrix * vec4(a_vertex, 1.0));
   v_texcoord0 = a_texcoord0;
}
Run Code Online (Sandbox Code Playgroud)

frag shader:

uniform sampler2D t_texture0;
varying vec2 v_texcoord0;
varying vec4 v_color;

void main(void)
{
   vec4 color = texture2D(t_texture0, v_texcoord0);
   gl_FragColor = color * v_color;
}
Run Code Online (Sandbox Code Playgroud)

我作为glUniformMatrix4fv传递矩阵(location,1,GL_FALSE,mvpMatrix); 对于2D中绘制的任何内容,此着色器的工作方式类 我在这做错了什么?或者我是否需要 …

opengl-es glsl

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

无法更改“表”,因为它被对象“谓词”引用 - SQL Server RLS with Temporal

我在 SQL Server 数据库中的临时表上使用行级安全性。为了遵守 GDPR,我不仅需要能够删除该表中当前的数据,还需要能够删除其 _History 表(临时表)。

在 RLS 之前,我曾经这样做过:

ALTER TABLE [dbo].[Table] SET (SYSTEM_VERSIONING = OFF);
DELETE FROM [dbo].[Table_History] WHERE UserID=@userID;
ALTER TABLE [dbo].[Table] SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[Table_History]));
Run Code Online (Sandbox Code Playgroud)

但现在,这会产生错误:

Cannot ALTER 'Table' because it is being referenced by object 'fn_Table_Predicate'.
Run Code Online (Sandbox Code Playgroud)

在启用 RLS 的情况下启用和禁用系统版本控制的正确方法是什么?

sql-server row-level-security temporal-tables

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

ARM 上什么速度更快?MUL 还是 (SHIFT + SUB)?

哪个在 ARM 上更快?

*p++ = (*p >> 7) * 255;

or

*p++ = ((*p >> 7) << 8) - 1
Run Code Online (Sandbox Code Playgroud)

基本上,我在这里所做的是取一个 8 位字,如果 >= 128,则将其设置为 255,否则设置为 0。

c optimization performance assembly arm

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