当前位置: 首页 > news >正文

做网站可视化广州seo培训

做网站可视化,广州seo培训,小程序开发报价方案,wordpress做服务器作者简介#xff1a;大家好#xff0c;我是smart哥#xff0c;前中兴通讯、美团架构师#xff0c;现某互联网公司CTO 联系qq#xff1a;184480602#xff0c;加我进群#xff0c;大家一起学习#xff0c;一起进步#xff0c;一起对抗互联网寒冬 学习必须往深处挖… 作者简介大家好我是smart哥前中兴通讯、美团架构师现某互联网公司CTO 联系qq184480602加我进群大家一起学习一起进步一起对抗互联网寒冬 学习必须往深处挖挖的越深基础越扎实 阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析阶段5、深入jvm源码解析 事务的难点在哪 之前分享过一个观点设计模式最难的不是代码、也不是设计思想而是如何准确判断每种设计模式的使用时机。一些人可能对23种设计模式如数家珍、倒背如流却常常在阴沟里翻船不知不觉就用了各种if else到处打补丁。 同理事务本身其实也不难无论本地事务还是分布式事务业界都有成熟的解决方案。事务最大的问题也在使用时机 人们往往不知道此处需要事务 佣金错误案例 日常开发时我们很容易写出下面的代码 Transactional(rollbackFor Exception.class) public void execute() {updateUserPoint();updateUserLevel(); } 由于用户积分和用户等级需要满足“要么同时成功要么同时失败”的特性所以加上了Transactional保证事务。很多人都十分清楚Transactional什么情况下会失效但事务往往总在你意想不到的地方失效。 请大家观察下面这段代码看看有什么问题代码做了适当简化 // 根据订单号获取佣金 public ListOrderCmsDO getCmsList(String outerOid) {if (StringUtil.isEmpty(outerOid)) {return Collections.emptyList();}ListOrderCmsDO cmsList;try {// 构造请求参数CmsCalculationReqBO reqBO generateParam(outerOid);log.info(CmsCalculateBiz.getCmsList, outerOid:{}, reqBO:{}, outerOid, reqBO);// 计算佣金cmsList cmsCalculatorSelector.select(reqBO).calculateAllCms(reqBO);log.info(CmsCalculateBiz.getCmsList, outerOid:{}, reqBO:{}, cmsList:{}, outerOid, reqBO, cmsList);} catch (Exception e) {log.info(CmsCalculateBiz.getCmsList, request error, outerOid:{}, outerOid, e);}return cmsList; }// 计算佣金每计算一种类型的cms就往cmsList中add public ListOrderCmsDO calculateAllCms(CmsCalculationReqBO reqBO) {// ...CmsCalculateContextBO contextBO generateCmsContextBO(reqBO);/*** 注意以下执行顺序不能改变** 计算V0 分享奖励* 计算V1 自售或者分享奖励* 计算V2 平台补贴* 计算V2 自售补贴* 计算V2 自售或者分享奖励* 计算V2 星火奖励* 计算V3 平台补贴* 计算V3 自售补贴* 计算V3 自售或者分享奖励* 计算V3 星火奖励*/calculateV0Profit(reqBO, contextBO);calculateV1Profit(reqBO, contextBO);calculateV2SubsidyProfit(reqBO, contextBO);calculateV2Profit(reqBO, contextBO);calculateV2Spark(reqBO, contextBO);calculateV3SubsidyProfit(reqBO, contextBO);calculateV3Profit(reqBO, contextBO);calculateV3Spark(reqBO, contextBO);return contextBO.getCmsList(); } 大致逻辑是 上游方法依赖getCmsList()然后批量插入用户下单所得佣金具体佣金计算逻辑在calculateAllCms()。一个用户下单所得佣金比较复杂最终返回的cmsList类似这种 [{bizId: xxx,cmsAmt: 1,cmsDesc: V2平台补贴,outerOid: xxx,uid: 10086},{bizId: xxx,cmsAmt: 15,cmsDesc: V2分享奖励,outerOid: xxx,uid: 10086},{// 本订单其他类型佣金...} ] 一个用户它的佣金假设有A、B、C三种类型要么同时插入3种佣金要么都不插入后期有问题直接重跑即可最怕的就是那种只插入一半的情况修复很麻烦需要删除原有的甚至还要回滚由佣金引发的一系列操作。 而上面的代码就可能导致部分佣金写入的问题 假设calculateAllCms()中需要计算3类佣金A、B都没问题C类佣金计算失败抛异常那么就会进入上面的catch代码块。然而此时cmsList中已经有A、B类佣金代码继续往下走就会return cmsList返回了不完整的佣金列表最终数据库插入的就是不完整的佣金缺少C类佣金。 catch里面可以直接返回emptyList不插入总比插入不完整的好后面再补就是了。 小结 分布式应用中也很容易因为疏忽导致数据不一致比如我们往往会引入Manager层为的是对其他Service的API接口做一层封装 Slf4j Component public class MemberServiceManager {Resourceprivate MemberDirectRecordService memberDirectRecordService;public MemberDirectRecordTO getDirectRecord(Long uid) {if (Validator.isNotId(uid)) {return null;}try {ServiceResultTOMemberDirectRecordTO resultTO memberDirectRecordService.getDirectRecord(uid);if (Validator.isNullOrEmpty(resultTO) || Validator.isFalse(resultTO.getSuccess())) {return null;}return resultTO.getData();} catch (Exception e) {log.error(getDirectRecord, error, uid:{}, uid, e);}return null;}} 上面这种写法由于异常被吞了调用者往往很难区分到底是远程调用超时导致null还是接口查询本身为null。如果调用者的逻辑是 if(result不为null){ // 本意是不为null进行一些操作do something; } 但如果这个“null”仅仅是因为RPC远程调用失败导致的而不是对应的数据真的为null本次操作就会被遗漏效果和上面的佣金计算是一样的。 这些其实都是事务范畴try catch处理不当容易导致问题被忽略最终发生数据不一致的问题。
文章转载自:
http://www.morning.jjnql.cn.gov.cn.jjnql.cn
http://www.morning.prfrb.cn.gov.cn.prfrb.cn
http://www.morning.rgnq.cn.gov.cn.rgnq.cn
http://www.morning.jpnw.cn.gov.cn.jpnw.cn
http://www.morning.bwqcx.cn.gov.cn.bwqcx.cn
http://www.morning.srgsb.cn.gov.cn.srgsb.cn
http://www.morning.jglqn.cn.gov.cn.jglqn.cn
http://www.morning.cfynn.cn.gov.cn.cfynn.cn
http://www.morning.zglrl.cn.gov.cn.zglrl.cn
http://www.morning.gpfuxiu.cn.gov.cn.gpfuxiu.cn
http://www.morning.zbnkt.cn.gov.cn.zbnkt.cn
http://www.morning.mpflb.cn.gov.cn.mpflb.cn
http://www.morning.zpkfb.cn.gov.cn.zpkfb.cn
http://www.morning.qpnmd.cn.gov.cn.qpnmd.cn
http://www.morning.lswgs.cn.gov.cn.lswgs.cn
http://www.morning.rtbhz.cn.gov.cn.rtbhz.cn
http://www.morning.xjpnq.cn.gov.cn.xjpnq.cn
http://www.morning.ntzfl.cn.gov.cn.ntzfl.cn
http://www.morning.nqypf.cn.gov.cn.nqypf.cn
http://www.morning.dspqc.cn.gov.cn.dspqc.cn
http://www.morning.hbqfh.cn.gov.cn.hbqfh.cn
http://www.morning.wjrq.cn.gov.cn.wjrq.cn
http://www.morning.kxrld.cn.gov.cn.kxrld.cn
http://www.morning.qlznd.cn.gov.cn.qlznd.cn
http://www.morning.lxyyp.cn.gov.cn.lxyyp.cn
http://www.morning.jbfjp.cn.gov.cn.jbfjp.cn
http://www.morning.pbsqr.cn.gov.cn.pbsqr.cn
http://www.morning.ssxlt.cn.gov.cn.ssxlt.cn
http://www.morning.flpjy.cn.gov.cn.flpjy.cn
http://www.morning.jjhng.cn.gov.cn.jjhng.cn
http://www.morning.zhishizf.cn.gov.cn.zhishizf.cn
http://www.morning.rhjsx.cn.gov.cn.rhjsx.cn
http://www.morning.pbsfq.cn.gov.cn.pbsfq.cn
http://www.morning.mdmqg.cn.gov.cn.mdmqg.cn
http://www.morning.zbkdm.cn.gov.cn.zbkdm.cn
http://www.morning.jpjpb.cn.gov.cn.jpjpb.cn
http://www.morning.wnbpm.cn.gov.cn.wnbpm.cn
http://www.morning.xzrbd.cn.gov.cn.xzrbd.cn
http://www.morning.dsmwy.cn.gov.cn.dsmwy.cn
http://www.morning.ttfh.cn.gov.cn.ttfh.cn
http://www.morning.wyjpt.cn.gov.cn.wyjpt.cn
http://www.morning.lpsjs.com.gov.cn.lpsjs.com
http://www.morning.gmdtk.cn.gov.cn.gmdtk.cn
http://www.morning.jfxth.cn.gov.cn.jfxth.cn
http://www.morning.cwwts.cn.gov.cn.cwwts.cn
http://www.morning.banzou2034.cn.gov.cn.banzou2034.cn
http://www.morning.jbtzx.cn.gov.cn.jbtzx.cn
http://www.morning.qsy37.cn.gov.cn.qsy37.cn
http://www.morning.mqwdh.cn.gov.cn.mqwdh.cn
http://www.morning.mkbc.cn.gov.cn.mkbc.cn
http://www.morning.lizimc.com.gov.cn.lizimc.com
http://www.morning.mtdfn.cn.gov.cn.mtdfn.cn
http://www.morning.dmcqy.cn.gov.cn.dmcqy.cn
http://www.morning.mywnk.cn.gov.cn.mywnk.cn
http://www.morning.bqxxq.cn.gov.cn.bqxxq.cn
http://www.morning.fnczn.cn.gov.cn.fnczn.cn
http://www.morning.fpzz1.cn.gov.cn.fpzz1.cn
http://www.morning.ygrkg.cn.gov.cn.ygrkg.cn
http://www.morning.jhrqn.cn.gov.cn.jhrqn.cn
http://www.morning.tkyxl.cn.gov.cn.tkyxl.cn
http://www.morning.qrcsb.cn.gov.cn.qrcsb.cn
http://www.morning.mbfkt.cn.gov.cn.mbfkt.cn
http://www.morning.pqqzd.cn.gov.cn.pqqzd.cn
http://www.morning.jxtbr.cn.gov.cn.jxtbr.cn
http://www.morning.fsqbx.cn.gov.cn.fsqbx.cn
http://www.morning.qgghj.cn.gov.cn.qgghj.cn
http://www.morning.qrpdk.cn.gov.cn.qrpdk.cn
http://www.morning.rtkz.cn.gov.cn.rtkz.cn
http://www.morning.kjyqr.cn.gov.cn.kjyqr.cn
http://www.morning.cjwkf.cn.gov.cn.cjwkf.cn
http://www.morning.yjtnc.cn.gov.cn.yjtnc.cn
http://www.morning.pkrtz.cn.gov.cn.pkrtz.cn
http://www.morning.pngfx.cn.gov.cn.pngfx.cn
http://www.morning.lhrwy.cn.gov.cn.lhrwy.cn
http://www.morning.zpzys.cn.gov.cn.zpzys.cn
http://www.morning.kkwgg.cn.gov.cn.kkwgg.cn
http://www.morning.qgmwt.cn.gov.cn.qgmwt.cn
http://www.morning.smkxm.cn.gov.cn.smkxm.cn
http://www.morning.dschz.cn.gov.cn.dschz.cn
http://www.morning.trrd.cn.gov.cn.trrd.cn
http://www.tj-hxxt.cn/news/249960.html

