在使用泛型时我在java中遇到一个小问题.我有一节课A:
public class A<T>
Run Code Online (Sandbox Code Playgroud)
在一个方法中A,我需要获取类型名称T.有没有办法找到s使用的字符串T?
(如果我创建A<String> temp = new A<String>();,我希望能够获得java.lang.String一点 - 我必须使用通用性,因为我的一个方法必须返回一个List<T>).
这似乎很容易,但我不知道该怎么做.
可能重复:
使用带有两个字段和一对的结构有什么区别?
亲爱的大家,
关于对和结构,我有一个小问题.使用std :: pair而不是带有两个单元格的结构有什么好处吗?我已经使用了一段时间,但主要的问题是可读性:如果你想表示例如一个双重(int"标签",双"值")你可以使用a:
typedef std::pair<int,double> myElem;
Run Code Online (Sandbox Code Playgroud)
或者a
typedef struct {
int label;
double value;
} myElem;
Run Code Online (Sandbox Code Playgroud)
如果你的语句具有"语义"意义,那么代码就会变得更具可读性(你将永远知道x.label是什么.这与x.first不同).
但是,我猜使用pair有一个优势.它更高效还是其他什么?
我正在使用PyDev/Eclipse进行几次修改,并且我得到了与导入相同的错误:PyDev用红色强调下载并说出来Unresolved import xxx ; Found at yyy.当我点击yyyeclispe查找并打开模块的实现时.(PyDev告诉我,它找不到模块xxx,并且在同一条消息中它可以找到它!)
该模块xxx处于日食的PYTHONPATH中.当我"探索"项目的解释器时,我可以毫无问题地找到它.当我尝试执行(从eclipse),我没有得到任何错误,它工作正常.
有时,错误消息将保留几天并将消失.有时,它不会.我试图刷新项目,但它没有对此产生影响.有时,它在项目上运行良好,我可以使用自动完成,但它不能在另一个项目中工作(同一个解释器)......
我只是无法理解发生了什么?
到目前为止,我已经忽略了这些错误,因为一切都是完全有效的,但有时候,当你工作时有红色标记"错误"有点令人不安.
你有没有办法在PyDev中避免这些错误?这是"正常"吗?有没有办法迫使PyDev"刷新"?
谢谢.
参考文献:
我目前正在从源代码重新编译gtk +和依赖项(我没有其他选择).
我的所有自定义软件包都安装在一个特定的自定义点(让我们称之为/packages)(它看起来很奇怪,但这一次,我别无选择).
当我尝试重新编译pango时,它需要freetype.Freetype的已安装/packages/freetype/2.1.10/amd64-linux (LIB,包括......在此目录)和不同的配置路径设置(LD_LIBRARY_PATH,LIBRARY_PATH,CPLUS_INCLUDE_PATH,INCLUDE_PATH,PKG_CONFIG_PATH).pango配置运行良好.它找到freetype并生成Makefile.当我尝试制作时,我收到以下错误:
libtool: link: warning: library `/packages/freetype/2.1.10/amd64-linux//lib/libfreetype.la' was moved.
grep: /usr/local/lib/libfreetype.la: No such file or directory
Run Code Online (Sandbox Code Playgroud)
libtool我的lib有问题(但libfreetype.la存在于目录中,/packages/freetype/2.1.10/amd64-linux//lib/并且没有访问问题).所以libtool试图在"经典地方"中/usr/...找到它并且找不到它.
一开始,我认为libtool与两个斜杠混淆(可能是由于在编译freetype期间--prefix标志中的错误)所以我确实重新编译了没有拼写错误的freetype但它没有改变任何东西.
有人有意帮助我吗?我以前从未在我的个人项目中使用过libtool所以我不知道是否有办法解决这种奇怪的行为...(这可能无关紧要,但libtool是版本1.5.22)
提前致谢.
我想了解python的一个奇怪的行为.让我们考虑一个M有形状的矩阵6000 x 2000.该矩阵用有符号整数填充.我想计算np.transpose(M)*M.两种选择:
np.int32,操作大约需要150s.np.float64(使用dtype=...)时,相同的操作大约需要2秒.我们如何解释这种行为?我天真地认为int乘法比浮点乘法便宜.
非常感谢你的帮助.
make和mingw有一个小问题.我通常使用Linux,我并不熟悉windows的做法.
C:\MingGW\bin在我的路径中(我可以通过Windows命令行直接启动g ++或sh)但是当我尝试输入时make我有以下错误:
make: g++: command not found
Run Code Online (Sandbox Code Playgroud)
我不知道这make是使用(没有make在C:\MinGw\bin),我不知道是哪的Windows中的等价物.我忘记了必不可少的一步吗?
谢谢你的帮助.
我想知道是否有一种简单的方法可以在Eclipse中为某些自定义项目扩展Java编辑器的功能.
示例:当我在eclipse中写道时:
@Deprecated
public void foo();
Run Code Online (Sandbox Code Playgroud)
foo将自动划掉,因此很容易被注意到.在某些项目中,我想对自定义注释(如@Untested或@Verified)执行相同操作以获得更好的开发环境(但当然,有很多这样的示例(特殊类颜色等等).
我想创建一个简单的eclipse包来扩展这种规则,但我无法为此找到足够的扩展点.我是否必须从头开始创建新的文本编辑器?
感谢您的帮助或评论,
我目前正在使用Apache Zeppelin + Spark 2.x内部的普通发行版构建自定义docker容器.
我的Spark作业将在远程集群中运行,我将yarn-client用作主人.
当我运行笔记本并尝试打印时sc.version,程序卡住了.如果我转到远程资源管理器,已经创建并接受了一个应用程序,但在日志中我可以阅读:
INFO yarn.ApplicationMaster: Waiting for Spark driver to be reachable
我对情况的理解是集群无法与容器中的驱动程序通信,但我不知道如何解决这个问题.
我目前正在使用以下配置:
spark.driver.port设置为PORT1和选项-p PORT1:PORT1传递给容器spark.driver.host设置为172.17.0.2(容器的IP)SPARK_LOCAL_IP设置为172.17.0.2(容器的IP)spark.ui.port设置为PORT2和选项-p PORT2:PORT2传递给容器我觉得我应该将SPARK_LOCAL_IP更改为主机ip,但如果我这样做,SparkUI无法启动,阻止该过程前一步.
提前感谢任何想法/建议!
我有一个关于静态变量和TypeObjects的小问题.我使用API C来包装一个c ++对象(我们称之为Acpp),它有一个名为x的静态变量.让我们调用我的TypeObject A_Object:
typedef struct {
PyObject_HEAD
Acpp* a;
} A_Object;
Run Code Online (Sandbox Code Playgroud)
TypeObject作为"A"附加到我的python模块"myMod".我已经定义了getter和setter(tp_getset),以便我可以从python访问和修改Acpp的静态变量:
>>> import myMod
>>> myA1 = myMod.A(some args...)
>>> myA1.x = 34 # using the setter to set the static variable of Acpp
>>> myA2 = myMod.A(some other args...)
>>> print myA2.x
34
>>> # Ok it works !
Run Code Online (Sandbox Code Playgroud)
这个解决方案有效,但并不是真的"干净".我想通过使用TypeObject而不是实例来访问python中的静态变量:
>>> import myMod
>>> myMod.A.x = 34 # what I wish...
Run Code Online (Sandbox Code Playgroud)
有人有想法帮助我吗?
提前致谢.
我正在尝试实现一个非常简单的 keras 模型,该模型使用来自另一个模型的知识蒸馏 [1]。粗略地说,我需要更换原来的损失L(y_true, y_pred)由L(y_true, y_pred)+L(y_teacher_pred, y_pred)哪里y_teacher_pred是另一个模型的预测。
我试过做
def create_student_model_with_distillation(teacher_model):
inp = tf.keras.layers.Input(shape=(21,))
model = tf.keras.models.Sequential()
model.add(inp)
model.add(...)
model.add(tf.keras.layers.Dense(units=1))
teacher_pred = teacher_model(inp)
def my_loss(y_true,y_pred):
loss = tf.keras.losses.mean_squared_error(y_true, y_pred)
loss += tf.keras.losses.mean_squared_error(teacher_pred, y_pred)
return loss
model.compile(loss=my_loss, optimizer='adam')
return model
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试调用fit我的模型时,我得到了
TypeError: An op outside of the function building code is being passed
a "Graph" tensor. It is possible to have Graph tensors
leak out of the function building context by including a
tf.init_scope …Run Code Online (Sandbox Code Playgroud) 我有以下问题:
我想从所有目标文件创建一个共享库(.so).
问题:如果我使用:
g++ -shared libxxxx.a a1.o a2.o ... -o libnew.so
Run Code Online (Sandbox Code Playgroud)
g ++确实理解我想要链接静态库libxxxx.a并且不包括存档的所有符号.
一个简单的解决方法是首先使用ar -x然后创建lib 来扩展存档,但它并不是真正的"优雅".
必须有一个简单的命令强制g ++将整个存档包含在.so中,但我找不到它.
谢谢你的帮助.
我最近在 Mac Os X (El Capitan) 上安装了“官方”Python 3.5。在此安装过程中,Python 将全局路径更改为包含/Library/Frameworks/Python.framework/Versions/3.5/bin(这可以使用例如 看到/usr/libexec/path_helper)。
但是,我无法理解这个“集合”是在哪里完成的(在 中/etc/paths既没有也没有/etc/paths.d)。我想从全局路径中删除此条目(不删除安装本身,因为它总是有用的)。
我正在开发一个由几个捆绑包组成的OSGi程序,我有时在我的本地Windows开发计算机上运行,有时在经典的Linux上运行.目前,几个专用于资源连接的捆绑包有自己的配置文件(属性文件),其中包含一些信息,例如访问某些重要文件的路径(存在于两个环境中).
但是,由于两个执行环境中的路径不同,我必须在编译之前手动更改配置,具体取决于我将运行程序的环境.
bundle有没有办法引用外部配置文件?一个解决方案可能是为我只生成一次的每个环境创建一个片段,但是我将无法轻松更改配置文件,因为它将位于片段的jar中.
是否有一些我应该知道的"最佳实践"来解决我的"简单"问题?
python ×5
java ×3
c++ ×2
eclipse ×2
apache-spark ×1
api ×1
archive ×1
docker ×1
editor ×1
freetype ×1
g++ ×1
generics ×1
gtk ×1
int32 ×1
libtool ×1
macos ×1
makefile ×1
mingw ×1
numpy ×1
object ×1
osgi ×1
pango ×1
path ×1
pydev ×1
static ×1
std-pair ×1
struct ×1
tf.keras ×1
windows ×1
wrapper ×1
x86-64 ×1