我有一个mysql问题.
我有一个应用程序,我从Coldfusion和MSSql迁移到PHP/Mysql.
有类别和子类别(显然无限的子类别).
在给定navigationID的情况下,获取product表中所有记录的最佳方法是什么.
我正在处理两个表.一个是Products表(其nav_id对应于--->),另一个是包含父/子关系的类别关系表.
所以基本上我想查询两个表以生成与navigationID和NavigationID的子类别相关联的所有产品.
任何想法或方向?我知道必须这样做.认为答案将在于嵌套查询,但无法绕过它.
Nav_table - 包含
ChildNavId int(11)
ParentNavId int(11)
Run Code Online (Sandbox Code Playgroud)
Products_Table - 包含
productNavID int(11) // productNavID contains the lowest level NavID
Run Code Online (Sandbox Code Playgroud) 如果我有这样的局部变量:
Increment()
{
int i = getFromDb(); // get count for a customer from db
};
Run Code Online (Sandbox Code Playgroud)
这是一个增加的实例类(每次客户 - 一个实例对象 - 进行购买),这个变量线程是否安全?我听说局部变量是线程安全的,因为每个线程都有自己的堆栈等等.
另外,我认为这个变量是共享状态吗?我在思维部门缺乏的是这个变量将与不同的客户对象(例如John,Paul等)合作,因此是线程安全的,但这是有缺陷的思维,并且在并发编程方面缺乏经验.这听起来很幼稚,但是我在并发编码方面没有很多经验,就像我一般的同步编码一样.
编辑:此外,函数调用getFromDb()不是问题的一部分,我不希望任何人猜测它的线程安全,因为它只是一个调用,指示值是从一个从数据库获取数据的函数分配的.:)
编辑2:此外,getFromDb的线程安全性得到保证,因为它只执行读取操作.
我无法在我面前访问代码,所以我只是想知道是否有人可以帮我解决Session.Evict()问题.
假设我有一个带有子集合地址的Person对象.我从会话中填充Person对象并延迟加载Addresses集合.然后我调用Session.Evict(personObject)从会话中分离Person对象.我的问题是,如果我尝试访问Addresses集合,它只会返回null,或者我会得到一个异常,因为NHibernate代理无法找到关联的会话?
Hibernate继续向stdout发送SQL跟踪,当隐藏在JPA适配器后面时,我无法弄清楚如何更改Hibernate配置属性.这是entityManagerFactory的Spring bean:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="ssapDataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" >
<property name="showSql" value="false"/>
</bean>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
即使将showSql属性设置为false,Hibernate也会继续打印SQL.
我已经尝试使用"hibernate.show_sql = false"在我的类路径中创建一个hibernate.properties文件,但它也没有选择它.
我从C++ STL容器继承并添加我自己的方法.理由是,对于客户来说,它看起来像是一个常规列表,但是它们可以很容易地被称为特定于应用程序的方法.
这很好,但我读过很多关于不从STL继承的帖子.有人可以提供一个具体的建议,告诉我如何以更好的方式编写下面的代码吗?
class Item
{
int a;
int b;
int c;
int SpecialB()
{
return a * b + c;
}
};
class ItemList : public std::vector<Item>
{
int MaxA()
{
if( this->empty() )
throw;
int maxA = (*this)[0].a;
for( int idx = 1; idx < this->size(); idx++ )
{
if( (*this)[idx].a > maxA )
{
maxA = (*this)[idx].a;
}
}
return maxA;
}
int SpecialB()
{
if( this->empty() )
throw;
int specialB = (*this)[0].SpecialB();
for( int idx = …Run Code Online (Sandbox Code Playgroud) 这是一个简单的问题.我有一个应用程序,取一个像"13335557777"这样的电话号码,需要反转它并在每个号码之间插入一个点,如下所示:
"7.7.7.7.5.5.5.3.3.3.1."
我知道我可以使用StringBuilder和for循环来反转字符串并插入点,但是有一种聪明的方法可以在LINQ(或其他方式)中执行此操作吗?
注意:为此,我并不真正关心性能或内存分配或其他什么,只是好奇看看如何在LINQ中完成.
有没有有效的数学术语?我可以把这个人命名为"sumXY",但这是(a)跛脚,而且(b)不可扩展,因为上升维度需要重命名.
键入时我想到了"componentSum",但我很想知道它是否有真正的名字.
W3的EXI(高效XML交换)将标准化.它声称是"最后的二进制标准".
它是存储针对处理和存储而优化的XML数据的标准,与XML模式捆绑在一起(使数据具有强类型和强结构).嗯,有很多声称的优点.处理和内存效率测量给我留下了深刻的印象.
我问自己,所有已建立的XML API会发生什么?
这段与我的问题有关:
4.2现有的XML处理API
由于EXI是XML Infoset的编码,EXI实现可以支持任何常用的XML API进行XML处理,因此EXI对现有的XML API没有直接影响.但是,使用现有的XML API还要求将EXI文档中出现的所有名称和文本转换为字符串.将来,如果较高层可以直接将这些数据用作EXI文档中出现的类型值,则可以实现更高的效率.例如,如果较高层需要类型化数据,则通过其字符串形式会产生性能损失,因此直接支持类型化数据的扩展API可以在与EXI一起使用时提高性能.
我理解如下:"将EXI与现有API一起使用?没有性能提升!(除非你全部重写)"
我们以Java生态系统为例:
我们有大量的XML API的最新的JDK 6(每个主要JDK版本中,越来越多的人加入.)据我判断,大部分(如果不是全部),他们使用的是内存中的DOM树,或序列化("文本")表示来转换/处理/验证/ ... XML数据.
你们怎么想?这些API会在引入EXI后发生什么?
谢谢大家的意见.
对于那些不了解EXI的人:http://www.w3.org/XML/EXI/
一位同事和我感兴趣的是得到ReSharper的融入了我们的发展环境,为明显的技术优势(refractoring等),但我们需要证明管理它将如何帮助企业赚钱,使他们可以购买它为我们.
在列表的顶部有什么理由来证明这次购买的合理性?是否有博客文章或类似的文章,我可以指出,以创造一个更好的论点?
编辑
我们可以让管理层购买ReSharper的最佳'弹药'是我们能够量化(以美元计)公司将从使用此工具中看到的节省.
编辑
我最终为自己购买了个人许可证.我完全不后悔,如果他们不能让他们的公司为他们购买,我会建议任何人这样做.