我有一个特定的场景,我想解决.我目前通过端口转发连接到主机:
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:-)
我有一个打开文件写作的类.在我的析构函数中,我调用关闭文件的函数:
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__()被召唤?
如何使用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循环?
我是python的新手,来自matlab.我有一个以matlab v7.3(HDF5)格式保存的大型稀疏矩阵.到目前为止,我已经找到了两种加载文件的方法,使用h5py和tables.然而,在矩阵上运行似乎非常缓慢.例如,在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) 我在 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)
我错过了什么吗?
如果我有一个清单:
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)
更一般地说,我会有一个列表列表和一个元组列表,我想将每个元组应用于列表列表中的每个列表.
我在调整矩阵大小时遇到了麻烦 - 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) 我正在翻译一些C++代码(自从我查看任何内容以来已经很长时间了!).我不确定这意味着什么:
std::vector<I> mask(n_col, -1);
Run Code Online (Sandbox Code Playgroud)
它是否正在创建一个n_col填充值的长度向量-1?
python ×5
arrays ×1
c# ×1
c++ ×1
destructor ×1
hdf5 ×1
linq ×1
linux ×1
list ×1
matlab ×1
openssh ×1
scipy ×1
sparse-array ×1
sqlalchemy ×1
sqlite ×1
ssh-tunnel ×1
stl ×1
tunneling ×1