自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

孙琛斌的专栏

不积跬步无以至千里,不积小流无以成江海

原创 采用Nginx的limit模块实现限流

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

2020-04-27 13:38:00 99 0

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

今天来讲一下mybatis的实现原理,我们都知道mybatis是使用动态代理的方式实现的一套ORM框架,那么他是怎么实现的呢? 在回答这个问题之前,我们先来捋一下mybatis框架的使用流程,一般我们会把他跟spring一起结合使用,spring容器来统一管理所有对象,使用mybatis时首先要进...

2020-02-22 16:35:07 4860 0

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

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

2019-12-27 19:09:05 9563 11

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

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

2019-07-09 14:41:53 6490 1

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

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

2018-07-31 23:12:07 11569 0

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

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

2017-08-31 20:10:39 7549 1

原创 A.CTable开源框架Mybatis增强自动创建表/更新表结构/实现类似hibernate共通的增删改查

mybatis-enhance-actable-0.0.1继之前的两篇文章阐述,我的第一个开源项目Mybatis_BuildTable_V0.2之后: http://blog.csdn.net/sun5769675/article/details/51757867 http://blog.cs...

2017-07-07 20:19:29 19028 17

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

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

2020-03-19 14:03:08 64 0

原创 商城拍卖活动设计方案

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

2019-10-22 15:53:04 5022 1

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

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

2019-05-16 22:15:20 5459 0

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

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

2019-05-16 13:23:22 5205 1

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

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

2019-04-28 11:42:17 19073 0

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

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

2018-10-12 15:29:12 5032 0

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

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

2018-08-31 11:12:20 4885 0

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

当我们在写一些插件或者通用功能时,可能会把他们打成jar包,如果是给web项目使用时,可能会出一个部署文档,比如要配置一些什么配置用来支持我们这个jar包里面的功能,这里建议这些可配置的参数在我们jar包中的引入方式使用@Value("${wechat.appid}")这个对于...

2018-08-07 16:02:05 5240 0

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

最近负责的一个某品牌手机的官方商城,他们要发售一款新手机,以往都是各个渠道一起发售,但是本次决定官网首发10000台,这样一来其他渠道的消费者都会被引流到官网来(天猫/京东/苏宁/线下),其庞大的流量并发可想而知,原有的功能实现肯定无法承载这种体量,因此我们全面优化了预售功能,分别按照以下几个点来...

2018-02-08 22:10:17 6618 0

原创 AOP的应用之分布式锁

大家在做分布式多节点等系统的开发中为了保证某些业务操作场景的原子性操作,一定会用到锁的概念,传统的synchronized无法满足分布式多节点的系统,所以大家都会用Redis实现分布式锁,怎么实现我这里就先不多说了大家百度一下可以查到一大堆。 但还是要简单的说一下主要就是使用redis的setn...

2018-01-31 12:49:23 5895 0

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

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

2017-11-13 18:02:02 6429 3

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

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

2017-11-13 14:23:18 15594 11

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

