<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[krain的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ccccc_chuang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ccccc_chuang]]></copyright><item><title><![CDATA[前端发送含参Get请求浏览器报“status“: 400, “error“: “Bad Request“错误]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/124630629</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/124630629</guid><author>ccccc_chuang</author><pubDate>Sat, 07 May 2022 14:44:33 +0800</pubDate><description><![CDATA[1. 错误描述
1.1 后端报错
HttpMessageNotReadableException: Required request body is missing
1.2 浏览器报错
“status“: 400, “error“: “Bad Request“
2. 原因
当前端使用Get请求方式发送含参请求时，后端Controller接收参数时不同使用@RequesrBody注解。而应该使用如下方式：
    @GetMapping("/info")
    @ApiOperation("通过用户toke]]></description><category></category></item><item><title><![CDATA[七大设计原则]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/123828413</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/123828413</guid><author>ccccc_chuang</author><pubDate>Tue, 29 Mar 2022 18:18:17 +0800</pubDate><description><![CDATA[1.  开闭原则
1.1  定义
对修改关闭，对扩展开放。
含义：当应用的需求改变时，在不修改软件实体的源代码或者二进制代码的前提下，可以扩展模块的功能，使其满足新的需求。
1.2  类图

2.  里氏替换原则
2.1  定义
继承必须确保超类所拥有的性质在子类中仍然成立。
里氏替换原则主要阐述了有关继承的一些原则，也就是什么时候应该使用继承，什么时候不应该使用继承，以及其中蕴含的原理。里氏替换原则是继承复用的基础，它反映了基类与子类之间的关系，是对开闭原则的补充，是对实现抽象化的具体步骤的规范。
里氏替]]></description><category></category></item><item><title><![CDATA[（三）行为型设计模式]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/123828403</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/123828403</guid><author>ccccc_chuang</author><pubDate>Tue, 29 Mar 2022 18:17:34 +0800</pubDate><description><![CDATA[1.  策略模式
1.1  问题背景分析
在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况，例如，出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等，超市促销可以釆用打折、送商品、送积分等方法。
在软件开发中也常常遇到类似的情况，当实现某一个功能存在多种算法或者策略，我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能，如数据排序策略有冒泡排序、选择排序、插入排序、二叉树排序等。
如果使用多重条件转移语句实现（即硬编码），不但使条件语句变得很复杂，而且增加、删除或更换算法要修改原]]></description><category></category></item><item><title><![CDATA[（二）结构型设计模式]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/123828386</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/123828386</guid><author>ccccc_chuang</author><pubDate>Tue, 29 Mar 2022 18:17:04 +0800</pubDate><description><![CDATA[1.  适配器模式
1.1  定义
将一个类的接口转换成客户希望的另外一个接口，使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种，前者类之间的耦合度比后者高，且要求程序员了解现有组件库中的相关组件的内部结构，所以应用相对较少些。
对象适配器应用较多。
1.2  结构与实现
类适配器模式：可采用多重继承方式实现，Java不支持多继承，但可以定义一个适配器类来实现当前系统的业务接口，同时又继承现有组件库中已经存在的组件。
对象适配器模式：可釆用将现有组件库中]]></description><category></category></item><item><title><![CDATA[（一）创建型设计模式]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/123828331</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/123828331</guid><author>ccccc_chuang</author><pubDate>Tue, 29 Mar 2022 18:16:17 +0800</pubDate><description><![CDATA[1.  工厂模式
定义：定义一个创建产品对象的工厂接口，将对象的创建工作推迟到具体子工厂类当中，使其满足创建与使用相分离这一特点。
1.1  简单工厂模式
1.1.1  问题背景分析
现实生活中，原始社会自给自足（没有工厂），农耕社会小作坊（简单工厂，民间酒坊），工业革命流水线（工厂方法，自产自销），现代产业链代工厂（抽象工厂，富士康）。我们的项目代码同样是由简到繁一步一步迭代而来的，但对于调用者来说，却越来越简单。
在日常开发中，凡是需要生成复杂对象的地方，都可以尝试考虑使用工厂模式来代替。
1.1.2 ]]></description><category></category></item><item><title><![CDATA[软件项目管理复习]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117931720</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117931720</guid><author>ccccc_chuang</author><pubDate>Tue, 15 Jun 2021 19:42:49 +0800</pubDate><description><![CDATA[1.  软件项目管理概述
1.1  项目管理的知识领域

软件集成管理
软件进度管理
软件范围管理
软件成本管理
软件质量管理
软件风险管理
软件沟通管理
软件资源管理
软件采购管理
软件干系人管理

1.2 过程管理在软件项目中的重要性
软件产品不同于普通产品，它是高度逻辑化的聚合体；因此软件产品质量的好坏不受物理实体的影响，而仅仅受生产工艺的影响，生产工艺在软件开发中的术语就是软件过程，因此软件的过程管理对软件产业的发展非常重要。
软件过程管理有助于软件组织对过程资产进行有效管理，使之可以重用于实际项目]]></description><category></category></item><item><title><![CDATA[算法设计与分析——分支限界法]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117748136</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117748136</guid><author>ccccc_chuang</author><pubDate>Wed, 09 Jun 2021 16:48:19 +0800</pubDate><description><![CDATA[文章目录1.  分支界限法1.1  基本思想1.2  搜索策略1.3  队列式1.4*  优先队列式2.  典型案例2.1  装载问题2.1.1  问题描述2.1.2  约束函数和限界条件2.1.3  队列式分支界限法求解（案例解释）2.1.4  案列二2.1.  代码实现3.  回溯法与分支限界法异同c++中 friend的用法
1.  分支界限法
1.1  基本思想
对有约束条件的最优化问题的所有可行解（数目有限）空间进行搜索。该算法在具体执行时，把全部可行的解空间不断分割为越来越小的子集（称为分支），]]></description><category></category></item><item><title><![CDATA[算法设计与分析——回溯算法]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117748071</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117748071</guid><author>ccccc_chuang</author><pubDate>Wed, 09 Jun 2021 16:46:52 +0800</pubDate><description><![CDATA[文章目录1.  回溯算法1.1  基本思想1.2  回溯法与分支界限法的异同2.  典型案例2.1  装载问题2.1.1  问题描述2.2 .2  约束函数与上界函数2.2.3  举例解释2.2.4  复杂度2.2  n皇后问题2.2.1  思路总结2.2.2  代码实现
1.  回溯算法
1.1  基本思想
回溯法的基本做法是搜索，在问题的解空间树中，按深度优先策略，从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时，先判断该结点是否包含问题的解。如果肯定不包含，则跳过对该结点为根的子树的搜索，逐层]]></description><category></category></item><item><title><![CDATA[算法设计与分析——贪心算法]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117748016</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117748016</guid><author>ccccc_chuang</author><pubDate>Wed, 09 Jun 2021 16:46:19 +0800</pubDate><description><![CDATA[文章目录1.  贪心算法1.1  定义1.2  基本要素1.3  基本思想1.4 特点2.  典型案例2.1  背包问题（物品可分割）2.1.1  问题描述2.1.2  问题转换2.1.3  问题求解步骤2.2  背包问题与0-1背包问题的区别2.3  贪心算法可以求解背包问题，那么能不能用贪心算法求解0-1背包问题？若不能，为什么？去反例说明。2.4  最优装载问题2.4.1  问题描述2.4.1  问题转化2.4.2  贪心选择策略2.4.2  代码实现
1.  贪心算法
1.1  定义
在求解最优解问]]></description><category></category></item><item><title><![CDATA[算法设计与分析——动态规划]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117747878</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117747878</guid><author>ccccc_chuang</author><pubDate>Wed, 09 Jun 2021 16:44:23 +0800</pubDate><description><![CDATA[文章目录1.  动态规划1.1  基本思想1.2  设计步骤1.3  两个要素（特征）1.4  动态规划实质2.  典型算法案例2.1  最长单调递增子序列2.1.1  问题描述2.1.1  递归方程2.1.2  代码实现2.2  0-1背包问题2.2.1  问题描述2.2.1.  递归方程2.2.3  复杂度2.2.4  代码实现2.3  矩阵连乘积问题2.3.1  问题描述2.3.2  建立递推公式2.3.3  复杂度2.3.3  代码实现3.  动态规划与分治法区别4.  动规与分支对问题进行分解时各]]></description><category></category></item><item><title><![CDATA[算法设计与分析——递归与分治策略]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117747793</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117747793</guid><author>ccccc_chuang</author><pubDate>Wed, 09 Jun 2021 16:41:23 +0800</pubDate><description><![CDATA[文章目录1.  递归算法1.1  特点1.2   优缺点2.  分治策略2.1  基本思想2.2  适用的条件2.3  求解过程（步骤）3.  典型算法案例3.1  二分搜索3.1.1 非递归实现3.1.1 递归实现3.2  棋盘覆盖问题
1.  递归算法
1.1  特点
1.2   优缺点
优点：结构清晰、可读性强
缺点：运行时效率较低，耗费较多的时间、空间资源
2.  分治策略
2.1  基本思想
分治策略的基本思想是将一个规模为n的问题分解为k个较小的子问题，这些子问题互相独立，并且和原问题相同，递归]]></description><category></category></item><item><title><![CDATA[算法设计与分析——概述（算法的复杂度）]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117747752</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/117747752</guid><author>ccccc_chuang</author><pubDate>Wed, 09 Jun 2021 16:39:55 +0800</pubDate><description><![CDATA[一、如何求算法的时间复杂度
其实就是计算最深层次执行语句的执行次数，根据循环结束条件计算出语句的执行次数，该执行次数与n有关，得出一个含n的多项式，取最高次项，其他舍去。

]]></description><category></category></item><item><title><![CDATA[struts2国际化解决中文乱码问题]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108926448</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108926448</guid><author>ccccc_chuang</author><pubDate>Mon, 05 Oct 2020 10:38:58 +0800</pubDate><description><![CDATA[在学习struts2的国际化时自己试了一下实例发现中文出现了乱码，国际化文件与页面如下图：


网上有方法说使用jdk的native2ascii.exe对文件转码，然而这个方法并不简单
native2ascii -encoding UTF-8 GlobalMessages.properties NewGlobalMessage.properties
实际上还是文件idea对文件编码的问题，在Settings中改一下设置就好，方法如下：
File -&gt; Settings -&gt; Editor -&g]]></description><category></category></item><item><title><![CDATA[Spring Boot（六）springboot模板引擎——Thymeleaf]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108222952</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108222952</guid><author>ccccc_chuang</author><pubDate>Tue, 25 Aug 2020 15:58:37 +0800</pubDate><description><![CDATA[一、Thymeleaf简介
  Thymeleaf 是一个流行的模板引擎，该模板引擎采用 Java 语言开发 模板引擎是一个技术名词，是跨领域跨平台的概念，在 Java 语言体系下有模板引擎，在 C#、PHP 语言体系下也有模板引擎，甚至在 JavaScript 中也会用到模板引擎技术，Java 生态下的模板引擎有 Thymeleaf 、Freemaker、Velocity、Beetl（国产） 等。
  Thymeleaf 对网络环境不存在严格的要求，既能用于 Web 环境下，也能用于非 Web 环境下。在]]></description><category></category></item><item><title><![CDATA[SpringBoot（五）springboot项目中使用拦截器——实现对未登录请求的拦截]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108220355</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108220355</guid><author>ccccc_chuang</author><pubDate>Tue, 25 Aug 2020 14:23:12 +0800</pubDate><description><![CDATA[一、创建Controller
package cn.krain.springboot.web;

import cn.krain.springboot.model.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.Response]]></description><category></category></item><item><title><![CDATA[SpringBoot（四）关闭和修改SpringBoot程序启动Logo]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108217233</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108217233</guid><author>ccccc_chuang</author><pubDate>Tue, 25 Aug 2020 11:03:21 +0800</pubDate><description><![CDATA[一、SpringBoot程序启动默认logo

二、关闭logo
  修改SpringBoot主程序。
package cn.krain.springboot;

import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootAp]]></description><category></category></item><item><title><![CDATA[SpringBoot（三）springboot集成Dubbo——注解式配置]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108210813</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108210813</guid><author>ccccc_chuang</author><pubDate>Mon, 24 Aug 2020 23:11:25 +0800</pubDate><description><![CDATA[一、Dubbo
  dubbo初体验，小白级入门案例
  在SpringBoot中集成Dubbo，无需再写繁琐的xml配置文件，直接使用注解及其属性进行配置即可。
二、创建Interface、Provider、Consumer三个工程

interface工程只需要是一个普通的maven java工程即可，provider和consumer需要是SpringBoot工程。


三、在Provider、Consumer工程的pom文件中加入依赖

pom.xml

&lt;dependencies&gt;
 ]]></description><category></category></item><item><title><![CDATA[Dubbo（一）dubbo初体验，小白级入门案例]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108210749</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108210749</guid><author>ccccc_chuang</author><pubDate>Mon, 24 Aug 2020 23:06:33 +0800</pubDate><description><![CDATA[Dubbo
一、简介
1、dubbo是一个轻量级Java RPC框架，用于分布式系统的开发

RPC

全称Remote Procedure Call，远程过程调用。是一种进程间的通信方式，是一种技术思想，而不是规范。它允许程序调用另一个地址空间（网络的另一台机器上）的过程或函 数，而不用开发人员显式编码这个调用的细节。调用本地方法和调用远程方法一样。

分布式系统

分布式系统是若干独立计算机（服务器）的集合，这些计算机对于用户来说就像单个相 关系统，分布式系统（distributed system）是建]]></description><category></category></item><item><title><![CDATA[Spring Boot（二）springboot集成redis，实现基本的存取值]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108209745</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108209745</guid><author>ccccc_chuang</author><pubDate>Mon, 24 Aug 2020 22:01:14 +0800</pubDate><description><![CDATA[一、在pom文件中加入redis依赖
&lt;!--springboot项目集称redis依赖--&gt;
&lt;dependency&gt;
    &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
    &lt;artifactId&gt;spring-boot-starter-data-redis&lt;/artifactId&gt;
&lt;/dependency&gt;

二、启动Redis

三、关闭防火墙，使用图形界面工具连接到]]></description><category></category></item><item><title><![CDATA[Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:***Fatal error compiling无效的标记]]></title><link>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108106030</link><guid>https://blog.youkuaiyun.com/ccccc_chuang/article/details/108106030</guid><author>ccccc_chuang</author><pubDate>Wed, 19 Aug 2020 17:39:57 +0800</pubDate><description><![CDATA[问题描述：idea中使用maven命令打包项目时出错。
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project 036-springboot-war: Fatal error compiling: 无效的标记: -parameters -&gt; [Help 1]
解决方法：
  产生该错误的原因是jdk版本不一致造成的；需要保证Proje]]></description><category></category></item></channel></rss>