我想要实现的是从python中的任何网站获取网站截图.
环境:Linux
我正在使用用户定义的位数(我持有三维位数组,因此大小立方增加 - 假设不小于512位),并且需要单独翻转它们.现在,只是在计算机上,我正在使用该bool
类型,因为内存不是问题.我计划将来将代码移到微控制器上,因此处理能力和内存要求可能是一个问题.不过现在,我只想要速度.
然后我std::bitset
从C++ STL中找到了该对象,但我无法在运行时定义bitset的大小.然后我发现std::vector<byte>
有一个特殊的初始化器将它们存储为位(而不是整个字节,或4个字节),但随后在维基百科中找到了这一部分:
标准库定义了
vector
模板的特化bool
.此专业化的描述表明实现应该打包元素,以便每个bool
只使用 一位内存.这被普遍认为是一个错误.[...] C++标准委员会和图书馆工作组之间存在普遍共识,vector<bool>
应该弃用并随后从标准库中删除,而功能将以不同的名称重新引入.
现在,你可能会看到我想要使用一个vector<bool>
对象,但在阅读之后,我正在考虑使用其他东西.唯一的问题是我不知道该使用什么.我很好奇为什么他们说应该重新引入功能(尽管名称不同).
所以,我的问题是,vector<bool>
对象的使用是否可以接受(因为它们是STL的一部分)?它们是C++标准的一部分吗?
如果他们的使用是不可接受的,是否有一个可接受的替代解决方案(我自己定义一个特殊的容器)?我自己也有一些想法,但我很好奇是否有人有更好的解决方案.另外,我想避免使用大型库(同样,我希望最终将此代码移植到微控制器).
我正在尝试运行我的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运行库的路径?
我有两个表,看起来像这样:
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
.任何人都可以指出我在正确的轨道上?
我目前正在开发一个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(对我来说更有意义的是使用延迟函数而不是glutTimerFunc
每x
毫秒用来回调渲染函数).
我正在使用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及更高版本的一部分,并且称为范围枚举.
我知道这个问题,但我相信我的担忧是非常不同的.
我最近使用线程和OpenGL创建了一个SDL应用程序.我有一个线程在循环中运行,它不断更新我绘制到屏幕的对象的状态.状态非常简单,它只是一个布尔数组(当数组值为true时,我绘制它,当它为假时,我没有).
目前,我的任何变量都没有互斥锁,一切正常.即使只有一半的状态数组在绘制之间更新,帧速率也要高得多(或至少等于)更新速率,因此具有半更新状态是可以接受的.
现在,我最初在使用中断的嵌入式系统上开始研究类似的想法.每隔一段时间,一个中断就会触发,更新状态数组,执行将继续.现在,我是一个多核桌面上,并同时更新数组,我不知道为什么没有什么不好的正在发生的事情,因为我在技术上读取和写入同一个存储单元在同一时间.
谢谢您的帮助.
编辑:附加信息 - 数组是动态创建的,但是当它被创建/删除时,我确实使用了一个互斥锁(我认为访问已删除的内存不会看起来很友好:P).
我注意到有一些指令与.align前缀一起使用后跟数值.
我不确定这是什么,也不确定它是否有必要使用,但我已经写过x86 Assembly并且之前从未使用过".align".
它的基本目的是什么,为什么或为什么不是强制性的?
我从我的编程类,这是一个任务很措辞不当...下面这行真的树桩我.我们正在创建一个名为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
指向堆上的某个位置(开头?)?
我知道这个问题似乎很模糊,但这就是整个任务的方式 - 措辞非常差.我只是想确保它不仅仅是我!
用户登录到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
c++ ×6
opengl ×2
3d ×1
arrays ×1
assembly ×1
backend ×1
bitset ×1
boolean ×1
c ×1
class ×1
constructor ×1
cuda ×1
enumeration ×1
enums ×1
freeglut ×1
javascript ×1
join ×1
ms-access ×1
persistent ×1
php ×1
python ×1
screenshot ×1
sdl ×1
security ×1
sql ×1
stl ×1
ubuntu ×1
unix ×1
vector ×1
webpage ×1
x86 ×1
x86-64 ×1