- 博客(211)
- 资源 (11)
- 收藏
- 关注
原创 linux centos7环境下修改oracle19c监听IP并重启
在linux服务器centos7上新安装的oracle19c,结果发现客户端怎么都连不上。可以看到监听端口的ip为127.0.0.1。是本地回环路由。其他服务器无法访问这个地址。
2022-07-21 18:39:11
4691
原创 在windows上配置git支持多账号
现在大多数人都采用git进行版本管理,在git下面进行开发被越来越多的程序员所接受。还有越来越多的人参与开源社区的建设。现在有一个问题就是,在windows环境下,如何在git客户端上通过sshkey的方式配置多个账号。不需要输入git的用户名和密码,使得更加方便高效。...
2022-07-20 20:31:35
1214
原创 在windows上编译Inlong所遇到的问题
1.Hadoop相关的问题在windows中,由于Inlong的很多单元测试用例都需要用到hadoop的相关组件进行测试。可以采用winunits配合测试,winutils是windows上专门配合hadoop和yarn测试的工具。在github上下载该工具:git clone https://github.com/steveloughran/winutils.git之后选择一个版本,配置环境变量:HADOOP_HOME D:\workspace\github-work\winutils\
2022-04-30 20:34:42
1149
1
原创 使用docker部署golang http服务时遇到的一个问题
需要使用docker将golang的httpserver容器化。在这个过程中遇到了一个弱智问题,特此记录。1.背景1.1 问题描述问题描述:docker镜像启动成果之后,通过curl不能访问:[root@hecs-205828 ~]# curl -XGET http://127.0.0.1:8360/hellocurl: (56) Recv failure: Connection reset by peer1.2 webserver代码go文件:main.gopackage main
2022-03-07 17:29:04
1087
原创 架构训练营模块二作业
分析一下微信朋友圈的高性能复杂度【作业要求】对照模块2讲述的复杂度分析方法,分析微信朋友圈的复杂度。针对各个复杂度,画出你的架构设计方案(无需做备选方案,只需要最终的方案即可)。给出你的架构方案中关键的设计理由。3~5页PPT 即可,涵盖复杂度分析、架构设计、设计理由。【提示】分析过程可以参考模块2第5课的实战案例,但是不需要将分析过程一一列举出来。如果某个地方被卡主了,请及时联系助教或者老师讨论。朋友圈复杂度分析:业务复杂度:朋友圈的业务复杂度比较低,只有内容发布、查看和评论和点赞
2021-12-16 10:14:36
1850
原创 架构训练营模块一作业
画出微信的业务架构图。“学生管理系统”毕设架构设计假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:① 要求可以通过公网域名访问;② 要求至少3 人合作完成;③ 能够支撑管理1000 个学生;④ 答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案。你找了2 个好朋友一起来做这个项目,你们的基本情况如下:① 大家都会Java,但是有一个是PHP 高手;② 大家经济条件一般。作业要求:① 对照面向复杂度架构设计方法论,构思2 个以上.
2021-12-09 18:22:59
2291
原创 Druid源码阅读10-DruidDataSource中的一些计数器
在Druid连接池的工作过程中,会用到一些计数器对Druid的情况进行判断。然后根据计数器的数据采取一系列操作,整理如下:1.统计类的计数器变量名类型说明connectCountlonggetConnectionInternal被调用之后就会增加,意味着连接被get的次数。closeCountlong连接调用recycle中,包括回收、关闭等情况,成功之后会增加,标识连接关闭的次数。recycleCountlong连接调用recycle成功之后才会增加,不包
2021-11-19 20:48:50
1357
原创 Druid源码阅读9-DruidDataSource和DruidConnection中的状态
DruidPooledConnection中的状态:字段类型所在类默认值说明closedvolatile booleanDruidPooledConnectionfalse关闭状态,recycle到连接池中的连接会修改为true。但是这个状态通常只在checkStateInternal中单独使用。判断连接是否关闭需要结合(closed or disable)disablevolatile booleanDruidPooledConnectionfal
2021-11-18 18:20:57
967
原创 Druid源码阅读8-DruidDataSource的removeAbandoned机制
有关于Druid的removeAbandoned机制,在getConnection源码中介绍过。removeAbandoned实际上就是Druid的泄露检测机制。主要的参数有:参数说明removeAbandoned如果连接泄露,是否需要回收泄露的连接,默认false;logAbandoned如果回收了泄露的连接,是否要打印一条log,默认false;removeAbandonedTimeoutMillis连接回收的超时时间,默认5分钟;removeAbandon
2021-11-17 18:39:18
1271
原创 Druid源码阅读7-DruidDataSource的recycle过程
Druid中的Connection在使用之后,要进行回收,而回收连接的方法就是recucle方法。回收的主要目的是将连接的状态清空/重置之后,放置到连接池的connections数组的尾部,然后发送连接池lock的notEmpty条件变量通知消息,让等待的消费者线程来获取连接。1.回收过程回收方法首先要做的是,判断回收线程是否为同一个线程。如果不是,则打印日志输出。if (logDifferentThread // && (!isAsyncCloseConnectionEna
2021-11-16 19:40:09
1004
原创 Druid源码阅读6-PreparedStatementPool源码及使用场景分析
**在阅读DruidDataSource源码的过程中,发现DruidConnectionHolder有个特别的属性PreparedStatementPool statementPool。根据经验可知,这是DruidPreparedStatement进行缓存的cache。我们在使用PreparedStatement的过程中,由于PreparedStatement对sql语句的解析和参数的注入是分开的,因此,加入cache之后,可以在同一个连接上,对相同sql,不同参数的请求进行复用。1.开启参数如果要
2021-11-15 20:19:11
1844
原创 Druid源码阅读5-DruidDataSource的shrink过程
shrink方法是DestroyTask线程中回收连接的具体执行方法。首先获得锁:try { lock.lockInterruptibly();} catch (InterruptedException e) { return;}之后,要判断初始化状态是否完成,如果采用异步初始化,可能DestoryTask线程已经启动,但是连接池还没有初始化完成。if (!inited) { return;}之后对连接池中的连接进行遍历,connections中,可连接的连接数记
2021-11-13 23:23:03
1031
原创 Druid源码阅读4-DruidDataSource的getConnection过程
DruidDataSource连接池实现了javaX.sql包中,DataSource接口的全部方法。getConnection也来自于javaX.sql.DataSource接口。而DruidPooledConnection也实现了接口java.sql.Connection。这样就能在各种场景中通过这个接口来获取数据库连接。1.fileter处理–责任链模式在执行getConnection方法的过程中,首先确认DataSource是否完成了初始化。由于 init方法采用了Double Check机
2021-11-11 14:38:53
2022
原创 Druid源码阅读3-DruidDataSource连接池的基本原理
DruidDataSource数据库连接池的的本质,实际上是一个利用ReentrentLock和两个Condition组成的生产者和消费者模型。1.DruidDataSource中的锁在DruidAbstractDataSource类中,定义了一个非常重要的锁,几乎所有的线程都使用到了这个锁。//可重入锁 lockprotected ReentrantLock lock;//非空条件变量protected Condition
2021-11-10 16:34:39
2015
原创 Druid源码阅读2-DruidDataSource的init过程
DruidDataSource的使用都是创建DruidDataSource对象,set配置参数之后,调用init方法。通过mock测试实例化DruidDataSource:DruidDataSource ds = new DruidDataSource();ds.setUrl("jdbc:fake:dragoon_v25masterdb");ds.setUsername("tddl5");ds.setPassword("tddl5");ds.setFilters("stat");ds.init
2021-11-09 18:24:03
1910
原创 Druid源码阅读1-DruidDataSource数据结构
DruidDataSource是DruidCP最关键的类之一,承载了连接池的启动、关闭、以及连接的获取和管理等功能。其内部关键的的数据结构如下表:nametype说明connectionsvolatile DruidConnectionHolder[]pool的关键数组,存放连接,实际上是DruidConnectionHolder的数组。Connection由DruidConnectionHolder持有evictConnectionsDruidConnectionHo
2021-11-08 20:26:42
763
原创 kafka-manager(cmak)安装及使用
1.软件下载kafka-manager 工具目前改名为cmak,下载地址为:https://github.com/yahoo/CMAK/releases/tag/3.0.0.5现在下载最新版本的cmak文件:cmak-3.0.0.5.zip将该文件下载并放置到/opt/software目录。此外,根据官网描述,要求jdk版本为jdk11。jdk-11.0.13_linux-x64_bin.tar.gz下载路径https://www.oracle.com/java/technologies/do
2021-11-04 20:10:42
3681
原创 kafka3.0集群搭建过程
1.环境说明服务器资源规划如下表:IPhostname部署资源192.168.162.201m162p201zookeeper,kafka192.168.162.202m162p202zookeeper,kafka192.168.162.203m162p203zookeeper,kafka操作系统版本(三个节点均相同):[root@m162p201 software]# lsb_release -aLSB Version: :core-4.1
2021-11-03 19:53:13
3131
3
原创 RabbitMQ在Springboot下的使用
在springboot下操作rabbitMQ。1.pom文件配置pom文件配置如下: <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </depen
2021-11-02 15:43:22
1306
原创 RabbitMQ 3.9.8 的rpm安装方式
文章目录1.rpm包下载2.rpm安装3.配置及启动rabbitmq4.遇到的一些常见的错误4.1 端口被占用错误4.2 增加用户报错之前采用源码的方式安装erlang,之后再来安装rabbitMQ,这种方式有一些复杂。现在参考官网,可以直接用rpm安装。本文对安装过程进行描述。官方参考Installing on RPM-based Linux (RedHat Enterprise Linux, CentOS, Fedora, openSUSE)1.rpm包下载需要安装的操作系统信息:[root@
2021-11-01 15:48:34
914
原创 Hazelcast4.2.2 集群测试百万数据下的故障转移
本文测试在Hazelcast集群中,写入百万级别的数据,对其故障转移过程进行测试。1.环境准备Hazelcast4.2.2 在springboot下配置3节点集群并测试对map的操作的基础上,搭建3节点的Hazelcast集群。springboot启动的端口为 8081、8082、8083.2.写入数据写入数据代码:package com.dhb.hazelcast.demo.client;import com.hazelcast.client.HazelcastClient;impor
2021-11-01 10:58:15
792
原创 Hazelcast4.2.2 在springboot下配置3节点集群并测试对map的操作
本文尝试在springboot下组建一个3节点的hazelcast集群。基础配置使用参考 Hazelcast4.2.2 在springboot下的使用1.pom配置需要导入的依赖jar包: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId>
2021-10-29 20:22:59
679
原创 Hazelcast4.2.2 在springboot下的使用
Hazelcast是一款由Hazelcast开发的基于jvm环境的为各种应用提供分布式集群服务的分布式缓存解决方案。可以嵌入到java、c++、.net等开发的产品中使用。其主要功能有:提供了 Map、Queue、MultiMap、Set、List、Semaphore、Atomic 等接口的分布式实现;提供了基于Topic 实现的消息队列或订阅\发布模式;提供了分布式id生成器(IdGenerator);提供了分布式事件驱动(Distributed Events);提供了分布式计算(Distr
2021-10-29 19:46:33
1294
原创 Springboot基于JMS整合ActiveMQ实现对queue和topic的操作
1.maven配置project中需要import的代码: <dependencies> <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId>
2021-10-28 17:10:59
762
原创 ActiveMQ 安装及使用过程
1.安装jdk在CentOS操作系统中,可以下载rpm包直接安装。[root@m161p114 ~]# lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noa
2021-10-28 14:52:48
755
原创 Redis 6.2.6 Cluster搭建过程
1.环境准备环境规划如下,准备了6个redis节点:hostnameipredis portm161p114192.168.161.1146380m161p114192.168.161.1146381m161p115192.168.161.1156380m161p115192.168.161.1156381m162p203192.168.162.2036380m162p203192.168.162.2036381每个节点的
2021-10-27 17:51:32
582
原创 Redis和Sentinel搭建一主多从高可用集群
本文将利用redis的sentinel,实现redis集群的高可用。1.服务器规划服务器资源规划如下表:机器名ipredis portredis statussentinel portm161p114192.168.161.1146379master26379m161p115192.168.161.1156379slave26379m162p203192.168.162.2036379slave26379将搭建一个redis一主两从的
2021-10-26 17:25:30
449
原创 Redis主从复制的配置过程
1.服务器信息有两个已经启动的redis节点:机器名IPportm161p114192.168.161.1146379m161p115192.168.161.1156379现在需要将上述redis节点配置为主从复制。2. 主从复制的建立在redis的配置文件中加上 slaveof 即可实现。配置前,查看m161p114中的内容如下:[root@m161p114 ~]$ redis-cli127.0.0.1:6379> keys *1) "\
2021-10-26 10:44:32
310
原创 Redis6.2.6在Centos7上的安装过程
文章目录1.系统环境2.gcc升级3.编译及安装redis4.通过install_server.sh配置servie服务5.修改配置文件1.系统环境操作系统:[root@m161p114 software]# lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:la
2021-10-21 11:08:22
2369
原创 在Dubbo中基于Hmily TCC实现银行转账
文章目录1.背景知识1.1 BASE 柔性事物1.2 BASE柔性事物的常见模式1.3 hmily1.4 案例说明2.数据库设计2.1 账户相关的表2.2 TCC相关的表3.Dubbo project配置3.1 project规划3.2 pom文件3.2.1 父项目的pom文件3.2.2 api的pom文件3.2.3 orm的pom文件3.2.4 bank1的pom文件3.2.5 bank2的pom文件3.2.6 client的pom文件3.3 yml配置文件3.3.1 bank1的yml配置3.
2021-10-14 13:35:05
474
1
原创 ShardingSphere-jdbc5.0实现水平拆分的两种不同拆分方法
如果有一个数据库gts中,存在一张订单表t_order_summary,这个表的数据量特别大。现在考虑对这张表进行水平拆分。具体的拆分方法有如下两种。1.按order_id字段拆分表可以将t_order_summary按order_id拆分到多个表如32个表,然后将32个表拆分到不同的数据库中。如将t_order_summary拆分之后效果如下:数据库gts01:+--------------------+| Tables_in_gts01 |+--------------------+
2021-09-24 17:30:07
410
原创 使用ShardingSphere5.0进行数据库水平拆分过程以及所踩的坑
在学习过ShardingSphere-JDBC相关的操作之后,现在使用其对数据库进行水平拆分。1.环境准备1.版本信息mysql的版本:[root@m161p114 sql]$ mysql -uroot -pmysql;mysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor. Commands end with ; or \g.Yo
2021-09-23 21:24:18
1513
1
原创 springboot2.0集成ShardingSphere-jdbc5.0-alpha所遇到的一些坑
在springboot 2.5.3中配置使用ShardingSphere 5.0-alpha遇到了不少的坑,现在总结如下:1.没有使用shardingsphere-jdbc-core-spring-boot-starter在使用ShardingSphere的过程中,首先参考了下快速入门:https://shardingsphere.apache.org/document/5.0.0-alpha/cn/quick-start/shardingsphere-jdbc-quick-start/这个地方有
2021-09-21 01:16:51
6572
7
原创 Springboot环境中多个DataSource基于自定义注解进行切换使用过程
前面配置了mysql数据库的主从复制模式,在数据库上实现了master-slave配置,通过这种方式可以实现一主一从,或者一主多从,从而提升系统的高可用。这是数据库层面的实现。在数据库实现了主从模式之后,我们需要考率的问题就是,在我们的应用代码中,如何将不同的数据库操作按需要分配到不同的数据库去执行。1.需要的依赖 implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.sprin
2021-09-18 20:17:54
1858
原创 Mysql5.7主从复制配置全过程
mysql主从复制是最常见的高可用方式,通过主-从的方式,实现系统的高可用。在生产环境种,通常采用一主多从的方式,通过主库写数据,从库读数据,来提升系统的性能。现在就演示一下,mysql5.7之下,如何配置主从复制。1. 环境准备两台安装好mysql数据库的服务器如下:序号服务器IP主/从mysql版本1192.168.161.114主5.7.342192.168.161.115从5.7.342.主库配置查看主库log配置:mysql> sh
2021-09-17 21:03:25
930
原创 在Springboot中使用ThreadPoolExecutor线程池
在springboot项目中如果需要用到ThreadPoolExecutor线程池的话是非常方便的。比使用java并发包中的Executors都还方便很多。实际上spring中的线程池ThreadpoolExecutor只是对java并发包中的线程池的封装。这样便于在spring环境中快速使用。通过几个注解即可,降低了对代码的侵入性。1.ThreadPoolExecutor配置在本文中,将使用spring提供的ThreadPoolTaskExecutor进行配置。1.1 yml中的配置参数配置参数
2021-09-17 15:10:34
3295
1
原创 Mysql5.7在CentOS7中基于源码无错安装(亲测有效)
鉴于之前安装不带boost版本的mysql,由于boost头文件的问题,导致在编译boost的过程中出现各种各样的问题。在官网发现居然现在有在源码中带boost头文件的版本,那么现在就验证一下这个版本的安装过程。1 安环境准备1.1 操作系统操作系统信息:[root@m161p115 mysql]# lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-
2021-09-16 15:39:07
431
原创 不同的数据库连接池(DBCP,C3P0,Druid,Hikari)下对mysql的随机update和insert性能对比
第二部分,对insert和update进行测试:1 环境准备分别准备了Insert和Update两种场景,其中,对于Update场景,还准备了通过索引更新和不走索引更新两种情况。1.1 Update代码如下:package com.dhb.gts.javacourse.week6.mysqltest;import com.dhb.gts.javacourse.fluent.dao.intf.OrderSummaryDao;import com.dhb.gts.javacourse.fluen
2021-09-14 17:41:30
631
1
原创 不同的数据库连接池(DBCP,C3P0,Druid,Hikari)下对mysql的insert和select性能对比
分别测试4中连接池(DBCP、C3P0、Druid、Hikari)的表现情况。1.环境准备1.1 连接池配置1.1.1 DBCPgradle导入包;implementation 'org.apache.commons:commons-dbcp2:2.9.0'application.yml配置:# DBCPspring.datasource.url: jdbc:mysql://192.168.162.49:3306/gts?useSSL=false&autoReconnect=tru
2021-09-14 11:37:41
764
原创 将MapperScan错误使用导致的BindingException问题
文章目录1.环境说明2.问题说明3.问题分析在前面的代码中,使用fluent mybatis的mapper对表进行增删改查都没有问题。但是fluent mybatis官方也说了,自动会生成dao层代码,将dao及其实现类都生成好了。因此也想尝试下生成的代码使用的效果。此外,由于不想建多个project来进行测试,因此对于不同的测试,都在src/main/java下面弄各种不同的包来进行区分。本次测试的package:com.dhb.gts.javacourse.week6.mysqltest目录。1
2021-09-13 18:20:01
596
Session Importer.7z
2021-07-12
mysql-8.0-en.pdf
2020-07-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人