在我们的项目中,有几个地方我们可以通过哈希来消除.例如,我们在许可证和数据库中的许可对象之间存储加密引用以及未加密的引用.这是为了确保用户无法通过混淆数据库来更改他们已获得许可的实体.
我们在任何地方使用加密的主要原因是我们已经有了一个很好的加密库和一个系统密钥.此外,开发散列库并不值得花时间.
我们使用加密而不是散列来创建安全风险吗?
我正在寻找一个简单,完整,简洁的缓存列表,您将在使用Hibernate编写JPA时遇到这些缓存.
特别是我想知道每个缓存,缓存的生命周期(缓存什么时候过时),缓存的范围,清除缓存的方法(如果有的话),缓存的内容,缓存是默认情况下,如何打开/关闭它,以及任何有用的信息.
我尝试在另一个问题中找到这些信息,但找不到任何完整的答案.答案也分布在Hibernate文档中,但我也很难在那里找到它们.
我打算自己回答这个问题作为一个社区维基来推动这个问题,但我仍然不知道所有的答案,所以会有一些漏洞要填补.
此消息严格适用于Java.如果方法在超类中,则可以通过两种方式调用该方法:
foo();
super.foo();
Run Code Online (Sandbox Code Playgroud)
总是做后者有什么害处吗?作为一种编码风格,我更喜欢后者,因为一眼就能看出方法调用的来源.在任何情况下,"超级"将不存在或不做我认为会做的事情吗?
我正在移植一个库,以便它兼容python 2和3.库从调用应用程序接收字符串或类似字符串的对象,我需要确保这些对象转换为unicode字符串.
在python 2中,我可以这样做:
unicode_x = unicode(x)
Run Code Online (Sandbox Code Playgroud)
在python 3中,我可以这样做:
unicode_x = str(x)
Run Code Online (Sandbox Code Playgroud)
但是,我拥有的最佳跨版本解决方案是:
def ensure_unicode(x):
if sys.version_info < (3, 0):
return unicode(x)
return str(x)
Run Code Online (Sandbox Code Playgroud)
这肯定不是很好(虽然它的工作原理).有更好的解决方案吗?
我知道unicode_literals
和u
前缀,但这两个解决方案不起作用,因为输入来自客户端,而不是我的库中的文字.
我想使用带有SystemJS 的库ip-address(注意,这个问题可能看起来很相似,但这是我在尝试完成此任务时遇到的另一个问题).
库ip-address依赖于util-deprecate.它导入如下:
var util = require('util');
Run Code Online (Sandbox Code Playgroud)
然后使用如下:
Address4.prototype.toV6Group =
util.deprecate(Address4.prototype.toGroup6,
'deprecated: `toV6Group` has been renamed to `toGroup6`');
Run Code Online (Sandbox Code Playgroud)
当我在节点项目中导入ip-address时...
var ipAddress = require('ip-address');
Run Code Online (Sandbox Code Playgroud)
......然后我没有遇到任何问题.
当我在SystemJS项目中导入ip-address时......
System.import('ip-address');
Run Code Online (Sandbox Code Playgroud)
...然后我收到一个错误:
util.deprecate is not a function
Run Code Online (Sandbox Code Playgroud)
如何配置SystemJS以执行此导入?目前我正在配置它......
const map: any = {
'ip-address':'vendor/ip-address',
'util':'vendor/util-deprecate'
}
const packages: any = {
'ip-address': {main:'ip-address.js'},
'util': {main: 'browser'}
};
Run Code Online (Sandbox Code Playgroud)
为了保存查找,util-deprecate的browser.js文件在这里,它直接导出deprecate函数.
注意,如果我修改ip-address模块以便所有调用都是以下形式,我可以使用它:
Address4.prototype.toV6Group =
util(Address4.prototype.toGroup6,
'deprecated: `toV6Group` has been renamed to `toGroup6`');
Run Code Online (Sandbox Code Playgroud)
如果我可以避免它,我宁愿不修改第三方库.
假设我有一个adder.ts
看起来像这样的文件:
import { Operand } from './operand';
export interface Adder {
add(op1: Operand, op2: Operand): Operand;
}
Run Code Online (Sandbox Code Playgroud)
我tsconfig.json
看起来像:
{
"compilerOptions": {
"declaration": false,
"module": "commonjs",
"outDir": "./dist",
"target": "es6",
"sourceMap": true
},
"include": [
"src/**/*"
]
}
Run Code Online (Sandbox Code Playgroud)
当我转换这段代码时,我希望只收到它dist/adder.d.ts
.但是,还有一个dist/adder.js
内容生成:
Object.defineProperty(exports, "__esModule", { value: true });
Run Code Online (Sandbox Code Playgroud)
为什么生成此文件?它有什么用途?在一天结束时,我想我并不在乎,因为它实际上永远不会被要求/装载,并且会被任何捆绑者修剪掉.我注意到它的唯一原因是因为我的覆盖工具将此文件报告为未覆盖.
我有一个包含多个类的模块。目前我正在使用..automodule
来记录模块。我希望每个类都有自己的带有类名的标题部分。我可以通过替换..automodule foo
为:
Bar
===
..autoclass foo.Bar
Baz
===
..autoclass foo.Baz
...
Run Code Online (Sandbox Code Playgroud)
但是,这需要我手动列出我执行此操作的每个模块中的每个类。自定义 automodule 生成的内容的最佳方法是什么?
作为构建过程的一部分,我们在编译可执行文件时生成一个映射文件.例如:
g++ -Wl,-Map,/tmp/foo.map -o foo foo.cpp
Run Code Online (Sandbox Code Playgroud)
为了尝试从GCC 4.3/4.4迁移到GCC 4.9,我们设置了一个新的构建服务器.4.9构建服务器生成的映射文件没有损坏的符号名称.4.3/4.4构建服务器生成的映射文件.例如,运行上面的4.3我在地图文件中剪切了这个:
.plt 0x0000000000400700 0x90 /usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../lib64/crt1.o
0x0000000000400710 _ZNSolsEi@@GLIBCXX_3.4
0x0000000000400720 _ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4
0x0000000000400730 __libc_start_main@@GLIBC_2.2.5
Run Code Online (Sandbox Code Playgroud)
针对4.9运行相同的代码我得到以下代码段:
.plt 0x00000000004006e0 0x80 /usr/lib/../lib64/crt1.o
0x00000000004006f0 std::ostream::operator<<(int)@@GLIBCXX_3.4
0x0000000000400700 std::ios_base::Init::Init()@@GLIBCXX_3.4
0x0000000000400710 __libc_start_main@@GLIBC_2.2.5
0x0000000000400720 __cxa_atexit@@GLIBC_2.2.5
Run Code Online (Sandbox Code Playgroud)
这是预期的变化吗?有没有办法用gcc 4.9(某种向后兼容性选项)生成错位输出?我问,因为我们构建中的后续工具使用符号文件并且在解码的名称上窒息.
我希望我的Jenkins multibranch管道工作能够避免触发自身.该作业进行提交,因为它会增加版本文件并将其检入源控件,从而导致无限循环.
在常规工作中,我可以按照这些说明来避免这种循环(虽然这不是最干净的方式).
这些指令不适用于多分支管道(没有"忽略某些用户的提交"选项).Jenkins mulitbranch管道中是否有任何方法可以防止自触发提交?
我有以下模块:
文件 a.py
class Foo(object):
x = 5
if __name__ == '__main__':
print Foo.x #5
Foo.x = 7
print Foo.x #7
b = __import__('b')
print b.Bar.x #5
Run Code Online (Sandbox Code Playgroud)
文件 b.py
from a import Foo
class Bar(Foo):
pass
Run Code Online (Sandbox Code Playgroud)
文件 c.py
if __name__ == '__main__':
import a
print a.Foo.x #5
a.Foo.x = 7
print a.Foo.x #7
b = __import__('b')
print b.Bar.x #7
Run Code Online (Sandbox Code Playgroud)
如果我运行a.py,我得到5,7,5如果我运行b.py,我得到5,7,7.我不确定应该是什么样的答案,但我希望这两者能够保持一致.
如果我有一个集合,我想迭代一个过滤流,那么我可以做以下任何一个(以及更多的钝选项):
for(item in collection.stream().filter(...).collect(Collectors.toList()))
for(item in collection.stream().filter(...).collect(Collectors.toSet()))
Run Code Online (Sandbox Code Playgroud)
哪个更快?一个列表还是一组?有没有办法收集简单的Iterable或其他类型我可以迭代?
JPQL可以对枚举执行LIKE表达式吗?
如果我有一个带有枚举字段栏的实体Foo,我可以在MySQL中执行以下操作(条形存储为MySQL枚举)...
SELECT * FROM Foo WHERE `bar` LIKE '%SUFFIX'
Run Code Online (Sandbox Code Playgroud)
但是,JPQL中的相应查询...
SELECT f FROM Foo f WHERE f.bar LIKE '%SUFFIX'
Run Code Online (Sandbox Code Playgroud)
......抱怨......
Parameter value [%SUFFIX] was not matching type [com.example.Foo$EnumType]
Run Code Online (Sandbox Code Playgroud) 我很擅长编写Web服务.我正在使用JAXWS开发SOAP服务.我希望能够让用户登录并在我的服务中知道哪个用户正在发出命令.换句话说,有一些会话处理.
我见过这样做的一种方法是使用cookie并从我的Web服务访问HTTP层.但是,这依赖于使用HTTP作为传输层(我知道HTTP几乎总是传输层,但我是纯粹的).
是否有更好的方法可以使服务层不知道传输层?有没有办法用servlet过滤器实现这个目的?我希望答案尽可能与框架无关.
java ×4
jpa ×2
python ×2
c++ ×1
caching ×1
coding-style ×1
encryption ×1
gcc ×1
gcc4.9 ×1
hash ×1
hibernate ×1
java-8 ×1
java-stream ×1
javascript ×1
jax-ws ×1
jenkins ×1
jpql ×1
jspm ×1
ld ×1
orm ×1
python-2.x ×1
python-3.x ×1
security ×1
session ×1
soap ×1
systemjs ×1
typescript ×1
web-services ×1