Tag: devise原则

为什么语言在默认情况下会在整数溢出时引发错误?

在几种现代编程语言(包括C ++,Java和C#)中,该语言允许在运行时发生整数溢出 ,而不会引起任何types的错误情况。 例如,考虑这个(人为的)C#方法,它不考虑上溢/下溢的可能性。 (为了简洁,该方法也不处理指定列表为空引用的情况。) //Returns the sum of the values in the specified list. private static int sumList(List<int> list) { int sum = 0; foreach (int listItem in list) { sum += listItem; } return sum; } 如果这个方法被调用如下: List<int> list = new List<int>(); list.Add(2000000000); list.Add(2000000000); int sum = sumList(list); sumList()方法中会发生溢出(因为C#中的inttypes是一个32位有符号整数,并且列表中的值的总和超过了最大32位有符号整数的值)。 sumvariables的值是-294967296(不是4000000000的值)。 这最有可能不是sumList方法的(假设的)开发者所期望的。 显然,开发人员可以使用各种技术来避免整数溢出的可能性,例如在Java中使用BigIntegertypes或C#中的checked关键字和/checked编译器开关。 然而,我感兴趣的问题是为什么这些语言默认情况下允许整数溢出发生,而不是在例如运行时执行操作时引发exception溢出。 […]

为什么PHP属性不允许function?

我对PHP很新,但是我已经用类似的语言编写了多年。 我被以下的东西弄糊涂了: class Foo { public $path = array( realpath(".") ); } 它产生了一个语法错误: Parse error: syntax error, unexpected '(', expecting ')' in test.php on line 5这是realpath调用。 但是这工作正常: $path = array( realpath(".") ); 在对我的头撞了一阵之后,我被告知不能在属性默认的情况下调用函数。 你必须在__construct 。 我的问题是:为什么? 这是一个“function”或马虎实施? 基本原理是什么?

为什么(以及如何)使用master..spt_values分隔列?

对问题“将一列分割成多行”的答案进行了质疑,我在这里重写为[1]。 Type = 'P'含义是什么(以及为什么使用未logging的master..spt_values来分割列)? 它有什么好处? [1] CREATE TABLE dbo.Table1 ( Col1 CHAR(1), Col2 CHAR(1), Col3 CHAR(1), Col4 VARCHAR(50) ) GO INSERT INTO dbo.Table1 VALUES ('A','B','C','1,2,3') GO INSERT INTO dbo.Table1 VALUES ('D','E','F','6,7,8,9') GO SELECT T.col1, RIGHT(LEFT(T.col4,Number-1), CHARINDEX(',',REVERSE(LEFT(','+T.col4,Number-1)))) FROM master..spt_values, table1 T WHERE Type = 'P' AND Number BETWEEN 1 AND LEN(T.col4)+1 AND (SUBSTRING(T.col4,Number,1) = ',' — […]

将基types转换为派生types的一种方法

我不确定这是否是一件奇怪的事情,或者如果它是一些代码味道…但我想知道是否有一种方法(某种types的oop模式会很好)来“投”基types转换为其派生types的forms。 我知道这是没有意义的,因为派生types将具有父类不提供的附加function,这在本身并不是根本上合理的。 但有没有办法做到这一点? 这里是一个代码示例,以便我可以更好地解释我所要求的。 public class SomeBaseClass { public string GetBaseClassName {get;set;} public bool BooleanEvaluator {get;set;} } public class SomeDerivedClass : SomeBaseClass { public void Insert(SqlConnection connection) { //…random connection stuff cmd.Parameters["IsItTrue"].Value = this.BooleanEvalutar; //… } } public static void Main(object[] args) { SomeBaseClass baseClass = new SomeBaseClass(); SomeDerivedClass derClass = (SomeDerivedClass)baseClass; derClass.Insert(new sqlConnection()); } […]

为什么我不能在C#中抽象静态方法?

最近我一直在和供应商合作,我遇到了一个有趣的情况,我想有一个抽象的类,有一个抽象的静态方法。 我在这个主题上阅读了几篇文章,这是有道理的,但是有一个很好的清晰的解释吗?

单例实例声明为GetInstance方法的静态variables

我已经看到实例variables被声明为GetInstance方法中的静态variables的单例模式的实现。 喜欢这个: SomeBaseClass &SomeClass::GetInstance() { static SomeClass instance; return instance; } 我看到以下积极的方面: 代码更简单,因为编译器只有在第一次调用GetInstance时才负责创build这个对象。 代码是更安全的,因为没有其他的方式来获取实例的引用,但与GetInstance方法,没有其他方式来更改实例,但在GetInstance方法。 这种方法的消极方面是什么(除了这不是OOP-ish)? 这是线程安全的吗?

在C,C ++和C#中,void是什么意思?

寻找VOID这个词来自何处的基本原理,以及为什么它会被称为无效。 这个问题的意图是帮助那些没有C经验的人,突然看到一个基于C的代码库。

工具栏导航图标从未设置

我正在尝试新的工具栏组件,导航图标有些麻烦。 我想实现一个自定义的图标进行后退导航: 在我的清单中,我设定了一位家长参加我的活动: <activity android:name=".CardsActivity" android:parentActivityName=".MainActivity"> <!– Parent activity meta-data to support API level 7+ –> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" /> </activity> 我声明这样的工具栏: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="com.example.lollitest.MainActivity" > <android.support.v7.widget.Toolbar android:id="@+id/my_awesome_toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:layout_marginBottom="10dp" android:background="?attr/colorPrimary" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/my_awesome_toolbar" android:text="@string/hello_world" /> </RelativeLayout> 然后在我的活动中,我configuration工具栏像这样: Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); toolbar.setNavigationIcon(R.drawable.ic_good); toolbar.setTitle("Title"); toolbar.setSubtitle("Sub"); toolbar.setLogo(R.drawable.ic_launcher); […]

为什么私人领域是私人的types,而不是实例?

在C#(以及许多其他语言)中,访问相同types的其他实例的私有字段是完全合法的。 例如: public class Foo { private bool aBool; public void DoBar(Foo anotherFoo) { if(anotherFoo.aBool) … } } 由于C#规范 (3.5.1节,3.5.2节)规定私有字段的访问是一种types,而不是一个实例。 我一直在和一位同事讨论这个问题,我们试图想出一个这样的原因(而不是限制对同一个实例的访问)。 我们可以提出的最好的论点是平等检查,其中类可能想访问私人领域,以确定与另一个实例的平等。 还有其他的原因吗? 或者一些绝对意味着它必须这样或那样的工作的黄金理由是完全不可能的?

何时/为什么在SQL Server中使用级联?

在SQL Server中设置外键时,在什么情况下应该将其删除或更新级联,其背后的原因是什么? 这可能也适用于其他数据库。 我最重要的是看每个场景的具体例子,最好是成功使用过的人。