
●【项目实战】
当年的春天
目前就职于阿里巴巴,六年大型互联网后端(Java)研发经验,坐标北京;擅长微服务和中间件。
展开
-
如何打造一个抗住千万级流量短信服务(续)
如何打造一个抗住千万级流量的短信服务?快来领略其中的奥妙原创 2022-05-03 22:15:52 · 3287 阅读 · 10 评论 -
智能一代云平台(三十五):后端架构再思考
【前言】 针对现在开发用的框架(SSM+Dubbo),自己进行了一些思考;这些问题应该是当系统在大流量,高并发,分布式情况下需要考虑一些问题,自己在对服务拆分的时候一些思考的记录下来,与大家共享;【一些思考】 一、服务调用 1、服务之间调用的关系是否清晰合理? 这是考量一个系统拆分的...原创 2017-07-10 12:08:13 · 19276 阅读 · 27 评论 -
Keepalived+Nginx实现高可用,反向代理---模拟实现线上环境
【前言】 在对Keepalived+Nginx进行了研究后,将这项技术推广上线,并配合运维进行网站搭建起来。经过一段时间的运行线上环境运行已经稳定,不过自己还需要进行更加深入的研究;那么如何模拟线上环境做相应的实验那?自己又在本机搭建一个仿真环境,以此来做些相关实验,如果实验成功再部署到测试环境经过测试验证没问题后将其应用到线上环境。【实现过程】 ...原创 2017-04-08 09:53:41 · 17097 阅读 · 17 评论 -
智能一代云平台(十二):轮次设置
【前言】 基础系统是云平台中十分重要的一个子系统,它为其他系统提供了基础数据的支撑;基础系统中有一个重要的功能就是轮次管理;轮次是配置课程管理的一个基础数据,不同学年不同学院的不同课程轮次都可能不同;今天为大家介绍一下关于轮次设置的相关功能及实现。【轮次设置】 一、在编辑轮次时比较重要的几个逻辑校验: 1、编...原创 2017-02-18 23:02:38 · 18855 阅读 · 17 评论 -
Eclipse启动项目报启动上下文失败问题解决方案总结
【前言】 最近用Eclipse中启动项目的时候经常会报一个奇怪的问题,之前也遇到过,经过清理一下Jboos的发布文件就可以解决,但是这次不行;也了解到项目组的部分其他同事也遇到相同的问题也备受它的折磨。 于是乎对它进行了相关的实验最终确定问题的根源,在此与大家分享这个过程。【钻研之路】 一、问题缘起: 1、之前有同事遇到这个问题,我们在一起...原创 2017-02-09 15:41:59 · 22894 阅读 · 21 评论 -
Redis服务器被劫持风波
【前言】 俗话说全猛于虎,之前多多少少有所小体会;这次的上线Redis服务器被劫严重影响了开发测试和线上环境,在解决的过程也对安全方面了解了很多;总结了这次过程的排查流程以及采取的相应测试,在此与大家共享。【被劫风波】 一、问题: 1、开发,生产,测试服务器(shiro :246;开发:251; 测试:204;生产:164,165)每台机器的Redis...原创 2017-02-25 21:44:55 · 20916 阅读 · 50 评论 -
Linux上安装集群版Redis
【前言】 之前自己在Windows中玩过一段时间Redis(感兴趣的朋友可以看下-Redis系列博客),这次在项目中也有幸能负责起Redis,也由于前两天服务器硬盘损坏导致开发的Redis服务器重新装系统,自己有幸能重新装一遍集群版的Redis,在这个过程中还是遇到些小麻烦,在此总结一下,希望对各位读者有所帮助。【跌宕起伏安装流程】 一、说明:...原创 2017-03-03 09:55:48 · 19964 阅读 · 49 评论 -
智能一代云平台(九):EclipseLink返回Object转为实体的分析
【前言】 在ORM框架上我们项目采用的框架是EclipseLink;在使用EclipseLink中遇到一个问题,在底层封装往上返回的时候将Object类型映射成Map,而上层需要实体这样会出问题;下面为大家分享一下针对这个问题我做的一个实验;【分析过程】 一、思考过程: 1、底层用的EclipseLink,Object经过映...原创 2017-01-13 19:43:55 · 17390 阅读 · 21 评论 -
智能一代云平台(十):Jboss远程访问流程总结
【前言】最近在做一个EJB相关的项目,在做的过程用到了远程调用的相关东西,自己进行一下梳理和总结,在此与大家分享。【相关流程】 一、对EJB和Jboss两者梳理: 1、小感:大多数情况下,提到两者中的一者,就会提起另一者;刚开始的时候自己也是对这两个东西比较混淆,最近在项目中用出了些问题,自己查找资料将其梳理一下,原来一些模糊的地方逐渐清晰起来...原创 2017-02-05 18:47:18 · 19148 阅读 · 56 评论 -
Redis实现计数器---接口防刷
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 刚刚过去的双十一,大家有没有剁手,紧接着双十二马上又来临;看到全民大抢购的时候,做为一名技术人,不免的会有些职业病,总会好奇抢购秒杀等等背后的技术。 正好最近自己在做项目的时候需要防刷,自己在做完后做了些小测试,在这里与诸君共享!【探索】...原创 2017-12-03 22:07:08 · 31606 阅读 · 12 评论 -
利用Nginx对不同的域名进行解析
【前言】 近期一个项目要上线,在上线的时候需要挂在阿里云的一台服务器上然后通过反向代理代理到我们内网的服务器上。【资源利用到极致】 1.本着将资源利用到极致的理念;我们想了个办法将不同的域名映射到同一台阿里服务器上,然后反向代理到我们的机房中; 2.如何充分的利用机器 (1)利用Nginx可以对不同的域名进行转发...原创 2017-06-01 16:21:54 · 20830 阅读 · 12 评论 -
对Redis配置中bind的探索
【前言】 经历了两次病毒的攻击(感兴趣的朋友参考《高校云平台(十三):Redis服务器被劫持风波》和《高校云平台(十六):解决Linux服务器被植入木马总结》)让我们对安全重视程度又提高了许多;总结两次遭受攻击,目前没有确定病毒是如何攻击到局域网中的,但是两者都是通过Redis的漏洞攻进来,第一个是遭挖矿,第二个是僵尸攻击;所以对Redis做相应的安全防护是个绕不开的弯。【一...原创 2017-03-24 17:19:10 · 24848 阅读 · 20 评论 -
对前后端分离和FastDFS的使用的再理解
【前言】 最近我们上线一个新功能,在进行部署的时候出了个奇葩的问题,在解决这个问题的时候对前后端分离和FastDFS的认识又加深了许多。【背景—问题&解决—小结】背景 1.上线功能是完全的前后端分离 (1)前端:AngularJS2 (2)后端:SSM(SpringMVC+Spring+MyBatis) 2.图片管...原创 2017-06-09 17:13:52 · 23515 阅读 · 72 评论 -
智能一代云平台(二十一):生产环境Nginx报 502 Bad Gateway 问题复现及解决方案
【前言】 系统最近出现了一个问题,经过相应的排查解决了;在此记录一下解决的整个过程,如果大家遇到类似问题以供参考,另外由于经验有限,如果小编有没有考虑到地方,欢迎在评论中留言。【问题—复现—原因—解决】 一、问题 我们项目线上环境是部署在阿里云上,相关的部署情况是之前博文《高校云平台(十五):Keepalived+Nginx实现高可用,反向代理---Nginx...原创 2017-04-30 10:08:01 · 29661 阅读 · 35 评论 -
智能一代云平台(十六):解决Linux服务器被植入木马总结
【前言】 继上次Redis服务器被劫持风暴(高校云平台(十三):Redis服务器被劫持风波)过后十多天后,病毒对我们总是恋恋不舍,又一次的来到我们身边;有了上次的经验后,这次处理起来虽然也有些波折,但是相对来说迅速很多;下面是这次解决的整体流程,希望会对读者有所启发。【跌宕起伏研究之路】 一、发现病毒: 1、被通知: 201...原创 2017-03-12 19:32:43 · 20687 阅读 · 21 评论 -
Keepalived+Nginx实现高可用,反向代理---Nginx安装及配置
【前言】 项目中总有些研究性的工作来做,记得一年多之前也是在研究Nginx,当时也是苦战了一周左右;时隔一年对它的理解又加深了许多,不过也下了些功夫将它又进行了深入的研究 虽然网上已经有很多文章在写,并且这种技术已经很成熟,不过根据具体的业务场景应用不同以及自己研究的时候还是踩了许多的坑;还是有写出来一是整理一下自己最近的实验,二是或许会对读者有些帮助。【研究之路】...原创 2017-03-12 08:23:41 · 21549 阅读 · 46 评论 -
智能一代云平台(三十三):log4j日志研究
【前言】 日志对于一个系统的来说是必不可少,它可以让人们知道,系统当前运行的状况;最近对日志进行了一些实践,以下是自己在这个过程中收获的一些东西。【一些有趣的实验】 一、mybatis设置日志级别打印SQL语句***log4j.rootLogger=debug,stdout,logfilelog4j.appender.stdout=org.ap...原创 2017-06-29 17:45:14 · 17681 阅读 · 27 评论 -
梳理项目的pom文件
【前言】 Maven是一款十分棒的项目管理工具;毫无疑问pom文件是Maven项目中的命脉,管理着各个jar包之间相互依赖关系; 最近将项目中的pom文件重新梳理了一遍,发现pom文件如果乱了,后续会有无数个头疼的坑;接下来就为大家分享一下这次的pom梳理流程,从而避免给以后留坑。【精彩整理旅程】 一、整理前项目中暴露出问题 ...原创 2017-06-29 17:43:20 · 17764 阅读 · 23 评论 -
一次线上Nginx出问题排错经历
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 我们最近新上线一个新的功能是对题库的查询和练习,我们是在微信公众号中挂载的阿里云,阿里云反向代理到我们的机房中。【一次排错的经历】 线上环境出问题自然对我们的影响十分大的,不敢稍有怠慢赶紧进行相关排查; 一、一次访问的流程:...原创 2017-06-01 17:15:38 · 20349 阅读 · 12 评论 -
智能一代云平台(二十二):多租户方案比较Hibernate、EclipseLink、Mybatis+Mycat
【前言】 我们做的高校云平台中需要用多租户这种技术,目录了解到的有三种技术可以实现:符合JPA规范的Hibernate和EclipseLink以及Mybatis+Mycat;我们的上一版本的系统用的是EclipseLink实现的,这版需要重新对比一下,选定一个,于是花了些时间来做了些验证【三种实现方式】 一、什么是多租户 1、多租户的实现根据在数...原创 2017-05-11 21:45:40 · 26180 阅读 · 16 评论 -
tomcat集群共享session
【前言】 无数人撞的头破血流告诉我们的一个经验是一个网站如果不做负载后果是不堪设想;负载一是对请求进行分压不至于大流量过来把机器压垮,即使部分机器Down掉网站仍可用(高可用,防止单点故障)。【负载中不得不知的一些秘密】 1.做负载的有很多选择,从大的方面分为两种: (1)硬负载 F5:效率高,成本高 ....原创 2017-06-01 16:45:32 · 19328 阅读 · 10 评论 -
SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 最近在工作的时候遇到一个关于SQL的问题,下面与大家共享一下。【探索之旅】 1、数据库中的字段: (1)字段的设置: (...原创 2018-01-13 20:32:02 · 17285 阅读 · 2 评论 -
智能一代云平台(四十二):关于异常的一些事
【前言】 由于实际环境的复杂多变,再牛的程序员也无法保障自己的程序永远不出异常,如何处理好异常也是程序员必修的技能;异常不仅保障了系统的健壮性,而且记录起来有助于我们知道线上环境发生了什么。【漫谈异常】 一、异常和事务的一些相关东西 1.我们开发框架是使用的SSM;其中Spring的事务是通过AOP来实现的; ...原创 2017-08-12 09:05:16 · 20639 阅读 · 11 评论 -
智能一代云平台(十九):选修课---类似秒杀的高并发业务
【前言】 选课,考试,评教这三个功能是我们的云平台中的重头戏;并发高是这三个功能的一个共同特点,在解决的过程中充满挑战,当然含金量也会高很多;今天就和大家一块儿分享一下我们针对高并发的业务的一些实践和解决思路。【如何做好一个秒杀系统】 一、我们系统中遇到问题 1、基础系统的公共选修课出现的问题: ...原创 2017-03-30 17:35:47 · 18167 阅读 · 20 评论 -
定时任务的选型及改造
【前言】 项目中用到了定时任务,项目之初为了快速开发上线,当时直接采用最简单的Linux自带的crontab;项目逐渐维定下来时,针对定时任务自己进行了相关研究,并根据项目实际情况进行了对比以及相关改造。【比一比&改一改】 一、项目目前定时任务现状 1、 使用Linux系统的crontab直接调用...原创 2018-03-24 23:18:39 · 37044 阅读 · 6 评论 -
短信服务的设计
【前言】 之前系统中已经接入短信,由于当时工期比较紧,所以直接在需要的地方(登录,注册等)通过Http调用第三方;后来随着需要发送短信的场景越来越多,对短信进行了抽离做成单独的服务;下面分享一下在抽离服务时的思路以及遇到的一些坑。【设计思路】 1.按需要发送短信的本身特点将短信分为两类:一是有时效性短信(如:登录,注册);二是非时效性短信(如:放款成...原创 2018-04-15 21:03:26 · 24738 阅读 · 6 评论 -
APP更新改造
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 最近在工作中发现一些奇怪的问题,出现一些按照正常的逻辑不可能出现的情况;第一直觉是有人刷接口进来的,经过对业务流程的梳理以及数据分析得出相同结论不应该出现这种情况,并让测试同事帮忙在测试环境模拟结果相同; 百思不得其解时,另外一同事给出猜想,有可能用户...原创 2018-06-17 08:43:24 · 20519 阅读 · 2 评论 -
利用脚本自动化部署系统,解放我们的双手
【前言】 现在我们的项目发布(从git上拉代码部署到Linux上)是通过脚本来完成,生产和测试环境都是运维在控制,开发联调环境由开发来负责,之前开发环境每次部署都是先在本地打好jar包然后传到服务器上; 每次发布都打包上传,非常的麻烦;于是自己仿照测试环境的脚本改造一下在开发环境下也可以自动部署。【自动化脚本】 一、基本环境(基本环境东西若...原创 2018-06-17 17:10:28 · 31360 阅读 · 7 评论 -
智能一代云平台(四十三):技术选型
【前言】 最近在整理智能一代云平台的相关资料,发现一年前我们进行三周的技术选型的讨论以及最终方案的确认;自己有幸能从头到尾全程参与,对个人的技术体系有很大影响;在此整理一下;【技术研究及方案确认】 一、研究技术体系: Dubbo、SpringCloud、EJB 二、技术调研: ...原创 2018-07-28 17:05:13 · 18764 阅读 · 3 评论 -
查看redis的Value值大小
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 最近项目一个需求,需要借助于redis缓存来实现,发现需要存的value值有些大;究竟有多大那???伴随这个疑问,开始一场探索之旅。【探索value值大小】 一、安装redis-rdb-tools(项目地址:github) ...原创 2018-07-29 16:32:10 · 45830 阅读 · 4 评论 -
Nginx设置gzip压缩提高传输效率
分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/zhanghan【前言】 在上篇博文(《Cash Loan(十):查看redis的Value值大小》)中研究了如何查看redis的value值;自己做的一个功能涉及到redis查了一下,发现有些大的value(约250KB),...原创 2018-07-29 20:09:27 · 17435 阅读 · 5 评论 -
Nginx设置日志打印post请求参数
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 我们项目的短信功能是接第三方,原来对接第三方给我们回执确认请求是get请求我们在排查问题的时候可以通过nginx的日志拿到对方给我们请求的参数;最近我们换了另外一家第三方,新的第三方给我们的确认请求是post,遇到问题排查,发现nginx没有打印具体参数,于是查阅一...原创 2018-07-29 20:59:58 · 43786 阅读 · 3 评论 -
Redis实现计数器---接口防刷---升级版(Redis+Lua)
【前言】 Cash Loan(一):Redis实现计数器---接口防刷 中介绍了项目中应用redis来做计数器的实现过程,最近自己看了些关于Redis实现分布式锁的代码后,发现在Redis分布式锁中出现一个问题在这版计数器中同样会出现,于是融入了Lua脚本进行升级改造有了Redis+Lua版本。【实现过程】 一、问题分析 ...原创 2018-03-18 19:54:39 · 28796 阅读 · 14 评论 -
RabbitMQ的死信队列的应用
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 最近在项目中用到了RabbitMQ来做异步处理,自己将这块儿系统的搞了搞,下面主要记录一下自己在研究过程中对死信队列的一些研究。【实践】 一、如何配置死信队列? 1、增加死信队列(exchange-ttl-to.q...原创 2018-03-11 21:19:08 · 37560 阅读 · 8 评论 -
智能一代云平台(二十九):通用mapper的改造
【前言】 最近研究一下Mybatis的通用mapper,然后对其进行了一些改造以适合我们的系统,接下来为大家分享一下我的研究思路以及研究成果。【研究之路】 一、ORM框架选型: 1、我们最近对我们的项目进行重构,关于ORM框架的选型进行了相关调研(入选我们候选之列有ORM经典框架:Hibernate和Mybatis) ...原创 2017-06-17 23:09:36 · 20123 阅读 · 18 评论 -
对接海外faceid
【前言】 最近在做海外的相关业务,其中有一部分涉及到对接第三方(faceid);在对接的过程中遇到一些坑,记录下来,大家在对接第三方的时候可以参考一下。【对接中的那些事】 一、业务场景: 1、faceid海外目前提供了两个接口: a.检测一张图片中是有多少人头【可以为0,1,2... 每...原创 2018-01-28 20:42:07 · 20738 阅读 · 5 评论 -
智能一代云平台(二十四):已安装的Nginx上安装echo插件
【前言】 Nginx已然成为行业中最火的反向代理服务器,Nginx成名于两方面:一是其优越的性能;二是其丰富的插件库;今天为大家分享是Nginx强大的echo插件;题。【具体的实验】 一、echo插件是干什么用的? echo插件使得Nginx具有了可调试特性,可调试对于程序员来说是个天大的福音,将我们从一筹莫展的深坑中救出来...原创 2017-05-31 22:27:54 · 19747 阅读 · 6 评论 -
Keepalived+Nginx实现高可用,反向代理---Keepalived安装及相关配置
【前言】 在博文《智能一代云平台(十五):Keepalived+Nginx实现高可用,反向代理---Nginx安装及配置》中介绍了Nginx的安装及相关配置的信息,由于篇幅原因不能用一篇博文描述完,这篇接着为大家分享其中的一个非常重要的模块Keepalived的安装及相关配置。【研究之路】 一、郑重声明 本篇博文的前导博文为《智能...原创 2017-03-17 21:55:44 · 20574 阅读 · 15 评论 -
智能一代云平台(三十七):Java技术栈
【前言】 最近整理一下自己过去在项目中实践和扩展的一些java技术栈;一是回顾总结一下过去自己用到的技术,二是激励自己在不断的丰富自己的知识体系;大家不妨参考一下,或许对大家有帮助。【我的Java技术栈】 1.我所用过的Java技术栈,来一张导图: 2.参考的一些资料: 史上最全的架构师图...原创 2017-07-22 19:32:36 · 20013 阅读 · 22 评论 -
智能一代云平台(四十):Maven项目如何将lib下依赖的包打印在manifest文件中
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 今天突然发现在Pom文件中进行相关的设置,可以将自己所依赖的jar包在Manifest文件中展示出来;感觉挺有趣,就自己实验了一把。【有趣的实验】 1、进行相关的实验,在Pom文件中plugins--->plugin--->co...原创 2017-07-30 09:05:44 · 20041 阅读 · 35 评论