自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 springboot 原理 (一) 启动
原力计划

springboot 近年来很火,因为他的一些特性。 springboot 特性 官方原话: Create stand-alone Spring applications (能创建独立运行的应用) Embed Tomcat, Jetty or Undertow directly...

2020-07-02 14:29:06 85 0

原创 mysql 的一些 优化经验 记录

将一个大连接查询(JOIN)分解成对每一个表进行一次单表查询,然后将结果在应用程序中进行关联,这样做的好处有: 让缓存更高效。对于连接查询,如果其中一个表发生变化,那么整个查询缓存就无法使用。而分解后的多个查询,即使其中一个表发生变化,对其它表的查询缓存依然可以使用。 分解成多个单表查询,这些...

2020-06-29 12:19:48 58 0

原创 分布式服务之分布式缓存(layering-cache)
原力计划

很多高性能高并发的优化最有效果的优化就是做缓存, 缓存又分本地缓存和分布式缓存,分布式缓存大多数用redis, 但是高并发下的redis有时候网络消耗多的时候也扛不住, 于是redis又可以做分布式redis,增加redis的服务器节点和配置, 但是这个成本也比较高,其实完全可以用本地缓存...

2020-04-07 17:28:01 313 0

原创 springboot 秒杀系统(三)高并发服务间调用

分布式系统的思想就是: 如果一个系统的压力过大,可以把一个服务拆分成多个服务,这个叫垂直拆分。 也可以考虑做镜像集群,负载平衡,这个叫水平拆分。 这个系统我们可以考虑垂直拆分,将订单相关的功能拆分出来。 我们将订单的逻辑拿出来,放到order-service中,通过backend来调用...

2019-12-16 16:38:28 1550 4

原创 总结 项目中的技术方案选型和为什么

1,为什么要前后端分离。 1.1 前后端分离可以让开发人员更专注于自己的专业,开发效率更高 1.2 前端和后端分开部署在各自的服务器,性能更好 2, 前端为什么用vue。 2.1 国人产的,支持国货 2.2 响应式编程,前端给客户体验更好 2.3 社区活跃...

2019-09-21 18:46:21 773 0

原创 大数据 (三) BI报表系统 superset 2 制作表格

superset是git上star很多的项目,已经进入了apche的孵化器 上节我已经介绍了superset的开发搭建环境,比较麻烦,其实大家可以直接通过 命令安装,这样还简单些,下面我介绍一下superset的一些用法 superset:既然是做BI智能报表的,具体用途应该配合大数据或...

2020-06-24 17:54:47 128 0

原创 大数据(二)flink 2 代码demo

上节是介绍一些概念。下面是具体的例子。 代码传至GITHUB 传送地址 一般都是flink消费kafka的数据来实时统计数据的 引入flink相关jar包 <properties> <flink.version>1.7.0</flink.v...

2020-06-11 16:30:04 29 0

原创 大数据 (三) BI报表系统 superset 源码搭建开发环境

公司要用BI报表给业务来分析查询数据,对比了几个BI报表,不是收费,就是一般 最后决定用superset BI报表,开始去git上找源码开始搭建环境了。 我们是5月中下旬开始下的,当时superset的最新版本是0.36,我们从主分支master直接下载。 我们之前一直弄java,pytho...

2020-05-29 13:46:42 368 0

原创 大数据(二)flink 1 概念介绍

Flink介绍: Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。 2015年升级为Apache的顶级项目,然后突然爆发,之后被阿里收购。 基本上国内说得出名字的大厂都在用flink。 Flink特点: 1,事件驱动: 根据数据的到来触...

2020-05-21 15:40:34 71 0

原创 大数据(一)flume

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。 以下主要版本是Flume-ng. Flume的应用主要用...

2020-05-14 15:38:31 53 0

原创 大数据架构及技术体系

