我有一个带有属性Id的Foo类.我的目标是同时没有两个具有相同Id的Foo实例.
所以我创建了一个工厂方法CreateFoo,它使用缓存来为同一个Id返回相同的实例.
static Foo CreateFoo(int id) {
Foo foo;
if (!cache.TryGetValue(id, out foo)) {
foo = new Foo(id);
foo.Initialize(...);
cache.Put(id, foo);
}
return foo;
}
Run Code Online (Sandbox Code Playgroud)
缓存实现为Dictionary <TKey,WeakReference>,基于@JaredPar的Building a WeakReference Hashtable:
class WeakDictionary<TKey, TValue> where TValue : class {
private readonly Dictionary<TKey, WeakReference> items;
public WeakDictionary() {
this.items = new Dictionary<TKey, WeakReference>();
}
public void Put(TKey key, TValue value) {
this.items[key] = new WeakReference(value);
}
public …Run Code Online (Sandbox Code Playgroud) 我想检查两个字符串是否长度相同.我尝试了以下,但它不起作用.
string passnew = "1233";
string passcnfrm = "1234";
if((passnew.Length&&passcnfrm.Length)>6 ||(passnew.Length&&passcnfrm.Length)<15)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
为什么不起作用?我需要改变什么?
我有一个全屏窗口,我想阻止出现在屏幕右下角的弹出窗口.我将Topmost属性设置为true,但显然它没有帮助.我也试过激活表单并在停用后给予焦点,但这也无济于事.当用户使用全屏应用时,有什么方法可以忽略此类窗口?我是C#中的.NET编程.
我在Django中使用分页时遇到问题.以下面的URL为例:
http://127.0.0.1:8000/users/?sort=first_name
Run Code Online (Sandbox Code Playgroud)
在此页面上,我按其first_name对用户列表进行排序.没有排序GET变量,它默认按id排序.
现在,如果我点击下一个链接,我希望以下网址:
http://127.0.0.1:8000/users/?sort=first_name&page=2
Run Code Online (Sandbox Code Playgroud)
相反,我失去了所有得到的变量,最终得到了
http://127.0.0.1:8000/users/?page=2
Run Code Online (Sandbox Code Playgroud)
这是一个问题,因为第二页按id而不是first_name排序.
如果我使用request.get_full_path,我最终会得到一个丑陋的URL:
http://127.0.0.1:8000/users/?sort=first_name&page=2&page=3&page=4
Run Code Online (Sandbox Code Playgroud)
解决办法是什么?有没有办法访问模板上的GET变量并替换页面的值?
我正在使用Django文档中描述的分页,我的偏好是继续使用它.我使用的模板代码与此类似:
{% if contacts.has_next %}
<a href="?page={{ contacts.next_page_number }}">next</a>
{% endif %}
Run Code Online (Sandbox Code Playgroud) 如何将一系列字符串分配给程序中的char**argv变量?它是一个命令行参数.我目前正在尝试将.exe应用转换为dll.
例如:
{"string1","string2","string3"} ---> char**argv变量
我的问题以某种方式得到了解决: 指针指针数组如何工作?但是我无法使用那里显示的片段来使用它.救命!
在.Net中,有没有办法在调试时确定环境事务是否是DTC事务.我调查了SqlConnection类成员,但我什么都没发现.谢谢.
要么我不理解方法getActualMaximum(int)或字段WEEK_OF_YEAR,要么涉及到Sun漏洞(或全部三个)......有人可以向我解释为什么(至少在德语区域设置中 ......)以下代码:
Locale.setDefault( Locale.GERMAN );
Calendar c = Calendar.getInstance();
c.set( Calendar.YEAR, 2010 );
c.set( Calendar.MONTH, 0 );
c.set( Calendar.DAY_OF_MONTH, 1 );
System.out.println("max: "+c.getActualMaximum( Calendar.WEEK_OF_YEAR ));
System.out.println("actual: "+c.get( Calendar.WEEK_OF_YEAR ));
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
max: 52
actual: 53
Run Code Online (Sandbox Code Playgroud)
这是Javadoc getActualMaximum(int):
给定此Calendar的时间值,返回指定日历字段可能具有的最大值.例如,MONTH字段的实际最大值在某些年份为12,在希伯来日历系统中为其他年份的13.
编辑
情节变粗.在英语语言环境(-Duser.language=en -Duser.country=us)中,输出为:
max: 52
actual: 1
Run Code Online (Sandbox Code Playgroud)
似乎指出它是德国语言环境的Sun bug?
我想要做的是我有一个读取数字的程序,该数字表示有多少单词,例如:
3
red
blue
green
Run Code Online (Sandbox Code Playgroud)
然后以相反的顺序打印出相同的文本,这样就可以了
green
blue
red
Run Code Online (Sandbox Code Playgroud)
然后是一个空行,向服务器指示您已完成该特定问题.但我似乎在我的代码中有一个错误.
我试图将单词存储在数组列表中.我使用for循环将它们存储在列表中,然后以相反的顺序打印出来,我只是以相反的方式使用另一个循环,从列表的末尾开始到开头.
当我从命令提示符运行程序时,它只是进入下一个命令提示行,就像我编译程序一样,没有错误但是当我做了测试时,使用我创建的测试程序,似乎程序读取数字,然后去打印出一个空白数组.
似乎来自服务器的单词不会存储在数组中,我不确定我做错了什么.我不是最伟大的程序员,所以任何帮助都会非常感激.
代码:
import java.io.*;
import java.util.*;
public class Solution
{
public static void run(BufferedReader in, PrintWriter out)
throws IOException
{
int x = Integer.parseInt(in.readLine());
while(x != 0)
{
ArrayList num = new ArrayList();
for(int i = 0; i < num.size(); i++)
{
//String f = in.readLine();
num.add(in.readLine());
}
//System.out.println(num);
for(int i = num.size()-1; i > 0; i--)
{
out.println(num.get(i));
//x = Integer.parseInt(in.readLine());
System.out.println();
}
break;
} …Run Code Online (Sandbox Code Playgroud) c# ×3
java ×2
.net ×1
.net-4.0 ×1
android ×1
annotations ×1
arguments ×1
arrays ×1
asp.net ×1
c++ ×1
calendar ×1
command-line ×1
django ×1
fullscreen ×1
google-maps ×1
iphone ×1
mapkit ×1
msdtc ×1
pagination ×1
pointers ×1
popup ×1
transactions ×1
week-number ×1
wpf ×1