8 孙琛斌

上海宝尊电子商务有限公司 - 高级软件工程师

我要认证

擅长领域Java, Jsp, SQL, Javascript等JavaEE开发所需技术,6年以上的商城项目实战经验(3C/汽车/服饰/电器),擅于提供各种业务场景的技术解决方案;具备丰富的团队管理经验,能够根据需求进行功能设计,采用敏捷的方式合理拆分任务,推动跨部门协调任务。

等级
TA的排名 3k+

开源框架mybatis-enhance-actable.1.1.0.RELEASE新版本迭代

五年前作为一名工作一年的程序渣的我,开始了思考,为了降低重复性及含金量低的技术工作,我准备结合自己的痛点写一个小插件,因为当时对mybatis和hibernate都有接触,总结分析后,觉得mybatis的灵活性更大未来前景广泛,而且入门难度最低,但同时**在当时**他的缺陷也很明显。首先他不具备跟hibernate一样的自动建表能力,表结构稍有变化需要,准备sql脚本,然后去改自己的实体类,这种过程是很无聊的,而且万一上生产忘记执行某个sql脚本,或用了错误的脚本就尴尬了,毕竟人做的事情不如机器做的靠谱

2020-05-27 21:58:33

采用Nginx的limit模块实现限流

先说一下背景,为什么要做限流? 一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。也就是并发越高,系统的处理能力就会越低,TPS也就越低,这样对于用户体验来讲是十分不友好的...

2020-04-27 13:38:00

Jedis3.0以上版本关闭连接时遇到的坑

在高并发场景业务日志频发出现jedis如下异常信息redis.clients.jedis.exceptions.JedisException: Could not return the resource to the pool at redis.clients.util.Pool.returnBrokenResourceObject(Pool.java:103) at redis.clien...

2020-03-19 14:03:08

三个类告诉你MyBatis是如何用动态代理实现的

今天来讲一下mybatis的实现原理,我们都知道mybatis是使用动态代理的方式实现的一套ORM框架,那么他是怎么实现的呢?在回答这个问题之前,我们先来捋一下mybatis框架的使用流程,一般我们会把他跟spring一起结合使用,spring容器来统一管理所有对象,使用mybatis时首先要进行几个配置。dao的包路径(也就是接口对象的包路径)xml文件的路径我们都知道使用mybat...

2020-02-22 16:35:07

CPU连续飙升的背后是 “道德的沦丧” 还是 “人性的泯灭”

最近负责的一个老项目CPU时不时的就会飘到90%以上,然后宕掉,这个项目是一个汽车类的商城支持在线下单预约试驾等功能,咨询品牌方说是做了一波投放,但是没有提前通知我们,看了一波日志其实请求量也不是特别大。 我们的系统是部署在阿里云上的,下面是简单的系统机构图: 理论上按照这个配置没理由cpu利用率没理由飙升这么高,以至于品牌方和PM频繁收到阿...

2019-12-27 19:09:05

商城拍卖活动设计方案

最近参加了公司内部的一个24小时编程比赛,组了个四人的小团队,设计了一个拍卖的功能,功能需求如下:1. 登陆2. 支付保证金3. 商品信息展示阶段4. 拍卖阶段叫价(最后一秒有人出价会延时5分钟)5. 尾款支付针对功能需求我们计划创建三个项目,一个后台拍卖活动数据维护,一个小程序做C端,一个api项目对前面两个项目做接口层的支持,业务流程走向如下:接口层部分做...

2019-10-22 15:34:06

是什么导致了Spring Aop失效了?

使用Spring Aop遇到的问题 我们在做一些统一操作的功能时,经常会使用到Spring的Aop技术,比如要在每个方法进入前做点什么事情,结束后做点什么事情,这个时候我们就会想到用到Aop去做,详细的使用方法这里就不展开了,默认大家都会用,如果不会用没有概念的话,可能没办法看懂下面的问题场景,这边主要面向的是对Spring和Aop有过实战的同学,好,题外话不说,看下面几种Aop...

2019-07-09 14:41:53

网站访问突然变慢一系列解决思路

1. 首先看下机器的CPU资源是否过高,如果CPU资源过高会导致网站响应变慢,如果是那么需要看下哪个服务占用了CPU的资源,然后详细排查过高的原因1) 通过top命令找出占用CPU高的PID2) 通过ps aux | grep pid 可以进一步确定这个pid运行的是什么服务3)查看线程列表ps -mp pid -o THREAD,tid,time,观察这个服务的哪几个线程占用了CPU...

2019-05-16 22:15:20

开源框架springboot-mybatis-wr-separation实现springboot+mybatis读写分离

最近做springboot+mybatis的项目想要用到读写分离,查了一圈发现大家都是自己写的,没用通用现成的读写分离架构,因此就写了一个比较简单好用的小插件,来帮助大家简单的实现读写分离的功能,项目已开源并已经上传到maven中央仓库,欢迎提出宝贵意见,共同改进。springboot-mybatis-wr-separation介绍springboot-mybatis-wr-separa...

2019-05-16 13:23:22

手机浏览器唤起支付宝并打开指定页面

支付宝的红包功能让一批人先富了起来,很多大大小小的网站都嵌入了领红包的脚本一点就直接唤起了支付宝,并且打开领红包的页面,那么这个功能是怎么实现的呢?支付宝提供了专门的接口通过scheme启动,scheme可以理解为一种特殊的URI,格式与URI相同,具体使用如下:支付宝客户端的标准scheme为:alipays://platformapi/startapp?appId=如果是某些运营页...