下面是大数据体系架构图 大数据分2个部分,一部分是走实时的,另外一部分是走离线的,不管那块都需要数据来分析 从上图来看,数据分为结构化数据(MYSQL,ORACLE等),半结构数据(文件日志),非结构化数据(视频,PPT等) 我们一般需要分析的数据 就是结构化的数据和非结构化的数据,非结...

2020-04-30 17:19:13 205 0

原创 为什么要用大数据和大数据的介绍

像我们做应用开发的(JAVA),会遇到很多的性能瓶颈, 最常见的也是最难解决的是数据库存储和查询方面的,当然也有很多 解决方案,比如:做表设计优化,查询优化,数据库主从优化,分库分表优化等。 但是不管你怎么优化,当量到了一定程度的时候,这么操作就没什么优化效果了 以用的最多的MYSQL来说...

2020-02-28 10:46:12 264 0

原创 分布式和微服务的区别

分布式和微服务有什么区别: 分布式是整个系统的一个顶层设计概念,我们常说分布式设计,分布式系统等, 从概念理解,分布式服务架构强调的是服务化以及服务的分散化, 微服务则更强调服务的专业化和精细分工; 从实践的角度来看,微服务架构通常是分布式服务架构, 反之则未必成立。所以...

2020-01-15 13:27:34 123 0

转载 在团队中使用GitLab中的Merge Request工作模式

在团队中使用GitLab中...

2019-12-30 17:33:50 104 0

原创 spring 源码解析(一)

spring源码解析是一个很大的工程,但是又是程序员进阶的一个 必经之路,至少了你阅读了它之后,不仅在开发中应用它的时候, 能够知道它的运行原理,排查spring的各种问题,更重要的是,通过阅读 spring源码,你可以学习它的设计理念,然后把这种开发习惯和思路用到你平常的 开发中。 阅...

2019-12-26 10:36:48 57 0

原创 mybatis源码解读

mybatis基本上都在用,我们来了解它的源码和实现 我看Mybatis源码的经验分享给大家,大家可以参考, 1,我们首先把源码下载,https://github.com/tuguangquan/mybatis 这个是他人做了中文注释的源码,下载到本地。 2,导入mybatis-paren...

2019-12-23 17:19:39 607 1

原创 一个好的系统的自我修养

前言 一般一个系统大概分3个部分,前端 - 后端 - 数据库。 前端 可能是N台电脑,N个手机,所以压力最小 后端 很多个用户操作电脑端或者手机端请求 压力很大 数据库 又有1个或者多个后端程序来请求它, 所以它的压力是最大,资源也是最紧张的 所以我们设计的系统的准则是什么:...

2019-12-16 17:39:39 208 1

原创 springboot 秒杀系统(二)redis

上一步我们做的秒杀虽然在操作上没问题, 但性能上能有很大的提升空间。 我们可以先把秒杀数据加载到内存中,考虑到以后服务集群化, 所以加载的数据不存放在JVM中,而存在放redis 首先,我们都知道,redis在数据存取方面远远大于mysql 所以我们第一步优化是:可以将秒杀数据加载至RE...

2019-12-13 16:55:34 797 0

原创 springboot 秒杀系统(一)

秒杀系统应该是很检验一个人的能力的项目。包括从前端 到运营商到nginx到后端等等,很多地方可以优化。 前端的页面控制,运营商的CDN加速,nginx的动静分离等 下面我来一步一步实现后端的秒杀功能的一步一步实现和优化。 后端接口 1,获取商品详情,2,秒杀接口 获取商品:参数 商品I...

2019-12-13 14:38:42 375 0

原创 redis 的 应用场景

