小编Fou*_*ind的帖子

哪里可以找到off_t类型的完整定义?

我正在使用TCP将文件从客户端发送到服务器.为了标记文件的结尾,我想在实际数据之前发送文件大小.所以我使用stat系统调用来查找文件的大小.这是类型off_t.我想知道它占用了多少字节,以便我可以在服务器端正确读取它.它定义于 <sys/types.h>.但我不明白这个定义.它只是定义__off_t or _off64_toff_t.在哪里寻找__off_t?它__也是为头文件中的大部分内容添加前缀的约定,当我读取头文件以更好地理解时会让我感到害怕.如何更好地阅读头文件?

#ifndef __off_t_defined
# ifndef __USE_FILE_OFFSET64
typedef __off_t off_t;
# else
typedef __off64_t off_t;
# endif
# define __off_t_defined
#endif 
Run Code Online (Sandbox Code Playgroud)

c sockets networking types header-files

63
推荐指数
4
解决办法
11万
查看次数

如何将一个整数数组复制到另一个

复制整数数组的最佳方法是什么?我知道这memcpy()是一种方法.有什么功能strdup()吗?

c memory-management

17
推荐指数
1
解决办法
6万
查看次数

需要帮助理解Rabin-Karp实现的常数时间的Rolling Hash计算

我一直在尝试用Java实现Rabin-Karp算法.我很难在恒定时间内计算滚动哈希值.我在http://algs4.cs.princeton.edu/53substring/RabinKarp.java.html找到了一个实现.我还是无法理解这两条线是如何工作的.

txtHash = (txtHash + Q - RM*txt.charAt(i-M) % Q) % Q;
txtHash = (txtHash*R + txt.charAt(i)) % Q;  
Run Code Online (Sandbox Code Playgroud)

我查看了几篇关于模运算的文章,但没有文章可以穿透我厚厚的头骨.请给出一些指示来理解这一点.

java algorithm hash rabin-karp

10
推荐指数
2
解决办法
4706
查看次数

抢占正在执行同步方法的线程

提供以下代码

    class Test{
       double x;
       public void synchronized a()
       { 
          x = 0;
          //do some more stuff
       }
       public void b() 
       { 
          x = -1; 
       } 
    }
Run Code Online (Sandbox Code Playgroud)

修改x的中间的()中的线程是否可以被调用同一对象上的b()的线程抢占?

是不是像单个原子操作一样执行同步方法?

