<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[he3more的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/he3more</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; he3more]]></copyright><item><title><![CDATA[记一次No appropriate protocol (protocol is disabled or cipher suites are inappropriate)调用异常及解决办法]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/122024655</link><guid>https://blog.youkuaiyun.com/he3more/article/details/122024655</guid><author>he3more</author><pubDate>Sat, 25 Dec 2021 15:48:17 +0800</pubDate><description><![CDATA[背景
前几天在对项目做数据源切换时，发现切换完数据源后项目无法启动，一直报如下异常：


乍一看以为是数据库连接配置问题，便针对Communications link failure这个问题一顿百度谷歌，未果，后来在大佬的排查点拨下，发现其根本原因并不是由于数据库配置，最后报的No appropriate protocol (protocol is disabled or cipher suites are inappropriate)这个才是关键，而导致这个问题的，竟是jdk版本过高导致，

...]]></description><category></category></item><item><title><![CDATA[使用druid解析sql，如表名，字段等]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/119106838</link><guid>https://blog.youkuaiyun.com/he3more/article/details/119106838</guid><author>he3more</author><pubDate>Mon, 26 Jul 2021 12:24:11 +0800</pubDate><description><![CDATA[测试代码
 /**
     * druid sql解析
     */
    public void getTableNamesFromSql(){
        String sql = "select gender,email,phone,address from table1 where id = 3 and name = 'dave'";
        //String sql = "selec gender,email,phone,address from table1";
       ]]></description><category></category></item><item><title><![CDATA[debug断点查看mybatis生成的sql语句]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/116567677</link><guid>https://blog.youkuaiyun.com/he3more/article/details/116567677</guid><author>he3more</author><pubDate>Sun, 09 May 2021 17:53:28 +0800</pubDate><description><![CDATA[找到SqlSessionTemplate类，在SqlSessionTemplate的ivoke（）方法中打断点，如下图：

执行到断点时，按如下路径打开，里面的key即为sql：



]]></description><category></category></item><item><title><![CDATA[docker一键搭建redis集群脚本]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/113658019</link><guid>https://blog.youkuaiyun.com/he3more/article/details/113658019</guid><author>he3more</author><pubDate>Thu, 04 Feb 2021 17:34:37 +0800</pubDate><description><![CDATA[文章目录前言准备环境文件&amp;脚本redis节点清单文件shell脚本操作步骤${REDIS_BASE_PATH}下生成文件目录结构如下
前言
由于最近服务器外网IP频繁变更，导致redis集群不可用，要重新搭建集群，所以简单写了个集群的一键部署脚本，通过docker来搭建集群。这个自动化脚本主要是对之前的另一篇文章《docker搭建三主三从redis集群，可外网访问》里的关键步骤的整合和集成，建议使用该脚本前先看一下上述文章，了解一下集群搭建的整体流程以及前置环境准备
准备环境

docker环境
r]]></description><category></category></item><item><title><![CDATA[使用PLSQL新建oracle表空间和用户]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/113643872</link><guid>https://blog.youkuaiyun.com/he3more/article/details/113643872</guid><author>he3more</author><pubDate>Thu, 04 Feb 2021 14:29:24 +0800</pubDate><description><![CDATA[用DBA角色登录




新建表空间
右键“new” --&gt; “sql window” 打开sql窗口，执行以下sql

1）创建表空间
CREATE TABLESPACE 表空间名   DATAFILE ‘C:\app\dev\oradata\orcl\表空间名.DBF’   SIZE 1000M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITEDLOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUT.]]></description><category></category></item><item><title><![CDATA[kafka学习（一）-- 理论概念]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/112747164</link><guid>https://blog.youkuaiyun.com/he3more/article/details/112747164</guid><author>he3more</author><pubDate>Sun, 17 Jan 2021 18:23:01 +0800</pubDate><description><![CDATA[文章目录消息队列什么是消息队列消息队列优点消息队列模式点对点模式发布/订阅模式kafka什么是kafkakafka基础架构kafka生产者分区策略分区原因分区原则数据可靠性保证副本同步策略方案一方案二（kafka采用）kafka选用方案2原因ISRACK（acknowledgement 确认收到）应答机制ACK三种可靠性级别Exactly Once 语义幂等性kafka消费者消费方式push模式pull模式（kafka采用）
消息队列
什么是消息队列
我们可以把消息队列比作是一个存放消息的容器，当我们需要使]]></description><category></category></item><item><title><![CDATA[开源BI分析工具Metabase配置与完全使用手册]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/111811684</link><guid>https://blog.youkuaiyun.com/he3more/article/details/111811684</guid><author>he3more</author><pubDate>Sun, 27 Dec 2020 21:37:01 +0800</pubDate><description><![CDATA[文章目录简介安装初始配置数据分析简单查询创建场景创建集合和仪表盘自定义查询原生查询sql变量动态sql片段管理员操作添加数据库连接oracle成员管理邀请新成员权限配置数据权限文件夹权限邮箱配置定时任务
简介
Metabase是一个免费的BI分析工具，可以帮助你把数据库中的数据更好的呈现给更多人，通过建立一个”查询“来提炼数据，再以图形化的方式做展示。上手简单，操作门槛低，即使不会sql语句也能使用。同时工具轻量、安装依赖的环境简单、配置简单清楚，只需一个jar包和一条命令就能完成安装
安装
Metabas]]></description><category></category></item><item><title><![CDATA[metabase默认应用数据源H2变更为MySQL及历史数据迁移]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/111480076</link><guid>https://blog.youkuaiyun.com/he3more/article/details/111480076</guid><author>he3more</author><pubDate>Mon, 21 Dec 2020 20:23:30 +0800</pubDate><description><![CDATA[metabase应用数据库H2变更为mysql与数据迁移
1. 停止metabase
kill -9 metabase进程号

2. 备份数据文件，以防万一
cp metabase.db.mv.db ../back

3. 配置mysql环境变量
 vim ~/.bash_profile

写入数据库配置信息：
export MB_DB_TYPE=mysql
export MB_DB_DBNAME=apicloud_metabase
export MB_DB_PORT=3306
export MB_DB_U]]></description><category></category></item><item><title><![CDATA[SpringCloud新增微服务]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/111421777</link><guid>https://blog.youkuaiyun.com/he3more/article/details/111421777</guid><author>he3more</author><pubDate>Sun, 20 Dec 2020 15:07:15 +0800</pubDate><description><![CDATA[文章目录前言新增module1. 新增maven module2. 给module设置 project structure3. 引入相关springcloud组件与其他依赖4. 设置启动类5. common-core类中配置服务名(项目定制，并非通用步骤)6. 定义配置文件7. 配置中心增加服务配置8. 服务路由表增加配置(项目定制，并非通用步骤)问题与解决maven无法识别新增module
前言
最近项目要新增一个服务，第一次给微服务新增服务，简单做下记录
新增module
1. 新增maven modu]]></description><category></category></item><item><title><![CDATA[Flink学习（四）-- Flink常用流处理API]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/110756769</link><guid>https://blog.youkuaiyun.com/he3more/article/details/110756769</guid><author>he3more</author><pubDate>Sun, 06 Dec 2020 23:44:28 +0800</pubDate><description><![CDATA[文章目录Flink流处理APIenvironmentcreateLocalEnvironmentcreateRemoteEnvironmentgetExecutionEnvironmentsourcefromCollection从本地集合获取readTextFile从文件获取socketTextStream 从网络套接字获取从kafka获取数据从其他自定义数据源获取transform 转换算子mapflatMapfilterkeyBy滚动聚合算子未完待续
Flink流处理API

flink的流处理API主]]></description><category></category></item><item><title><![CDATA[Flink学习（三） -- Java版流处理工程运行问题记录]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/110338357</link><guid>https://blog.youkuaiyun.com/he3more/article/details/110338357</guid><author>he3more</author><pubDate>Sun, 29 Nov 2020 17:35:40 +0800</pubDate><description><![CDATA[根据Flink官网提供的Maven命令搭建工程
$ mvn archetype:generate \
    -DarchetypeGroupId=org.apache.flink \
    -DarchetypeArtifactId=flink-walkthrough-datastream-java \
    -DarchetypeVersion=1.11.2 \
    -DgroupId=frauddetection \
    -DartifactId=frauddetection \
    ]]></description><category></category></item><item><title><![CDATA[Flink学习（二）-- Flink安装与简单使用]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/109961380</link><guid>https://blog.youkuaiyun.com/he3more/article/details/109961380</guid><author>he3more</author><pubDate>Sun, 22 Nov 2020 19:59:05 +0800</pubDate><description><![CDATA[最近在学习Flink流处理框架，自己试着在机子上部署了个flink，这里以简单的local模式为例，安装方式较为简单，仅供学习之用，正式生产上使用的话主要有standalone集群模式，Yarn模式以及k8s部署这几种模式

前置准备

Java 1.8.x或更高版本
首先确保自己机子上是否已经安装了jdk1.8或者更高版本，flink的运行是需要依赖于java环境的


安装步骤
下载
这里以最新的flink-1.11.2版本为例
官网：https://flink.apache.org/downloads]]></description><category></category></item><item><title><![CDATA[springboot集成sharding-jdbc mybatis-plus连接oracle实现单库按月份分表及注意事项]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/109433932</link><guid>https://blog.youkuaiyun.com/he3more/article/details/109433932</guid><author>he3more</author><pubDate>Sun, 01 Nov 2020 21:19:06 +0800</pubDate><description><![CDATA[文章目录sharding-jdbc简介引入依赖前置准备sharding-jdbc配置分表验证整合mybatis-plus不支持的操作
sharding-jdbc简介
sharding-jdbc是一个轻量级Java框架，在Java的JDBC层提供的额外服务。 它使用客户端直连数据库，以jar包形式提供服务，无需额外部署和依赖，可理解为增强版的JDBC驱动，完全兼容JDBC和各种ORM框架。


适用于任何基于Java的ORM框架，如：JPA, Hibernate, Mybatis, Spring JDBC T]]></description><category></category></item><item><title><![CDATA[Java动态代理学习]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/109137862</link><guid>https://blog.youkuaiyun.com/he3more/article/details/109137862</guid><author>he3more</author><pubDate>Sat, 17 Oct 2020 21:22:50 +0800</pubDate><description><![CDATA[文章目录代理什么是代理模式为什么要用代理动态代理动态代理类型Java动态代理步骤Java动态代理样例
代理
什么是代理模式
代理模式是程序设计中的一种常见设计模式。代理模式给某一个对象提供一个代理对象，并由代理对象控制对原对象的引用，代理对象主要负责为委托对象（真实对象）预处理消息、过滤消息、传递消息给委托类，代理类不现实具体服务，而是利用委托类来完成服务，并将执行结果封装处理。
为什么要用代理
中介隔离：在某些情况下，一个客户类不想或者不能直接引用一个委托对象，而代理类对象可以在客户类和委托对象之间起到中]]></description><category></category></item><item><title><![CDATA[JVM学习（二）-- JVM内存布局]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/108958317</link><guid>https://blog.youkuaiyun.com/he3more/article/details/108958317</guid><author>he3more</author><pubDate>Thu, 08 Oct 2020 01:35:20 +0800</pubDate><description><![CDATA[JVM内存布局
JVM内存布局规定了Java在运行过程中内存申请、分配和管理的策略，保证了JVM的高效稳定运行，其经典内存布局如下图所示

程序计数器

线程私有
用于存放执行指令的偏移量和行号指示器等，线程执行或恢复都需依赖程序计数器
用以完成分支、循环、跳转、异常处理、线程恢复等基础功能。不会发生OOM错误

本地方法栈

线程私有
登记native方法，在Execution Engine 执行时加载本地方法库。
本地方法可通过JNI(Java Native Interface)来访问虚拟机运行时的数据]]></description><category></category></item><item><title><![CDATA[JVM学习（一）-- 类加载过程与双亲委派模型]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/108956782</link><guid>https://blog.youkuaiyun.com/he3more/article/details/108956782</guid><author>he3more</author><pubDate>Wed, 07 Oct 2020 22:30:16 +0800</pubDate><description><![CDATA[类加载
​	所谓的类加载，就是指将.class字节码文件实例化成Class对象并进行相关初始化的过程。通过ClassLoader类加载器将.class类文件加载到内存中，类加载机制遵循双亲委派模型。

类从被加载到JVM中开始，到卸载为止，整个生命周期包括：加载、验证、准备、解析、初始化、使用和卸载七个阶段。类加载过程主要包括加载，链接，初始化三个步骤
类加载过程
类加载过程主要分三步：

加载（load）：该阶段读取类文件产生二进制流，并转换为特定的数据结构，初步校验cafe babe魔法值，常量值，文件]]></description><category></category></item><item><title><![CDATA[Java 并发与多线程学习笔记（一）知识图谱]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/108913871</link><guid>https://blog.youkuaiyun.com/he3more/article/details/108913871</guid><author>he3more</author><pubDate>Sat, 03 Oct 2020 21:48:16 +0800</pubDate><description><![CDATA[以下主要为学习并发与多线程时做的笔记，大致整理成的知识图谱


]]></description><category></category></item><item><title><![CDATA[docker 安装Elasticsearch及Kibana]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/107115326</link><guid>https://blog.youkuaiyun.com/he3more/article/details/107115326</guid><author>he3more</author><pubDate>Fri, 03 Jul 2020 23:18:20 +0800</pubDate><description><![CDATA[前言
注意事项：
1. 在安装时，ES和kibana的版本号要保持一致

2. 相关端口防火墙记得打开
Elasticsearch安装
1. 拉取ES镜像
docker pull elasticsearch：7.8.0


ps:查看镜像latest具体版本号：docker image inspect elasticsearch:latest | grep -i version

2. 运行ES容器
docker run --name elasticsearch -m 2G --restart always]]></description><category></category></item><item><title><![CDATA[oracle文件导入导出]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/105677569</link><guid>https://blog.youkuaiyun.com/he3more/article/details/105677569</guid><author>he3more</author><pubDate>Wed, 22 Apr 2020 11:50:44 +0800</pubDate><description><![CDATA[oracle文件导出命令
命令行运行：
exp 用户名/密码@服务名 file=路径/导出文件名.dmp tables=表名
若导出需添加条件过滤，增加query限制
exp 用户名/密码@服务名 file=路径/导出文件名.dmp tables=表名 query=\" where条件语句\"
oracle文件导入命令
命令行运行，导入远程数据库：
imp 用户名/密码@ip:端口/服务名 fil...]]></description><category></category></item><item><title><![CDATA[docker搭建三主三从redis集群，可外网访问]]></title><link>https://blog.youkuaiyun.com/he3more/article/details/104844183</link><guid>https://blog.youkuaiyun.com/he3more/article/details/104844183</guid><author>he3more</author><pubDate>Fri, 13 Mar 2020 20:33:29 +0800</pubDate><description><![CDATA[文章目录前置说明1. 创建redis配置文件2. 生成配置文件3. 创建容器4. 搭建集群方式一：通过容器的redis-cli创建集群方式二： 通过外部redis-cli搭建下载redis源码包：解压编译创建软连接到bin目录搭建集群5. 测试宿主机访问集群外网使用redis-destop manager访问集群
前置说明

操作系统centos7
本次集群所使用镜像为官方redis5.05镜像，...]]></description><category></category></item></channel></rss>