我正在维护一个包含10个条目的固定长度表.每个项目都是4个字段的结构.将有数字位置指定的插入,更新和删除操作.我想知道哪个是用于维护此信息表的最佳数据结构:
array - insert/delete由于移位而占用线性时间; 更新需要恒定的时间; 没有空间用于指针; 使用[]访问项目的速度更快.
stl vector - 插入/删除由于移位而占用线性时间; 更新需要恒定的时间; 没有空间用于指针; 访问项目比数组慢,因为它是对operator []和链接列表的调用.
stl list - 插入和删除需要线性时间,因为在应用插入/删除之前需要迭代到特定位置; 指针需要额外的空间; 访问项目比数组慢,因为它是链接列表线性遍历.
现在,我的选择是使用数组.这是否合理?还是我错过了什么?
哪个更快:遍历列表,然后插入节点或在数组中移动项目以产生空位置然后将项目插入该位置?
衡量这种表现的最佳方法是什么?我可以只显示操作前后的时间戳吗?
有时pycharm变得非常慢.经过20-30分钟的缓慢,它重建了它的指数.有没有办法手动触发重建pycharm索引?
可以使用私有静态方法或使用静态块初始化静态变量.这两者之间有什么微妙的区别吗?有没有我不能使用静态方法初始化静态成员的情况?我发现后者更具可读性.
静态块初始化:
private static int NUM_ITER;
static {
// Operations
NUM_ITER = //val from above operations.
}
Run Code Online (Sandbox Code Playgroud)
私有静态方法初始化:
private static int NUM_ITER = calculateNumIter();
// Some method comment on how we are calculating.
private static int calculateNumIter()
{
// Operations.
return //value_from_operations.
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢第二个,因为它更具可读性.有没有我必须先使用的情况(静态块)?
初始化静态成员(最终成员和变量成员)的最佳编码约定/设计是什么?即使从这个线程我学习私有静态方法也比静态块有优势.
谢谢,
我一直想知道这件事.没有书明确说明这一点.
回溯正在探索所有可能性,直到我们发现一种可能性无法引导我们找到可能的解决方案,在这种情况下我们放弃它.
据我所知,动态编程的特点是重叠的子问题.那么,动态编程是否可以表示为缓存回溯(对于以前探索过的路径)?
谢谢
大多数时候,令人困惑的事实是,是否要进行详尽的搜索(动态编程或反向跟踪或蛮力)来解决问题或采用贪婪的方法.
我不是在谈论使用贪婪来确定最佳解决方案,我说的是使用贪婪算法来找到"解决方案".我试图找到一些标准的方法,我可以验证问题是否可以通过贪婪的方法解决.像Optimal子结构一样,用于动态编程的记忆.并没有任何具体问题.
有没有我可以做的归纳证明来决定贪婪方法是否总能产生最佳解决方案?
你得到了N和一个int K[].
手头的任务是生成一个0 to N-1在K 之间不存在的相等的概率随机数.
N严格来说是整数>= 0.并且K.length是<N-1.并且0 <= K[i] <= N-1.还假设K被排序并且K的每个元素是唯一的.
您将获得一个uniformRand(int M)在该范围内生成均匀随机数的0 to M-1函数.并假设此函数的复杂度为O(1).
例:
N = 7
K = {0,1,5}
该函数应以相同的概率返回任意随机数{2,3,4,6}.
我可以得到一个O(N)解决方案:首先生成0到N-K.length之间的随机数.并将如此生成的随机数映射到不在K中的数字.第二步将复杂度设为O(N).可以在O(log N)中做得更好吗?
给出一个大小为3n的数组
[x1, x2, x3... xn, y1, y2, y3... yn, z1, z2, z3... zn]
Run Code Online (Sandbox Code Playgroud)
将其转换为 [x1, y1, z1, x2, y2, z2, ... xn, yn, zn]
这里xn,yn,zn可以是任何整数.请参阅下面的示例输入和输出.
两个约束
输入和输出的示例如下.
输入:
[5, 8, 11, 3, 2, 17, 21, 1, 9] 3n = 9.所以n = 3.
这里
x1=5 x2=8 x3=11 y1=3 y2=2 y3=17 z1=21 z2=1 z3=9
输出:
[5, 3, 21, 8, 2, 1, 11, 17, 9]
一个可能的O(n log n)soln: 仅考虑x和y.现在我可以将所有y换成它的位置,这将使我x2,x4,x6换出位置.然后我将交换x2,x4,这将使x3,x7离开位置.下一次迭代将是x8,x16.这将花费我O(n log n)而不是O(n).
我在solaris主机中有两个接口.我想通过两个接口启动到单个TCP服务器的两个TCP连接,如图所示.Java中是否有任何选项将接口绑定到TCP套接字以覆盖本地路由表?
我附上网络图,

我想使用串行链路带宽来从服务器获取数据.因此,我想在两个接口上启动连接.
谢谢,
据我所知,模型管理器的get_by_natural_key用于反序列化,而natural_key用于序列化.这是真的 ?如果不是,有什么区别?
而且,我们是否需要始终提供 - 自然 - 外国和 - 自然 - 主键?有没有办法强制通过自然键序列化/反序列化?
我想覆盖一个类的相关管理器。
我有一个Company模型。它有state可以在ACTIVE, INACTIVE,中的列SUSPENDED。我添加了 2 个新状态,称为SALES, CLOSED。
由于其遗留模型,仅仅添加状态可能是毁灭性的(代码中有很多地方没有按状态过滤)。
因此,为了避免其他地方发生无意的更改,我决定隐藏所有其他应用程序/其他地方的新状态,除非另有要求(我将仅将我们的应用程序/模型列入白名单)
我已经覆盖了公司中的对象管理器。
class CompanyManager(models.Manager):
def get_queryset(self):
return super(CompanyRelatedManager, self).get_queryset().exclude(state__in=['SALES', 'CLOSED'])
class Company(models.Model):
_default_manager = models.Manager()
objects = CompanyManager()
allObjects = models.Manager()
name = models.TextField()
...
salesContact = models.ForeignKey(Contact)
Run Code Online (Sandbox Code Playgroud)
问题在于Company.objects.filter(blah=blah)过滤掉了新的状态。但类似的事情salesContact.companies.all()却没有。
In [9]: salesContact.companies
Out[9]: <django.db.models.fields.related.RelatedManager at 0x12157a990>
Run Code Online (Sandbox Code Playgroud)
我的问题是如何覆盖相关管理器等,salesContact = models.ForeignKey(Contact)以便我可以修改默认查询集以排除我的新状态。
而且,我无法覆盖默认管理器,因为覆盖默认管理器也意味着我正在覆盖这会导致db_manager意外的后果(数据库尝试插入而不是更新,整个其他故事)。
django foreign-keys django-models django-managers django-1.7
我的服务器中配置了很多接口,每个接口都连接到一个特定的NIC卡并有一个单独的路由表.这些接口可以通过"netstat -a"命令识别.
现在,我想执行仅连接到特定接口的rsync命令.我有这个要求,因为每个接口都将通过一个单独的隧道/路径,我希望一个特定的rsync命令通过指定的隧道同步文件.
具体来说,我想要一种指定接口名称的方法.
谢谢,莫汉.
Java在其Java7中引入了带有Strings的switch case.我想知道是否使用这样的开关盒会产生垃圾.
例如,在我的程序中,
String s = getString();
switch(s)
{
case ABC: // ABC is a final static constant
...
case CDE: // CDE is also final static constant.
...
}
Run Code Online (Sandbox Code Playgroud)
java如何执行此切换案例.假设有10个这样的开关盒.它会创建一个新的字符串每次它匹配string s与case ABC等?
如果是这种情况,那就非常粗俗,所以当我给出100个案例的开关盒时,每次都会创建100个字符串.
algorithm ×4
java ×3
django ×2
networking ×2
arrays ×1
backtracking ×1
binary-tree ×1
c++ ×1
django-1.7 ×1
foreign-keys ×1
greedy ×1
indexing ×1
java-7 ×1
list ×1
macos ×1
methods ×1
natural-key ×1
pycharm ×1
python-2.7 ×1
rsync ×1
stl ×1
string ×1
tcp ×1
theory ×1
vector ×1