V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  LinJunzhu  ›  全部回复第 5 页 / 共 12 页
回复总数  227
1  2  3  4  5  6  7  8  9  10 ... 12  
2020-08-30 00:57:13 +08:00
回复了 Newyorkcity 创建的主题 问与答 这段生产者消费者的代码在多线程中可能存在啥问题?
重新看了下 Monitor 的源码,更正一下,是会存在 @jimages 所说的, 当持有锁的线程 A(push 方法)调用 notify()后 并退出同步代码块时,会释放持有的锁,此时唤醒的堵塞线程 B (在 wait() 处的线程)重新争抢锁,是有可能会被新来的线程 C 调用 pop() 抢到锁的,此时 C 执行完毕后,锁释放,若恰好轮到线程 B 获得了锁,此时队列已经空了,不满足条件,执行则会报错,因此应该修改为:

while (queue.size() <= 0) {
wait();
}

在该处进行死循环判断。
2020-08-29 19:55:52 +08:00
回复了 Newyorkcity 创建的主题 问与答 这段生产者消费者的代码在多线程中可能存在啥问题?
@jimages synchronized 的 monitor 中,线程 A 调用 notify() 后,默认策略是从 WaitSet 队列内拿出被堵塞的线程,插入 EntrySet 队列头,随后线程 A 执行完毕,便会去 EntrySet 拿出堵塞的线程来唤醒执行,所以不存在你说的被 [新来的 pop 线程] 拿到了锁
2020-07-17 22:48:17 +08:00
回复了 Barnard 创建的主题 Android [慎重提醒] 小米 65W 氮化镓充电头把联想小新 pro13 冲坏了主板
蓝瘦,我的 MacbookPro 也很有可能是小米充电器搞坏的主板,当天第一次用小米的 GAN 充电器,然后电脑就发生了休眠自动重启的问题,必现,拿去苹果店,说是主板有问题
2020-07-15 16:27:05 +08:00
回复了 Evilk 创建的主题 PHP 和第三方对接,遇到点问题,求大佬解惑
解决方式是: 把你们的 SSL 正式跟中间证书合并, 有在线合并证书的网站,搜下就有
2020-07-15 16:23:37 +08:00
回复了 Evilk 创建的主题 PHP 和第三方对接,遇到点问题,求大佬解惑
应该是你们的 SSL 证书缺失中间证书的问题, Java 、Android WebView 不支持自动去找中间证书,Mac 、Window 、iOS 都支持。

所以只会在 Java Api 调用 / Android WebView 访问 时会发生
最后三种商品, 你是指以订单创建时间来倒序算,三种商品?

如果是的话,你这样是没法用一条 sql 查出的,你只能分开先查到用户的三件商品是什么了
分子
2020-04-28 22:07:55 +08:00
回复了 LinJunzhu 创建的主题 问与答 SpringBoot 项目对外的请求全部走了系统网络代理
项目是在 IDEA 内运行的, 尝试打成 jar 包,直接运行 jar 包跑起项目,对外的流量依旧是走了系统代理
这是因为 Android 的 webview 不支持自动下载 SSL 证书的中间证书,所以需要你的 SSL 证书把中间证书也整合进去
@also24

我自己实现过 HTTP 代理服务,所以对 HTTP 协议自认为还是理解的。

你说的 request body,我完全懂,并没有误会成 object -> request body。

为什么不想直接对 request body 进行签名,是因为部分 Http 库并不支持直接设置 json string 作为 request body,而是通过设置对象,再由 Http 库自己转为 json string -> request body。

因为想要一个约定俗成的方案,所以想看看大家的做法,现在我知道了哈哈

非常感谢你的答复 :)
@index90

我自己实现过 HTTP 代理服务,所以对 HTTP 协议自认为还是理解的。

你说的 request body,我完全懂,并没有误会成 object -> request body。

为什么不想直接对 request body 进行签名,是因为部分 Http 库并不支持直接设置 json string 作为 request body,而是通过设置对象,再由 Http 库自己转为 json string -> request body。

因为想要一个约定俗成的方案,所以想看看大家的做法,现在我知道了哈哈

非常感谢你的答复 :)
@fkdog 搜索了下,so 确实可以反编译, 但这不是 API 不加任何防护的理由:)
@also24 只能说你考虑不周到...
@index90 更正: payload 为 request body
@index90 你这个方案没有把 payload 放进去生成 Signature 的逻辑是吧?

其实我纠结的点在于:

若是在 application/json 的基础上进行交互

1、若 payload 内的 value 为数组、json 对象 时,那么就递归遍历排序, 这就满足需求了,但是在网上也没看到这样的实现方案,大家的 value 都是简单类型,所以不确定这样的实现是否合理
2、忽略 value 为数组、json 对象的逻辑计算,这就跟你的方案差不多。

所以才发了贴,问下大家的做法 :)
@fkdog Android 内的 so 可反不出来。

若客户端有 [不想将 API 简单的被暴露出去调用] 需求,这个就有用了,如 酒店类 APP 拿房价的接口
@geelaw

>这两个和你说的场景不同,考虑 A 公司向 B 用户通过支付宝收款,则收款请求是 A 的服务器发出的而不是 B 的设备发出的。要求 A 进行消息认证的目的是为了确保收款请求确实是 A 的意思而不是别人栽赃。

那我们回到这个场景,微信支付商户文档也是对参数进行了键值对的排序组合。

若 参数值为 一个 json 对象,而非基本类型(String, int),该如何做解析?
@index90

你看我上面的回复,就能看到,我指出了 JSON 文本,和 JSON 对象(各个语言有各自的类型),我对 http 的协议还是蛮熟悉的 :)

至于为什么我一直在说 json, 是因为现在 API 交互中, 双方基本约定成俗为 content_type: application/json

直接对 request body 进行验签不可取,还是那句话,hash key 是无序的,不同语言、不同库 解析和反解析,顺序不一定一致。

你可以看下微信支付商户的 API 文档: [https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_3] 也是进行 键值对的 排序组合, 只不过微信支付的 API 参数 value,都是基本类型
@also24 数组的有序性我倒是不担心, 唯一疑惑的点就在于 value 为对象时,该如何确保 客户端和服务端生成 sign 的逻辑是一致的。

因为哈希对象的 key 是无顺序的,同一段 json 文本,在最终解析出来的顺序是可能不一致的;

若 value 为对象,那么客户端在生成 token 时,该 value 转换为 json 文本是:

"{\"a\":\"a\",\"b\":\"b\"}"

服务端在生成 token 时,该 value 转换为 json 文本可能是:

"{\"b\":\"b\",\"a\":\"a\"}"

所以最终会导致验签失败。

我能想到的就是对 value 为复杂对象时,也进行 key=value 的形式排序,如此递归下去
@Vegetable 这也是我一开始的想法,但在网上搜索了好一阵,都没有个约定说怎么做,所以上来问问大家的做法。
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   922 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms · UTC 21:49 · PVG 05:49 · LAX 13:49 · JFK 16:49
Developed with CodeLauncher
♥ Do have faith in what you're doing.