<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Crisf的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Crisf</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Crisf]]></copyright><item><title><![CDATA[KubeSphere部署：（一）环境准备]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/140764739</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/140764739</guid><author>Crisf</author><pubDate>Mon, 29 Jul 2024 11:07:29 +0800</pubDate><description><![CDATA[本文介绍windows系统，安装wsl虚拟机（ubuntu），并在ubruntu中配置连接私有harbor及阿里云镜像等。在确定该方式前，博主也曾尝试过通过安装Docker Desktop的方式，但每次重启电脑之后，docker桌面端都有可能启动失败，所以放弃该方式。因为博主习惯于使用linux命令，所以后面的打包镜像、推送harbor等操作均在Ununtu中进行。实际上，还可以在idea中配置docker地址，进行上述操作。]]></description><category></category></item><item><title><![CDATA[KubeSphere部署：（三）MySQL安装]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/140762715</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/140762715</guid><author>Crisf</author><pubDate>Mon, 29 Jul 2024 10:10:22 +0800</pubDate><description><![CDATA[MySQL没有什么特殊的，这里记录一下部署过程(本文示例中安装的版本为5.7.29)。步骤大致如下：拉取docker镜像 -> 标记并推送至私有harbor -> 创建有状态负载 -> 创建服务。]]></description><category></category></item><item><title><![CDATA[KubeSphere部署：（二）Elasticsearch，IK分词器，Kibana]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/140520876</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/140520876</guid><author>Crisf</author><pubDate>Thu, 18 Jul 2024 16:33:55 +0800</pubDate><description><![CDATA[Elasticsearch自带的分词器对中文支持不好，所以需要安装ik分词器。如果直接用docker部署并运行，可以把分词器的目录挂载出来，然后把下载好的分词器放到对应目录即可，或者不挂载目录，直接把分词器复制到容器内也可以。使用KubeSphere进行部署的话，不直接访问宿主机的情况下，没法往容器中复制文件，况且通常kubernetes都是集群部署，复制文件操作不便，服务迁移时也会造成额外的工作量。最好的办法就是把ik分词器打包到Elasticsearch镜像中，二者融为一体。]]></description><category></category></item><item><title><![CDATA[freemarker导出word文档]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/136559719</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/136559719</guid><author>Crisf</author><pubDate>Sat, 16 Mar 2024 11:38:12 +0800</pubDate><description><![CDATA[本文记录一下利用freemarker模板工具导出word文档的方法及开发过程中遇到的问题。]]></description><category></category></item><item><title><![CDATA[Oracle 12c gbk字符集下解决特殊符号乱码问题]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/131924237</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/131924237</guid><author>Crisf</author><pubDate>Tue, 25 Jul 2023 19:13:21 +0800</pubDate><description><![CDATA[2 原有字段直接把类型由“VARCHAR2”改为“NVARCHAR2”会报错，可以新加一个字段类型设置为“NVARCHAR2”，将原字段的数据复制到新字段，并改名称，最后把新字段的名称修改为原字段的即可。同样需要把数据库字段类型改为NVARCHAR2，收到参数后首先将特殊符号转换为16进制，存入数据库中时通过函数“utl_raw.cast_to_nvarchar2”进行转换，查询时无需特殊处理。下面总结解决问题的两个思路，老规矩，将最终完美解决问题的方法记录在方式一，方式二记录思路及遇到的问题。]]></description><category></category></item><item><title><![CDATA[Mybatis+Oracle批量插入方法总结]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/130789937</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/130789937</guid><author>Crisf</author><pubDate>Sun, 21 May 2023 12:03:36 +0800</pubDate><description><![CDATA[最近因为处理Oracle 12c GBK字符集情况下特殊符号（如Ø等）的问题，无法使用mabatisPlus的saveBatch方法，需要在mapper.xml中手写方法，又受框架所限，有些语法不支持，耗费了几天时间，最终通过下面地第一种方式实现，特在此总结一下。]]></description><category></category></item><item><title><![CDATA[SpringBoot集成WebService服务端及postman访问测试]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/118875552</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/118875552</guid><author>Crisf</author><pubDate>Sun, 18 Jul 2021 12:27:26 +0800</pubDate><description><![CDATA[代码地址

https://gitee.com/chrisfzh/dailytest

代码结构



代码及说明

pom文件中添加的依赖项


        &lt;!--WebServcie--&gt;
        &lt;!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws --&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;.]]></description><category></category></item><item><title><![CDATA[ubuntu安装nginx并配置ssl证书转发后端接口，解决the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx/c]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/117284547</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/117284547</guid><author>Crisf</author><pubDate>Wed, 26 May 2021 13:07:37 +0800</pubDate><description><![CDATA[其他相关博客

centos安装配置nginx地址

https://blog.youkuaiyun.com/Crisf/article/details/115477161?spm=1001.2014.3001.5501

腾讯云申请域名、证书

https://blog.youkuaiyun.com/Crisf/article/details/113242541?spm=1001.2014.3001.5501

安装nginx

安装nginx前需要一些安装一些环境，可以参考上面centos的博文，安装都是类似的，提示缺少什么环]]></description><category></category></item><item><title><![CDATA[SpringBoot中监听redis失效key]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/117133269</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/117133269</guid><author>Crisf</author><pubDate>Fri, 21 May 2021 20:17:53 +0800</pubDate><description><![CDATA[需求

在线考试的一个交卷功能（商城的超时未支付订单也类似，不同之处在于商城的处理比较简单，失效就可以了，考试功能还需要在key失效后取回value做业务处理），用户整个答题流程中产生的数据存在redis中，当用户点交卷时，从redis中取出数据，做后续的评分、统计、存数据库等处理。如果用户未答完就非正常退出，要在到达考试结束时间时清除掉redis里面的数据，并执行后续的评分等操作。

处理方式

方式一：（本文采用的方式）

redis中对每次考试存两份数据（key1根据考试时长设定失效时间，key2永久]]></description><category></category></item><item><title><![CDATA[SpringBoot动态拼接sql的两种方式]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/116330183</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/116330183</guid><author>Crisf</author><pubDate>Sat, 01 May 2021 15:16:55 +0800</pubDate><description><![CDATA[今天搭建了一个简易的demo项目，测试了两种动态拼接sql的方式，特此记录一下，以备后用。

项目结构如下：



方式一：在基类上增加共有属性params，所有的需要过滤数据的业务实体可以继承该基类，在需要的


package com.chrisf.intercepter;

import com.chrisf.aspectj.annotation.InterceptAnnotation;
import org.apache.ibatis.executor.statement.StatementHan.]]></description><category></category></item><item><title><![CDATA[Linux搭建环境部署springboot项目：（五）部署项目]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/115479864</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/115479864</guid><author>Crisf</author><pubDate>Wed, 07 Apr 2021 15:18:29 +0800</pubDate><description><![CDATA[第一篇中有整个系列所有文章的链接，地址如下：

https://blog.youkuaiyun.com/Crisf/article/details/115345904?spm=1001.2014.3001.5501

本次测试用的为前后端分离项目，后端用的springboot框架，前段使用的vue

1、目录结构（仅供参考）



2、开放端口

测试项目中对外暴露的端口为9208，下面列出操作端口相关命令


#查看想开的端口是否已开：
firewall-cmd --query-port=9208/tcp
#添加指定]]></description><category></category></item><item><title><![CDATA[Linux搭建环境部署springboot项目：（四）Nginx环境安装]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/115477161</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/115477161</guid><author>Crisf</author><pubDate>Wed, 07 Apr 2021 09:26:41 +0800</pubDate><description><![CDATA[第一篇中有整个系列所有文章的链接，地址如下：

https://blog.youkuaiyun.com/Crisf/article/details/115345904?spm=1001.2014.3001.5501

安装Nginx之前需要先安装必须的库，包括pcre，zlib，openssl，可以yum安装，也可以下载安装包直接安装，本文采用的是安装包的方式

1、安装pcre


#创建pcre目录并上传下载好的安装包
cd /usr
mkdir pcre
cd pcre
rz
#解压缩并删除压缩包
tar -zx]]></description><category></category></item><item><title><![CDATA[Linux搭建环境部署springboot项目：（三）Redis环境安装]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/115360163</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/115360163</guid><author>Crisf</author><pubDate>Wed, 31 Mar 2021 21:14:06 +0800</pubDate><description><![CDATA[1、/usr目录下创建redis目录，并上传、解压redis包


#进入/usr目录
cd /usr
#创建redis目录
mkdir redis
#进入redis目录
cd redis
#上传下载好的redis压缩包
rz
#解压缩
tar -zxvf redis-6.2.1.tar.gz



2、 进入redis-6.2.1


cd redis-6.2.1

3、进行编译、安装


#进行编译
make
#安装
make install

4、设置守护线程及修改密码


vi redis.co..]]></description><category></category></item><item><title><![CDATA[Linux搭建环境部署springboot项目：（二）Mysql环境安装（yum安装）]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/115349261</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/115349261</guid><author>Crisf</author><pubDate>Wed, 31 Mar 2021 20:03:28 +0800</pubDate><description><![CDATA[第一篇中有整个系列所有文章的链接，地址如下：

https://blog.youkuaiyun.com/Crisf/article/details/115345904?spm=1001.2014.3001.5501

1、查看是否自带maridb数据库，有则删除（二者关系在此不再赘述）


rpm -qa|grep mariadb

有则会返回版本信息



2、删除mariadb数据库（上一步未查询到则无需执行此步骤）


rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_.]]></description><category></category></item><item><title><![CDATA[Linux搭建环境部署springboot项目：（一）JDK环境安装]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/115345904</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/115345904</guid><author>Crisf</author><pubDate>Wed, 31 Mar 2021 11:39:24 +0800</pubDate><description><![CDATA[近期从头搭建了一次环境并部署项目，再次通过虚拟机模拟复原配合截图，整理一下以备后用，会分篇记录整个安装过程，目录如下：

（一）JDK环境安装（本篇）

（二）Mysql环境安装（自此以下写完会补链接）

（三）Redis环境安装

（四）Nginx环境安装

（五）部署项目

（六）Jenkins安装

JDK环境安装(本次安装用的版本是JDK1.8.0_65，安装目录为/usr/java/jdk1.8)

1、进入/usr目录，创建java目录，并上传linux压缩包


#进入/usr目录
cd /u]]></description><category></category></item><item><title><![CDATA[socket.io版本降级，解决TypeError: socketIo.listen is not a function]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/113976041</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/113976041</guid><author>Crisf</author><pubDate>Tue, 23 Feb 2021 13:14:43 +0800</pubDate><description><![CDATA[记录一下socket.io使用过程中报错的解决办法，完整错误记录如下



listen()不是合法的方法，经过查阅资料，发现socket.io在3.x版本做了改动，不再使用listen()方法，官网demo截图如下



因此代码做一下修改：



这样，报错就解决了，但是在运行的过程中，后面还有其他方法也出现了不兼容的现象，因此决定将socket.io的版本降到2.x

卸载当前3.1.1版本的socket.io


npm uninstall socket.io

安装低版本（这里采用2.0.4版..]]></description><category></category></item><item><title><![CDATA[文件改名]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/113620094</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/113620094</guid><author>Crisf</author><pubDate>Wed, 03 Feb 2021 21:39:24 +0800</pubDate><description><![CDATA[最近下载了些视频资料学习，视频为每个部分的编号都是从01一直递增，如果全部加到播放器里面，会非常的乱，无法按照模块分类排序，文件目录大致是这样的：



所以决定给文件名加一下前缀，使其按照模块分类排序，例如第一部分的01.xxx文件夹下的文件名修改为11_01.xxx.vep，以此类推。这本是很简单的实现，可是有些API不常用转眼就忘，因此整理到自己博客，以后再用CV大法的时候也会方便些。




/**
	 * 12改名
	 * @param path
	 */
	public static void ]]></description><category></category></item><item><title><![CDATA[Java实现Excel表中数据的引用]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/113619410</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/113619410</guid><author>Crisf</author><pubDate>Wed, 03 Feb 2021 21:22:16 +0800</pubDate><description><![CDATA[在整理表格数据做工资表的时候遇到一个问题，由于员工入职离职较为频繁，文员没有及时整理，多张表中数据无法对接，下面上图描述一下问题：



source表是上月的人员表，表中有md、rzsj、tbsj、lzsj等信息



这张是新的表，这里是我整理之后把数据删掉了，之前是信息参差不齐，有的有，有的没有，而且名字的顺序和source表中的名字顺序不一致，首先想到的办法是用WPS的“VLOOKUP”函数实现数据的引用，但是试了多次都会报错，只有选定的列能引用成功，向下拖拽的时候，下面的列都会报错，百度了几个答.]]></description><category></category></item><item><title><![CDATA[ubuntu系统更新nodejs至新版本（解决无法安装socket.io问题）]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/113618976</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/113618976</guid><author>Crisf</author><pubDate>Wed, 03 Feb 2021 20:46:01 +0800</pubDate><description><![CDATA[今天在安装socket.io库的过程中遇到一个错误，记录一下，报错如下：



通过分析报错信息得知，是版本不兼容的问题，socket.io要求node.js的版本高于10，而之前的版本为v8.10.0，下面记录一下更新方法。

1、到nodejs官网查看最新版本号https://nodejs.org/



从官网可以看到，目前的稳定版本是14.15.4

2、添加源


curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -

n.]]></description><category></category></item><item><title><![CDATA[navigator.mediaDevices.enumerateDevices() 返回空label]]></title><link>https://blog.youkuaiyun.com/Crisf/article/details/113382458</link><guid>https://blog.youkuaiyun.com/Crisf/article/details/113382458</guid><author>Crisf</author><pubDate>Fri, 29 Jan 2021 14:06:31 +0800</pubDate><description><![CDATA[搭建环境环境见拙作：

https://blog.youkuaiyun.com/Crisf/article/details/113242541

本次记录navigator.mediaDevices.enumerateDevices() 返回的label,deviceId为空的解决办法。问题截图如下：



代码如下所示：

结构如下：



index.html:


&lt;html&gt;
        &lt;head&gt;
                &lt;title&gt; WebRTC get ]]></description><category></category></item></channel></rss>