小编use*_*820的帖子

MySQL和一个包含100多万行的表

我有一些超过1亿行的表.我每个月大约有20到40万行.

此时一切似乎都很好: - 所有插入都很快 - 所有选择都很快(他们使用索引而不使用复杂的聚合)

但是,我担心两件事,我在某处读过: - 当一个表有几亿行时,可能会有慢插入,因为重新平衡索引可能需要一段时间(二叉树) - 如果索引不适合内存,则可能需要一段时间才能从磁盘的不同部分读取它.

任何评论都将受到高度赞赏.任何建议我如何避免它或如何/如果/当它发生时我将如何修复/缓解问题将非常感激.

(我知道我们应该在某一天开始进行分片)

先感谢您.

mysql

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

ElasticSearch:不推荐在批量请求中指定类型

我收到警告:

"[types removal] Specifying types in bulk requests is deprecated."]
Run Code Online (Sandbox Code Playgroud)

我做错了什么?这是我的代码:

    BulkRequest request = new BulkRequest();

    for(Item item : items) {
        IndexRequest indexRequest = new IndexRequest(INDEX_NAME, DOC_TYPE, item.getIdentifier());
        indexRequest
                .opType(DocWriteRequest.OpType.INDEX) // Index the source. If there an existing document with the id, it will be replaced.
                .source(JsonUtility.toJson(item), XContentType.JSON);

        request.add(indexRequest);
    }

    elastic.bulk(request, RequestOptions.DEFAULT);
Run Code Online (Sandbox Code Playgroud)

java elasticsearch

10
推荐指数
1
解决办法
2万
查看次数

Apple In-App Purchase Receipt - 在服务器端进行验证

我在服务器端验证苹果收据时遇到问题.我试图在互联网上找到解决方案,但没有成功.

所以,描述:首先,应用程序是针对iOS7的.其次,我有一些项目(type = Non-Renewing Subscription).因此,用户可以购买一件或多件物品,然后他应该手动更新它们(再次购买).

应用程序向服务器端发送收据,我向Apple发出请求并获得带有大量 in_app收据的结果.就像是:

"in_app":[
{
"quantity":"1", "product_id":"...", "transaction_id":"...",
"original_transaction_id":"...", "purchase_date":"...", 
"purchase_date_ms":"...", "purchase_date_pst":"...", 
"original_purchase_date":"...", 
"original_purchase_date_ms":"...", "original_purchase_date_pst":"...",
"is_trial_period":"..."}, 
{
"quantity":"1", "product_id":"...", 
"transaction_id":"...","original_transaction_id":"...", 
"purchase_date":"...", "purchase_date_ms":"...", 
"purchase_date_pst":"...", "original_purchase_date":"...", 
"original_purchase_date_ms":"...", "original_purchase_date_pst":"...", 
"is_trial_period":"..."}
]
Run Code Online (Sandbox Code Playgroud)

因此,"in_app"中的每个"收据"都有transaction_id.但我如何识别当前购买的transactionId?我想验证它,并确保这是独一无二的.

我担心的是:如果有人会收到一张有效收据,他就可以破解我们的服务器端API,并使用相同的有效收据进行无限数量的应用内购买.

我应该以某种方式解密并检查transaction_id的"原始"收据,即我发送给Apple进行验证的收据?

任何帮助/建议将受到高度赞赏.先感谢您.

此致,马克西姆

in-app-purchase ios

7
推荐指数
1
解决办法
4939
查看次数

避免虚拟变量陷阱和神经网络

我知道在训练机器学习算法之前,分类数据应该是单热编码的.我还需要对于多元线性回归我需要排除其中一个编码变量以避免所谓的虚拟变量陷阱.

例如:如果我有分类功能"大小":"小","中","大",那么在一个热编码我会有类似的东西:

small  medium  large other-feature
  0      1       0      2999
Run Code Online (Sandbox Code Playgroud)

因此,为了避免虚拟变量陷阱,我需要删除3列中的任何一列,例如,列"小".

我是否应该为训练神经网络做同样的事情?或者这纯粹是为了多元回归?

谢谢.

regression neural-network one-hot-encoding

7
推荐指数
1
解决办法
2153
查看次数

REST服务和竞争条件

