小编Ale*_*ler的帖子

在PHP中需要一个类似于数组的结构,内存使用量最少

在我的PHP脚本中,我需要创建一个> 600k整数的数组.不幸的是,我的web服务器memory_limit设置为32M,所以在初始化数组时,脚本会中止消息

致命错误:8/home/www/myaccount/html/mem_test.php中允许的内存大小为33554432字节(试图分配71个字节)

我知道PHP不会将数组值存储为普通整数,而是存储为比普通整数值大得多的z值(在我的64位系统上为8个字节).我写了一个小脚本来估计每个数组条目使用多少内存,事实证明,它恰好是128个字节.128!我需要> 73M才能存储阵列.不幸的是,网络服务器不在我的控制之下,所以我无法增加memory_limit.

我的问题是,在PHP中是否有可能创建一个使用更少内存的类似数组的结构.我不需要这种结构是关联的(普通的索引访问就足够了).它也不需要动态调整大小 - 我确切知道数组的大小.此外,所有元素都是相同的类型.就像一个好旧的C阵列.


编辑: 所以deceze的解决方案与32位整数一起开箱即用.但即使您使用的是64位系统,pack()似乎也不支持64位整数.为了在我的数组中使用64位整数,我应用了一些位操作.也许下面的片段对某些人有帮助:

function push_back(&$storage, $value)
{
    // split the 64-bit value into two 32-bit chunks, then pass these to pack().
    $storage .= pack('ll', ($value>>32), $value);
}

function get(&$storage, $idx)
{
    // read two 32-bit chunks from $storage and glue them back together.
    return (current(unpack('l', substr($storage, $idx * 8, 4)))<<32 |
            current(unpack('l', substr($storage, $idx * 8+4, 4))));
}
Run Code Online (Sandbox Code Playgroud)

php arrays memory-management out-of-memory

65
推荐指数
5
解决办法
7325
查看次数

用Java连接DB2

我需要将DB2与Java连接.请帮助我在ECLIPSE中将DB2与java 连接起来 .如果你可以一步一步地指导我,那将是非常有帮助请让我知道如何在eclipse代码片段中添加classpath:

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;

