我有一个MySQL表,表示树GUI组件的数据,这是我的表的结构:
treeTable (
id INT NOT NULL PRIMARY KEY,
parentId INT,
name VARCHAR(255)
);
Run Code Online (Sandbox Code Playgroud)
parentId 是一个自引用外键.
现在我想编写一个存储过程,它获取一个节点id并返回一个包含该节点及其所有父节点的结果集.
例如,假设我的表已填充此数据:
1, null, 'root'
2, 1 , 'level_1'
3, 2 , 'level_2'
Run Code Online (Sandbox Code Playgroud)
现在我想获取节点3(节点1和2)的所有父节点并返回包含所有树记录的结果集.有人能帮帮我吗?
从单个 MySQL选择查询来自两个连接表的所有信息,但是以分层方式检索的最佳和最优雅的方法是什么?
我有这两个表:
----------------- ------------------
| Table COMPANY | | Table EMPLOYEE |
----------------- ------------------
| id | | id |
| companyName | | companyId |
----------------- | employeeName |
------------------
(for each company, many employees)
Run Code Online (Sandbox Code Playgroud)
我想输出以下分层JSON片段:
[
{"id": 1,
"companyName": "Company A",
"employees": [
{"id": 1, "employeeName": "Employee 1"},
{"id": 2, "employeeName": "Employee 2"}
]},
{"id": 2,
"companyName": "Company B",
"employees": [
{"id": 3, "employeeName": "Employee 3"},
{"id": 4, "employeeName": "Employee 4"}
]}
]
Run Code Online (Sandbox Code Playgroud)
在连接表上进行完整选择,然后在创建json片段后编写一些代码:
select …Run Code Online (Sandbox Code Playgroud) 我创建了一个自定义帖子类型的"投资组合"和页面,其中包含一个模板,用于检索与该自定义帖子类型匹配的所有帖子.
问题是当我深入到实际帖子时,帖子似乎位于主菜单突出显示的"博客"下面(将current_page_parent显示为一个类)
永久链接网址是正确的:www.site.com/portfolio/post-slug
但菜单认为父母是"博客".
这显然是一个等级问题,但我不知道如何解决它.
我即将使用状态模式在C#中实现分层状态机.作为指导,我正在使用这个例子.但是,该示例并未提供有关分层状态的答案.不幸的是,我似乎无法在其他地方找到好的例子.我的第一个想法是为分层状态创建嵌套类.但这被认为是最佳实践还是有更好的解决方案?
映入眼帘!
更新:
我整个下午一直坐着试图实现如上所述的状态模式.HSM基于一个非常简单的媒体播放器:
alt text http://www.freeimagehosting.net/uploads/e8d2d6486a.jpg
我以为我已经做到了,但有一点我不明白.首先是我写的代码(抱歉,它非常多):
public class MediaPlayer
{
public MediaPlayerStates state;
public MediaPlayer(MediaPlayerStates state)
{
this.state = state;
}
public void OnButtonPressed()
{
state.OnButtonPressed(this);
}
public void DeviceBooted()
{
state. ?????
}
//Other Functions
}
//The 3 initial states (Start, On, End) know only 2 events.
public abstract class MediaPlayerStates
{
public abstract void OnButtonPressed(MediaPlayer player);
public abstract void OffButtonPressed(MediaPlayer player);
}
//The very beginpoint of the state machine
public class Start : MediaPlayerStates …Run Code Online (Sandbox Code Playgroud) 我想构建一个Hierarchical Role Base访问控制.这是我目前的架构:

目前我有两个选项来构建这个系统:
是否有更好的方法或仅仅取决于我的项目需求?
我只是因为简单而倾向于选择Hierarchical.如果我这样做,有没有更好的方法来选择权限级别,也许使用二进制数字?
选项2会有一些角色级别,我会有一些级别的权限.因此,当我创建Full Administrator角色时,将继承所有其他权限,因为这将是级别4,而其他权限将具有小于级别4(或4000)的数字.
这有点矫枉过正吗?
php mysql permissions hierarchical role-based-access-control
我想像这样插入hierarchyId
/ - CEO(根)
/ 1/ - 采购经理/ 2/ - 销售经理
/ 1/1/ - 采购主管/ 2/1/ - 销售主管
这就是我想要使用的层次结构,它是正确的,如果是这样我怎么能这样做,任何人都可以给我一些代码片段.
如果博客有"类别"表,如下所示:
CREATE TABLE categories
(
id INTEGER PRIMARY KEY AUTO_INCREMENT,
parent_id INTEGER NOT NULL,
name VARCHAR(30) NOT NULL,
description TEXT,
count INTEGER NOT NULL DEFAULT 0
);
Run Code Online (Sandbox Code Playgroud)
如果parent_id字段旨在引用类别表的"id"字段,那么我如何添加一个约束来确保插入parent_id的值引用id字段?
我只想确保只存在的类别id值可以用作新插入类别的父级.
我正在寻找高效的系统,以便分层组织一系列读/写锁,以管理对分层组织资源的访问.如果一个子树被锁定以进行写入,那么在它被释放之前,不应该在整个子树中获得其他锁定; 类似地,子树中的写锁定应该防止在父节点中锁定.
以下是我正在考虑的想法:
使用Apache Commons Transaction.不幸的是,该项目自2008年3月以来一直没有更新,并且已经非正式终止.一些API文档似乎表明即将推出的版本(1.3或2.0)将包含某种层次锁定,但源代码无处可寻,似乎我们无法再访问其SVN存储库.
使用一系列ReentrantReadWriteLocks,我将按层次结构组织.我不是并发专家,我有点害怕自己这样做.初步想法似乎表明,即使在我尝试锁定一个子树之前,我必须在管理ReentrantReadWriteLocks本身的整个结构上使用外锁- 这样即使释放一个锁,我也必须使用外锁...
使用来自java.util.concurrent和java.util.concurrent.atomic实现我的分层锁的类比我用一系列ReentrantReadWriteLocks 更有效.
我已经准备好走最后一条路,但我很惊讶没有找到任何可以更好地解决这个问题的现有图书馆.所以:
如何使用层次索引更改DataFrame中的每个元素?例如,也许我想将字符串转换为浮点数:
from pandas import DataFrame
f = DataFrame({'a': ['1,000','2,000','3,000'], 'b': ['2,000','3,000','4,000']})
f.columns = [['level1', 'level1'],['item1', 'item2']]
f
Out[152]:
level1
item1 item2
0 1,000 2,000
1 2,000 3,000
2 3,000 4,000
Run Code Online (Sandbox Code Playgroud)
我试过这个:
def clean(group):
group = group.map(lambda x: x.replace(',', ''))
return group
f.apply(clean)
Out[153]:
(level1, item1) (level1, item2)
0 1000 2000
1 2000 3000
2 3000 4000
Run Code Online (Sandbox Code Playgroud)
如您所见,它会更改层次索引.我怎么能避免这个?或者也许有更好的方法.
谢谢
当 Spring 上下文层次结构关闭时,没有保证 bean 被销毁的顺序,这样说是否正确?例如,子上下文中的 bean 将在父上下文之前被销毁。从一个最小的例子来看,上下文的破坏似乎在上下文之间完全不协调(奇怪的是)。两个上下文都注册了一个关闭钩子,该钩子稍后将在不同的线程中执行。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextHierarchy({
@ContextConfiguration(classes = {ATest.Root.class}),
@ContextConfiguration(classes = {ATest.Child.class})
})
public class ATest {
@Test
public void contextTest() {
}
public static class Root {
@Bean
Foo foo() {
return new Foo();
}
}
public static class Child {
@Bean
Bar bar() {
return new Bar();
}
}
static class Foo {
Logger logger = LoggerFactory.getLogger(Foo.class);
volatile boolean destroyed;
@PostConstruct
void setup() {
logger.info("foo setup");
}
@PreDestroy
void destroy() {
destroyed = true;
logger.info("foo …Run Code Online (Sandbox Code Playgroud) hierarchical ×10
mysql ×3
sql ×3
java ×2
c# ×1
class ×1
create-table ×1
fsm ×1
hierarchyid ×1
highlight ×1
json ×1
locking ×1
menu ×1
nested ×1
pandas ×1
permissions ×1
php ×1
python ×1
reentrancy ×1
spring ×1
spring-test ×1
tree ×1
wordpress ×1