我已经看到了这些在C和C ++的上下文中提到的,但是有符号和无符号variables有什么区别呢?
我想学习如何编写一个词法分析器。 我的大学课程有一个任务,我们必须写一个parsing器(和一个词法分析器),但是这个给我们没有任何指示或反馈(超出标记),所以我没有真正从中学到很多东西。 在寻找这个主题后,我只能find相当先进的写作,重点放在我觉得比我所在的领先几步的地方。 我想讨论一下为一个非常简单的语言编写一个词法分析器的基础知识,我可以用它来作为调查更加复杂的语言的基础。 在这个阶段,我并不是对最佳实践或优化技术真正感兴趣,而是倾向于关注基本要素。 有什么好的资源让我开始?
我必须说我从来没有理由使用按位运算符,但是我确信有一些我已经执行的操作可以更有效地完成它们。 如何“转移”和“OR-ing”帮助您更有效地解决问题?
当我发现河内塔这个不寻常的迭代解决scheme时,我迷失在互联网上: for (int x = 1; x < (1 << nDisks); x++) { FromPole = (x & x-1) % 3; ToPole = ((x | x-1) + 1) % 3; moveDisk(FromPole, ToPole); } 这篇文章也有类似的Delphi代码中的一个答案。 然而,对于我的生活,我似乎无法find一个好的解释,为什么这个工程。 任何人都可以帮我理解吗?
应用层和业务逻辑层有什么区别? 我理解业务层提供业务特定服务和应用层耦合业务服务,并为最终用户(Web服务,UI等)提供服务。 我对吗?
背景 那天在健身房的时候,我正在用我的组合锁,并且认识到一些对我来说是个有用的程序员。 换句话说,我的组合是三个独立的数字组合,或者是相似的,或者是有其他的关系使得它们易于记忆。 例如,5-15-25,7-17-2,6-24-5。 这些例子似乎很容易记住。 题 我将如何执行类似的密码? 是的,他们应该很难破解,但最终用户也应该很容易记住。 组合锁可以用混合的数字混合在一起,这些数字具有相似的声音,并且具有相似属性的数字(7-17-23:全部素数,7在7之后滚动,23是另一个素数,并且是那套),“难”记得)。 标准 密码应该很容易记住。 Dog!Wolf很容易记住,但一旦攻击者知道你的网站给出了这种组合,这使得检查变得容易得多。 文字或字母大多应遵循相同的声音(大部分)。 至less8个字母 不使用!@#$%^&*();'{}_+<>?,./这些标点符号适用于'硬'密码,没有'易记'的声音。 资源 这个问题是语言不可知的,但是如果C#有一个特定的实现,我很乐意听到它。 更新 有less数用户表示“这是不好的密码安全性”。 不要以为这是一个网站。 这可能只是为了让我自己根据这些规则生成密码的应用程序。 这是一个例子。 字母A – C – C – L – I – M – O – P 'stream',恰好是两个常用字( Acclimate和Mop )组合在一起。 此外,当用户说这些字母,或者说他们是一个字,这是他们的一个真正的字。 很容易记住,但很难破解(显然,字典攻击)。 这个问题有两个部分的目标: 从听起来类似的字母构造密码(使用一致性)或 构造与普通单词相关的密码,类似于生成不在字典中的第三组字母。
艾伦霍勒布写了以下内容, 没有一些耦合,你不能有一个程序。 尽pipe如此,通过严格遵循OO(面向对象的)规则(最重要的是对象的实现应该完全从使用它的对象中隐藏),可以大大减less耦合。 例如,对象的实例variables(不是常量的成员字段)应始终保密。 期。 没有例外。 永远。 我是认真的。 (您可以偶尔使用受保护的方法,但受保护的实例variables是可憎的。) 这听起来合理,但他接着说, 你不应该使用get / set函数出于同样的原因 – 他们只是过于复杂的方式来公开一个字段(尽pipe访问函数返回成熟的对象而不是基本types的值是合理的,在返回的对象类是devise中的关键抽象)。 坦率地说,对我来说听起来很疯狂。 我理解隐藏信息的原理,但是如果没有访问器和修改器,就根本无法使用Java Bean。 我不知道如何在模型中没有访问器的情况下遵循MVCdevise,因为模型不能负责渲染视图。 但是,我是一个年轻的程序员,每天都会学习更多关于面向对象的devise。 也许有更多经验的人可以考虑这个问题。 艾伦霍勒布的文章供参考 为什么延伸是邪恶的 为什么Getter和Setter方法是邪恶的 相关问题: 爪哇:吸气剂和固化剂是邪恶的吗? 是不是真的没有使用setter和getters? 获得和设置functionstream行与C ++程序员? 你应该使用类中的访问器属性,还是仅仅从类之外?
挑战 按字符计数的最短代码将输出莫里斯数列 。 莫里斯数字序列 ( Morris Number Sequence) ,也被称为Look-and-say序列,是一个数字序列,开头如下: 1, 11, 21, 1211, 111221, 312211, … 您可以无限地生成序列(即,您不必生成特定的数字)。 I / O期望 该程序不需要任何input(但接受input的奖励点,从而提供从任意起点或数字开始的选项)。 至less你的程序必须从1开始。 产出至less是期望的顺序: 1 11 21 1211 111221 312211 … 额外的信用 如果你要额外的信贷,你需要做这样的事情: $ morris 1 1 11 21 1211 111221 312211 … $ morris 3 3 13 1113 3113 132113 …
这是从这个线程的启发/ http://www.allegro.cc/forums/thread/603383 问题 假设用户给你一个从1到7的数字input。input应该从控制台中获取,参数不太可取。 当input为1时,打印下列内容: *********** ********* ******* ***** *** * 大于1的值应该生成多个模式,以上面的结尾,但对称堆叠。 例如,3应该打印以下内容: *********** *********** *********** ********* ********* ********* ******* ******* ******* ***** ***** ***** *** *** *** * * * *********** *********** ********* ********* ******* ******* ***** ***** *** *** * * *********** ********* ******* ***** *** * 如果您打印反面,也可以获得奖励积分。 *********** *********** ********* ********* ******* […]
我有一个梦想,改善分布式编程的世界:) 特别是,我感觉缺乏必要的工具来debugging,监视,理解和可视化分布式系统的行为(我必须编写自己的logging器和可视化器来满足我的需求),而且我正在编写一对这些工具在我的空闲时间。 社区,你有什么工具缺乏这方面的? 请描述一个答案,粗略地说明这个工具应该做什么。 其他人可以指出这样的工具的存在,或者有人可能会得到启发和写作。