public class connection {
    public static void main(String[] argv) {
        try {
            Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
        }
        catch (ClassNotFoundException e) {
            System.out.println("Please include Classpath  Where your DB2 Driver is located");
            e.printStackTrace();
            return;
        }
        System.out.println("DB2 driver is loaded successfully");
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rset=null;
        boolean found=false;
        try {
            conn = DriverManager.getConnection("jdbc:db2:sabarish","db2admin","Murugasaranam");
            if (conn != null)
            {
                System.out.println("DB2 Database Connected");
            }
            else
            { …
Run Code Online (Sandbox Code Playgroud)

java db2

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

查找条件为true的第一个列表元素

我正在寻找一种优雅(简短!)的方式来返回匹配某个标准的列表的第一个元素,而不必评估列表中每个元素的条件.最终我提出了:

(e for e in mylist if my_criteria(e)).next()
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

更确切地说:有内置的python函数,如- all()any()- 也不是有意义first()吗?出于某种原因,我不喜欢next()我的解决方案中的电话.

python python-2.7

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

Doxygen:\ code标签会导致缩进

在doxygen我写道:

/*! Sample:

\code{.cpp}
void main(int argc, char** argv)
{
    if (argc < 2)
    {
        cout << "no way!" << endl;
    }
    else
    {
        foobar(argv[1]);
    }
}
\endcode
*/
Run Code Online (Sandbox Code Playgroud)

现在doxygen将为我的文档生成一个完美的语法突出显示的代码示例,但不幸的是它也会导致缩进:

样品:

void main(int argc, char** argv)
{
if (argc < 2)
{
cout << "no way!" << endl;
}
else
{
foobar(argv[1]);
}
}
Run Code Online (Sandbox Code Playgroud)

我能做些什么让doxygen尊重我的缩进.我知道有\逐字,但它没有强调语法.


编辑:这是doxygen配置,也许那里有一些错误:

#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING      = UTF-8
PROJECT_NAME           = demo
PROJECT_NUMBER         = 
PROJECT_BRIEF          = 
PROJECT_LOGO           = 
OUTPUT_DIRECTORY       = ../../../../../Desktop/dox
CREATE_SUBDIRS         = …
Run Code Online (Sandbox Code Playgroud)

doxygen

12
推荐指数
2
解决办法
8682
查看次数

python中属性名称的最大长度是多少?

我正在编写一组python函数,对源代码项目执行某种一致性检查.我想为这些函数指定相当详细的名称,例如:check_5_theVersionOfAllVPropsMatchesTheVersionOfTheAutolinkHeader()

这样过长的名字会成为python的问题吗?属性名称是否有最大长度?

python python-2.7

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

IPython键盘中断CTRL + C不一致

在从matplotlib绘图后,我从交互式python中的键盘中断Ctrl+ C(在xterm中运行)得到不一致的响应.

正如所料,当在ipython2中执行Ctrl+ 时,C我得到了KeyboardInterrupt消息.

但是,一旦我使用matplotlib(特别是matplotlib.pyplot)绘制任何内容,Ctrl+ C将退出交互式python会话,而不是在交互式python会话中退出正在运行的脚本(如果有的话).

一个原始的例子.

import numpy as n
import matplotlib.pyplot as m
x = n.linspace(0,4*n.pi,500)
y = x**2*n.sin(x)

m.plot(x,y)
m.show()
Run Code Online (Sandbox Code Playgroud)

优先行为是Ctrl+ C总是只中断正在运行的脚本(如果有的话),而不是交互式python会话本身.

python linux matplotlib ipython

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

MS Access:WHERE-EXISTS子句不能处理视图?

先决条件:在MS Access 2010中,创建以下表:

CREATE TABLE ATBL(ID INT);
INSERT INTO ATBL(ID) VALUES (1);
INSERT INTO ATBL(ID) VALUES (2);
INSERT INTO ATBL(ID) VALUES (3);

CREATE TABLE BTBL(ID INT);
INSERT INTO BTBL(ID) VALUES (1);
INSERT INTO BTBL(ID) VALUES (2);
Run Code Online (Sandbox Code Playgroud)

还要创建一个名为BVIEW的视图,它使用以下SELECT语句:

SELECT A.ID FROM ATBL AS A WHERE A.ID = 1 OR A.ID = 2
Run Code Online (Sandbox Code Playgroud)

现在BVIEW应该具有与BTBL相同的内容.然而,以下两个查询将返回不同的结果:

SELECT A.ID FROM ATBL AS A WHERE EXISTS (SELECT 1 FROM  BTBL AS B WHERE B.ID=A.ID)
SELECT A.ID FROM ATBL AS A WHERE EXISTS (SELECT 1 FROM BVIEW …
Run Code Online (Sandbox Code Playgroud)

sql database ms-access select sql-view

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

在Windows下调用shutil.copystat(file1,file2)后,文件修改时间不相等

我用Python 2.7.5运行以下代码.在Windows下:

import os, shutil, stat, time

with open('test.txt', 'w') as f: pass # create an arbitrary file
shutil.copy('test.txt', 'test2.txt') # copy it
shutil.copystat('test.txt', 'test2.txt') # copy its stats, too

t1 = os.lstat('test.txt').st_mtime # get the time of last modification for both files
t2 = os.lstat('test2.txt').st_mtime

print t1 # prints something like: 1371123658.54
print t2 # prints the same string, as expected: 1371123658.54
print t1 == t2 # prints False! Why?!
Run Code Online (Sandbox Code Playgroud)

我希望两个时间戳(=浮点数)相等(正如它们的字符串表示所示),那么为什么要t1 == t2评估False

此外,我无法使用更少的代码重现此行为,即不比较通过os.lstat …

python windows filesystems python-2.7

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

type_info的std :: is_convertible

在C++ 11中,可以确定A类型的变量是否可以隐式转换为B类型using std::is_convertible<A, B>.

如果你真的知道类型A和B,这很有效,但我只有type_infos.所以我正在寻找的是这样的函数:

bool myIsConvertible(const type_info& from, const type_info& to);
Run Code Online (Sandbox Code Playgroud)

是否有可能在C++中实现类似的东西?如果是这样,怎么样?

c++ types casting typecast-operator c++11

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

确定数字类型A是否可以转换为数字类型B.

给出两种数字类型FromTo.以下代码是否实际确定是否From可以将任何类型的值表示为类型的值To而不丢失信息?如果是,是否有更短或更易读的确定方式?

template <class From, class To>
struct can_cast
{
    static const bool value = 
        (std::numeric_limits<From>::is_integer || // either From is an integer type OR 
        std::is_floating_point<To>::value) && // ...they're both floating point types AND
        (std::numeric_limits<From>::is_signed == false || // either From is unsigned OR
        std::numeric_limits<To>::is_signed == true) && // ...they're both signed AND
        (std::numeric_limits<From>::digits < std::numeric_limits<To>::digits || // To has more bits for digits than From OR
        std::numeric_limits<From>::digits == std::numeric_limits<To>::digits && // To …
Run Code Online (Sandbox Code Playgroud)

c++ types casting c++11

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