自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (1)
  • 收藏
  • 关注

原创 Redis学习——持久化机制RDB&AOF

Redis的持久化方案

2022-09-07 00:08:11 589

原创 Docker自定义镜像发布到阿里云

Docker自定义镜像发布到阿里云

2022-06-01 19:58:57 235

原创 设计模式——建造者模式

建造者模式的定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示分离,使得同样的构建过程可以创建不同的表示。特征:用户只要指定需要建造的类型就可以获得对象,建造过程及细节不需要了解。属于创建型模式。建造者模式的适用场景:适用于创建对象需要很多步骤,但是步骤的顺序不一定固定的情况。适用于一个对象有非常复杂的内部结构或者有很多属性的情况。建造者模式最大的好处就是可以把复杂对象的创建和它的使用进行分离。...

2021-04-27 09:25:52 216

原创 设计模式学习——单例模式

单例模式单例模式是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式的特点是隐藏其所有的构造方法。属于创建型模式。单例模式的适用场景:确保任何情况下都绝对只有一个实例。如ServletContext、ServletConfig、ApplicationContext单例模式的常见写法:1.饿汉式单例2.懒汉式单例一、饿...

2021-04-14 10:21:27 273 1

原创 设计模式学习——原型模式

原型模式的定义原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。调用这不需要知道任何创建细节,不调用构造函数。属于创建型模式。原型模式的使用场景经常见到这样的代码,大量的getset的赋值:public OrderVO copy(OrderEntity orderEntity){ orderVO.setOrderNo(orderEntity.getOrderNo()); orderVO.setOrderAA(orderEntity.getOrder.

2021-04-14 10:04:41 109

原创 设计模式学习——策略模式

策略模式的定义策略模式是指定义了算法家族,分别封装起来,让它们之间可以互相替换,让算法的变化不会影响到使用算法的用户。可以避免多重分支的if else 和 switch 语句。策略模式的适用场景1.假如系统中有很多类,而它们的区别仅在于它们的行为不同2.一个系统需要动态地在几种算法中选择一种示例1电商经常会在节日做活动,需要根据各种节日选择不同的优惠策略/** * 优惠策略 */public interface IPromotionStrategy {..

2021-04-12 15:09:27 158

原创 设计模式学习——委派模式

一、定义及应用场景委派模式不属于GOF23中设计模式。委派模式(Delegate Pattern)的基本作用是复制任务的调用和分配任务,与代理模式很像,可以看做一种特殊情况下的静态代理。但是代理模式注重过程,而委派模式注重结果。委派模式在Spring中常被应用,比如DispatchServlet中就是用到了委派模式。二、具体应用现实中也会有委派模式的场景,比如:老板(Boss)给项目经理(Leader)下达任务,项目经理会根据员工实际情况给每个员工分配任务,在员工完成任务后,再.

2021-01-09 09:26:01 221 2

原创 设计模式学习——代理模式

目标:1、掌握代理模式的应用场景和实现原理。 2、了解静态代理和动态代理的区别。 3、了解 CGLib 和 JDK Proxy 的根本区别。 4、手写实现定义的动态代理。定义及应用场景:生活中的场景比如房屋中介、卖票黄牛、经纪人、快递等,代码中的场景比如事物代理、非侵入的日志监听等,这些都是代理模式的实际体现。代理模式(Proxy Pattern)是指为其他对象提供代理,从而控制对这个对象的访问。代理对象在客户端和被代理对象之间起到中介作用。使用代理模式主要目..

2020-07-13 15:20:48 173

原创 SpringCloudNetflix学习和实践——统一配置中心

什么是统一配置中心?SpringCloud中的统一配置中心由组件Spring Cloud Config 实现。它是一个高可用的分布式配置中心。为什么需要统一配置中心?1.方便维护:在多人协作开发的环境下,常会对同一个配置文件做修改。很容易导致别人更新代码出现配置文件的冲突,不方便维护。2.安全与权限:项目中尤其是线上的配置,如数据库密码,是不便对普通开发人员公开的。通过统一配置中心...

2020-05-07 01:44:21 493

原创 SpringCloudNetflix学习和实践——服务的通信调用

一、RPC和HTTP应用服务间通信调用的方式主要有两种,一种是HTTP,另一种是RPC。RPC形式的常见代表是Dubbo。Dubbo的定位就是一款RPC服务调用框架,基于Dubbo开发的应用还是要依赖周边的平台和生态,比如配合以Zookeeper实现的服务注册中心一起使用。Dubbo不仅提供了服务注册和发现、负载均衡等面向分布式系统的基础能力,还提供了开发测试阶段的Mock机制。在Sp...

2020-05-05 18:11:44 246

原创 运维学习(五)前后端分离项目的部署运维实践

一、选择开源项目renren-fastrenren-fast是一款前后端分离的开源项目,前端主要技术是vue,后端主要技术java,我将以开源项目renren-fast做为这次部署运维实践的素材。访问www.renren.io,点击下载后端源码以及前端源码,跳转gitee,从gitee上获得前后端源码。二、Windows中运行和查看项目三、Linux中部署项目...

2020-04-30 21:45:21 1484

原创 运维学习(四)Docker环境下搭建Redis集群——RedisCluster实现

一、关于Redis集群需知的点1.1 Redis的集群方案Redis目前的集群方案有以下几种:1.RedisCluster:官方推荐,没有中心节点2.Codis:中间件产品,存在中心节点3.Twemproxy:中间件产品,存在中心节点带中心节点的解决方案都存在中心节点挂掉后,Redis集群失效的问题。因此这里将采用RedisCluster来实现。1.2 Red...

2020-04-25 23:22:54 264

原创 运维学习(三)Docker环境下使用Keepalive+Haproxy实现数据库负载均衡的高可用

在第二篇中已经实现了数据库负载均衡中间件Haproxy的部署运行。但当单台Haproxy出现问题时,数据库集群的负载均衡也就失效了。为了保证Haproxy的高可用,单台Haproxy也是不够的。因此需要实现多台Haproxy的部署运行(双机热备:指两台机器运行待命)。一、Haproxy双机热备的实现思路如果要实现两台Haproxy的双机热备,那么关键点是linux的虚拟i...

2020-04-24 18:17:30 1440 3

原创 运维学习(二)Docker环境下使用Haproxy实现数据库负载均衡

一、负载均衡中间件的选择上一篇成功搭建了数据库集群,但在pxc数据库集群中,任何一个节点都是可以读写的。如果pxc集群上线后,不应该把所有的请求都发送给一个节点,所有节点都应该参与数据请求的处理。如果想要实现将请求均匀的发送给每个节点,就需要实现负载均衡。1.1 为什么要实现负载均衡?如果不上线负载均衡,应用服务器将所有请求都发送给一个pxc节点,这个节点压力特别高,就容...

2020-04-20 21:59:37 541 1

原创 [linux] 记录一些自己常用的linux命令

service docker start 启动docker服务docker info 查看docker信息docker images 查看已拥有的docker镜像docker ps -a 查看所有docker容器(包括未运行的)docker ps 查看运行中的dock...

2020-04-14 21:48:44 101

原创 JVM学习——(四)JVM参数和工具

一、JVM参数1.1 标准参数-version-help-server-cp1.2 -X参数非标准参数,也就是在JDK各个版本中会变动。-Xint 解释执行-Xcomp 第一次使用就编译成本地代码-Xmixed 混合模式,JVM自己决定1.3 -XX参数使用的最多的参数类型非标准化参数,相对不稳定,主要用于JVM调优和Debu...

2020-04-11 23:17:42 184

原创 JVM学习——(三)垃圾回收那些事

一、如何确定一个对象是垃圾?想要进行垃圾回收,得先知道什么样的对象是垃圾。1.1 引用计数法对于某个对象而言,只要应用程序中持有该对象的引用,就说明该对象不是垃圾。如果一个对象没有任何指针对其引用,它就是垃圾。弊端:如果AB相互持有引用,就会导致用于不能回收。1.2 可达性分析通过一系列名为“GC Roots”的对象作为起始点,从“GC Roots”对象开始向下搜索,如...

2020-04-09 19:37:56 115

原创 JVM学习——(二)内存模型

举个例子,比如对象A、B、C创建在Eden区,但是Eden区的内存空间肯定优先,比如有100M。假如已经使用了100M或者达到一个设定的临界值,这时候就需要对Eden区的内存空间进行清理,即垃圾收集(Garbage Collect),对于这样的GC称之为Minor GC,Minor GC指的就是Young区的GC.

2020-04-07 18:12:04 133

原创 JVM学习——(一)类加载机制&运行时数据区

一、类文件到虚拟机(类加载机制)1.1 装载(Load)类加载的第一步是对类的装载过程:1)通过一个类的全限定名获取定义此类的二进制字节流。2)将这个字节流代表的静态存储结构转化为方法去的运行时数据结构3)在Java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口。1.2 链接(Link)类加载的第二步是链接,链接这一步...

