我有一个速度关键的多线程程序,它涉及树结构中的数据.实施如下:
typedef struct
{
// data pertaining to linkages, defining the architecture of the tree
int parent_node;
int child_node[MAX_CHILD_NODES];
int number_of_children;
// data pertaining to info at each node
float interesting_info_A;
char interesting_info_B[STRING_LEN];
long interesting_info_C;
}
node_type;
node_type node[MAX_NUMBER_OF_NODES];
CRITICAL_SECTION node_critsec[MAX_NUMBER_OF_NODES];
Run Code Online (Sandbox Code Playgroud)
程序进入并离开由node_critsec []控制的关键部分.因此,当我需要处理节点n的interesting_info_A/B/C时,我进入该节点的临界区(node_critsec [n]),进行处理然后离开.该计划蜿蜒在树周围,通过与父母和孩子的链接,采取各种复杂的路径.该程序还将增长树,即添加新节点并相应地修改其他节点的父/子链接(树永远不会缩小).我尝试确保每个线程一次只锁定一个节点,以避免死锁的风险.但后来我遇到了问题 - 如果我正在添加一个新节点,那么我可能想要锁定节点的父节点,以便我可以调整其子节点列表.在没有死锁或两个线程尝试修改同一节点中的数据的情况下让所有人工作将变得有点噩梦.是否有一些指导原则我应该关注何时以及锁定/解锁哪些节点我应该遵循 - 或者我是否必须超级智能并找出可能发生的每个事件的排列?
我需要确定选定的UIColor(由用户选择)是暗还是亮,因此我可以更改位于该颜色顶部的文本行的颜色,以提高可读性.
这是Flash/Actionscript中的一个示例(带演示):http://web.archive.org/web/20100102024448/http://theflashblog.com/?p = 173
有什么想法吗?
干杯,安德烈
UPDATE
感谢大家的建议,这是工作代码:
- (void) updateColor:(UIColor *) newColor
{
const CGFloat *componentColors = CGColorGetComponents(newColor.CGColor);
CGFloat colorBrightness = ((componentColors[0] * 299) + (componentColors[1] * 587) + (componentColors[2] * 114)) / 1000;
if (colorBrightness < 0.5)
{
NSLog(@"my color is dark");
}
else
{
NSLog(@"my color is light");
}
}
Run Code Online (Sandbox Code Playgroud)
再次感谢 :)
我正在尝试编写一个使用STL分配器的容器类.我目前所做的是拥有一名私人会员
std::allocator<T> alloc_;
Run Code Online (Sandbox Code Playgroud)
(稍后将模板化以便用户可以选择不同的分配器)然后调用
T* ptr = alloc_.allocate(1,0);
Run Code Online (Sandbox Code Playgroud)
获取指向新分配的'T'对象的指针(并使用alloc_.construct来调用构造函数;请参阅下面的答案).这适用于GNU C++库.
但是,对于Solaris上的STLPort,这无法做正确的事情并导致各种奇怪的内存损坏错误.如果我改为做
std::allocator_interface<std::allocator<T> > alloc_;
Run Code Online (Sandbox Code Playgroud)
然后一切正常.
使用stl :: allocator的正确方法是什么?STLPort/Solaris版本无法使用g ++进行编译,但是g ++是正确的吗?
我有一些引用javascript文件的页面.
该应用程序存在于虚拟目录中,即http://localhost/MyVirtualDirectory/MyPage.aspx
所以本地我引用文件如下:
<script src="/MyVirtualDirectory/Scripts/MyScript.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
但是生产设置不同.该应用程序在生产中作为自己的网站存在,因此我不需要包含对虚拟目录的引用.这个问题是我需要修改包含javascript引用的每个文件,所以它看起来如下所示:
<script src="../Scripts/MyScript.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
我尝试在我的本地设置中以这种方式引用文件,但它不起作用.
我完全错了吗?有人能告诉我我需要做什么吗?
谢谢
我有一个非常大的Oracle数据库,有许多表和数百万行.我需要删除其中一个,但是要确保删除它不会破坏任何指向它作为外键记录的其他依赖行.有没有办法获得指向此行的所有其他记录或至少表格模式的列表?我知道我可以尝试自己删除它,并捕获异常,但我不会自己运行脚本,需要它第一次运行清理.
我有来自Oracle的SQL Developer工具和来自AllRoundAutomations的PL/SQL Developer.
提前致谢!
我想将maven生命周期中的某些阶段分解为子阶段.我想控制从一个子阶段到另一个子阶段的执行流程,有点像与ant依赖关系.
例如,我想使用NSIS插件,以便在我的项目被打包到war文件之后,将我的项目打包到包阶段的安装程序中.我想在包装阶段做所有这些.
那可能吗?
谢谢
基本上我不知道从哪里开始,我需要为我的应用程序添加一个不那么复杂的行脚本,只是为了执行预定义的命令,例如:
命令>新发票 - >创建新发票
命令>客户资料 - >打开客户表单,其中cust id = CustID
command> run End-Of-Day - 运行结束日期过程
命令> scr 1020 - >打开表单id = 1020
我怎么开始?我没有推荐任何第三方组件(解析器,评估器等)的问题.
什么是遗失的基本结构没有细节,只是一个实施理论.
谢谢,Objectberg
我正在尝试保留我的xsl DRY,因此我想为XML文档的2个部分调用相同的模板,这些部分碰巧是相同的复杂类型(ContactDetails和AltContactDetails).给出以下XML:
<?xml version="1.0" encoding="UTF-8"?>
<RootNode>
<Name>Bob</Name>
<ContactDetails>
<Address>
<Line1>1 High Street</Line1>
<Town>TownName</Town>
<Postcode>AB1 1CD</Postcode>
</Address>
<Email>test@test.com</Email>
</ContactDetails>
<AltContactDetails>
<Address>
<Line1>3 Market Square</Line1>
<Town>TownName</Town>
<Postcode>EF2 2GH</Postcode>
</Address>
<Email>bob@bob.com</Email>
</AltContactDetails>
</RootNode>
Run Code Online (Sandbox Code Playgroud)
我写了一个XSL样式表,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<PersonsName>
<xsl:value-of select="RootNode/Name"/>
</PersonsName>
<xsl:call-template name="ContactDetails">
<xsl:with-param name="data"><xsl:value-of select="RootNode/ContactDetails"/></xsl:with-param>
<xsl:with-param name="elementName"><xsl:value-of select="'FirstAddress'"/></xsl:with-param>
</xsl:call-template>
<xsl:call-template name="ContactDetails">
<xsl:with-param name="data"><xsl:value-of select="RootNode/AltContactDetails"/></xsl:with-param>
<xsl:with-param name="elementName"><xsl:value-of select="'SecondAddress'"/></xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="ContactDetails">
<xsl:param name="data"></xsl:param>
<xsl:param name="elementName"></xsl:param>
<xsl:element name="{$elementName}">
<FirstLine>
<xsl:value-of select="$data/Address/Line1"/>
</FirstLine>
<Town>
<xsl:value-of select="$data/Address/Town"/>
</Town>
<PostalCode>
<xsl:value-of …Run Code Online (Sandbox Code Playgroud) 我有两个文件A- nodes_to_delete和B- nodes_to_keep.每个文件都有许多带有数字ID的行.
我想要列出数字ID,nodes_to_delete但不在其中nodes_to_keep,例如alt文本http://mathworld.wolfram.com/images/equations/SetDifference/Inline1.gif.
在PostgreSQL数据库中执行它是非常慢的.使用Linux CLI工具在bash中做任何简洁的方法吗?
更新:这似乎是一个Pythonic工作,但文件真的非常大.我已经解决了使用一些类似的问题uniq,sort一些集理论技术和.这比数据库等价物快两到三个数量级.