Ray聊天记录
由于工作变动,Ray的文档、示例没有及时更新,深表歉意。在Ray升级后,性能较几个月前有了非常大的提升,也更具易用性。这是QQ交流群里大家的聊天记录,跟大家分享一下(由于时间仓促群里大家的聊天记录没有整理,请见谅)。
-----
Evenstar 17:45:57
demo里面业务数据存到哪儿去了呢?真实项目中应该在什么地方进行业务数据的读写呢
无名 18:05:17

在这里写插入数据库的操作
无名 18:05:23
@Evenstar
Evenstar 18:08:47
我现在有一套基于mysql的业务数据库,如果想要用ray来进行改造,业务数据还是存在原数据库里面,那mongodb又是拿来干嘛的呢?
无名 18:09:12
存事件
无名 18:09:30
内存状态变动的事件
Evenstar 18:09:49
用于灾后恢复?
无名 18:11:33
你可以先了解下Event Sourcing的概念
Evenstar 18:17:06
我大概看了以下概念,就是不知道真实项目中哪些应该定义为事件,比如我原来业务系统中有一套报警处理流程的业务,报警发生后,先被人接收了,后来他上传给了其他人,其他人又处理了,这个感觉有点像事件溯源里面描述的场景,那我是应该把这些处理流程定义为事件么?我原来mysql业务系统里面专门有一张表来存储这些变更过程,定义为事件存储到mongodb以后,原来的mysql业务数据库里面流程表还需要存储么?
Evenstar 18:17:53

