我正在阅读Socket的InputStream.因为我正在动态解析传入的数据,所以我需要逐个字符地阅读.
有BufferedReader.read()同样的事情InputStream.read()吗?(假设BufferedReader是以InputStream为基础构造的)
在单独读取每个字符时使用InputStream.read()更有效吗?还是有更好的方法吗?
我想拥有当前聚焦窗口的宽度和高度.窗户的选择就像一个魅力,而高度和宽度总是返回1.
#include <X11/Xlib.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
Display *display;
Window focus;
XWindowAttributes attr;
int revert;
display = XOpenDisplay(NULL);
XGetInputFocus(display, &focus, &revert);
XGetWindowAttributes(display, focus, &attr);
printf("[0x%x] %d x %d\n", (unsigned)focus, attr.width, attr.height);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这不是"真正的"窗口,而是当前活动的组件(如文本框或按钮?)为什么它的大小为1x1呢?如果是这种情况,我如何让应用程序的主窗口包含此控件?意味着...有点顶级窗口,除了根窗口之外的最顶层窗口.
PS:不知道这是否真的很重要; 我使用Ubuntu 10.04 32和64位.
为了能够替代特定的实现,通常知道写
List<AnyType> myList = new ArrayList<AnyType>();
Run Code Online (Sandbox Code Playgroud)
代替
ArrayList<AnyType> myList = new ArrayList<AnyType>();
Run Code Online (Sandbox Code Playgroud)
这很容易理解,这样您可以轻松地将实现从ArrayList更改为LinkedList或任何其他类型的List.
嗯......这一切都很好,但由于我不能直接实例化"List",因此我需要输入
public List<AnyType> getSpecificList()
{
return new ArrayList<AnyType>();
}
Run Code Online (Sandbox Code Playgroud)
这使得以前的模式毫无意义.如果我现在想用LinkedList而不是ArrayList替换实现怎么办?它需要在两个位置上进行更改.
有可能有这样的东西(我知道语法绝对不正确)?
public class MyClass<T>
{
Type myListImplementation = ArrayList;
List<T> myList = new myListImplementation<T>();
public List<T> getSpecificList()
{
return new myListImplementation<T>();
}
}
Run Code Online (Sandbox Code Playgroud)
这将允许我简单地将单词"ArrayList"更改为"LinkedList",一切都很好.我知道这两个列表可能有不同的构造函数,这不会"按原样"工作.我真的不想添加第二个类型参数来指定正在使用的列表实现.
是否有任何干净的机制来解决这个问题?^
在此先感谢和最好的问候Atmocreations
我正在尝试使用java.util.net修改zip文件中的文件.因为不可能直接修改文件而我只想修改一个文件,所以我只创建一个新的zip文件,其中基本上包含了模板并替换特定文件,至少是计划.
以下是我尝试的最重要的部分:
Enumeration<? extends ZipEntry> entries = zif.entries();
while (entries.hasMoreElements()) {
ZipEntry currentEntry = entries.nextElement();
if (!currentEntry.isDirectory() && currentEntry.getSize() >0 && currentEntry.getCompressedSize() > 0)
{
System.out.println(currentEntry.getName() + ": " + currentEntry.getSize() + "-" + currentEntry.getMethod());
if (currentEntry.getName() != "file_i_want_to_change")
{
try {
this.zos.putNextEntry(currentEntry); // HERE the exception is thrown
} catch (IOException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
信息:zif = ZipFile,正确实例化并从现有文件打开; zos = ZipOutputStream,正确地为新文件实例化.
这是抛出的异常:
java.util.zip.ZipException: invalid entry size (expected 39 but got 0 bytes)
at java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:228)
at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:144) …Run Code Online (Sandbox Code Playgroud) 窗口应该保持在所有其他窗口的顶部.使用普通的x11/xlib可以实现这种方式吗?谷歌搜索"永远在顶部"和"x11"/"xlib"没有返回任何有用的东西.
如果可能的话,我会避免像GTK +这样的工具包.
我正在使用Ubuntu与gnome桌面.在窗口菜单中,有一个选项"Always On Top".这是由X服务器还是窗口管理器提供的?如果是第二种情况,是否有几乎任何wm都可以调用的通用函数?或者如何以"X11-generic"方式执行此操作?
XSelectInput(this->display, this->window,
ButtonPressMask |
StructureNotifyMask |
ExposureMask |
KeyPressMask |
PropertyChangeMask |
VisibilityChangeMask );
// ...
// In a loop:
if (XPending(this->display) >= 0)
{
XNextEvent(this->display, &ev);
switch(ev.type) {
// ...
case VisibilityNotify:
XRaiseWindow(this->display, this->window);
XFlush(this->display);
break;
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
但即使我的面具是正确的,事件处理和提高几乎永远不会被执行?!
我有一个这样的查询:
SELECT
id
FROM
table1
INNER JOIN
...
WHERE
...
AND eventtype IN (2000120, 2000121, 2000122, 2000123, 2000130)
EXCEPT
SELECT
id
FROM
table1
INNER JOIN
...
WHERE
...
AND eventtype IN (2000123,2000130,2000134,2000135)
Run Code Online (Sandbox Code Playgroud)
请注意,除了最后一个 where 子句之外,这两个查询都是相同的。
我现在想计算上述查询返回的记录数。
如何?
非常感谢
我有一个简单的C#2008应用程序,它显示一个png图片并处理一些简单的MouseEvents.
虽然它并不复杂,但它使用至少9.5-10 MB的内存(如任务管理器中所示)
我已经禁用了任何类型的错误记录以及删除了调试和跟踪符号."优化代码"已激活.
有没有办法减少这个?也许有一些选项作为框架的本机编译(这甚至存在于.NET?)
任何的想法?或者这只是我为.NET-Framework付出的代价?
编辑:10 MB并不多,我知道.但它将在Citrix Presentation Server(或现在称为XenApp)上运行,这意味着一台服务器上有大约30个用户.30个用户*10 MB = 300 MB仅适用于这个小应用程序.
在此先感谢您的问候
不是说我现在处于那种情况,但我只是对答案感兴趣......
假设你有一些用C/C++编写的代码,你想通过在ASM中修改它来手动优化它.
如果您在C/C++中更改代码并从源代码重新编译,会发生什么.当然,刚编译文件的优化会丢失.您如何避免每次编译项目时都需要重做这些优化?您是否为需要优化的部件创建单独的源文件以使其不那么复杂?或者是否有某种自动工具来做到这一点......?猜猜你不能使用diff/patch这个......
请分享您的经验,谢谢
请看一下我的源文件,它们有点太长了,不能在这里发布:
X11Painter.cpp: http://pastebin.com/gu4SrHUr
X11Painter.h: http://pastebin.com/3ktp1Fvn
在我看来,这堂课的行为很奇怪.
我有以下测试用例:
#include "X11Painter.h"
int main()
{
X11Painter p ;
p.show();
}
Run Code Online (Sandbox Code Playgroud)
用线编译它
g++ -O0 -g -o test2 test2.cpp X11Painter.cpp -lX11 -lXfixes -lXinerama
Run Code Online (Sandbox Code Playgroud)
只需运行它就可以执行以下操作:
this->some_test=1234
this->screen:0
1:: this->display='0x8b73008'; this->window='77594625'
width: 3200
0xbff91bdc
this->some_test=1234
this->some_test=3682292
Segmentation fault
Run Code Online (Sandbox Code Playgroud)
我正在尝试映射X11窗口 X11Painter::show()
当我开始调查为什么X11Painter.cpp:83是segfaulting时,我发现大多数变量都被覆盖并且show()与构造函数中的变量完全不同.
我把它int some_test看看发生了什么.为什么地狱的价值会发生变化?
如果我这样做printf("%p\n", this),指针也会改变.我怀疑在某个地方,这个指针被覆盖了.但为什么会这样呢?用ddd调试告诉我,在退出构造函数的同时修改了this-> some_value.
使用测试类(具有公共构造函数的类,一个公共方法和一个私有变量)进行简短测试可以正常工作.
有没有人知道为什么会发生这种奇怪的事情?我知道堆栈中的变量会发生什么变化,但我们仍然在那里...
可能与X11库有关吗?
我正在尝试将vaadin应用程序部署到jetty.
但是当我使用jetty运行时start.jar,它会启动到子文件夹
C:\Users\USERNAME\AppData\Local\Temp\jetty-0.0.0.0-8080-Application.war-....
虽然我把它放进去C:\Program Files\MyApp,但它总是在那里运行 - 包括它保存的文件.
如何告诉jetty从它所在的位置开始,并将所有文件相对于此基础?
我在Windows 7上,我们谈论的是最新的独立码头包.
任何想法都表示赞赏.
c++ ×3
java ×3
optimization ×2
x11 ×2
aggregation ×1
assembly ×1
buffering ×1
c ×1
c# ×1
generics ×1
inputstream ×1
jetty ×1
pointers ×1
sockets ×1
sql ×1
streamreader ×1
t-sql ×1
xlib ×1
xorg ×1
zip ×1