CentOS8安装oracle客户端

1、进入oracle官网 https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html 下载: oracle-instantclient-basic-21.3.0.0.0-1.el8.x86_64.rpm oracle-instantclient-sqlplus-21.3.0.0.0-1.el8.x86_64.rpm oracle-instantclient-devel-21.3.0.0.0-1.el8.x86_64.rpm 依次安装: rpm -ivh oracle-instantclient-basic-21.3.0.0.0-1.el8.x86_64.rpm rpm -ivh oracle-instantclient-sqlplus-21.3.0.0.0-1.el8.x86_64.rpm rpm -ivh oracle-instantclient-devel-21.3.0.0.0-1.el8.x86_64.rpm 安装的文件默认放在两个位置: 头文件:/usr/include/oracle/21/client64 下,如果在使用时报错找不到头文件,记得看路径是否是这个。 包文件:/usr/lib/oracle/21/client64下,包含{bin、lib}两个文件夹; 2、创建监听文件,并添加内容 cd /usr/lib/oracle/21/client64/lib/network/admin vi tnsnames.ora ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.169.1.109)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) Note:host是远程数据库的ip地址,service_name为远程数据库的sid 配置环境变量 vi /etc/profile,添加 #配置ORACLE环境变量 vi /etc/profile export ORACLE_BASE=/usr/lib/oracle/21 export ORACLE_VERSION=21 export ORACLE_HOME=/usr/lib/oracle/21/client64 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export SQLPATH=$ORACLE_HOME/lib/network/admin export TNS_ADMIN=$ORACLE_HOME/lib/network/admin export NLS_LANG=AMERICAN_AMERICA....

2022-02-15 · 1 分钟

RabbitMQ安装和使用

RabbitMQ安装步骤 *虚拟机:VMware workstation 12.0* Linux系统:CentOS 7.0 安装Erlang环境 由于RabbitMQ是采用Erlang编写的,首先需要安装该语言库,以便运行代理服务器,可以参考Erlang官方文档。 erlang-solution配置信息安装 wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm sudo rpm -Uvh erlang-solutions-1.0-1.noarch.rpm rpm --import http://packages.erlang-solutions.com/rpm/erlang_solutions.asc 第三方yum源依赖 wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt sudo rpm -i rpmforge-release-0.5.2-2.el6.rf.*.rpm 安装erlang sudo yum install erlang 运行*erl*命令进行测试 安装RabbitMQ 首先下载最新版的RabbitMQ wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/rabbitmq-server-3.6.1-1.noarch.rpm 使用rpm和yum进行安装 rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc yum install rabbitmq-server-3.6.1-1.noarch.rpm 启动RabbitMQ管理插件,用于web界面管理 rabbitmq-plugins enable rabbitmq_management service rabbitmq-server restart 测试安装完成的RabbitMQ rabbitmqctl status 具体内容可以参考RabbitMQ安装官方文档。...

2022-02-15 · 2 分钟

常用 Git 命令清单

仓库 # 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码历史 $ git clone [url] 配置 # 显示当前的Git配置 $ git config --list # 编辑Git配置文件 $ git config -e [--global] # 设置提交代码时的用户信息 $ git config [--global] user.name "[name]" $ git config [--global] user.email "[email address]" 增加/删除文件 # 添加指定文件到暂存区 $ git add [file1] [file2] ... # 添加指定目录到暂存区,包括子目录 $ git add [dir] # 添加当前目录的所有文件到暂存区 $ git add ....

2022-02-11 · 3 分钟

Nginx安装和高可用

一、Nginx安装 1、去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本 2、上传nginx到linux系统 3、安装依赖环境 (1)安装gcc环境 yum install gcc-c++ (2)安装PCRE库,用于解析正则表达式 yum install -y pcre pcre-devel (3)zlib压缩和解压缩依赖 yum install -y zlib zlib-devel (4)SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https yum install -y openssl openssl-devel 4、解压,需要注意,解压后得到的是源码,源码需要编译后才能安装 tar -zxvf nginx-1.16.1.tar.gz 5、编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错 mkdir /var/temp/nginx -p 6、在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件 ./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi 注:代表在命令行中换行,用于提高可读性配置命令:...

2022-02-11 · 6 分钟

Firewall防火墙常用操作

