- 博客(85)
- 收藏
- 关注
原创 Oracle exedp&impdp备份
#创建逻辑目录,此步不会在OS上创建真正的目录create directory dump_dir as '/data/oracle/dumpdir';#检查刚才创建的管理员目录是否存在select * from dba_directories where directory_name = 'DUMP_DIR';#切换PDBalter session set container=SZDB;#用system管理员给你的指定用户(要导出的表所属用户)赋予在该目录的操作权限。grant read,
2022-05-30 23:54:52 519
原创 Ceph CentOS7 部署
系统版本[root@landerp2uatapp04 gjoy]# cat /etc/centos-releaseCentOS Linux release 7.3.1611 (Core)拓扑架构主机名节点IP安装组件yfm13192.168.199.113ceph-mon,ceph-mgr,ceph-mdsyfm14192.168.199.114ceph-osdyfm15192.168.199.115ceph-osd配置Hostsvim /et
2022-03-14 16:41:56 5181
原创 Linux Shell脚本生成用户并授权
#!/bin/bashdirpath="/opt/gjoy"if [ ! -d ${dirpath} ]; then mkdir -p ${dirpath}ficd ${dirpath}pName=$(rpm -qa | grep 'expect')if [ $? -eq 0 ]; then echo "软件包"expect"已经安装"else echo "软件包"expect"没有安装" #使用mkpasswd可以根据自己的定义来随意生成密码
2022-01-20 21:56:56 1487
原创 Hzero 消息服务实现原理
HZERO版本:1.0.0.RELEASEorg.hzero.boot.message.handler.ISocketHandler实现org.hzero.boot.message.handler.ISocketHandler接口,类添加@SocketHandler注解,指定话题的keyimport org.hzero.boot.message.annotation.SocketHandler;import org.hzero.boot.message.entity.Msg;import or.
2022-01-19 18:11:23 1906
原创 JVM 内存分析工具MAT
遇到的问题服务器CPU飙高,高CPU线程卡死在GC下载地址:https://www.eclipse.org/mat/downloads.php从官网下载单机版MAT工具,解压后直接运行MAT目录的MemoryAnalyzer.exe即可启动MAT我这里下载的是1.10,更高版本需要使用jdk 11MAT an internal error occurred during:"Parsing heap dump" from问题待分析的dump文件过大,可增大安装目录下MemoryAnalyze
2022-01-07 23:09:12 686
原创 Hzero调度服务 主要功能点源码分析
HZERO版本:1.0.0.RELEASE调度结果和客户端执行结果回写逻辑发起调度org.hzero.scheduler.infra.job.MyJob#execute客户端执行org.hzero.boot.scheduler.app.service.impl.JobExecuteServiceImpl#jobExecute串行任务和lockTime配置参数设置org.hzero.scheduler.domain.service.impl.JobServiceImpl#getMap.
2021-12-29 18:04:53 512
转载 mysql log
日志是 mysql 数据库的重要组成部分,记录着数据库运行期间各种状态信息。 mysql日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是二进制日志( binlog )和事务日志(包括redo log 和 undo log ),本文接下来会详细介绍这三种日志。binlogbinlog 用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。 binlog 是 mysql的逻辑日志,并且由 Server 层进行记录,使用任何存
2021-11-28 21:54:36 538
转载 mysql lock
按锁的模式读锁读锁,又叫共享锁/S锁/share locks。读锁是某个事务(比如事务A)在进行读取操作(比如读一张表或者读取某一行)时创建出来的锁,其他的事务可以并发地读取这些数据(被加了锁的),但是不能修改这些数据(除非持有锁的用户已经释放锁)。事务A对数据加上读锁之后,其他事务依然可以对其添加读锁(共享),但是不能添加写锁。在记录上加读锁InnoDB支持表锁和行锁,在行(也就是记录)上加锁,并不是锁住该条记录,而是在记录对应的索引上加锁。如果where条件中不走索引,则会对所有的记录加锁。
2021-11-25 14:42:18 1978
原创 mysql index
索引的分类从数据结构角度B+treeHashFull-texts 索引从物理存储的角度聚集索引二级索引(辅助索引)从索引字段特性角度主键索引唯一索引普通索引前缀索引从组成索引的字段个数角度单列索引联合索引(复合索引)数据结构角度InnoDB,MyISAM 和 Memory 分别支持的索引类型索引MyISAM引擎InnoDB引擎Memory引擎B-Tree索引支持支持支持HASH索引不支持不支持支持R-Tree
2021-11-25 14:40:17 154
原创 mysql join
JOIN操作常见算法Nested Loop Join (循环嵌套连接)Hash Join(散列连接)Sort Merge Join(排序归并连接)MySQL只支持Nested Loop Join,MySQL8.0版本支持Hash JoinNested-Loop JoinNested-Loop Join有3种实现的算法Index Nested-LoopJoin > Block Nested-Loop Join > Simple Nested-Loop JoinSimple Ne
2021-11-12 14:55:26 919
原创 register
架构Eureka Server:注册中心服务端服务注册提供注册表同步状态Eureka Client:注册中心客户端Register: 服务注册Renew: 服务续约Eviction 服务剔除Cancel: 服务下线GetRegisty: 获取注册列表信息Remote Call: 远程调用、工作流程Eureka Server 启动成功,等待服务端注册。在启动过程中如果配置了集群,集群之间定时通过 Replicate 同步注册表,每个 Eureka Server 都存在独立
2021-10-21 10:29:03 223
原创 gateway
特性基于Spring Framework 5、Project Reactor和Spring Boot 2.0构建能够在任意请求属性上匹配路由predicates(谓词) 和 filters(过滤器)是特定于路由的集成了Hystrix断路器集成了Spring Cloud DiscoveryClient易于编写谓词和过滤器请求速率限制路径重写核心概念Route(路由):这是网关的基本构建块。它由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配。Predi
2021-10-19 14:41:19 128
原创 ribbon
Ribbion核心组件五大组件IRuleIRule就是根据负载均衡算法中从服务器列表中选取一个要访问的服务IPing用于快速检查服务器当时是否处于活动状态(心跳检测)ServerList用于获取服务节点列表并存储的组件,分为静态和动态ConfigurationBasedServerList 从配置文件中获取所有服务列表DiscoveryEnabledNIWSServerList 从Eureka Client中获取服务列表。此值必须通过属性中的VipAddress来标识服务器集群。Dyna
2021-10-15 10:35:45 139
原创 feign
feign原理主程序入口添加了@EnableFeignClients注解开启对FeignClient扫描加载处理。根据Feign Client的开发规范,定义接口并加@FeignClientd注解。当程序启动时,会进行包扫描,扫描所有@FeignClients的注解的类,并且将这些信息注入Spring IOC容器中,当定义的的Feign接口中的方法被调用时,通过JDK的代理方式,来生成具体的RequestTemplate.当生成代理时,Feign会为每个接口方法创建一个RequestTemplate。
2021-10-12 16:36:23 196
原创 hystrix
hystrix可以完成隔离、限流、熔断、降级这些常用保护功能信号量隔离信号量隔离就是hystrix的限流功能。虽然名字叫隔离,实际上它是通过信号量来实现的。而信号量说白了就是个计数器。计数器计算达到设定的阈值,直接就做异常处理。ratelimiter的令牌桶算法和漏桶算法,都是直接对请求量来计数。只是令牌桶算法可以将前面一段时间没有用掉的请求量允许余额拿过继续用。而漏桶算法一段时间就允许这么多,前面没用掉的也不能用了。而hystrix信号量隔离限制的是tomcat等Web容器线程数,一段时间仅仅能支
2021-10-07 18:16:00 161
原创 sqoop install
下载地址:https://archive.apache.org/dist/sqoop/我这里下载的是sqoop-1.99.7-bin-hadoop200.tar.gzmkdir -p /data/sqoop将压缩包放到该目录#解压tar -zxvf sqoop-1.99.7-bin-hadoop200.tar.gz#配置环境变量vi /etc/profileexport SQOOP_HOME=/data/sqoop/sqoop-1.99.7-bin-hadoop200export
2021-07-24 15:51:17 124
原创 hbase install
下载地址:https://apache.osuosl.org/hbase/我这里下载的是hbase-2.3.5-bin.tar.gzmkdir -p /data/hbase将压缩包放到该目录#解压tar -zxvf hbase-2.3.5-bin.tar.gz#配置环境变量export HBASE_HOME=/data/hbase/hbase-2.3.5export PATH=$HBASE_HOME/bin:$PATH#配置hbase-env.shexport JAVA_HOME
2021-07-24 15:49:55 188
原创 flume install
下载地址:http://archive.apache.org/dist/flume/我这里下载的是apache-flume-1.9.0-bin.tar.gzmkdir -p /data/flume将压缩包放入该目录#解压tar -zxvf apache-flume-1.9.0-bin.tar.gz#修改配置文件cp conf/flume-env.sh.template conf/flume-env.shexport JAVA_HOME=/data/jdk/jdk1.8.0_271#
2021-07-24 15:48:40 69
原创 hive install
hive下载地址:https://hive.apache.org/downloads.html我这里下载的是apache-hive-2.3.9-bin.tar.gz# 创建目录sudo mkdir -p /data/hadoop/hive# 解压sudo tar -zxvf apache-hive-2.3.9-bin.tar.gz# 配置环境变量sudo vi /etc/profileexport HIVE_HOME=/data/hive/apache-hive-2.3.9-bine
2021-07-24 15:47:29 145
转载 AQS解析
Java中的大部分同步类(Lock、Semaphore、ReentrantLock等)都是基于AbstractQueuedSynchronizer(简称为AQS)实现的。AQS是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架。本文会从应用层逐渐深入到原理层,并通过ReentrantLock的基本特性和ReentrantLock与AQS的关联,来深入解读AQS相关独占锁的知识点,同时采取问答的模式来帮助大家理解AQS。由于篇幅原因,本篇文章主要阐述AQS中独占锁的逻辑和Sync Que
2021-06-23 21:34:53 308
原创 threadlocal
应用场景Spring采用Threadlocal的方式,来保证单个线程中的数据库操作使用的是同一个数据库连接,同时,采用这种方式可以使业务层使用事务时不需要感知并管理connection对象,通过传播级别,巧妙地管理多个事务配置之间的切换,挂起和恢复,org.springframework.transaction.support.TransactionSynchronizationManagerprivate static final ThreadLocal<Map<Object, Objec
2021-05-31 16:35:59 160
原创 kafka sourcecode
Kafka从2.8.0与ZooKeeper正式分手,我这里下载的是2.6.2下载地址:https://gradle.org/releases/http://www.scala-lang.org/download/all.htmlhttps://gradle.org/releases/我的版本jdk -- 1.8Scala -- 2.13.3Gradle -- 5.6.4示例代码地址:https://github.com/1561630125/kafka2.6.2
2021-05-27 17:10:42 145
原创 spring5.2.x sourcecode
Gradle版本:5.6.4Spring源码:5.2.Xhttps://github.com/spring-projects/spring-framework/关闭掉idea http-proxy示例代码地址:https://github.com/1561630125/spring5.2.X
2021-05-27 17:09:08 139
原创 transation definition
PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。PROPAGATION_SUPPORTS -- 支持当前事务,如果当前没有事务,就以非事务方式执行。PROPAGATION_MANDATORY -- 支持当前事务,如果当前没有事务,就抛出异常。PROPAGATION_REQUIRES_NEW -- 新建事务,如果当前存在事务,把当前事务挂起。PROPAGATION_NOT_SUPPORTED -- 以非事务方式执行操作,如果当前存在事务
2021-05-23 18:40:18 102
原创 transational failure
数据库引擎不支持事务以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB没有被 Spring 管理// @Servicepublic class OrderServiceImpl implements OrderService { @Transactional public void updateOrder(Order order) { // update order }
2021-05-23 18:14:51 167
原创 ffmpeg & red5 & obs
yfm12上sudo yum install epel-releasesudo rpm -v --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.rosudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpmsudo yum install -y ffmpeg ffmpeg-develffmp
2021-05-20 09:07:21 229
原创 linux command
内存[root@yfm01 ~]# free total used free shared buff/cache availableMem: 1863000 357804 1313132 9712 192064 1352020Swap: 2097148 0 2097148free -m / free -gtotal代表总
2021-05-19 10:36:45 470
原创 sentinel
下载地址:https://github.com/alibaba/Sentinel/releases我这里下载的是sentinel-dashboard-1.8.0.jar启动java -jar -Dserver.port=8666 sentinel-dashboard-1.8.0.jar访问http://192.168.199.112:8666/#/loginsentinel/sentinel启动脚本vi sentinel.shchmod 777 sentinel.sh# !/bin
2021-05-17 17:40:53 170 1
原创 easb & easc
easb – easy spring boot访问地址:easb yfm01启动mysql,redisservice mysqld startredis-server /usr/local/redis.confyfm12启动rabbitmqservice rabbitmq-server starteasc – easy spring cloud访问地址:easc yfm01启动mysql,redisservice mysqld startredis-server /usr/l
2021-05-11 11:20:18 179
转载 kafka事务
Kafka在0.11版本中除了引入了Exactly Once语义,还引入了事务特性。Kafka事务特性是指一系列的生产者生产消息和消费者提交偏移量的操作在一个事务中,或者说是一个原子操作,生产消息和提交偏移量同时成功或者失败。1. Kafka事务的使用Kafka中的事务特性主要用于以下两种场景:生产者发送多条消息可以封装在一个事务中,形成一个原子操作。多条消息要么都发送成功,要么都发送失败。read-process-write模式:将消息消费和生产封装在一个事务中,形成一个原子操作。在一个流式处理
2021-04-20 00:00:24 423
原创 elasticsearch基本概念与查询
推荐书籍:Elasticsearch: 权威指南 基本概念1、Cluster(集群)es集群对外提供索引和搜索的服务,其包含一个或者多个节点,每个节点都有统一的集群名称。参考本地集群搭建。2、Node(节点)单独一个Elasticsearch服务器实例称为一个node,node是集群的一部分,每个node有独立的名称,默认是启动时获取一个UUID作为名称,也可以自行配置。3、Shard(分片)Shard分片也称为primary shard,是单个Lucene索引,由于单台机器的存储容量是有限
2021-04-19 23:40:02 301
原创 canal
工作原理canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )canal 解析 binary log 对象(原始为 byte 流)优点: 可以完全和业务代码解耦,增量日志订阅。缺点:实时性不高,订阅mysql日志,DB中数据事务成功后,开始同步至canal。配置Mysqlset globa
2021-04-19 22:04:43 1820
原创 Zookeeper介绍、原理及应用
Zookeeper简介Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等等。应用场景数据发布与订阅发布与订阅即所谓的配置管理,顾名思义就是将数据发布到ZooKeeper节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,地址列表等就非常适合使用数据发布/订阅的一个常见的场景是配置中心,发布者把数据发布到 Z
2021-04-11 23:44:26 977
原创 kafka消息重复和丢失的场景及解决方案分析
消息重复和丢失是kafka中很常见的问题,主要发生在以下三个阶段:生产者阶段broke阶段消费者阶段生产者阶段重复场景根本原因生产发送的消息没有收到正确的broke响应,导致producer重试。producer发出一条消息,broke落盘以后因为网络等种种原因发送端得到一个发送失败的响应或者网络中断,然后producer收到一个可恢复的Exception重试消息导致消息重复。重试过程[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bca8dl5i-161
2021-04-11 23:37:59 1074
转载 kafka扫盲
Kafka基本架构如上图所示,一个典型的Kafka体系架构包括:若干Producer(可以是服务器日志,业务数据,页面前端产生的page view等等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer (Group),以及一个Zookeeper集群(将被移除)。每个 Broker 中又包含了 Topic 以及 Partition 这两个重要的概念Topic(主题) : Producer 将消息发送到特定的主题,Consumer
2021-04-11 23:31:29 454
原创 mysql必知必会
索引索引失效OR操作符OR条件的两边都是同一个索引列的情况下,如果WHERE条件是主键,则可以使用索引OR条件的两边都是同一个索引列的情况下,如果WHERE条件不是主键,则是否使用索引取决于MySQL查询优化器的代价估算。OR条件的两边是不同的索引列,是否使用索引取决于MySQL查询优化器的代价估算。如果能使用索引,MySQL会使用索引,如果代价太高,仍然会走全表索引如果多个OR条件中有其中一个条件没有索引,则必须进行全表索引一张图搞懂MySQL的索引失效mysql or优化_M
2021-04-09 11:39:58 210 1
转载 JVM
JDK1.8 JVM运行时数据区域划分1.8同1.7比,最大的差别就是:元数据区取代了永久代。元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完成。另外,为了线程切换后能恢复到正确的执行
2021-04-05 20:05:33 78
转载 线程池
使用线程池的好处池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。这里借用《Java并发编程的艺术》提到的来说一下使用线程池的好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。提高线
2021-04-04 23:13:07 98
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人