我一直在教自己作为C++ 0x一部分的智能指针,并且遇到了一些与我不一致的东西.具体来说,如何处理unique_ptr <>和shared_ptr <>的销毁策略.
对于unique_ptr <>,您可以专门化std :: default_delete <>,从那时起,除非您明确请求其他销毁策略,否则将使用新的默认值.
考虑以下:
struct some_c_type;
some_c_type *construct_some_c_type();
void destruct_some_c_type(some_c_type *);
namespace std {
template <> struct default_delete<some_c_type> {
void operator()(some_c_type *ptr) {
destruct_some_c_type(ptr);
}
};
}
Run Code Online (Sandbox Code Playgroud)
现在,一旦到位,unique_ptr <>将默认使用适当的销毁策略:
// Because of the specialization, this will use destruct_some_c_type
std::unique_ptr<some_c_type> var(construct_some_c_type());
Run Code Online (Sandbox Code Playgroud)
现在将其与shared_ptr <>进行比较.使用shared_ptr <>,您需要显式请求相应的销毁策略,或者默认使用operator delete:
// error, will use operator delete
std::shared_ptr<some_c_type> var(construct_some_c_type());
// correct, must explicitly request the destruction policy
std::shared_ptr<some_c_type> var(construct_some_c_type(),
std::default_delete<some_c_type>());
Run Code Online (Sandbox Code Playgroud)
两个问题.
PS我关心这个的原因是我的公司做了很多混合的C和C++编程.C++代码通常需要使用C风格的对象,因此指定不同的默认销毁策略的简便性对我来说非常重要.
我有一个扩展的Java类Thread,它基本上如下所示:
public class HttpRequestDispatcher extends Thread {
private String url;
private String method; // GET or POST
private byte[] postData;
public HttpRequestDispatcher(String url, String method, byte[] postData) {
this.url = url;
this.method = method;
this.postData = postData;
}
public HttpRequestDispatcher(String url, String method) {
this.url = url;
this.method = method;
}
public void run() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我需要run()方法来返回a ByteArrayOutputStream或a String.但是,因为它是在run()方法中Thread,我不能将方法的返回类型设置为a ByteArrayOutputStream或a String.
该HttpRequestDispatcher班被称为所谓的OAuth.java类里面.
我怎样才能解决这种情况?
我尝试在谷歌和维基百科上查找但无法找到答案......有谁知道'sprintf'或'printf'代表什么?它是什么的缩写???
谢谢
我想知道,如果使用egrep((GNU grep)2.5.1),我可以选择匹配文本的一部分,例如:
grep '^([a-zA-Z.-]+)[0-9]+' ./file.txt
Run Code Online (Sandbox Code Playgroud)
所以我只得到括号之间匹配的部分
house.com
Run Code Online (Sandbox Code Playgroud)
而不是像我通常得到的整条线:
house.com112
Run Code Online (Sandbox Code Playgroud)
假设我的file.txt中有一行house.com112.
(实际上这个正则表达式只是一个例子,我只想知道我是否只能打印整行的一部分.)
我知道在某些语言中,例如PHP,Perl甚至AWK我都可以,但我不知道我是否可以使用egrep.
先感谢您!
我正在考虑学习函数式编程语言.我决定构建一个中型Web应用程序.
我缩小了对Haskell和Common Lisp的选择范围.
Web应用程序需要与某些关系数据库(MySQL,Firebird或Postgres)连接,并且必须在Linux上运行.显然,它必须与Web服务器软件很好地连接.我没有使用函数式语言的经验,我的专业是C,C++,PHP和JavaScript.
哪一种更适合这种用途,为什么?
我不确定这个问题是否应该标记为主观?它真的不是"哪种语言更好",而是"哪种语言更适合这项特殊任务"
我正在使用ant 1.8.0和java 1.6.0.17而且我遇到了一个奇怪的问题.
在我的build.xml中,我有一个编译代码的简单任务
<javac destdir="${dir.build.classes}" debug="on">
<classpath refid="classpath"/>
<src path="${dir.src.java}"/>
</javac>
Run Code Online (Sandbox Code Playgroud)
在"classpath"中是一个jar,称之为 library.jar
在以后的任务中,我需要添加一些类library.jar,我喜欢这样
<jar destfile="library.jar" update="true" duplicate="fail">
<fileset dir="${dir.build.classes}">
<include name="some/class/files"/>
</fileset>
</jar>
Run Code Online (Sandbox Code Playgroud)
这将失败并显示错误
Unable to rename old file (library.jar) to temporary file
我在javac调用之前和之后调用了handle.exe,我可以确认运行ant的java进程在javac调用期间抓取了一个文件句柄到library.jar,并且它没有放弃它.这导致我后来尝试更新jar失败.
为什么即使在javac任务完成后,ant也会在类路径中保持jar的句柄?
我不确定我是否完全理解如何使用 SmallTalk Visual Works 提供的 LinkedList 类。我可以通过简单的操作来创建该类的实例:
myList := LinkedList new.
Run Code Online (Sandbox Code Playgroud)
但是如何添加节点。我尝试创建 Link 类的实例并设置一个值,但它似乎不起作用。
myLink := Link new.
myLink value: 3.
Run Code Online (Sandbox Code Playgroud)
我对 Smalltalk 非常陌生,任何帮助将不胜感激!
我已将我的XP安装Symfony(1.3.2)移至Linux(Ubuntu 9.10).我现在得到一个空白的屏幕.检查Apache日志文件后,我意识到apache守护程序没有创建缓存文件夹的权限.
我使用chgrp和chown手动分配权限.当我访问主页时,我收到403禁止的消息,说不允许访问.htaccess文件.
Linux上Symfony所需的文件夹/文件权限究竟是什么?
文档没有在任何地方提到这一点
对不起,我无法找到在标题中更清楚地表达问题的方法,但基本上就是这样:几乎所有函数式语言都有允许你通过尾递归处理变量参数列表的结构,如在这个Erlang-ish伪代码中总结了一个数字列表:
sumup(0,A) -> A.
sumup(N,A) -> sumup(N) + A.
Run Code Online (Sandbox Code Playgroud)
然而,函数式语言对我的一个重要吸引力是它们固有的并行性.即使诸如总结一个数字列表之类的问题显然是可以并行化的,并且几乎肯定会通过分而治之的方式最有效地处理,但我并不知道语言功能使这成为一种自然的编程方式.事实上,除非语言具有允许读取基于给函数的参数的数量和基于索引检索参数的功能,我没有看到一个人如何能做到这一点.是否有任何功能语言具有鼓励分而治之的编程的功能?
在我的POJO中使用@XStreamOmitField似乎没有任何效果.带注释的字段仍然以xml或json表示形式公开.
@XStreamAlias("Pojo")
@Entity
public class Pojo {
private String name;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long key;
@XStreamOmitField
private String hidden;
public Pojo(String name, String hidden) {
this.name = name;
this.hidden = hidden;
}
}
Run Code Online (Sandbox Code Playgroud)
并在ServerResource中
@Get
public Pojo test() {
Pojo pj= new Pojo("hansi","hinter");
return pj;
}
Run Code Online (Sandbox Code Playgroud)
抓住我
<com.myComp.ORMTest.Pojo>
<name>hansi</name>
<hidden>hinter</hidden>
</com.myComp.ORMTest.Pojo>
Run Code Online (Sandbox Code Playgroud)
任何关于注释被忽略的想法?