小编Bre*_*ugh的帖子

如何使用Python获取网站的屏幕截图/图像?

我想要实现的是从python中的任何网站获取网站截图.

环境:Linux

python webpage screenshot backend

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

是否可以使用C++中的std :: vector <bool>对象,还是应该使用替代?

我正在使用用户定义的位数(我持有三维位数组,因此大小立方增加 - 假设不小于512位),并且需要单独翻转它们.现在,只是在计算机上,我正在使用该bool类型,因为内存不是问题.我计划将来将代码移到微控制器上,因此处理能力和内存要求可能是一个问题.不过现在,我只想要速度.

然后我std::bitsetC++ STL中找到了该对象,但我无法在运行时定义bitset的大小.然后我发现std::vector<byte>有一个特殊的初始化器将它们存储为位(而不是整个字节,或4个字节),但随后在维基百科中找到了这一部分:

标准库定义了vector模板的特化bool.此专业化的描述表明实现应该打包元素,以便每个bool只使用 一位内存.这被普遍认为是一个错误.[...] C++标准委员会和图书馆工作组之间存在普遍共识,vector<bool>应该弃用并随后从标准库中删除,而功能将以不同的名称重新引入.

现在,你可能会看到我想要使用一个vector<bool>对象,但在阅读之后,我正在考虑使用其他东西.唯一的问题是我不知道使用什么.我很好奇为什么他们说应该重新引入功能(尽管名称不同).

所以,我的问题是,vector<bool>对象的使用是否可以接受(因为它们是STL的一部分)?它们是C++标准的一部分吗?

如果他们的使用是不可接受的,是否有一个可接受的替代解决方案(我自己定义一个特殊的容器)?我自己也有一些想法,但我很好奇是否有人有更好的解决方案.另外,我想避免使用大型库(同样,我希望最终将此代码移植到微控制器).

c++ stl boolean vector bitset

26
推荐指数
4
解决办法
9801
查看次数

为什么在Ubuntu下编译CUDA样本时找不到libcudart.so.4?

我正在尝试运行我的Cuda SDK示例,但是我收到以下错误:

./bandwidthTest: error while loading shared libraries:
                 libcudart.so.4: cannot open shared object file:
                 No such file or directory
Run Code Online (Sandbox Code Playgroud)

为什么我可以成功编译示例,但不能运行它?有没有办法手动指定CUDA运行库的路径?

c++ unix ubuntu cuda gpu-programming

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

如何连接两个表但只返回不匹配的行?

我有两个表,看起来像这样:

T1:  ID  |  Date  |  Hour  | Interval
T2:  ID  |  Date  |  Hour
Run Code Online (Sandbox Code Playgroud)

当他们的ID,日期和小时匹配时,我基本上需要加入这些表.但是,我只想返回表1中与表2中的结果匹配的结果.

我知道这看起来很简单,但我遇到的情况是表1中有多行与表2匹配(任何给定小时都有多个间隔).我需要返回所有这些间隔,只要它们不在表2中的相同小时内.

示例数据:

T1:  1  |  1/1/2011  |  1  |  1
     1  |  1/1/2011  |  1  |  2
     1  |  1/1/2011  |  2  |  1
     1  |  1/1/2011  |  2  |  2

T2:  1  |  1/1/2011  |  1
Run Code Online (Sandbox Code Playgroud)

我的预期结果集将是最后两行T1.任何人都可以指出我在正确的轨道上?

sql ms-access join

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

如何在OpenGL应用程序中实现准确(但可变)的FPS限制/上限?

我目前正在开发一个OpenGL应用程序,向用户显示一些3D球体,它们可以旋转,移动等等.也就是说,这里的复杂程度并不多,所以应用程序运行得相当高帧速率(~500 FPS).

显然,这是过度的 - 甚至120就足够了,但我的问题是以全速运行应用程序会占用我的CPU,导致过多的热量,功耗等.我想做的是能够让用户设置FPS上限,以便在不需要时不会过度使用CPU.

