自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(161)
  • 资源 (4)
  • 收藏
  • 关注

转载 分布式缓存的基本原理

随着互联网的发展,用户规模和数据规模越来越大,对系统的性能提出了更高的要求,缓存就是其中一个非常关键的组件,从简单的商品秒杀,到全民投入的双十一,我们都能见到它的身影。分布式缓存首先也是缓存,一种性能很好但是相对稀缺的资源,和我们在课本上学习的CPU缓存原理基本相同,CPU是用性能更好的静态RAM来为性能一般的DRAM加速,分布式缓存则是通过内存或者其他高速存储来加速,但是由于用到了分布式环境中,涉及到并发和网络的问题,所以会更加复杂一些,但是有很多方面的共性,比如缓存淘汰策略。计算机行业有一句鼎鼎大名

2021-02-19 17:02:34 439

转载 如何设计一个电商平台积分兑换系统!

1.拉开差距的一类面试题2.业务需求描述3.对业务流程的思考4.物流配送进度查询,考虑到了吗?5.事务的保证6.消息中间件的引入7.重试机制的引入8.引入幂等性机制9.对这类面试题的总结1、拉开差距的一类面试题现在面试经常会遇到一类问题,面试官让你现场设计出某个业务场景下的一个系统,这个系统往往在业务或者技术上有一定难度,主要考察的是你多年积淀下来的系统设计的能力以及技术思维的能力。类似的这类系统设计题目很多,比如: 请你设计一个秒杀系统 请你设计

2020-12-29 11:24:55 997

转载 三种方式解决SpringBoot拦截器不能注入bean的问题

一.原因这两天在写代码的时候遇到一个问题,为什么使用SpringBoot的时候,拦截器中使用@Autowired注入bean会报空指针.如下面代码所示,我们知道,Spring管理的bean发现有这个注解时候,它会直接注入相应的另一个Spring管理的bean.当 Spring 容器启动时,AutowiredAnnotationBeanPostProcessor (继承InstantiationAwareBeanPostProcessorAdapter)将扫描 Spring 容器中所有 Bean,当发现

2020-12-25 19:18:21 1189

原创 springboot 解决redis keys返回空的情况

