我实现了一个自定义内存分配器。这个内部文件的所有主要代码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) 例如,我有一个模块和一个类:
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范围?
我之所以使用元编程,是因为这只是一个简单的示例,此后,我将通过从动态类调用动态模块来进行高级处理。(这就是为什么我不想使用诸如include或extend之类的关键字的原因)
@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) 例如,我有两个模型类:
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检查,我使用flatMap和map.
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将停止执行并返回.
谢谢
这是我的样品请求:
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-Version和Platform).请告诉我哪个部分配置错误.
谢谢
我想将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{}在上述情况下。
我正在学习 MySQL 架构。我想出了以下插图:
有4个我不太理解的概念:
我从很多文档中看到,Write-Ahead Log (WAL) 是一种数据库持久性机制。MySQL WAL 设计 维基百科 WAL
像上图一样,将数据从内存缓冲池刷新到磁盘时有两种类型的缓冲区:双写缓冲区和日志缓冲区。为什么我们需要 2 个缓冲区,它们与 WAL 有什么关系?
最后但并非最不重要的是,重做日志和 WAL 之间有什么区别。我认为 WAL 可以在发生错误时帮助数据库恢复(例如:停电、服务器崩溃......)。我们需要什么与 WAL 一起重做日志?
我在牧场官方网页上看过
Rancher是一个开源软件平台,使组织能够在生产中运行容器.使用Rancher,组织不再需要使用一组独特的开源技术从头开始构建容器服务平台.Rancher提供管理生产中容器所需的整个软件堆栈.
基于此描述,我认为Rancher是一个像容器编排docker-compose.但正如我在同一页上读到的那样:
许多用户选择使用容器编排和调度框架来运行容器化应用程序.Rancher包括今天所有流行的容器编排和调度框架的分发,包括Docker Swarm,Kubernetes和Mesos.
这一段让我觉得Rancher不是一个容器编排,而是控制那些东西的东西.请告诉我Rancher和其他容器编排有什么区别.
我正在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) 例如,我有一个带有两种绑定方法的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">
×
</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 ×2
ruby ×2
activerecord ×1
c ×1
docker ×1
docker-swarm ×1
fetch-api ×1
go ×1
go-map ×1
innodb ×1
interface ×1
java ×1
java-8 ×1
mysql ×1
optional ×1
performance ×1
rancher ×1
reactjs ×1
sharding ×1
sql ×1