自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 问答 (2)
  • 收藏
  • 关注

原创 京东一面Redis 如何实现库存扣减操作?如何防止商品被超卖

京东一面Redis 如何实现库存扣减操作?如何防止商品被超卖

2022-06-22 21:41:39 669 1

原创 java中ExecutorService使用多线程处理业务

使用线程池执行多线程

2022-06-21 16:41:45 802

原创 (二)策略模式+反射-解决多重if-else if问题

需求:商品有三种折扣价,普通客户不享受任何优惠,vip客户享受9折优惠,超级vip客户享受8折优惠当没有用到设计模式时,我们一般会采用下面的方式处理业务 int type = 1; if(type == 1){ System.out.println("普通客户,商品原价出售"); }else if(type == 2){ System.out.println("vip客户,商品9折出售"); }else if(type == 3){ System.out.p.

2022-02-28 15:44:58 392

原创 (三)Map+函数式接口方法解决if-else

需求最近写了一个服务:根据优惠券的类型resourceType和编码resourceId来 查询 发放方式grantType和领取规则实现方式:根据优惠券类型resourceType -> 确定查询哪个数据表根据编码resourceId -> 到对应的数据表里边查询优惠券的派发方式grantType和领取规则优惠券有多种类型,分别对应了不同的数据库表:红包 —— 红包发放规则表购物券 —— 购物券表QQ会员外卖会员实际的优惠券远不止这些,这个需求是要我们写一个业务分.

2022-02-25 19:37:25 175

原创 git/gitgub

git/gitgub1.查看Git的版本2.git config3.git init4.git status5.git add6.git commit7.git clone8.git remote9.git branch10.git checkout11.git cherry-pick12.git fetch13.git merge14.git diff14.git pull15.git push16.git log17. git reset18.git tag19. git mv20.git rmGit

2021-04-16 15:05:07 175

原创 MyBatis学习笔记(一)

MyBatis学习笔记(一)1.简介2.下载3.HelloWorld4.接口式编程5.小结(1)6.全局配置文件-引入dtd约束7.全局配置文件-properties-引入外部配置文件8.全局配置文件-settings-运行时行为设置9.全局配置文件-typeAliases-别名10.全局配置文件-typeHandlers-类型处理器简介1.简介MyBatis是什么MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动

2021-04-13 17:13:38 139

原创 Spring Cloud(2020版) 学习笔记(三)

Spring Cloud(2020版) 学习笔记(三)54.Bus消息总线是什么55.Bus之RabbitMQ环境配置56.Bus动态刷新全局广播的设计思想和选型57.Bus动态刷新定点通知54.Bus消息总线是什么上—讲解的加深和扩充一言以蔽之,分布式自动刷新配置功能。Spring Cloud Bus配合Spring Cloud Config使用可以实现配置的动态刷新。是什么Spring Cloud Bus 配合Spring Cloud Config 使用可以实现配置的动态刷新。S

2021-04-09 17:04:02 221

原创 Spring Cloud(2020版) 学习笔记(二)

Spring Cloud(2020版) 学习笔记(二)30.Hystrix是什么31.Hystrix停更进维32. Hystrix的服务降级熔断限流概念初讲33.Hystrix支付微服务修改34.Hystrix订单微服务修改35.降级容错解决的维度要求36.Hystrix之服务降级支付侧fallback37.Hystrix之服务降级订单侧fallback30.Hystrix是什么概述分布式系统面临的问题复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。服

2021-04-06 17:17:42 707

原创 Spring Cloud(2020版) 学习笔记(一)

Spring Cloud(2020版) 学习笔记(一)1.Boot和Cloud版本选型2.Cloud组件停更说明3.父工程Project空间新建1.Boot和Cloud版本选型Spring Boot 2.X 版源码地址Spring Boot 2 的新特性通过上面官网发现,Boot官方强烈建议你升级到2.X以上版本Spring Cloud H版源码地址官网Spring Boot 与 Spring Cloud 兼容性查看文档接下来开发用到的组件版本Cloud

2021-03-29 17:49:40 585

原创 GetMapping 和 PostMapping的入参注解问题

1、GetMapping(PostMan)https://www.jianshu.com/p/4981911d5e15接收一个参数(String、Long),接收一个集合(Map)  GET 请求 测试发现 使用 @RequestParm 可以接收到参数  GET 请求 测试发现 不加 @RequestParm 也可以接收到参数接受一个对象(user)  GET 请求 测试发现 使用 @RequestParm 接收对象 报错 接收不到  GET 请求 测试发现 不加 @Requ

2021-03-16 17:53:52 4972

原创 JVM垃圾回收(二)

JVM垃圾回收(二)垃圾回收调优1. 触发时机1.1 Young GC的触发时机1.2 Old GC和Full GC的触发时机1.3 对象进入老年代区域中几种情况1.4 常见的频繁Full GC的原因:1.5 手动dump文件生成1.6 试验一:自己模拟出JVM Metaspace内存溢出1.7 试验二:模拟出JVM栈内存溢出的场景1.8 试验三:模拟出堆内存溢出的场景1.9 案例一:中小公司级别的JVM参数模板1.10 案例二:线上频繁full gc1.11 案例三垃圾回收调优1. 触发时机

2021-03-12 19:18:05 444

原创 https原理

HTTP 访问过程我们知道,HTTP请求都是明文传输的,所谓的明文指的是没有经过加密的信息,如果HTTP请求被黑客拦截,并且里面含有银行卡密码等敏感数据的话,会非常危险。抓包如下:如上图所示,HTTP请求过程中,客户端与服务器之间没有任何身份确认的过程,数据全部明文传输,“裸奔”在互联网上,所以很容易遭到黑客的攻击,如下:可以看到,客户端发出的请求很容易被黑客截获,如果此时黑客冒充服务器,则其可返回任意信息给客户端,而不被客户端察觉,所以我们经常会听到一词“劫持”,现象如下:下面两图中,.

2021-03-06 17:08:55 279

原创 redis学习笔记(二)

12 主从复制主从复制:即将master中的数据即时、有效的复制到slave中特征:一个master可以拥有多个slave,一个slave只对应一个master。Master以写为主,Slave以读为主。master和slave是个相对的概念,下面的slave还可以当做下一级的master职责:master:写数据执行写操作时,将出现变化的数据自动同步到slave读数据(可忽略)slave:读数据写数据(禁止)在 Redis 中,用户可以通过执行 SLAVEOF 命

2021-03-06 11:38:39 174

原创 LinkedList源码分析--jdk1.8

LinkedList源码分析--jdk1.81.LinkedList概述2.LinkedList数据结构3.LinkedList源码分析3.1 LinkedList继承和实现分析3.2 LinkedList核心方法分析1. add方法(7种重载实现)--增1. add(E);//默认直接在末尾添加元素2. add(int index, E element);//给指定下标,添加元素3. addAll(Collection<? extends E> c);//添加Collection类型元素4.

2021-03-04 16:25:16 142 1

原创 ArrayList源码分析--jdk1.8

ArrayList源码分析--jdk1.8ArrayList概述ArrayList源码分析ArrayList继承和实现分析ArrayList核心方法分析add方法(4种重载实现)--增remove方法(4种重载实现)--删set方法--改get方法--查indexOf方法--查找下标clone方法--克隆trimToSize方法--删除冗余容量ArrayList概述ArrayList是可以动态扩容和动态删除冗余容量的索引序列,基于数组实现的集合。ArrayList支持随机访问、克隆、序列化,元素有序

2021-03-04 14:21:13 284 3

原创 HashMap源码解析--jdk1.8

技术之路最公平也最残酷的原因是:没有捷径,需要日积月累的积累,以及对技术持久的热情。HashMap源码解析概述源码类的继承关系类的属性类的构造函数hash算法重要方法分析putVal方法getNode方法resize方法概述在JDK1.8之前,HashMap使用数组+链表实现,即使用链表处理冲突,同一hash值的节点都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用数组+链表+红黑树实现,当链表长.

2021-03-03 17:45:00 183 2

原创 (一)单例模式

设计模式单例模式单例模式例1:饿汉式,简单实用,推荐使用package com.singleton;/** * 饿汉式 * 类加载到内存后,就实例化一个单例,JVM保证线程安全 * 简单实用,推荐使用! * 唯一缺点:不管用到与否,类装载时就完成实例化 * Class.forName("") * (话说你不用的,你装载它干啥) */public class Singleton1 { private static final Singleton1 INSTANCE =

2021-02-27 15:27:58 100

原创 redis学习笔记(一)

Redis中文网NoSQL数据库的四大分类KV新浪:BerkeleyDB + Redis美团:Redis + tair阿里、百度:memcache + Redis文档型数据库(bson格式比较多)CouchDBMongoDBMongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。列存储数据库Cassandra、HB

2021-02-25 19:53:57 384

原创 Elasticsearch

整理较好的教程https://www.knowledgedict.com/tutorial/elasticsearch-intro.html

2021-02-20 14:20:20 112

原创 Netty(二)

Netty(二)第 7 章 Google Protobuf7.1 编码和解码的基本介绍7.2 Netty 本身的编码解码的机制和问题分析7.3 Protobuf7.4 Protobuf 快速入门实例7.5 Protobuf 快速入门实例第 7 章 Google Protobuf7.1 编码和解码的基本介绍编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码[示意图]codec(编解码器)的组成部分有两个:decoder(解码器)和 encod

2021-02-02 20:48:36 246

原创 Netty(一)

netty(一)第 1 章 Netty 介绍和应用场景1.1 本课程学习要求1.2 Netty 的介绍1.3 Netty 的应用场景1.4 Netty 的学习资料参考第 2 章 Java BIO 编程2.1 I/O 模型2.2 BIO、NIO、AIO 使用场景分析2.3 Java BIO 基本介绍2.4 Java BIO 工作机制2.5 Java BIO 应用实例2.6 Java BIO 问题分析第 3 章 Java NIO 编程3.1 Java NIO 基本介绍3.2 NIO 和 BIO 的比较3.3 N

2021-01-29 20:03:33 1620 1

原创 代理模式:静态代理和动态代理

目录静态代理动态代理1、JDK动态代理2、自己实现动态代理按照代理的创建时期,代理类可以分为两种:静态:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。动态:在程序运行时运用反射机制动态创建而成。静态代理接口(Subject):interface HelloService { void sayHello();}委托类:class HelloServiceImpl implements HelloService { @

2021-01-02 21:49:39 83

原创 VMware下的虚拟机设置静态IP

只要主机能够访问外网,虚拟机即可访问外网。虚拟机的ip不会变化,网段ip都是自由设置。主机win10、VMware Workstation Pro15、Linux操作系统为Centos7虚拟机的网络模式设置为Net模式选择编辑打开虚拟网络编辑器,选择更改设置。选择VMnet8,取消勾选使用本地DHCP服务,然后自行设置子网ip子网IP设置192.168.任意网段.0即可,然后点击“NET设置”将网关设置为子网ip对应网关如果你的子网IP是192.168.1.0,那么网关就可设置为192.

2020-12-25 10:32:51 171

原创 Elasticsearch顶尖高手系列:高手进阶篇(二)

Elasticsearch顶尖高手系列:高手进阶篇(二)第59-72节59_数据建模_关系型与document类型数据模型对比60_数据建模_通过应用层join实现用户与博客的关联61_数据建模_通过数据冗余实现用户与博客的关联62_数据建模_对每个用户发表的博客进行分组top_hits63_数据建模_对文件系统进行数据建模以及文件搜索64_数据建模_全局锁实现悲观锁并发控制65_数据建模_document锁实现悲观锁并发控制66_数据建模_共享锁和排他锁实现悲观锁并发控制67_数据建模_nested嵌套查

2020-12-23 12:56:37 1059

原创 centos7安装

VMware安装好之后,下载好我们要安装的操作系统的镜像文件后,此处安装的为centos7版本,就可以开始安装了。进入主页选择创建新的虚拟机这里选择自定义安装,下一步即可。可以根据需要选择版本选择完成后,下一步选择安装程序映像文件,浏览到自己下载的镜像文件,下一步即可自定义虚拟机名称,以及虚拟机存储在主机的路径,下一步即可根据需要配置处理器内核数制定宿主机允许虚拟机存储的内存指定网络连接模型后续全都下一步到完成完成即可开始安装操作系统选择第一条安装cen

2020-12-23 10:46:02 183

原创 VMware虚拟机下载安装

一、VMware官方下载首先我们访问官网地址https://www.vmware.com/cn.html注意:没有账号必须先注册才能下载。注册页面https://my.vmware.com/cn/web/vmware/registration注册完账号后进行以下步骤:如图,选择下载专区,进入下面页面选择Workstation Pro,进入新的页面选择版本,然后根据自己的操作系统选择相应选项。同样,选择需要的版本后点击立即下载。(这里默认选择的是最新版本)。二、虚拟机安装打开下载好的

2020-12-23 10:37:04 656

原创 Elasticsearch类

package com.group.task.service;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.group.common.entity.dto.TglGroupUserDto;import com.group.common.entity.vo.UserInfoVo;import com.group.common.util.PageUtils;import com.

2020-12-21 17:36:11 2212

原创 JVM垃圾回收(一)

目标如何判断对象可以回收:1. 引用计数法:2. 可达性分析(根搜索)算法:3. 哪些对象可以作为 GC Root ?4. 五种引用垃圾回收算法1 标记+清除2 标记+整理3 复制4 分代垃圾回收机制垃圾回收器1. 串行Serial2. 吞吐量优先ParallelGC3. 响应时间优先CMS(JDK9中被废弃)4. G14.1 G1 垃圾回收阶段4.2 Young Collection4.3 Young Collection + CM4.4 Mixed Collection4.5 Full GC垃圾回收

2020-10-15 20:14:12 495

转载 (十二)如何配置使用Elasticsearch的动态映射 (dynamic mapping)

目录1 动态映射(dynamic mapping)1.1 什么是动态映射1.2 体验动态映射2 开启dynamic mapping动态映射策略2.1 约束策略2.2 策略示例3 定制dynamic mapping策略3.1 date_detection - 日期识别策略3.2 在type中自定义动态映射模板写在前面: 本文涉及到的演示以ES 6.6.0版本, 其他版本可能存在不同, 还请读者朋友们注意.1 动态映射(dynamic mapping)1.1 什么是动态映射动态映射时Elasticsea

2020-10-12 20:11:09 951

转载 (十)如何使用Elasticsearch的索引模板(index template)

目录1 什么是索引模板1.1 索引模板中的内容1.2 索引模板的用途2 创建索引模板3 查看索引模板4 删除索引模板5 模板的使用建议5.1 一个index中不能有多个type5.2 设置_source = false5.3 设置_all = false5.4 设置dynamic = strict5.5 使用keyword类型1 什么是索引模板索引模板: 就是把已经创建好的某个索引的参数设置(settings)和索引映射(mapping)保存下来作为模板, 在创建新索引时, 指定要使用的模板名, 就可以

2020-10-12 16:05:18 2498

转载 (九)Elasticsearch如何定制分词器 (自定义分词策略)

目录1 索引的分析1.1 分析器的组成1.2 倒排索引的核心原理-normalization2 ES的默认分词器3 修改分词器4 定制分词器4.1 向索引中添加自定义的分词器4.2 测试自定义分析器4.3 向映射中添加自定义的分词器5 常见问题1 索引的分析索引分析: 就是把输入的文本块按照一定的策略进行分解, 并建立倒排索引的过程. 在Lucene的架构中, 这个过程由分析器(analyzer)完成.1.1 分析器的组成字符过滤器(character filter): 比如去除HTML标签、把

2020-10-12 15:55:42 741

转载 (八)增删改查、打开、关闭Elasticsearch的索引

目录1 创建index(配置mapping[映射])2 查看index3 修改index4 删除index5 打开/关闭index6 常见问题及解决方法Elasticsearch中的index相当于RDBMS(关系型数据库, 比如MySQL)中的DataBase.本篇文章通过Kibana插件, 演示了ES的基础语法: 对ES中的index进行CRUD(增删改查)以及关闭、开启操作.阅读须知:在ES 6.x之前的版本中, 每个index中可以有多个type, 类似于MySQL中每个数据库可以有多张表,

2020-10-12 15:43:08 1174

转载 (七) Elasticsearch查询索引文档的6种方法

目录本文的六种查询方法, 只是一个简单的入门, 详细使用方法会在后续的学习中逐一演示.1 Query String Search(查询串检索)这种方法通过HTTP请求的Query String携带查询参数, 因此得名.适用于临时性的查询请求, 比如在终端检查基础信息:# 检索name中包含Java的文档, 并按价格降序排序: curl -XGET 'http://localhost:9301/book_shop/it_book/_search?q=name:Java&sort=pri

2020-10-12 15:36:05 1330

转载 (六)通过Kibana插件操作ES中的索引文档 (CRUD操作)

目录1 创建、删除索引1.1 创建索引2.2 删除索引2 document的结构3 添加文档4 查询文档5 修改文档5.1 替换文档5.2 更新文档6 删除文档1 创建、删除索引1.1 创建索引# 创建索引API: PUT test_index?pretty# 响应信息如下:#! Deprecation: the default number of shards will change from [5] to [1] in 7.0.0; # if you wish to continue us

2020-10-12 15:26:37 1268

转载 (四)安装Kibana 6.6.0 以及常见问题的解决

目录1 Kibana是什么2 安装并启动Kibana2.1 准备安装包2.2 修改配置文件2.3 启动Kibana并验证2.4 关闭Kibana服务查看node服务的进程id3 Kibana功能测试3.1 关于集群的状态status3.2 关于集群中的节点数3.3 关于未分配的分片4 常见问题及解决1 Kibana是什么2 安装并启动Kibana2.1 准备安装包2.2 修改配置文件2.3 启动Kibana并验证2.4 关闭Kibana服务3 Kibana功能测试3.1 关于集群的状态sta

2020-10-12 15:08:47 1489 1

转载 (三)初探Elasticsearch的主要配置文件(以6.6.0版本为例)

目录1 elasticsearch.yml(ES服务配置)1.1 Cluster集群配置1.2 Node节点配置1.3 Paths路径配置1.4 Memory内存配置1.5 Network网络配置1.6 Discovery节点发现配置1.7 Gateway网关配置1.8 Various其他配置2 jvm.options(JVM参数配置)3 log4j2.properties(日志配置)参考资料版权声明1 elasticsearch.yml(ES服务配置)文件位置: ${ES_H

2020-10-12 14:55:47 449

转载 (二)安装Elasticsearch单机服务 以及常见问题的解决

目录1 准备工作1.1 安装JDK1.2 下载安装包1.3 创建elastic用户2 启动ES服务2.1 修改配置文件3 验证ES服务是否可用4 关闭与重启服务4.1 关闭服务4.2 重启服务5 常见问题及解决方法5.1 使用ES专属用户登录时出错5.2 syscall filter - 不能安装5.3 memory is not locked - 内存没有锁定5.4 max virtual memory - 最大虚拟内存太小5.5 max number of threads - 最大线程数太小5.6 ma

2020-10-12 14:17:05 597

转载 Elasticsearch学习总结

目录1 Elasticsearch概述1.1 Elasticsearch是什么1.2 Elasticsearch的优点1.3 Elasticsearch的相关产品1.4 Elasticsearch的使用场景2 Elasticsearch的功能概述2.1 分布式的搜索引擎和数据分析引擎2.2 全文检索 结构化检索 数据分析2.3 海量数据的近实时处理3 Elasticsearch的架构3.1 gateway - 门户、网关3.2 Lucene - 分布式Lucene目录3.2 Discovery - 发现服务

2020-10-12 10:25:11 1752

转载 (五)ES通过Kibana查看Elasticsearch集群的健康状态、节点和索引个数

目录1 检查集群的健康状况2 查看集群中的节点个数3 查看集群中的索引在本篇文章之前, 需要完成:① 启动Elasticsearch服务, 至少启动一个节点, 参考博主文章 ES 02 - Elasticsearch单机服务的部署 (包括常见问题的解决), 部署Elasticsearch服务;② 启动Kibana, 参考博主文章 ES 04 - 安装Kibana插件(6.6.0版本), 安装并启动Kibana;③ 通过浏览器访问Kibana;④ 进入Dev Tools(开发者工具)界面.1 检查

2020-10-10 11:01:30 10152

转载 (十一)ES配置Elasticsearch的映射 (mapping) 目录

目录1 映射的相关概念1.1 什么是映射1.2 映射的组成1.3 元字段1.4 字段的类型2 如何配置mapping2.1 创建mapping2.2 更新mapping2.3 查看mapping1 映射的相关概念1.1 什么是映射1 映射的相关概念1.1 什么是映射(1) 映射(mapping): 定义index的元数据, 指定要索引并存储的文档的字段类型.也就是说映射决定了Elasticsearch在建立倒排索引、进行检索时对文档采取的相关策略, 如数字类型、日期类型、文本类型等等.需要注意

2020-10-10 10:50:05 798

空空如也

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

TA关注的人

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