自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Link的博客

你只需要努力,剩下的交给时光

  • 博客(85)
  • 收藏
  • 关注

原创 GitFlow

分支规范Master(永远只有一个分支)发布分支,与线上保持一致,只能由release|hotfix分支合并代码,该分支不能修改只能合并Develop开发分支,由master分支拉取,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支命名规范: dev-大版本号.小版本号.递增数Test测试分支,我们基于Develop分支创建一个Relea...

2023-10-17 12:48:00 95

原创 ChatGpt系列三:用户标签系统(用户画像)

TODO

2023-08-21 11:46:00 186

原创 ChatGpt系列二:通用型智能客服系统设计

常规客服系统我们常见的客服系统基本上都是预设好问答,然后通过匹配规则,将客户输入定位到预设好的答案输出。规则匹配过程一般分两种:引导式:固定好问题选项,由用户自己选择固定问题得到所需答案。这种场景一般使用在帮助中心,或者知识库都是很严肃、答案很明确的场景(保险推荐、助贷、医疗导珍等)伪智能模式: 由用户自然语言提问得到答案,其实本质上还是语音转文字,然后通过规则引擎定位预设的答案,只是...

2023-08-21 10:50:00 200

原创 ChatGpt系列一:模型介绍

GPT4\GPT-3.5多模态模型,就是自然语言处理模型,可以理解文本,而且很像人,不是常见的指令型的假模型,是有人味的一个模型,主要接收文本输入并输出文本获得更好结果6项策略写下清晰的说明策略:要求模特采用角色(系统消息可用于指定模型在其回复中使用的角色,在我们落地应用时这个是必备的,将角色设置为我们自己的项目名称)使用分隔符清楚的指示输入的不同部分指定完成任务的步骤提供例子...

2023-08-21 10:04:00 158

原创 synchronized关键字

