小编tdc*_*tdc的帖子

linux中的ssh端口转发(隧道)

我有一个特定的场景,我想解决.我目前通过端口转发连接到主机:

 laptop -> gateway -> remote_server_1
Run Code Online (Sandbox Code Playgroud)

和另一位主持人:

 laptop -> remote_server_2
Run Code Online (Sandbox Code Playgroud)

使用无密码登录.这两个远程服务器都不对外界可见.现在我正在remote_server_2上运行一项服务,我希望能够访问remote_server_1.我认为我必须设置从remote_server_1到我的笔记本电脑的反向端口转发,然后再到remote_server_2,但我不知道如何做到这一点.以前有人遇到过这种情况吗?

编辑:完整的解决方案,以防其他人需要它:

mylaptop$ ssh -L 3001:localhost:3000 server_2
server_2$ netcat -l 3000
Run Code Online (Sandbox Code Playgroud)

然后通过以下gateway方式设置隧道server_1:

ssh -t -t -L 3003:server_1:22 gateway
Run Code Online (Sandbox Code Playgroud)

然后从server_1以下位置访问:

ssh -R 3002:localhost:3001 -p3003 localhost
echo "bar" | nc localhost 3002`
Run Code Online (Sandbox Code Playgroud)

嘿presto server_2显示bar:-)

linux openssh portforwarding tunneling ssh-tunnel

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

del MyClass不调用object .__ del __()

我有一个打开文件写作的类.在我的析构函数中,我调用关闭文件的函数:

class MyClass:
    def __del__(self):
        self.close()

    def close(self):
        if self.__fileHandle__ is not None:
                self.__fileHandle__.close()
Run Code Online (Sandbox Code Playgroud)

但当我用以下代码删除对象时:

myobj = MyClass()
myobj.open()
del myobj
Run Code Online (Sandbox Code Playgroud)

如果我尝试重新实例化该对象,我会收到一个值错误:

ValueError: The file 'filename' is already opened.  Please close it before reopening in write mode.
Run Code Online (Sandbox Code Playgroud)

而如果我myobj.close()之前打电话,del myobj我就不会遇到这个问题.那么为什么不__del__()被召唤?

python destructor

6
推荐指数
2
解决办法
6188
查看次数

如何使用Linq的索引数组从数组中选择项目?

如何使用Linq的索引数组从数组中选择项目?

以下代码有效:

String[] A = new String[] { "one", "two", "three", "four" };
int[] idxs = new int[] { 1, 3 };
String[] B = new String[idxs.Length];
for (int i = 0; i < idxs.Length; i++)
{
     B[i] = A[idxs[i]];
}
System.Diagnostics.Debug.WriteLine(String.Join(", ", B));
Run Code Online (Sandbox Code Playgroud)

输出:

        two, four
Run Code Online (Sandbox Code Playgroud)

是否有LINQ方式(或其他单线程)摆脱for循环?

c# linq arrays

6
推荐指数
2
解决办法
4472
查看次数

将使用-v7.3(HDF5)保存的Matlab稀疏矩阵加载到Python中并对其进行操作

我是python的新手,来自matlab.我有一个以matlab v7.3(HDF5)格式保存的大型稀疏矩阵.到目前为止,我已经找到了两种加载文件的方法,使用h5pytables.然而,在矩阵上运行似乎非常缓慢.例如,在matlab中:

>> whos     
  Name           Size                   Bytes  Class     Attributes

  M      11337x133338            77124408  double    sparse    

>> tic, sum(M(:)); toc
Elapsed time is 0.086233 seconds.
Run Code Online (Sandbox Code Playgroud)

使用表格:

t = time.time()
sum(f.root.M.data)
elapsed = time.time() - t
print elapsed
35.929461956
Run Code Online (Sandbox Code Playgroud)

使用h5py:

t = time.time()
sum(f["M"]["data"])
elapsed = time.time() - t
print elapsed
Run Code Online (Sandbox Code Playgroud)

(我放弃了等待......)

[编辑]

根据@bpgergo的评论,我应该补充说我已经尝试通过以下两种方式将by h5py(f)中加载的结果转换为numpy数组或scipy稀疏数组:

from scipy import sparse
A = sparse.csc_matrix((f["M"]["data"], f["M"]["ir"], f["tfidf"]["jc"]))
Run Code Online (Sandbox Code Playgroud)

要么

data = numpy.asarray(f["M"]["data"])
ir = numpy.asarray(f["M"]["ir"])
jc …
Run Code Online (Sandbox Code Playgroud)

python matlab sparse-array hdf5 sparse-matrix

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

Flask-SQLAlchemy SQLITE 布尔字段总是返回 False

我在 SQLAlchemy 中使用 sqlite。我有一个类(修剪)定义如下:

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    can_view_records = db.Column(db.Boolean, default=False, nullable=False)
Run Code Online (Sandbox Code Playgroud)

我的模式定义如下:

create TABLE users (
    id INTEGER not null,
    can_view_records BOOLEAN not null,
    PRIMARY KEY (id)
);
Run Code Online (Sandbox Code Playgroud)

在我的数据库中,我有以下几行:

+----+------------------+
| id | can_view_records |
+----+------------------+
| 8  | 1                |
| 9  | 0                |
+----+------------------+
Run Code Online (Sandbox Code Playgroud)

在 Python 中查询它们总是让我False了解该can_view_records领域。

>>> User.query.get(8).can_view_records
False
>>> User.query.get(9).can_view_records
False
Run Code Online (Sandbox Code Playgroud)

但是对该字段执行过滤器会成功:

>>> User.query.filter_by(can_view_records=True).all()
[<id 8>]
Run Code Online (Sandbox Code Playgroud)

但即使该结果也返回 False:

>>> User.query.filter_by(can_view_records=True).first().can_view_records
False
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

python sqlite sqlalchemy flask-sqlalchemy

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

python使用元组替换列表值

如果我有一个清单:

my_list = [3,2,2,3,4,1,3,4]
Run Code Online (Sandbox Code Playgroud)

和一个元组

my_tuple = (3,5)
Run Code Online (Sandbox Code Playgroud)

my_list使用元组替换元素的最佳方法是什么:

result = [5,2,2,5,4,1,5,4]
Run Code Online (Sandbox Code Playgroud)

例如

for item in my_list:
    if(item == my_tuple[0]):
        item = my_tuple[1]
Run Code Online (Sandbox Code Playgroud)

更一般地说,我会有一个列表列表和一个元组列表,我想将每个元组应用于列表列表中的每个列表.

python list

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

python(scipy):调整稀疏矩阵的大小

我在调整矩阵大小时遇到​​了麻烦 - set_shape函数似乎没有效果:

>>> M
<14x3562 sparse matrix of type '<type 'numpy.float32'>'
   with 6136 stored elements in LInked List format>
>>> new_shape = (15,3562)
>>> M.set_shape(new_shape)
>>> M
<14x3562 sparse matrix of type '<type 'numpy.float32'>'
   with 6136 stored elements in LInked List format>
Run Code Online (Sandbox Code Playgroud)

有人遇到过这个吗?

我也尝试过这样做,即

>>> M._shape = new_shape
>>> M.data = np.concatenate(M.data, np.empty((0,0), dtype=np.float32))
Run Code Online (Sandbox Code Playgroud)

但是这引发了一个错误:

*** TypeError: only length-1 arrays can be converted to Python scalars
Run Code Online (Sandbox Code Playgroud)

要么

>>> M.data = np.concatenate(M.data, [])
*** TypeError: an integer is required …
Run Code Online (Sandbox Code Playgroud)

python scipy sparse-matrix

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

C++:std :: vector <I> mask是什么(n_col,-1); 意思?

我正在翻译一些C++代码(自从我查看任何内容以来已经很长时间了!).我不确定这意味着什么:

std::vector<I> mask(n_col, -1);
Run Code Online (Sandbox Code Playgroud)

它是否正在创建一个n_col填充值的长度向量-1

c++ stl

0
推荐指数
1
解决办法
371
查看次数