2020-04-03 17:08:23 228

原创 MySQL性能优化学习——(四)优化总结篇

一、优化思路性能优化的思路应该是什么样的?说到性能调优,大部分时候想要实现的目标是让我们的查询更快。一个查询的动作又是由很多个环节组成的,每个环节都会消耗时间,在第一篇关于SQL 语句的 执行流程中已经分析过了。 想要减少查询所消耗的时间,就要从每一个环节入手。 二、连接——配置优化第一个环节是客户端连接到服务端,连接这一块有可能会出现什么样的性能问...

2020-04-01 18:39:17 481

原创 MySQL性能优化学习——(三) 数据库事务与锁

一、什么是数据库的事务?1.1 事务的定义维基百科的定义:事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。这里面有两个关键点,第一个,它是数据库最小的工作单元,是不可以再分的。第二个,它可能包含了一个或者一系列的 DML 语句,包括 insert delete update。(单条 DDL(create drop)和 DCL(g............

2020-03-26 21:03:12 513 1

原创 关于SpringBoot的异步任务使用

在SpringBoot中提供了异步任务的功能特性。1.引入spring-boot-starter-web依赖2.在Application启动类上标注@EnableAsync注解3.编写异步方法:import lombok.extern.slf4j.Slf4j;import org.springframework.scheduling.annotation.Async;impo...

2020-03-11 18:22:53 192

原创 设计模式学习——工厂模式

一、简单工厂模式(Simple Factory Pattern)简单工厂模式是指由一个工厂对象决定创建出哪一种产品类的实例。属于创建型模式,但不属于GOF23钟设计模式。举个例子,有一个课程接口,一个 Java课程类 继承了课程接口,我们用new创建java课程的的过程:/** * @Description: 课程接口 */public interface I...

2020-03-08 22:11:39 93

原创 微服务组件Zuul——自定义过滤器

一、 Zuul及ZuulFilterZuul提供了服务网关的功能,可以实现负载均衡、反向代理、动态路由、请求转发等功能。Zuul大部分功能都是通过过滤器实现的,Zuul中定义了四种标准的过滤器类型,同时,还支持自定义过滤器。这些过滤器的类型对应请求的典型生命周期,代表不同的执行时机策略:pre: 在请求被路由之前调用route:在路由请求时被调用error:处理...

2020-03-03 16:57:12 777

原创 运维学习(一)Docker搭建MySQL数据库集群

一,常见的两种MySQL集群方案1. ReplicationReplication的方案是弱一致性的方案,无法保证数据的实时同步,DB1会直接提交。特点 :速度快,弱一致性,低价值。常见日志、新闻、帖子。2. PXCPXC的方案是强一致性的方案,DB1向DBn同步数据完成并且DBn完成提交,DB1才会提交。特点 :速度慢,强一致性,高价值。常见订单、账户、财务。二,D...

2020-02-08 00:15:46 308 1

原创 MySQL性能优化学习(二)—— MySQL的索引原理分析

1.索引是什么?先抛出几个问题:表的索引越全越好,对吗?为什么不要在性别字段上建索引?为什么不建议使用身份证做主键?模糊匹配like abc% , like %abc% , like %888都用不到索引,对吗?不要使用select *,要写明具体查询字段,为什么?一个简单的加索引查找测试先准备一张user表,在其中插入五百万条记录,执行查询:select...

2020-01-13 22:16:05 228

原创 MySQL性能优化学习(一)—— MySQL的执行流程

一、一条sql的执行过程APP(客户端)↓↓查询缓存可以提高效率,但sql不完全一样时即失效。表内容变化时也失效。因此最好还是ORM框架去实现。MYSQL的查询缓存默认关闭,8.0的版本以后已经去除该缓存模块。↓↓解析器对sql进行词法解析,语法解析。判断是否正确↓↓预处理器检查表是否存在,列是否存在↓↓查询优化器执行前对sql进行优化,...

2019-12-28 22:15:40 248 1

原创 MYSQL存储引擎

如何查看存储引擎:show table status like 'tableName';show create table tableName;创建数据库时设置存储引擎:create table tableName(columnName1(列名1) type(类型) attri(属性设置),columnName2(列名2) type(类型) attri(属...

2018-09-13 20:04:13 85

原创 如何获取昨日日期

    获取昨日    private String getYesterday() {        Calendar cal = Calendar.getInstance();        cal.add(Calendar.DATE, -1);        String yesterday = new SimpleDateFormat("yyyy-MM-dd").format(cal...

2018-09-13 11:02:18 644

原创 如何以出生日期计算年龄

    public static int getAge(Date birthday) {        if (birthday == null) {            return 0;        }        Calendar born = Calendar.getInstance();        Calendar now = Calendar.getInstanc...

2018-09-13 10:51:07 694

原创 如何用身份证号截取生日

import java.util.Date;import org.apache.commons.lang3.time.DateUtils;      /** 证件号转生日 */    public static Date transBirthday(String certNo) {        try {            if (certNo.length() >...

2018-09-13 10:49:32 300

转载 List的 toArray()和toArray(T[] a)

ArrayList提供了一个将List转为数组的一个非常方便的方法toArray。toArray有两个重载的方法:1.list.toArray();2.list.toArray(T[]  a);对于第一个重载方法,是将list直接转为Object[] 数组;第二种方法是将list转化为你所需要类型的数组,当然我们用的时候会转化为与list内容相同的类型。 不明真像的同学喜欢...

2018-09-13 10:37:45 131

转载 Session机制

Session机制除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态。Session是服务端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,响应的也增加了服务器的存储压力。Session技术是服务端的解决方案,它是通过服务器来保持状态的。由于Session这个词汇包含的语义很多,因此需要在这里明确Session的含义。首先,我们通常把Session翻译成会...

2018-07-12 15:16:13 798

转载 Cookie机制 (转)

Cookie机制 Cookie是客户端的解决方案。用户用浏览器访问一个支持Cookie的网站的时候,用户会提供包含用户名的用户个人信息到服务器,之后服务器向客户端回传相应的超文本也会发回这些个人信息,这些信息通过HTTP响应头(Response Header)传回来,客户端浏览器收到来自服务器的响应后,浏览器将这些信息存放在一个统一的位置。在windows系统中,我们可以从:[系统盘]:\Docu...

2018-07-10 16:50:36 498

原创 自己总结的git工作流程

一、git clone以及切换分支流程:git clone http://XXX.XXX/sq-group/XXX.gitclone到本地的时候一般都是master分支,git 查看远程分支:git branch -a* master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/devg...

2018-07-05 21:23:59 158

原创 日期类型查询结果的转化

查MYSQL中datetime类型的日期,根据传入参数条件判断,转成不同的日期类型返回 <choose> <when test="isYear"> date_format(short_transform_item.trans_out_date,"%Y-%m") as "date", </when> <otherwise&gt

2018-07-04 20:09:08 714

原创 SpringMVC中GET请求类型接收参数的两种方式

1,@PathVariable方式接收URI参数。URI如:http://localhost:8080/MyApp/123/Jack/@RequestMapping(value="user/{userId}/{userName}",method=RequestMethod.GET)public String printMessage1(@PathVariable("userI...

2018-07-02 15:29:51 7246

原创 查四种不同status的统计数量 以及 MYSQL中count函数的默认返回值问题

遇到一个问题。在一个表中查四种不同status的记录数。一开始想法是发四条SQL?或者做四个临时表?仔细想想这样不对,效率低下。改用group by status,问题在于页面需要的是四个状态的统计值,只查count(id)等于只知道了value不知道对应key。所以查status以及status的统计值。返回一个List<Map<String,object>>,遍历后用...

2018-07-02 14:56:15 3819

原创 mybatis查询指定时间段查询

select * from tableNamewhereload_date>=concat(#{startDate},' 00:00:00')andload_date<=concat(#{endDate},' 23:59:59')ps:数据库时间字段用的datetime类型,具有时分秒。此处传入的时间参数应为"yyyy-MM-dd"的字符串。...

2018-07-02 14:37:15 2615

原创 使用RabbitMQ实现商品数据同步

【生产者端】一,添加依赖<依赖性><的groupId> org.springframework.amqp </的groupId> <artifactId的>弹簧兔</ artifactId的></依赖性>二,配置的applicationContext-rabbitmq.xml文件<?xml version =“1...

2018-02-20 18:53:40 1779

java异常总结

java异常总结java异常总结java异常总结java异常总结java异常总结java异常总结

2018-01-07

空空如也

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

TA关注的人

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