小编Fla*_*ius的帖子

基于兄弟的值与XPath匹配节点

拥有这样的XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<records type="array">
  <record>
    <name>svn</name>
    <record-type>A</record-type>

    <ttl type="integer">86400</ttl>
    <zone-id type="integer">69075</zone-id>
    <aux type="integer">0</aux>
    <id type="integer">xxx</id>
    <active>Y</active>
    <data>xxx.xxx.xxx.xxx</data>

  </record>
  <record>
    <name>domain.tld.</name>
    <record-type>NS</record-type>

    <ttl type="integer">86400</ttl>
    <zone-id type="integer">xxx</zone-id>
    <aux type="integer">0</aux>
    <id type="integer">xxx</id>
    <active>Y</active>
    <data>domain.tld.</data>

  </record>
  <record>
    <name>blog</name>
    <record-type>A</record-type>
    <ttl type="integer">86400</ttl>
    <zone-id type="integer">xxx</zone-id>
    <aux type="integer">0</aux>

    <id type="integer">xxx</id>
    <active>Y</active>
    <data>xxx.xxx.xxx.xxx</data>
  </record>
</records>
Run Code Online (Sandbox Code Playgroud)

如何将具有兄弟/记录/记录/记录类型的所有/记录/记录/ 名称与值"A" 匹配?

xml xpath

84
推荐指数
3
解决办法
4万
查看次数

打破清单理解

如何根据条件中断列表理解,例如何时412找到数字?

码:

numbers = [951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544,
           615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941,
           386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345, 399,
           162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217, 815, 67,
           104, 58, 512, 24, 892, 894, 767, 553, …
Run Code Online (Sandbox Code Playgroud)

python list-comprehension

52
推荐指数
5
解决办法
3万
查看次数

NoSQL最佳实践

NoSQL数据库,OODB或其他可能存在的缩略语的最佳实践是什么?

例如,我经常看到一个字段"类型"用于决定客户端(应用程序)应该如何解释DB文档(在couchDB/mongoDB术语中).

如果适用,请使用PHP作为参考语言.阅读:我也对如何在客户端最好地处理这些数据感兴趣,而不仅仅是严格的DB结构.这实际上意味着我也在为SQL DB(活动记录,数据映射器等)寻找类似"ORM"的模式.

不要犹豫,说明这样的数据库和PHP 5.3的新功能如何最好地协同工作.

couchdb mongodb nosql

50
推荐指数
2
解决办法
7783
查看次数

将字节字符串拆分为行

如何将字节字符串拆分为行列表?

在python 2我有:

rest = "some\nlines"
for line in rest.split("\n"):
    print line
Run Code Online (Sandbox Code Playgroud)

上面的代码是为了简洁起见而简化的,但现在经过一些正则表达式处理后,我有一个字节数组rest,我需要迭代这些行.

python python-3.x

40
推荐指数
3
解决办法
5万
查看次数

printf减慢了我的程序

我有一个小的C程序来计算哈希值(哈希表).我希望代码看起来很干净,但有一些与它无关的东西让我烦恼.

我可以在大约0.2-0.3秒内轻松生成大约一百万个哈希值(以/ usr/bin/time为基准).但是,当我在forf循环中使用printf()时,程序会减慢到大约5秒钟.

  1. 为什么是这样?
  2. 如何让它更快?mmapp()ing stdout也许?
  3. stdlibc是如何设计的,以及如何改进?
  4. 内核怎么能更好地支持它?如何修改本地"文件"(套接字,管道等)的吞吐量真的很快?

我期待着有趣而详细的回复.谢谢.

PS:这是一个编译器构造工具集,所以不要害羞进入细节.虽然这与问题本身无关,但我只想指出细节让我感兴趣.

附录

我正在寻找更多解决方案和解释的程序方法.确实,管道工作起了作用,但我无法控制"用户"的作用.

当然,我现在正在进行测试,"普通用户"不会这样做.但这并没有改变一个简单的printf()减慢一个进程的事实,这是我试图找到一个最佳的编程解决方案的问题.


附录 - 惊人的结果

参考时间用于TTY内的普通printf()调用,大约需要4分钟20秒.

在/ dev/pts(例如Konsole)下进行测试可将输出速度提高到约5秒.

在我的测试代码中使用setbuffer()大小为16384时需要大约相同的时间,对于8192几乎相同:大约6秒.

setbuffer()在使用时显然没有效果:它需要相同的时间(在TTY上大约4分钟,在PTS上大约5秒).

令人惊讶的是,如果我在TTY1上开始测试然后切换到另一个TTY,它确实需要与PTS相同:大约5秒.

结论:内核做了一些与可访问性和用户友好性有关的事情.呵呵!

通常情况下,无论你是在活动时盯着TTY还是切换到另一个TTY,它都应该同样慢.


课程:运行输出密集型程序时,切换到另一个TTY!

c performance glibc stdout linux-kernel

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

如何查看Linux的RAM视图以确定碎片

我所知道的唯一相关程序是pmap,但这只打印了一个进程的内存.

我想看看物理内存是如何被占用的,以及整个物理RAM的进程/库(包括内核)(与进程'POV pmap)相比.

理想情况下还有图形界面.

你知道有没有这样的工具?

我知道图书馆引入的歧义.如果是这种情况,它可以显示1像素宽的线和箭头到该库的实际位置.

我需要什么呢?查看RAM碎片.

linux ram

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

外键约束中的mysql循环依赖

鉴于架构:

在此输入图像描述

我需要的是每个user_identities.belongs_to参考文献users.id.

同时,每个users都有一个primary_identity如图所示.

但是,当我尝试添加此引用时ON DELETE NO ACTION ON UPDATE NO ACTION,MySQL说

#1452 - 无法添加或更新子行:外键约束失败(yap.#sql-a3b_1bf,CONSTRAINT #sql-a3b_1bf_ibfk_1FOREIGN KEY(belongs_to)REFERENCES users(id)ON DELETE NO ACTION ON UPDATE NO ACTION)

我怀疑这是由于循环依赖,但我怎么能解决它(保持参照完整性)?

mysql sql database-design referential-integrity

15
推荐指数
2
解决办法
8494
查看次数

会话文件命名

会话文件保存在session_save_path().'/sess_'.session_id().

'sess_'是硬编码的吗?

如果可以指定,我该怎么做?

php

13
推荐指数
1
解决办法
6784
查看次数

如何为钩子创建一个trampoline函数

我有兴趣挂钩,我决定看看我是否可以挂钩一些功能.我对使用类似弯路的图书馆不感兴趣,因为我想拥有自己做的经验.通过我在互联网上找到的一些资料,我能够在下面创建代码.这是基本的,但它可以正常工作.但是当挂钩由多个线程调用的函数时,它被证明是非常不稳定的.如果几乎同时进行两次通话,它就会崩溃.经过一些研究,我认为我需要创建一个蹦床功能.在寻找了几个小时后,我无法找到任何其他关于蹦床的概述.我找不到任何具体的关于编写蹦床功能,或者它们是如何工作的.如果任何人可以帮我写一个,发布一些消息来源,或者至少通过推荐一些文章,网站,书籍等指向我正确的方向.我将非常感激.

以下是我写的代码.这是非常基本的,但我希望其他人可以从中吸取教训.

TEST.CPP

#include "stdafx.h"

Hook hook;

typedef int (WINAPI *tMessageBox)(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

DWORD hMessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)
{
    hook.removeHook();
    tMessageBox oMessageBox = (tMessageBox)hook.funcPtr; 
    int ret =oMessageBox(hWnd, lpText, "Hooked!", uType);
    hook.applyHook(&hMessageBox);

    return ret;
}

void hookMessageBox()
{
    printf("Hooking MessageBox...\n");
    if(hook.findFunc("User32.dll", "MessageBoxA")) 
    {
        if(hook.applyHook(&hMessageBox))
        {
            printf("hook applied! \n\n");
        } else printf("hook could not be applied\n");
    }   
}
Run Code Online (Sandbox Code Playgroud)

hook.cpp

#include "stdafx.h"

bool Hook::findFunc(char* libName, char* funcName) 
{
    Hook::funcPtr = (void*)GetProcAddress(GetModuleHandleA(libName), funcName); 
    return (Hook::funcPtr …
Run Code Online (Sandbox Code Playgroud)

c++ hook winapi tramp trampolines

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

快速浏览一下DiffOrig,然后再切换回来

我从文档中发现了这个伟大的命令:

 command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
    \ | wincmd p | diffthis
Run Code Online (Sandbox Code Playgroud)

所以我想出了这个:

command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis | wincmd p
map <Leader>do :DiffOrig<cr>
map <leader>dc :q<cr>:diffoff!<cr>
Run Code Online (Sandbox Code Playgroud)

问题是,当我\dc这样做时,它会跳回到文件的开头,而不是在发出之前我离开它的地方\do.如何解决这个问题?

请自己尝试一下,看看问题是什么以及如何解决它们.并告诉我如何解决它们:-)

vim editor

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