自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(135)
  • 收藏
  • 关注

原创 IDEA springboot 打成war包,并在本地tomcat部署

1. 修改pom.xml 1.1修改打包类型为war<packaging>war</packaging> 1.2 屏蔽tomcat <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <...

2020-12-15 13:08:33 255

原创 coalesce函数

coalesce函数在Maxcompute里面的官方解释如下:具体怎么用呢?上面的函数说明通俗来说coalesce()的作用是:返回传入的参数中第一个非null的值。expre1不为空值则返回expre1;否则判断expre2是否是空值,如果expre2不为空值则返回expre2;否则判断expre3是否是空值,如果expre3不为空值则返回expre3;……以此类推,如果所有的表达式都为空值,则返回NULL。...

2020-11-25 20:21:49 386

原创 Mac启动Mysql,停止Mysql,重启Mysql

1、启动mysqlsudo /usr/local/mysql/support-files/mysql.server start2、停止mysqlsudo /usr/local/mysql/support-files/mysql.server stop3、重启mysqlsudo /usr/local/mysql/support-files/mysql.server restart

2020-11-19 20:04:11 215

原创 CDN加速原理

一、什么是 CDNCDN的全称是(Content Delivery Network),即内容分发网络。其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络”边缘“的节点,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速度。简单的说,CDN的工作原理就是将您源站的资源缓存到位于全球各地的CDN节点上,用户请求资源时,就近返回节点上缓存的资源,而不需要

2020-11-19 10:39:20 146

原创 Netty 粘包 拆包

