小编Trầ*_* Dự的帖子

C : 将主函数移动到新文件时出现分段错误

我实现了一个自定义内存分配器。这个内部文件的所有主要代码memory.c我都在这个文件中创建了一个主函数来测试函数。一切正常。但是当我将这些测试代码移动到另一个文件(调用main.c并运行它)时,我遇到了分段错误。

int main (int argc, char *argv []) {
   allocator_init();
   char* ptr = (char*) allocate(4096);   // csutom function. that on `memory.c` 
   strcpy(ptr, "this is the test one");// segmentation fault here
   printf("print: %s\n", ptr);
   deallocate(ptr);
}
Run Code Online (Sandbox Code Playgroud)

这是主要代码:

volatile Memory memory;


/* allocated memory to memory variable by assign /dev/zero to memory */
void allocator_init() {
    fd = open("/dev/zero", O_RDWR);
    if(fd == -1) {
        perror("File open failed");
        exit(0);
    }

    // page size can different on different platform. customize …
Run Code Online (Sandbox Code Playgroud)

c segmentation-fault

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

Ruby元编程:如何使模块方法看到类的变量

例如,我有一个模块和一个类:

module SimpleModule
  def self.class_hello
    puts "hello from #{@@name}"
  end
end

class SimpleClass
  @@name = 'StackOverFlow'
  def self.test
    SimpleModule.class_hello
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我通过从类调用模块方法进行测试:

SimpleClass.test
Run Code Online (Sandbox Code Playgroud)

我遇到例外:

SimpleModule中未初始化的类变量@@ name(NameError)

我在这里知道是因为模块的作用域与类作用域不同。所以我的问题是:如何为SimpleModule范围共享SimpleClass范围?

我之所以使用元编程,是因为这只是一个简单的示例,此后,我将通过从动态类调用动态模块来进行高级处理。(这就是为什么我不想使用诸如includeextend之类的关键字的原因)

@Edit 实际上,我想自己实现Ruby扩展。这是我已经开发的版本:

# implementation
class Class
  def custom_extend(module_name)
    module_name.methods(false).each do |method|
      define_singleton_method(method) do |*args, &block|
        module_name.send(method, *args, &block)
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我的自定义模块和测试类:

# -------------------------------------------------------------
# Demonstration
module SimpleModule
  def self.class_hello_world
    puts 'i am a simple module boss'
  end

  def self.class_hello_name
    puts "hello from #{@@name}"
  end
end

class …
Run Code Online (Sandbox Code Playgroud)

ruby metaprogramming

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

Java 8:用于null检查样式的map和flatMap之间的区别

例如,我有两个模型类:

public class Person {}
public class Car {}
Run Code Online (Sandbox Code Playgroud)

现在,我有一个接受2个可选参数的方法:

public void example1(Optional<Person> person, Optional<Car> car) {
    if (person.isPresent() && car.isPresent()) {
        processing(person.get(), car.get());
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我不想像这样使用null检查,我使用flatMapmap.

    person.flatMap(p -> car.map(c -> processing(p, c)));
    person.map(p -> car.map(c -> processing(p, c)));
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:上述两种用法有什么不同吗?因为我认为是相同的:如果一个值为null,java将停止执行并返回.

谢谢

java optional java-8

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

Javascript Fetch API:标头参数不起作用

这是我的样品请求:

var header = new Headers({
  'Platform-Version': 1,
  'App-Version': 1,
  'Platform': 'FrontEnd'
});

var myInit = {
  method : 'GET',
  headers: header,
  mode   : 'no-cors',
  cache  : 'default'
}

fetch('http://localhost:3000/api/front_end/v1/login', myInit)
  .then(res => {
    console.log(res.text())
  })
Run Code Online (Sandbox Code Playgroud)

当我调试时,我看到此请求已成功发送到服务器,但服务器尚未收到标头参数(在本例中为Platform-Version,App-VersionPlatform).请告诉我哪个部分配置错误.

谢谢

javascript fetch-api

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

map [string] interface {}和interface {}之间的区别

我想将JSON文件解析为map[string]interface{}

var migrations map[string]interface{}
json.Unmarshal(raw, &migrations)

fmt.Println(migrations["create_user"])
Run Code Online (Sandbox Code Playgroud)

但是我修改了代码以将数据指向interface{}

var migrations interface{}
json.Unmarshal(raw, &migrations)

// compile wrong here
fmt.Println(migrations["create_user"])
Run Code Online (Sandbox Code Playgroud)

我不明白很多关于之间的差异map[string]interface{},并interface{}在上述情况下。

interface go go-map

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

MySQL InnoDB:WAL、Double Write Buffer、Log Buffer、Redo Log的区别

我正在学习 MySQL 架构。我想出了以下插图:

在此处输入图片说明

有4个我不太理解的概念:

  • 双写缓冲区
  • 日志缓冲区
  • 预写日志
  • 重做日志

我从很多文档中看到,Write-Ahead Log (WAL) 是一种数据库持久性机制。MySQL WAL 设计 维基百科 WAL

像上图一样,将数据从内存缓冲池刷新到磁盘时有两种类型的缓冲区:双写缓冲区和日志缓冲区。为什么我们需要 2 个缓冲区,它们与 WAL 有什么关系?

最后但并非最不重要的是,重做日志和 WAL 之间有什么区别。我认为 WAL 可以在发生错误时帮助数据库恢复(例如:停电、服务器崩溃......)。我们需要什么与 WAL 一起重做日志?

mysql innodb database-engine

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

Elasticsearch:为每个用户的私人搜索选择索引策略

例如,我有 1000 个用户。每个用户的数据量不大,最大1GB。所以我有两种索引策略。

  • 大索引:我将有一个索引。然后每次用户搜索一些数据时,我都会user_id在查询中添加一个。
  • 小索引:每个用户都是一个 Elasticsearch 索引。因为数据量并不大,所以我们只需要1-2个分片。

我的意见是第二种方法要快得多,因为我们不需要添加user_id到查询中。第一种方法可能会比较慢,因为它会转到许多分片,同时它必须计入user_id查询。

然而,有一些ref1 ref2他们建议我们应该保持分片总数相对较小。

在实际环境中,对于我的情况有什么好的解决方案吗?

performance sharding elasticsearch elasticsearch-indices

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

Rancher与其他容器编排之间的区别

我在牧场官方网页上看过

Rancher是一个开源软件平台,使组织能够在生产中运行容器.使用Rancher,组织不再需要使用一组独特的开源技术从头开始构建容器服务平台.Rancher提供管理生产中容器所需的整个软件堆栈.

基于此描述,我认为Rancher是一个像容器编排docker-compose.但正如我在同一页上读到的那样:

许多用户选择使用容器编排和调度框架来运行容器化应用程序.Rancher包括今天所有流行的容器编排和调度框架的分发,包括Docker Swarm,Kubernetes和Mesos.

这一段让我觉得Rancher不是一个容器编排,而是控制那些东西的东西.请告诉我Rancher和其他容器编排有什么区别.

orchestration docker docker-compose docker-swarm rancher

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

Rails ActiveRecord Arels:不支持的参数类型:字符串。构造一个Arel节点

我正在Arels用于创建查询。在此查询中,我使用generate_series函数。这是我的代码:

    def generate_series
      Arel::Nodes::NamedFunction.new('GENERATE_SERIES', [start_date, end_day, '1 day'])
    end

def start_date
      Arel::Nodes::SqlLiteral.new(<<-SQL
         CASE WHEN DATE_PART('hour', NOW() AT TIME ZONE 'ICT') < #{Time.now - 3days} THEN (CURRENT_DATE - INTERVAL '14 days') ELSE (CURRENT_DATE - INTERVAL '13 days') END
      SQL
      )
    end

    def end_date
      Arel::Nodes::SqlLiteral.new(<<-SQL
         CASE WHEN DATE_PART('hour', NOW() AT TIME ZONE 'ICT') < #{Time.now} THEN (CURRENT_DATE - INTERVAL '1 day') ELSE CURRENT_DATE END
      SQL
      )
    end
Run Code Online (Sandbox Code Playgroud)

当我尝试通过generate_series.to_sql。我遇到例外:

Arel :: Visitors :: UnsupportedVisitError:不支持的参数类型:字符串。而是构造一个Arel节点。

我尝试缩短测试代码:

def generate_series …
Run Code Online (Sandbox Code Playgroud)

ruby sql activerecord ruby-on-rails generate-series

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

如何在地图中访问正确的'this':ReactJS

例如,我有一个带有两种绑定方法的react组件:

import React from 'react';

class Comments extends React.Component {
    constructor(props) {
        super(props);
        this.handleSubmit = this.handleSubmit.bind(this);
        this.handleRemoveComment = this.handleRemoveComment.bind(this);
    }

    handleSubmit(e) {
        .....
    }

    handleRemoveComment(e) {
        //this.props.removeComment(null, this.props.params, i);
    }

    renderComment(comment, i) {
        return(
            <div className="comment" key={i}>
                  .....
                  <button 
                       onClick={this.handleRemoveComment}
                       className="remove-comment">
                       &times;
                  </button>
            </div>
        )
    }

    render() {
        return(
            <div className="comments">

                {this.props.postComments.map(this.renderComment)}

                .....
            </div>
        )
    }
}

export default Comments;
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我有两个绑定方法:一个是handleSubmit,一个是handleRemoveComment.handleSubmit功能有效,但handleRemoveComment没有.运行时,它返回错误:

TypeError:无法读取undefined的属性'handleRemoveComment'

javascript reactjs

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