问题列表 - 第32341页

如何将不同进程的虚拟地址映射到不同的物理地址

我参加了一个关于操作系统设计和概念的课程,现在我正在努力学习Linux内核.我有一个我无法摆脱的问题.在现代操作系统中,每个进程都有自己的虚拟地址空间(VAS)(例如,在32位系统中为0到2 ^ 32-1).这提供了许多优点.但在实施中,我在某些方面感到困惑.让我通过举个例子来解释一下:

假设我们有两个过程p1,p2; p1和p2有自己的VAS.地址0x023f4a54映射到不同的物理地址(PA),它怎么可能?如何以这种方式完成此翻译.我的意思是我知道翻译机制,但我不明白,当它来到不同进程的地址空间时,相同的地址被映射到不同的物理地址.

0x023f4a54 in p1's VAS => PA 0x12321321
0x023f4a54 in p2's VAS => PA 0x23af2341 # (random addresses)
Run Code Online (Sandbox Code Playgroud)

kernel linux-kernel virtual-address-space

14
推荐指数
4
解决办法
6289
查看次数

c字符串比较与哈希比较

我需要将一个字符串与c中的多个其他常量字符串进行比较.我很好奇哪个更快,散列我要比较的字符串并将其与所有其他常量字符串哈希进行比较,或者只是将字符串作为字符串进行比较.先感谢您

谢谢你的答案,我要做很多比较.任何人都可以给我一个好的,快速的,低资源密集型的算法吗?我所知道的唯一哈希是MD5,我有一种过度杀戮的感觉.

我还想补充一点,字符串最大可能是20或30个字符,大多数是7左右.

c string hash compare

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

范围来自D 2中的关联数组

在阅读了Andrei的书"D编程语言"之后,我刚刚开始在D 2.0中实现我的第一个中等规模的程序.我遇到的第一个问题之一是使用带有内置关联数组的std.algorithm库.例如:

#!/usr/bin/env rdmd

import std.stdio;
import std.algorithm;

void main()
{
   alias int[string] StringHashmap;

   StringHashmap map1;
   map1["one"] = 1;
   map1["two"] = 2;
   writefln("map1: %s", map1);

   StringHashmap map2;
   map2["two"] = 2;
   map2["three"] = 3;
   writefln("map2: %s", map2);

   auto inter = setIntersection(map1, map2);
}
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很简单,期望迭代inter会产生单个"两个"条目.但是,我收到此编译器错误:

./test.d(20):错误:模板std.algorithm.setIntersection(alias less ="a <b",Rs ...)if(allSatisfy!(isInputRange,Rs))与任何函数模板声明都不匹配

./test.d(20):错误:模板std.algorithm.setIntersection(alias less ="a <b",Rs ...)如果(allSatisfy!(isInputRange,Rs))不能从参数类型推导出模板函数! ()(INT [字符串],INT [字符串])

我可以看到内置的关联数组似乎没有提供与std算法一起使用的任何版本的范围.

我错过了什么吗?做错了什么?如果没有,这是一个明显的遗漏吗?有什么理由可以解决这个问题吗?

associative-array d

6
推荐指数
2
解决办法
475
查看次数

如果在Java中使用弃用的方法/函数会出现什么问题?

由于在Java中使用不推荐使用的函数,是否会出现任何问题?如果是这样,他们为什么要保留这个功能?它是一个坏习惯,如果你在Java中使用的方法已过时像 java.sql.Date.getMonthgetYeargetDate???

java deprecated

10
推荐指数
1
解决办法
9149
查看次数

在线程中使用Django ORM并通过使用BoundedSemaphore避免"太多客户端"异常

我使用manage.py命令创建大约200个线程来检查远程主机.我的数据库设置允许我使用120个连接,所以我需要使用某种池.我尝试过使用分离的线程,就像这样

class Pool(Thread):
    def __init__(self):
        Thread.__init__(self)        
        self.semaphore = threading.BoundedSemaphore(10)

    def give(self, trackers):
        self.semaphore.acquire()
        data = ... some ORM (not lazy, query triggered here) ...
        self.semaphore.release()
        return data
Run Code Online (Sandbox Code Playgroud)