什么是粘包和半包?先从数据包的发送和接收开始讲起。我们知道, Netty 发送和读取数据的单位,可以形象的使用 ByteBuf 来充当。每一次发送,就是向Channel 写入一个 ByteBuf ;每一次读取,就是从 Channel 读到一个 ByteBuf 。发送一次数据,举例如下:channel.writeAndFlush(buffer);读取一次数据,举例如下:public void channelRead(ChannelHandlerContext ctx, O.

2020-11-10 19:02:00 174

原创 缓存穿透、缓存雪崩和缓存击穿是什么?

redis缓存穿透理解重在穿透吧,也就是访问透过redis直接经过mysql,通常是一个不存在的key,在数据库查询为null。每次请求落在数据库、并且高并发。数据库扛不住会挂掉。解决方案可以将查到的null设成该key的缓存对象。 当然,也可以根据明显错误的key在逻辑层就就行验证。 同时,你也可以分析用户行为,是否为故意请求或者爬虫、攻击者。针对用户访问做限制。 其他等等,比如用布隆过滤器(超大型hashmap)先过滤。redis缓存雪崩理解雪崩,就是某东西蜂拥而至的意思,

2020-11-10 15:31:38 146

原创 阿里云DetectImageTags 标签场景检测(图片内容识别)

第一步:创建IMM项目。强烈建议登录智能媒体管理进行项目创建操作,以便您确认计费相关信息。获取访问域名:imm.cn-shenzhen.aliyuncs.com第二步:图片 OSS URI,如oss://imm-test/testcases/cat.jpgOSS 地址规则为:oss://bucket/object,其中bucket为和当前 Project 在同一区域的 OSS 桶名,object为文件路径。// 初始化 IMM 客户端static IAcsClie...

2020-11-03 14:20:43 737

原创 MESI缓存一致性协议

volatile在store前加锁,锁的粒度减小,基本上忽略加锁时间,加锁后,如果write还没执行,cpu总线嗅探机制让initFlag失效,再次获取的时候由于被锁了,拿不到值,保证可见性

2020-10-30 15:43:16 210

原创 java线程内存模型

2020-10-30 15:34:03 90

原创 到底可不可以使用join?

MySQL 执行 join 语句的两种可能算法,这两种算法是由能否使用被驱动表的索引决定的。而能否用上被驱动表的索引,对 join 语句的性能影响很大。通过对 Index Nested-Loop Join 和 Block Nested-Loop Join 两个算法执行过程的分析,我们也得到了文章开头两个问题的答案:如果可以使用被驱动表的索引,join 语句还是有其优势的;不能使用被驱动表的索引,只能使用 Block Nested-Loop Join 算法,这样的语句就尽量不要使用;在使用 join 的时候,

2020-10-21 11:50:02 545

原创 主键索引和普通索引有什么区别?

在 MySQL 中, 索引是在存储引擎层实现的, 所以并没有统⼀的索引标准, 由于 InnoDB 存储引擎在 MySQL数据库中使⽤最为⼴泛, 下⾯以 InnoDB 为例来分析⼀下其中的索引模型.在 InnoDB 中, 表都是根据主键顺序以索引的形式存放的, InnoDB 使⽤了 B+ 树索引模型,所以数据都是存储在 B+ 树中的, 如图所示:从图中可以看出, 根据叶子节点内容不同,索引类型分为主键索引和非主键索引.主键索引也被称为聚簇索引,叶子节点存放的是整行数据; 而非主键索引被称为二级索引,叶子节点

2020-10-20 16:16:52 3017 1

原创 一条SQL更新语句是如何执行的?

更新流程还涉及两个重要的日志模块,它们正是我们今天要讨论的主角:redo log(重做日志)和 binlog(归档日志)。不知道你还记不记得《孔乙己》这篇文章,酒店掌柜有一个粉板,专门用来记录客人的赊账记录。如果赊账的人不多,那么他可以把顾客名和账目写在板上。但如果赊账的人多了,粉板总会有记不下的时候,这个时候掌柜一定还有一个专门记录赊账的账本。如果有人要赊账或者还账的话,掌柜一般有两种做法:一种做法是直接把账本翻出来,把这次赊的账加上去或者扣除掉;另一种做法是先在粉板上记下这次的账,等打烊以后再...

2020-10-19 19:12:20 213

原创 Nacos 分布式配置中心

概述在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件什么是 Nacos ConfigNacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。Spring Cloud Alibaba Nacos Config 是

2020-10-17 16:19:55 163

原创 Seata原理简介

Seata2019年1月份蚂蚁金服和阿里巴巴共同开源的分布式事务解决方案。Simple Extensible Autonomous Transaction Architecture,简单可扩展自治事务框架。TC/TM/RM三大组件:执行流程:TM开启分布式事务(TM向TC注册全局事务记录) 按业务场景,编排数据库、服务等事务中资源(RM向TC汇报资源准备状态) TM结束分布式事务,事务一阶段结束(TM通知TC提交/回滚分布式事务) TC汇总事务信息,决定分布式事务是提交还是回滚

2020-10-17 15:35:33 2585

原创 数据库 事务级别介绍

数据库 事务级别介绍2个概念:事务,锁。事务:逻辑单元内的一系列操作,要么全部完成执行,要么全部不执行。锁:将某数据的操作加锁,则其他人无法获取当前数据的当前操作。避免单位时间内的数据覆盖,影响数据的一致性。事务是多个操作的执行逻辑与的集合。事务内控制加锁,实现不同的级别。事务内的锁,需等事务结束才能释放锁。不加事务的锁,操作完即释放锁。三操作:读,rade -R写,write -W增,add -A锁分类:锁住操作,避免其他人获取。写操作枷锁 排它锁 X 锁读操作加锁 共享锁

2020-10-13 14:08:18 875

原创 MySQL5.7修改默认事务隔离级别

MySQL默认的事务隔离级别是“可重复读”也就是REPEATABLE-READ。事务隔离级别包括:1 读未提交 READ-UNCOMMITTED 2 读提交 READ-COMMITTED 3 可重复读 REPEATABLE-READ 4 串行化 SERIALIZABLE 若要修改,需要编辑my.cnf文件。假如要改为READ-COMMITTED。sudo vi /etc/mysql/my.cnf在文件末尾添加:.

2020-10-13 14:07:16 1834

原创 京东/拼多多淘客小程序跳入路径

东小程序代码如下e = encodeURIComponent(shortURL);//必须转码wx.navigateToMiniProgram({appId: 'wx91d27dbf599dff74',path: 'pages/union/proxy/proxy?spreadUrl=' + e +&appid=XXXXXX,//XXXXXX为自己小程序的apppid,应该是官方小程序统计跳转来源的,选填success(res) {}})测试链接 pages/union/proxy/pro

2020-10-12 09:57:12 3499

原创 springboot实现热部署

原理深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。方式springboot有3中热部署方式: 1.使用springloaded配置pom.xml文件,使用mv.

2020-09-11 14:24:05 372

原创 ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)

解决方法: 经排查,发现/tmp/mysql.sock不存在。mysqld.sock是mysql启动以后自动生成的文件,关闭MySQL服务后,这个文件又会被删除。如果MySQL启动异常,就有可能不生成这个文件,登录的时候就会出现你这个错误。可能是mysql未启动,尝试启动:sudo mysql.server start如果无法启动mysql,执行以下操作在终端中输入mysqld结果xiaoyuan:~ xiaoyuan$ mysqld2019-...

2020-09-08 15:17:25 147

原创 启动mongodb,提示权限不够

执行命令:./bin/mongod -f conf/mongob.conf提示:-bash: ./bin/mongod: 权限不够给bin目录权限,命令:chmod -R 740 bin

2020-08-31 19:45:06 2190

原创 Linux 下安装mongodb

先下载mongodb:wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.6.tgz要是用的Linux虚拟机很慢,你可以直接去https://www.mongodb.org/dl/linux/x86_64下载你需要的版本。然后利用FileZilla Client这个工具将软件包移到Linux系统中,这样可能要快些。mongodb下载地址接下来就是常规操作了:加压tar -xvzf mongod..