查看防火墙某个端口是否开放 firewall-cmd –query-port=3306/tcp 开放防火墙端口3306 firewall-cmd –zone=public –add-port=3306/tcp –permanent 注意:开放端口后要重启防火墙生效 重启防火墙 systemctl restart firewalld 关闭防火墙端口 firewall-cmd –remove-port=3306/tcp –permanent 查看防火墙状态 systemctl status firewalld 关闭防火墙 systemctl stop firewalld 打开防火墙 systemctl start firewalld 开放一段端口 firewall-cmd –zone=public –add-port=40000-45000/tcp –permanent 查看开放的端口列表 firewall-cmd –zone=public –list-ports

2022-02-10 · 1 分钟

Java性能分析工具Async-profiler(火焰图)使用

如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现内存不断泄露满脸茫然。别慌,这里有一款低开销、自带火焰图、让你大呼好用的 Java 性能分析工具 - async-profiler。 最近 Arthas 性能分析工具上线了火焰图分析功能,Arthas 使用 async-profiler 生成 CPU/内存火焰图进行性能分析,弥补了之前内存分析的不足。在 Arthas 上使用还是比较方便的,使用方式可以看官方文档。这篇文章介绍 async-profiler 相关内容。 Arthas 火焰图官方文档:alibaba.github.io/arthas/prof… 如果你想了解更多 Arthas 信息,可以参考:Arthas - Java 线上问题定位处理的终极利器 async-profiler 介绍 async-profiler 是一款开源的 Java 性能分析工具,原理是基于 HotSpot 的 API,以微乎其微的性能开销收集程序运行中的堆栈信息、内存分配等信息进行分析。 使用 async-profiler 可以做下面几个方面的分析。 CPU cycles Hardware and Software performance counters like cache misses, branch misses, page faults, context switches etc. Allocations in Java Heap Contented lock attempts, including both Java object monitors and ReentrantLocks 我们常用的是 CPU 性能分析和 Heap 内存分配分析。在进行 CPU 性能分析时,仅需要非常低的性能开销就可以进行分析,这也是这个工具的优点之一。...

2022-02-10 · 4 分钟

redis-shake数据同步&迁移工具

一、简介 redis-shake是阿里云Redis&MongoDB团队开源的用于redis数据同步的工具。 1.1基本功能 它支持解析、恢复、备份、同步四个功能。以下主要介绍同步sync。 恢复restore:将RDB文件恢复到目的redis数据库。 备份dump:将源redis的全量数据通过RDB文件备份起来。 解析decode:对RDB文件进行读取,并以json格式解析存储。 同步sync:支持源redis和目的redis的数据同步,支持全量和增量数据的迁移。 同步rump:支持源redis和目的redis的数据同步,仅支持全量的迁移。采用scan和restore命令进行迁移。 1.2 基本原理 redis-shake的基本原理就是模拟一个从节点加入源redis集群,首先进行全量拉取并回放,然后进行增量的拉取(通过psync命令)。如下图所示: 如果源端是集群模式,只需要启动一个redis-shake进行拉取,同时不能开启源端的move slot操作。如果目的端是集群模式,可以写入到一个结点,然后再进行slot的迁移,当然也可以多对多写入。 目前,redis-shake到目的端采用单链路实现,对于正常情况下,这不会成为瓶颈,但对于极端情况,qps比较大的时候,此部分性能可能成为瓶颈,后续我们可能会计划对此进行优化。另外,redis-shake到目的端的数据同步采用异步的方式,读写分离在2个线程操作,降低因为网络时延带来的同步性能下降。 1.3 高效性 全量同步阶段并发执行,增量同步阶段异步执行,能够达到毫秒级别延迟(取决于网络延迟)。同时,我们还对大key同步进行分批拉取,优化同步性能。 1.4 监控 用户可以通过我们提供的restful拉取metric来对redis-shake进行实时监控:curl 127.0.0.1:9320/metric。 1.5 校验 可采用redis-full-check来校验同步的正确性。 二、安装redis-shake 2.1 下载 wget https://github.com/alibaba/RedisShake/releases/download/release-v2.0.3-20200724/redis-shake-v2.0.3.tar.gz; tar zxvf redis-shake-v2.0.3.tar.gz; cd redis-shake-v2.0.3; 2.2 修改配置文件 vim redis-shake.conf - source.type: 源redis的类型,支持一下4种类型: standalone: 单db节点/主从版模式。 sentinel: sentinel模式。 cluster: 集群模式。 proxy: proxy模式。如果是阿里云redis的集群版,从proxy拉取/写入请选择proxy - source.address: 源redis的地址,不同的类型对应不同的地址: standalone模式下,需填写单个db节点的地址,主从版需输入master或者slave的地址。 sentinel模式下,例如:master:master@127.0.0.1:26379;127.0.0.1:26380 cluster模式下,需填写集群地址,以分号(;)分割。例如:10.1.1.1:20331;10.1.1.2:20441 proxy模式下,需要填写单个proxy的地址,此模式目前仅用于rump。 - source.password_raw:源redis的密码。 - target.type: 目的redis的类型 - target.address:目的redis的地址。 sentinel模式,例如:mymaster@127.0.0.1:26379;127.0.0.1:26380 cluster模式,参见source.address。 proxy模式下,填写proxy的地址,如果是多个proxy,则round-robin循环负载均衡连接,保证一个源端db连接只会对应一个proxy。 - target....

