摘要:同一个站点内两个页面a.aspx和b.aspx。a.aspx里是一个服务器表单控件,其action指向的是b.aspx。本地测试是正常的。线上是nginx部署的,在提交表单时出现了上面的异常。
阅读全文
摘要:If Entity Framework can't figure out the primary key, it will generate a SELECT statement but it won't be able to create the according INSERT, UPDATE and DELETE statements.(如果EF找不到pk,它将生成一个selelct语句,但不会生成相应的增删改语句)
阅读全文
摘要:公众号支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付。应用场景有:
◆ 用户在微信公众账号内进入商家公众号,打开某个主页面,完成支付
◆ 用户的好友在朋友圈、聊天窗口等分享商家页面连接,用户点击链接打开商家页面,完成支付
◆ 将商户页面转换成二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付
阅读全文
摘要:FromBodyAttribute是一个特性,该特性指定操作参数仅来自传入 System.Net.Http.HttpRequestMessage 的实体正文。通俗点说,FromBodyAttribute要求被其修饰的参数,必须是序列化后的实体成员。
阅读全文
摘要:你还以为走路是世上最简单的事情呢?只不过是把一只脚放到另一只脚前面。但我一直很惊讶这些原本是本能的事情实际上做起来有多困难。而吃,吃也是一样的,有些人吃起东西来可困难了。说话也是,还有爱。这些东西都可以很难。--摘自蕾秋·乔伊斯《一个人的朝圣》
阅读全文
摘要:_ _
\. _(9> <6)_ ,/
\==_) (_==/
-'= ='-
阅读全文
摘要:Queue<T>以及List<T>这些泛型类不是线程安全的。在并发操作时,内部操作可能会出现问题
阅读全文
摘要:bll方法里开启了分布式事务,dal方法里又启动了数据库事务。通过查看异常堆栈,发现异常是在执行BillsDal.Add(bill);方法里的var trans = conn.BeginTransaction();这条语句抛出来的。
阅读全文
摘要:因为_conn.Open();里的IDbConnection实例与var trans = _conn.BeginTransaction();里的IDbConnection实例不是一个实例,因为每次调用只读属性拿到的都是一个新的实例。
阅读全文
摘要:方案分析:第1种,涉及到对象只能在被释(关闭)放掉才能再次被使用(打开),性能低下,不可取。 第2种呢,绝大多数的dal层方法几乎都是每次执行db操作都打开一个新的连接。 由于大家一般不会把dal层的数据操作方法定义成static,所以,也就不会遇到这样的db连接异常。而我呢,倾向于用static方法,考虑到封装,就把这个db连接对象封装成静态字段了,反而忽视了静态数据成员带来的隐患——数据量小时几乎是暴露不出来问题,一旦数据量大起来,有了并发,就会出现资源被同时使用,这样的话,都要修改其状态时,就出现了并发异常。
阅读全文
摘要:系统中有个结算的逻辑,每张订单到了账期日后,平台会给商家进行结算。涉及到账户方面的操作包括,平台账户余额的扣减和商户账户余额的增加,以及账户流水的记录。
像这个场景,如果不考虑并发的话,那么很容易出现数据不一致,导致记账混乱。 当然,这是比(xiāng)较(dāng)要命的!tag:并发,lock,多线程,时间戳,timestamp
阅读全文
摘要:scheduler is shut down.
阅读全文
摘要:不考虑逻辑,仅从代码简洁的角度来看,如上代码段存在如下问题,使得代码有了坏味道(bad smell):
* 对象oReturnValue被重复赋值并使用
* 层层嵌套, if和try...catch使得代码嵌套了好多层
阅读全文
摘要:拼sql的方式不可取,会带来sql注入风险。而sqlhelper会把你参数值当成字符串,不会对其做转义。所以,不管怎么对参数值处理,都还是一串字符串。按这样的原理往下想,只能是将单号分开来传递给sql了。
阅读全文
摘要:一、遍历ExpandoObject 二、对于dynamic是反序列化得到的对象时:
阅读全文
摘要:今天有同学对接一个支付平台,涉及到RSA的签名和验签。由于对方是java的sdk,翻成c#语言时,搞了半天也没搞定。网上搜的东西都是各种copy还不解决问题。 碰巧,我之前对接过连连银通的网银支付和代付。连连那边提供了c#版的RSA加密算法,立即破了这位同学的难题。在这里也分享出来,以便大家日后备用。
阅读全文
摘要:1. 常规实现方案:代码逻辑为从数据表里取出现有最大订单号,转换后得到新的订单号,将新的订单insert到表里。
2. 考虑并发,在1的基础上,加lock,以避免多个线程同时执行这段逻辑,导致订单号重复引起主键冲突
3. 对于2来说,这种方案仅适用于单应用部署的情况。 像电商的订单表,往往是好多系统都要生成订单, 那么,最终到数据库层级时, 也仍然会导致订单号重复引起主键冲突。 所以,要做数据库级别的锁表和事务控制。
4. 方案3的另一个版本:将生单逻辑从各业务系统解耦,封装起来单独部署。 然后提供rpc,供各业务系统调用。 这种方案的缺点是,单点部署会有风险。
阅读全文
摘要:

在做的一个账单计息功能,其中,账单表的主键是BillId,varchar类型,BillId取值形如B0000001,生成规则是每次新增记录是先从账单表里计算出最大的BillId数字,然后+1再转换后作为新增记录的BillId。例如,B0000001、B0000002。
逻辑很简单,但考虑到并发,技术上就要费点心了。
阅读全文
摘要:本文涉及到的mysql知识点:
mysql中的if条件语句用法: IF(expr1,expr2,expr3)
mysql使用变量(mysql中变量不用事前申明)
mysql事务
testcase
阅读全文
摘要:去年,我负责公司的一个互联网投融资平台。系统运营过程中,业务和客服那边不断的反馈一些事情让技术这边协助实现。例如,土豪客户忘记登录密码后更愿意选择搭讪客服MM;再比如,客户多次登录导致账号被锁定,就反映给客户MM处理;再比如,运营经理定期索要到期投资报表,而系统后台现有的报表不能完全满足他们的需求。
每次处理这样的事情,开发人员都要忙上一阵子。
阅读全文