最新的代码要装core 2.1哇?
、陈依(470923079) 18:36:44
什么时候完善下文档之类的。
、陈依(470923079) 18:36:57
来个稳定的生产版本
|
无名 18:37:59 我已经用在生产环境了 |
|
Evenstar 18:46:54
客户端里面这几句具体是干嘛呢?起什么作用 |
|
无名 18:50:53 启用消息队列监听 |
|
Evenstar 18:55:43 监听服务器pub的消息哇?监听消息的回调函数呢?或者说监听消息的输出在哪儿呢 |
|
无名 19:00:01 在Handle里 |
|
Evenstar 19:05:45
这里么?这里又远程调用服务器的grain,是触发OnEventDelivered这个方法? |
|
Evenstar 19:19:45 好懵逼呀,客户端调用grain的AddAmount,然后grain调用RaiseEvent发布事件,然后这个事件到AccountDb这个的Process了? |
|
无名 19:30:06
|
|
无名 19:30:40 @Evenstar 这3个都会收到事件消息 |
|
无名 19:31:06 Db同步到数据库,Flow处理后续的业务逻辑,Rep提供副本功能 |
|
Evenstar 19:34:21 Db是做自己的业务数据持久化,Flow里面如果是充值,那就不必做处理,如果是转账AccountDb里面只是把原账户金额减了,Flow里面来做目标账户的金额增加操作? |
|
夜夜 19:37:10 你好,无名。 |
|
无名 19:37:43 是的 |
|
无名 19:37:50 @夜夜 好啊 |
|
夜夜 19:38:02 我rabbitmq和ol扩展streams后只有500qps,单单测试rabbitmq有1w qps |
|
Evenstar 19:38:43 为什么不是直接在原账户的grain实例里面激活目标账户的grain直接增加金额呢?这么设计的目的是什么呀 |
|
无名 19:38:47 SHAPE \* MERGEFORMAT 姿势不对 |
|
无名 19:39:14 @Evenstar 如果A减了金额,突然断电,B的金额没有增加呢? |
|
夜夜 19:39:43 完全参考Azure Queues写的啊 |
|
无名 19:40:27 @夜夜 我自己的框架,一秒钟几万qps |
|
Evenstar 19:40:32 这个设计如何避免这种情况的发生呢? |
|
无名 19:40:34 也是rabbitmq |
|
无名 19:41:07 @Evenstar 最终一致性,只要A执行成功,那么消息一定会流转到flow里面 |
|
无名 19:41:18 然后操作B |
|
夜夜 19:41:24 你的rabbitmq是Linux上的吗 |
|
无名 19:41:32 嗯 |
|
夜夜 19:42:43 我现在是一脸懵逼,单单 |
|
Evenstar 19:43:13 是A执行成功以后,消息才会到flow? |
|
无名 19:43:21 是的 |
|
Evenstar 19:43:46 那A执行成功以后,断电了,系统重启以后,flow还能收到这个消息? |
|
无名 19:44:05 能啊 |
|
夜夜 19:44:45 memory的 streams也不是很快 在我的i5四核上,才2000qps.严重怀疑姿势不对 |
|
Evenstar 19:45:18 是消息队列对消息的可靠保障提供的功劳哇? |
|
无名 19:45:27 我不用stream的 |
|
夜夜 19:45:30 用的官方文档的隐式订阅 |
|
无名 19:45:44 不依赖消息队列,依赖事件版本号 |
|
Evenstar 19:46:44 哦,因为事件已经到mongodb做了持久化,所有重启以后flow还能收到消息? |
|
夜夜 19:47:10 溯源 |
|
夜夜 19:47:20 首次启动的时候 |
|
无名 19:47:52 我的框架现在性能已经非常牛了 |
|
夜夜 19:47:55 stream |
|
夜夜 19:48:03 我也不打算用了 |
|
夜夜 19:48:23 搞不定 |
|
Evenstar 19:49:14 好吧,先不纠结这个可靠性了,AccountRep这个副本收到事件消息又干嘛了呢 |
|
无名 19:50:16 这个正常用不到,这个是读写分离用的 |
|
夜夜 19:50:16 测试了好几天了。一开始rabbitmq没升级到预览版,一到创建链接就报地址错误,我都开始慌了 |
|
无名 19:50:32 Account提供写入,AccountRep提供查询 |
|
夜夜 19:51:27 大佬的框架我也研究了,很给力 |
|
夜夜 19:52:16 ol的event sourcing |
|
Evenstar 19:52:23 客户端查询的时候,我看Account里面有GetBalance,AccountRep里面也有GetBalance,什么机制导致客户端会调用到AccountRep里面的方法呢? |
|
夜夜 19:52:47 实现,只提供了两个接口,一个read 一个write |
|
无名 19:53:15 @Evenstar 手动控制啊 |
|
无名 19:53:26 这个业务逻辑要手动精确控制的 |
|
Evenstar 19:53:26 rep收事件消息是为了同步Account里面的数据哇? |
|
无名 19:53:34 是啊 |
|
夜夜 19:54:04 也可以避免单个grain压力太大 |
|
无名 19:54:46 SHAPE \* MERGEFORMAT 我考虑的应用场景很多的 |
|
Evenstar 19:54:46
这个地方我看还是直接调用的Account实例,实例里面是通过AlwaysInterleave这个属性来控制这个请求去副本调用么? |
|
无名 19:55:17 这里没有用到Rep |
|
无名 19:55:32 我只是写个例子,告诉可以进行读写分离操作 |
Evenstar 19:56:12
哦,那如果要用,是在客户端直接实例化rep实例去调用GetBalance?客户端来做这个精准控制?
无名 19:57:07
嗯
Evenstar 19:57:53
事件持久化不需要写代码来控制,只要注册了,就自动处理了么
夜夜 19:58:10
MongoDb写入性能怎么样,我用sqlserver qps只有1000
夜夜 19:58:39
我也是转账实例
夜夜 19:59:11
就是多加了个判断余额够不够
Evenstar 19:59:25
AlwaysInterleave 这个属性是干嘛的呀?
无名 19:59:44
你用的事务啊?
无名 19:59:58
我的事件插入,一秒钟插入十几万
无名 20:00:16
我用的postgresql
夜夜 20:00:30
你是批量吗
无名 20:01:26
事件不是批量的
无名 20:01:30
没法批量
Evenstar 20:02:57

