在服务器应用程序上,我需要为每个连接的客户端分配一个唯一的ID,所以我这样做:
private short GetFreeID()
{
lock (this.mUsedPlayerIDsSynchronization)
{
for (short I = 1; I < 500; I++)
{
if (ClientIDPool[I] == false)
{
ClientIDPool[I] = true;
return I;
}
}
return -1;
}
}
Run Code Online (Sandbox Code Playgroud)
我的第一个问题:能否更有效地完成,我的意思是更好的表现?我在这里读过,我们应该学会编写没有锁的代码.我还在那里阅读了一些原子操作还有其他选择.第二个问题:如果我想锁定整个课程以便不允许在其中进行任何更改,该怎么办?例如:一个客户端将更新第二个客户端数据,我可以锁定它被绝对阻止的整个第二个客户端类吗?我仍然认为"锁定"只会确保其片段中的代码当时只被一个线程输入,所以我不知道"lock(client2)"是否导致该类中的任何内容都无法更改,直到此锁定为止释放.
我在win 32上运行Python 2.5(r25:51908,2006年9月19日,09:52:17)[MSC v.1310 32位(英特尔)]
当我问Python时
>>> "u11-Phrase 099.wav" < "u11-Phrase 1000.wav"
True
Run Code Online (Sandbox Code Playgroud)
没关系.当我问
>>> "u11-Phrase 100.wav" < "u11-Phrase 1000.wav"
True
Run Code Online (Sandbox Code Playgroud)
那也没关系.但是,当我问
>>> "u11-Phrase 101.wav" < "u11-Phrase 1000.wav"
False
Run Code Online (Sandbox Code Playgroud)
因此根据Python"u11-Phrase 100.wav"出现在"u11-Phrase 1000.wav"之前,但"u11-Phrase 101.wav"出现在"u11-Phrase 1000.wav"之后!这对我来说是有问题的,因为我正在尝试编写文件重命名程序,这种排序会破坏功能.
我该怎么做才能克服这个问题?我应该编写自己的cmp函数并测试边缘情况,还是有一个更简单的快捷方式来给我我想要的顺序?
另一方面,如果我修改字符串,如
>>> "u11-Phrase 0101.wav" < "u11-Phrase 1000.wav"
True
Run Code Online (Sandbox Code Playgroud)
但是这些字符串来自目录的文件列表,例如:
files = glob.glob('*.wav')
files.sort()
for file in files:
...
Run Code Online (Sandbox Code Playgroud)
所以我不想在它们被glob创建后对字符串进行外科手术.不,我也不想更改该文件夹中的原始文件名.
任何提示?
所以就像一个graphics.FillEllipse,但中间有一个洞.我需要通过在它们周围放一个环来突出显示一些圆形图标,并且由于较大程序的限制,很难/不可能简单地将FillEllipse放在它们下面以使它看起来像是一个洞.
在使用AlternateText属性的ImageButton上,向浏览器呈现alt标记.
<asp:ImageButton ID="imagebuttonStuff" runat="server" OnClick="imagebuttonStuff_Click" AlternateText="Make Stuff Happen" ImageUrl="/images/icons/stuff.png" />
<input type="image" name="imagebuttonStuff" id="imagebuttonStuff" src="/images/icons/stuff.png" alt="Make Stuff Happen" />
Run Code Online (Sandbox Code Playgroud)
如何呈现标题标签?
我想以编程方式在Linux中制作实时文件系统的快照,最好使用LVM.我不想卸载它,因为我已经打开了很多文件(我最常见的情况是我有一个繁忙的桌面有很多程序).
我理解,由于内核缓冲区和一般文件系统活动,磁盘上的数据可能处于某种或多或少的未定义状态.
有没有办法"原子地"卸载FS,制作LVM快照并将其挂载?如果操作系统将阻止所有活动几秒钟来执行此任务,那就没问题.或者也许某种原子"同步+快照"?内核通话?
我不知道是否有可能......
我一直在使用SVN已经有一段时间了,我对它的工作方式非常满意(但我不能说我是专家,而且我在分支和合并方面做得并不多).然而,有机会在一个新的团队中加入一些新的实践,所以我想我会看看DVCS,看看它是否值得跳跃.
我工作的公司是一家非常标准的公司,我们都在同一地点(或有时在家里)工作,我们希望保留所有代码的中央存储.
我的问题是:如果您正在使用DVCS创建一个每个人都推动其更改的中央集线器,那么在这种环境中转移到DVCS及其额外开销是否真的有什么好处?
我想用codeplex excelpackage写一个excel文件(2007),但是要花很多时间编写excel文件.我没有找到任何可以接受数据源的方法.
我的代码片段:
var newFile = new FileInfo(GlobalVariables.Compare2007Path);
using (var excelpackage = new ExcelPackage(newFile))
{
var myWorkbook = excelpackage.Workbook;
myWorkbook.Worksheets.Add("sheetname");
var xlWorkSheet = xlWorkBook.Worksheets["sheetname"];
//loop the data and fill the columns
var rowCount = 2;
foreach (var compare in objCompare)
{
xlWorkSheet.Cell(rowCount, 1).Value = compare.adserverIdSite.ToString();
xlWorkSheet.Cell(rowCount, 2).Value = compare.site;
xlWorkSheet.Cell(rowCount, 3).Value = compare.adserverIdZone.ToString();
xlWorkSheet.Cell(rowCount, 4).Value = compare.zone;
xlWorkSheet.Cell(rowCount, 5).Value = compare.position;
xlWorkSheet.Cell(rowCount, 6).Value = compare.weekday;
xlWorkSheet.Cell(rowCount, 7).Value = compare.oldimps.ToString();
xlWorkSheet.Cell(rowCount, 8).Value = compare.olduu.ToString();
xlWorkSheet.Cell(rowCount, 9).Value = compare.oldimpsuu.ToString();
xlWorkSheet.Cell(rowCount, 10).Value = …Run Code Online (Sandbox Code Playgroud) 我是红宝石的初学者,所以这是一个非常新手的问题.
我试图连接一个字符串与浮动值,如下所示,然后打印它.
puts " Total Revenue of East Cost: " + total_revenue_of_east_cost
Run Code Online (Sandbox Code Playgroud)
total_revenue_of_east_cost是一个保持浮点值的变量,我怎样才能打印?
如何创建一个列表,我可以通过将列表行拖动到另一行来重新排列列表项,依此类推(更改为订单)?
就像在时钟应用程序中的HTC Hero,您可以重新排列时钟的顺序?
我在ASP.NET MVC应用程序中使用NVelocity时遇到了一些困难.我正在使用它作为生成电子邮件的方式.
据我所知,我传递的细节都是正确的,但无法加载模板.
这是代码:
private const string defaultTemplatePath = "Views\\EmailTemplates\\";
Run Code Online (Sandbox Code Playgroud)
...
velocityEngine = new VelocityEngine();
basePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, defaultTemplatePath);
ExtendedProperties properties = new ExtendedProperties();
properties.Add(RuntimeConstants.RESOURCE_LOADER, "file");
properties.Add(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, basePath);
velocityEngine.Init(properties);
Run Code Online (Sandbox Code Playgroud)
basePath是正确的目录,我已将值粘贴到资源管理器中以确保它是正确的.
if (!velocityEngine.TemplateExists(name))
throw new InvalidOperationException(string.Format("Could not find a template named '{0}'", name));
Template result = velocityEngine.GetTemplate(name);
Run Code Online (Sandbox Code Playgroud)
上面的'name'是上面定义为basePath的文件夹中的有效文件名.但是,TemplateExists返回false.如果我注释掉条件输出并让它在GetTemplate方法调用上失败,那么堆栈跟踪如下所示:
at NVelocity.Runtime.Resource.ResourceManagerImpl.LoadResource(String resourceName, ResourceType resourceType, String encoding)
at NVelocity.Runtime.Resource.ResourceManagerImpl.GetResource(String resourceName, ResourceType resourceType, String encoding)
at NVelocity.Runtime.RuntimeInstance.GetTemplate(String name, String encoding)
at NVelocity.Runtime.RuntimeInstance.GetTemplate(String name)
at NVelocity.App.VelocityEngine.GetTemplate(String name)
...
Run Code Online (Sandbox Code Playgroud)
我现在陷入了一些僵局.我觉得答案很明显,但我现在似乎无法看到它.