我有一个大小不等的数组(4,X,Y),其中第一个维度代表(R,G,B,A)四联体.我的目标是将每个X*YRGBA四元组转换为X*Y浮点值,给定一个匹配它们的字典.
我目前的代码如下:
codeTable = {
(255, 255, 255, 127): 5.5,
(128, 128, 128, 255): 6.5,
(0 , 0 , 0 , 0 ): 7.5,
}
for i in range(0, rows):
for j in range(0, cols):
new_data[i,j] = codeTable.get(tuple(data[:,i,j]), -9999)
Run Code Online (Sandbox Code Playgroud)
哪个data是大小的numpy数组(4, rows, cols),并且new_data大小(rows, cols).
代码工作正常,但需要很长时间.我该如何优化这段代码?
这是一个完整的例子:
import numpy
codeTable = {
(253, 254, 255, 127): 5.5,
(128, 129, 130, 255): 6.5,
(0 , 0 , 0 , 0 ): …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用FreeGLUT编译一个非常简单的"Hello world"OpenGL 3.3程序.在我发现的所有教程中,它们都包含一个标题"gl3.h".问题是,我没有这样的头文件.
$ ls -l /usr/include/GL/
total 2164
-rw-r--r-- 1 root root 8797 20 janv. 17:44 freeglut_ext.h
-rw-r--r-- 1 root root 681 20 janv. 17:44 freeglut.h
-rw-r--r-- 1 root root 26181 20 janv. 17:44 freeglut_std.h
-rw-r--r-- 1 root root 837247 27 janv. 12:55 glew.h
-rw-r--r-- 1 root root 656589 21 mars 18:07 glext.h
-rw-r--r-- 1 root root 84468 21 mars 18:07 gl.h
-rw-r--r-- 1 root root 128943 21 mars 18:07 gl_mangle.h
-rw-r--r-- 1 root root 17255 21 mars 18:07 …Run Code Online (Sandbox Code Playgroud) 我试图利用测试程序中的缓冲区溢出来执行任意代码。我在 NetBSD 6 i386 上。这是C代码:
int checkPassword(char *password)
{
char savePassword[64] = {0};
char *logMessage;
int isUser = 0;
int isAdmin = 0;
int i;
if (!strcmp(password, userPassword))
isUser = 1;
strcpy(savePassword, password);
for (i = 0; password[i]; ++i)
password[i] ^= xorKey;
if (!strcmp(password, adminPassword))
isAdmin = 1;
if (!(isAdmin | isUser)) {
/* ... */
}
return isAdmin ? ADMIN : isUser ? USER : NOBODY; /* main.c:79 */
}
Run Code Online (Sandbox Code Playgroud)
我将代码插入savePassword缓冲区 (at %ebp - 0x58)。下面是 GDB …
我有两个实体User和Period,它们具有ManyToMany关联:一个用户属于多个期间,一个期间具有多个用户。该关联使用UserPeriod实体。
class Period
{
/**
* @ORM\OneToMany(targetEntity="UserPeriod", mappedBy="period")
*/
private $users;
}
class UserPeriod
{
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="User", inversedBy="periods")
*/
private $user;
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Period", inversedBy="users")
*/
private $period;
}
class User extends BaseUser
{
/**
* @ORM\OneToMany(targetEntity="UserPeriod", mappedBy="user")
*/
protected $periods;
}
Run Code Online (Sandbox Code Playgroud)
我想要实现的是获取定义期间内所有用户的列表。由于用户很多,因此无法将它们全部加载到内存中,而必须在它们上进行迭代(批处理)。这是我尝试过的:
public function getUsersOfQuery($period)
{
return $this->_em->createQueryBuilder()
->select('u')
->from('SGLotteryUserBundle:LotteryUser', 'u')
->innerJoin('u.periods', 'p')
->where('p.period = :id')
->setParameter('id', $period->id())
->getQuery();
}
$it = $repo->getUsersOfQuery($period)->iterate();
Run Code Online (Sandbox Code Playgroud)
但是,引发了此异常:
[Doctrine\ORM\Query\QueryException]
Iterate with fetch …Run Code Online (Sandbox Code Playgroud) 我目前正在使用带有Apache和mod_fcgid的FastCGI开发Web C++应用程序.
我正在尝试检索请求的标头,但我没有找到如何执行此操作.经过一些研究,我认为标题位于"FCGX_Request"的属性"envp"中,但它包含环境变量,例如:
REMOTE_ADDR: 192.168.0.50
SERVER_SOFTWARE: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/1.0.0f DAV/2 mod_fcgid/2.3.6
REDIRECT_UNIQUE_ID: TxytP38AAAEAABpcDskAAAAE
FCGI_ROLE: RESPONDER
HTTP_ACCEPT_LANGUAGE: fr
SERVER_SIGNATURE: <address>Apache/2.2.21 [etc.]
Run Code Online (Sandbox Code Playgroud)
这些变量为我提供了有用的信息,但我需要真正的HTTP头,特别是"Cookie".我试图读取"FCGX_Request"的"in"流,但似乎是请求体(POST数据).由于我的应用程序是多线程的,我使用"FCGX_Accept_r()",如下所示:
while(true)
{
FCGX_Init();
FCGX_Request* fcgiRequest = new FCGX_Request;
FCGX_InitRequest(fcgiRequest, 0, 0);
if(FCGX_Accept_r(fcgiRequest) < 0)
break;
Request* request = new Request(fcgiRequest);
request->process();
}
Run Code Online (Sandbox Code Playgroud)
但实际上,我不使用线程.请求一个接一个地执行.
如何获取请求标头?
谢谢.
我未能使用MinGW-W64为Windows x86-64构建共享库-flto。这是我得到的(在Linux机器上完成编译):
# ...
x86_64-w64-mingw32-g++ -c -std=gnu++11 -fvisibility=hidden -DGLEW_STATIC -Ofast -flto -frtti -pedantic -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_LARGEFILE_SUPPORT -I. -I'include' -I'/usr/x86_64-w64-mingw32/share/qt4/mkspecs/win32-g++-cross-x64' -o build/Point3D.o src/Point3D.cpp
x86_64-w64-mingw32-g++ -mwindows -Ofast -flto -shared -Wl,-subsystem,windows -mthreads -Wl,--out-implib,lib/libglengine.a -o lib/glengine.dll object_script.glengine.Release -lopengl32 -Wl,-Bstatic -lturbojpeg -lpng -lwebpdecoder
Cannot export _ZNSt6vectorI6StringSaIS0_EE19_M_emplace_back_auxIJRKS0_EEEvDpOT_: symbol wrong type (4 vs 3)
Cannot export _ZNSt6vectorIPN3GLE6ShaderESaIS2_EE19_M_emplace_back_auxIJRKS2_EEEvDpOT_: symbol wrong type (4 vs 3)
Cannot export _ZNSt6vectorIPN3GLE7ProgramESaIS2_EE19_M_emplace_back_auxIJRKS2_EEEvDpOT_: symbol wrong type (4 vs 3)
collect2: error: ld returned 1 exit status
Makefile.Release:211: recipe for …Run Code Online (Sandbox Code Playgroud)