2019-04-28 11:42:17

编写简单的Web容器TomDog(揭Web容器面纱)

从事Java Web编程的朋友都知道,一个web应用的组成必须要有web.xml,因为这个是web应用程序的入口,通常我们会选择一种Web容器来发布我们的Web项目,比如Tomcat、Weblogic等容器服务程序。这些程序都遵从一个标准的Web工程标准,他们启动时都会去主动读取指定位置的web.xml文件,web.xml中的各个节点都是既定的标准,Web容器会去按照规则读取配置信息将各种Cl...

2018-10-12 15:29:12

一段代码引发对泛型的重新认识

故事背景:小伙伴在开发一个导出功能时在处理数据结构的过程中,产生了一个诡异的数据结构,在一个List<String>这个类型的变量中,他的值列表却不是我们认为的String类型,而是String和Double的混合数据,由于他的业务复杂,我这边根据他代码的基本思想写出了如下demo代码。public static void main(String[] args){ List&...

2018-08-31 11:12:20

springmvc架构和springboot架构通用的引入配置方式

当我们在写一些插件或者通用功能时,可能会把他们打成jar包,如果是给web项目使用时,可能会出一个部署文档,比如要配置一些什么配置用来支持我们这个jar包里面的功能,这里建议这些可配置的参数在我们jar包中的引入方式使用@Value("${wechat.appid}")这个对于不同架构方式下都可以很容易的配置出来,下面举了三个常见的例子:1. 使用了spring的项目需要配置xml的项目在注...

2018-08-07 16:02:05

解决jdk1.7 不支持TLS1.2的问题

这个问题是在生产环境调整之后出现的,因为之前是好使的,后来又一天突然不好使了,观察日志发现代码抛异常,感觉是没有连接上服务器,但是其他环境是好使的,有点疑惑,分析后发现可能是ssl的协议问题,所以观察了下Nginx的配置,发现运维伙伴基于公司的安全机制,将ssl_protocols从 TLSv1.2 TLSv1.1 TLSv1.0; 调整成了TLSv1.2 TLSv1.1; 然后查了下资料,发现j...

2018-07-31 23:12:07

大型商城活动防刷限流方案

最近负责的一个某品牌手机的官方商城,他们要发售一款新手机,以往都是各个渠道一起发售,但是本次决定官网首发10000台,这样一来其他渠道的消费者都会被引流到官网来(天猫/京东/苏宁/线下),其庞大的流量并发可想而知,原有的功能实现肯定无法承载这种体量,因此我们全面优化了预售功能,分别按照以下几个点来操作:1. 页面静态化(动态数据全部通过js异步获取,并且需要控制异步请求的数量,页面缓存到CDN)2...

2018-02-08 22:10:17

AOP的应用之分布式锁

大家在做分布式多节点等系统的开发中为了保证某些业务操作场景的原子性操作,一定会用到锁的概念,传统的synchronized无法满足分布式多节点的系统,所以大家都会用Redis实现分布式锁,怎么实现我这里就先不多说了大家百度一下可以查到一大堆。但还是要简单的说一下主要就是使用redis的setnx(key,value)方法配合del(key)方法,也就是在第一个请求进来的时候执行这个方法,会将一

2018-01-31 12:49:23

开源插件ACTable已经打包放到Maven中央仓库啦!

开源插件ACTable(基于Mybatis自动建表、并支持共通CUDR)上线啦!由于很多小伙伴在使用actable的时候都不得不下载源码,然后在本地install打包然后使用,所以最近我抽空,将其打包放在了maven中央仓库上,因此包的结构有所调整,引入方式如下:pom.xml中引入<dependency> <groupId>com.gitee.sunchenbin.mybatis.acta

2017-11-13 18:02:02

如何将jar包上传到Maven中央仓库

最近actable的部分功能已经完善了,一些小伙伴已经在使用了,但是由于没有放到远程仓库,导致使用的小伙伴都需要自己将代码取下来,然后install,这样不太好,所以最近就规划了下包结构,上传到了maven中央仓库中,以下是上传步骤。1.创建工单1.1 https://issues.sonatype.org/secure/Dashboard.jspa新建一个账号,登录后选择Create Issue,

2017-11-13 14:23:18

SpringMvc通过自定义注解在方法的参数中注入数据

说一个场景,有时候我们做后台业务的时候,经常需要取session中存储的用户信息,所以免不了一直需要写下面这一段又长又无聊的代码:MemberCommand memberCommand = (MemberCommand) request.getSession().getAttribute(SessionAttr.MEMBER_DETAIL);那么怎么避免这个事情呢,下面我们就来通过一个自定义注解@M

2017-09-01 14:21:14

Spring+SpringMvc的手写版(PS:只是闲来无事写的简化版,仅供大家理解Spring+SpringMvc的运作原理)

最近手头正好有些时间,想着写点什么好呢?后来看到了一篇帖子说面试的时候有面试官问他能不能手写一套SpringMvc出来,不拉不拉的….不多说了。所以想着就写写试试,捋了捋思路,无非就是三点(大神勿喷!): 1. 实例化 2. 注入 3. url映射连起来说就是对加了@Controller、@Service注解的对象进行实例化,然后对这些对象中的某些加了@Autowired注解的属性进行依赖注入

2017-08-31 20:10:39

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享精英
    分享精英
    成功上传11个资源即可获取