我以前认为List <T>被认为是危险的.我的观点是,我认为默认(T)不是一个安全的返回值!许多其他人也这么认为考虑以下问题:
List<int> evens = new List<int> { 0, 2, 4, 6, , 8};
var evenGreaterThan10 = evens.Find(c=> c > 10);
// evenGreaterThan10 = 0 #WTF
Run Code Online (Sandbox Code Playgroud)
值类型的默认值(T)为0,因此返回0是goona以上代码段!
我不喜欢这个,所以我添加了一个名为TryFind的扩展方法,它返回一个布尔值并接受除Predicate之外的输出参数,类似于着名的TryParse方法.
编辑:
这是我的TryFind扩展方法:
public static bool TryFind<T>(this List<T> list, Predicate<T> predicate, out T output)
{
int index = list.FindIndex(predicate);
if (index != -1)
{
output = list[index];
return true;
}
output = default(T);
return false;
}
Run Code Online (Sandbox Code Playgroud)
你有什么办法在通用名单上查找?
[这是我在这里的第一篇文章(但我已多次浏览答案;感谢所有人提供的非常有用的网站).如果我对这篇文章犯下任何重大罪行,请原谅我并指出我正确的方向.]
我试图在我的iPhone应用程序中调试一些复杂的启动代码; 我真的需要绘制一些图像以使调试更具洞察力,并从根本上减少调试乏味.
我需要绘制的状态并不真正作为模型对象存在; 在初始化期间它有些短暂.我特别希望能够一次绘制一个状态,而不是在一个大图像中绘制所有状态(以帮助我看到哪些组件是对/错).在我的情况下,有很多可能重叠的东西,单个图像不能轻易,清楚地显示正在发生的事情.
如果我添加一个特殊的调试模式,以及导航/突出显示/绘制组件的其他控件,那么创建一个使用普通绘图架构绘制到屏幕的静态视图是可能的,但它需要很多不自然的脚手架,而不是,IMO,调试我的问题的正确方法.
所以,我希望做的是:
第4项似乎几乎是不可能的(有没有办法在iPhone或iPhone模拟器中运行简单的C或C++控制台I/O?),所以我现在已经放弃了它; 我决定只使用Xcode调试器在绘图操作之间停止.
但更感兴趣的是如何在UIView绘制方法之外获取CGContextRef,在该方法中绘制调试输出.缓存以前有效的上下文,即使在我的情况下是可能的(不可能,因为我在app启动时调试),似乎不起作用.似乎上下文可能会为每次绘图操作重新创建,这会让我感到很费劲; 我会假设一个UIWindow,也许是一个UIView,保存并可以提供对适当绘图上下文的引用.似乎我一定是错的(但如果没有,我如何从视图或窗口获取上下文?我没有找到相应的方法).
所以,如果我必须创建绘图上下文,我该怎么做?我想我真的不太明白上下文究竟是什么联系在一起的:它在多大程度上知道并绑定到某个特定的显示输出设备?如何控制上下文映射到屏幕的哪个部分?似乎很少有创建上下文的方法,它们似乎没有提供这样的控制.UIGraphicsBeginImageContext似乎是唯一可以帮助我的例程,我不知道如何创建和绘制成一个,只有生成一个CGImage才会有用; 如何将生成的图像输出到屏幕上?
我不会惊讶地发现我对与CG上下文相关的一些基本内容感到困惑.希望这个问题不是那么基本和明显,我会讨厌所有阅读它的人,但如果我完全错过了正确的文档,我会非常感谢一些指示.
感谢您的精神带宽和任何帮助.-罐
我试图找出为什么字符串在我的应用程序中存储了这么长时间,并且吃掉了过多的内存.我有一个定期运行的Windows服务.
它从数据库中读取数据(以DataSet的形式),然后进行一些处理 - 所有托管的.NET.
Windows服务每5分钟左右触发一次,这会进行一些交叉引用.DataSet的每一行都不应该花费超过一秒 - 最糟糕的情况!
在一个阶段,私有字节> 1.2GB,即使没有可用于处理的数据.没有全局变量,所有处理都在各个方法中完成.
我拍了快照并用WinDbg处理.结果如下:
0:000> !dumpheap -min 85000
Address MT Size
02027f40 00166620 101432 Free
28411000 79330b24 536870936
48c11000 79333594 226273040
08411000 79330b24 452546504
total 4 objects
Statistics:
MT Count TotalSize Class Name
00166620 1 101432 Free
79333594 1 226273040 System.Byte[]
79330b24 2 989417440 System.String
Total 4 objects
Run Code Online (Sandbox Code Playgroud)
所以我们想要找到引起问题的2个字符串:
0:000> !dumpheap -mt 79330b24 -min 85000
Address MT Size
28411000 79330b24 536870936
08411000 79330b24 452546504
total 2 objects
Statistics:
MT Count TotalSize Class Name
79330b24 …Run Code Online (Sandbox Code Playgroud) 我正在做一些textarea附加越来越多文字的东西.在firefox中,textarea每次都会向上滚动到顶部.我目前有一些东西喜欢textarea.scrollTop=1000000;在每次更改时将其向下滚动,但它仍然会在很短的时间内上升到顶部.有没有办法阻止它这样做?
当我在列表框中选择一个项目时,文本框中会填充所选文本进行编辑.如何让光标专注于文本框文本,以便在编辑之前不必用鼠标点击它?
如何将3或4个不同的值附加(插入)到oracle类型,然后再打开它以获取游标.
例如(伪):
insert into mytype select 1 from dual;
insert into mytype select 3 from dual;
insert into mytype select 5 from dual;
open cursor_1 for select * from table(mytype);
Run Code Online (Sandbox Code Playgroud)
这是可以在pl/sql中做到的吗?
我知道这是微不足道的,可以组合成一个查询,但我真正的需要是有不同的查询并继续将结果附加到mytype.
我需要拦截来自页面的所有ajax请求的方法.所以我需要一些包装器来将我的数据添加到所有用户请求中.
我想检查一个Java StringBuilder对象是否包含一个字符.
例如,我有一个数组中的食物列表{apple,pear,orange,peach,cherry},我想在StringBuilder中添加一些随机数量的食物类型.
我如何检查StringBuilder是否包含字符?
我们有多个负载均衡的webserver机器运行相同的PHP webapp(LAMP),我想在每个服务器上运行稍微不同的代码(用于测试目的).我希望使用$_SERVER['SERVER_ADDR']超级全局来做这样的事情:
if ($_SERVER['SERVER_ADDR'] == 'XXX.XXX.XXX.XXX') {
echo "Do one thing";
} elseif ($_SERVER['SERVER_ADDR'] == 'YYY.YYY.YYY.YYY') {
echo "Do something else";
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,因为两台机器都设置$_SERVER['SERVER_ADDR']为' 127.0.0.1 '.如何配置它们以便$_SERVER['SERVER_ADDR']设置为其公共IP地址?
我猜这个问题可能与某些事情有关,/etc/hosts所以对于参考,它目前看起来像这样:
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
XXX.XX.XX.XX blahblah
Run Code Online (Sandbox Code Playgroud)
哎呀!我忽略了在Web服务器前面考虑nginx反向代理.由于nginx conf中的以下行,所有到这些Web服务器的流量都来自nginx:
location / {
root /var/www/staging/current;
proxy_pass http://localhost:8880;
}
Run Code Online (Sandbox Code Playgroud) 假设我有一个控制器,"文章",但我希望它显示为子文件夹(例如"博客/文章"),我可以添加这样的路线:
$route['blog/articles'] = 'articles';
$route['blog/articles/(:any)'] = 'articles/$1';
Run Code Online (Sandbox Code Playgroud)
这工作正常,现在唯一的问题是,example.com/articles并且example.com/blog/articles都使用Articles控制器,因此解析为相同的内容.有办法防止这种情况吗?
为了让人们不理解,可以增加一点清晰度:
example.com/articles返回404,因为那不是正确的URL,example.com/blog/articles是..net ×2
c# ×2
javascript ×2
ajax ×1
codeigniter ×1
controller ×1
debugging ×1
drawing ×1
firefox ×1
intercept ×1
iphone ×1
java ×1
lamp ×1
linux ×1
listbox ×1
memory-leaks ×1
oracle ×1
php ×1
plsql ×1
routing ×1
server-farm ×1
string ×1
superglobals ×1
textarea ×1
textbox ×1
windbg ×1
winforms ×1
wrapper ×1