对于我当前正在构建的系统,会出现以下两种情况:
我的权限系统是将角色和角色的权限附加到用户的常年最爱,但有一个转折:权限可以应用于任何层的任何资产,并且有4个"层",编号为0到3.因此,角色分配表长度为5个字段:资产层,资产ID,角色ID,用户ID和"已禁用"标志.该"Tier/ID"系统还用于将用户分配给"Home Asset".
这个系统的不幸副作用是,在应用程序本身中解析我的这些资产引用通常要简单得多,而不是在SQL中(我知道它可以这样做,但它会导致一些严重的丑陋查询) . 有没有更好的方式来表示这种关系?这是表达这种关系的可接受方式吗?
旁注:资产本身的表(它们是分层的)是规范化的,外键引用从子节点指向父节点(例如,第3层包含有关第2层的信息等),因此一旦单个资产被固定,它就非常很容易找到它的孩子和祖先.
类似的问题,但不同的数据上下文:在最低层,设备可以"附加".还允许将设备放置在图形表示(如地图)上,并将它们的排列信息存储在数据库中.图形引用(也称为"点")应指向真实设备,但实际设备可能不指向图形引用.
目前,所有"点"(代表设备)都有一个参考表,其中包含显示布局,位置,大小等信息.我可以从这里确定三个可能的事情:
这个问题已经解决了,我只是没有得到备忘录?是否有解决此问题的标准设计,或者我应该假设我必须自己解决这些引用?
注意:关于问题二,我认为以下两种解决方案是可怕的,我不会考虑它们(除非有一些疯狂的,令人惊讶的证据表明它是最好的方式,我很确定它不是):
请求和赞赏任何解决方案,但我特别寻找解决此问题的现有模式和/或规范化模式(如果存在).如果您知道这是正确答案的事实,"否"就足够了,我将继续使用应用程序层来解析这些引用.它还没有成为问题,我只是想知道当有人已经解决了这个/这些问题时,我并没有在错误的方向上开辟道路.提前致谢.
第0层实际上是隐含的,而不是在数据库中,但有些东西被注册为第0层(资产ID 0)
第1层:
id int(5) unsigned not null primary key auto_increment,
name varchar(32) not null,
disabled tinyint(1) unsigned not null,
Run Code Online (Sandbox Code Playgroud)
2级:
id int(5) unsigned not null primary key auto_increment,
parentId int(5) unsigned not null,
name varchar(32) not null,
abbr varchar(16) not null,
disabled tinyint(1) unsigned not null,
foreign key (parentId) references tier1(id)
Run Code Online (Sandbox Code Playgroud)
第3层:
id int(5) unsigned not null …Run Code Online (Sandbox Code Playgroud) 我试图从矢量中删除短字符串.
std::vector<std::string> vec;
// ...
vec.erase(std::remove_if(vec.begin(),
vec.end(),
boost::bind(std::less<size_t>(),
boost::bind(&std::string::length, _1),
5),
vec.end());
Run Code Online (Sandbox Code Playgroud)
编译器会发出一个非常大的错误消息:
qwer.cpp:20: error: no matching function for call to 'remove_if(__gnu_cxx::__nor
mal_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char
> >*, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator
<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::al
locator<char> > > > >, __gnu_cxx::__normal_iterator<std::basic_string<char, std:
:char_traits<char>, std::allocator<char> >*, std::vector<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_strin
g<char, std::char_traits<char>, std::allocator<char> > > > >, boost::_bi::bind_t
<boost::_bi::unspecified, std::less<unsigned int>, boost::_bi::list2<boost::_bi:
:bind_t<unsigned int, boost::_mfi::cmf0<unsigned int, std::basic_string<char, st
d::char_traits<char>, std::allocator<char> > >, boost::_bi::list1<boost::arg<1>
> >, boost::_bi::value<int> > >, __gnu_cxx::__normal_iterator<std::basic_string<
char, …Run Code Online (Sandbox Code Playgroud) 我有一个用C#的XmlSerializer序列化的类.它标有XmlRoot属性,我想在派生类中继承此属性.
查看文档时,它没有说XmlRoot使用AttributeUsageAttribute将Inherit设置为false(Inherit应该默认为true),但是在尝试反序列化没有XmlRoot属性的继承类时出错("<rootNode xmlns ='' >没想到.").
这目前有效:
[Serializable()]
[XmlRoot("rootNode")]
public class BaseClass
{
[XmlAttribute("attributeA")]
public int A { get; set; }
}
[Serializable()]
[XmlRoot("rootNode")]
public class InheritedClass : BaseClass
{
[XmlElement("elementB")]
public int B { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,但我想要的是:
[Serializable()]
[XmlRoot("rootNode")]
public class BaseClass
{
[XmlAttribute("attributeA")]
public int A { get; set; }
}
[Serializable()]
public class InheritedClass : BaseClass
{
[XmlElement("elementB")]
public int B { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我可能会尝试将反序列化的XML InheritedClass看起来像这样:
<rootNode attributeA="abc">
<elementB>123</elementB> …Run Code Online (Sandbox Code Playgroud) Java使用小数周期,例如1/2 = 0.5
有没有办法让它使用逗号代替,如1/2 = 0,5?而不是使用逗号成千上万(如十万= 100,000)但使用空格(100 000)?
说到输出,我想我可以使用各种字符串格式函数,但问题是输入(JTable).有些列需要Double格式,因此用户必须输入类似45.5的内容,并且在这些部分中它们用于45,5 :)提前感谢
更新:
我尝试使用myTable.setDefaultLocale(Locale.Germany); 但它没有用.我也做了Locale.setDefault(Locale.Germany); @ main函数并且它确实工作但是以相当愚蠢的方式:当单元格处于编辑模式时,您必须正常输入点,即45.5但是在您按Enter键确认更改后,它将显示为逗号:45,5.我的意思是它只使用逗号用于显示目的,但是当编辑它仍然是相同的ol'点.
有没有办法解决它而不编写自定义表模型?
在OnClickListener中,我无法访问范围"外部"的大多数变量,如下所示:
findViewById(R.id.Button01).setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent mainApps = new Intent(Intent.ACTION_MAIN);
mainApps.addCategory(Intent.CATEGORY_LAUNCHER);
List<ActivityInfo> activities = this.getPackageManager().queryIntentActivities(mainApps, 0);
/*
Intent intent = new Intent("com.sygic.drive/com.sygic/drive/.SygicDriveActivity");
startActivity(intent);*/
}
});
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我需要获取PacketManager,我无法得到它,因为我没有在OnClickListener中提供Context.
我可以在外面做一个静态引用,并在里面使用它,但这是正确的吗?似乎很奇怪必须一直这样做?
这个一直让我疯狂.自从升级到Grails 1.2和Weblogic 10.3以来,"/"的默认根映射停止了工作.这是我的...
我有这个URL映射:
"/"(controller:"IGive", action:"index" )
Run Code Online (Sandbox Code Playgroud)
我有一个名为IGiveController的控制器,带有索引闭包
def index = {
render "foo"
}
Run Code Online (Sandbox Code Playgroud)
当我使用http:// localhost:8080/mycontext /我在嵌入式Tomcat和Jetty中运行我的应用程序时,我得到了"foo"返回的属性.但是当我构建战争并部署到Weblogic 10.3时,我得到了404.
我降级到Grails 1.1.2并且它仍然无法在Weblogic 10.3上运行,但错误更具描述性
Could not open ServletContext resource [/WEB-INF/grails-app/views/index.gsp]
Run Code Online (Sandbox Code Playgroud)
因此,它似乎完全忽略了我的URL映射"/",但其他更深层次的URL映射正在起作用.任何线索?
练习是:写一个函数setbits(x,p,n,y)返回x,其中n位从位置p开始,设置为y的最右边n位,其他位保持不变.
我尝试解决方案是:
#include <stdio.h>
unsigned setbits(unsigned, int, int, unsigned);
int main(void)
{
printf("%u\n", setbits(256, 4, 2, 255));
return 0;
}
unsigned setbits(unsigned x, int p, int n, unsigned y)
{
return (x >> (p + 1 - n)) | (1 << (n & y));
}
Run Code Online (Sandbox Code Playgroud)
这可能不正确,但我在正确的道路上吗?如果没有,我做错了什么?我不确定为什么我不完全理解这一点,但我花了大约一个小时试图想出这个.
谢谢.
这是我的代码:
#import <Foundation/Foundation.h>
void PrintPathInfo() {
const char *path = [@"~" fileSystemRepresentation];
NSLog(@"My home folder is at '%@'", path);
}
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
PrintPathInfo();
[pool drain];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我的问题:程序收到信号:"EXC_BAD_ACCESS".
我真的认为问题是我的NSLog,但我不知道如何解决它.
有人可以帮帮我吗?谢谢!
git是新手,所以希望这是一个简单的答案简单的问题.
我在GitHub上分叉了一个存储库.然后我使用公共repo URL在本地计算机上克隆它:git@github.com:samuelclay/django-mingus.git而不是私有repo URL : git://github.com/samuelclay/django-mingus.git.
我对代码进行了一些更改,提交了这些更改,并且为了将我的更改推送到我的分支仓库,我发布了:git remote add upstream git://github.com/samuelclay/django-mingus.git然后git push upstream,虽然这不会给我一个错误(它说的一切都达到了 -日期),肯定不会将我的更改推向GitHub.
有没有办法更改为私人repo URL?这甚至是必要的吗?
java ×2
android ×1
architecture ×1
attributes ×1
boost ×1
boost-bind ×1
c ×1
c# ×1
c++ ×1
css ×1
git ×1
github ×1
grails ×1
groovy ×1
html ×1
inheritance ×1
kr-c ×1
localization ×1
mysql ×1
objective-c ×1
php ×1
swing ×1
tags ×1
weblogic ×1