让我们想象一个问题:我有一个REST服务,它使用Java/MySQL/Spring和HTTP/JSON技术实现.REST服务的客户端是移动应用程序.所以有人可能会反编译代码并获得REST服务的API.(是的,代码是混淆等的,但无论如何).

问题:有一种POST方法可以向应用程序的其他用户汇款.我很担心,有人可以获得API,编写机器人并使此POST请求每秒500或5,000或甚至50,000次.结果,他可能会发送比实际更多的钱,因为如果同时处理1000个请求,那么对于所有1000个请求,余额检查可能会成功,但是一个帐户上的实际金额可能只够用于,假设,50个请求.

所以,基本上,它更像是具有多个线程的标准"竞争"条件.问题是,我有多台服务器,无论如何它们彼此无关.那么,300个请求可以来到服务器A,300个请求可以来到服务器B并且其他请求可以来到服务器C.

我最好的想法是使用"SELECT ... FOR UPDATE"之类的东西并在数据库级别上进行同步.但是,我想考虑另一种解决方案.

任何想法或建议?

java rest race-condition

6
推荐指数
1
解决办法
1603
查看次数

记录/安全注意事项和敏感数据

我正在研究与Web应用程序的日志记录和安全性相关的一般"体系结构".据我所知,记录所有请求/响应数据(不仅是访问日志,而是请求/响应的主体)被认为是最佳做法.它有利于安全分析,调试目的,审计等等.

存在一个问题,即在某些请求中传输敏感信息,例如密码和/或信用卡数据.

(请注意:当然,我使用的是HTTPS,但密码和/或信用卡数据在日志记录或日志文件中将显示为纯文本.顺便说一句,我不存储信用卡数据,因为我不是PCI DSS我们将这些数据传输给符合PCI DSS标准的合作伙伴.

目前,我记录并存储异地访问日志(所以日志没有请求/响应主体,但有GET参数数据),我在应用程序代码中记录请求/响应正文数据(所以我能够决定将哪种数据记录到日志中,并在将其写入日志之前擦除敏感数据).

但是,我正在考虑在应用程序之外实现日志记录(请求/响应主体),比如说在服务器级别通过某个模块(例如,mod_dumpio或类似的东西),但在这种情况下,记录敏感信息可能是一个大问题.

我该如何实施/配置它?

security logging

6
推荐指数
1
解决办法
1495
查看次数

bitcoin-cli:如何创建钱包和 utxo 地址

我是比特币和区块链的相对新手,希望您能帮助我解决一些问题。所以我启动了一个“regtest”网络并使用生成了 101 个块

bitcoin-cli -regtest generate 101
Run Code Online (Sandbox Code Playgroud)

现在,如果我启动 'bitcoin-cli -regtest getaddressesbyaccount ""',我会得到我默认账户的公共地址:

[
  "mwpKJNJ4UZL7yFyj53RSVcwauGAK84UvV2"
]
Run Code Online (Sandbox Code Playgroud)

当然,我现在不应该有任何其他帐户。当我启动“bitcoin-cli -regtest listunspent”时:

[
  {
    "txid": "694030f8638318c8c54054515ec716159edc494b14234885deb48f294b75a2fe",
    "vout": 0,
    "address": "n1queZpweTHjrMLvwSmcfrrJSQjsrYG3nG",
    "scriptPubKey": "21038cadb266ed1ae6c474f5c1b74fc5f6790eacde843a673a16cfc924a100f2a679ac",
    "amount": 50.00000000,
    "confirmations": 101,
    "spendable": true,
    "solvable": true,
    "safe": true
  }
]
Run Code Online (Sandbox Code Playgroud)

第一个问题:我知道“listunspent”列出的唯一交易是 UTXO,这意味着这是我收到的地址“n1queZpweTHjrMLvwSmcfrrJSQjsrYG3nG”的交易,金额为 50 BTC。这个地址是哪里来的?我可以通过什么 bitcoin-cli 命令在我的钱包中看到/找到它?

第二个问题:我如何创建一个带有一些余额的新钱包并在它们之间切换(使用 bitcoin-cli )?基本上,我希望能够使用 bitcoin-cli 测试我的应用程序 - 我需要能够创建钱包,在它们之间切换并在地址之间发送 btc。

bitcoin bitcoind

3
推荐指数
1
解决办法
7579
查看次数