V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Aruforce  ›  全部回复第 7 页 / 共 20 页
回复总数  391
1 ... 3  4  5  6  7  8  9  10  11  12 ... 20  
@ifwangs 好的谢谢大佬
@ifwangs 在商户平台 不能关联网站应用...只能关联 app 小程序 公众号这些。。。

那我网站接入 H5 支付 可以任意使用这些 appId 么还是只能用公众号的 appId ?

如果只能用公众号的 appId 。。。那我支付的域名是不是要和公众号做些什么关联操作
@ifwangs
开放平台的网站应用是不支持微信支付的-

这一句有缘有么?有文档么?

除此之外,
我问了一些其他人:支付吊起还是在网站应用,但是服务端统一下单时要用公众号的 appId 而不是网站应用的 appId,而我在公众号上又没看到在哪里进行关联,我猜测这个是一个网站假借公众号身份来下的单;

目前我还测试过...这是不是标准做法
@basstk 这些都做了。。。除了这些还要做 appId 和 mchId 的关联。。。。g 关联这一步走不下去。。。
@Xusually 有可能是这种情况...但是也没看到公告说不再支持这种情况
@basstk 微信商户平台在绑定开放平台的网站应用 appId 的时候 提示当前商户号暂不支持关联该类型的 AppId


但是我看有手机网站在用微信 H5 支付的。。。
@tikazyq 开放平台早就交过了.... 是想弄个手机网站然后接入微信的 H5 支付
微信客服搞死我吧...躺平任草了....
2020-06-28 16:28:02 +08:00
回复了 tctc4869 创建的主题 Java Java 有哪些基于应用层通信协议的框架?
netty 好像也有 websocket 相关的 Handler 的吧 比如 WebSocketServerProtocolHandler 这个你看看能不能用?
2020-06-19 22:29:00 +08:00
回复了 lbmjsls1 创建的主题 Java Java web server http 请求的一个疑惑
你说这个 web server 不会是 web 容器吧?
2020-06-19 22:02:13 +08:00
回复了 einsdisp 创建的主题 程序员 涉及金钱存储或计算操作时,你们一般都使用什么数据类型
存储用分…计算的话最后用减……
2020-06-17 08:51:35 +08:00
回复了 FireCat 创建的主题 Java Java 构造函数不要放业务逻辑?
鬼知道什么反射类工具会调用类的构造函数…这种情况下的调用大部分不是你想要的
2020-06-16 18:35:55 +08:00
回复了 cutlove 创建的主题 互联网 钉钉生态程序员女装带货
@sunjourney 看来我还是个活僵尸了....女装是真的恶心...
2020-06-15 11:53:50 +08:00
回复了 atfeel 创建的主题 Android 个人开发的 app,升级流量的问题如何解决?
CDN 或者应用市场?
C 机器记录到的请求 ip 要是 A 机器的 ip 。

这个 NGINX 实现不了吧?
2020-06-11 17:36:39 +08:00
回复了 MarcusHo 创建的主题 NGINX nginx 反向代理报 js 错误
你这是 Js 的问题啊重新编译部署吧
2020-06-08 09:43:35 +08:00
回复了 Aruforce 创建的主题 程序员 NIO 如下代码怎么绕过死锁?还是说我写的不对?如下代码
@arloor
0. Wrapper 这条路 实在没走通;
1. 遵从你的建议...serverSocketChannelSelector 不要直接给了放缓存对队列...socketChannelSelector 自己来拿吧...
3. 但是 socketChannelSelector 有空转的问题而且如果 blockingDeque 缓存的比较多的话...感觉有问题

