WEB后端开发
文章平均质量分 83
主要以实践为主分享一些开发过程中的案例、遇到的坑
JeangLee
技术在于折腾
展开
-
ID生成器——雪花算法
分库分表中经常遇到需要保证多个分库或分表中的`id`唯一性,为区分同一个表不同分库中的id,通常需要引入ID生成器中间件来保证id唯一性。当`id`作为分库分表参数时,有时会希望属于同一类别的数据存入到一个库中,便于查询、维护,此时`id`本身则需要包含某些用于识别。文中用场景——“用户发帖”来介绍雪花算法ID生成器的实现。基因法实现ID生成器原创 2020-10-15 16:08:58 · 4724 阅读 · 0 评论 -
缓存与数据库一致性策略
在缓存与数据库一致性方案中,最佳方案是采用先淘汰缓存后更新库表策略,通过缓存过期机制、双删可以满足绝大部分场景需求,但在高并发、对于数据一致性时延要求较高的场景中,可采用分布式读写锁策略。原创 2020-09-17 18:00:36 · 737 阅读 · 2 评论 -
连接池大小如何优化
对于WEB项目开发,涉及网络调用时,连接池是很常用的技术。为什么要使用连接池技术,连接池带来的优势具体体现在哪里,连接池大小是不是越大越好等这些问题是开发过程中技术选型需要思考的问题,本文通过一个简单的案例揭开关于连接池的原理。文章介绍了连接池的原理,实现了一个简单的数据库连接池Demo,并进行高并发测试,发现连接池大小并不是越大越好,并介绍了连接池大小选择原则。原创 2020-07-06 21:36:26 · 550 阅读 · 0 评论 -
ElasticSearch使用入门及拼音搜索介绍
最近有个项目需要用到拼音搜索并高亮显示所匹配的中文,其实拼音搜索可以通过将中文转化为拼音存储在库表如mysql中,然后通过sql like语句查询搜索到对应的中文,在一些并发要求并不高、中文已知的情况下是完全可以做到拼音搜索。但是由于项目要求不仅能够搜索出来对应的中文,但是对于高亮显示匹配的中文难度成本就比较高了,此时需要通过中文拼音分词来实现。 经过一番调研,鉴于elasticsea...原创 2018-08-04 14:49:17 · 9236 阅读 · 4 评论 -
Spring Security Oauth2实践(3) - 单点登录(SSO)
本次分享基于Oauth2实现SSO单点登录的实践。这个场景经常用于企业开发,集成多方系统认证。分享CAS与Oauth2实现上的区别,给出Oauth2实现的一个demo,但在单点登出时,Oauth2服务端及客户需要基于过滤器方式定制开发实现。原创 2020-03-30 03:15:15 · 530 阅读 · 0 评论 -
Spring Security Oauth2实践(2) - 客户端对接
本文基于Spring Security OAuth2提供一个Oauth2客户端对接demo,采用SpringBoot 注解@EnableOAuth2Client配置客户端,成功实现登录、授权、获取资源信息等过程,提供一种Oauth2客户端的实践原创 2020-03-08 01:20:40 · 3377 阅读 · 2 评论 -
Spring Security Oauth2实践(1) - 授权码模式
笔者最近花了点时间研究Oauth2原理,基于spring写了一些demo用于实践探索,深深体会到Spring Security Oauth2框架的便利,框架帮我们封装太多了底层实现,所以使用起来非常方便,除了可以为第三方应用提供授权,也可以作为应用的登录框架。文章基于Spring Security Oauth2.0授权码模式实践,采用SpringBoot搭建Demo讲述基本使用过程。概述...原创 2019-09-21 23:13:03 · 3955 阅读 · 6 评论 -
两种Java Http客户端 httpclient4.3 +RestTemplate
apache httclient模式(4.3版本)public class HttpClientUtils { public static final int connTimeout=10000; public static final int readTimeout=10000; public static final String charset="UTF-8"...原创 2019-08-27 19:44:55 · 354 阅读 · 0 评论 -
利用jstack工具分析JVM线程
笔者是WEB JAVA后台开发,最近在线上遇到过几次服务不可用问题,基本现象是接口请求无响应或响应非常慢达到分钟级别。一般问题发生时我们都会去查看日志,经常遇到没有日志的情况(此时服务无法响应client请求),甚至要去找几个小时前的日志现象发生时,有些接口甚至没有日志打印,查找起来很困难,利用jvm的线程栈工具jstack对于查找问题有很大帮助。文章以SpringBoot为框架开发一个we...原创 2019-07-05 15:31:09 · 1291 阅读 · 0 评论 -
Sonarqube代码审查平台安装_JDK1.7+Maven3.3.9
基于JDK1.7代码审查平台sonarqube安装sonarqube已经更新到7.0版本了,但是从5.6版本以后就只支持JDK1.8了,网上大部分资源也都是基于JDK1.8的,在这方面走了不少坑,尤其是在后面用Maven-scanner扫描Maven项目的时候,各种报错。经过几天摸索终于在Linux中搭建成功了,JDK版本用的是1.7,因此本文对于项目JDK版本用的是1.7的想搭建sonarq...原创 2018-02-26 14:20:04 · 3154 阅读 · 0 评论 -
SpringTask执行定时任务中调用方法中断问题
使用SpringQuartz轻量级定时任务时,出现任务中的方法调用链未执行完,也未抛出异常,然后到下一次时间就继续执行下一次的任务。最后debug调试是因为异常被捕获未在打印错误信息导致的。原创 2017-11-26 16:51:19 · 5547 阅读 · 0 评论 -
Spring Redis与ActiveMQ发布订阅模式源码分析
文章对SpringRedis和ActiveMQ的源码及使用简要分析一下,希望能起到抛砖引玉的作用。笔者之前在博客中写了一篇关于生产消费者模式的一个工程使用案例,10W级数据更新操作__生产消费者模式。其实发布订阅模式与生产消费者只是两种模式上的不同,在业务处理逻辑上还是比较相似的。前者数据结构是一对多队列模式,后者是点对点队列模式。原创 2017-09-10 21:56:27 · 3191 阅读 · 0 评论 -
Netty-SocketIO实现服务器消息推送
在有些场景下,如股票价格实时显示、直播、在线聊天等场景,则需要服务器主动向客户端推送消息,显然Http协议并不太适合完全这项工作,而Netty-SocketIO是基于Netty框架下用Java实现Socket通信的组件,可用于服务器主动推送消息到客户端的情形。原创 2017-08-27 15:21:18 · 16979 阅读 · 4 评论 -
10W级数据更新操作__生产消费者模式
背景需求 最近有这么一个需求:由于本地系统信息与另一个系统数据可能不一致,两个系统有各自的独立数据库和业务,在通信过程中网络等原因,导致两者之间的关键信息有差异,因此本地数据库中可能有10W条记录需要更新,本地数据库的信息需要逐条与远程http请求数据,对比或更新。技术分析如果将本地数据库全部取出放入一个集合中,然后遍历并发送http请求核对数据,显然不太现实。存储10W条记录需要多大的缓存?原创 2017-07-07 10:30:03 · 760 阅读 · 0 评论 -
HTTP的“长连接"初探
背景 项目的一个功能:持续异步通知下游服务器消息,获取下游服务器的消息返回并处理。思路(1)开启一个timer.schece线程启动定时任务; (2)服务与下游的url(Controller)建立一个Http连接,并response.writer消息; (3)2min钟后,收到下游的消息或者没有收到,再response.writer消息,发现此时行不通。服务端会报空Host错误。问题分原创 2017-06-08 14:58:11 · 642 阅读 · 0 评论 -
VirtualBox安装ubuntu虚拟机,配置网络
导语 对于要学习Linux的或者需要用到Linux配置虚拟,电脑配置不是很高的同学,VirtualBox由于启动占用电脑资源少而且开源免费,是个不错的选择。本文简单介绍在Win7_64位下的安装步骤。VitualBox安装VitualBox网上有许多版本,但是很多有或多或少有启动报错问题。目前问题较少比较稳定的版本为4.3.12,安装过程比较简单,一路next就OK。Ubuntu安装下载ubu原创 2017-06-15 21:34:08 · 2132 阅读 · 2 评论