整个流程里面,客户端注册这个是干嘛的呀?帮忙解答一下,感觉快理顺了
夜夜 20:05:25
是啊,难道是连接打开关闭上耗了性能?
无名 20:05:29
消息流转和做额外处理的
无名 20:05:59
比如转账了,可以在这里的LocalProcess里面发短信
无名 20:06:24
@夜夜 连接池无所谓的
夜夜 20:06:59
sqlserver性能也不至于这么差吧
夜夜 20:07:11
感觉又是姿势不对
无名 20:07:21
SHAPE \* MERGEFORMAT
你可以装个postgresql试试
Evenstar 20:08:01
在demo里面,服务器充值了,是服务器的AccountDb执行了AmountAddEventHandler事件以后,AccountCoreHandler才接收到消息?
夜夜 20:08:20
明天试试装个pg
夜夜 20:08:40
也是linux的吗
无名 20:08:42
@Evenstar 先到handler再到DB
无名 20:08:49
嗯
Evenstar 20:12:57
demo里面并没有做LocalProcess的实现,而是在SendToAsyncGrain里面执行了flow的tell又是在干嘛呢?
无名 20:13:33
把消息送达Flow
Evenstar 20:15:08
哦,那消息就是Account》AccountCoreHandler》AccountDb》AccountFlow,是这么个流程哇?
无名 20:16:55
Db,Flow一起执行的
Evenstar 20:23:18
其他流程大概清楚了,就这个AccountCoreHandler始终还是没明白,主要用于什么,是服务器做了操作通过mq来通知客户端么
无名 20:23:42
通过MQ来流转消息
Evenstar 20:24:08
为什么要到客户端来跑一圈来通知flow呢
Evenstar 20:32:45
@无名 谢谢大神的耐心解答,我觉得整个流程不写清楚,新手很难上手,看demo看不明白为什么要这样做,目的是什么,一个开源项目能不能活跃起来,新人很重要,大神对开源的东西好多都只看不用
无名 20:36:53
主要现在比较忙
无名 20:36:58
没空写文档
Evenstar 21:01:57
这安装不上咋回事呢
Evenstar 21:18:06
环境都安装好了,下周先摸索一下,谢谢@无名 指导了哈,以后有问题还要麻烦大神
Evenstar 22:39:57
@无名 睡了吗?再麻烦一下,我现在改造现有系统,第一步是将客户端大量的查询业务转移过来,只有很少量的数据写入操作,这种情况下,可能事件溯源主要用来记录客户端的操作日志,应该就不需要客户端注册mq了吧?
--
Ray框架交流QQ群:713485689
Evenstar 17:45:57
demo里面业务数据存到哪儿去了呢?真实项目中应该在什么地方进行业务数据的读写呢
无名 18:05:17
在这里写插入数据库的操作
无名 18:05:23
@Evenstar
Evenstar 18:08:47
我现在有一套基于mysql的业务数据库,如果想要用ray来进行改造,业务数据还是存在原数据库里面,那mongodb又是拿来干嘛的呢?
无名 18:09:12
存事件
无名 18:09:30
内存状态变动的事件
Evenstar 18:09:49
用于灾后恢复?
无名 18:11:33
你可以先了解下Event Sourcing的概念
Evenstar 18:17:06
我大概看了以下概念,就是不知道真实项目中哪些应该定义为事件,比如我原来业务系统中有一套报警处理流程的业务,报警发生后,先被人接收了,后来他上传给了其他人,其他人又处理了,这个感觉有点像事件溯源里面描述的场景,那我是应该把这些处理流程定义为事件么?我原来mysql业务系统里面专门有一张表来存储这些变更过程,定义为事件存储到mongodb以后,原来的mysql业务数据库里面流程表还需要存储么?
Evenstar 18:17:53
最新的代码要装core 2.1哇?
、陈依(470923079) 18:36:44
什么时候完善下文档之类的。
、陈依(470923079) 18:36:57
来个稳定的生产版本
|
无名 18:37:59 我已经用在生产环境了 |
|
Evenstar 18:46:54 客户端里面这几句具体是干嘛呢?起什么作用 |
|
无名 18:50:53 启用消息队列监听 |
|
Evenstar 18:55:43 监听服务器pub的消息哇?监听消息的回调函数呢?或者说监听消息的输出在哪儿呢 |
|
无名 19:00:01 在Handle里 |
|
Evenstar 19:05:45 这里么?这里又远程调用服务器的grain,是触发OnEventDelivered这个方法? |
|
Evenstar 19:19:45 好懵逼呀,客户端调用grain的AddAmount,然后grain调用RaiseEvent发布事件,然后这个事件到AccountDb这个的Process了? |
|
无名 19:30:06 |
|
无名 19:30:40 @Evenstar 这3个都会收到事件消息 |
|
无名 19:31:06 Db同步到数据库,Flow处理后续的业务逻辑,Rep提供副本功能 |
|
Evenstar 19:34:21 Db是做自己的业务数据持久化,Flow里面如果是充值,那就不必做处理,如果是转账AccountDb里面只是把原账户金额减了,Flow里面来做目标账户的金额增加操作? |
|
夜夜 19:37:10 你好,无名。 |
|
无名 19:37:43 是的 |
|
无名 19:37:50 @夜夜 好啊 |
|
夜夜 19:38:02 我rabbitmq和ol扩展streams后只有500qps,单单测试rabbitmq有1w qps |
|
Evenstar 19:38:43 为什么不是直接在原账户的grain实例里面激活目标账户的grain直接增加金额呢?这么设计的目的是什么呀 |
|
无名 19:38:47 SHAPE \* MERGEFORMAT 姿势不对 |
|
无名 19:39:14 @Evenstar 如果A减了金额,突然断电,B的金额没有增加呢? |
|
夜夜 19:39:43 完全参考Azure Queues写的啊 |
|
无名 19:40:27 @夜夜 我自己的框架,一秒钟几万qps |
|
Evenstar 19:40:32 这个设计如何避免这种情况的发生呢? |
|
无名 19:40:34 也是rabbitmq |
|
无名 19:41:07 @Evenstar 最终一致性,只要A执行成功,那么消息一定会流转到flow里面 |
|
无名 19:41:18 然后操作B |
|
夜夜 19:41:24 你的rabbitmq是Linux上的吗 |
|
无名 19:41:32 嗯 |
|
夜夜 19:42:43 我现在是一脸懵逼,单单 |
|
Evenstar 19:43:13 是A执行成功以后,消息才会到flow? |
|
无名 19:43:21 是的 |
|
Evenstar 19:43:46 那A执行成功以后,断电了,系统重启以后,flow还能收到这个消息? |
|
无名 19:44:05 能啊 |
|
夜夜 19:44:45 memory的 streams也不是很快 在我的i5四核上,才2000qps.严重怀疑姿势不对 |
|
Evenstar 19:45:18 是消息队列对消息的可靠保障提供的功劳哇? |
|
无名 19:45:27 我不用stream的 |
|
夜夜 19:45:30 用的官方文档的隐式订阅 |
|
无名 19:45:44 不依赖消息队列,依赖事件版本号 |
|
Evenstar 19:46:44 哦,因为事件已经到mongodb做了持久化,所有重启以后flow还能收到消息? |
|
夜夜 19:47:10 溯源 |
|
夜夜 19:47:20 首次启动的时候 |
|
无名 19:47:52 我的框架现在性能已经非常牛了 |
|
夜夜 19:47:55 stream |
|
夜夜 19:48:03 我也不打算用了 |
|
夜夜 19:48:23 搞不定 |
|
Evenstar 19:49:14 好吧,先不纠结这个可靠性了,AccountRep这个副本收到事件消息又干嘛了呢 |
|
无名 19:50:16 这个正常用不到,这个是读写分离用的 |
|
夜夜 19:50:16 测试了好几天了。一开始rabbitmq没升级到预览版,一到创建链接就报地址错误,我都开始慌了 |
|
无名 19:50:32 Account提供写入,AccountRep提供查询 |
|
夜夜 19:51:27 大佬的框架我也研究了,很给力 |
|
夜夜 19:52:16 ol的event sourcing |
|
Evenstar 19:52:23 客户端查询的时候,我看Account里面有GetBalance,AccountRep里面也有GetBalance,什么机制导致客户端会调用到AccountRep里面的方法呢? |
|
夜夜 19:52:47 实现,只提供了两个接口,一个read 一个write |
|
无名 19:53:15 @Evenstar 手动控制啊 |
|
无名 19:53:26 这个业务逻辑要手动精确控制的 |
|
Evenstar 19:53:26 rep收事件消息是为了同步Account里面的数据哇? |
|
无名 19:53:34 是啊 |
|
夜夜 19:54:04 也可以避免单个grain压力太大 |
|
无名 19:54:46 SHAPE \* MERGEFORMAT 我考虑的应用场景很多的 |
|
Evenstar 19:54:46 这个地方我看还是直接调用的Account实例,实例里面是通过AlwaysInterleave这个属性来控制这个请求去副本调用么? |
|
无名 19:55:17 这里没有用到Rep |
|
无名 19:55:32 我只是写个例子,告诉可以进行读写分离操作 |
Evenstar 19:56:12
哦,那如果要用,是在客户端直接实例化rep实例去调用GetBalance?客户端来做这个精准控制?
无名 19:57:07
嗯
Evenstar 19:57:53
事件持久化不需要写代码来控制,只要注册了,就自动处理了么
夜夜 19:58:10
MongoDb写入性能怎么样,我用sqlserver qps只有1000
夜夜 19:58:39
我也是转账实例
夜夜 19:59:11
就是多加了个判断余额够不够
Evenstar 19:59:25
AlwaysInterleave 这个属性是干嘛的呀?
无名 19:59:44
你用的事务啊?
无名 19:59:58
我的事件插入,一秒钟插入十几万
无名 20:00:16
我用的postgresql
夜夜 20:00:30
你是批量吗
无名 20:01:26
事件不是批量的
无名 20:01:30
没法批量
Evenstar 20:02:57
整个流程里面,客户端注册这个是干嘛的呀?帮忙解答一下,感觉快理顺了
夜夜 20:05:25
是啊,难道是连接打开关闭上耗了性能?
无名 20:05:29
消息流转和做额外处理的
无名 20:05:59
比如转账了,可以在这里的LocalProcess里面发短信
无名 20:06:24
@夜夜 连接池无所谓的
夜夜 20:06:59
sqlserver性能也不至于这么差吧
夜夜 20:07:11
感觉又是姿势不对
无名 20:07:21
SHAPE \* MERGEFORMAT
你可以装个postgresql试试
Evenstar 20:08:01
在demo里面,服务器充值了,是服务器的AccountDb执行了AmountAddEventHandler事件以后,AccountCoreHandler才接收到消息?
夜夜 20:08:20
明天试试装个pg
夜夜 20:08:40
也是linux的吗
无名 20:08:42
@Evenstar 先到handler再到DB
无名 20:08:49
嗯
Evenstar 20:12:57
demo里面并没有做LocalProcess的实现,而是在SendToAsyncGrain里面执行了flow的tell又是在干嘛呢?
无名 20:13:33
把消息送达Flow
Evenstar 20:15:08
哦,那消息就是Account》AccountCoreHandler》AccountDb》AccountFlow,是这么个流程哇?
无名 20:16:55
Db,Flow一起执行的
Evenstar 20:23:18
其他流程大概清楚了,就这个AccountCoreHandler始终还是没明白,主要用于什么,是服务器做了操作通过mq来通知客户端么
无名 20:23:42
通过MQ来流转消息
Evenstar 20:24:08
为什么要到客户端来跑一圈来通知flow呢
Evenstar 20:32:45
@无名 谢谢大神的耐心解答,我觉得整个流程不写清楚,新手很难上手,看demo看不明白为什么要这样做,目的是什么,一个开源项目能不能活跃起来,新人很重要,大神对开源的东西好多都只看不用
无名 20:36:53
主要现在比较忙
无名 20:36:58
没空写文档
Evenstar 21:01:57
这安装不上咋回事呢
Evenstar 21:18:06
环境都安装好了,下周先摸索一下,谢谢@无名 指导了哈,以后有问题还要麻烦大神
Evenstar 22:39:57
@无名 睡了吗?再麻烦一下,我现在改造现有系统,第一步是将客户端大量的查询业务转移过来,只有很少量的数据写入操作,这种情况下,可能事件溯源主要用来记录客户端的操作日志,应该就不需要客户端注册mq了吧?
Ray聊天记录的更多相关文章
- UvaLA 3938 "Ray, Pass me the dishes!"
"Ray, Pass me the dishes!" Time Limit: 3000MS Memory Limit: Unkn ...
- iOS聊天下拉刷新聊天记录的实现
1. 想法 最近在开发一个社交类app,要实现类似微信那种下拉刷新聊天记录的功能. 一般有两种实现方式: 1. 直接fetch一个entity的所有数据然后在内存中做filter,就是把所有聊天记录先 ...
- android微信聊天记录导出到电脑【微信安卓版技巧】
微信,对它又爱又恨!爱的是微信能替代很多手机通话短信,恨的是有些较早前的手机不能友好支持,比如ytkah之前用的i8000,挺上手的,就是没办法装微信,当时工作需要必须用微信,只好忍痛割爱买了个and ...
- iphone如何导出微信聊天记录到电脑?
有个小美眉买了个iphone,但发现自己就是一小白,很多功能都不会用,微信倒是用得挺上手的,可以晚上聊到三四点,流量直接飙升500MB.最近她说手机太卡了,问ytkah帮她整一下.拿起她的IPhone ...
- 如何使用iTunes与iTools导出微信聊天记录
.tocblock .tocblock .tocblock { margin-left: 2.25em; } .madoko .toc>.tocblock .tocblock { margin- ...
- 微信聊天记录查看器(程序+源码) - iOS版
本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4338643.html Updates [2016.10.14]感谢 ...
- 移动安全初探:窃取微信聊天记录、Hacking Android with Metasploit
在这篇文章中我们将讨论如何获取安卓.苹果设备中的微信聊天记录,并演示如何利用后门通过Metasploit对安卓设备进行控制.文章比较基础.可动手性强,有设备的童鞋不妨边阅读文章边操作,希望能激发大家对 ...
- ray与triangle/quad求交二三事
引擎中,ray与quad求交,算法未细看,但有求解二次方程,不解.ray与triangle求交,使用的是97年经典算法,仔细看过论文,多谢小武同学指点,用到了克拉默法则求解线性方程组.想模仿该方法,做 ...
- 借助无线路由器+2台笔记本+Windows桥接功能,成功绕过了微信聊天记录迁移的BUG
最近入了台iphone se,在迁移微信聊天记录的时候,遇到个BUG.它的迁移流程是这样的:需要将两台手机连接到同一个WIFI上面,然后新手机扫旧手机上面的二维码,来完成导入.中途遇到的问题是: 此时 ...
随机推荐
- 谷歌将为 Mac 和 Windows 用户推出新的备份和同步应用
据报道,谷歌将于 6 月 28 日面向 Mac 和 Windows 用户发布一款新的备份和同步应用(Backup and Sync app). Google 刚刚宣布将推出其备份和同步应用程序,该工具 ...
- Windows 10开发基础——文件、文件夹和库(二)
主要内容: 使用选取器打开和保存文件 关于文件.文件夹和库,如果深究其实还是有比较多的内容,我们这一次来学习一下选取器就收了.还有上篇博文中读写文本文件的三种方式可以细细体会一下. 文件选取器包含文件 ...
- 同城快递公司Postmates近日完成1亿美元融资,美国外卖餐饮迎来一波融资热潮
美国外卖市场尚未出现一家独大的巨头,一部分原因是与中国的外卖平台相比,在美国,外卖平台要克服的难题可能更多. 4个月之前才完成3亿美元融资的美国同城快递公司Postmates近日又完成1亿美元融资,估 ...
- win32界面程序开发,自制一个会自动销毁的提示框
思路:创建线程里面启动窗口,设置定时器关闭该窗口. 创建窗口几个步骤和一般窗口无异,注册.然后createwindow,之后showwinodw,然后消息循环. 在createwindow之后,获取到 ...
- 使用VC2005编译真正的静态Qt程序 good
首先,你应该该知道什么叫静态引用编译.什么叫动态引用编译.我这里只是简单的提提,具体的可以google一下. 动态引用编译,是指相关的库,以dll的形式引用库.动态编译的Exe程序尺寸比较小,因为相关 ...
- Docker笔记03-docker 网络模式
docker网络模式分为5种 Nat (Network Address Translation) Host other container none overlay 第一种 Nat模式 docker的 ...
- 机器学习Machine Learning(ML)
什么是机器学习 定义 对于某个任务T和表现的衡量P,当计算机程序在该任务T的表现上,经过P的衡量,随着经验E而增长,称计算机能够通过经验E来学习该任务.(Tom Mitchell) 举例而言,在跳棋游 ...
- QTcpSocket 对连接服务器中断的不同情况进行判定(六种情况,其中一种使用IsNetworkAlive API方法)
简述 对于一个C/S结构的程序,客户端有些时候需要实时得知与服务器的连接状态.而对于客户端与服务器断开连接的因素很多,现在就目前遇到的情况进行一下总结. 分为下面六种不同情况 客户端网线断开 客户端网 ...
- 微信公众号开发系列-13、基于RDIFramework.NET框架整合微信开发应用效果展示
1.前言 通过前面一系列文章的学习,我们对微信公众号开发已经有了一个比较深入和全面的了解. 微信公众号开发为企业解决那些问题呢? 我们经常看到微信公众号定制开发.微信公众平台定制开发,都不知道这些能给 ...
- 使用AnimateWindow来实现窗口淡入淡出(主要有四种动画,滚动,滑动,折叠或展开,和淡入淡出)
如果是在VC6下进行编译,应引入下面的预编译宏,注意放在windows.h的前面#undef WINVER #define WINVER 0x500为什么要引入上面的宏呢?看看winuse ...




