10 孙大诚_SunRobin

尚未进行身份认证

码农奋斗自强不息http://my.csdn.net/#

等级
TA的排名 2k+

使用延迟队列处理失效订单问题

在处理订单过程中,如果一个订单生成之后,在特定时间内(比如15分钟)没有付款,那么我们就要删除这一笔订单,释放占据的货物资源。在这种场景下,最直观的做法就是写一个定时job, 每分钟扫描一下数据库的订单表,如果订单超过了15分钟,那么订单状态改为删除,并且商品表数量要加1,因为刚刚删除的订单释放了一个商品。这样会给数据库造成很大的压力,而且如果长时间都没有过期的订单,而job依然会每分钟跑一...

2020-03-30 17:27:13

电商系统ID生成策略简单介绍

在系统中生成ID的方式有很多种,现在简单分析一下各种方式的适用场景以及优缺点。1. UUID. 唯一性,在单体环境下或者分布式环境下都不会出现重复。但是UUID的劣势也是一大堆a.没有可读性,导致程序在调试的时候数据不直观,不能像整型ID一样直观的看到大致运行到了哪条记录,如果比对两条数据,也不能很快看出谁先谁后。b. 32位字符串太长,占用数据库资源。c. 在对主键进行索引...

2020-01-06 15:15:41

Redis连接池的简单设计与实现

连接池属于一种池化技术,在现在高并发场景下用的很多,其作用如下。1. 与Redis服务器是TCP管道连接。TCP的创建需要三次握手,如果使用连接池技术,不用每次都是创建TCP连接,避免了耗时的三次握手操作。而且在非池化的情况下,每次的TCP销毁要四次挥手,以及java对象的GC,都需要时间与性能消耗。2. 资源分配。如果不适用池化技术,在多台机器访问同一个Redis服务器的情况下,如果每台...

2019-12-31 16:38:29

Java中List(LinkedHashMap) 转为 ArrayList(Object) 的方法

