程序设计

专业和发烧友程序员的问答

8
密钥库更改密码
我目前有一个密钥库,其中只有我应该知道的特定密码。现在,我需要将对该密钥库的访问权授予其他人,因此我想: 1)更改密码,以便我可以与他人共享并让他们签名 2)创建其他密码并允许他们使用它签名。 这可能吗?以及-如果是-怎么样?
267 java  keystore 

8
SharedPreferences.onSharedPreferenceChangeListener未被一致调用
我正在这样注册一个偏好设置更改监听器(在onCreate()我的主要活动中): SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); prefs.registerOnSharedPreferenceChangeListener( new SharedPreferences.OnSharedPreferenceChangeListener() { public void onSharedPreferenceChanged( SharedPreferences prefs, String key) { System.out.println(key); } }); 麻烦的是,监听器并不总是被调用。它会在前几次更改首选项时起作用,然后在我卸载并重新安装该应用程序之前不再调用它。重新启动应用程序似乎无济于事。 我发现一个邮件列表线程报告了同样的问题,但是没有人真正回答他。我究竟做错了什么?


5
为什么Mockito不模拟静态方法?
我在这里阅读了一些有关静态方法的主题,并且我认为我理解滥用/过度使用静态方法可能导致的问题。但是我并没有真正理解为什么很难模拟静态方法的原因。 我知道其他模拟框架(例如PowerMock)可以做到这一点,但为什么Mockito不能? 我读了这篇文章,但作者似乎在宗教上反对这个词static,也许这是我的理解不周。 一个简单的解释/链接会很好。
267 java  methods  static  mockito 

12
对于IEEE754 NaN值,所有比较返回false的理由是什么?
为什么NaN值的比较与所有其他值都不同?也就是说,与一个或两个值均为NaN的运算符==,<=,> =,<,>进行的所有比较均返回false,这与所有其他值的行为相反。 我想这以某种方式简化了数值计算,但是我找不到明确陈述的理由,甚至在Kahan撰写的关于IEEE 754状态的讲义中也没有详细讨论其他设计决策。 在进行简单的数据处理时,这种异常行为会引起麻烦。例如,当在C程序中对带有某些实值字段的记录列表进行排序时,我需要编写额外的代码以将NaN作为最大元素来处理,否则排序算法可能会变得混乱。 编辑: 到目前为止,所有答案都表明,比较NaN毫无意义。 我同意,但这并不意味着正确答案是错误的,而是一个非布尔值(NaB),幸运的是不存在。 因此,在我看来,选择比较返回真还是假是任意的,并且对于一般数据处理,如果遵循通常的规律(反射性为==,三分法为<,==,>),则最好避免数据结构,这将是有利的依靠这些法律变得混乱。 因此,我要求打破这些法律的某些具体优势,而不仅仅是哲学推理。 编辑2: 我想我现在明白为什么将NaN设为最大值会是个坏主意,它将使上限计算变得混乱。 NaN!= NaN可能需要避免检测诸如 while (x != oldX) { oldX = x; x = better_approximation(x); } 但是最好通过比较绝对差和较小的限制来写出。因此恕我直言,这对于打破NaN的反射率是一个相对较弱的论点。


4
什么是“ android:allowBackup”?
由于新的ADT预览版(版本21) ,他们有一个新的皮棉警告,告诉我在清单文件,接下来的事情(在应用程序标签): 应该将android:allowBackup显式设置为true或false(默认情况下为true,这可能会对应用程序的数据产生一些安全隐患) 他们在官方网站上写道: 进行了两项新检查:必须明确确定您的应用是否允许备份以及标签检查。有一个用于设置库路径的新命令行标志。编辑时对增量皮棉分析的许多改进。 这是什么警告?什么是备份功能,如何使用? 另外,为什么警告告诉我它具有安全隐患?禁用此功能有哪些不利和好处? 清单备份有两个概念: “机器人:allowBackup ”允许备份和通过ADB恢复,如图所示在这里: 是否允许应用程序参与备份和还原基础结构。如果将此属性设置为false,则即使通过全系统备份也不会执行应用程序的备份或还原,否则将导致所有应用程序数据通过adb保存。此属性的默认值为true。 这被认为是安全问题,因为人们可以通过ADB备份您的应用程序,然后将您应用程序的私有数据存储到他们的PC中。 但是,我认为这不是问题,因为大多数用户不知道什么是adb,如果这样做,他们也将知道如何对设备进行root操作。仅当设备启用了调试功能时,ADB功能才起作用,并且需要用户启用它。 因此,只有将其设备连接到PC并启用调试功能的用户才会受到影响。如果他们的PC上有使用ADB工具的恶意应用程序,则可能会出现问题,因为该应用程序可以读取私有存储数据。 我认为Google应该只在开发人员类别中添加默认情况下禁用的功能,以允许通过ADB备份和还原应用程序。 “ android:backupAgent ”允许使用云的备份和还原功能,如此处和此处所示: 实现应用程序的备份代理的类的名称,它是BackupAgent的子类。该属性值应该是完全限定的类名称(例如“ com.example.project.MyBackupAgent”)。但是,作为简写形式,如果名称的第一个字符是句点(例如,“。MyBackupAgent”),则会将其附加到元素中指定的包名称中。没有默认值。必须指定名称。 这不是安全问题。

