我通过远程处理暴露了单例类,我遇到了一些问题.在我的服务器中,我有:
TcpChannel channel = new TcpChannel( Settings.Default.RemotingPort );
ChannelServices.RegisterChannel( channel, false );
RemotingConfiguration.RegisterWellKnownServiceType(
typeof( RemotableObject ), "RemotableObject",
WellKnownObjectMode.Singleton );
Run Code Online (Sandbox Code Playgroud)
RemotableObject是一个继承MarshalByRefObject的单例对象.
我的客户通过以下方式连接到它
remoteObject = (RemotableObject)Activator.GetObject(
typeof( RemotableObject ),
string.Format( "tcp://{0}:{1}/RemotableObject", serverIP, serverPort ) );
Run Code Online (Sandbox Code Playgroud)
就远程处理而言,一切都很好,但是当我在服务器代码中访问单例对象时,如下所示:
int someValue = RemotableObject.Instance.SomeDynamicValue;
Run Code Online (Sandbox Code Playgroud)
它访问与客户端不同的实例.我还验证了RemotableObject中的私有构造函数在调试时会被击中两次.
如果我通过我的服务器代码中的远程处理获得RemotableObject的实例,我可以获得所需的行为,但有没有办法可以从服务器访问与客户端相同的对象而没有远程处理开销?
我想确定Java中的一些东西:如果我有一个字符或一个整数或一个Long以及那些东西,我应该使用equals还是==足够?
我知道使用字符串并不能保证每个唯一字符串只有一个实例,但我不确定其他盒装类型.
我的直觉是使用平等,但我想确保我不浪费表现.
我正在设置一个cookie:
HttpCookie cookie = new HttpCookie("simpleorder");
cookie.Expires = DateTime.Now.AddYears(1);
cookie["order"] = carModel.ToString();
cookie["price"] = price.ToString();
Response.Cookies.Add(cookie);
Run Code Online (Sandbox Code Playgroud)
但是当我几秒钟检查它时它已经过期,并且到期日期设置为{01-01-0001 00:00:00}.我尝试通过检索代码
HttpCookie cookie = Request.Cookies["simpleorder"];
if (cookie != null && cookie.Expires > DateTime.Now)...
Run Code Online (Sandbox Code Playgroud)
我不清楚任何地方的cookie,所以我不知道为什么它会过期?
我有一个函数,可以使用指定的编码将字节数组解码为字符串.
例:
Function Decode(ByVal bytes() As Byte, ByVal codePage As String) As String
Dim enc As Text.Encoding = Text.Encoding.GetEncoding(codePage)
Return enc.GetString(bytes)
End Function
Run Code Online (Sandbox Code Playgroud)
如果我想在其中包含base64,我必须做这样的事情:
Function Decode(ByVal bytes() As Byte, ByVal codePage As String) As String
If String.Compare(codePage, "base64", True) = 0 Then
Return Convert.ToBase64String(bytes)
Else
Dim enc As Text.Encoding = Text.Encoding.GetEncoding(codePage)
Return enc.GetString(bytes)
End If
End Function
Run Code Online (Sandbox Code Playgroud)
为什么base64在.NET中处理特殊?
我有以下扩展方法,并希望使它更通用,所以我不必为我们域中的每个类实现它.
public static IList<User> ToList(this DataTable table)
{
IList<User> users = new List<User>();
foreach (DataRow row in table.Rows)
users.Add(User.FromDataRow(row));
return users;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个令人沮丧的限制?
编辑:下面的段落是bollocks,但我保留它,所以其中一个答案对未来的读者有意义:
用户以及我的其他类实现IDataModel. IDataModel只需要1种方法FromDataRow(DataRow row).在函数原型中放置一个显然没有帮助.
我有一个名为'optionlist'的列表,它可能会每天更改长度,但我希望tkinter下拉框能够从中选择一些东西.
以下是如何定义tkinter选项菜单的示例:
opt1 = OptionMenu(root, var1, 'A', 'B', 'C')
Run Code Online (Sandbox Code Playgroud)
A,B和C是您可以选择的选项.这里提出的问题是,虽然OptionMenu是灵活的,并且允许任意多个选项,但您必须确切地知道编写代码时的数量.这不是列表或传递的元组.
我想知道是否有人知道任何功夫,所以我不必这样做:
if len(optionlist) == 1:
opt1 = OptionMenu(root, var1, optionlist[0])
if len(optionlist) == 2:
opt1 = OptionMenu(root, var1, optionlist[0], optionlist[1])
etc, etc, etc
Run Code Online (Sandbox Code Playgroud)
我知道你可以定义这样的列表:
elements = [client.get('element') for client in clientlist]
Run Code Online (Sandbox Code Playgroud)
我希望在传递给方法时也可以做类似的事情.
我们遇到数据库死锁的一个经典原因是两个事务以不同的顺序插入和更新表.
例如,事务A在表A中插入,然后在表B中插入.
事务B插入表B后跟A.
这种情况总是存在数据库死锁的风险(假设您没有使用可序列化的隔离级别).
我的问题是:
您在设计中遵循哪种模式,以确保所有事务都以相同的顺序插入和更新.我正在阅读的一本书 - 建议您可以按表格的名称对语句进行排序.你有没有做过类似或不同的事情 - 这会强制所有插入和更新的顺序相同?
删除记录怎么样?删除需要从子表开始,更新和插入需要从父表开始.你如何确保这不会陷入僵局?
我在JSP上的一个表单标记中有几个不同的提交按钮,它们都指向同一个servlet.我需要知道点击了哪个提交按钮.如何找出点击了哪个按钮?
我使用Perl readdir来获取文件列表,但是,该目录包含超过250,000个文件,这导致执行readdir并使用超过80MB的RAM的时间长(超过4分钟).由于这是每5分钟一次的重复工作,因此这个滞后时间是不可接受的.
更多信息:另一项工作将填写扫描目录(每天一次).此Perl脚本负责处理文件.为每个脚本迭代指定文件计数,目前每次运行1000次.Perl脚本每5分钟运行一次并处理(如果适用)最多1000个文件.文件计数限制旨在允许下游流处理随着Perl将数据推入数据库而触发复杂的工作流程.
是否有另一种从目录获取文件名的方法,理想情况下限制为1000(由变量设置),这将大大提高此脚本的速度?
我有一个非常小的Ubuntu 8.04 64位安装.
当我尝试运行一些32位程序时,比如我的jhead程序,我收到了消息No such file or directory.
我认为它可能是一个库问题,但是当我这样做时:
ldd jhead
Run Code Online (Sandbox Code Playgroud)
而不是它需要的库列表,我只是得到消息not a dynamic application.对于我使用的另一个旧的32位应用程序也是如此.
因此,似乎没有安装运行32位应用程序的一些非常重要的组件.但我怎么能确定它们是什么?