<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[关启培的博客]]></title><description><![CDATA[无论谁，干哪一行就得吃哪一行的苦，这是不应该避免的（No pain No gain）]]></description><link>https://blog.youkuaiyun.com/qq_40434646</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_40434646]]></copyright><item><title><![CDATA[求int型正整数在内存中存储时1的个数]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/117624822</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/117624822</guid><author>qq_40434646</author><pubDate>Sun, 06 Jun 2021 13:18:06 +0800</pubDate><description><![CDATA[描述

写出一个程序，接受一个正浮点数值，输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整；小于5，则向下取整。

输入描述：

输入一个正浮点数值

输出描述：

输出该数值的近似整数值

示例1

输入：


5.5


输出：


6

...]]></description><category></category></item><item><title><![CDATA[Java设计模式之门面模式]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/115311414</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/115311414</guid><author>qq_40434646</author><pubDate>Mon, 29 Mar 2021 21:17:57 +0800</pubDate><description><![CDATA[概念：

 门面模式又称外观模式.提供了一个统一的接口用来访问子系统的一群接口.主要特征是提供了一个高层接口,让子系统更容易使用,属于结构型模式.

门面模式的uml图：

   门面模式没有一个一般化的类图描述，最好的描述方法实际上就是以一个例子说明。由于门面模式的结构图过于抽象，因此把它稍稍具体点。假设子系统内有三个模块，分别是ModuleA、ModuleB和ModuleC，它们分别有一个示例方法，那么此时示例的整体结构图如下：



在这个对象图中，出现了两个角色：

门面(Facade...]]></description><category></category></item><item><title><![CDATA[前缀、中缀、后缀表达式]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/112590041</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/112590041</guid><author>qq_40434646</author><pubDate>Wed, 13 Jan 2021 20:44:27 +0800</pubDate><description><![CDATA[前缀、中缀、后缀表达式

前缀、中缀、后缀表达式是对表达式的不同记法，其区别在于运算符相对于操作数的位置不同，前缀表达式的运算符位于操作数之前，中缀和后缀同理

举例：
中缀表达式：1 + (2 + 3) × 4 - 5
前缀表达式：- + 1 × + 2 3 4 5
后缀表达式：1 2 3 + 4 × + 5 -

中缀表达式

中缀表达式是一种通用的算术或逻辑公式表示方法，操作符以中缀形式处于操作数的中间。中缀表达式是人们常用的算术表示方法。
虽然人的大脑很容易理解与分析中缀表达式，但对计算机来说中缀表]]></description><category></category></item><item><title><![CDATA[单例bean中使用多例bean，你会吗？]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/108109577</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/108109577</guid><author>qq_40434646</author><pubDate>Wed, 19 Aug 2020 20:31:31 +0800</pubDate><description><![CDATA[通常情况下，我们使用的bean都是单例的，如果一个bean需要依赖于另一个bean的时候，可以在当前bean中声明另外一个bean引用，然后注入依赖的bean，此时被依赖的bean在当前bean中自始至终都是同一个实例。

 先来个案例回顾一下


package com.javacode2018.lesson001.demo13.normal;

public class ServiceA {
}
package com.javacode2018.lesson001.demo13.n...]]></description><category></category></item><item><title><![CDATA[创建bean实例这些方式]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/107888063</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/107888063</guid><author>qq_40434646</author><pubDate>Sun, 09 Aug 2020 01:51:17 +0800</pubDate><description><![CDATA[Spring容器内部创建bean实例对象常见的有4种方式：


	通过反射调用构造方法创建bean对象
	
	
	通过静态工厂方法创建bean对象
	
	
	通过实例工厂方法创建bean对象
	
	
	通过FactoryBean创建bean对象
	
通过反射调用构造方法创建bean对象

   调用类的构造方法获取对应的bean实例，是使用最多的方式，这种方式只需要在xml bean元素中指定class属性，spring容器内部会自动调用该类型的构造方法来创建bean对象，将其放在容器中以供使用。
...]]></description><category></category></item><item><title><![CDATA[简单了解一下黑盒测试和白盒测试]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/106348368</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/106348368</guid><author>qq_40434646</author><pubDate>Tue, 26 May 2020 10:47:08 +0800</pubDate><description><![CDATA[作为开发人员，黑盒测试、白盒测试这些还是必须掌握的

  最大区别：关注对象不一样

 黑盒测试和白盒测试，二者最大的区别应该就是测试时关注的对象不一样。

黑盒测试：针对程序展现给用户的功能，白盒测试：针对的是程序的代码逻辑。简单的说，就是前者测试最终展示功能，后者测试后台程序。

黑盒测试

    黑盒，顾名思义就是：把测试对象看作一个不能打开的黑盒子。测试时，测试人员完全不用考虑盒子里面的逻辑结构和具体运作，只依据程序的需求规格说明书，检查程序的功能是否符合它...]]></description><category></category></item><item><title><![CDATA[Java设计模式之观察者模式]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/106167452</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/106167452</guid><author>qq_40434646</author><pubDate>Sun, 17 May 2020 00:09:49 +0800</pubDate><description><![CDATA[什么是观察者模式

   可以这么理解：

         观察者模式定义了一种一对多的依赖关系，让多个观察者对象同时监听某一个主题对象。

         这个主题对象在状态上发生变化时，会通知所有观察者对象，让它们能够自动更新自己。

 
...]]></description><category></category></item><item><title><![CDATA[Java设计模式之适配器模式]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/106163744</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/106163744</guid><author>qq_40434646</author><pubDate>Sat, 16 May 2020 22:52:01 +0800</pubDate><description><![CDATA[现在开发的项目用了挺多的设计模式，所以今天又学习一下设计模式，这次学习的是适配器模式

1.适配器模式

 适配器模式，作为连接两个接口的桥梁。这个概念感觉有点那啥，很少用接口的朋友可能就没有什么感觉，经常面向接口编程的朋友比较能产生共鸣，简单来说，就是写一个适配器（转换器）来对接对象。

2.适配器模式使用

 java适配器模式有两种，类适配器和对象适配器

（1）类适配器demo

 类适配器主要是使用继承的方式连接两个接口。我们假设对接接口A和接口B。

先看接口B：


...]]></description><category></category></item><item><title><![CDATA[用eclipse出现：error：A JNI error has occurred, please check your installation and try again]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/106044846</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/106044846</guid><author>qq_40434646</author><pubDate>Sun, 10 May 2020 23:39:33 +0800</pubDate><description><![CDATA[今天用eclipse写代码出现了这个错误：

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main"

造成的原因是：

自己定义的包路径以java开头造成。
java的类加载器在加载文件时，之前已经加载了以java开头的包路径，也就是rt.jar里面的内容。为了安全，会阻止自定义的包名以java开头。



解决方法：改变包的名即可
...]]></description><category></category></item><item><title><![CDATA[vim插入模式小技巧]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/105302463</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/105302463</guid><author>qq_40434646</author><pubDate>Fri, 03 Apr 2020 22:20:26 +0800</pubDate><description><![CDATA[插入模式下删除字符

当在vim的插入模式下是，想要删除字符一般是使用Backspace键或者进入普通模式来进行操
作，实际上还可以使用Ctrl-w来删除光标的前一个单词，使用Ctrl+u可以一直删除到行
首，使用Ctrl-h删除光标前一个字符。

这几个快捷键不仅仅是可以在vim的插入模式下使用。在vim的命令模式下以及bash中都同样
可以使用。

插入普通模式

vim插入模式中只能用于键入...]]></description><category></category></item><item><title><![CDATA[Mybatis遇到Parameter 'list1' not found. Available parameters are ['list1”]]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/104333292</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/104333292</guid><author>qq_40434646</author><pubDate>Sat, 15 Feb 2020 19:47:23 +0800</pubDate><description><![CDATA[答案参考这个博客就可以解决：https://www.cnblogs.com/xiaoshen666/p/11087854.html
]]></description><category></category></item><item><title><![CDATA[Java并发：有关并行的两个重要定律]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/103808050</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/103808050</guid><author>qq_40434646</author><pubDate>Thu, 02 Jan 2020 17:24:09 +0800</pubDate><description><![CDATA[有关为什么要使用并行程序的问题前面已经进行了简单的探讨。总的来说，最重要的应该是处于两个目的。

第一，为了获得更好的性能；

第二，由于业务模型的需要，确实需要多个执行实体。

在这里，我将更加关注第一种情况，也就是有关性能的问题。将串行程序改造为并发程序，一般来说可以提高程序的整体性能，但是究竟能提高多少，甚至说究竟是否真的可以提高，还是一个需要研究的问题。目前，主要有两个定律对这个问题进行解...]]></description><category></category></item><item><title><![CDATA[理解计算机磁盘结构]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/103574064</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/103574064</guid><author>qq_40434646</author><pubDate>Tue, 17 Dec 2019 09:30:32 +0800</pubDate><description><![CDATA[数据库系统总会涉及到辅助存储（大多都是磁盘），因为它们能够存储大量需要长期保存的数据，因此我们有必要先了解了解磁盘的相关知识。

根据机械原理，存储器的容量越大其速度就越慢。但是速度越快的存储器，其单位字节的价格就越贵。现代计算机系统可以包含几个不同的可以存储数据的部件，就形成了存储器的层次结构，但是需要注意的是「虚拟内存」是操作系统与操作系统运用机器硬件的产物，它不是存储器的层次之一。

磁盘结...]]></description><category></category></item><item><title><![CDATA[MySql学习（十）子查询（非常重要，高手必备）]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/103190738</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/103190738</guid><author>qq_40434646</author><pubDate>Thu, 21 Nov 2019 20:59:28 +0800</pubDate><description><![CDATA[本章节非常重要。

子查询

子查询

出现在select语句中的select语句，称为子查询或内查询。

外部的select查询语句，称为主查询或外查询。

子查询分类

按结果集的行列数不同分为4种


	标量子查询（结果集只有一行一列）
	
	
	列子查询（结果集只有一列多行）
	
	
	行子查询（结果集有一行多列）
	
	
	表子查询（结果集一般为多行多列）
	
按子查询出现在主查询中的不...]]></description><category></category></item><item><title><![CDATA[MySql学习（九）深入了解连接查询及原理]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/103190647</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/103190647</guid><author>qq_40434646</author><pubDate>Thu, 21 Nov 2019 20:57:00 +0800</pubDate><description><![CDATA[准备数据


2张表：

t_team：组表。

t_employee：员工表，内部有个team_id引用组表的id。



droptableifexistst_team;
createtablet_team(
idintnotnullAUTO_INCREMENTPRIMARYKEYcomment'组id',
team_namevarchar(32)not...]]></description><category></category></item><item><title><![CDATA[MySql学习（八）分组查询详解（group by & having）]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/103190458</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/103190458</guid><author>qq_40434646</author><pubDate>Thu, 21 Nov 2019 20:43:21 +0800</pubDate><description><![CDATA[分组查询

语法：


SELECTcolumn,group_function,...FROMtable
[WHEREcondition]
GROUPBYgroup_by_expression
[HAVINGgroup_condition];



说明：

group_function：聚合函数。

group_by_expression：分组表达式，多个之间用逗号隔开。

gr...]]></description><category></category></item><item><title><![CDATA[MySql学习（七）排序和分页(order by & limit)，及存在的坑]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/103163900</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/103163900</guid><author>qq_40434646</author><pubDate>Wed, 20 Nov 2019 16:47:35 +0800</pubDate><description><![CDATA[代码中被[]包含的表示可选，|符号分开的表示可选其一。

排序查询（order by）

电商中：我们想查看今天所有成交的订单，按照交易额从高到低排序，此时我们可以使用数据库中的排序功能来完成。

排序语法：


select字段名from表名orderby字段1[asc|desc],字段2[asc|desc];



需要排序的字段跟在order by之后；

asc|desc表...]]></description><category></category></item><item><title><![CDATA[MySql学习（六）玩转select条件查询，避免采坑]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/103151079</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/103151079</guid><author>qq_40434646</author><pubDate>Wed, 20 Nov 2019 14:12:02 +0800</pubDate><description><![CDATA[前言：电商中：我们想查看某个用户所有的订单，或者想查看某个用户在某个时间段内所有的订单，此时我们需要对订单表数据进行筛选，按照用户、时间进行过滤，得到我们期望的结果。

此时我们需要使用条件查询来对指定表进行操作，我们需要了解sql中的条件查询常见的玩法。

条件查询


语法：
 select 列名 from where 列 运算符 值

说明：

注意关键字where，where后面跟上一个或...]]></description><category></category></item><item><title><![CDATA[MySql学习（五）select查询基础篇]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/103149528</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/103149528</guid><author>qq_40434646</author><pubDate>Tue, 19 Nov 2019 20:53:57 +0800</pubDate><description><![CDATA[概述： DQL(Data Query Language)：数据查询语言，通俗点讲就是从数据库获取数据的，按照DQL的语法给数据库发送一条指令，数据库将按需求返回数据。

基本语法


select  查询的列 from 表名;

注意:
select语句中不区分大小写，SELECT和select、FROM和from效果一样。

查询的结果放在一个表格中，表格的第1行称为列头，第2行开始是数据...]]></description><category></category></item><item><title><![CDATA[MySql学习（四）DML操作汇总，确定你都会？]]></title><link>https://blog.youkuaiyun.com/qq_40434646/article/details/103143221</link><guid>https://blog.youkuaiyun.com/qq_40434646/article/details/103143221</guid><author>qq_40434646</author><pubDate>Tue, 19 Nov 2019 17:39:14 +0800</pubDate><description><![CDATA[DML(Data Manipulation Language)数据操作语言，以INSERT、UPDATE、DELETE三种指令为核心，分别代表插入、更新与删除，是必须要掌握的指令，DML和SQL中的select熟称CRUD（增删改查）。

插入操作

方式一：


insert into 表名(字段1，字段2，..)  values(值，值);

说明：

值和字段需要一一对应

如...]]></description><category></category></item></channel></rss>