小编Eri*_*ang的帖子

malloc() - 它是否使用brk()或mmap()

c代码:

// program break mechanism
// TLPI exercise 7-1

#include <stdio.h>
#include <stdlib.h>

void program_break_test() {
    printf("%10p\n", sbrk(0));

    char *bl = malloc(1024 * 1024);
    printf("%x\n", sbrk(0));

    free(bl);
    printf("%x\n", sbrk(0));

}

int main(int argc, char **argv) {
    program_break_test();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译以下代码时:

 printf("%10p\n", sbrk(0));
Run Code Online (Sandbox Code Playgroud)

我收到警告提示:

format ‘%p’ expects argument of type ‘void *’, but argument 2 has type ‘int’

问题1:为什么?


在我之后malloc(1024 * 1024),程序突破似乎没有改变.

这是输出:

9b12000
9b12000
9b12000
Run Code Online (Sandbox Code Playgroud)

问题2:进程在启动以备将来使用时是否在堆上分配内存?或者编译器改变分配的时间点?否则,为什么?


[更新]摘要:brk()或mmap()

在查看TLPI并检查手册页(在TLPI的作者的帮助下)之后,现在我了解了如何malloc()决定使用brk()mmap(),如下所示:

mallopt() …

c malloc memory-management mmap sbrk

16
推荐指数
3
解决办法
9634
查看次数

在Qt Creator中格式化代码的快捷方式是什么?

我想通过Qt Creator中的快捷方式格式化我的Qt代码,就像ctrl + shift + FEclipse中一样.

但是没有在Qt创建者选项中找到一个,也没有通过谷歌搜索.

那么,Qt Creator中是否有这样的捷径?如果没有,那么如何格式化代码?

qt keyboard-shortcuts qt-creator

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

spring-boot testing - 多个测试可以共享一个上下文吗?

我创建了多个spring-boot测试类,(spring-boot 1.4.0).

FirstActionTest.java:

@RunWith(SpringRunner.class)
@WebMvcTest(FirstAction.class)
@TestPropertySource("classpath:test-application.properties")
public class FirstActionTest {
    @Autowired
    private MockMvc mvc;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

SecondActionTest.java:

@RunWith(SpringRunner.class)
@WebMvcTest(SecondAction.class)
@TestPropertySource("classpath:test-application.properties")
public class SecondActionTest {
    @Autowired
    private MockMvc mvc;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

运行测试时:

mvn测试

它似乎为每个测试类创建了一个弹簧测试上下文,我猜这是不必要的.

问题是:

  • 是否可以在多个测试类之间共享一个弹簧测试上下文,如果是,如何?

java spring spring-test spring-boot

14
推荐指数
1
解决办法
9004
查看次数

Java - 避免创建空子类和接口或生成Java源代码模板

我正在使用Spring和开发一个java web项目Mybatis.
在dao级别,我定义了一个超级类和一个超级接口,它实现了所有常用方法.
因此,当在dao级别为特定模型创建子类或接口时,我只需要实现super dao类和接口,并将类体和接口体留空.超过一半的子dao级别类和接口一直是空的.


(空dao类和接口的示例:)

RoleDao.java

package core.dao;

import core.dao.base.BaseDao;
import core.model.Role;

public interface RoleDao extends BaseDao<Role> {
}
Run Code Online (Sandbox Code Playgroud)

RoleDaoImpl.java

package core.dao.impl;

import org.springframework.stereotype.Repository;

import core.dao.RoleDao;
import core.dao.base.BaseDaoImpl;
import core.model.Role;

@Repository
public class RoleDaoImpl extends BaseDaoImpl<Role> implements RoleDao {
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

是否有一种避免编写这些空类和接口的好方法,同时仍然可以使用它们?

我正在考虑使用Code generator生成这些类文件,或者Java reflection根据需要在运行时创建这样的类和接口,但还没有详细说明.


@ 更新

在没有创建源代码的情况下实现目标似乎不灵活,所以我决定为java web项目编写一些简单的java源代码生成器.

一个叫做的工具codemodel非常适合这样做,它由Sun开发,现在由Oracle拥有,我猜.

并且,我自己给出了我编写的用于生成java源代码的代码的答案.

java inheritance spring code-generation mybatis

12
推荐指数
1
解决办法
1224
查看次数

Maven - 无法下载fastxml.jackson

在maven pom.xml中:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.5.0</version>
        <type>bundle</type>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.5.0</version>
        <type>bundle</type>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.5.0</version>
        <type>bundle</type>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

maven无法下载这3个库,但可以成功下载所有其他库.

我在不同网络环境下的2台计算机上试过这个,结果是一样的.

eclipse中的错误消息:

Missing artifact com.fasterxml.jackson.core:jackson-core:bundle:2.5.0
Run Code Online (Sandbox Code Playgroud)

关于如何检查原因的任何建议?

java jackson maven

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

SpringMVC - 调度程序servler的url模式样式

我正在尝试使用构建一个宁静的样式API springMVC.

配置springMVC的url-pattern时DispatcherServlet,似乎有两个选择,我需要一些建议.

选择A:
配置模式为:<url-pattern>*.action</url-pattern>
和动作使用路径之类的@RequestMapping("/role/add.action")

选择B:
配置模式为:<url-pattern>/api/*</url-pattern>
和动作使用路径之类的@RequestMapping("/api/role/add")

我更喜欢使用没有后缀的样式,但在这种情况下我需要添加一个子路径.

但我不确定哪个更适合用作提供restful API的后端项目,以浏览器/ IOS/Android作为其客户端.


可能有选择C,但我不确定:

config pattern as:<url-pattern>/*</url-pattern>
和action使用路径之类的@RequestMapping("/role/add")

在这种情况下,内置servlet将被覆盖,例如jsp将无法正常工作.
但是我没有任何jsp静态资源,例如html / js / css / image / document / music / video全部放在另一个端口或服务器上nginx,请求tomcat只通过json数据提供ajax服务.
那么在这种情况下使用选择C是否合适,或者它有一些不良的副作用?

java rest servlets spring-mvc

9
推荐指数
1
解决办法
726
查看次数

c - 整数向下转换

关于C中的整数倒数,例如

一个int值000F'E000向下转换为short或unsigned short将成为E000.
short- > -8192,
unsigned short - > 57344,

那么它只是削减了比特吗?

那些上流社会呢?例如,int -10ffffff81,要施加什么规则long long


@Update

关于upcasting,根据答案,我做了一些测试,发现有2的补码它有以下规则:

    signed:
        positive -> positive: add 0 as prefix bits,
        negative -> negative: add 1 as prefix bits,
    unsigned:
        add 0 as prefix bits,

码:

// integer numbers, downcast & upcast,
#include <stdio.h>

void downcastTest() {
    int i = 127<<13;
    printf("%X, %hX, %hi\n", i, i, i);
}

void upcastTest() {
    int i …
Run Code Online (Sandbox Code Playgroud)

c type-conversion

8
推荐指数
1
解决办法
5064
查看次数

Java - 何时发布直接缓冲区?

因为它是jvm heap&gc,它何时发布?或者,它一直持续到流程终止?

我已经检查过:

但是所有答案都很模糊,没有人明确回答,是否有明确的答案?至少对于64位Linux上的Java 8.

java nio bytebuffer direct-buffer

7
推荐指数
1
解决办法
3981
查看次数

++运算符对Integer做了什么?

以下测试用例将通过:

@Test
public void assignWrapperTest() {
    System.out.printf("\nassign - %s\n", "wrapper");

    Integer a = 1000;
    Integer b = a;
    System.out.printf("a = %d, b = %d\n", a, b);
    Assert.assertEquals(a, b);
    Assert.assertSame(a, b); // a, b are the same object,

    a++;
    System.out.printf("a = %d, b = %d\n", a, b);
    Assert.assertNotEquals(a, b);
    Assert.assertNotSame(a, b); // a, b are not the same object, any more,
}
Run Code Online (Sandbox Code Playgroud)

所以:

  • a改变了++.
  • b 保持原样.

问题是:

  • b = a 只需指定正确的引用值,它们引用同一个对象,此时只有一个对象,对吧?
  • 什么++运算符在整数上做什么?
    由于Integer是不可变的,这是否意味着++创建了一个新的Integer对象,并自动将其分配回原始变量?如果是这种情况,这是否意味着a现在指向另一个对象?
  • 现在有2个对象?并且 …

java wrapper variable-assignment

7
推荐指数
1
解决办法
252
查看次数

“go mod tidy”会自动升级go.mod中的go版本吗?

之前该项目使用的go 1.20go.mod. 我已经将我的 go 版本升级到1.21.0本地 Linux 机器上。

当我运行go mod tidy该项目时,它升级go.mod为自动使用go 1.21.0

如果这是预期的行为,是否有办法禁用此行为,又名。go.mod运行时不自动更新 go 版本吗go mod tidy?因为其他人可能还没有本地升级。

go go-modules

7
推荐指数
1
解决办法
4808
查看次数