我相信另一种方式是可能的(b()中的线程可以被调用同一对象上的()的线程抢占,因为b()没有保护我的Test对象锁.

有人可以对此有所了解吗?

java thread-safety

5
推荐指数
1
解决办法
1280
查看次数

getchar()是如何实现的?

我只是想知道如何getchar()实施?是不是像下面这样?单字节这样读取效率相当低。它使用一些缓冲吗?

伪代码:

int getchar() {

    char buf[1];
    int n = read(0, buf, 1);

    if(n < 1)
        printf("Read failed");

    return buf[0];
}
Run Code Online (Sandbox Code Playgroud)

c stdio

5
推荐指数
1
解决办法
6564
查看次数

将一个元组拆分为Pig中的多个元组

我喜欢从单个元组生成多个元组.我的意思是:我有文件中包含以下数据.

>> cat data
ID | ColumnName1:Value1 | ColumnName2:Value2
Run Code Online (Sandbox Code Playgroud)

所以我通过以下命令加载它

grunt >> A = load '$data' using PigStorage('|');    
grunt >> dump A;    
(ID,ColumnName1:Value1,ColumnName2:Value2) 
Run Code Online (Sandbox Code Playgroud)

现在我想将这个元组分成两个元组.

(ID, ColumnName1, Value1)
(ID, ColumnName2, Value2)
Run Code Online (Sandbox Code Playgroud)

我可以将UDF与foreach一起使用并生成.有些事情如下?

grunt >> foreach A generate SOMEUDF(A)
Run Code Online (Sandbox Code Playgroud)

编辑:

输入元组:(id1,column1,column2)输出:两个元组(id1,column1)和(id2,column2)所以它是List还是应该返回一个Bag?

public class SPLITTUPPLE extends EvalFunc <List<Tuple>>
{
    public List<Tuple> exec(Tuple input) throws IOException {
        if (input == null || input.size() == 0)
            return null;
        try{
            // not sure how whether I can create tuples on my own. Looks like I should …
Run Code Online (Sandbox Code Playgroud)

hadoop apache-pig

5
推荐指数
2
解决办法
3万
查看次数

Hive JDBC getConnection不返回

我正在跟踪配置单元JDBC教程。我无法正常工作。当它尝试获得连接时,它只是挂起。它也不报告任何错误。我确定Hive服务器正在运行。有什么帮助吗?

public class HiveJdbcClient {
  private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
  public static void main(String[] args){
      try {
      Class.forName(driverName);
    } catch (ClassNotFoundException e) {
           e.printStackTrace();
      System.exit(1);
    }

    try{
        Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/default", "", "");
        System.out.println("got the connection");

    }catch(SQLException e){
        e.printStackTrace();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

netstat的输出:

$ sudo netstat -anlp | grep 10000
Password:
tcp        0      0 0.0.0.0:10000               0.0.0.0:*                   LISTEN      27738/java
tcp      107      0 127.0.0.1:10000             127.0.0.1:45910             ESTABLISHED 27738/java
tcp        0      0 127.0.0.1:33665             127.0.0.1:10000             ESTABLISHED 24475/java
tcp        0      0 127.0.0.1:45910             127.0.0.1:10000             ESTABLISHED 7445/java …
Run Code Online (Sandbox Code Playgroud)

hadoop hive jdbc

5
推荐指数
1
解决办法
6247
查看次数

如果它不是Spring MVC中的bean,如何验证请求参数?

下面是我的spring MVC REST服务中的POST端点.我想使用spring验证框架工作来确保我收到的列表不为空.我该怎么做?我必须在周围提供包装豆listOfLongs吗?

    @RequestMapping(value = "/some/path", method = RequestMethod.POST)
    @ResponseBody
    public Foo bar(@Valid @NotEmpty @RequestBody List<Long> listOfLongs) {

     /*   if (listOfLongs.size() == 0) {
            throw new InvalidRequestException();
        }
     */

        // do some useful work
    }
Run Code Online (Sandbox Code Playgroud)

请求机构应该是什么?

1) [123,456,789]
2) { listOfLongs : [123,456,789]}
Run Code Online (Sandbox Code Playgroud)

java rest json spring-mvc spring-validator

5
推荐指数
1
解决办法
4649
查看次数

Array作为C++类成员变量

我可以用以下方式在c ++中使用数组作为类的成员变量吗?或者我应该将它声明为指针?以下代码工作正常.这样做是否正确?(我为了简单而公开了).我也不确定我是否正确使用地图.

#include <iostream>
#include <map>
#include <string.h>

using namespace std;

class SimpleMap{
public:
    map<string,int> m;
    int i;
    int j[];
    SimpleMap(int ii);
};

SimpleMap::SimpleMap(int ii){
    i = ii;
}



int main(){
    SimpleMap mm(5);
    mm.m["one"] = 1;

    cout<<"hi hru";

    cout<<mm.m["one"];

    mm.j[0] = 11;
    cout << mm.j[0];
}
Run Code Online (Sandbox Code Playgroud)

编辑:我添加了地图成员变量.

c++ arrays memory-management

4
推荐指数
1
解决办法
7017
查看次数

getaddrinfo 失败并出现错误:C++ 中的 ai_socktype 不支持 Servname

我观察到这是因为端口。端口是 C++ 字符串。当我对端口号进行硬编码时说“4091”,我没有看到这个问题。有什么建议?

int sockfd;
struct addrinfo hints, *servinfo, *p;
int rv;

memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC; 
hints.ai_socktype = SOCK_DGRAM;
hints.ai_flags = AI_PASSIVE; 

cout << "port: " << port << endl;

const char * por = port.c_str();

if ((rv = getaddrinfo(NULL, por, &hints, &servinfo)) != 0) {
    fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv));
}
Run Code Online (Sandbox Code Playgroud)

c++ sockets

4
推荐指数
1
解决办法
2万
查看次数

实现pthread池

我需要使用pthreads实现一个线程池.我无法前进.我在这里发现了类似的问题 但是这仍然没有澄清我的问题.我的问题是,一旦线程运行到终止,我可以再次使用它吗?提出这个问题的另一种方法是,在运行任务完成后,线程如何返回其线程池.谁能指点我一些简单的pthread池文章?我的困惑主要是因为我有一点java背景.我读到某个地方,一旦它终止,我们就不能在线程第二次调用start().

c threadpool

3
推荐指数
1
解决办法
4308
查看次数

多个fork()的语句

子进程在fork语句之后的最后一个停止的确切位置开始执行.如果语句包含多个fork(),如下所示的条件表达式,该怎么办?准确执行子进程的程序执行的位置.在担心创建了多少进程之前,我想知道创建的每个子进程是否都尝试评估fork() && fork() || fork();语句.如果是这样的话.由于第二个fork()语句而创建的子进程如何从第一个fork()中获取要评估的信息fork() && fork().

main(){
fork() && fork() || fork();
}
Run Code Online (Sandbox Code Playgroud)

c fork

2
推荐指数
1
解决办法
1370
查看次数