5
如何将本地模块指定为npm软件包依赖项
我有一个应用程序,该应用程序具有package.json文件中依赖项下指定的第三方模块(例如,“ express”)的通常依赖项。例如 "express" : "3.1.1" 我想模块化地构造自己的代码,并由package.json安装一组本地(即我当前所在的文件系统上的)模块。我知道我可以通过运行安装本地模块: npm install path/to/mymodule 但是,我不知道如何通过package.json依赖关系结构来实现这一点。--save在此命令中使用该选项只是将其"mymodule": "0.0.0"放入我的package.json中(不引用文件路径位置)。如果我随后从node_modules中删除已安装的版本,并尝试从package.json重新安装,它将失败(因为它在中央注册表中查找“ mymodule”,并且不在本地查找)。 我敢肯定,这是一种告诉"dependencies": {}结构我要从文件系统路径安装它的方法,但是不知道如何。 还有其他人有这个问题吗?谢谢。
267 node.js  npm 


6
如何在PostgreSQL中进行UPSERT(MERGE,INSERT…ON DUPLICATE UPDATE)?
这里一个非常常见的问题是如何进行upsert,这是MySQL调用的内容,INSERT ... ON DUPLICATE UPDATE并且该标准支持该MERGE操作。 鉴于PostgreSQL不直接支持它(在9.5版之前),您该怎么做?考虑以下: CREATE TABLE testtable ( id integer PRIMARY KEY, somedata text NOT NULL ); INSERT INTO testtable (id, somedata) VALUES (1, 'fred'), (2, 'bob'); 现在,假设你想“UPSERT”的元组(2, 'Joe'),(3, 'Alan'),因此新表的内容是: (1, 'fred'), (2, 'Joe'), -- Changed value of existing tuple (3, 'Alan') -- Added new tuple 那就是人们在讨论时谈论的话题upsert。至关重要的是,在存在多个事务处理同一个表的情况下,任何方法都必须安全 -通过使用显式锁定或以其他方式抵御由此产生的竞争条件。 …

17
运行npm start时启动脚本丢失错误
尝试使用npm start命令调试节点应用程序时收到此错误。 错误: npm ERR!Windows_NT 6.3.9600 npm错误!argv“ C:\ Program Files \ nodejs \\ node.exe”“ C:\ Program Files \ nodejs \ node_modules \ npm \ bin \ npm-cli.js”“开始” n​​pm ERR!节点v0.12.7 npm ERR!npm v2.11.3 npm ERR!缺少脚本:启动npm ERR!npm ERR!如果需要帮助,可以在以下位置报告此错误:npm ERR! https://github.com/npm/npm/issues npm错误!请在支持请求中包括以下文件:npm ERR!C:\ Users \ andrmoll.NORTHAMERICA \ Documents \ GitHub \ SVIChallenge \ …



24
从字符串中删除特殊字符的最有效方法
我想从字符串中删除所有特殊字符。允许的字符是AZ(大写或小写),数字(0-9),下划线(_)或点号(。)。 我有以下内容,它可以正常工作,但我怀疑(我知道!)它不是很有效: public static string RemoveSpecialCharacters(string str) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < str.Length; i++) { if ((str[i] >= '0' && str[i] <= '9') || (str[i] >= 'A' && str[i] <= 'z' || (str[i] == '.' || str[i] == '_'))) { sb.Append(str[i]); } …
266 c#  string 

30
如何避免“如果”连锁?
假设我有这个伪代码: bool conditionA = executeStepA(); if (conditionA){ bool conditionB = executeStepB(); if (conditionB){ bool conditionC = executeStepC(); if (conditionC){ ... } } } executeThisFunctionInAnyCase(); executeStepX仅当前一个成功时,才应执行功能。无论如何,executeThisFunctionInAnyCase应在最后调用该函数。我是编程的新手,因此对一个基本问题感到抱歉:是否有一种方法(例如,在C / C ++中)避免长if链产生这种“代码金字塔”,而以代码易读性为代价? 我知道,如果我们可以跳过executeThisFunctionInAnyCase函数调用,则代码可以简化为: bool conditionA = executeStepA(); if (!conditionA) return; bool conditionB = executeStepB(); if (!conditionB) return; bool conditionC = executeStepC(); if (!conditionC) return; …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.