我将此对象的实例传递给每个检查线程,但在初始化120个线程后,仍然在Pool对象内部获得"OperationalError:FATAL:抱歉,已经有太多客户端"了.我预计只会打开10个数据库连接,线程将等待免费的信号量插槽.我可以通过注释"release()"来检查信号量的工作原理,在这种情况下,只有10个线程可以工作,其他线程将等到应用程序终止.

据我所知,即使实际调用在不同的线程内,每个线程都会打开与数据库的新连接,但为什么呢?有没有办法只在一个线程内执行所有数据库查询?

django postgresql orm multithreading connection-pooling

10
推荐指数
1
解决办法
8121
查看次数

优化A-Star算法

我已经实现了 A* 算法根据维基百科的实现在这里 然而,在移动设备上运行太慢了。尽管它在台式计算机上运行良好,但我必须等待无数个小时才能完成该功能。我可以做些什么来优化算法?

这是实际的代码

public DriveRoute findroute(routenode from, routenode to)
        {
            Dictionary<int, routenode> openlist = new Dictionary<int, routenode>();
            openlist.Add(from.nodeid, from);
            Dictionary<int, routenode> closedlist = new Dictionary<int, routenode>();
            Dictionary<int, double> gscores = new Dictionary<int, double>();
            gscores.Add(from.nodeid, 0);
            Dictionary<int, double> hscores = new Dictionary<int, double>();
            hscores.Add(from.nodeid, distanceForRouting(from.latlon, to.latlon));
            Dictionary<int, double> fscores = new Dictionary<int, double>();
            fscores.Add(from.nodeid, gscores[from.nodeid] + hscores[from.nodeid]);
            Dictionary<int, routenode> came_from = new Dictionary<int, routenode>();
            while (openlist.Values.Count > 0)
            {
                routenode x = getLowestFscore(openlist, fscores);
                if (x.latlon.Equals(to.latlon))
                {
                    return …
Run Code Online (Sandbox Code Playgroud)

c# navigation routing gps

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

创建一个大位字段?

我想在JavaScript中创建一个大位字段,它将有效地表示多维标记数组(使用索引来跳转到物理"1D"结构中的各个维度).

我正在考虑如何使用字符串作为位,而不是一堆数字,所以我可以先分配一个适当长度的字符串.数据类型,Unicode和转换等注意事项发挥作用(在JavaScript 1.3之前也没有Unicode支持).

但是,我对其他如何使用JavaScript来实现大位字段的建议持开放态度.

更新:
仅供参考:平均而言,我可能正在使用~2187位/标记(274字节),但想要一个通用答案,而不是可以容纳更多位.

javascript

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

JPA和DTO,创建DTO的最佳方式?

我们将使用DTO向表示层发送数据和从表示层发送数据.

我在服务对象上有一个方法,PostAd用于发布用户输入的广告.它Ad与另一个被调用的对象有关联AdValues,它包含Ad(标题,价格,描述等)的值

@Entity
public class Ad {
   @OneToMany
   Set<AdValue> values ...
   ...
Run Code Online (Sandbox Code Playgroud)

我想知道DTO架构的优点是什么:

  1. 有两个DTO调用AdDTO,另一个调用AdValuesDTO,调用PostAd方法为PostAd(AdDTO, AdValuesDTO) 〜或〜

  2. 有一个AdDTO包含AdValuesDTO模仿实体结构......这涉及在DTO内有DTO:

    AdDTO {
      Set<AdValuesDTO> adValues ...
    
    Run Code Online (Sandbox Code Playgroud)

然后该PostAd方法被称为PostAd(AdDTO)

或者还有另一种选择吗?

java orm hibernate jpa dto

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

在foreach中将节点添加到LinkedList <T>

我可以安全地将节点添加到foreach语句中的LinkedList容器中吗?如果我使用while循环有什么区别吗?或者它永远不会被允许并且可能导致一些问题?

foreach(var node in myList)
{
    if(condition)
        myList.AddLast(new MyNode());
}
Run Code Online (Sandbox Code Playgroud)

它会一直有效吗?

.net foreach linked-list

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

在C++\Win32中编辑控制文本更改的消息

什么是与.NET for C++\Win32中的TextChanged属性匹配的消息?

.net c++ winapi messages

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