我从这个博客中国这个问题http://chenyufei.info/blog/2011-02-28/wrap-c-function-closure-gcc-nested-function/ 笔者想在C语言中使用封闭,和他发现GCC具有嵌套函数(和闭包)的能力.例如:
typedef int (*func_t)(int arg);
int foo(int a) {
return a + 1;
}
func_t create_wrap_function(func_t f) {
int wrapped(int arg) {
// call original function
int val = f(arg);
fprintf(log_func_call, "arg: %d ret: %d", arg, val);
return val;
}
return wrapped;
}
Run Code Online (Sandbox Code Playgroud)
但这不是常见的解决方案.create_wrap_function具有固定的函数格式,因为func_t限制了格式.
我们知道,Lua已关闭,也可以调用C函数.我想要实现的内容如下:我们要调用的函数是foo1和foo2,它们具有不同类型的args和返回值.
int foo1(int a) {
...
return intValue;
}
double foo2(char* str, double a) {
...
return dblValue;
}
Run Code Online (Sandbox Code Playgroud)
在C客户端中,调用函数如:
lua_returnValue returnValue1 = Do_Lua_Wrap(__FILE__, __LINE__, foo1, 1);
lua_returnValue returnValue2 = Do_Lua_Wrap(__FILE__, __LINE__, foo2, "string …Run Code Online (Sandbox Code Playgroud) 我正在使用java.awt.FileDialog创建一个用于保存文件的对话框.问题是,当我指定建议的(默认)文件名时,FileDialog会剥离其扩展名.例:
import java.awt.*;
import java.io.*;
public class SaveFile {
public static void main(String[] args) {
FileDialog fileDialog = new FileDialog(new Frame(), "Save", FileDialog.SAVE);
fileDialog.setFilenameFilter(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
});
fileDialog.setFile("Untitled.txt");
fileDialog.setVisible(true);
System.out.println("File: " + fileDialog.getFile());
}
}
Run Code Online (Sandbox Code Playgroud)
我希望当FileDialog出现时,默认文件名是"Untitled.txt",而只是"Untitled".当用户单击"保存"时,我会返回没有扩展名的文件名.FileDialog在Windows和OS X上执行此操作.
我不明白.为什么FileDialog故意剥夺扩展名?这有什么合理的理由吗?文档没有讨论它.作为一种解决方法,我可以简单地将扩展名添加到FileDialog返回的字符串中,但是,这似乎是一个错误......
(请注意,我不能使用JFileChooser;我需要本机AWT FileDialog.)
我需要一些关于在数组中添加值的帮助
例如
long[] s = new long[] {0, 1, 2};
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我实例化一个带有值的数组
但如果我有另一个值,我如何将其附加到上面的数组
3, 4, 5
Run Code Online (Sandbox Code Playgroud)
这样做
s = new long[] {1, 2, 3, 4, 5, 6};
Run Code Online (Sandbox Code Playgroud)
我尝试了System.arraycopy函数,但我只能覆盖数组,当我尝试追加它时,我得到一个空指针异常
谢谢
解
我使用它与for循环一次一个地输入值
long[] tmp = new long[a.length + x.length];
System.arraycopy(a, 0, tmp, 0, a.length);
System.arraycopy(x, 0, tmp, a.length, x.length);
a=tmp;
Run Code Online (Sandbox Code Playgroud) 这里有一个关于Perl线程的教程: 但是关于多线程程序模型的信息非常少:Boss/Workers,Work Crew,Pipeline.我对如何实现这些模型没有任何想法.
你能不能给我一些关于这些的工作代码示例?
更新:
感谢Ojosilva提供了一些链接,我在搜索这些问题之前用Google搜索,我来到其中两个.第一个例子是旧的,不好.剩下的两个很好.但是一些涉及文件输入/输出和变量共享访问的"真实世界"示例将会很棒.
例如,我是一位为喜欢Perl的上帝工作的计算机专家.他以标签分隔的文本文件提供世界各国的地址簿,其中许多都是几GB.他希望我解析这些文本文件的任意组合(例如addressbook_usa.txt,addressbook_russia.txt,addressbook_india.txt)来做一些统计(例如关于年龄,性别,世界的分布).他希望我向他展示Perl的魔力,这项工作不仅可以完成,而且可以快速完成,因为他不想浪费他强大的多核工作站,拥有大量的RAM和磁盘空间.
仅供参考我还查看了cpan上的Thread :: Pool和Thread :: Pool :: Simple模块.前者非常有前途,但我未能安装在我的工作站上.后者很简单,没有示例代码.而且,我的观点是找到一些东西来学习如何实现多线程Perl,而不仅仅是跳到顶部.
可能的重复:
日期时间与时间戳?
我想知道如何最好地在数据库中存储日期。
您是否在代码中获取时间戳并将其保存在 INT 字段中。您是否获取日期并将其格式化为正确的格式并将其存储在 DATETIME 字段中?
这样或那样的优势是什么?有什么好地方可以阅读该主题的内容吗?
感谢您的投入!
我正在通过以下代码加载本地html页面:
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"title" ofType:@"html"];
NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile];
[webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];
Run Code Online (Sandbox Code Playgroud)
......它装得很完美.我添加了链接标记来加载项目中添加的本地css文件,但它确实按预期加载页面.
<head>
<link media="only screen and (max-device-width: 480px)" href="/style.css" type= "text/css" rel="stylesheet" />
</head>
Run Code Online (Sandbox Code Playgroud)
但是当我从服务器加载带有css的本地html页面时,它会完全加载.
<head>
<link href="http://somehitng.com/stylesheets/style.css" media="screen" rel="stylesheet" type="text/css" />
</head>
Run Code Online (Sandbox Code Playgroud)
谁能帮助我,我做错了什么?
默认情况下,ASP.net在使用ASP控件时可以防止SQL注入攻击吗?
var idParam = new SQLiteParameter("@idParam", SqlDbType.Text) { Value = insertData.ID };
var userIdParam = new SQLiteParameter("@userIdParam", SqlDbType.VarChar) { Value = insertData.Uid };
var applicationNameParam = new SQLiteParameter("@applicationNameParam", SqlDbType.VarChar) { Value = insertData.Application };
var eventNameParam = new SQLiteParameter("@eventNameParam", SqlDbType.VarChar) { Value = insertData.EventName };
var clientTokenParam = new SQLiteParameter("@clientTokenParam", SqlDbType.VarChar) { Value = insertData.ClientToken };
var versionParam = new SQLiteParameter("@versionParam", SqlDbType.VarChar) { Value = insertData.Version };
var dateTimeParam = new SQLiteParameter("@dateTimeParam", SqlDbType.DateTime) { Value = insertData.DateTime };
var dataParam = …Run Code Online (Sandbox Code Playgroud) 我写了一个存储过程来返回一个计数.但我得到了一个空值.任何人都可以告诉我存储过程中的问题在哪里.
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[ValidateUser]
@UserName varchar(50),
@Password varchar(50),
@Num_of_User int output
AS
BEGIN
SET NOCOUNT ON;
SELECT @Num_of_user =COUNT(*)
FROM login
WHERE username = @UserName
AND pw = @Password
RETURN
END
Run Code Online (Sandbox Code Playgroud)