自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

关启培的博客

无论谁,干哪一行就得吃哪一行的苦,这是不应该避免的(No pain No gain)

  • 博客(164)
  • 收藏
  • 关注

原创 求int型正整数在内存中存储时1的个数

描述写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。输入描述:输入一个正浮点数值输出描述:输出该数值的近似整数值示例1输入:5.5输出:6...

2021-06-06 13:18:06 457

原创 Java设计模式之门面模式

概念: 门面模式又称外观模式.提供了一个统一的接口用来访问子系统的一群接口.主要特征是提供了一个高层接口,让子系统更容易使用,属于结构型模式.门面模式的uml图: 门面模式没有一个一般化的类图描述,最好的描述方法实际上就是以一个例子说明。由于门面模式的结构图过于抽象,因此把它稍稍具体点。假设子系统内有三个模块,分别是ModuleA、ModuleB和ModuleC,它们分别有一个示例方法,那么此时示例的整体结构图如下:在这个对象图中,出现了两个角色:门面(Facade...

2021-03-29 21:17:57 209

转载 前缀、中缀、后缀表达式

前缀、中缀、后缀表达式前缀、中缀、后缀表达式是对表达式的不同记法,其区别在于运算符相对于操作数的位置不同,前缀表达式的运算符位于操作数之前,中缀和后缀同理举例:中缀表达式:1 + (2 + 3) × 4 - 5前缀表达式:- + 1 × + 2 3 4 5后缀表达式:1 2 3 + 4 × + 5 -中缀表达式中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间。中缀表达式是人们常用的算术表示方法。虽然人的大脑很容易理解与分析中缀表达式,但对计算机来说中缀表

2021-01-13 20:44:27 662

原创 单例bean中使用多例bean,你会吗?

通常情况下,我们使用的bean都是单例的,如果一个bean需要依赖于另一个bean的时候,可以在当前bean中声明另外一个bean引用,然后注入依赖的bean,此时被依赖的bean在当前bean中自始至终都是同一个实例。 先来个案例回顾一下package com.javacode2018.lesson001.demo13.normal;public class ServiceA {}package com.javacode2018.lesson001.demo13.n...

2020-08-19 20:31:31 841

原创 创建bean实例这些方式

Spring容器内部创建bean实例对象常见的有4种方式: 通过反射调用构造方法创建bean对象 通过静态工厂方法创建bean对象 通过实例工厂方法创建bean对象 通过FactoryBean创建bean对象 通过反射调用构造方法创建bean对象 调用类的构造方法获取对应的bean实例,是使用最多的方式,这种方式只需要在xml bean元素中指定class属性,spring容器内部会自动调用该类型的构造方法来创建bean对象,将其放在容器中以供使用。...

2020-08-09 01:51:17 270

原创 简单了解一下黑盒测试和白盒测试

作为开发人员,黑盒测试、白盒测试这些还是必须掌握的 最大区别:关注对象不一样 黑盒测试和白盒测试,二者最大的区别应该就是测试时关注的对象不一样。黑盒测试:针对程序展现给用户的功能,白盒测试:针对的是程序的代码逻辑。简单的说,就是前者测试最终展示功能,后者测试后台程序。黑盒测试 黑盒,顾名思义就是:把测试对象看作一个不能打开的黑盒子。测试时,测试人员完全不用考虑盒子里面的逻辑结构和具体运作,只依据程序的需求规格说明书,检查程序的功能是否符合它...

2020-05-26 10:47:08 1389

转载 Java设计模式之观察者模式

什么是观察者模式 可以这么理解: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。 ...

2020-05-17 00:09:49 147

转载 Java设计模式之适配器模式

现在开发的项目用了挺多的设计模式,所以今天又学习一下设计模式,这次学习的是适配器模式1.适配器模式 适配器模式,作为连接两个接口的桥梁。这个概念感觉有点那啥,很少用接口的朋友可能就没有什么感觉,经常面向接口编程的朋友比较能产生共鸣,简单来说,就是写一个适配器(转换器)来对接对象。2.适配器模式使用 java适配器模式有两种,类适配器和对象适配器(1)类适配器demo 类适配器主要是使用继承的方式连接两个接口。我们假设对接接口A和接口B。先看接口B:...

2020-05-16 22:52:01 316

原创 用eclipse出现:error:A JNI error has occurred, please check your installation and try again

今天用eclipse写代码出现了这个错误:Error: A JNI error has occurred, please check your installation and try againException in thread "main"造成的原因是:自己定义的包路径以java开头造成。java的类加载器在加载文件时,之前已经加载了以java开头的包路径,也就是rt.jar里面的内容。为了安全,会阻止自定义的包名以java开头。解决方法:改变包的名即可...

2020-05-10 23:39:33 1504

转载 vim插入模式小技巧

插入模式下删除字符当在vim的插入模式下是,想要删除字符一般是使用Backspace键或者进入普通模式来进行操作,实际上还可以使用Ctrl-w来删除光标的前一个单词,使用Ctrl+u可以一直删除到行首,使用Ctrl-h删除光标前一个字符。这几个快捷键不仅仅是可以在vim的插入模式下使用。在vim的命令模式下以及bash中都同样可以使用。插入普通模式vim插入模式中只能用于键入...

2020-04-03 22:20:26 1602

原创 Mybatis遇到Parameter 'list1' not found. Available parameters are ['list1”]

答案参考这个博客就可以解决:https://www.cnblogs.com/xiaoshen666/p/11087854.html

2020-02-15 19:47:23 1293

转载 Java并发:有关并行的两个重要定律

有关为什么要使用并行程序的问题前面已经进行了简单的探讨。总的来说,最重要的应该是处于两个目的。第一,为了获得更好的性能;第二,由于业务模型的需要,确实需要多个执行实体。在这里,我将更加关注第一种情况,也就是有关性能的问题。将串行程序改造为并发程序,一般来说可以提高程序的整体性能,但是究竟能提高多少,甚至说究竟是否真的可以提高,还是一个需要研究的问题。目前,主要有两个定律对这个问题进行解...

2020-01-02 17:24:09 301

转载 理解计算机磁盘结构

数据库系统总会涉及到辅助存储(大多都是磁盘),因为它们能够存储大量需要长期保存的数据,因此我们有必要先了解了解磁盘的相关知识。根据机械原理,存储器的容量越大其速度就越慢。但是速度越快的存储器,其单位字节的价格就越贵。现代计算机系统可以包含几个不同的可以存储数据的部件,就形成了存储器的层次结构,但是需要注意的是「虚拟内存」是操作系统与操作系统运用机器硬件的产物,它不是存储器的层次之一。磁盘结...

2019-12-17 09:30:32 617

转载 MySql学习(十)子查询(非常重要,高手必备)

本章节非常重要。子查询子查询出现在select语句中的select语句,称为子查询或内查询。外部的select查询语句,称为主查询或外查询。子查询分类按结果集的行列数不同分为4种 标量子查询(结果集只有一行一列) 列子查询(结果集只有一列多行) 行子查询(结果集有一行多列) 表子查询(结果集一般为多行多列) 按子查询出现在主查询中的不...

2019-11-21 20:59:28 197

转载 MySql学习(九)深入了解连接查询及原理

准备数据2张表:t_team:组表。t_employee:员工表,内部有个team_id引用组表的id。droptableifexistst_team;createtablet_team(idintnotnullAUTO_INCREMENTPRIMARYKEYcomment'组id',team_namevarchar(32)not...

2019-11-21 20:57:00 325

转载 MySql学习(八)分组查询详解(group by & having)

分组查询语法:SELECTcolumn,group_function,...FROMtable[WHEREcondition]GROUPBYgroup_by_expression[HAVINGgroup_condition];说明:group_function:聚合函数。group_by_expression:分组表达式,多个之间用逗号隔开。gr...

2019-11-21 20:43:21 359

转载 MySql学习(七)排序和分页(order by & limit),及存在的坑

代码中被[]包含的表示可选,|符号分开的表示可选其一。排序查询(order by)电商中:我们想查看今天所有成交的订单,按照交易额从高到低排序,此时我们可以使用数据库中的排序功能来完成。排序语法:select字段名from表名orderby字段1[asc|desc],字段2[asc|desc];需要排序的字段跟在order by之后;asc|desc表...

2019-11-20 16:47:35 737

转载 MySql学习(六)玩转select条件查询,避免采坑

前言:电商中:我们想查看某个用户所有的订单,或者想查看某个用户在某个时间段内所有的订单,此时我们需要对订单表数据进行筛选,按照用户、时间进行过滤,得到我们期望的结果。此时我们需要使用条件查询来对指定表进行操作,我们需要了解sql中的条件查询常见的玩法。条件查询语法: select 列名 from where 列 运算符 值说明:注意关键字where,where后面跟上一个或...

2019-11-20 14:12:02 371

原创 MySql学习(五)select查询基础篇

概述: DQL(Data Query Language):数据查询语言,通俗点讲就是从数据库获取数据的,按照DQL的语法给数据库发送一条指令,数据库将按需求返回数据。基本语法select 查询的列 from 表名;注意:select语句中不区分大小写,SELECT和select、FROM和from效果一样。查询的结果放在一个表格中,表格的第1行称为列头,第2行开始是数据...

2019-11-19 20:53:57 166

转载 MySql学习(四)DML操作汇总,确定你都会?

DML(Data Manipulation Language)数据操作语言,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是必须要掌握的指令,DML和SQL中的select熟称CRUD(增删改查)。插入操作方式一:insert into 表名(字段1,字段2,..) values(值,值);说明:值和字段需要一一对应如...

2019-11-19 17:39:14 121

转载 MySql学习(三)DDL常见操作

环境:mysql5.7.25,cmd命令中进行演示。DDL:Data Define Language数据定义语言,主要用来对数据库、表进行一些管理操作。如:建库、删库、建表、修改表、删除表、对列的增删改等等。文中涉及到的语法用[]包含的内容属于可选项,下面做详细说明。库的管理创建库:create database [if not exists] 库名;删除库d...

2019-11-19 15:13:39 311

原创 MySql学习(二)Mysql数据类型(挺重要的)

概要:1、介绍mysql中常用的数据类型 2、数据类型选择的建议MySQL 的数据类型(后面的数字表示字节数)(m:为该值的总共长度,d:小数后面的位数)整数类型: bit 、bool 、 tinyint(1) 、smallint(2) 、mediumint(3) 、int(4) 、bigint(8) 浮点数类型: float(m,d)(4)、double(m,d)(8) 、 ...

2019-10-16 16:54:18 105

原创 MySql学习(一)

SQL的语言分类:DQL (Date Query Language) : 数据查询语言 select 相关语句;DML(Data Manipulate Language): 数据操作语言 insert update delete 语句DDL (Data Define Language): 数据定义语言 create drop alter 语句TCL(Tranctio...

2019-10-12 17:32:44 97

原创 IDEA 出现:Error:java: Compilation failed: internal java compiler error

解决办法很简单:File-->Setting...-->Build,Execution,Deployment-->Compiler-->Java Compiler 设置相应Module的target bytecode version的合适版本(跟你自己jkd版本一致就行)。...

2019-09-21 10:05:44 397

转载 Java的深拷贝和浅拷贝

关于Java的深拷贝和浅拷贝,简单来说就是创建一个和已知对象一模一样的对象。可能日常编码过程中用的不多,但是这是一个面试经常会问的问题,而且了解深拷贝和浅拷贝的原理,对于Java中的所谓值传递或者引用传递将会有更深的理解。1、先来说说基本类型和引用类型 在 Java 中数据类型可以分为两大类:基本类型和引用类型。 基本类型也称为值类型,分别是字符类...

2019-09-10 11:22:37 95

转载 Quart的入门学习

一、Quartz可以用来做什么 Quartz是一个强大任务调度框架,我工作时候会在这些情况下使用到quartz框架,当然还有很多的应用场景,在这里只列举2个实际用到的用缓存的时候,每天十二点定时对内存中的全量数据进行一次更新。 人事系统会在每天早晨8点给有待办的人员自动发送Email提醒 在我们实际的项目中,当Job过多的时候,肯定不能人工去操作,这...

2019-09-06 17:50:32 616

原创 初次使用Redis,出现无法访问org.apache.commons.pool2.impl.GenericObjectPoolConfig的问题

使用redis出现Error:(28, 31) java: 无法访问org.apache.commons.pool2.impl.GenericObjectPoolConfig 找不到org.apache.commons.pool2.impl.GenericObjectPoolConfig的类文件这个错误,上网搜了!发现是缺少commons-pool2包,pom.xml加上&l...

2019-09-05 19:47:24 9790 1

原创 设计模式的七大原则

1、设计模式的目的 设计模式是为了程序(软件)具有更好的: 1. 代码重用性(即:相同的代码,不用多次编写) 2. 可读性(编程规范性,便于阅读) 3. 可拓展性 4. 可靠性 5. 高内聚低耦合2、设计模式七大原则 常用的七大原则有: - 单一职责原则 - 接口隔离原则 - 依赖倒转原则 - 里氏替换原...

2019-08-30 11:25:48 129

转载 Java设计模式之策略模式

策略模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。简介:Define a family of algorithms,encapsulate each one,...

2019-08-27 17:29:41 112

转载 Java设计模式之模板模式

1、模板模式的定义: 定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 大白话解释:完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同; 就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由...

2019-08-27 15:03:32 116 1

转载 匿名内部类详解

匿名内部类总结:定义:匿名内部类也就是没有名字的内部类好处:正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口实例1:不使用匿名内部类来实现抽象方法abstract class Person { public abstract void eat();}class Child exte...

2019-08-26 15:30:22 191

原创 Java面试:基础部分(三)

21、写clone()方法时,通常都有一行代码,是什么?clone 有缺省行为,super.clone();因为首先要把父类中的成员复制到位,然后才是复制自己的成员。 22、面向对象的特征有哪些方面 计算机软件系统是现实生活中的业务在计算机中的映射,而现实生活中的业务其实就是一个个对象协作的过程。面向对象编程就是按现实业务一样的方式将程序代码按一个个对象进行组织和编写,让...

2019-07-16 15:20:55 150

原创 Java面试:基础部分(二)

11、"=="和equals方法究竟有什么区别? (单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚)==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。如果一个变量指向的数据是对象类型的,那么,这时候涉及了两...

2019-07-14 20:51:47 120

原创 Java面试:基础部分(一)

不积跬步无以至千里,学习也是这样,所以我们需要每天进步一点点....... 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法。1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public类,且public类名...

2019-07-12 10:49:41 123

原创 Java并发:Java并发编程基础

概述: Java从诞生开始就明智地选择了内置对多线程的支持,这使得Java语言相比同一时期的其他语言具有明显的优势。线程作为操作系统调度的最小单元,多个线程能够同时执行,这将显著提升程序性能,在多核环境中表现得更加明显。但是,过多地创建线程和对线程的不当管理也容易造成问题。1、 线程简介 1.1 什么是线程 现代操作系统在运行一个程序时,会为其...

2019-06-29 20:48:13 98

原创 Java并发:Java内存模型(四)

这里接着讲锁的内存语义5.锁的内存语义 众所周知,锁可以让临界区互斥执行。这里将介绍锁的另一个同样重要,但常常被忽视的功能:锁的内存语义。 5.1锁的释放和获取的内存语义 当线程释放锁时,JMM会把该线程对应的本地内存中的共享变量刷新到主内存中。以上面的MonitorExample程序为例,A线程释放锁后,共享数据的状态示意图如图3-25所示。 ...

2019-06-29 18:16:46 165

原创 Java并发:Java内存模型(三)

接上一篇讲到了重排序和顺序一致性的问题,这里继续4.volatile的内存语义 当声明共享变量为volatile后,对这个变量的读/写将会很特别。为了揭开volatile的神秘面纱,下面将介绍volatile的内存语义及volatile内存语义的实现。 4.1 volatile的特性 理解volatile特性的一个好方法是把对volatile变量...

2019-06-28 10:53:07 111

原创 Java并发:Java内存模型(二)

接上一篇讲到了Java内存模型的基础 ,本篇接着来谈谈重排序 的问题2 .重排序 重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。 2.1 数据依赖性 如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分为下列3种类型,如表3-4所示。 上面3种情况,...

2019-06-28 10:03:25 132

原创 Java并发:Java内存模型(一)

概述 Java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰Java程序员,本系列将揭开Java内存模型神秘的面纱。本系列大致分为4个部分:Java内存模型的基础,主要介绍内存模型相关的基本概念; Java内存模型中的顺序一致性,主要介绍重排序与顺序一致性内存模型; 同步原语,主要介绍3个同步原语(synchronized、volatile和final)的内存语义及...

2019-06-27 11:36:22 176

原创 java并发:synchronized的实现原理与应用

前言:在多线程并发编程中synchronized一直是元老级角色,很多人都会称呼它为重量级锁。先来看下利用synchronized实现同步的基础:Java中的每一个对象都可以作为锁。具体表现 为以下3种形式。 ·对于普通同步方法,锁是当前实例对象。 ·对于静态同步方法,锁是当前类的Class对象。 ·对于同步方法块,锁是Synchoni...

2019-06-26 17:31:51 169

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除