redis的特性:访问速度快,单线程,超时删除,易扩展等 所以redis在现在的应用中应用越来越广泛 1,缓存一些热点数据,比如查询多的字典,商城里的商品,工作流的处理人员等, 同时可以设置一些失效时间,这个会大大提升系统的性能,减少数据库的访问压力 在大部分的项目中应该都有用到(我们公司...

2019-12-04 09:30:07 279 0

原创 springboot 引入一些低版本的包

最近一个问题,记录一下, 我要引入 jedis client这个redis客户端包,于是 我在Pom加入了 <dependency> <groupId>redis.clients</groupId> <artifactId>j...

2019-12-03 18:15:19 246 0

原创 JAVA中的深拷贝和浅拷贝

对于一个对象的拷贝,有很多方法,比如最简单的 就是这个类实现 cloneable接口,实现clone()方法即可, 但是这样是浅拷贝,意思就是对象的基础类型和引用对象的句柄都拷贝过去了 注意 这里说的是引用对象的句柄 但是,学过JVM的都知道,基础类型都是存放在JAVA栈中, 引用类型:...

2019-11-27 10:40:39 115 0

原创 编写自己的工具starter类 (一)- spring-boot-redis-starter

开始 spring-boot 为什么现在这么火了,因为它解决了很多配置信息文件 实现了集成一个组件,装箱即用的效果。也就是约定大于配置。 平常工作中,我们也可以开发自己的starter包,下面以我写的一个工具包为例 需求 写一个redis的客户端spring boot工具包,同时能够实现...

2019-11-26 10:27:25 843 1

原创 JDK1.8 新特性(一) Lambda表达式

1 为什么要学习Lambda表达式了?装B?写代码更吊? 都不是,比如你看一些源码的时候(很多源码都使用它了),有很多Lambda表达式 你又看不懂,怎么办,只有学习它,弄懂它,是吧? 为什么要用Lambda表达式了? 它使你的代码看起来更简洁,代码量更少.. 其它的语言都引进了,作为第...

2019-11-25 11:02:54 65 0

原创 redis cluster 集群实现方式 分布式分片存储

redis集群有三种方式, 1,主从模式,即一个master,一个slaver 2,哨兵模式,哨兵模式建立在主从模式基础上,一主多从或多主多从 当主挂了之后,会在从节点里选举一个作为主节点,这个时候redis会有 一个空档期,即不可写入。而且当数据过多,redis压力越大,是全部缓存在各个...

2019-11-21 18:01:02 150 0

转载 SpringAOP原理分析

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-11-20 10:54:49 49 0

原创 canal1.1.3 mysql 数据实时同步 redis mq等

最近有个需求,需要将一张表同步redis, 找到了CANAL,又是阿里开发的,下面是官方介绍 开发背景 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,...

2019-11-13 11:08:14 366 0

原创 springboot 中 mybatis-plus 多数据源切换

之前的项目中,要做多数据源,网上的一般思路都是通过AOP 在service或者mapper层做数据源的动态切换,大部分人大概切换数据源代码如下 @Pointcut("execution(* com.gzstrong.cloud.qspj.*.mapper..*.*(..))&qu...

2019-11-12 09:48:51 269 0

原创 JAVA虚拟机的内存结构

JVM是Java虚拟机,运行在操作系统之上,所以JAVA 有着 一次编译,到处运行的功能 JVM的内存分下面几个部分 1,程序计数器 线程私有的,每个线程都有自己的程序计数器。 是当前线程正常执行的那条字节码指令的地址,若当前线程执行的是一个地址方法, 那么此时程序计算器未Undefin...

2019-11-06 09:57:17 33 0

原创 springboot 实现读写分离,分库分表 (三) 使用SHARDINGJDBC分表

我们知道,当表的数量大于一定限度的情况下,操作起来就非常慢 所以我们就可以把表分成拆分成多个表保存, 比如我一个user表,未拆分前,有五千万条数据, 我们就可以把它拆成10个表来保存, 当然你的主键是一个有序自增长的序列,这个自增长的ID必须在插入之前就分配, 可以参考分布式ID生成机...

2019-10-24 12:00:22 136 0

原创 springboot 实现读写分离,分库分表 (二) 使用SHARDINGJDBC读写分离

上个博客讲了MYSQL的主从配置,主从数据库配好了以后 就可以实现读写分离了。 一般读写分离,主库做增删改等操作, 从库做查询操作。如果查询多的话,可以多做几天从库。 SHARDINGJDBC最开始是由当当网开始的一个开源项目。由于反响好 直接进入apache的孵化项目,更名为 SHAR...

2019-10-22 23:30:44 146 0

原创 springboot 实现读写分离,分库分表 (一) mysql 5.7 主从数据库配置

一个系统往往最后的瓶颈就是数据库,所有现在出了分布式数据库的概念, 但是部署分布式数据库对硬件和技术的成本要求更高。 所以还是很多公司采用数据库主从和读写分离的技术来平摊数据的压力。 数据的读写分离有MYCAT,SHARDINGJDBC等, 下节介绍SHARDINGJDBC来实现读写分离,...

2019-10-22 16:23:17 181 0

原创 rabbitmq 怎么保证幂等性,数据一致性问题

mq的作用主要是用来解耦,削峰,异步, 增加MQ,系统的复杂性也会增加很多, 也会带来其他的问题,比如MQ挂了怎么办,怎么保持数据的幂等性 幂等性问题通俗点讲就是保证数据不被重复消费,同时数据也不能少, 也就是数据一致性问题。 下面是MQ丢失的3种情况 1,生产者发送消息至MQ的数...

2019-10-14 09:46:03 722 0

原创 钉钉 H5微应用开发 免密登录

近2年钉钉很火,很多企业在用,要做一个钉钉的微应用 打算用VUE做前端,springboot做后端。其中比较重要的就是钉钉的免密登录,网上资料比较少 而且很多都过时了,下面我这个官方SDK包是20190926发布的 钉钉微应用开发者文档:https://ding-doc.dingtalk.c...

2019-10-13 11:57:50 2600 6

原创 MAVEN 引入外部包,并打包时引入外部JAR

最近做一个钉钉项目,引用官方的jar包,taobao-sdk-java-auto_1479188381469-20190926.jar 需要项目引入外部包,而不是直接依赖引入maven库 1,在项目下建立个LIB目录,把下载的包放进入,如下: 2,POM.XML文件引入本地包; &...

2019-10-11 20:05:39 98 0

原创 怎么用敏捷开发

敏捷开发是什么?敏捷开发的核心就是人 原则套用网图: 我之前的经验就是: 需求阶段: 你跟客户去调研需求的时候, 必须要把他的主流程和大概需求先弄明白。 很多细节,客户自己都不明白,他们必须有个看得见的东西 摆在他们面前,才能慢慢跟你提。 开发阶段:尽量先把基本功能实现,很多...

2019-09-26 09:15:24 45 0

原创 effective Java 笔记 导航

effective Java 是 Java之父James Gosling鼎力推荐,Jolt获奖作品全新升级 第一章 创建和销毁对象 用静态工厂方法代替构造器 遇到多个构造器参数时要考虑使用构建器 用私有构造器或者枚举类型强化Singleton属性 使用私有构造器强化不可实例化的能力 优...

2019-08-12 15:56:58 65 0

原创 effective Java 笔记1 用静态工厂方法代替构造器

用静态工厂方法代替构造器

2019-08-12 15:56:01 58 0

原创 java 微信开发框架 springboot

如果你是用JAVA ,需要开发微信相关的功能 推荐你用下面的框架 https://github.com/Wechat-Group/WxJava 包含了一下微信相关接口,不需要你自己去弄一些对接微信的接口开发 直接配置好以后直接调用它的方法,效率比自己开发快很多 支持一下几点。 微信公众...

2019-08-06 09:49:19 108 0

原创 mysql 调优 (慢查询,执行计划和索引)

在程序中难免会遇到查询很慢,有时你知道你哪个SQL, 有时 你可能调用其他的api不知道SQL,那么你可以用mysql 的慢查询 再结合EXPLAIN 的执行计划,看看SQL有没有走索引再优化。 1,MYSQL 慢查询默认是不支持,可以在mysql 客户端 show variable...

2019-07-15 17:07:17 310 0

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