伙计们,
我有一个包含ldap条目的文件,我想删除第二次出现的"version:1"行.我知道sed可以做这样的事情,但由于我很新,我不知道如何继续.这是Solaris 10计算机,文件如下所示:
version: 1
dn: uid=tuser1,ou=people,o=example.com,o=isp
cn: tuser1
uidNumber: 3
gidNumber: 3
homeDirectory: /export/home/tuser1
loginShell: /bin/sh
objectClass: posixAccount
objectClass: shadowAccount
objectClass: account
objectClass: top
uid: tuser1
shadowLastChange:
userPassword:
version: 1
dn: uid=tuser2,ou=people,o=example.com,o=isp
uidNumber: 20
cn: tuser1
gidNumber: 3
homeDirectory: /export/home/tuser2
loginShell: /bin/sh
objectClass: posixAccount
objectClass: shadowAccount
objectClass: account
objectClass: top
uid: tuser1
shadowLastChange:
userPassword:
version: 1
dn: uid=tuser3,ou=people,o=example.com,o=isp
uidNumber: 10
cn: tuser3
gidNumber: 3
homeDirectory: /export/home/tuser3
loginShell: /bin/sh
objectClass: posixAccount
objectClass: shadowAccount
objectClass: account
objectClass: top
uid: tuser3
shadowLastChange: …Run Code Online (Sandbox Code Playgroud) 将域对象用作映射(或"获取"方法)的键是一种好习惯,还是仅使用域对象的id更好?
用一个例子解释起来比较简单.假设我有Person类,Club类和Membership类(连接其他两个).也就是说,
public class Person {
private int id; // primary key
private String name;
}
public class Club {
private String name; // primary key
}
public class Membership {
private Person person;
private Club club;
private Date expires;
}
Run Code Online (Sandbox Code Playgroud)
或类似的东西.现在,我想getMembership向Club 添加一个方法.问题是,如果此方法采用Person对象:
public Membership getMembership(Person person);
Run Code Online (Sandbox Code Playgroud)
或者,一个人的身份:
public Membership getMembership(int personId);
Run Code Online (Sandbox Code Playgroud)
哪个是最惯用的,哪个最方便,哪个最合适?
编辑:很多非常好的答案.我没有暴露id,因为"人"(你可能已经意识到,我的真实域名与人和俱乐部没有任何关系......)实例很容易获得,但现在它在内部存储一个HashMap在id上进行了哈希 - 但至少我在接口中正确地公开了它.
我已经开始研究反应框架了.非常好的东西.但是在查看代码示例时,它让我很困惑.linq语法适用于IQueryable.我认为linq只适用于IEnumerable.关于C#编译器将它的linq基于扩展方法转换的内容是什么?它是否需要一组具有特定接口的方法?
说我有以下域名:
example.com
Run Code Online (Sandbox Code Playgroud)
我有这个域的通配符SSL证书.子域test.example.com正确验证.但是,当我尝试使用类似的域时demo.test.example.com,我在所有主流浏览器中收到错误消息:
demo.test.example.com uses an invalid security certificate.
The certificate is only valid for the following names:
*.example.com , example.com
Run Code Online (Sandbox Code Playgroud)
是否可以将通配符证书用于"子子域"?
我目前有一个VS6非托管C库,我以.lib或.dll的形式提供.我想升级到VS2010,但我仍然拥有VS6,VS2005和VS2008的用户.
VS2010中内置的.lib或.dll可以用在VS6,VS2005或VS2008中吗?
谢谢!
我写了一个自定义操作来安装后创建一个计划任务.当用户不想创建计划任务时,我不希望自定义操作运行.在安装过程中,即使我选择"功能将无法使用",也会创建schtask.如何阻止自定义操作执行?
我正在查看C++技术报告1中包含的Boost库,并尝试了解每个库的功能.
我刚刚完成了一个例子boost::mem_fn,现在我想知道使用它的意义何在而不是更好boost::bind.据我所知,它们都返回一个指向成员函数的函数对象.我发现mem_fn这么有限,以至于我找不到使用它会比使用它更好的场景bind.
我错过了什么吗?有没有绑定不能取代mem_fn的情况?
我正在尝试将a UILabel与IBOutlet我班级中的创建链接起来.
我的应用程序崩溃,出现以下错误.这是什么意思?我该如何解决?
***由于未捕获的异常'NSUnknownKeyException'终止应用程序,原因:'[<UIViewController 0x6e36ae0> setValue:forUndefinedKey:]:此类不是密钥XXX的密钥值编码.
我正在制作一个使用Autoconf的项目.我有以下内容configure.ac:
AC_CHECK_HEADERS([boost/foreach.hpp], [],
[AC_MSG_ERROR(You need the Boost libraries.)])
Run Code Online (Sandbox Code Playgroud)
当我运行时configure,它说它找不到这个头文件:
checking boost/foreach.hpp usability... no
checking boost/foreach.hpp presence... no
checking for boost/foreach.hpp... no
configure: error: You need the Boost libraries.
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我有Boost.如果我删除了检查,代码编译,我安装了Boost:
$ find /usr/include -name foreach.hpp
/usr/include/boost/foreach.hpp
/usr/include/boost/test/utils/foreach.hpp
Run Code Online (Sandbox Code Playgroud)
请注意,我对SDL做了完全相同的工作.
AC_CHECK_HEADERS([SDL/SDL.h], [],
[AC_MSG_ERROR(You need the SDL development library.)])
Run Code Online (Sandbox Code Playgroud)
...
checking SDL/SDL.h usability... yes
checking SDL/SDL.h presence... yes
checking for SDL/SDL.h... yes
Run Code Online (Sandbox Code Playgroud)