我有一个基于Gentoo的LAMP堆栈上运行的Web应用程序.我的客户购买软件作为服务,我托管一切.但是,客户自己的网络内部需要进行现场部署.
目前,由于我托管系统,因此应用程序中没有内置的许可证管理.我基于用户帐户和数据容量(它是用于计量数据的处理和分析应用程序)进行计费,我只是设置客户支付的任何费用,客户端无法自行设置这些内容.即使没有现场安装,也应该进行更改以获得更好的可扩展性.
我正在寻找一个许可管理框架和/或您已经实现或已经看到在其他地方工作良好的典型方法.我的要求是:
对于某些现场场景,需要一些特定的操作系统,通常是某些版本的Windows Server,但各种Linux发行版也越来越受欢迎,特别是在公共部门.
从用户的角度来看,我对FogBugz的许可证管理非常满意,看来Joel Spolsky从供应商的角度来看它是满意的,而且它是跨平台的,所以它会很好地参考我的内容.瞄准.
我们提供了一个Web应用程序,其前端完全由Adobe Flash开发.当我们在6年前选择Flash时,我们之所以这样做是因为它具有大量用户交互功能,例如拖动内容,打开和关闭菜单,树导航元素,弹出对话框等.
今天很明显,AJAX/JS提供了大致相同的可能性,并且由于可用的框架数量很多,因此实现它们非常可行.
是否存在技术原因应该选择哪种技术而不是另一种?"技术"是指性能,安全性,可移植性/兼容性等.我并不是指在Flash中完成非程序员方式开发等方面,或者将应用程序从一个应用程序切换到另一个应用程序是否有意义.
正如我刚才在另一个问题中解释的那样,在我看来,JS在市场份额方面遥遥领先,我想知道如果我们坚持使用Flash,我们是否会忽略一些重要的观点.
当我想知道这个问题时,我在设计的应用程序中担心竞争条件.
假设我有一个大型数组或某种类型的集合,由我的程序的一个组件管理,让我们称之为组件Monitor.它的工作是定期检查集合是否"脏",即最近是否已更改,如果是,则将快照写入磁盘(这是为了在发生崩溃时检查应用程序)并再次将其标记为干净.
在不同线程中运行的同一程序的其他组件调用Monitor的方法来向数组/集合中添加数据或修改数据.这些方法将集合标记为脏.
现在,改变方法在其他组件的线程中运行,对吧?如果我不是那么幸运,可以在快照写入磁盘时调用它们,更改已经写入的数据,设置脏标志,监视器的线程在此之后取消设置,而不保存更改(它当它改变时已经超过了元素).所以我有一个标记为干净的脏集合.
有一段时间,我认为我可以通过制作集合的临时副本来解决问题,将其标记为干净,然后再序列化副本.但复制是否是原子的,即我可以确定在复制时集合不会改变吗?
与此同时,我认为我找到了更好的解决方案
我认为锁定标志可能是最好的方式.但我仍然好奇:复制变量原子?
后续行动:也许这应该是一个自己的问题,但实际上它是非常相同的.根据下面的答案,我的"锁定旗帜"方法可能也行不通,对吧?因为数据更改方法可能会在将锁定标志设置为"锁定"值时检查锁定标志并确定它未锁定.所以我需要一个像mutex这样的特殊结构,如果我真的想做到这一点,对吗?
在创建一个想法之前,你有什么方法可以"绘制出来"?
假设我想参与一个大项目,例如Facebook或MySpace等网站的规模.在开始实际工作之前,我应该采取哪些规划/设计步骤?
例如,我应该逐页映射所有内容(它们的功能,数据等)吗?
我的应用程序中有两种对象,其中一种对象只有一种对应的对象.
跟踪这种关系的明显选择是Map<type1, type2>,就像HashMap一样.但不知何故,我很怀疑.我可以在Map中使用一个对象作为键,传递它,将它放在另一个集合中,并随时从Map中检索它的伙伴吗?
创建一个对象后,我传来的只是一个标识符,对吧?所以可能没有问题.如果我序列化和反序列化密钥怎么办?
还有其他警告吗?我应该使用其他东西来关联对象,就像我自己生成的数字一样吗?
请注意,我实际上并没有在这里使用数据库,因此ORM工具可能不是我想要的.
我想要一些容器,每个容器包含许多对象,一个容器中的所有对象都是同一个类.容器应该显示数据库表的一些行为,即:
当请求"重复条目"时,容器应该跳过插入并返回已存在对象的密钥,而不是抛出错误.
现在,我将编写一个通用容器类,它接受实现接口的对象以获取键字段的值,并使用以这些值键入的HashMap作为实际存储类.有没有更好的方法使用现有的内置类?我正在浏览HashSet之类的东西,但它们似乎并不合适.
我正在开发一个应该与Java 5兼容的Java程序.我对@OverrideJava 6中允许的已实现接口方法进行了注释,但是在5中没有.我使用的是Java 6 SDK.@Override当我将其设置为5.0合规性时,Eclipse正确地给出了错误消息.但是,我的Maven构建在我的POM中使用以下设置运行时甚至没有警告:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我是否正确期望这实际上会使构建失败?为什么不呢,有什么我可以做的吗?
我已经用Java完成了线程,但我是C中线程的完整菜鸟.我的第一个问题,在谷歌搜索之后,是:我使用哪个线程库?有关系吗?看来我得thread.h和pthread.h选择.
操作系统是Linux,也将是Linux.更具体地说,它现在是Ubuntu,并将保持这样,或成为RHEL.但是我觉得发行版没关系?
在PHP中,某些函数将"可调用"作为参数,这意味着您可以指定要在某一点执行的函数.一个例子是array_map.
PHP允许您以多种方式指定可调用对象,例如:
// as a string:
$lowerCaseStrings = array_map('strtolower', $arrayOfStrings);
// object methods as an array
// (this could be done with DateTime directly, of course):
class DateFactory {
private $format;
public function __construct($format) {
$this->format = $format;
}
public function newDate($dateString) {
return DateTime::createFromFormat($this->format, $dateString);
}
}
$factory = new DateFactory('Y-m-d');
$dates = array_map(array($factory, 'newDate'), $arrayOfDateStrings);
// as a lambda expression / closure:
$dates = array_map(
function ($dateString) {
return DateTime::createFromFormat('Y-m-d', $dateString);
},
$arrayOfDateStrings
); …Run Code Online (Sandbox Code Playgroud) 到目前为止,我遇到了邻接列表,嵌套集和嵌套间隔作为模型,用于在数据库中存储树结构.我非常了解这些,并将树木从一个迁移到另一个.
还有哪些其他流行款?它们的特点是什么?关于这个主题有哪些好的资源(书籍,网络等)?
我不只是在寻找数据库存储,而是希望扩展我对树木的了解.例如,我理解嵌套集/间隔对于关系数据库存储特别有利,并且问自己,它们在其他环境中实际上是一个糟糕的选择吗?