我正在玩VS 2015 JavaScript/NodeJS IDE,我打算使用ES6作为JavaScript的语言风格,但是我注意到Visual Studio没有识别ES6(尽管我在各种网站上看到VS应该识别ES6 ).
有谁知道如何让VS 2015与ES6一起玩得很好(在语法高亮,智能感知等方面)?
我还修改了文件扩展名为.JSX和.ES6,以防有关VS接收它.没运气...
javascript visual-studio node.js ecmascript-6 visual-studio-2015
我正在构建一个基于电子的应用程序,其中包含一个包含唯一行的网格.我想要一个特定于每一行的上下文菜单.这是一个例子:
尽管裁剪了此屏幕截图,但您可以看到有多行,每行包含单独的数据.由于我想右键单击一行并获得一个独特的上下文菜单,我已经实现了电子上下文菜单,它可以在第一次右键单击时工作,但随后的右键单击会导致上下文菜单的堆叠效果.
具体来说,这是发生的事情:
在React.JS中,这是我的监听器,它contextmenu
根据electron-context-menu
模块的需要收集对象:
handleContextMenu() {
this.props.contextMenu({
window: electron.remote.BrowserWindow.getFocusedWindow(),
prepend: (params, browserWindow) => [{
label: `Library Compare ${this.state.msn}`,
click: () => this.runLibCompare()
}],
append: (params, browserWindow) => [{
label: '---',
}]
})
};
Run Code Online (Sandbox Code Playgroud)
在哪里this.props.contextMenu(...)
准备React.JS组件进入:
const contextMenu = eRequire('electron-context-menu');
Run Code Online (Sandbox Code Playgroud)
我做了一些大规模的调试,我不认为问题是模块.我使用的模块基本上组织了有关上下文菜单的信息,然后使用electron.remote
函数和menu.popup
来自电子内部的函数.这是github中特定行的链接.
const menu = (electron.Menu || electron.remote.Menu).buildFromTemplate(menuTpl);
menu.popup(electron.remote ? electron.remote.getCurrentWindow() : win);
Run Code Online (Sandbox Code Playgroud)
这个电话menu.popup
导致了这一行.
const remoteMemberFunction = function (...args) {
if (this …
Run Code Online (Sandbox Code Playgroud) 好奇心和效率是这个问题的原因.我遇到的情况是,在某些循环运行后我创建了许多新的HashSet:
HashSet目前在类的顶部声明为:
private Set<String> failedTests;
Run Code Online (Sandbox Code Playgroud)
然后在代码中,我只是在重新运行测试时创建一个新的failedTests HashSet:
failedTests = new HashSet<String>(16384);
Run Code Online (Sandbox Code Playgroud)
我会一遍又一遍地这样做,具体取决于测试的大小.我希望垃圾收集器能够最有效地处理旧数据.但是,我知道另一种选择是在开始时最初创建HashSet:
private Set<String> failedTests = new HashSet<String>(16384);
Run Code Online (Sandbox Code Playgroud)
然后每次通过循环清除HashSet.
failedTests.clear();
Run Code Online (Sandbox Code Playgroud)
我的问题是在开销等方面最有效的方法是什么?我不知道clear()函数在里面做了什么 - 它是做同样的事情,将旧数据发送到垃圾收集器,还是它做了更有效的事情?另外,我给HashSet一个很大的初始容量缓冲区,但是如果一个测试需要超过2 ^ 14个元素,那么该.clear()
函数会将HashSet重新实例化为16384吗?
要添加,我在这里找到了clear()的源代码.所以它至少是最坏情况的O(n)运算.
使用clear函数,我做了一个测试过程,在565秒内完成.使用GC处理它,测试在506秒内完成.
但它不是一个完美的基准,因为还有其他外部因素,如与计算机和网络的文件系统连接.但是整整一分钟确实感觉非常好.有没有人推荐一个适用于线/方法级别的特定分析系统?(我正在使用Eclipse Indigo)
作为我之前问题的扩展(IntelliJ 在编译时找不到依赖关系,但可以在编辑器中找到。)已经解决了,我现在有一个新问题出现了。
在同一个包中,对其他类的引用显示错误:
正如您在图片中看到的那样BifCreatorController
,即使该类与BifCreatorView
.
就像我之前的问题一样,我不明白为什么 IntellJ 会吐出这些错误。这个项目在 Eclipse 中运行良好,但我希望开始远离 Eclipse。
类似于这个问题IntelliJ,"所选目录不是JDK的主页",我收到一个错误,我的JDK目录突然无效.
即使我的JDK目录看起来很好,上次我加载了IntelliJ
所以我选择了一个有效的JDK目录但仍然出现了这个错误.
什么可能导致这个?什么能解决这个问题?
我有一个具有良好定义的Try/Catch/Finally链的应用程序,它在正常条件下退出并执行finally块,但是当有人过早地点击GUI中的红色X时,程序完全存在(代码= 0)并且主线程的finally块未被调用.
事实上,我确实希望程序在点击red-X时退出,但我不想要的是跳过finally {}块!我在GUI中手动放入finally块的最重要部分,但我真的不希望这样做,因为我希望GUI与实际程序分离:
class GUI { // ...
...
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
try {
processObject.getIndicatorFileStream().close();
} catch (Exception ignore) {}
System.exit(0);
}
});
...
}
Run Code Online (Sandbox Code Playgroud)
但我更喜欢这样的电话:
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Run Code Online (Sandbox Code Playgroud)
并确保在Exit之后从每个线程调用所有finally {}块.
我知道这实际上是预期的.如果应用程序从一个单独的线程(比如GUI线程)关闭,那么主线程将停在其轨道上.
简而言之 - 我如何确保System.exit(0)或JFrame.EXIT_ON_CLOSE仍然会导致每个线程的finally块执行?
在Apache HTTP Component 4类org.apache.http.impl.auth.BasicScheme中,我注意到了该方法:
public static Header authenticate(
final Credentials credentials,
final String charset,
final boolean proxy)
Run Code Online (Sandbox Code Playgroud)
不推荐使用以下信息:
/**
* Returns a basic <tt>Authorization</tt> header value for the given
* {@link Credentials} and charset.
*
* @param credentials The credentials to encode.
* @param charset The charset to use for encoding the credentials
*
* @return a basic authorization header
*
* @deprecated (4.3) use {@link #authenticate(Credentials, HttpRequest, HttpContext)}.
*/
@Deprecated
Run Code Online (Sandbox Code Playgroud)
但是,我没有看到解释如何从deprated函数迁移到新函数的文档.虽然已弃用的功能有效,但我宁愿以"正确"的方式做事.以下是我使用不推荐使用的函数的方法:
UsernamePasswordCredentials creds = new UsernamePasswordCredentials("admin", "admin");
URI uriLogin …
Run Code Online (Sandbox Code Playgroud) 我在SQLite表中有一列数据存储为blob.具体来说,它是一个序列化的POJO(java对象).
无论哪种方式,我想在SQLite控制台中将其视为十六进制转储,有点像这样:
0000000000 |The correction f|
0000000016 |or the aberratio|
0000000032 |n of light is sa|
0000000048 |id,.on high auth|
0000000064 |ority, not to be|
0000000080 | perfect even in|
0000000096 | that most perfe|
0000000112 |ct organ, the.ey|
0000000128 |e..|
Run Code Online (Sandbox Code Playgroud)
我知道该语句SELECT HEX(obj) FROM data WHERE rowid = 1
会将数据视为十六进制,但现在我想把它管道化为能给我一个hexdump视图的东西.
PS - 我知道我试图查看的数据是二进制(序列化POJO),但我想看看里面的实验是什么.所以,即使最终结果是神秘的,请告诉我!
更新:我尝试了一些建议,但发现sqlite3没有输出完整的十六进制.我期待大约500字节,但改为10:
root@ubuntu:~# sqlite3 IceCream.db "select hex(obj) from Customers where rowid=1;"
ACED00057372002D6564752E6761746563682E7365636C6173732E70726F6A656374322E637573746F6D65722E437573746F6D6572000000000000000102000B4C0007616464726573737400124C6A6176612F6C616E672F537472696E673B4C0012617661696C61626C65467265654974656D737400134C6A6176612F6C616E672F496E74656765723B4C00096269727468446174657400104C6A6176612F7574696C2F446174653B4C000C646973636F756E745261746571007E00024C000966697273744E616D6571007E00014C000A676F6C645374617475737400134C6A6176612F6C616E672F426F6F6C65616E3B4C00086C6173744E616D6571007E00014C000D6D6F6E74686C79506F696E747371007E00024C0013706F696E74734561726E656450657254696D657400134C6A6176612F7574696C2F486173684D61703B4C000B746F74616C506F696E747371007E00024C000876697053696E636571007E0003787200386564752E6761746563682E7365636C6173732E70726F6A656374322E73797374656D732E446174616261736553657269616C4F626A65637400000000000000010200024C000269647400104C6A6176612F6C616E672F4C6F6E673B4C00166C61737454696D654F626A6563744D6F64696669656471007E000778707372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000000000000017371007E0009000001497757AAFB740006436172736F6E737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C75657871007E000A000000007372000E6A6176612E7574696C2E44617465686A81014B59741903000078707708000001349BB816607871007E000F74000442696C6C737200116A6176612E6C616E672E426F6F6C65616ECD207280D59CFAEE0200015A000576616C7565787000740005313233205471007E000F737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000146000A6C6F6164466163746F7278703F400000770800000010000000007871007E000F70
root@ubuntu:~# sqlite3 IceCream.db "select obj from Customers where rowid=1;" | hexdump -C
00000000 ac ed …
Run Code Online (Sandbox Code Playgroud) 我有代表我通过网络传输的文件的字节。除了在文件系统上手动重建文件外,如何从文件中获取信息,例如 getName()、getPath() 等?
换句话说:
以下不起作用
我真的不想在文件系统上创建一个新的临时文件,尽管我知道有静态 File.createTemp 可以做到这一点。我更愿意将它保存在内存中,从 byte[] 数组构造一个新的 File 对象,获取我需要的信息并完成。
实际上,更好的是一个 API,它将获取 byte[] 并从中通过解析位直接获取文件名。
Java ObjectInputStream中有两个类似的方法:
和
文档指出:
public Object readUnshared() throws IOException, ClassNotFoundException
从 ObjectInputStream 读取“非共享”对象。此方法与 readObject 相同,只不过它阻止对 readObject 和 readUnshared 的后续调用返回对通过此调用获得的反序列化实例的其他引用。具体来说:
如果调用 readUnshared 来反序列化反向引用(之前已写入流的对象的流表示形式),则会抛出 ObjectStreamException。
如果 readUnshared 成功返回,则任何后续尝试反序列化对 readUnshared 反序列化的流句柄的反向引用都将导致抛出 ObjectStreamException。
通过 readUnshared 反序列化对象会使与返回的对象关联的流句柄无效。请注意,这本身并不总是保证 readUnshared 返回的引用是唯一的;反序列化对象可以定义一个 readResolve 方法,该方法返回对其他方可见的对象,或者 readUnshared 可以返回可在流中的其他位置或通过外部方式获取的 Class 对象或枚举常量。如果反序列化对象定义了 readResolve 方法并且调用该方法返回一个数组,则 readUnshared 返回该数组的浅表克隆;这保证了返回的数组对象是唯一的,并且无法通过对 ObjectInputStream 调用 readObject 或 readUnshared 再次获取,即使底层数据流已被操作。
重写此方法的 ObjectInputStream 子类只能在拥有“enableSubclassImplementation”SerializedPermission 的安全上下文中构造;任何在没有此权限的情况下实例化此类子类的尝试都将导致抛出 SecurityException。
但我想知道是否有人在现实生活中对此有.readUnshared()
用途.readObject()
java ×7
apache ×2
java-7 ×2
node.js ×2
arrays ×1
atom-editor ×1
collections ×1
dependencies ×1
eclipse ×1
ecmascript-6 ×1
electron ×1
exit ×1
file ×1
hex ×1
hexdump ×1
http ×1
ide ×1
intellij-15 ×1
ipc ×1
javascript ×1
jframe ×1
menu ×1
oracle ×1
post ×1
sqlite ×1