2020-08-31 19:37:39 127

原创 Linux 如何开放端口

一、查看哪些端口被打开 netstat -anp二、关闭端口号:iptables -A OUTPUT -p tcp --dport 端口号-j DROP三、打开端口号:iptables -A INPUT -ptcp --dport 端口号-j ACCEPT四、保存设置service iptables save五、以下是linux打开端口命令的使用方法。  nc -lp 23 &(打开23端口,即telnet)  netstat -an | gr...

2020-08-31 19:36:40 3169

原创 linux安装rabbitMQ

1.安装rabbitMQ由于RabbitMQ依赖Erlang, 所以在安装rabbitMQ之前需要先安装Erlang你可以直接执行yum install erlang,但是这种安装方法安装的Erlang版本可能不是最新的,有时候不能满足RabbitMQ需要的最低版本,所以本文推荐使用Erlang Solution安装的方式。新建一个erlang-solutions目录,这里我在/app下面新建(博主所有的安装包都统一管理在/app下面)#进入目录cderlang-solutions,下载e.

2020-08-31 19:35:43 131

原创 SpringBoot之项目打war包和jar包

打war包1、删除pom.xml的内置tomcat删除内置的tomcat,不然打成war包,tomcat和springboot内置的tomcat搞一起,会打架的。<!--把内置的tomcat给注释掉 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat&l

2020-08-31 19:34:51 150

原创 RabbitMQ工作模式

一.基于erlang语言: 是一种支持高并发的语言RabbitMQ的六种工作模式:1.1 simple简单模式消息产生着§将消息放入队列 消息的消费者(consumer) 监听(while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患 消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失)应用场景:聊天(中间有一个过度的服务器;p端,c端)1.2 work工作模式(资源的竞争)消息产生者将消息放入队列消费者可以有多个,消费者1,消费者2

2020-08-25 19:35:26 242

原创 mongodb启动报错

source Also make sure that another mongod instance is not already running on thet is stating that Mongo is already running. If you are certain it is not, then the lock file still exists from a previous unclean shutdown.ps aux | grep mongoif that ret

2020-08-21 10:50:53 341

原创 mac 安装和使用MongoDB

下载安装在网上搜了一下,安装MongoDB有三种方式:(1)手动命令安装(2)采用Homebrew(3)下载安装包。由于对前两种介绍的命令行安装方法不是很了解,所以选择了第三种方式进行安装。1.访问MongoDB官方下载地址官网地址是:MongoDB Download Center | MongoDB2.点击“DOWNLOAD(tgz)”按钮,将解压后的文件放入/usr/local ,默认情况下在Finder中是看不到 /usr 这个目录的(终端用得溜的请略过),可以打开Finder后.

2020-08-20 14:08:36 186

原创 macOS 无法sudo创建文件夹返回Read-only file system问题解决

macOS catalina 无法创建日志目录返回sudo mkdir -p /data/data/返回错误mkdir: /data/db/: Read-only file systemgoogle一下马上不知道,????,满眼都是挂载外部硬盘,我的就是本地的固态硬盘呀,找呀找终于找到一篇apple官方社区的帖子, 直接执行如下命令即可挂载写权限即可。sudo mount -uw /继续赋予一下本机用户权限,搞定????工sudo chown -R

2020-08-20 10:55:26 720

原创 mac brew安装mongodb报错

问题brew安装失败。gongzhihaodeMacBook-Pro:homebrew-core gongzhihao$ brew install mongodb -vUpdating Homebrew...--^CError: No available formula with the name "mongodb" //仓库没有软件==> Searching for a previously deleted formula (in the last month)...Warni

2020-08-19 17:56:13 835

原创 Spring循环依赖

循环依赖就是循环引用,两个或以上的bean相互持有对方。比如说beanA引用beanB,beanB引用beanC,beanC引用beanA, 它们之间的引用关系构成一个环。Spring 如何解决循环依赖Spring中的循环依赖包括构造器循环依赖 setter循环依赖构造器的依赖Spring对于构造器的依赖、无法解决。只会抛出BeanCurrentlyInCreationException异常。 protected void befor...

2020-08-19 16:08:13 229

原创 Seata的原理

分布式事务解决的方案有哪些?目前分布式事务解决的方案主要有对业务无入侵和有入侵的方案,无入侵方案主要有基于数据库 XA 协议的两段式提交(2PC)方案,它的优点是对业务代码无入侵,但是它的缺点也是很明显:必须要求数据库对 XA 协议的支持,且由于 XA 协议自身的特点,它会造成事务资源长时间得不到释放,锁定周期长,而且在应用层上面无法干预,因此它性能很差,它的存在相当于七伤拳那样“伤人七分,损己三分”,因此在互联网项目中并不是很流行这种解决方案。为了这个弥补这种方案带来性能低的问题,大佬们又想出了很