我正在使用freeglut和C++,并且已经设置了动画/事件处理以使用定时器(使用glutTimerFunc).的glutTimerFunc,但是,只允许设置毫秒的整量-所以,如果我想120 FPS,我能得到的最接近的是(int)1000/120 = 8 ms分辨率,这相当于125 FPS(我知道这是一个neglegible量,但我还是只想把如果我知道系统可以更快地渲染,那么在FPS限制中并获得FPS.

此外,使用glutTimerFunc限制FPS永远不会一致.假设我将我的应用程序限制为100 FPS,它通常不会高于90-95 FPS.同样,我已经尝试计算渲染/计算之间的时间差,但它总是超过限制5-10 FPS(可能是计时器分辨率).

我想这里最好的比较是游戏(例如半条命2) - 你设置你的FPS上限,它总是达到那个确切的数量.我知道我可以在渲染每个帧之前和之后测量时间增量,然后循环直到我需要绘制下一个帧,但这不能解决我的100%CPU使用率问题,也不能解决时序分辨率问题.

有什么办法可以在我的应用程序中实现有效的,跨平台的,可变的帧速率限制器/上限吗?或者,换句话说,是否有任何跨平台(和开源)库实现高分辨率计时器和睡眠功能?

编辑:我更愿意找到一个不依赖于最终用户启用VSync的解决方案,因为我将让他们指定FPS上限.

编辑#2:对于所有推荐SDL的人(我最终将我的应用程序移植到SDL),使用该glutTimerFunc函数触发绘制或使用SDL_Delay等待绘制之间有什么区别吗?每个文档确实提到了相同的警告,但我不确定一个是否比另一个更高效或更低效.

编辑#3:基本上,我试图弄清楚是否有一种(简单的方法)在我的应用程序中实现一个准确的FPS限制器(再次,像Half Life 2).如果这是不可能的,我很可能会切换到SDL(对我来说更有意义的是使用延迟函数而不是glutTimerFuncx毫秒用来回调渲染函数).

c++ opengl 3d cross-platform freeglut

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

在C++中枚举[tag] [:type] {enum-list} [declarator] - 这是合法的吗?

我正在使用C++中的自定义枚举类型,但它没有很多值.我想尝试减少它们占用的大小,我听说默认情况下enum类型总是整数.然后我遇到了关于C++枚举MSDN条目,发现以下语法非常有趣:

enum [: type] {enum-list};
Run Code Online (Sandbox Code Playgroud)

果然,当我做了以下事情时,它编译了我想要的东西(VS2008):

enum plane : unsigned char { xy, xz, yz };
Run Code Online (Sandbox Code Playgroud)

现在,你可以从我的枚举常量中看到我在空间方面不需要太多 - 一个unsigned char类型对我的用途来说是完美的.

但是,我不得不说,我从来没有在互联网上的任何其他地方看到过这种形式- 大多数人甚至都没有意识到这一点.我试图使这个代码跨平台(并且可能在嵌入式系统上使用),所以它让我想知道......这是正确的C++语法,还是只有MSVC编译器支持?

编辑:似乎此功能现在是C++ 11及更高版本的一部分,并且称为范围枚举.

c++ enums enumeration visual-studio

7
推荐指数
2
解决办法
1749
查看次数

我是否应该在一个线程中锁定一个变量,如果我只需要它在其他线程中的值,为什么它不工作?

我知道这个问题,但我相信我的担忧是非常不同的.

我最近使用线程和OpenGL创建了一个SDL应用程序.我有一个线程在循环中运行,它不断更新我绘制到屏幕的对象的状态.状态非常简单,它只是一个布尔数组(当数组值为true时,我绘制它,当它为假时,我没有).

目前,我的任何变量都没有互斥锁,一切正常.即使只有一半的状态数组在绘制之间更新,帧速率也要高得多(或至少等于)更新速率,因此具有半更新状态是可以接受的.

现在,我最初在使用中断的嵌入式系统上开始研究类似的想法.每隔一段时间,一个中断就会触发,更新状态数组,执行将继续.现在,我是一个多核桌面上,并同时更新数组,我不知道为什么没有什么不好的正在发生的事情,因为我在技术上读取和写入同一个存储单元在同一时间.

  • 这只是偶然的,还是有理由没有发生内存访问违规?
  • 如果在使用该值之前,期间或之后变量的状态是可以接受的,那么我是否应该使用互斥锁?

谢谢您的帮助.


编辑:附加信息 - 数组是动态创建的,但是当它被创建/删除时,我确实使用了一个互斥锁(我认为访问已删除的内存不会看起来很友好:P).

c c++ opengl multithreading sdl

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

".align"指令在x86-64汇编中意味着什么?

我注意到有一些指令与.align前缀一起使用后跟数值.

我不确定这是什么,也不确定它是否有必要使用,但我已经写过x86 Assembly并且之前从未使用过".align".

它的基本目的是什么,为什么或为什么不是强制性的?

x86 assembly x86-64 cpu-architecture computer-architecture

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

创建零宽度和零高度的数组?

我从我的编程类,这是一个任务措辞不当...下面这行真的树桩我.我们正在创建一个名为FloatArray的类,它包含一个数组(arr它只是指向一堆数组的指针floats).

默认构造函数FloatArray(); 应该创建零宽度和零高度的数组.

我不知道我的教授的意思是什么......还有其他人吗?我们需要提供另一个构造函数,它指示数组的高度和宽度.这很好,花花公子 - 只需插入数字,然后分配......但他的意思是"创建零宽度和零高度的数组"?

您知道,数组只是定义为:

float *arr;
Run Code Online (Sandbox Code Playgroud)

帮助我理解这种疯狂!如果由我决定,我甚至不会为这样一个班级做一个空白的构造函数......

无论如何 - 我在这里俯瞰什么吗?这是我以前从未遇到过的某种术语,还是我说这是疯狂的?

我应该在默认的构造函数中执行以下操作吗?

*arr = 0;
Run Code Online (Sandbox Code Playgroud)

因为我不能做arr = new float[0],现在我可以:P(或者我可以 - 我只是尝试过它(感谢托马斯!)并且它编译并运行......!?)

这是否意味着当我这样做时arr = new float[0],arr指向堆上的某个位置(开头?)?

我知道这个问题似乎很模糊,但这就是整个任务的方式 - 措辞非常差.我只是想确保它不仅仅是我!

c++ arrays constructor class

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

有没有办法通过网络持久存储(无论多小)客户端存储?

好吧,既然你们都不喜欢我的问题,那就让我改一下吧.

用户登录到HTML表单.使用JavaScript,他们的密码在本地进行哈希处理(也是盐渍的).服务器知道密码+盐应该是什么,用户已经注册,blahblahblah.现在用户请求页面.服务器向用户发送随机ID.当用户加载下一页时,该随机ID将附加到它们本地存储的密钥,它被散列,然后发送到服务器.服务器知道它们的密钥是什么,随机ID,执行相同的散列,并进行比较.如果他们匹配,恭喜,它来自正确的计算机.如果没有,那么有人一直在嗅探您的TCP/IP流量.

所有这一切显然没有 SSL,否则这将是非常多余的.

我的问题 - 我如何在客户端PC上存储密钥?

原帖:

你好;

我正在开发一个PHP内容管理系统,并提出了一个安全的登录系统.唯一的问题是它需要某种形式的客户端存储(对于一个非常小的密钥,长度为40个字符) - 否则用户必须在每个页面加载时输入他们的密码.

有没有办法,使用PHP或JavaScript,我可以在客户端的PC上存储一个小的40个字符的字符串,以后再检索它?

编辑:COOKIES不是一个选项.这个40个字符的字符串不能离开客户端的计算机,所有设置的cookie都随每个HTTP标头一起发送.

我重复 - COOKIES是不安全的,而不是一个可行的选择.

让我像这样重做 - 客户端提交一个HTTP表单.使用某种脚本语言(例如JavaScript),密码将从表单中删除,不会发送到服务器,加密,并保留CLIENT-SIDE,我可以检索和验证(通过使用从中发送给用户的密钥对其进行哈希处理)服务器).此验证将发送到服务器,而不是密钥.

javascript php security persistent content-management-system

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