小编Yuv*_*dam的帖子

自制与Java序列化

我有一个需要持久保存在数据库上的POJO,当前设计将其字段指定为单个字符串列,并且不向表中添加其他字段.

意思是,对象需要以某种方式序列化.所以只是为了基本的实现,我去设计了我自己的对象的序列化形式,这意味着将它的所有字段连接成一个很好的字符串,用我选择的分隔符分隔.但这是相当丑陋的,并且可能会导致问题,比如说其中一个字段包含我的分隔符.

所以我尝试了基本的Java序列化,但是从我进行的一个基本测试来看,这在某种程度上变成了一个非常昂贵的操作(构建一个ByteArrayOutputStream,一个ObjectOutputStream,依此类推,反序列化).

那么我的选择是什么?序列化对象进入数据库的首选方法是什么?

编辑:这将是我项目中非常常见的操作,因此必须将开销保持在最低限度,并且性能至关重要.此外,第三方解决方案很好,但不相关(并且通常产生我试图避免的开销)

java database serialization

15
推荐指数
2
解决办法
6359
查看次数

Pythonic方式分配默认值

考虑这一行:

some_value = lst.attr[idx]
Run Code Online (Sandbox Code Playgroud)

这里有两个可能的错误,attr可能不存在,并且idx可能超出范围.

是否有任何优雅的方法来减少这种说法?理想情况下,对于这样的事情:

some_value = lst.attr[idx] or default_value
Run Code Online (Sandbox Code Playgroud)

(不要在家里尝试.只适用于评估为某种东西的正确定义的表达式.)

当然,我可以这样做:

try:
    some_value = lst.attr[idx]
except:
    some_value = default_value
Run Code Online (Sandbox Code Playgroud)

但是,如果我在作业的背景下怎么办?例如:

print [x.attr[idx] for x in y]
Run Code Online (Sandbox Code Playgroud)

在这种情况下,处理错误和分配默认值的pythonic方法是什么?

python error-handling

15
推荐指数
1
解决办法
1722
查看次数

将私有类声明为别名是否可以接受?

我昨天的回答中,我将以下代码称为"黑客":

final class MyMap extends HashMap<SomeSuperLongIdentifier, OtherSuperLongIdentifier> {}
// declared MyMap as an alias for readability purposes only

MyMap a = new MyMap();
a.put("key", "val");
Run Code Online (Sandbox Code Playgroud)

给它另一个想法,这根本不是一个坏主意,但我可能会遗漏一些东西.我错过了哪些坑洼?这是在Java中声明别名的可接受(可能是创造性的)方式吗?

java

14
推荐指数
1
解决办法
392
查看次数

是否可以创建HTML quine?

根据标题,是否可以在HTML中创建(非平凡的)quine

我对HTML quine的定义:

在假设HTML文件中的某些字符串由浏览器呈现为纯文本的情况下,非平凡的HTML quine是非空的并且至少使用一个HTML标记.定义HTML quine q.html ,使得标准浏览器呈现as的输出是其q.html自身的内容.

(我对这个定义的任何评论持开放态度,我现在就把它搞砸了)

HTML不是图灵完备的,因此定点定理不能用来证明它确实是可能的.

但是,这并不一定意味着HTML quine是不可能的.或者它实际上可以证明HTML quine是不可能的?

html computer-science quine computation-theory

14
推荐指数
1
解决办法
1442
查看次数

什么是外键?

好.所以我知道DB中的主键是什么.如果数据库中有表,则主键是表中每行唯一的单个值.例如:

id   | name    | whatever
-------------------------
1      Alice     ....
2      Bob       ....
45     Eve       ....
988    ....      ....
Run Code Online (Sandbox Code Playgroud)

所以我需要一个好的,简单的例子来解释究竟什么是外键.因为我只是不明白:)


编辑:好的,这很容易,我想我的问题太复杂了.

所以最后一个问题,对外键的唯一限制是它们是我所指的表中的有效主键值吗?

database foreign-keys

13
推荐指数
2
解决办法
1779
查看次数

为什么语音识别没有提升?

算法设计人员很难解决这个问题,这个问题有多难?

真的那么复杂吗?

我很难理解为什么这个话题如此成问题.任何人都可以举个例子说明为什么会这样吗?