在SpringBoot中使用RestTemplate来调用远端的服务,本质上返回来的都是Json字符串。在下边的例子中,我们使用List<Template>来接收远端返回来的值。Template是一个Java Model.List<Template> list = restTemplate.getForEntity(urlFullTemplates, ArrayLis...

2019-12-20 14:37:13

电商秒杀系统应对高并发相关的技术

在电商秒杀系统中,短时间内应对大量请求,造成高并发。这样,程序应该尽可能的过滤掉无效的请求,然后对于有效请求,使用各种技术进行处理。1. 对网页中的图片或者不经常改动的其他静态资源进行浏览器端的缓存。 Cache-Control no-cache — 强制每次请求直接发送给源服务器,而不经过本地缓存版本的校验。这对于需要确认认证应用很有用(可以...

2019-12-10 18:00:05

SpringBoot+Mybatis+Logback不在控制台打印SQL问题

本项目用到的是SpringBoot+Mybatis+Logback. 为了能够在控制台打印SQL,在配置文件中进行了各种配置,网上能查到的方法都试了,但是还是不打印SQL语句。在配置文件中标明了logging.level.cn.homecredit.sams.ddme.reconciliation.model.mapper=debug.依然不打印SQL语句。另外的一个SpringBoot...

2019-08-29 15:42:32

WCF中The socket connection was aborted可能导致该异常的原因

The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host.可能是WCF的数据传输中含有一个DataTable. 如果是没有名字的DataTable,就会抛出...

2019-07-02 16:23:20

按照指定字段删除DataTable中的重复行

在DataTable中,如果要删除重复行,可以使用如下代码。DataView dv = new DataView(finalResultSet.ResultDataTable);DataTable dt2 = dv.ToTable(true);根据现有DataView中的行,创建并返回一个新的DataTable。参数Boolean如果为true,则返回所有列都具有不同值的行,为fals...

2019-07-02 14:22:09

脚本语言的特征以及Python语言的特点

脚本语言的脚本这一说法缘于Unix操作系统,目的是让其批量的,按照既定的方式去做一些事情,就想照着剧本做事一样。英文中的script就是剧本的意思,中文对应的词就是剧本,脚本。脚本就是剧本意思。人们叫着叫着就这样了,大家都叫脚本语言,没有人叫剧本语言。所以有人说,我写了一个脚本,意思是,写了一个批量的能做某些事的命令,不一定非得是用某种语言写脚本,也可以只用CMD命令写一个bat文件,这个也叫做脚...

2019-07-02 14:03:37

Winsw将java应用转变为windows服务时抛出异常"错误 1067:进程意外终止"

使用winsw(Github https://github.com/kohsuke/winsw)可以非常方便的将java应用转换成windows service服务部署在windows服务器上。详细操作步骤可以搜索一下,文档比较丰富。这里说一个我遇到的问题。当我按照文档说明每步骤都配置好之后,服务安装没有问题,然后在启动的时候,服务抛出异常"错误 1067:进程意外终止".publi...

2019-06-28 12:57:45

MQ分布式环境下保持数据一致性

业务场景:支付宝的余额系统与蚂蚁金服的余额宝是两个对立的平台,相互之间通过ActiveMQ进行通信。当用户把1000块钱从余额存进余额宝的时候,余额系统数据库减1000,然后发送一个消息到MQ,余额宝端接收到这个消息后,在其数据库中加1000.可能存在的问题:1. 消息丢失问题。用户发起1000块钱的转账,支付宝余额平台减了1000,触发消息放到了队列,余额宝端成功消费了消息,但是...

2019-06-25 13:07:39

对于SpringBoot是否支持JSP简单理解的知识总结

1. SpirngBoot并不是不支持JSP,而是在某些情况下不支持JSP,对于JSP有一些限制。在其官网上写明了使用JSP的限制有4点如果在SpringBoot中使用JSP作为渲染引擎,方法有2种。第一种,引入Jasper包,并且需要构建一种传统的web结构,最终以war包的形式发布。运行的时候,以 java -jar xxx.war的方式运行。第二种,引入Jasper包,并且把web文...

2019-06-25 13:00:54

@Configuration与@Bean注解的原理

@Configuration与@Bean结合使用。@Configuration可理解为用spring的时候xml里面的<beans>标签,@Bean可理解为用spring的时候xml里面的<bean>标签。SpringBoot不是spring的加强版,所以@Configuration和@Bean同样可以用在普通的spring项目中,而不是SpringBoot特有的,只是...

2019-06-18 13:59:37

ORA-01008: 并非所有变量都已绑定

OPEN PO_EXPCUR FOR V_QUERY_SQL USING …这句代码在参数设置错误的时候会抛出ORA-01008: 并非所有变量都已绑定原因:在执行动态SQL语句的时候,SQL字符串中填充的变量与USING关键字中绑定的变量个数不一致。...

2019-06-14 12:19:51

可能会引起(ORA-01006: 绑定变量不存在)的问题

有很多的时候各种原因都会引起这个问题,现在说一个比较小众的原因。V_QUERY_SQL = ‘SELECT COUNT(DISTINCT (B.BATCH_ID)) FROM T_DD_RES T JOIN T_DD_REQ Q ON T.ID_DD_REQ = Q.ID JOIN T_DD_BATCH B ON T.B...

2019-06-14 12:15:33

比较详细的并发编程细节分析

最近在系统的学习并发编程,整理出来详细的条理笔记,希望能够分享收获。1. 最原始的加锁代码,加锁是指锁住了这个对象,一个线程在运行到这段代码的时候,在这个对象的堆内存区域写入了锁信息,其他线程运行到这段代码的时候,会访问这个对象,因为这块有synchronized关键字,就会访问锁信息,然后发现这个对象被锁住了,就会等。所以,锁住的永远都是对象,而不是代码块。2. 专门用一个对象...

2019-06-13 12:22:32

事务控制中悲观锁与乐观锁

事务并发可能存在的问题1.在撤销事务之后,不管有没有其他人或者其他事务进行了操作,直接回到最原始的状态2. 读到了另外的一个事务没有提交的数据3. 因为其他事务的介入,使得本事务前后读取的数据不一致4. 不可重复读的特殊情况(先后两次读取不一样,并做了操作)第一种,只要支持事务就不会有这个问题。第二种,脏读,读了其他人没有提交的事务。第三...

2019-04-29 14:11:56

Linux中的内存占用并不是真的被应用程序占用了

今天在查看Linux服务的运行状态的时候发现,内存占用是非常高的。这里可以看到有一行是buffers/cache. 这里是用来做disk cache的,并不是真的被应用程序使用了。disk cache, 就是硬盘镜像,能够大幅度提升服务器的运行速度。比如说,硬盘上有一个TXT文件经常被读取,那么Linux就会把这个文件内容放到硬盘镜像中,这样每次读取就不从硬盘读取了,而是从内存中读取,...

2018-11-27 13:05:21

服务器已拒绝客户端凭据 the server has rejected the client credentials

我们的WinForm程序同构WCF与部署在服务器上的服务端相连。今天很多WinForm用户反映,在使用的时候遇到问题,抛出异常服务器已拒绝客户端凭据,the server has rejected the client credentials.现在说一说WCF的安全认证问题。一般我们做的局域网应用,都没有加入任何的安全配置,那么WCF默认的安全配置是什么呢?如果不做任何安全配置,那么WCF采用...

2018-11-06 16:03:36

The RenderBody method has already been called

项目中用的是ASP.NET MVC,部署在服务器的IIS中。在部署新版本的时候,抛出了如下异常。解决办法:1.如果能登录服务器,那么重启IIS中相应的网站就解决。2.如果不能登录服务器,通过FTP的方式部署,那么要先删除以前的那个文件,再上传新文件,而不是直接上传新文件去覆盖原来的文件。问题分析如下:这个网站是部署在服务器上的IIS站点中,开发人员没有权限登录这个服务器,只能通过F...

2018-10-26 12:26:05

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。