<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[willem的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/DearShaJing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; DearShaJing]]></copyright><item><title><![CDATA[海康威视摄像头实时推流到阿里云公网服务器（Windows + FFmpeg + nginx-rtmp)]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/150112597</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/150112597</guid><author>DearShaJing</author><pubDate>Sat, 09 Aug 2025 18:35:14 +0800</pubDate><description><![CDATA[摘要： 本文详细介绍将海康威视摄像头视频流通过Windows电脑推送到阿里云服务器的完整方案。步骤包括：1）在阿里云ECS部署nginx-rtmp服务并开放端口；2）Windows端安装FFmpeg，通过RTSP拉取摄像头流并转推RTMP协议；3）使用VLC或网页进行公网播放验证；4）通过nssm工具将推流程序注册为Windows服务实现长期运行。方案支持低延迟传输，提供常见问题排查方法和一键脚本，适用于7×24小时监控场景，最终实现公网多终端访问摄像头视频流。]]></description><category></category></item><item><title><![CDATA[PostgreSQL14.2部署(解压版)]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/131530879</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/131530879</guid><author>DearShaJing</author><pubDate>Tue, 04 Jul 2023 11:09:13 +0800</pubDate><description><![CDATA[配置环境变量，以便能够全局访问 PostgreSQL 命令。该部署是将PostgreSQL安装在/usr/local/pgsql-14.2目录下。postgres 默认是没有设置密码的，可以通过一下命令来给postgres设置密码。创建一个新的系统用户来运行 PostgreSQL。步骤1查看之后未安装则需安装readline,下载readline-8.2。使用以下命令创建一个新的数据库群集并启动它。下载 Postgresql 14.2 的源代码包。将pgsql-14.2授权给postgres用户。]]></description><category></category></item><item><title><![CDATA[MAC配置多版本JDK并动态切换]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/122111320</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/122111320</guid><author>DearShaJing</author><pubDate>Thu, 23 Dec 2021 16:42:54 +0800</pubDate><description><![CDATA[#JDK1.8
export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
#JDK 17
export JAVA_17_HOME=/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home

#default JDK1.8
PATH=$JAVA_HOME/bin:$PATH:.
CLASSPATH=$JAVA_HOME/lib/too]]></description><category></category></item><item><title><![CDATA[Mysql主从同步]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/113849501</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/113849501</guid><author>DearShaJing</author><pubDate>Thu, 18 Feb 2021 17:23:07 +0800</pubDate><description><![CDATA[MySQL主从同步的原理


Replication 线程
Mysql的 Replication 是一个异步的复制过程(mysql5.1.7以上版本分为异步复制和半同步两种模式)，从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave)。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成，其中两个线程(Sql线程和IO线程)在 Slave 端，另外一个线程(IO线程)在 Master 端。
要实现 MySQL ]]></description><category></category></item><item><title><![CDATA[HTTP协议与HTTPS协议区别及SSL配置方式]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/107448538</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/107448538</guid><author>DearShaJing</author><pubDate>Mon, 20 Jul 2020 18:22:28 +0800</pubDate><description><![CDATA[简介
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息，HTTP协议以明文方式发送内容，不提供任何方式的数据加密，如果攻击者截取了Web浏览器和网站服务器之间的传输报文，就可以直接读懂其中的信息，因此，HTTP协议不适合传输一些敏感信息，比如：信用卡号、密码等支付信息。
为了解决HTTP协议的这一缺陷，需要使用另一种协议：安全套接字层超文本传输协议HTTPS，为了数据传输的安全，HTTPS在HTTP的基础上加入了SSL协议，SSL依靠证书来验证服务器的身份，并为浏览器和服务器之间的通信]]></description><category></category></item><item><title><![CDATA[JAVA HTTP请求]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/107314692</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/107314692</guid><author>DearShaJing</author><pubDate>Mon, 13 Jul 2020 12:41:19 +0800</pubDate><description><![CDATA[GET请求方式
   /**
     * Description: 发送GET请求，请求参数为MAP
     * @author: willem
     * @date: 2020/7/13 11:45
     * @param url
     * @param param
     * @return:java.lang.String
     */
    public static String sendGet(String url, Map&lt;String, String&gt; pa]]></description><category></category></item><item><title><![CDATA[JAVA根据图片路径下载图片并写入ZIP]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/105838737</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/105838737</guid><author>DearShaJing</author><pubDate>Wed, 29 Apr 2020 14:11:46 +0800</pubDate><description><![CDATA[public void downloadPic(HttpServletRequest request, HttpServletResponse response) throws IOException {
     
        List&lt;Map&lt;String, Object&gt;&gt; allSysApp = new ArrayList&lt;&gt;();
       ...]]></description><category></category></item><item><title><![CDATA[Shiro 框架简介]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/104740028</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/104740028</guid><author>DearShaJing</author><pubDate>Sun, 08 Mar 2020 21:21:36 +0800</pubDate><description><![CDATA[权限管理

权限管理

什么是权限管理
基本上涉及到用户参与的系统都要进行权限管理，权限管理属于系统安全的范畴，权限管理实现对用户访问系统的控制，按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。
权限管理包括用户身份认证和授权两部分，简称认证授权。对于需要访问控制的资源用户首先经过身份认证，认证通过后用户具有该资源的访问权限方可访问。
用户身份认证
身份认证，就是判断一个用户...]]></description><category></category></item><item><title><![CDATA[Swagger]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/104680971</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/104680971</guid><author>DearShaJing</author><pubDate>Thu, 05 Mar 2020 18:52:56 +0800</pubDate><description><![CDATA[将各个系统的API数据集中

客户端
将这个放到你的config启动，注意这里我用了一个占位符获取当前文档的名称，避免写死后续可能添加其他模块
pom文件中添加以下依赖

&lt;dependency&gt;
    &lt;groupId&gt;io.springfox&lt;/groupId&gt;
    &lt;artifactId&gt;springfox-swagger2&lt;/ar...]]></description><category></category></item><item><title><![CDATA[Swagger2接口API返回JSON、Map等对象的备注说明]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/104675889</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/104675889</guid><author>DearShaJing</author><pubDate>Thu, 05 Mar 2020 15:29:46 +0800</pubDate><description><![CDATA[描述
目前使用Swagger2形成接口文档时，当系统设计的接口返回的类型不是实体对象时，Swagger2无法在接口文档页面中显示返回结果字段说明，比如返回json、map等可以存储key-val形式的类型；均无法在接口文档页面上显示返回的字段备注说明，所以怎么才能像实体对象一样显示正常的model字段说明是我们这次需要解决的问题；

首先告诉Swagger2该接口需要返回的字段具体有哪些
定义两个...]]></description><category></category></item><item><title><![CDATA[linux 安装Git]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/104414039</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/104414039</guid><author>DearShaJing</author><pubDate>Thu, 20 Feb 2020 17:18:36 +0800</pubDate><description><![CDATA[进入git在GitHub上发布版本页面https://github.com/git/git/releases，这个页面我们可以找到所有git已发布的版本。这里我们选择最新版的tar.gz包。
下载最新版本的tar.gz的Git到本地电脑上，利用WinSCP工具将压缩包上传至Linux服务器的/usr目录下
解压压缩包

tar -zxf git-2.25.1.tar.gz


进入到解压后的文件...]]></description><category></category></item><item><title><![CDATA[快速排序(Python)]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/104236716</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/104236716</guid><author>DearShaJing</author><pubDate>Sun, 09 Feb 2020 16:20:45 +0800</pubDate><description><![CDATA[快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高，因此经常被采用，再加上快速排序思想—-分治法也确实实用
该方法的基本思想是：
1．先从数列中取出一个数作为基准数。
2．分区过程，将比这个数大的数全放到它的右边，小于或等于它的数全放到它的左边。
3．再对左右区间重复第二步，直到各区间只有一个数。
虽然快速排序称为分治法，但分治法这三个字显然无法很好的概括快速排序的全部步骤。因此...]]></description><category></category></item><item><title><![CDATA[冒泡排序(Python)]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/104236685</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/104236685</guid><author>DearShaJing</author><pubDate>Sun, 09 Feb 2020 16:18:45 +0800</pubDate><description><![CDATA[原理：比较两个相邻的元素，将值大的元素交换至右端。
思路：依次比较相邻的两个数，将小数放在前面，大数放在后面。即在第一趟：首先比较第1个和第2个数，将小数放前，大数放后。然后比较第2个数和第3个数，将小数放前，大数放后，如此继续，直至比较最后两个数，将小数放前，大数放后。重复第一趟步骤，直至全部排序完成。
N个数字要排序完成，总共进行N-1趟排序，每i趟的排序次数为(N-i)次，所以可以用双重循环...]]></description><category></category></item><item><title><![CDATA[监测tomcat 启动状态--自启脚本]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/103813393</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/103813393</guid><author>DearShaJing</author><pubDate>Fri, 03 Jan 2020 00:47:01 +0800</pubDate><description><![CDATA[监测tomcat 启动状态，自启脚本
#!/bin/sh
# func:自动监控tomcat脚本并且执行重启操作
# author:EagleHao
# date:2018-04-08
# DEFINE

# 获取tomcat进程ID（其中[grep -w 'tomcat']代码中的tomcat需要替换为你的tomcat文件夹名）
TomcatID=$(ps -ef |grep tomcat |g...]]></description><category></category></item><item><title><![CDATA[Docker 环境安装]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/100838153</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/100838153</guid><author>DearShaJing</author><pubDate>Sat, 14 Sep 2019 23:18:24 +0800</pubDate><description><![CDATA[Ubuntu 安装 Docker CE

切勿在没有配置 Docker APT 源的情况下直接使用 apt 命令安装 Docker.


系统准备

Docker CE 支持以下版本的 Ubuntu 操作系统：
- Disco 19.04
- Cosmic 18.10
- Bionic 18.04 (LTS)
-  Xenial 16.04 (LTS)
Docker CE 可以安装在 64 位的 ...]]></description><category></category></item><item><title><![CDATA[Docker简介及其原理]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/100165549</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/100165549</guid><author>DearShaJing</author><pubDate>Fri, 30 Aug 2019 21:17:03 +0800</pubDate><description><![CDATA[Docker简介:
简单来说，Docker镜像是一个配置好了所需环境的操作系统，我们在自己的电脑上运行一个docker容器，相当于开启了一个新的操作系统。比如说，如果我们在一台windows系统的电脑上运行一个安装了ubuntu系统的docker镜像，就意味着我们可以进入一台ubuntu系统的电脑进行操作。
Docker组成
一个完整的Docker有以下几个部分组成：

dockerClient客...]]></description><category></category></item><item><title><![CDATA[mysql安装方式]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/100123032</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/100123032</guid><author>DearShaJing</author><pubDate>Wed, 28 Aug 2019 17:11:49 +0800</pubDate><description><![CDATA[安装mysql
windows版(解压版)
1.下载安装包
下载地址：https://dev.mysql.com/downloads/mysql/

解压及初始化配置
解压并在根目录下新建初始化配置文件my.ini

初始化配置文件内容 PS:安装路径和数据存放路径改为自己的

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\Deve...]]></description><category></category></item><item><title><![CDATA[spring cloud简介以及常用的五大组件原理和介绍]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/99291246</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/99291246</guid><author>DearShaJing</author><pubDate>Mon, 12 Aug 2019 10:45:08 +0800</pubDate><description><![CDATA[Spring cloud 介绍及其组件原理]]></description><category></category></item><item><title><![CDATA[java对日期格式的转换]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/82148202</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/82148202</guid><author>DearShaJing</author><pubDate>Tue, 28 Aug 2018 15:04:59 +0800</pubDate><description><![CDATA[package com.ddtkj.common.util;

import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.ParsePosition; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import ...]]></description><category></category></item><item><title><![CDATA[生成验证码操作]]></title><link>https://blog.youkuaiyun.com/DearShaJing/article/details/80547293</link><guid>https://blog.youkuaiyun.com/DearShaJing/article/details/80547293</guid><author>DearShaJing</author><pubDate>Sat, 02 Jun 2018 13:40:22 +0800</pubDate><description><![CDATA[public class VerifyController {

    /**
     * 获取验证码
     * 
     * @throws IOException
     */
    @RequestMapping(value = &quot;/verify&quot;)
    public void verifyCode(HttpServletRequest req, HttpServletRe...]]></description><category></category></item></channel></rss>