说一个场景,有时候我们做后台业务的时候,经常需要取session中存储的用户信息,所以免不了一直需要写下面这一段又长又无聊的代码:MemberCommand memberCommand = (MemberCommand) request.getSession().getAttribute(Sess...

2017-09-01 14:21:14 15932 1

原创 自定义注解@NeedLogin登录校验

今天介绍的是一个关于登录校验的自定义注解,之前有过一篇写如果自定义注解的博文:Java中的自定义注解那么这次讲一个经常会出现的场景下,会使用到的注解,一般我们无论是开发后端系统还是前端系统,都会有用户的概念,那么很多业务场景下我们都需要去校验当前访问者是否已经登录了,举个例子,如果是一个商城系统访...

2017-08-22 11:23:04 6158 0

原创 Ajax异步提交List对象,SpringMvc如何接收?

Springmvc的一个问题一直被广大开发者所诟病,就是在list对象的转换上一直并不是特别好用,网上很多解决方法关于不同的表单提交方式这里就不多说了,只介绍下ajax方式提交list对象的方法。比如你要通过ajax传递下面一段数据到controller:var json = [{'id...

2017-08-16 13:46:38 9923 0

原创 微信卡券功能JAVA版(PS : 其实无关乎什么语言拉 :) )

关于微信卡券的流程大家可以参考下微信官方文档http://mp.weixin.qq.com/wiki/9/4f455120b50741db79b54fde8896b489.html 其中的“微信卡券接口”——>“微信卡券接口说明”了解下什么是卡券,怎么玩的这里不再多做赘述,可以使用测试帐号按照“...

2017-03-17 14:07:43 13388 6

原创 分享下沪江外语学习视频教程

觉得作为一个程序员,平时除了学习下最新技术之外,还有至关重要的一点就是学习下外语,因此我这边收集了些沪江的各类语言的视频教程,格式是swf的不是单纯的讲是带交互的那种,其实就是官网上售卖的那些教程。资料是我之前买的,花了多少钱就不说了,主要涵盖语种英语、西班牙语、日语、泰语、韩语、法语、德语这几种...

2017-03-07 18:57:22 7420 2

原创 request.getHeader("user-agent")为null

今天一大早来,发现日志文件大小暴增,艰难的打开一部分查看之后发现,一直在报空指针的错误,所以检查了下代码,发现String ua = ((HttpServletRequest) request).getHeader(“user-agent”).toLowerCase();这段话一直报错,马上就反应...

2017-03-01 13:25:48 9824 2

原创 访问使用https协议的网址时,浏览器地址栏没有显示“安全锁”的标志的问题

这种问题造成的原因,首先要检查的是,使用的SSL证书是否过期,查看方式很简单,F12浏览器开发者模式,切换到Security选项,然后会看到一个View certificate的按钮,点一下就会弹出这个 网址使用的SSL证书的详细信息了,其中包括了证书的有效期开始时间和结束时间,如果是由于过期了...

2017-02-23 17:52:00 13260 1

原创 org.apache.commons.net.util.Base64的encodeBase64String方法的坑

今天在做汽车之家接口数据调用时,发现一个问题,由于对方服务器有身份验证,需要根据一定的格式将相关信息加密然后转成Base64然后放到http请求的header中。我在实际操作中遇到奇怪问题,明明加密后的字符串是错的,可对方的iis服务却能收到这个错误的请求,尽管不会通过身份验证,这时返回错误代码是...

2017-01-17 15:56:50 29672 0

原创 JAVA8新特性(访问接口的默认方法)

访问接口的默认方法还记得第一节中的formula例子么,接口Formula定义了一个默认方法sqrt可以直接被formula的实例包括匿名对象访问到,但是在lambda表达式中这个是不行的。 Lambda表达式中是无法访问到默认方法的,以下代码将无法编译: 复制代码 代码如下:Formula ...

2016-09-26 17:46:46 6301 0

原创 JAVA8新特性(Lambda 表达式)

Lambda 表达式首先看看在老版本的Java中是如何排列字符串的: 复制代码 代码如下:List names = Arrays.asList(“peter”, “anna”, “mike”, “xenia”); Collections.sort(names, new Comparator()...

2016-09-26 17:35:19 5906 0

原创 JAVA8新特性(接口的默认方法)

一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下: 复制代码 代码如下:interface Formula { double calculate(int a); default doubl...

2016-09-26 17:25:11 5756 0

原创 关于java中的BigDecimal类型,新手常见问题汇总

首先BigDecimal是一个不可变类型,什么是不可变类型呢? 当一个普通类 (class) 的实例不能被修改时,我们便称之为「不可变类」(immutable class)。这样的类在实例化时便需要提供其所有的值,而在之后的运行中便绝不可更改。比如大家可能都知道的 Java 中已有的一些不可变类...

2016-09-02 21:01:03 7344 0

原创 postgresql的一个简单的sql

首先是有两个表,一个是用户信息表,一个是用户登录日志表,用户信息表中有一个字段upgrade_time,是一个同步数据时间,每天如果用户登录,会将当前时间与upgrade_time时间去做比较,如果时间差在一天以内,那么不做同步,超过一天的话调用接口同步会员数据,并将upgrade_time更新成...

2016-08-26 14:57:16 5360 0

原创 Mybatis 实现共通的增删改查

基于之前写的一套SpringMvc+Mybatis+Maven开源框架,实现了通过配置model层注解的方式,在项目启动的时候自动创建更新表结构。如果没看过的可以看下那篇文章的博客地址:Mybatis自动创建表/更新表结构/动态建表这本身是一个类似于hibanete的功能,因此,为了更加适合使用h...

2016-08-13 10:08:03 7798 0

原创 springMvc中获取通过注解获取properties配置文件

springMvc的项目中,通过注解@Value获取properties配置文件中的配置,使用该注解必须引入的包: spring-beans-4.1.4.RELEASE.jar 下面是需要在spring的配置文件中配置的内容 beans xmlns="http://www.spr...

2016-08-13 10:03:29 13981 3

原创 关于使用Maven对项目进行install成功后得到的jar仍然是旧的的问题

分享一个最近遇到的关于maven的问题,使用maven对项目进行install的时候,明明日志显示install成功了,但是运行还是感觉代码没有变,jar包反编译之后发现还是旧的代码,而如果把旧的jar删掉重新打包,就可以,为什么呢! 这是最近同事遇到的一个问题,后来调查发现,他为了测试这个功...

2016-08-04 14:14:16 8734 0

原创 java中通过包名获取该包下的所有class

前面做的在mybatis通过注解自动创建更新表结构的项目,其中在spring加载完毕之后需要去获取所有实体类的class,用来获取实体类属性上的注解,进而分析表结构达到创建修改表结构的目的。 所以就需要一个功能,通过包名获取该包下的所有class,那么直接贴代码: package com.su...

2016-07-15 19:00:48 16004 0

原创 Java中的自定义注解

说起注解来,大家第一想到的肯定是@Controller、@Service、@Autowired、@Resources、@ResponseBody、@Transactional等,当然还有很多,例举的这些都是大家非常熟悉的。 使用过的人都知道,通过注解减少了我们很多冗余的代码量,用起来也很舒服,本...

2016-07-03 18:12:46 7134 0

原创 Nginx之页面缓存

1.指令说明 proxy_cache_path 语法:proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size];   默认值:None   使用字段:h...

2016-07-02 19:13:06 13771 2

原创 Nginx之读写分离

1.实验拓扑        需求分析,前端一台nginx做负载均衡反向代理,后面两台httpd服务器。整个架构是提供BBS(论坛)服务,有一需求得实现读写分离,就是上传附件的功能,我们上传的附件只能上传到Web1,然后在Web1上利用rsync+inotify实现附件同步,大家都知道rsy...

2016-07-01 21:51:41 17326 2

原创 Nginx之URL重写

1.URL重写模块(Rewrite) 摘要 这个模块允许使用正则表达式重写URI(需PCRE库),并且可以根据相关变量重定向和选择不同的配置。如果这个指令在server字段中指定,那么将在被请求的location确定之前执行,如果在指令执行后所选择的location中有其他的重写规则,那么它们...

2016-07-01 16:46:56 13932 0

提示
确定要删除当前文章?
取消 删除