JAVA
文章平均质量分 68
陈先生灬
只要学不死,就往死里学
展开
-
23种设计模式 - 创建型模式 - 简单工厂模式
现实生活中,原始社会自给自足(没有工厂),农耕社会小作坊(简单工厂,民间酒坊),工业革命流水线(工厂方法,自产自销),现代产业链代工厂(抽象工厂,富士康)。我们的项目代码同样是由简到繁一步一步迭代而来的,但对于调用者来说,却越来越简单。在日常开发中,凡是需要生成复杂对象的地方,都可以尝试考虑使用工厂模式来代替。注意:上述复杂对象指的是类的构造函数参数过多等对类的构造有影响的情况,因为类的构造过于复杂,如果直接在其他业务类内使用,则两者的耦合过重,后续业务更改,就需要在任何引用该类的源代码内进行更改,原创 2022-05-06 17:02:58 · 178 阅读 · 1 评论 -
mysql聚合统计数据查询缓慢优化方案
写在前面在我们日常操作数据库的时候,比如订单表、访问记录表、商品表的时候。经常会处理计算数据列总和、数据行数等统计问题。随着业务发展,这些表会越来越大,如果处理不当,查询统计的速度也会越来越慢,直到业务无法再容忍。所以,我们需要先了解、思考这些场景知识点,在设计之初,便预留一些优化空间支撑业务发展。sql聚合函数在mysql等数据中,都会支持聚合函数,方便我们计算数据。常见的有以下方法取平均值 AVG()求和 SUM() 最大值 MAX()最小值 MIN()行数 COUNT()原创 2021-02-03 09:28:35 · 3190 阅读 · 4 评论 -
23种设计模式 - 创建型模式 - 原型模式
原型模式的定义与特点在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。原型模式的优点:1.Java 自带的原型模式基于内存二进制流的复制,在性能上比直接 new 一个对象更加优良。2.可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份,并将其状态保存起来,简化了创建对象的过程,以便在需要的时候使用(例如恢复到历史某一状态),可辅助实现撤销操作。原型模式的原创 2021-01-28 17:06:53 · 207 阅读 · 0 评论 -
23种设计模式 - 创建型模式 - 单例模式
单例模式有 3 个特点:单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点。单例模式的优点和缺点单例模式的优点:1.单例模式可以保证内存里只有一个实例,减少了内存的开销。2.可以避免对资源的多重占用。3.单例模式设置全局访问点,可以优化和共享资源的访问。单例模式的缺点:1.单例模式一般没有接口,扩展困难。如果要扩展,则除了修改原来的代码,没有第二种途径,违背开闭原则。2.在并发测试中,单例模式不利于代码调试。在调试过程中,如果单例中的原创 2021-01-28 16:56:12 · 157 阅读 · 0 评论 -
Postman使用小技巧 - 用Postman生成Request代码
一、Postman这款工具可以让你很方便的测试你的Web API,那如果你实在是没办法用Postman,必须手写代码,又或者你有别的需求是Postman没法实现的,你必须写一个特殊的script或App来测试你的接口,那这时候是不是Postman就没有用武之地了?我来个你share一个小技巧吧,管不管用你说的算。假设我现在要这样来测我的接口:我们要设置用户名和密码:...原创 2020-12-21 14:07:40 · 353 阅读 · 0 评论 -
java中什么是装饰者模式? 装饰者模式的使用!!
其实无论是代理模式还是装饰模式。本质上我认为就是对原有对象增强的方式~一、对象增强的常用方式很多时候我们可能对Java提供给我们的对象不满意,不能满足我们的功能。此时我们就想对Java原对象进行增强,能够实现我们想要的功能就好~一般来说,实现对象增强有三种方式:继承继承父类,子类扩展装饰器模式使用“包装”的方式来增强对象代理模式给女朋友讲解么是代理模式1.1继承最简单的方式就是继承父类,子类扩展来达到目的。虽然简单,但是这种方式的缺陷非常大:一、如果父类是带有数据、信息、属性的话,那转载 2020-11-16 17:05:45 · 161 阅读 · 0 评论 -
RabbitMq发送和接收消息(自动创建队列、交换机和绑定)
自动创建队列、交换机和绑定一、pom.xml<dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>2.0.5.RELEASE</version></dependency>二、发送者(producer)@Resourcepr原创 2020-11-16 11:13:30 · 3740 阅读 · 0 评论 -
如何让 HTML识别 String 里的 ‘\r\n‘ 并成功换行显示
在结果所在的 div 的 css 设置:white-space: pre-line;如:<span style="white-space: pre-line;"> 文本内容</span>然后页面就能成功识别 ‘\r\n’ 或 ‘\n’ ,并换行显示.原创 2020-11-13 11:17:16 · 8201 阅读 · 0 评论 -
Kryo 高性能序列化和反序列化
一、pom.xml<dependency> <groupId>com.esotericsoftware</groupId> <artifactId>kryo</artifactId> <version>4.0.0</version></dependency>二、封装工具类package com.cxs.web.system.kryo;import com.cxs.common原创 2020-10-27 14:27:37 · 680 阅读 · 7 评论 -
java项目集成J2Cache(基于内存和 Redis 的两级 Java 缓存框架)
一、概述SpringCache本身是一个缓存体系的抽象实现,并没有具体的缓存能力,要使用SpringCache还需要配合具体的缓存实现来完成。虽然如此,但是SpringCache是所有Spring支持的缓存结构的基础,而且所有的缓存的使用最后都要归结于SpringCache,那么一来,要想使用SpringCache,还是要仔细研究一下的。二、缓存注解SpringCache缓存功能的实现是依靠下面的这几个注解完成的。@EnableCaching:开启缓存功能@Cacheable:定义缓存,用于触发原创 2020-10-24 16:56:00 · 806 阅读 · 0 评论 -
20款帮助你加薪的IDEA神器插件!!!(十分推荐)
前言idea是我们程序员的第二个女朋友,我们得把它弄的非常智能,才能更加高效的工作,那么这里就给大家介绍一些非常好用的插件,让我们的idea变的更加高效好用。Material Theme UI可以将原始外观更改为Material Design外观,使用之后的 idea 界面变得非常漂亮,心情好了,写代码的速度也变快了。GenerateAllSetter这个是帮我们一键生成对象所有的set方法,不用我们手动一个一个去写set,如果一个对象有十几个、二十几个属性,那用起来真的是不要太爽。Prop原创 2020-08-11 21:31:08 · 2805 阅读 · 0 评论 -
IDEA使用Spring initializr 构建SpringBoot项目connect timed out错误的解决方案
解决方案(本人推荐):在创建时点击:Custom,在后面输入:https://start.aliyun.com/(使用阿里云,如下图)这个是使用阿里云生成项目,比spring官方生成项目要快很多。对有帮助的小伙伴记得点个赞,关注一波哟~...原创 2020-07-29 21:54:56 · 11330 阅读 · 1 评论 -
TCC分布式事务之一 —— tcc-transaction-1.2.x最新版整合spring cloud + dubbo + zookeeper
tcc-transaction作为github开源tcc分布式事务框架,对比其他tcc开源框架,星数排名第一,可以异步处理,也可以同步处理。maven配置 <!--tcc-transaction核心包--> <dependency> <groupId>org.mengyun</groupId> <artifactId>tcc-transaction-spring</artifactId> <原创 2020-07-08 20:21:55 · 15168 阅读 · 0 评论 -
Mybatis 之缓存机制
MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。缓存可以极大的提升查询效率。● MyBatis系统中默认定义了两级缓存。● 一级缓存和二级缓存。1、默认情况下,只有一级缓存(SqlSession级别的缓存,也称为本地缓存)开启。2、二级缓存需要手动开启和配置,他是基于namespace级别的缓存。3、为了提高扩展性。MyBatis定义了缓存接口Cache。我们可以通过实现Cache接口来自定义二级缓存1、一级缓存一级缓存(local cache), 即本地缓存,原创 2020-07-07 09:36:55 · 14368 阅读 · 0 评论 -
Mybatis Plus 之开启、关闭二级缓存
一、开启MybatisPlus的全局配置:#二级缓存mybatis-plus.global-config.configuration.map-underscore-to-camel-case= truemybatis-plus.global-config.configuration.cache-enabled=true二、在对应的xml文件中,添加配置:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC原创 2020-07-06 21:27:47 · 21432 阅读 · 0 评论 -
java.math.BigDecimal 比较大小
BigDecimal first = new BigDecimal ("100"); BigDecimal second = new BigDecimal ("100"); //使用compareTo方法比较 //注意:都不能为null,否则会报空指针 if(first.compareTo(second) == 0){ System.out.println("first等于second"); }..原创 2020-07-06 17:13:13 · 15578 阅读 · 0 评论 -
推荐几款IDEA插件,最强撸码神器
专属目录撸码神器详细介绍StackoverflowFindBugsAlibaba Java Coding Guidelin...转载 2020-06-25 16:10:46 · 18164 阅读 · 0 评论 -
讲真,这两款idea插件,能治愈你英语不好的病
随着 IDEA 最新版(版本号是 2020.1)的发布,英语不好的病可以彻底治愈了。为什么这么说呢?因为 IDEA 支持汉化了!一款插件就能搞定。第一步,直接在官网下载最新版。安装的时候请选择保留原来的版本,因为新版有点小坑:提示 Lombok 有点小问题。虽然直接 Enable 就可以解决, 但版本升级的时候还是要小心,免得遇到大坑,影响队友就糟心了。新版本安装成功后,可以直接在插件市场输入关键字“chinese” ,然后福音就来了,看到下图没,有一个中文汉化包的插件。install 它,转载 2020-06-25 16:00:52 · 24930 阅读 · 1 评论 -
ffmpeg参数解释
本系列文章导航Windows下FFmpeg快速入门ffmpeg参数解释mencoder和ffmpeg参数详解(Java处理视频)Java 生成视频缩略图(ffmpeg)使用ffmpeg进行视频文件转换成FLV整理java 视频处理 mencoderjav...转载 2020-06-05 09:32:35 · 15188 阅读 · 0 评论 -
java项目中使用ffmpeg剪辑部分视频
在项目中,有个需求是分享视频链接地址到微信、qq或者朋友圈,只能试看两分钟,本想着通过h5界面就能控制实现效果,代码如下,但是前端终究不是安全的,其次监听事件,如果拉播放进度条,中途停顿多次,就会出现多次弹框,对用户体验终究不是好的,因此,后面想着后端截取原视频部分视...转载 2020-06-05 09:24:24 · 16455 阅读 · 1 评论 -
Vue 快速上手教程
一、Vue基本环境安装主要的功能:1. 统一的目录结构2. 本地调试3. 热部署4. 单元测试5. 集成打包上线需要的环境Node.js:http://nodejs.cn/download/安装就无脑下一步就好,安装在自己的环境目录下Git:https://git-scm.com/downloads镜像:https://npm.taobao.org/mirrors/git-for-windows/确认nodejs安装成功:cmd 下输入node-v,查看原创 2020-06-04 23:21:32 · 15334 阅读 · 1 评论 -
Centos7 部署Kubernetes集群【1.17版】
1. 安装要求在开始之前,部署Kubernetes集群机器需要满足以下几个条件:一台或多台机器,操作系统 CentOS7.x-86_x64硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多集群中所有机器之间网络互通可以访问外网,需要拉取镜像禁止swap分区2. 学习目标在所有节点上安装Docker和kubeadm部署Kubernetes Master部署容器网络插件部署 Kubernetes Node,将节点加入Kubernetes集群中部署Dashboa原创 2020-06-03 18:10:01 · 15418 阅读 · 0 评论 -
Docker + Jenkins + Github 自动化构建maven项目
Docker + Jenkins + Github 自动化构建maven项目前期准备工作Linux系统(外网可访问).docker安装jenkins安装maven工程使用github管理实现目标本地代码修改,提交到Github远程仓库,即可完成自动化部署。实战步骤梳理本次整个过程依次为如下步骤:GitHub上准备一个spring boot的web工程;在GitHub上创建一个access token,Jenkins做一些需要权限的操作的时候就用这个access token去鉴权;原创 2020-05-29 22:16:45 · 15300 阅读 · 0 评论