修饰方法public synchronized void method(){ // todo}修饰代码块public void method(){ synchronized(this) { // todo }}synchronized关键字不能继承。虽然可以使用synchronized来定义方法,但synchronized并不属于方法定义的一部分,...

2023-08-16 08:25:00 38

原创 增强for循环和stream.forEach()遍历集合时的跳出操作

结论:普通for循环遍历集合:可以使用break跳出整个for循环,使用continue跳出本次循环。增强for循环:可以使用break跳出整个for循环,使用continue跳出本次循环。stream.forEach()循环处理集合时不能使用break和continue中止循环;可以使用关键字return跳出本次循环,并执行下一次遍历。无法跳出整个循环,必须遍历所有的数据才能结...

2023-08-16 08:23:00 591

原创 异常

Throwable为所有异常的根Error:是程序无法处理的错误,表示运行应用程序中较严重问题(不需要捕获)Exception: 程序可以处理的异常 (可以捕获)运行时异常 RuntimeException类及其子类(需要程序运行时才会发生的异常)非运行时异常(编译时异常,不捕获的话会编译不通过)自定义异常一般继承Exception类...

2023-08-16 08:23:00 27

原创 内部类和使用场景

所谓内部类,即定义在另一个类中的类。那么,为什么会有内部类这个概念,他的使用场景又是什么呢?首先,来看一下内部类的特点:\1. 它体现了一种代码的隐藏机制和访问控制机制,内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类,所以没有必要专门用一个Java文件存放这个类。public class Outer {  private int num;   private class ...

2023-08-16 08:22:00 34

原创 分布式环境下的幂等控制

简介接口的幂等性:相同的请求参数,多次请求结果一致。相同请求无论发起多少次,服务器只会处理一次,或者处理多次结果一样需要幂等的场景查询接口下单时防止重复请求内部服务异常重试等等如何保证幂等幂等首先是需要分辨出是否为重复请求。假如是简单的select查询,是天然的幂等,不需要额外处理。其他情况比如下单业务,可以使用唯一业务编号(订单号)来保证幂等性,或者使用额外字段来专门控制,比如...

2023-08-16 08:18:00 40

原创 布隆过滤器

简介它实际上是一个很长的二进制向量(位图)和一系列随机映射函数(哈希函数)。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。主要作用就是判断是否存在,常用的方法有:Map判断:效率慢,占用内存大list判断:效率高,占用内存大布隆过滤器:效率高,占用内存小,有误判。数据量巨大时,优先选用,因为占用内存...

2023-08-16 08:16:00 28

原创 mysql中的limit原理

mysql中的limit offset,count的原理是先取出offset+count条记录,然后抛弃前面offset条,然后读后面的count条,主要是offset的问题。所以会导致偏移量越大,性能越差。优化方法:select film_id,description from sakila.film order by title limit 10000,5;1、给出大致范围,增加确定范...

2021-06-01 14:51:00 653

原创 seata笔记

分布式事务产生背景数据库拆分单库单表支撑不了业务时需要对数据库进行水平拆分。分库分表后,原来在一个数据库上就能完成的写操作,可能会跨多个数据库,就产生了跨数据库事务问题业务服务化拆分业务拆分后,一个完整的业务逻辑可能会涉及多个服务,多个服务之间存在跨服务事务问题分布式事务理论基础两阶段提交协议(对应阿里的AT模式)事务管理器分为两个阶段来协调资源管理器,第一阶段准备资源,也...

2021-05-12 19:12:00 206 1

原创 Tomcat8源码解析

Tomcat是一款大家非常熟悉的web服务器,具体的功能和怎么使用我就不赘述咯,今天我们主要来分析Tomcat的源码,基于的版本是8.0.11。问题是从哪边开始着手呢?我是这样想的,肯定是先把Tomcat8.0.11的源码在官网中下载下来,然后导入到工程中。1 Tomcat源码下载及导入工程1.1 源码下载Tomcat版本:Tomcat8.0.11下载地址:点击下载然后选择对应的平台即...

2021-05-11 10:18:00 375 1

原创 mysql连接原理

在使用mysql过程中我们一定遇到过下面几种规范:禁止大表join即使要join,也不能超过两张表非必要不要进行JOIN查询,如果要进行JOIN查询,被JOIN的字段必须类型相同(字符类型和字符集都要相同),并建立索引为什么会有这样的规定?为什么这些规定能够避免连接查询慢的问题?我们今天来研究一下mysql的join究竟是怎么运作的连接查询简介连接查询就是将两个或多个表的数据结合起来。下图展示了JOIN的7种用法,其中mysql不支持FULL OUTER JOIN,可以用UNION实现图

2021-04-19 11:59:10 178

原创 【转】再也不要对java中==和equals的区别有困惑了,这篇文章保证你能懂

想到你应该无数次看到过这个问题了,也可能你已经看过无数篇文章了,如果你还是一头雾水或者是不理解,那试着看看这篇文章,相信你一定能看懂。一、理解”==“的含义在java中,主要有两个作用。1、基础数据类型:比较的是他们的值是否相等,比如两个int类型的变量,比较的是变量的值是否一样。2、引用数据类型:比较的是引用的地址是否相同,比如说新建了两个User对象,比较的是两个U...

2021-03-12 15:20:00 82

原创 【转】Java中的BigDecimal类你了解多少?

前言我们都知道浮点型变量在进行计算的时候会出现丢失精度的问题。如下一段代码:System.out.println(0.05 + 0.01);System.out.println(1.0 - 0.42);System.out.println(4.015 * 100);System.out.println(123.3 / 100);输出:0.060000000000000005...

2021-02-22 14:31:00 97

原创 7-rocketmq-borker配置文件

#broker集群名称,用于划分brokerbrokerClusterName=MQCluster001#broker名称,用于主从配对,相同名称的broker才能做主从设置brokerName=mq_broker_1#用于标识主从关系,0为主,其他大于0的为从(不能小于0)master设置0,slave设置1。Master角色的Broker支持读和写,Slave角色的Broke...

2021-01-07 23:56:00 201

原创 4-rocketmq-分布式事物

对分布式事务及两阶段提交、三阶段提交的理解一、分布式数据一致性在分布式系统中,为了保证数据的高可用,通常会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。(1)什么是数据一致性在数据有多份副本的情况下,如果网络、服务器或者软件出现故障,会导致部分副本写入成功,部分副本写入失败。这就造成各个副本之间的数据不一致,数据内容冲突。造成事实上的数据不一致。(...

2021-01-07 23:55:00 85

原创 6-rocketmq-springboot整合

官方手册https://github.com/apache/rocketmq-spring/wiki/用户手册引包<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifa...

2021-01-07 21:13:00 446

原创 5-rocketmq-事务消息

两阶段提交协议两阶段提交协议是协调所有分布式原子事务参与者,并决定提交或取消(回滚)的分布式算法。(1)协议参与者在两阶段提交协议中,系统一般包含两类机器(或节点):一类为协调者(coordinator),通常一个系统中只有一个;另一类为事务参与者(participants,cohorts或workers),一般包含多个,在数据存储系统中可以理解为数据副本的个数。协议中假设每个节点都...

2021-01-07 21:10:00 113

原创 3-rocketmq-支持的消息种类

RocketMQ消息支持的模式普通消息 NormalProducer消息同步发送producer.send(Message msg)消息异步发送producer.send(Message msg, SendCallback sendCallback)单向发送OneWayproducer.sendOneWay(Message msg);顺序消息 OrderP...

2021-01-07 21:08:00 174

原创 2-rocketmq-消息发送和接收

quick start添加依赖<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.7.1</version></depende...

2021-01-07 21:07:00 663

原创 1-rocketmq简介-部署

简介基于java开发,高可用应用场景1、应用解耦2、流量销峰3、异步处理4、消息分发(邮件、短信、日志、数据处理)延时队列场景:需要延时单次延迟执行的场景,比如订单取消常见问题1、如何保证高可用集群部署2、如何保证消息不丢失(消息的可靠性传输)生产者丢失数据开启生产者确认模式,确认发送成功了才对消费者可见消息队列丢失数据开启消息持久化,设置好刷盘策略...

2021-01-07 21:05:00 96

原创 详解unix5种IO模型

定义:Unix网络编程对IO模型进行了分类,共分为5类,要在Unix系统的前提下才有效。5种IO模型:阻塞IO。非阻塞IO。IO多路复用。信号驱动。异步IO。这些IO模型的改动的目的是为了提高服务器能够并行处理的连接数,而不是提高程序的执行性能。前提:要搞懂阻塞、非阻塞、同步、异步。阻塞、非阻塞、同步、异步可以看彻底搞懂阻塞、非阻塞、同步、异步总得来说:阻塞/非阻...

2021-01-02 19:15:00 530 1

原创 OOM 常见原因及解决方案

当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误。本文总结了常见的 OOM 原因及其解决方法,如下图所示。如有遗漏或错误,欢迎补充指正。1、Java heap space当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 java.lang.OutOfMemoryError:Javaheap space 错误(...

2020-12-29 17:08:00 279

原创 【转载】Spring 如何解决循环依赖的问题

(一)Spring IOC容器---对象循环依赖1.什么是循环依赖? what? (1)循环依赖-->循环引用。--->即2个或以上bean互相持有对方,最终形成闭环。 eg:A依赖B,B依赖C,C又依赖A。【注意:这里不是函数的循环调用【是个死循环,除非有终结条件】,是对象相互依赖关系】2.Spring中循环依赖的场景?where? ...

2020-12-29 17:07:00 69

原创 【转载】Java必备技能之实战篇—Nginx各种应用场景配置(可以直接复制修改使用)...

nginx正向代理server { listen 8090; server_name www.gps.com; location / { resolver 218.85.157.99 218.85.152.99; resolver_timeout 30s; proxy_pass http://$host$request_uri; } a...

2020-12-22 23:00:00 64

原创 1-RocketMq

简介基于java开发,高可用应用场景1、应用解耦2、流量销峰3、异步处理4、消息分发(邮件、短信、日志、数据处理)延时队列场景:需要延时单次延迟执行的场景,比如订单取消常见问题1、如何保证高可用集群部署2、如何保证消息不丢失(消息的可靠性传输)生产者丢失数据开启生产者确认模式,确认发送成功了才对消费者可见消息队列丢失数据开启消息持久化,设置好刷盘策略...

2020-12-22 14:32:00 158

原创 jvm10-虚拟机字节码执行引擎

运行时栈帧结构局部变量表操作数栈动态连接方法返回地址附加信息java虚拟机的运行时数据区域:之前我们已经了解了有这么个区域,而且已经知道有栈帧这么一个结构,那我们就从方法执行的角度来剖析栈帧。栈帧也叫过程活动记录,是编译器用来进行方法调用和方法执行的一种数据结构,它是虚拟机运行时数据区域中的虚拟机栈的栈元素。栈帧中包括了局部变量表,操作数栈,动态链接和方法返回地址以及额外...

2020-12-22 10:23:00 91

原创 jvm9-类加载机制

概述虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制相当于懒加载机制OSGI 就是通过类的加载机制实现的类加载时机加载:连接:初始化:在以下情况才会进行初始化1、遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,...

2020-12-22 10:21:00 97

原创 jvm8-字节码指令

简介java虚拟机的指令是由一个字节长度的,代表着某种特定操作含义的数字,称之为操作码,以及跟随其后的零至多个代表此操作所需参数的操作数而构成操作码的长度为1个字节,因此最大只有256条基于栈的指令集架构(还有一种是基于寄存器的)字节码与数据类型i l f d a代表引用类型加载和存储指令加载和存储指令用于将数据在栈帧中的局部变量表和操作数栈之间来...

2020-12-22 10:18:00 90

原创 jvm7-类文件结构

Class文件简介和发展历史class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑的排列在class文件之中,中间没有添加任何分隔符,整个class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在当遇到8位字节以上的空间数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储Class文件中有两种数据类型,分别是无符号数和表class文...

2020-12-22 10:14:00 53

原创 jvm5-性能调优

知识工具数据经验案例1问题:经常有用户反馈长时间出现卡顿的现象处理思路:偶发,所以不会是sql问题监控cpu监控内存发现fullGC频繁,每次需要20-30s,停顿时间过长总结:大对象过多,jvm内存设置的过大,老年代经常占满触发fullgc,老年代内存过大每次fullgc时间过长解决:部署多个web容器,每个web容器的堆内存设置到合理值,不宜过大,减少每...

2020-12-22 09:45:00 57

原创 jvm4-虚拟机分析工具

jdk安装包bin目录下的.exe命令行工具都是依赖于tools.jar命令行工具jps列出当前运行的jvm进程usage: jps [-help] jps [-q] [-mlvV] [<hostid>]Definitions: <hostid>: <hostname>[:<port>]-m 运...

2020-12-22 09:43:00 55

原创 jvm3-内存分配

内存分配策略优先分配到Eden-XX:+UseSerialGc 指定SerialGc垃圾收集器jdk1.7 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)jdk1.8 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)jdk1.9 默认垃圾收集器G1大对象直接分配到老年代...

2020-12-22 09:38:00 63

原创 jvm1-基础

https://docs.oracle.com/javase/7/docs/JDK java deJRE java runtime environmentJVM java virtual machine内存溢出模拟java.lang.OutOfMemoryError: java heap spaceList<Demo> list = new Array...

2020-12-21 12:48:00 52

原创 jvm2-垃圾回收

垃圾回收如何判定对象为垃圾对象引用计数法在对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器+1,当引用失效时,引用计数器-1。引用计数器为零时认为失效这种方法解决不了相互引用的情况 虚拟机一般不用可达性分析法定义GCRoot(根节点),从GCRoot往下寻找,对象与gcroot没有引用链的认为可回收可作为GCRoots的对象虚拟机栈方法区的类属性所...

2020-12-21 12:46:00 59

原创 Elasticsearch脑裂问题详细分析以及解决方案

Elasticsearch脑裂问题详细分析以及解决方案什么是脑裂问题脑裂问题其实就是同一个集群的不同节点对于整个集群的状态有不同的理解,导致操作错乱,类似于精神分裂怎么发现集群产生脑裂问题吧1.Elasticsearch出现查询非常缓慢的情况2.通过命令查看集群的状态3.curl -XGET ‘http://localhost:9200/_cluster/health’4.发...

2020-12-21 00:16:00 2059 1

原创 ThreadLocal原理(基于jdk1.8)

在java的多线程模块中,ThreadLocal是经常被提问到的一个知识点,提问的方式有很多种,可能是循序渐进也可能是就像我的题目那样,因此只有理解透彻了,不管怎么问,都能游刃有余。这篇文章主要从以下几个角度来分析理解1、ThreadLocal是什么2、ThreadLocal怎么用3、ThreadLocal源码分析4、ThreadLocal内存泄漏问题下面我们带着这些问题,一...

2020-12-20 10:26:00 64

原创 Java中的数组

在说说Java里有equals(上)这篇文章里,文末我们提到了String底层是char数组来实现的,好多人当年上学时被二维数组,三维数组吓哭了吧。我们今天来讲讲数组,数组非常的重要,很多常用类,比如String等底层都是用数组来实现的,后续我们会一一讲到,多少人很久没用数组了?是否都在用ArrayList呀?这儿先卖个关子,ArrayList底层也是数组实现的。所谓数组,是相同数据...

2020-12-16 00:53:00 74

空空如也

空空如也

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

TA关注的人

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