2020-08-17 15:09:19 3330 1

原创 Spring Cloud Alibaba 之Seata

1. 概述在构建微服务的过程中,不管是使用什么框架、组件来构建,都绕不开一个问题,跨服务的业务操作如何保持数据一致性。2. 什么是分布式事务?首先,设想一个传统的单体应用,无论多少内部调用,最后终归是在同一个数据库上进行操作来完成一向业务操作,如图:随着业务量的发展,业务需求和架构发生了巨大的变化,整体架构由原来的单体应用逐渐拆分成为了微服务,原来的3个服务被从一个单体架构上拆开了,成为了3个独立的服务,分别使用独立的数据源,也不在之前共享同一个数据源了,具体的业务将由三个服务的调.

2020-08-17 14:49:30 430

原创 解决redis连接错误:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to...

究其原因是因为强制把redis快照关闭了导致不能持久化的问题,在网上查了一些相关解决方案,通过stop-writes-on-bgsave-error值设置为no即可避免这种问题。有两种修改方法,一种是通过redis命令行修改,另一种是直接修改redis.conf配置文件命令行修改方式示例:127.0.0.1:6379> config set stop-writes-on-bgsave-error no修改redis.conf文件:vi打开redis-server配置的redis.con

2020-08-14 17:49:43 367

原创 Jwt实际应用

1.什么是jwt双方之间传递安全信息的简洁的、URL安全的表述性声明规范。JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信息。简洁(Compact): 可以通过URL,POST参数或者在HTTP header发送,因为数据量小,传输速度也很快自包含(Self-contained):负载中包含了所有用户所需要的信息,避免了多次查询数据库。2.Jwt在javaweb项目中的简单使用第一步:引入maven依赖..

2020-08-14 16:33:08 236

原创 elasticsearch-head安装及启动

head是用于监控Elasticsearch状态的客户端插件,包括数据可视化,增删改查工具,es语句的可视化等等。5.0之后的安装方式如下: 1 2 3 4 5 6 7 8 git clone git://github.com/mobz/elasticsearch-head.git cd elasticsearch-head npm install npm install -g ..

2020-08-14 14:08:51 251

原创 ZK的选举算法

一、前言  前面学习了Zookeeper服务端的相关细节,其中对于集群启动而言,很重要的一部分就是Leader选举,接着就开始深入学习Leader选举。二、Leader选举2.1 Leader选举概述  Leader选举是保证分布式数据一致性的关键所在。当Zookeeper集群中的一台服务器出现以下两种情况之一时,需要进入Leader选举。  (1) 服务器初始化启动。  (2) 服务器运行期间无法和Leader保持连接。  下面就两种情况进行分析讲解。1. 服务器启动时期的

2020-08-11 20:03:45 665 1

原创 SpringBoot整合redisson分布式锁

1、分布式锁的实现方式大概有三种:1.基于关系型数据库,2.基于缓存,3基于zookeeper大部分网站使用的是基于缓存的,有更好的性能,而缓存一般是以集群方式部署,保证了高可用性总体来说,支持redis单实例、redis哨兵、redis cluster、redis master-slave等各种部署架构,都可以给你完美实现。2.基于缓存redis,使用开源 redisson 实现分布式锁3、关于redisson 锁的几点说明,1、通过阅读redission锁的API可以得知,其获取锁

2020-08-10 14:36:45 1581

原创 Mac 安装 Hadoop

2. SSH首先在系统里打开远程登录,位置在System Preference -> Sharing中,左边勾选Remote Login,右边选择All Users。ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 0600 ~/.ssh/authorized_keysssh localhost用来测试3. 安装hado...

2020-08-08 15:22:31 650

原创 ElasticSearch (五) Postman查询数据

match_allsizefrom sizematch返回指定字段排序-sortrangewildcard查询合并查询语句1. match_all --匹配所有文档match_all下面为查询结果resultsize例如如上在没有设置size的情况下默认查询出只有十条documentsize那么当我们需要查询出多余十条或者指定条数的数据呢,例如如下,我们只查询出三条数据size 3...

2020-08-06 18:59:38 4996

原创 mac 下安装 Head插件

四.安装ES-head插件1.Head插件是我们常用的插件,但是在ELK5.0以后按照之前的插件安装方式不能使用了,看了head官网之后,要单独启动一个服务才可以。git clone git://github.com/mobz/elasticsearch-head.gitcd elasticsearch-head接下来需要安装Node环境,我们需要做一下工作:下载对应的Node安装包并安装 二.安装npm 执行命令: 1 npm install 安装完成后执行 ..

2020-08-06 14:57:09 844

空空如也

空空如也

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

TA关注的人

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