- 博客(35)
- 收藏
- 关注
原创 docker安装启动nginx
1.下载nginx镜像 docker pull nginx2.启动nginxdocker run -d --name nginx01 -p 3344:80 nginx-d 后台启动--name docker镜像的内部名称-p docker内部端口号:宿主机端口号 docker镜像名称3.查看是否启动成功docker ps ...
2021-02-22 10:21:41 175 1
原创 java的String.intern()方法
1. intern()方法的作用?周志明的《深入理解jvm虚拟机》解释:String::intern()是一个本地方法,他的作用就是如果字符串常量池中已经包含了一个等于此String对象的字符串,则返回代表池中的这个字符串额String对象的引用;否则,会将此String对象的包含的字符串添加到常量池当中,并且返回此String对象的应用。2.JDK7之前和之后,内存划分区别–很重要作者在jvm那篇文章说过,方法区是一个逻辑上的概念,是虚拟机实现的细节,并不受《java虚拟机规范》的约束。而真正实现方
2021-01-20 11:36:57 1160 1
原创 mysql-索引
1.存储引擎1.1数据库的存储引擎有哪些?InnoDB、MyISAM和MEMORY1.2 InnoDB和MyISAM的区别?区别InnoDBMyISAM是否支持事务支持不支持是否支持外键支持不支持锁行锁(基于索引完成行锁)表锁跨平台支持跨平台支持拷贝使用跨平台很难支持拷贝使用适用范围读少写多,并发写入高读多写少,原子性要求低注意:行锁特点:内存开销大,加锁速度较慢,粒度小,所冲突低,并发高表锁特点:内存开销小,不会出现死锁,
2020-12-28 13:53:20 201
原创 2.nginx配置文件使用详解(静态展点-负载均衡-防盗链-动静分离)
1、配置文件的语法格式worker_processes 1; #共要创建多少个工作线程events { worker_connections 1024;#工作线程连接数}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen
2020-12-24 13:25:55 167
原创 1.nginx配置与使用
1.nginx安装1.1 配置安装环境yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-develGCC编译器:GCC(GNU Compiler Collection)可用来编译C语言程序。Nginx不会直接提供二进制可执行程序,只能下载源码进行编译。PCRE库:PCRE(Perl Compatible Regular Expressions,Perl兼容正则表达式)是由Phili
2020-12-24 10:29:12 131
原创 Mycat实现mysql的单主从复制,读写分离
1.什么是MycatMycat 是数据库中间件。2.为什么使用Mycat Java与数据库紧耦合。 高访问量高并发对数据库的压力。 读写请求数据不一致3.数据库中间件对比①Cobar属于阿里B2B事业群,始于2008年,在阿里服役3年多,接管3000+个MySQL数据库的schema,集群日处理在线SQL请求50亿次以上。由于Cobar发起人的离职,Cobar停止维护。② Mycat是开源社区在阿里cobar基础上进行二次开发,解决了cobar存在的问题,并且加入了许多新的功能在其中
2020-12-22 15:42:41 148
原创 Consul 安装 springcloud整合
1.安装Consul(windows)1.1 下载Consul官网下载地址:https://www.consul.io/downloads.html百度网盘下载:链接:https://pan.baidu.com/s/1b6HybOBj0dpblWSkBX671w 提取码:ahc9 复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V2的分享1.2 安装Consul解压及用,只有一个consul.exe文件,可见此文件放到path环境变量当中1.3 验证Consu
2020-12-02 14:59:11 233 1
原创 第三章 Elasticsearch高级命令【第一章的补充】
1. 搜索全部文档GET /索引库/类型/_search{ "query": { "match_all": {} }}2. 脚本字段用例:订单中有不同的汇率,结合汇率对订单价格进行排序GET /索引库/类型/_search{ "script_fields": { "产生的脚本字段的名称": { "script": { "lang": "painless",#默认使用painless 但是还有expression支持各种数学运算
2020-12-01 21:55:04 130
原创 第二章 ElasticSearch常用命令
1.前提es是属于restful风格,可直接是使用postman或者使用kibana直接进行请求2.操作索引库2.1 创建文档注意:索引库名称不能有大写PUT /test1/type1/1{ "name":"dongkuijie", "age":3}结果:2.2 创建索引库(设置mapping)PUT /test2{ "mappings": { "properties": { "name":{ "type": "text"
2020-11-25 22:04:38 177
原创 第一章 Elasticsearch搭建
1.下载 es及分词器可在官网下载,也可在我的百度网盘下载链接:https://pan.baidu.com/s/1cT8-ePINsgE0ay64mB12Bw提取码:4d9u复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V2的分享2.安装环境OS:CentOs7JDK:1.8ElasticSearch:7.6.2IK:7.6.23.安装3.1 解压es文件tar -zxf elasticsearch-7.6.2-linux-x86_64.tar.gz3.
2020-11-25 20:25:19 256
原创 第四章 zookeeper典型应用场景
1. dubbo注册中心1.1 简介在单体式服务中,通常是由多个客户端去调用一个服务,只要在客户端中配置唯一服务节点地址即可,当升级到分布式后,服务节点变多,像阿里一线大厂服务节点更是上万之多,这么多节点不可能手动配置在客户端,这里就需要一个中间服务,专门用于帮助客户端发现服务节点,即许多技术书籍经常提到的服务发现。1.2 功能特性服务注册:提供者上线时将自提供的服务提交给注册中心。服务注销:通知注册心提供者下线。服务订阅:动态实时接收服务变更消息。可靠:注册服务本身是集群的,数据冗余存储
2020-11-19 21:57:27 203
原创 第三章 zookeeper客户端使用与集群特性
一、客户端API常规应用zookeeper 提供了java与C两种语言的客户端。我们要学习的就是java客户端。引入最新的maven依赖:<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.5.5</versi
2020-11-17 21:01:39 188
原创 dubbo-admin搭建
1.前提:需要在本机搭建好zk。2.搭建1.1 上传 apache-tomcat-7.0.52和dubbo-admin.war1.2 解压 apache-tomcat-7.0.52tar -zxvf apache-tomcat-7.0.52.tar.gz1.3 将dubbo-admin.war放到apache-tomcat-7.0.52的webapp目录下1.4 启动tomcatcd /opt/apache-tomcat-7.0.52/bin/ #进入tomcat的bin目录./start
2020-11-15 16:09:35 107
原创 第二章 zookeeper 特性与节点说明
1. zookeeper概要、背景及作用1.1 zookeeper产生背景项目从单体到分布式转变之后,将会产生多个节点之间协同的问题。如:每天的定时任务由谁哪个节点来执行?RPC调用时的服务发现?如何保证并发请求的幂等=》zk锁这些问题可以统一归纳为多节点协调问题,如果靠节点自身进行协调这是非常不可靠的,性能上也不可取。必须由一个独立的服务做协调工作,它必须可靠,而且保证性能。1.2 zookeeper概要ZooKeeper是用于分布式应用程序的协调服务。它公开了一组简单的API,分布式
2020-11-12 21:29:25 216
原创 第一章 zookeeper搭建 集群+单体+3.5版本特性
1.zookeeper搭建1.安装jdk2.创建文件夹mkdir /opt/zookeeper-Onemkdir /opt/zookeeper-One/data3.上传zookeeper文件4.修改zoo_sample.conf 文件名称mv zoo_sample.cfg zoo.cfg 5.修改zoo.cfg配置dataDir=/opt/zk/zookeeper-One/data6.启动zk./zookeeper-3.4.6/bin/zkServer.sh start2.
2020-11-11 13:50:45 337
原创 nodepad++ 配置远程连接服务器,修改服务器配置文件或源码
1.下载nodepad++链接:https://notepad-plus-plus.org/downloads/2.安装2.1 点击插件2.2 点击插件管理2.3 搜索NPPFTP2.4 选中NPPFTP 安装2.5 会自动重启3.测试以及使用3.1 点击3.2 点击3.3 选择 profile seting3.4 注意选择sftp3.5 点击 画红框的,选择好刚才配置好服务器就好了3.6 双击查看文件3.7 点击/返回目录或返回顶层目录...
2020-11-10 16:19:30 264
原创 第五章 Rocketmq解决分布式事务
1 事务的流程上图说明了事务消息的大致方案,其中分为两个流程:正常事务消息的发送及提交、事务消息的补偿流程。2.1 事务消息发送及提交(1) 发送消息(half消息)。(2) 服务端响应消息(half消息)写入结果。(3) 根据发送结果执行本地事务(如果写入失败,此时half消息对业务不可见,本地逻辑不执行)。(4) 根据本地事务状态执行Commit或者Rollback(Commit操作生成消息索引,消息对消费者可见)2.2 事务补偿(1) 对没有Commit/Rollback的事务消息(
2020-11-09 21:59:26 205
原创 第四章 RocketMQ消息发送代码示例
注意:文章使用的是rocketmq集群。1 基本样例1.1 消息发送1)发送同步消息这种可靠性同步地发送方式使用的比较广泛,比如:重要的消息通知,短信通知。package com.itheima.mq.rocketmq.base.producer;import org.apache.rocketmq.client.producer.DefaultMQProducer;import org.apache.rocketmq.client.producer.SendResult;import o
2020-11-09 21:09:57 693
原创 第三章 mqadmin-rocketMQ集群管理工具
1 mqadmin管理工具1.1 使用方式进入RocketMQ安装位置,在bin目录下执行./mqadmin {command} {args}命令介绍1)Topic相关 名称 含义 命令选项 说明 updateTopic 创建更新Topic配置 -b Broker 地址,表示 topic 所在 Broker,只支持单台Broker,地址为ip:port -c cluster 名称,表示 topic 所在集群(集群可通过
2020-11-08 15:29:51 721
原创 第二章 RocketMQ集群简介-安装-测试
1.各角色介绍Producer:消息的发送者;举例:发信者Consumer:消息接收者;举例:收信者Broker:暂存和传输消息;举例:邮局NameServer:管理Broker;举例:各个邮局的管理机构Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者可以订阅一个或者多个Topic消息Message Queue:相当于是Topic的分区;用于并行发送和接收消息2.集群特点NameServer是一个几乎无状态节点,可集群部署,节点之间无任何
2020-11-08 14:34:38 523
原创 第一章 RocketMQ简介-MQ比较-安装-测试
1. MQ介绍1.1 为什么要用MQ消息队列是一种“先进先出”的数据结构其应用场景主要包含以下3个方面场景一: 应用解耦系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异常,影响用户使用体验。使用消息队列解耦合,系统的耦合性就会提高了。比如物流系统发生故障,需要几分钟才能来修复,在这段时间内,物流系统要处理的数据被缓存到消息队列中,用户的下单操作正常完成。当物流系统回
2020-11-03 21:43:30 229
原创 redis缓存设计与功能优化(篇七)
缓存穿透缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。造成缓存穿透的基本原因有两个:第一, 自身业务代码或者数据出现问题。第二, 一些恶意攻击、 爬虫等造成大量空命中。解决方案一:当获取到的缓存数据为空时,以null为value,放入都缓存当中去,方法直接返回null String get(String key) {
2020-11-01 20:43:42 373
原创 redis分布式锁实战(redis篇六)
1.典型互联网分布式秒杀方案1.1 pom 文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.o
2020-10-29 21:49:59 231
原创 Redis集群配置及集群原理剖析(redis篇五)
1.高可用集群架构图redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要sentinel哨兵也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可平扩展,据官方文档称可以线性扩展到上万个节点(官方推荐不超过1000个节点)。redis集群的性能和高可用性均优于之前版本的哨兵模式,且集群配置非常简单2.高可用集群配置2.1首先要在电脑上配置6台redis集群服务器(不会的可进入作者博客的redis篇一)2.
2020-10-25 16:09:34 428
原创 redis主从架构及哨兵模式(redis篇四)
1. redis架构图2. redis主从工作原理第一步:如果你为master配置了一个slave,不管这个slave是否是第一次连接上Master,它都会发送一个SYNC命令(redis2.8版本之前的命令)给master请求复制数据。第二步:master收到SYNC命令后,会在后台进行数据持久化通过bgsave生成最新的rdb快照文件,持久化期间,master会继续接收客户端的请求,它会把这些可能修改数据集的请求缓存在内存中。当持久化进行完毕以后,master会把这份rdb文件数据集发送sla
2020-10-25 14:36:06 362 1
原创 redis持久化(redis篇三)
Redis持久化1.RDB 快照1.1什么是RDB快照?RDB是在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。2.1怎样设置RDB快照?2.1.1 打开redis.conf 文件vi redis.conf2.1.2 修改配置文件:dbfilename dump.rdb 配置生成RDB文件的名字dir /root/redisRdb/6379 存储RDB文件位置2.1.3 RDB生成策略save 900 1 Redis 在满足
2020-10-22 21:40:56 136
原创 Redis核心数据结构(redis篇二)
1.redis五种数据结构2.redis数据结构命令精讲2.1 String2.1.1 操作:字符串常用操作SET key value //存入字符串键值对MSET key value [key value ...] //批量存储字符串键值对SETNX key value //存入一个不存在的字符串键值对GET key //获取一个字符串键值MGET key [key ...] //批量获取字符串键值DEL key [key ...] /
2020-10-17 21:48:58 267 2
原创 redis安装与启动客户端(redis篇一)
redis安装1.安装gcc环境,命令:yum install gcc2.下载redis:wget http://download.redis.io/releases/redis-5.0.4.tar.gz3.无weget命令的话,执行yum -y install wget4.解压redis:tar -zxvf redis-5.0.4.tar.gz5.进入redis目录 cd redis-5.0.46.编译:make7.启动:./src/redis-server ./redis.confred
2020-10-15 21:18:57 328
原创 分布式事务
分布式事务1.事务的二段提交方案/XA方案所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok,那么就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不 ok,那么就回滚事务。这种分布式事务方案,比较适合单块应用里,跨多个库的分布式事务,而且因为严重依赖于数据库层面来搞定复杂的事务,效率很低,绝对不适合高并发的场景。如果要玩儿,那么基于 Spring + JTA 就可以搞定
2020-10-15 17:50:11 91
原创 centos7配置静态ip(亲测有效)还可上网
1.查询宿主机的ip1.1 win+R ipconfig/all注意:此时要记住例如“192.168.0”这个网段2.查询虚拟机的网关编辑=》虚拟网络编辑器=》nat设置注意:记住这个网段2.修改centos7配置文件2.1修改文件命令vi /etc/sysconfig/network-scripts/ifcfg-ens332.2修改内容:TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static"
2020-10-14 22:10:12 291
原创 JVM虚拟机调优实战(3)进阶调优篇
1.JVM内存分配与回收1.1Minor Gc和Full GC 有什么不同呢? 新生代GC(Minor GC):指发生新生代的的垃圾收集动作,Minor GC非常频繁,回收速度一般也比较快。 老年代GC(Major GC/Full GC):指发生在老年代的GC,出现了Major GC经常会伴随至少一次的Minor GC(并非绝对),Major GC的速度一般会比Minor GC的慢10倍以上。1.2对象优先在Eden区进行分配解释
2020-10-13 21:14:54 2543 5
原创 JVM虚拟机调优实战(2)基础调优篇
jps命令解释:查看Java开启的进程查看进程:jps -lJinfo 命令解释:查看正在运行的Java应用程序的扩展参数查看jvm的参数 :Jinfo -flags [进程数]查看java系统参数:jinfo -sysprops [进程数]Jstat 命令解释:jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。注意:使用的jdk版本是jdk8.类加载统计:jstat -class [进程数]Loaded:加载class的数量Bytes:所占用空间大小Unloa
2020-10-08 20:57:57 224
原创 JVM虚拟机调优实战(1)概念篇
JVM虚拟机1.jvm是用什么语言编写的c和c++;2.JVM是Sun HostSport VM 和BEA JRockit VM 合并版这就解释了为什么再jdk1.8将java虚拟机永久代改为了元空间,甲骨文收购了Sun HostSport VM 和BEA JRockit VM 两家公司,再甲骨文公司内部这两款虚拟机斗争过程当中,BEA JRockit VM胜利,并且java之父远走甲骨文。在此解释一下元空间,永久代,方法区的概念:《Java虚拟机规范》只是规定了有方法区这么个概念和它的作用,
2020-10-06 15:51:53 202
原创 redis底层数据结构
redis的数据结构1.1 String字符串表现形式为数据结构:SDS(简单的动态字符串)使用原因:redis是使用c语言开发的,但在c语言中是没有字符串类型的,只能使用指针或符数组的形式表示一个字符串,所以在redis设计了一种简单的动态字符串(可以根据不同的数据类型不同的数据结构选择不同的数据结构)支持的数据类型:字符串,整数(源自递增,返回一个递增以后的值),浮点SDS模型图:优点:1,SDS获取字符串长度复杂度O(1),而C的字符串为O(n)。因为SDS保存了长度在len中
2020-09-29 21:34:54 225
原创 docker 安装 认识 看这一篇就够了(后续会有k8s)
docker 看这一篇就够了1. 安装docker(安装环境为centos6.8)1.1 docker使用的是EPEL(是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包)发布,EPEL系的os首先要确保已经持有EPEL仓库,否则先检查OS的版本,然后安装EPEL包yum install -y epel-release1.2 docker安装包安装yum install -y docker-io注意:这样就是安装成功...
2020-09-29 16:43:47 239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人