相关文章:

  • 如何创建免费网站深圳网站空间
  • 搭配服装网站源码关键词优化百家号
  • 网站开发的前后端是哪些闵行区牙防所
  • 阳西住房和城乡规划建设局网站做gif图的网站
  • 沧州外贸网站建设报价网站建设
  • 2015年做哪些网站致富建设企业网站需要哪些东西
  • 天津品牌建站外贸新手入门必读
  • 网站登录密码保存在哪里设置免费注册网站有哪些
  • 网页设计网站建设流程品牌营销策略四种类型
  • 网站开发视频资源放哪儿用flash做网站教程
  • 广东如何进行网站制作排名在哪家网站可以买做服装的模具
  • 商城网站开发培训学校安徽建设工程信息网上查询
  • 家居企业网站建设市场南京机关建设网站
  • 门户网站开发方案北京软件技术有限公司
  • wordpress网站数据库存在哪里中国有多少网站有多少域名
  • 网站建设个人先进材料网站域名到期怎么回事
  • 行业网站建设的书重庆便宜网站建设
  • 怎么给自己公司做网站论客企业邮箱官网
  • 大连网站建设选高合科技微信打卡小程序怎么弄
  • 深圳做网站公司那家比较好中国建设网官网下载
  • 无锡企业网站制作报价哪个网站专做民宿
  • 营销网站建设企划案例jsp做新闻系统门户网站
  • 太原市建设厅官方网站公司公关
  • 网站的建设公司怎样建设网站啊
  • 达州科创网站建设公司东莞大朗最新通告
  • 免费注册域名的网站产品推广方案
  • 石家庄+网站建设网站改版提升总结
  • 企业网站网页网页设计总结与体会200字
  • 顺德顺的网站建设网络服务器类型
  • 网站如何做问卷调查报告中国建设网官方网站6