@Beanpublic RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) { StringRedisTemplate template = new StringRedisTemplate(factory); //jackson将java对象转换成json对象。 Jackson2JsonRedisSerializer jackson2JsonRedisSerialize.

2020-12-15 16:31:40 1604

转载 SpringBoot并发执行定时任务

刚刚看了下Spring Boot实现定时任务的文章,感觉还不错。Spring Boot 使用Spring自带的Schedule来实现定时任务变得非常简单和方便。在这里个大家分享下。开启缓存注解 @SpringBootApplication @EnableScheduling//开启定时任务 publicclassApplication{ publicstaticvoidmain(String[] args){ SpringAp...

2020-12-04 17:19:57 610

原创 java发送 NameValuePair格式post请求

接口最好还是请求方式定义为json格式比较好,不然一会formdata一会数组NameValuePair,搞得开发也是晕头转向,下面是简单名称值对节点类型NameValuePair 的post的请求方式,算是比较费事的List<NameValuePair> params = new ArrayList<NameValuePair>();params.add(new BasicNameValuePair("clientId", clientId));params.add(n.

2020-12-03 17:40:38 1196

转载 java 自定义注解

什么是注解? 对于很多初次接触的开发者来说应该都有这个疑问?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且供指定的工具或框架使用。Annontation像一种修饰符一样,应用于包、类型、构造方法、方法、成员变量、参数及本地变量的声明语句中。  Java注...

2020-12-01 11:15:02 86

原创 java并发编程生产者消费者模式

为什么要使用生产者和消费者模式由于生产与消费是两块功能,所以很难保证两块处理速度完全一致,为了解决这种生产消费能力不均衡的问题, 所以便有了生产者和消费者模式。什么是生产者消费者模式生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯实现方式一:使用队列,生产者与消费之间通过队列相连,生产者将生产资料放入队列,消费者从队列里面取资源消费。 生产者消费者的示例代码: 生产者: import java.util.concurrent.Bloc.

2020-11-26 14:30:34 148

转载 如何理解多租户架构?

前段时间公司产品进行了架构的进化,进化到了多租户架构。当我第一次听到多租户时,我也挺纳闷,不理解。但当我逐渐的翻阅资料,以及研发功能时。不断的加深了对多租户的理解。尽管我现在也只是浅浅的懂一点而已。  OK,Let's get this straight(让我们搞懂它),接下来让我们问自己几个问题:  1.什么是多租户架构?  2.多租户架构的优缺点?  3.多租户架构的适用场景?  让我们带着这几个问题进入下面的阅读。一、对多租户的理解  多租户定义:多租户技术或称多重租赁技术,简

2020-11-23 13:55:22 1060

原创 volatile与Atomic的比较

一、volatile的作用我们已经知道可见性、有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果对Synchronized原理有了解的话,应该知道Synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,我们通常都避免使用Synchronized来解决问题。而volatile关键字就是Java中提供的另一种解决可见性和有序性问题的方案。对于原子性,需要强调一点,也是大家容易误解的一点:对volatile变量的

2020-11-12 14:25:43 6663 2

原创 ScheduledExecutorService ,java定期执行或者周期执行某方法

这个方法是第一次延时60秒,后面每60秒执行updateCacheFromDb方法ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();service.scheduleWithFixedDelay(new Runnable() { @Override public void run() { updateCacheFromDb(); }}, 60, .

2020-11-12 11:52:48 335

原创 支付开发包

https://gitee.com/52itstyle/spring-boot-pay

2020-11-11 16:38:26 76

转载 如何将本地jar包放入本地maven仓库和远程私服仓库

1.将本地jar包放入本地仓库。只需执行如下命令即可:mvn install:install-file -Dfile=D:/demo/fiber.jar -DgroupId=com.sure -DartifactId=fiber -Dversion=1.0 -Dpackaging=jar 打开本地maven仓库所在目录即可看到被添加的本地jar包。2.将本地jar包放入远程私服仓库A.先到maven的安装目录的conf目录下面的setting.xml查看下私服的地址。如下图是我的的sett

2020-11-11 16:11:02 202

原创 java发送form-data 格式post请求

HttpPost httpPost = new HttpPost(***);MultipartEntityBuilder builder = MultipartEntityBuilder.create();builder.addTextBody("account",*** );builder.addTextBody("password",*** );HttpEntity multipart = builder.build();String responseJson = HttpUtil.pos.

2020-11-09 11:55:01 14735 5

原创 springboot 自定义全局异常拦截

/** * @author lanxuqiang * @description: 异常处理控制器 * @date 2020/11/413:33 * @Version 1.0 */@ControllerAdvicepublic class MyExceptionHandler { public static Logger logger = LoggerFactory.getLogger(MyExceptionHandler.class); /** * 运行时异常.

2020-11-04 15:48:54 291

原创 java后端通用返回json结果封装

Response 类public class Response { /**** * 成功响应Msg中的信息 **/ private final static String SUCCESS = "success"; /**** * 失败响应Msg中的信息 **/ private final static String FAILED = "failed"; public static <T> Res.

2020-11-04 14:51:27 1096 1

原创 java实现滑动块验证登录,验证码校验,滑动验证码,字符验证码

码云地址:https://gitee.com/gester/captcha实现效果:校验成功:简介项目集成字符验证码、运算验证码、滑动验证码具有代码简洁、注释完备、配置灵活、易于上手的特点,适合所有开发者集成功能字符验证码 运算验证码 滑动验证码快速访问快速访问:http://localhost:8080/captcha/index 字符验证码:http://localhost:8080/captcha/index?type=char ...

2020-10-23 09:33:15 1497 1

原创 IntelliJ IDEA 自定义模板,修改模板

File---Settings---Editor --- File and Code Templates---includes---File header类:/** * @title: * @description: * @author lanxuqiang * @date ${DATE}${TIME} * @Version 1.0 */File---Settings ---Editor --- Live Templates---自定义 temp

2020-10-16 11:49:14 627

原创 SpringBoot2—初始化参数顺序

spring初始化参数顺序为:构造器-->自动注入-->PostConstrut-->InitializingBean-->init方法-->CommandLineRunner接口方法在容器初始化过程中便会按照如下的顺序执行初始化对象的操作。初始化——构造方法!初始化——@PostConstruct方法初始化——InitializingBean接口初始化——init方法!---容器启动完毕后...容器启动—CommandLineR...

2020-10-15 16:03:36 318

原创 maven私服更新jar包失败解决方法

pom 文件添加以下依赖<!--指定更新代码的仓库地址><repositories> <repository> <id>genzon-public</id> <name>xxx nexus repository</name> <url>http://[ip:port]/repository/maven-public/</url> .

2020-10-13 20:05:57 1093

转载 解决Maven修改setting.conf配置添加修改镜像库不生效的问题

文章目录 问题描述 解决步骤 问题描述有时候出现一种奇怪的问题,就是无论如何修改远程库,镜像库的地址,好像都不生效。下面给出排查方法与思路。解决步骤首先检查eclipse或者IDEA中配置的settings文件是否是自己编辑的那个文件。 如果是,那么检查配置的镜像库mirror,看是否有mirrorOf配置的是* ,这个值表示匹配所有的镜像库,相当于会屏蔽掉配置的其他的镜像库。 注意配置的优先级,pom 配置 > settings中.

2020-10-13 19:38:13 2818

转载 Springboot自定义Starter

目录一、码前必备知识 二、starter的实现方法 1、新建一个工程 2、pom依赖 3、定义一个实体类映射配置信息 4、定义一个Service 5,定义一个配置类 6、最重要的来了 7、测试 返回目录一、码前必备知识1、SpringBoot starter机制  SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫..

2020-10-12 17:06:22 143

原创 docker运行springboot,并查看运行日志

首先:这里镜像与容器不是一个概念,景象中包含容器。第一步:Dockerfile文件FROM java:8 #拉取镜像VOLUME /tmp #创建文件夹VOLUME /logs #创建文件夹COPY target/test.jar test.jar #将jar包拷贝至docker中RUN bash -c "touch /test.jar" #启动docker的命令WORKDIR /src/app # 指定jar包运行路径RUN mkdi...

2020-09-27 11:52:54 2330

原创 使用Docker部署Spring boot项目

第一步.打好的springboot jar包第二步.linux安装好docker这里切记,你的linux环境内核必须是3.1版本以上(用uname -r命令检查内核版本,返回的值大于3.10即可),因为docker是比较新的技术诞生于2013年 兼容性比较不好,,我的3.10勉强够第三步.在linux 创建文件夹(后来要存放jar包与docker的启动文件命令dockerfile)1.这个文件夹只放两个文件,一个jar包,一个Dockerfile2. 上传文件D...

2020-09-25 16:46:35 78

转载 spring boot 防止重复提交

服务器端实现方案:同一客户端在2秒内对同一URL的提交视为重复提交上代码吧pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache..

2020-09-18 11:16:12 441

转载 SpringBoot @Transactional 事务,运行异常进行事务回滚方法

@Transactional public int tests() { Acpgift entity=new Acpgift(); entity.setPgnum(2); entity.setContents("感谢"); acpgiftMapper.insert(entity); try { int i=1/0;//抛出异常 } catch (Exception e) {...

2020-09-15 21:38:47 923

转载 springboot+redis项目实战

1.在springboot项目的pom.xml文件里加入redis的jar依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0..

2020-09-14 14:32:45 1062

转载 生产环境CPU占用飙高问题解决

1 问题来源与背景问题背景,项目对外提供查询航班舱位接口,对航信黑屏报文做正则解析返回。由于起初对正则不熟悉,对黑屏报文格式规律不清楚,导致写了大量的长正则表达式,生产环境并发量上来(200/s),直接导致CPU使用率峰值徘徊在100%,运维报警反馈。2 运维报警3 问题定位与解决(1)第一步,用jps查看javapid(2)第二步,显示线程列表 ps -mp 42 -o THREAD,tid,time可以看到CPU占用率很高线程,...

2020-08-17 10:19:58 978

转载 Redis缓存穿透、缓存雪崩和缓存击穿

Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也都有比较流行的解决方案。本篇文章,并不是要更加完美的解决这三个问题,也不是要颠覆业界流行的解决方案。而是,从实际代码操作,来演示这三个问题现象。之所以要这么做,是因为,仅仅看这些问题的学术解释,脑袋里很难有一个很形象的

2020-08-14 09:19:52 99

原创 JVM调优

JVM调优工具Jconsole,jProfile,VisualVMJconsole :jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里JProfiler:商业软件,需要付费。功能强大。详细说明参考这里VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。如何调优观察内存释放情况、集合类检查、对象树上面这些调优工具都提供了强大的功能,但是总的来说一般分为以下几类功能堆信息...

2020-08-12 16:41:13 118

原创 最左匹配原则

1.简单说下什么是最左匹配原则顾名思义:最左优先,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会停止匹配。例如:b = 2 如果建立(a,b)顺序的索引,是匹配不到(a,b)索引的;但是如果查询条件是a = 1 and b = 2或者a=1(又或者是b = 2 and b = 1)就可以,因为优化器会自动调整a,b的顺序。再比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引

2020-08-12 09:49:58 13767 2

原创 Dubbo的一般性问题回答

什么是Dubbo?Duubbo是一个RPC远程调用框架, 分布式服务治理框架什么是Dubbo服务治理?服务与服务之间会有很多个Url、依赖关系、负载均衡、容错、自动注册服务。Dubbo有哪些协议?默认用的dubbo协议、Http、RMI、HessianDubbo整个架构流程分为四大模块生产者、消费者、注册中心、监控中心生产者:提供服务消费者: 调用服务注册中心:注册信息(redis、zk)监控中心:调用次数、关系依赖等。首先生产者将服务注册到注..

2020-08-12 09:21:09 70

转载 Redis 数据同步机制

Redis的主从同步机制可以确保redis的master和slave之间的数据同步。Redis在2.8及以上版本使用psync命令完成主从数据同步。同步方式包括:全量复制和增量复制1. 同步机制 全量复制 全量复制slave第一次启动时,连接Master,发送PSYNC命令,格式为psync {runId} {offset}{runId} 为master的运行id;{offset}为slave自己的复制偏移量 由于此时是slave第一次连接master,slave不知道mas.

2020-08-12 09:05:45 3675

转载 事务的隔离级别和传播特性

脏读:当一个事务读取另一个事务未提交的内容,之后由于另一个事务出现了异常回滚了事务,结果造成读取的数据不一致不可重复读:指一个事务多次读取同一数据,而另一个事务多次对数据进行了修改的操作,这样就导致了第一个事务每次读取的数据不一样,幻读:当事务一对整张表的数据进行操作时对其进行了新增行,而另一个事务对其进行了删除行,而这时事务一本身对其进行了新增行然而发现并没有对其新增行而产生了幻觉脏读与不可重复读的区别:脏读是对没有提交的数据进行查询,不可重复读是对已经提交的数据进行的查询不可重复读与幻读

2020-08-11 16:30:31 116 1

转载 Spring 了解Bean的一生(生命周期)

#####为什么说有可能触发Bean实例化阶段?因为当对应某个bean定义的getBean()方法第一次被调用时,不管是显示的还是隐式的,Bean实例化阶段才会被触发,第二次被调用则会直接返回容器缓存的第一次实例化完的对象实例(因为默认是singleton单例,当然,这里的情况prototype类型的bean除外)##该篇博客主要阐述#####1、Bean的一生过程#####2、Bean的后置处理器###一、Bean的一生过程####先来看以下的图(Bean的一生)####可以

2020-08-11 15:06:46 141

转载 分布式事物--本地消息表

本地消息表这种实现方式的思路,其实是源于 ebay,后来通过支付宝等公司的布道,在业内广泛使用。其基本的设计思想是将远程分布式事务拆分成一系列的本地事务。如果不考虑性能及设计优雅,借助关系型数据库中的表即可实现。举个经典的跨行转账的例子来描述。第一步,扣款 1W,通过本地事务保证了凭证消息插入到消息表中。第二步,通知对方银行账户上加 1W 了。那问题来了,如何通知到对方呢?通常采用两种方式:采用时效性高的 MQ,由对方订阅消息并监听,有消息时自动触发事件 采用定时轮询扫描的方.

2020-08-11 10:31:51 258

转载 JAVA面试题——JUC多线程及并发常见问题目录

1、谈谈你对volitile的理解2、CAS你知道吗?3、原子类AtomicInteger的ABA问题谈谈?原子更新引用知道吗?4、ArrayList的线程不安全问题。5、各种锁。6、CountDownLatch/CyclicBarrier/Semaphore使用过吗?7、阻塞队列知道吗?8、线程池用过吗?ThreadPoolExecutor谈谈你的理解?9、线程池用过吗?生产上你是如何设置合理参数。10、死锁编码及定位分析11、问题及答案大全...

2020-08-05 09:28:57 246

原创 spring项目静态方法注入数值

通过中间变量赋值import javax.annotation.PostConstruct;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;@Componentpublic class Test { public static String url = "/dev/xx"; @Value("${url...

2020-07-28 14:12:38 175

转载 SpringBoot三种方式实现定时任务

SpringBoot三种方式实现定时任务定时任务实现的三种方式:Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。ScheduledExecutorService:也jdk自带的一个类;是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,任务是并发执行,互不影响。Spring Task:Spring3

2020-07-28 09:53:23 211

转载 Java 发送邮件添加日历提醒,添加附件,添加文本

public class Test1 { public static void main(String[] args) { sendMeetingInvitationEmail(); } private static Properties props; private static Session session; public static void sendMeetingInvitationEmail() { try { .

2020-07-14 20:24:49 1244

sharding-jdbc.zip

sharding jdbc ,maven项目Domo,x本地可以调试,给予maven的java项目

2019-07-31

linux/windows版本tomcat7

文件包含 linux版本tomcat7余windows版本tomcat7,根据需要进行配置

2018-06-12

commons-pool2-2.4.2和jedis-2.7.2

redis所需要的jar包commons-pool2-2.4.2.jar和jedis-2.7.2.jar

2018-06-12

一个简单的Restful例子以及讲解

一个简单的例子,有助于开发人员参考进行后续开发,一个简单的demo

2018-06-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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