2022-02-08 · 2 分钟

Java面向对象

1. 类和对象 面向对象和面向过程的思想对比 : ​ **面向过程 :**是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的 ​ **面向对象 :**是一种以对象为中心的编程思想,通过指挥对象实现具体的功能 1.1 类和对象的关系 客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。 类 类的理解 类是对现实生活中一类具有共同属性和行为的事物的抽象 类是对象的数据类型,类是具有相同属性和行为的一组对象的集合 简单理解:类就是对现实事物的一种描述 类的组成 属性:指事物的特征,例如:手机事物(品牌,价格,尺寸) 行为:指事物能执行的操作,例如:手机事物(打电话,发短信) 类和对象的关系 类:类是对现实生活中一类具有共同属性和行为的事物的抽象 对象:是能够看得到摸的着的真实存在的实体 简单理解:类是对事物的一种描述,对象则为具体存在的事物 1.2 类的定义【应用】 类的组成是由属性和行为两部分组成 **属性:**在类中通过成员变量来体现(类中方法外的变量) **行为:**在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可) 类的定义步骤: ​ ① 定义类 ​ ② 编写类的成员变量 ​ ③ 编写类的成员方法 public class Student { // 属性 : 姓名, 年龄 // 成员变量: 跟之前定义变量的格式一样, 只不过位置发生了改变, 类中方法外 String name; int age; // 行为 : 学习 // 成员方法: 跟之前定义方法的格式一样, 只不过去掉了static关键字....

2022-02-08 · 4 分钟

Java Debug&进制&二维数组

1.Debug模式 1.1 什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。 1.2 Debug介绍与操作流程 如何加断点 选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可 如何运行加了断点的程序 在代码区域右键Debug执行 看哪里 看Debugger窗口 看Console窗口 点哪里 点Step Into (F7)这个箭头,也可以直接按F7 如何删除断点 选择要删除的断点,单击鼠标左键即可 如果是多个断点,可以每一个再点击一次。也可以一次性全部删除 2. 进制的介绍与书写格式 2.1 进制的介绍与书写格式 代码 : public class Demo1 { /* 十进制:Java中,数值默认都是10进制,不需要加任何修饰。 二进制:数值前面以0b开头,b大小写都可以。 八进制:数值前面以0开头。 十六进制:数值前面以0x开头,x大小写都可以。 注意: 书写的时候, 虽然加入了进制的标识, 但打印在控制台展示的都是十进制数据. */ public static void main(String[] args) { System....

2022-02-07 · 6 分钟

Java方法

1. 方法概述 1.1 方法的概念 ​ 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集 注意: 方法必须先创建才可以使用,该过程成为方法定义 方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用 2. 方法的定义和调用 2.1 无参数方法定义和调用 定义格式: public static void 方法名 ( ) { // 方法体; } 范例: public static void method ( ) { // 方法体; } 调用格式: 方法名(); 范例: method(); 注意: ​ 方法必须先定义,后调用,否则程序将报错 2.2 方法的调用过程 总结:每个方法在被调用执行的时候,都会进入栈内存,并且拥有自己独立的内存空间,方法内部代码调用完毕之后,会从栈内存中弹栈消失。 2.3 方法练习-奇偶数判断 需求:判断一个数是奇数还是偶数 代码: public class Demo1Method { /* 带参数方法的定义格式: public static void 方法名 ( 参数 ) { … … } public static void 方法名 ( 数据类型 变量名 ) { … … } 带参数方法的调用格式: 方法名 ( 参数 ) ; 方法名 ( 变量名/常量值 ) ; tips: 参数可以是一个, 也可以是多个....

2022-02-07 · 6 分钟