这个问题会很长,所以我先发制人道歉.
在Python中,我们可以在以下三种情况下使用*:
I.在定义一个我们想要用任意数量的参数调用的函数时,例如在这个例子中:
def write_multiple_items(file, separator, *args):
file.write(separator.join(args))
Run Code Online (Sandbox Code Playgroud)
在这种情况下,多余的位置参数被收集到元组中.
II.相反的情况是,当参数已经在列表或元组中时,我们希望为需要单独位置参数的函数调用解包它们,例如在本例中:
>>> range(3, 6) # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args) # call with arguments unpacked from a list
[3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
III.从Python 3开始,*也用于扩展列表或元组解包的上下文中,例如在这个示例中用于元组:
>>> a, *b, c = range(5)
>>> b
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
或列表:
>>> [a, *b, c] = range(5)
>>> …Run Code Online (Sandbox Code Playgroud) 要求:
如何:
我会尽可能地简短而重要,但这是一个复杂的问题.我正在Linux平台上用Java编写,无论价值多少.
目标的简短版本:我想要一个名为的抽象类Client,它充当客户端连接的通用容器.Client应该对每个连接进行线程化.我也有一些半测试的代码,它以类似的编码方式与服务器相对应.摘要Client应该被实现为更有形和可实现的东西.在我的例子中,我有一个被调用的类FileClientGui,它使用从服务器接收文件内容并显示它们的基本方法来扩展Client和覆盖所有Client的抽象方法.摘要Client本身就是一个扩展,这使事情变得更加复杂java.lang.Thread.
所以这是我的通用术语文件结构:
/class/path/lib/client/Client.java
/class/path/com/fileclient/FileClientGui.java
这两个文件都引用了其他几个自定义类,但我没有收到任何错误.如果我需要发布这些项目的代码,请告诉我,我会发布它们.
所以我在终端上运行这个很长的javac命令,设置classpath和build目录以及所有需要编译的相关文件.我收到的任何代码的唯一错误是:
com/fileclient/FileClientGui.java:26: com.fileclient.FileClientGui is not abstract and does not override abstract method cleanClients() in lib.client.Client
Run Code Online (Sandbox Code Playgroud)
我的代码(见下文)清楚地实现了Client.java中定义的方法和所有其他抽象方法.我搜索了互联网,看起来大多数遇到这种错误的人都试图做一些像实现一样的东西ActionListener,并对这个实现感到困惑,而且很多时候,这只是一个简单的拼写或大写问题.我已经遍及我的代码,以确保这不是一个简单的"oops"问题.我怀疑它实际上是我的类的名称和某些其他类的名称之间的某种冲突,这些类在某种程度上最终出现在我的类路径或Java的本机框架/库中,但我找不到任何明显的东西.
无论如何,这是我的代码.
Client.java:
package lib.client;
import lib.clientservercore.Connection;
import lib.simplefileaccess.Logger;
import java.io.IOException;
import java.net.Socket;
import java.util.ArrayList;
import java.lang.Thread;
/**
*
* @author Ryan Jung
*/
public abstract class Client extends Thread {
ArrayList<Connection> connections;
boolean isRunning;
Logger log;
public Client (String logFile) …Run Code Online (Sandbox Code Playgroud) 所以 - 我有这个ajax请求,请参阅 - .大约6英尺高的金发女郎看起来像这样:
$.ajax({
url: 'http://example.com/makeThing',
dataType: 'html',
type: 'POST',
data: {
something:someotherthing
},
complete: function(request, status) {
console.log("headers=" + request.getAllResponseHeaders(););
}
});
Run Code Online (Sandbox Code Playgroud)
发生的事情是'/ makeThing'请求将302重定向返回到第二个url:'getThing/abc123'.我想要做的就是找出第二个网址是什么(以编程方式 - 它每次都会有所不同,所以只需查看firebug对我没有帮助).我已经尝试了回到'完整'回调的响应头,但这只是给了我第二次请求回来的内容.
约束: - 我无法控制正在运行的服务器 - 只有js. - 如果必须,可以切换框架(dojo?prototype?)
理想情况下,我会对/ makeThing执行某种仅限标头的请求,以通过获取初始302响应的标头来找出重定向URL的内容.
如果失败了(因为jquery自动跟随重定向并且似乎没有办法介入请求之间),我会检索最终响应并使用它以某种方式从...获取URL?请求对象,也许?
TLDR:发送ajax请求.框架自动跟随生成的302重定向.我如何确定它重定向到的位置?
编辑,澄清:最后的网址每次都会有所不同 - 调用'makeThing'会导致服务器创建以后在'getThing/abc123'中托管的内容
我正在尝试将现有的.NET Remoting应用程序转换为WCF.服务器和客户端共享公共接口,所有对象都是服务器激活的对象.
在WCF世界中,这类似于创建每个呼叫服务和ChannelFactory<T>用于创建代理.我正在努力解决如何正确创建ChannelFactory<T>ASP.NET客户端的问题.
出于性能原因,我希望ChannelFactory<T>每次调用服务时都缓存对象并创建通道.在.NET远程处理时代,曾经有RemotingConfiguration.GetRegisteredWellknownClientTypes()一种方法来获取我可以缓存的客户端对象的集合.看起来,在WCF世界中没有这样的东西,虽然我能够从配置文件中获取端点集合.
现在我认为这将是有效的.我可以创建这样的东西:
public static ProxyHelper
{
static Dictionary<Type, object> lookup = new Dictionary<string, object>();
static public T GetChannel<T>()
{
Type type = typeof(T);
ChannelFactory<T> factory;
if (!lookup.ContainsKey(type))
{
factory = new ChannelFactory<T>();
lookup.Add(type, factory);
}
else
{
factory = (ChannelFactory<T>)lookup[type];
}
T proxy = factory.CreateChannel();
((IClientChannel)proxy).Open();
return proxy;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为上面的代码可以工作,但我有点担心多个线程试图添加新ChannelFactory<T>对象,如果它不在查找中.由于我使用的是.NET 4.0,我首先考虑使用ConcurrentDictionary和使用GetOrAdd()方法或使用TryGetValue()方法来检查是否ChannelFactory<T>存在并且它不存在,然后使用GetOrAdd()方法.虽然ConcurrentDictionary.TryGetValue()和ConcurrentDictionary.GetOrAdd()方法不确定性能.
另一个小问题是我是否需要 …
在对表进行某些更改后,我的数据库中的某些触发器将变为无效.但似乎他们仍然在工作.我唯一的问题是如果我使用SQL Developer,触发器左侧有红色十字表示它们无效.这是一个大问题吗?
我知道我可以重新编译触发器以解决这个问题,但我不确定这是否真的值得关注.如果是这样,我将需要检查我之前的数百个更改,并找出导致问题的原因.谢谢.
如果字符串是不可变的,那是否意味着....(让我们假设JavaScript)
var str = 'foo';
alert(str.substr(1)); // oo
alert(str); // foo
Run Code Online (Sandbox Code Playgroud)
这是否意味着,当在字符串上调用方法时,它将返回修改后的字符串,但它不会更改初始字符串?
如果字符串是可变的,这是否意味着第二个alert()也会返回oo?
我需要打开一个文件,替换一些内容(12345和77348)并保存.到目前为止我有
但它似乎没有工作......我将不胜感激任何帮助!$cookie_file_path=$path."/cookies/shipping-cookie".$unique; $handle = fopen($cookie_file_path, "r+"); $cookie_file_path = str_replace("12345", "77348", $cookie_file_path);
fclose($handle);
我有一个大的makefile,它构建了几个库,安装它们,然后继续构建与这些已安装的库链接的对象.我的麻烦是我想使用"-lfoo -lbar"作为g ++标志来链接两个已安装的库,但依赖关系搞砸了.如果我更改库foo所依赖的标题"42.h",那么make当然会重建并安装它,但它似乎没有注意到我的对象"marvin"使用了"-lfoo"而marvin是左链接的对旧版本...... :(
到目前为止,我一直在做:
$(myObject): $(localSrc) /explicit/path/to/lib/libfoo.a
$(CXX) $(CPPFLAGS) $(INCFLAGS) -o $@ $^ $(LINKFLAGS) $(LINKLIBS)
Run Code Online (Sandbox Code Playgroud)
但我现在已经不再是一个可行的选择了.我需要简单地将库"-lfoo -lbar"添加到LINKFLAGS变量并让链接器解决问题?
与此同时,我已经使用了一些命令来明确地吹走有问题的目标文件,然后调用make,但这很愚蠢.我很紧张,但如果有必要,我可以在周五晚上或周六早上发布一个小例子.
因此,我觉得我回到了一些糟糕的Windows版本地狱.有什么我可以做的事情让链接器注意到对象构建的库的版本,并重新链接它,如果这些库更改?
更新:所以到目前为止我还没有机会崩溃这些建议.我正在做的缺点是使用静态库.所以我不能用ldd.所以我重写了我的Makefile,找到了解决这个问题的方法.如果我有时间,我会发布我所做的.
javascript ×2
.net ×1
abstract ×1
ajax ×1
c# ×1
c#-4.0 ×1
c++ ×1
dependencies ×1
fopen ×1
immutability ×1
java ×1
jquery ×1
linker ×1
list ×1
makefile ×1
methods ×1
netbeans ×1
oracle ×1
pci-dss ×1
php ×1
phpstorm ×1
phpunit ×1
python ×1
recompile ×1
redirect ×1
str-replace ×1
triggers ×1
tuples ×1
variables ×1
wcf ×1