自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

红豆和绿豆的博客

主要记录当下的技术以及一些总结

原创 商品详情页中台-设计篇

背景:目前互联网大部分业务都是以商品做为载体,然后让用户买买买,如何做一个通用商品详情页的设计也是很重要的 因为本文就设计一下系统 (1)针对多端,QQ,微信,京东,淘宝等多个客户端进行抽象工厂的设计 (2)针对各种数据聚合,如何提高接口的响应速度,使用并发调用 (3)页面区块...

2020-02-28 12:52:46

阅读数 9

评论数 0

原创 FactoryBean与动态代理结合

FactoryBean   与普通Bean区别: FactoryBean返回的对象不是其实现类的一个实例,而是getObject()方法所返回的对象。   作用: bean的配置统一, 控制getObject()的逻辑返回不同的bean; 与动态代理结合   场景: RPC调用时,消费者需要向调...

2019-11-02 22:47:29

阅读数 49

评论数 0

原创 如何实现扩展点方案一

使用FactoryBean和动态代理 实现针对一个接口动态的在执行的时候 获取实现类 package extpoint; public enum BizIdentityEnum { QQ("123","qq"), WEIXIN(&q...

2019-11-02 22:45:18

阅读数 52

评论数 0

原创 分布式trace实现系统治理

日志拉取客户端 logstash、flume 日志存储中间件缓存: kafka 日志实时处理 flink,storm,spark都可以 处理结果存放: es,hbase,redis 业内实现 开源的Open Tracing openTracing是为了解决不同系统之间的兼容性设计...

2019-10-05 23:06:31

阅读数 50

评论数 0

原创 后端程序员需要学会的分布式中间件

分布式服务:dubbo,gprc,springcloud 分布式消息:notify,metaq 分布式缓存:tair,memcache,redis 分布式调度:scheduler 分布式数据库分库分表中间件: 分布式搜索:es 分布式事务:xts,txc 分布式计算:flink,st...

2019-10-05 22:51:05

阅读数 40

评论数 0

原创 边学英语边学知识

http://www.javaposse.com

2019-10-05 22:42:12

阅读数 31

评论数 0

原创 如何实现单点登录和权限控制

在分布式的环境下,如何实现用户的单点登录以及权限控制? (1)可以使用开源软件CAS, CAS的客户端支持java,/net,php等语言 CAS的server支持多种登录方式,用户名,密码,图形。以及手机号和验证码,微信登录 如果业务是分布式开发,则需要与spring sess...

2019-10-05 22:25:16

阅读数 15

评论数 0

原创 分布式session的方案

1、如何实现分布式session,保证在分布式的条件下让用户只登陆一次就可以? 方案: (一):使用cookie+tair的方式实现 cookie存放sessionid给服务端,服务端根据sessionid获取tair中具体的session信息 (二)使用Spring-sessi...

2019-10-05 21:49:12

阅读数 12

评论数 0

原创 如何实现各种行业各种类型会员卡体系的设计

背景:目前很多的公司都有自己的会员体系,那么如何让用户成为会员呢?增加用户的粘性。如果你是一个架构师如何长远的设计整体的方案,从而兼容各种业务场景的使用?比如淘宝的88vip会员卡,肯德基的会员卡,麦当劳的会员卡,鲜丰水果的会员卡,京东会员卡,等等各种电子会员卡,有的是收费的,有的是免费的。 设...

2019-10-04 23:19:46

阅读数 66

评论数 0

原创 使用spring项目的HbaseTemplate对hbase进行复杂查询

1.hbase连接管理类: package com.xcsqjr.acs.web.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annot...

2019-10-04 22:38:06

阅读数 170

评论数 0

原创 hbase的基本封装

背景:目前在做项目的时候,需要使用hbase进行数据的查询,一些评论记录,消费数据,交易日志等数据都是存储在hbase中的,因为都是海量的数据。了解hbase的原理是必要的,因此必须要学习好 rowkey的设计,否则会出现热点问题。可以百度这个rowkey 的设计,比如一般使用:随机,md5,分桶...

2019-09-28 22:09:21

阅读数 42

评论数 0

原创 java8针对LocalDateTime和LocalDate和LocalTime和Date之间的转换

package date; import java.time.*; import java.time.format.DateTimeFormatter; import java.util.Date; public class DateTest { public static void ...

2019-09-15 21:01:23

阅读数 96

评论数 0

原创 阿里巴巴开源框架JarsLink,可以使用热部署的方式发布jar,实现业务隔离

JarsLink (原名Titan) 是一个基于JAVA的模块化开发框架,它提供在运行时动态加载模块(一个JAR包)、卸载模块和模块间调用的API。也是阿里巴巴的开源项目之一https://github.com/alibaba/ja...,目前在微贷事业群广泛使用。 使用场景 (1)统一下单,...

2019-09-15 16:56:47

阅读数 138

评论数 0

原创 新系统创建如何搭建一个简单的框架

背景:最近在搭建新的系统,因此在搭建系统的时候,我主要做了以下几个方面的事情 步骤: (1)首先实现一个模版回调做为一个业务入口,实现统一参数校验、业务执行、统一异常处理、统一监控埋点日志打印处理 (2)业务执行步骤:可以使用自己编写简单的工作工作流引擎和并发调用框架,做为基础公共模块供业务...

2019-09-15 16:30:30

阅读数 139

评论数 0

原创 使用slf和logback进行日志打印

简介 java里面日志分为两部分一个门面、一个实现,我们所熟知的SLF4j、Log4j、Log4j2、Logback的日志组件slf4j是门面提供的统一的入口,具体实现由log4j、log4j2、logback来实现 log4j由于太老作者自己也不打算重构了所以放弃 log4j2是apach...

2019-09-15 16:16:56

阅读数 48

评论数 0

原创 使用javax的validation和hibernate-validator框架对pojo类的属性进行校验以及扩展

背景:如果页面表单有很多字段需要提交,因此使用注解校验的方式针对pojo的属性进行校验 因此使用javax标准以及org.hibernate的validator的注解校验 具体的javax的validation的注解以及hibernate的注解都是可以使用的,具体的扩展可以在网上找找,目前在这里...

2019-09-15 16:09:34

阅读数 206

评论数 0

原创 封装一个并发调用的类,业务层只需要调用一个简单的类就可以并发调用,实现业务隔离

背景:目前比如大型电商淘宝,京东的商品详情页和店铺详情页都有大量的信息,目前如果一个主接口串行的调用,则会出现性能不足的情况,因此可以考虑使用多线程的调用,看看具体的业务是否是cpu密集型 还是 io密集型,一般都是io密集型,因此使用多线成问题不大。做好一个业务一个线程池,分开维护,如果多个业务...

2019-09-15 14:49:36

阅读数 152

评论数 0

原创 系统迁移涉及到的方案

背景:目前在做公司系统迁移的任务,需要将一个系统的能力拆分到一个新的系统,涉及到DB的的一些数据 步骤: (1)首先涉及架构方案,比如针对数据的处理,存量数据和增量的数据。 存量数据同步的方式: 存量的数据可以通过离线表清洗出id,然后通过接口调用的方式进行数据迁移。 增量数据同步的方式...

2019-09-15 11:57:34

阅读数 471

评论数 0

原创 实现拦截器,使用代理设计模式

public interface Invocation { void invoke(); } public class ApiInvocation implements Invocation{ private Iterator<Intercap...

2019-08-31 23:32:49

阅读数 496

评论数 0

原创 如何针对一个页面有多个模块进行可扩展的设计

使用抽象工厂设计,兼容不同客户端有不同的模块 针对不同的模块进行抽象 针对多个服务的调用,可以并发的调用缩短整个页面的响应时间 package homepage; import org.springframework.util.CollectionUtils; import java....

2019-06-23 15:36:00

阅读数 125

评论数 0

原创 找到一个类所有的子类

Welcome Latest version of Rebound is version 0.2 Rebound is a Java library for looking up subclasses of a given class or interface using Java refle...

2019-06-03 20:04:13

阅读数 135

评论数 0

原创 java动态编译

我曾经见过一个“规则引擎”,是在应用系统web界面直接编写java代码,然后保存后,规则即生效,我一直很是奇怪,这是如何实现的呢?实际这就好像jsp,被中间件动态的编译成java文件,有被动态的编译成class,同时又动态的加载到classloader中。所以,本质上,纯java得规则引擎,是10...

2019-05-04 23:05:23

阅读数 67

评论数 0

原创 实现一个简单的内存分页功能

package page; import java.io.Serializable; import java.util.List; public class Response implements Serializable { private List list; pri...

2019-05-04 20:10:46

阅读数 63

评论数 0

原创 购物车

功能:购物车一般有的功能,查询购物车,新增购物车,删除购物车,清空购物车,修改购物车(先删除在增加) 设计:购物车id,商品id,skuId,数量,用户id,用户名字,商户id,购物车类型,购物车记录状态,扩展属性,版本 功能实现 查询购物车: 根据用户id查询用户加购的所有商品 加: ...

2019-05-04 12:55:14

阅读数 152

评论数 0

原创 购物车下单方案

背景:目前很多电商系统中都有自己的购物车,购物车下单的方案 方案: (1)可以使用预下单的方案,就是在提交订单之前,先调用下单接口,把扩展信息数据放到tair中,然后返回一个uuid的值,下单的时候,把这个uuid透传过来,这样就可以解决浏览器无法透传大量参数的问题。下单根据uuid的信息获取...

2019-05-03 21:05:30

阅读数 217

评论数 0

原创 消息的使用

背景:很多大型互联网公司,数据都是最终一致性,因为访问量巨大,需要大量的机器来承载用户的访问,有的系统不能承载着么大的流量,因此可以考虑使用异步消息的方式,实现数据最终的一致性 消息:目前消息有很多中间件,notify,metaq 一种是基于推送,一种是基于拉取,如果使用notify,基于推...

2019-05-03 17:43:09

阅读数 35

评论数 0

原创 针对同时调用多个系统,如何保证数据的一致性

背景:目前很多公司都是面向分布式系统开发,因此需要考虑数据的一致性,比如发布一个商品,可以落商品基本的信息在一个表,商品的规则在一个表,商品的模版信息在一个表,商品的sku信息在一个表 ,如何保证表单提交的时候,保证数据的一直性 思路 (1)看商品的设计,如果商品提供原子操作,那么业务方就...

2019-05-03 17:31:10

阅读数 580

评论数 0

原创 Spring 的getBeanNamesForType和getBean联合使用

(1)Spring的getBeanNamesForType(interface.class) 1、获取 applicationContext,通过ApplicationAware自动注入 2、getBeansOfType、getBeanNamesForType   Map<String...

2019-04-25 20:00:40

阅读数 568

评论数 0

转载 GroovyClassLoader类进行java调用groovy脚本

1 目的 动态执行任务或者扩展功能,需要java动态执行groovy代码 2 项目依赖 <dependencies> <dependency> <groupId>org.codehaus.groovy</groupId> <ar...

2019-04-07 20:58:42

阅读数 561

评论数 0

原创 Supplier的使用

背景:如何将一个域关联的属性搞到一个类中,可以使用Supplier这个类 public class SupplierTest { public enum PersonEnum{ NAME("name",PersonEnum::getNa...

2019-04-06 00:49:12

阅读数 295

评论数 0

原创 BiFunction的使用

背景:如果一个商家有A,B二个门店,想把A的属性复制给B 主要使用BiFunction的使用 实现: public interface CopyRule { /** * 对in执行拷贝结果到out中. * * @param in * @pa...

2019-02-19 22:09:51

阅读数 274

评论数 0

原创 BiPredicate的使用如编写一个简单的规则校验,使用枚举实现对一些参数的校验

public interface CheckRule { /** * 是否校验通过 * @param r * @param dataClump * @return */ boolean isValid(User r, DataClu...

2019-02-19 21:51:15

阅读数 269

评论数 0

原创 日期处理类 org.apache.commons.lang3.time.DateUtils

org.apache.commons.lang3.time之DateUtils   commons-lang3-3.3.2     /**      * 以秒为标准时间的毫秒数      */     public static final long MILLIS_PER_SECOND ...

2019-01-31 11:38:49

阅读数 306

评论数 0

原创 人机交互游戏实现

背景:如何实现人机交互游戏,比如paceman这个吃豆人的游戏,ghost就是电脑自动移动,paceman就是人操作,如何实现这个游戏? 方案: (一)需要使用客户端与服务端建立长链接的方式进行通讯,目前使用Netty通讯,实现长链接。Netty自己开发一个server,根据入参数返回一个js...

2019-01-27 16:14:54

阅读数 407

评论数 0

原创 Git命令集合

git学习指南 从远程拉取分支 git checkout -b 本地分支名 origin/远程分支名   git的合并流程 git checkout -b iss53 git commit -a -m 'added a new footer [issue 53]' ...

2019-01-12 18:43:06

阅读数 95

评论数 0

原创 服务端优化小结

(1)场景一,如果一个集合有是一个商品集合,集合的元素有1000个,如果一次查询1000个商品,则可能会出现超时的情况,因此需要改造。 场景一的改造方案:将1000个元素的集合进行拆分为50个元素为一个集合,50是一个根据数据库性能评估出的一个数据,这个值可以动态调整,List&lt;L...

2019-01-01 17:27:13

阅读数 147

评论数 0

原创 MD5生成16进制的工具方法

MessageDigest md = MessageDigest.getInstance("MD5"); md.update(str.getBytes()); md5 = new BigInteger(1, md.digest()).toString(16);

2019-01-01 14:09:26

阅读数 386

评论数 0

转载 dalgen代码生成工具

https://www.jianshu.com/p/e2b5d5a16bf0 1.    简介         目前项目中的common-dal层代码还是主要靠人工去写,这就引入一个问题,数据库一点修改那么common-dal层对应的sql-map文件,dao和对应的实现,以及对应的数据库DO对...

2018-11-13 11:10:20

阅读数 344

评论数 0

原创 定时任务的使用

背景:一说到定时任务,就是在指定的时间触发。目前可以使用quartz来实现,如果项目使用spring,也可以使用spring的集成定时任务。如果你的项目就一台服务器,那没问题,如果是多个应用服务端,那定时任务在每个机器都会执行。因此在分布式情况下,触发一个定时任务,多个机器可以并发的执行任务,完成...

2018-11-12 16:50:44

阅读数 171

评论数 0

原创 google的RateLimiter限流器的使用

背景:A系统需要调用B,C,D系统,B,C,D系统没有能力做限流,因此需要A系统针对B,C,D系统做限流,每秒发送对象要求的请求数。可以使用下面的组件进行控制 import com.google.common.cache.Cache; import com.google.common.cach...

2018-11-12 15:24:05

阅读数 681

评论数 0

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