前几天我和朋友讨论过.我说的是,在纯粹的Lua中,你无法建立一个抢先式的多任务系统.他声称你可以,因为以下原因:
C和Lua都没有内置的线程库[OP的注释:嗯,Lua技术上确实如此,但AFAIK对我们的目的没用].Windows,主要是用C(++)编写的,具有先发制人的多任务处理,它们是从头开始构建的.因此,你应该能够在Lua中做同样的事情.我看到的一个大问题是抢先式多任务工作的主要方式(据我所知)是它产生定期中断,经理用它来控制并确定下一步应该处理的代码.我也不认为Lua有任何设施可以做到这一点.
我的问题是:是否有可能编写一个纯Lua库,允许人们进行先发制人的多任务处理?
为什么需要抢先认证?
System.setProperty("httpclient.authentication.preemptive", "true");
我用java编写了Web服务访问客户端程序。我们在 call 对象中设置用户名和密码的地方,它工作得很好。
最近,我们的服务提供商在他们身边进行了一些更改,之后他们在网络服务调用中没有收到用户名和密码,并且由于他们没有收到用户名和密码,因此我们无法连接到他们的(提供商)服务。
然后我用谷歌搜索并发现了抢占式身份验证。在调用 Web 服务时,我们将 "httpclient.authentication.preemptive" 设置为 "true" - System.setProperty("httpclient.authentication.preemptive", "true"); ,然后我们就可以从我们的服务提供商那里收到回复。
当我们删除 System.setProperty("httpclient.authentication.preemptive", "true"); 线然后我们无法连接到他们的服务。
我已经看到了很多这个问题的答案,但我仍然不确定.
其中之一是"Java是先发制人".(JVM使用抢占式,基于优先级的调度算法(通常是循环算法)进行调度.
第二个是如果两个具有相同优先级的线程运行Java将不会抢占,一个线程可能会饿死.
所以现在我编写了一个程序来检查它,我创建了10个具有最小优先级的线程,然后是10个具有最高优先级的线程,结果是我在所有线程之间跳转 - 这意味着即使两个线程具有相同的优先级,Java也是先发制人的优先
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @
*/
public class JavaApplication1 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
for (int i=0;i<10;i++){
Thread t=new Thread(new Dog(i));
t.setPriority(Thread.MIN_PRIORITY);
t.start();
}
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {
Logger.getLogger(JavaApplication1.class.getName()).log(Level.SEVERE, null, ex);
}
for (int i …Run Code Online (Sandbox Code Playgroud) 我试图达到一些在Apache preemtive基本身份验证下运行的RESTful服务.我正在使用jquery Ajax,并使用'Authentication'标头发送用户和密码.但是,我的请求每次运行时都会抛出一个空错误.
这是完整的$ .ajax调用:
$.ajax({
cache:false,
url: urladdress,
type:'GET',
async:false,
headers: { "cache-control": "no-cache" },
dataType: "html", //or xml or json
contentType: "html",
beforeSend : function(req)
{
req.setRequestHeader('Authorization', "Basic " + base64string); //user:password);
},
success: function(data){
successcallback(data);
},
error: function(xhRequest, ErrorText, thrownError){
alert("ERROR: "+ JSON.stringify(xhRequest));
},
complete: function(result){
...
}
});
Run Code Online (Sandbox Code Playgroud)
我做错了什么?有什么我在这里无视的吗?谢谢.
我在抢先身份验证方面遇到很多问题后,终于让它工作了.现在是下一个问题.我想用它来获取文件,但我不知道如何.我认为文件数据可能在变量响应中,但事实并非如此.任何想法如何可行?我正在尝试它,因为几天没有成功:( - 基本上我正在尝试下载一个jpeg文件,它位于由prem.auth保护的服务器上.
// BASIC AUTH
/*
* ====================================================================
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at …Run Code Online (Sandbox Code Playgroud) 我们的客户有一个 Java Web 服务,我们希望从 c#.net 应用程序中使用它,但是当我尝试使用或调用任何方法时,我收到一条Internal Error消息。此 Web 服务需要用户名和密码才能通过服务器(托管 WS 的位置)进行身份验证。
我使用 Soap UI 测试 Web 服务,并从 java WS 获得响应,但前提是我选择了 Preemptive Autorizathion 选项。当我选择另一个选项时,我收到一个错误,正如我上面写的。
WS是用Java开发的,而我们的应用程序是用.NET Framework 2.0开发的,所以问题是:有没有办法在c#中使用抢先授权进行身份验证?
如果有帮助,WS 托管在 HTTPS 站点上。
这是我用来向服务器进行身份验证的一些代码。
NetworkCredential netCredential = new NetworkCredential(username, password);
Uri uri = new Uri(service.Url);
ICredentials credentials = netCredential.GetCredential(uri, "Basic");
service.Credentials = credentials;
service.PreAuthenticate = true;
Run Code Online (Sandbox Code Playgroud)
我也试过这个代码:
string usernamePassword = username + ":" + password;
CredentialCache mycache = new CredentialCache();
WebRequest myReq = WebRequest.Create(s.Url);
myReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes((usernamePassword))));
mycache.Add(new …Run Code Online (Sandbox Code Playgroud) 我正在努力理解抢占式和非抢占式内核以及抢占式和非抢占式调度之间的区别。
来自操作系统概念(第九版),Silberschatz、Galvin 和 Gagne:
甲抢占式内核是其中内核允许被删除的方法和它在内核模式下运行的同时替换。
一个非抢占内核不允许在内核模式下运行的进程被抢占; 内核模式进程将一直运行,直到它退出内核模式、阻塞或自愿放弃对 CPU 的控制。
在非抢占式调度下,一旦将 CPU 分配给进程,该进程就会保留 CPU,直到它通过终止或切换到等待状态来释放 CPU。- 在我看来,这与非抢先内核的描述完全相同。
抢占式调度发生在这两种情况下(来自同一本书):
*当一个进程从运行状态切换到就绪状态时(例如发生中断时)
当进程从等待状态切换到就绪状态时(例如,在 I/O 完成时)*
这本书只是说在这种情况下有一个选择,我不确定这个选择是什么。是选择是否可以继续运行就绪队列中的同一进程,还是可以选择运行就绪队列中的不同进程?
基本上,我正在寻找对这 4 个术语的明确说明。
谢谢!
我有一个由CXF使用本地wsdl文件生成的客户端.客户端连接正常,我从Web服务器收到预期的401错误.
我遇到的问题是无法在客户端中正确配置抢占式身份验证.
我尝试过很多东西都无济于事.Web上的大多数示例似乎都集中在Spring上,而不是简单的旧Java方法.
我包括客户的主要部分.如果有人能给我一个如何配置它的例子,我会很感激.请注意,我不是在寻找任何花哨的东西.我只需要能够验证并调用服务.
public final class ServiceNowSoap_ServiceNowSoap_Client {
private static final QName SERVICE_NAME = new QName(
"http://www.service-now.com/foo",
"ServiceNow_foo");
private ServiceNowSoap_ServiceNowSoap_Client() {
}
public static void main(String args[]) throws java.lang.Exception {
URL wsdlURL = ServiceNowCmdbCiComm.WSDL_LOCATION;
if (args.length > 0 && args[0] != null && !"".equals(args[0])) {
File wsdlFile = new File(args[0]);
try {
if (wsdlFile.exists()) {
wsdlURL = wsdlFile.toURI().toURL();
} else {
wsdlURL = new URL(args[0]);
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
ServiceNowFoo ss = new ServiceNowFoo(wsdlURL, …Run Code Online (Sandbox Code Playgroud) 例如,要实现像unix或NT这样的操作系统,支持基于时间片切换不同的任务,cpu应该有什么样的硬件支持?
intel 80286是否开始支持带有时钟中断的“抢占式”任务的执行?实现这一目标还需要哪些硬件功能?
operating-system cpu-architecture task multitasking preemptive
preemptive ×10
java ×3
android ×1
c# ×1
cxf ×1
delphi ×1
download ×1
file ×1
http-headers ×1
httprequest ×1
javascript ×1
jquery ×1
kernel ×1
lua ×1
multitasking ×1
scheduling ×1
soap ×1
task ×1
web-services ×1