我知道不可能重新启动使用过的Java Thread对象,但是我没有找到解释为什么不允许这样做的原因.即使保证线程已经完成(参见下面的示例代码).
我不明白为什么start()(或者至少是restart())方法不能以某种方式将Thread对象的内部状态(无论它们是什么)重置为新建Thread对象时的相同值.
示例代码:
class ThreadExample {
public static void main(String[] args){
Thread myThread = new Thread(){
public void run() {
for(int i=0; i<3; i++) {
try{ sleep(100); }catch(InterruptedException ie){}
System.out.print(i+", ");
}
System.out.println("done.");
}
};
myThread.start();
try{ Thread.sleep(500); }catch(InterruptedException ie){}
System.out.println("Now myThread.run() should be done.");
myThread.start(); // <-- causes java.lang.IllegalThreadStateException
} // main
} // class
Run Code Online (Sandbox Code Playgroud) 我试图通过套接字读取从外部接口收到的一些XML.问题是XML头中的编码指定错误(它表示iso-8859-1,但它是utf-16BE).据记载,编码是utf-16BE,但显然他们忘记设置正确的编码.
要在反序列化时忽略编码,我使用如下的StringReader:
private static T DeserializeXmlData<T>(byte[] xmlData)
{
var xmlString = Encoding.BigEndianUnicode.GetString(xmlData);
using (var reader = new StringReader(xmlString))
{
reader.ReadLine(); // Eat header line
using (var xmlReader = XmlReader.Create(reader))
{
var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(xmlReader);
}
}
}
Run Code Online (Sandbox Code Playgroud)
以上实际上工作正常,但我不喜欢通过调用ReadLine跳过标题行的部分.是否有一种不那么脆弱的方法来绕过XML标头中指定的编码?
使用StreamReader解决方案
通过使用StreamReader,我可以覆盖XML头中指定的编码.指定XmlReaderSettings.IgnoreProcessingInstructions与否没有任何区别.有趣的是,如果StreamReader找到unicode字节顺序标记,则忽略指定的编码.
回顾一下:
总之,最强大的解决方案似乎是使用StreamReader,因为它使用字节顺序标记(如果存在).
private static T DeserializeXmlData<T>(byte[] xmlData)
{
using (var xmlDataStream = new MemoryStream(xmlData))
{
using (var reader = new StreamReader(xmlDataStream, Encoding.BigEndianUnicode))
{
using (var xmlReader = XmlReader.Create(reader))
{
var serializer …Run Code Online (Sandbox Code Playgroud) 在多任务处理中,哪个库是最快的数百个DNS查询.
我用Google搜索了围绕DNS库的python.我发现adns据说是最快的.但它不兼容Windows.python是否有任何跨平台兼容的DNS库?
如果你点击这里点击这里订购按钮:http: //www.game onglove.com/ gog/test3.html,然后点击弹出的lightboxed窗口上的相同按钮,ajax请求将使用$运行.员额().
您可以点击"继续购物"返回上一个灯箱窗口以快速重新开始.
如果我在控制台(chrome或firefox)中执行jquery代码,那么它可以正常工作.它只是不会在源代码中的位置工作:
$('#cboxLoadingGraphic').ajaxStart(function() {
$(this).show();
$('#cboxLoadedContent').hide();
}).ajaxStop(function() {
$(this).hide();
$('#cboxLoadedContent').fadeIn('slow');
});
Run Code Online (Sandbox Code Playgroud)
为什么它可以从控制台工作,但不能在源中的当前位置工作?我如何让它工作?
你好可以投一个名单吗?
我有一个抽象类,它有一个方法,它采用某种List <>,在for循环中迭代它,获取该列表中的每个对象,并调用子类实现的insertItem抽象方法,基本上拉出正确的项目中的数据,然后最终将它们插入数据库表.
这是超类方法:
protected void insertAllItemsToDb(List<Object> items, String table) {
// open db and table
database().beginTransaction();
// clear all data from table
clearTable(table);
// call a insert statement to insert each column from an item
for (Object object : items) {
insertItem(object, table);
}
// close db
database().endTransaction();
database().close();
}
Run Code Online (Sandbox Code Playgroud)
在子类中,这是一个覆盖方法:我能够在这里强制转换对象.
@Override
protected void insertItem(Object object, String table) {
CalendarEventItem item = (CalendarEventItem) object;
eventItemValue = new ContentValues();
eventItemValue.put(LABEL_EVENTS_TITLE, item.getEventTitle());
eventItemValue.put(LABEL_EVENTS_LOCATION, item.getEventLocation());
eventItemValue.put(LABEL_EVENTS_DATE, item.getEventStartTime()
.getDate());
eventItemValue.put(LABEL_EVENTS_TIME, item.getEventStartTime()
.getTime());
eventItemValue.put(LABEL_EVENTS_TIMEZONE, …Run Code Online (Sandbox Code Playgroud) 第一次加载页面时,ASP.NET网页可能需要大约10秒左右,这是可以理解的,因为东西正在被JIT加载,应用程序域被加载等等.下一个请求只需要半秒钟左右.但是,如果没有人在几个小时内访问该网站,那么在这段不活动时间之后的第一个请求将再次花费10或20秒.
这就好像IIS感到无聊并卸载了一大堆垃圾.如何让它不这样做?即使我没有获得大量流量,我希望网站始终保持快速.
这是一个专用的Web服务器,没有用户登录,也没有其他用户模式应用程序在运行.可以使用几次内存,因此不应将任何内容分页到磁盘.
我使用这个类来上传和调整图像大小.问题是图像质量不好!我需要上传图像而不会丢失质量!
class SimpleImage {
var $image;
var $image_type;
function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions …Run Code Online (Sandbox Code Playgroud) 我有以下代码,它从函数中获取返回值 char*
cDestDrive = ReadFromRegistry(HKEY_CURRENT_USER,NDSPATH,szDestPathRoot);
Run Code Online (Sandbox Code Playgroud)
我可以读取内部的值,cDestDrive 直到我分配它为止.我分配它的那一刻:
CString strServerAddress = cDestDrive;
Run Code Online (Sandbox Code Playgroud)
cDestDrive的值被更改(损坏),我无法获得CString strServerAddres任何想法的价值,为什么会发生这种情况.
编辑: 从注册表中读取的代码
char* CNDSShellExtender::ReadFromRegistry(HKEY hKey,LPCTSTR lpNDS,LPSTR lpRegKey)
{
HKEY hRegKey=NULL;
if(hKey==NULL || lpNDS==""||lpNDS==NULL||lpRegKey==""||lpRegKey==NULL)
MessageBox(NULL,"Reading from Registry Failed!Invalid Path",
_T("Network Drive Solution"),
MB_ICONERROR);
LONG lOpenRes=RegOpenKey(hKey,lpNDS,&hRegKey);
if (lOpenRes!=ERROR_SUCCESS ||lpNDS==NULL)
MessageBox ( NULL, "Can not Find Any Server to Connect",
_T("NDSShellExtension"),
MB_ICONERROR );
if(lOpenRes==ERROR_SUCCESS && lpNDS!=NULL)
{
TCHAR tSZValue[MAX_PATH] = {0};
DWORD dwBufSize=MAX_PATH;
LONG lCloseOut;
LPBYTE lpStorage = reinterpret_cast<LPBYTE>(tSZValue);
char* cpRegKeyVal=tSZValue;
if (ERROR_SUCCESS == RegQueryValueEx(hRegKey,lpRegKey , 0, …Run Code Online (Sandbox Code Playgroud) asp.net .skin和.cssasp.net 之间的主要区别是什么?
.skin是IDE的新增强功能.我一直在和你一起工作.css.可用的.skin是不是.css
谢谢,saj
如何实现awk '{print $1}' /tmp/data | sort | uniq -cR中特定列的等效?
示例:cat/tmp/data
alama
alama
alama
bbbb
bbbb
ccc
alama
bbbb
bbbb
Run Code Online (Sandbox Code Playgroud)
awk'{print $ 1}'/ tmp/data | 排序| uniq -c
Run Code Online (Sandbox Code Playgroud)1 4 alama 4 bbbb 1 ccc
即列中每个项目的计数.
基于@Joshua的建议和我的特殊需求......
s<-data.frame(table(spam[,1]))
p<-s[s$Freq>=3,]
p[order(p$Freq,decreasing=TRUE ),]
Run Code Online (Sandbox Code Playgroud)