algorithm speech-recognition

13
推荐指数
6
解决办法
2107
查看次数

UX问题:最好是"严重删除"或"垃圾"

我正在开发一个允许用户管理一些单独数据点的应用程序.我的用户想要做的事情之一是"删除",但这意味着什么?

对于Web应用程序,最好是为用户提供严重删除选项或使用"垃圾"系统吗?

在"严重删除"下(很想知道这个名字是否更好......)你点击"删除",然后警告用户"这是最后和悲惨的行动.一旦你这样做,你将无法做到在这里获取-insert数据点名称,即使你在哭......"然后如果他们点击删除......那么它真的永远消失了.

在"垃圾"模式下,您永远不会相信用户真的想要删除...而是从"主显示"中删除数据点并放入称为"垃圾箱"的存储桶中.这使得它不受用户的影响,这是他们通常想要的,但如果他们犯了错误,他们可以将其取回.显然,这是大多数操作系统的方式.

"严重删除"的优点是:

  • 易于实施
  • 易于向用户解释

"严重删除"的缺点是:

  • 它可悲惨地是最终的
  • 有时,猫走在键盘上

"垃圾"系统的优点是:

  • 用户对自己是安全的
  • 像"一次删除一堆"这样的批量方法更有意义
  • 节省了支持头痛

"垃圾"系统的缺点是":

  • 对于敏感数据,您会创建一种破坏幻觉,用户认为某些东西已经消失,但事实并非如此.
  • 许多微妙的区别使实施更加困难
  • 你"最终"删除了垃圾桶的内容吗?

我的问题是哪一个是现代Web应用程序的正确设计模式?"归档"功能如何适用于此?这就是gmail的工作原理.给出足够的讨论来证明你的答案是合理的......希望能指出一些相关的研究.

-FT

user-interface user-experience

13
推荐指数
3
解决办法
2370
查看次数

jQuery AJAX在PUT和DELETE的现代浏览器中工作吗?

jQuery的AJAX调用具有type参数,允许指定一个异步调用方法(GET/ POST/ PUT/ DELETE); 文件说明:

要求的类型("POST"或"GET"),默认为"GET".注意:此处也可以使用其他HTTP请求方法,例如PUT和DELETE,但并非所有浏览器都支持它们.

这对现代浏览器意味着什么?我可以依靠jQuery AJAX来完成RESTful调用,它依赖于PUTDELETE动词吗?

ajax rest jquery

13
推荐指数
2
解决办法
7118
查看次数

在matplotlib中绘制相关图

假设我有一个离散向量数据集n=2:

DATA = [
    ('a', 4),
    ('b', 5),
    ('c', 5),
    ('d', 4),
    ('e', 2),
    ('f', 5),
]
Run Code Online (Sandbox Code Playgroud)

如何使用matplotlib绘制该数据集以便可视化两个变量之间的任何相关性?

任何简单的代码示例都会很棒.

python data-visualization graph matplotlib

13
推荐指数
2
解决办法
3万
查看次数

如何在 Python 项目中正确构建内部脚本?

考虑以下 Python 项目框架:

proj/
??? foo
?   ??? __init__.py
??? README.md
??? scripts
    ??? run.py
Run Code Online (Sandbox Code Playgroud)

在这种情况下foo保存主项目文件,例如

# foo/__init__.py
class Foo():
    def run(self):
        print('Running...')
Run Code Online (Sandbox Code Playgroud)

scripts保存需要从 导入文件的辅助脚本,foo然后通过以下方式调用:

[~/proj]$ python scripts/run.py
Run Code Online (Sandbox Code Playgroud)

有两种导入方式Foo都失败了:

  1. 如果尝试进行相对导入,from ..foo import Foo则错误为ValueError: attempted relative import beyond top-level package
  2. 如果尝试绝对导入,from foo import Foo则错误为ModuleNotFoundError: No module named 'foo'

我目前的解决方法是将运行路径附加到sys.path

import sys
sys.path.append('.')

from foo import Foo
Foo().run()
Run Code Online (Sandbox Code Playgroud)

但这感觉就像一个黑客,必须添加到scripts/.

有没有更好的方法来构建此类项目中的脚本?

python pythonpath python-3.x

12
推荐指数
3
解决办法
1548
查看次数