考虑以下代码:
h = Hash.new(0) # New hash pairs will by default have 0 as values
h[1] += 1 #=> {1=>1}
h[2] += 2 #=> {2=>2}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但是:
h = Hash.new([]) # Empty array as default value
h[1] <<= 1 #=> {1=>[1]} ? Ok
h[2] <<= 2 #=> {1=>[1,2], 2=>[1,2]} ? Why did `1` change?
h[3] << 3 #=> {1=>[1,2,3], 2=>[1,2,3]} ? Where is `3`?
Run Code Online (Sandbox Code Playgroud)
在这一点上,我希望哈希是:
{1=>[1], 2=>[2], 3=>[3]}
Run Code Online (Sandbox Code Playgroud)
但它远非如此.发生了什么,我怎样才能得到我期望的行为?
如何通过ioctl调用或其他方式查明SCSI设备(例如/ dev/sda)是否为磁盘?我尝试过以下但是ioctl呼叫失败了.我的/ dev/sda是一个USB闪存盘.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <scsi/scsi.h>
#include <scsi/sg.h>
#include <sys/ioctl.h>
int main(int argc, char** argv) {
char *dev = "/dev/sda";
struct sg_scsi_id m_id;
int rc;
int fd;
fd = open(dev, O_RDONLY | O_NONBLOCK);
if (fd < 0) {
perror(dev);
}
memset(&m_id, 0, sizeof (m_id));
rc = ioctl(fd, SG_GET_SCSI_ID, &m_id);
if (rc < 0) {
close(fd);
printf("FAIL: ioctl SG_GET_SCSI_ID, rc=%d, errno=%d\n", rc, errno);
} else {
if (m_id.scsi_type …Run Code Online (Sandbox Code Playgroud) 我正在学习STL和设计模式.我想知道是否有任何文档或链接解释如何在STL中实现设计模式我做谷歌但无法获得太多数据
我的问题是枚举器从SortedList中删除项目是否安全?
SortedList<decimal, string> myDictionary;
// omitted code
IEnumerator<decimal, string> enum = myDictionary.GetEnumerator();
while(enum.MoveNext)
{
// is it ok to remove here?
myDictionary.Remove(enum.Current.Key);
}
Run Code Online (Sandbox Code Playgroud) 问题接着来自Fluent NHibernate +多个数据库(不需要关注此链接,这里应该有足够的背景).
我的问题是:
我正在使用Fluent NHibernate.我的应用使用多个数据库.每个数据库都有自己的实体注册(映射)它.结果是具有多个会话工厂,每个工厂与单个DB相关,并且每个会议工厂"包含"其自己的一组映射实体.
对于加载实体,我创建了一个通用的Factory类,它提供了一些可用于任何注册实体(在任何DB中)的标准加载方法.问题是:加载方法需要为我正忙着处理的实体类使用正确的会话工厂.我如何确定需要使用哪个会话工厂?我手头有所有的Session Factories(并且由数据库名称索引),我只需要一种方法,只知道我要加载的实体的类型,选择正确的Session Factory来使用.
例如:
public IBaseBusinessObject CreatePopulatedInstance(Type boType, Guid instanceKey)
{
IBaseBusinessObject result = null;
ISessionFactory sessionFactory = GetSessionFactory(boType);
using (ISession session = sessionFactory.OpenSession())
{
using (session.BeginTransaction())
{
result = (IBaseBusinessObject)session.Get(boType, instanceKey);
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
需要在GetSessionFactory(boType)中进行什么?
谢谢阅读!
我正在使用MS EnterpriseLibrary.Logging并且工作正常但日志文件放在程序可执行文件目录中.
如何将我的日志文件放在单个用户的applicationData文件夹中?
我正在谈论的文件夹是你通过调用获得的文件夹:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Run Code Online (Sandbox Code Playgroud) 我想投一个AuctionId这是一个UNIQUEIDENTIFIER到varchar(36),然后回到一个UNIQUEIDENTIFIER.请帮我.
CAST((SUBSTRING(CAST([AuctionId] as VARCHAR(36)), 0, 35) + '1') AS UNIQUEIDENTIFIER)
Run Code Online (Sandbox Code Playgroud)
但我一直收到这个错误:
消息8169,级别16,状态2,行647从字符串转换为uniqueidentifier时转换失败.
提前致谢
我已经在我的第一个编程工作大约8个月了,到目前为止我已经学到了不可思议的数量.
不幸的是,我是一家内部应用程序的小型初创公司的唯一开发人员.
有史以来第一次,当我离开这份工作时,我会把我的一些项目交给其他人.我已经彻底记录了我的所有项目(至少我是这么认为的),但我仍然对其他人阅读我的代码感到紧张.
例如,我总是做这种事情.
for (int i = 0; i < blah.length; i++)
{
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
我应该将'i'命名为描述性的吗?它只是一个临时变量,并且只存在于该循环中,并且看起来循环对"i"的作用非常明显.
这只是一个例子.另一个是我以不同的方式命名变量...除了使用下划线启动所有私有成员之外,我并不真正符合命名标准.
是否有任何资源可以告诉我如何让下一个开发人员更容易?这种类型的东西有标准吗?
我正在尝试创建一个非常大的文件编辑器(编辑器一次只在内存中存储缓冲区的一部分),但是在构建textview对象时我遇到了困难.基本上 - 我知道我必须能够动态更新文本视图缓冲区,并且我不知道如何让滚动条与完整文件相关联,而textview只包含文件的一个小缓冲区.
我在Gtk.ScrolledWindow和ScrollBars上使用了Gtk.Adjustment,但是虽然我可以扩展滚动条的范围,但它们仍然适用于缓冲区的范围而不是文件大小(我尝试通过Gtk.Adjustment设置)当我加载到textview时.我需要一个"知道"它正在查看文件的一部分的小部件,并且可以根据需要加载/卸载缓冲区以查看文件的不同部分.到目前为止,我相信我会响应"change_view"来计算我何时关闭,或者即将离开当前缓冲区并需要加载下一个,但我不知道如何让滚动条有top与文件的开头相关,而bottom与文件的结尾相关,而不是与textview中的加载缓冲区相关.
任何帮助将不胜感激,谢谢!
我有一个简单的用户控件与此代码:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Pager.ascx.cs" Inherits="Pager" %>
<table style="width: 100%;">
<tr>
<td runat="server" id="PageControls">
<!-- This button has the problem: -->
<asp:Button ID="btnPrevPage" runat="server" Text="←" OnClick="btnPrevPage_Click" />
Page
<asp:DropDownList runat="server" ID="ddlPage" AutoPostBack="true" OnSelectedIndexChanged="ddlPage_SelectedIndexChanged" />
of
<asp:Label ID="lblTotalPages" runat="server" />
<!-- This button has the problem: -->
<asp:Button ID="btnNextPage" runat="server" Text="→" OnClick="btnNextPage_Click" />
</td>
<td align="right" runat="server" id="itemsPerPageControls">
<asp:Literal ID="perPageText1" runat="server" />
<asp:DropDownList ID="ddlItemsPerPage" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlItemsPerPage_SelectedIndexChanged" />
<asp:Literal ID="perPageText2" runat="server" />
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
如您所见,2个按钮连接到单击事件,这些事件在代码隐藏中正确定义.
现在,这是我在页面上包含控件实例的方法:
<uc:Pager ID="Pager1" runat="server" …Run Code Online (Sandbox Code Playgroud) c# ×4
.net ×3
asp.net ×1
c ×1
c++ ×1
casting ×1
coding-style ×1
driver ×1
gtk ×1
hash ×1
ienumerator ×1
ioctl ×1
javascript ×1
linux ×1
logging ×1
postback ×1
pygtk ×1
python ×1
readability ×1
ruby ×1
scsi ×1
sql ×1
sql-server ×1
stl ×1
varchar ×1