```
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.*;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.LinkedBlockingDeque;

public class NIO2 {
private static volatile boolean keepRunning = true;
private static LinkedBlockingDeque<SocketChannel> blockingDeque = new LinkedBlockingDeque<SocketChannel>();
public static void main(String[] args) throws Exception {
ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
serverSocketChannel.configureBlocking(false);
serverSocketChannel.bind(new InetSocketAddress(8090), 128);
Selector selector = Selector.open();
serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);
Selector socketChannelSelector = Selector.open();
new Thread(new Runnable() {
@Override
public void run() {
try {
while (keepRunning) {
int select = selector.select();
if (select > 0) {
Set<SelectionKey> selectedKeys = selector.selectedKeys();
Iterator<SelectionKey> iterator = selectedKeys.iterator();
while (iterator.hasNext()) {
SelectionKey next = iterator.next();
if (next.isValid()) {
if (next.isAcceptable()) {
SocketChannel accept = ((ServerSocketChannel) next.channel()).accept();
accept.configureBlocking(false);
blockingDeque.add(accept);
}
} else {
socketChannelSelector.keys().remove(next);
}
iterator.remove();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
try {
while (keepRunning) {
if (!blockingDeque.isEmpty()) {
blockingDeque.removeIf(value->{
try {
value.register(socketChannelSelector,SelectionKey.OP_READ|SelectionKey.OP_WRITE);
} catch (ClosedChannelException e) {
e.printStackTrace();
return false;
}
return true;
});
}
// 又是在空转。。。
int select = socketChannelSelector.select(1);
if (select > 0) {
Set<SelectionKey> selectedKeys = socketChannelSelector.selectedKeys();
Iterator<SelectionKey> iterator = selectedKeys.iterator();
while (iterator.hasNext()) {
SelectionKey next = iterator.next();
if (next.isReadable()) {

} else if (next.isWritable()) {
ByteBuffer byteBuffe = ByteBuffer.allocate(4);
int l = (int) (System.currentTimeMillis() / 1000L + 2208988800L);
byteBuffe.put(fromInt(l));
byteBuffe.flip();
((SocketChannel) next.channel()).write(byteBuffe);
((SocketChannel) next.channel()).close();
}
iterator.remove();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();

}

public static byte[] fromInt(int i) {
byte[] result = new byte[4];
result[3] = (byte) (i);
result[2] = (byte) (i >> 8);
result[1] = (byte) (i >> 16);
result[0] = (byte) (i >> 24);
return result;
}

public static int fromByteArray(byte[] bytes) {
if (bytes.length != 4) {
throw new IllegalArgumentException("bytes array length = " + bytes.length);
}
//
int a = bytes[3] & 0x000000ff;
a |= (bytes[2] << 8) & 0x0000ffff;
a |= (bytes[1] << 16) & 0x00ffffff;
a |= (bytes[0] << 24) & 0xFFffffff;
return a;
}
}
```
2020-06-05 13:13:40 +08:00
回复了 Aruforce 创建的主题 程序员 NIO 如下代码怎么绕过死锁?还是说我写的不对?如下代码
@MoHen9 主 ServerSocketChannel accept 的 socketChannel 向 从 selector registe 的时候会碰到 锁竞争。。。 我不知道怎么绕过去 从 selector.wakeup() 并不好用 能注册上是运气好 CPU 先执行了主 Selector 的线程...还有像一部份没办法注册上的。。。
从 selector.select(1) 这样 其实也不对...如果主 selector accept 的 keyset 很大的话 就走不下去了
2020-06-05 13:07:35 +08:00
回复了 Aruforce 创建的主题 程序员 NIO 如下代码怎么绕过死锁?还是说我写的不对?如下代码
@arloor socketchannelSelector 不需要处理 accept 啊... serverSocketChannel 不需要处理 read write 。。。

你说的 reator 模式 ( 1 个线程循环处理 selector.selectedKeys 处理好 accept 及 registe 并且将 read/write dispatch 给线程池来处理)

我是想把 所有的 socketchannel 的 read/write 交给另一个 selector... 但是碰到了死锁。。。想写个 Wrapper 但是没写出来
1 ... 3  4  5  6  7  8  9  10  11  12 ... 20  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2777 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 13:21 · PVG 21:21 · LAX 05:21 · JFK 08:21
Developed with CodeLauncher
♥ Do have faith in what you're doing.