自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (1)
  • 收藏
  • 关注

原创 使用Redis作为Mybatis内置缓存

redis作为最优秀的key-value数据库,非常适合提供项目的缓存服务。把redis作为mybatis的查询缓存也是很常见的做法。在网上发现N多人是自己做的Cache,其实在mybatis的git下有一个子项目mybatis-redis;这个项目提供了redis作为mybatis查询缓存的一个实现,下面先分析一下这个项目的实现原理,再提出几个项目的问题:代码实现该项目和大家普遍实现Myba...

2018-09-21 16:11:49 2689

原创 Mybatis中@Param注解详细使用和原理分析

对于目前市场上火爆的持久层框架MyBatis相信大家在工作中肯定是用得很多,但是你对其mapper接口代理对象和其方法上的@Param注解又了解多少呢?废话不多说,接来下就给大家来分析下MapperRegistryMapperRegistry是用于注册和缓存当前框架中所有的mapper接口public class MapperRegistry { //框架的配置对象 private...

2018-09-21 16:05:50 15498 3

转载 线程并发--原子变量解决自增自减原子性问题

本文作者:黄海燕,叩丁狼高级讲师。原创文章,转载请注明出处。前言线程并发问题一直都是面试的时候经常问的问题,为什么那些面试官、老总喜欢问这些问题呢,因为多线程运行起来要比快呀?那多线程就真的要比单线程快?在我看来未必,因为多线程存在上下文切换[1]、线程死锁、以及一些受限于硬件的问题。所以今天我们就面试当中的一些问题,一起来学习并解决线程并发问题。自增自减原子性问题曾经我遇到过这...

2018-09-20 11:33:44 804

原创 Java使用WebSocket完成聊天室

本文作者:禹明明,叩丁狼高级讲师。原创文章,转载请注明出处。WebSocket是基于TCP的一种新的网络协议,最大的特点就是实现了浏览器与服务器全双工(full-duplex)通信,2011年WebSocket协议被接受为国际标准HTML5开始提供WebSocket协议的支持。什么叫全双工通讯? 其实就是通信的双方都可以主动发送消息,又可以接受消息.WebSocket协议之前,全双工通信...

2018-09-20 11:32:20 416 1

转载 Mybatis中mapper的实现原理

本文作者:钟昕灵,叩丁狼高级讲师。原创文章,转载请注明出处。相信只要是使用过MyBatis开发的同学,都有使用其中的Mapper接口来开发,因为确实是很方便,方便到我们只需要编写接口而不需要写实现类,就能够完成对数据库的CRUD操作,但是不知道大家有没有去思考过,如果我们真的只有Mapper接口的话,程序又是如何去完成实际的业务的呢?来看看下面的代码cn.wolfcode.mybatis....

2018-09-20 11:30:23 2753

原创 【小白看的Java教程】第三十七章,Mr.R和Mr.W:Java中的IO【荐】

File类(掌握)File课理解为文件和文件夹(目录),用于表示磁盘中某个文件或文件夹的路径。该类包含了文件的创建、删除、重命名、判断是否存在等方法。只能设置和获取文件本身的信息(文件大小,是否可读),不能设置和获取文件里面的内容。Unix: 严格区分大小写,使用”/”来表示路径分隔符。Windows: 默认情况下是不区分大小写的,使用”\”来分割目录路径。但是在Java中一个...

2018-09-19 10:39:42 362

原创 【小白看的Java教程】第三十六章,牛头对马嘴:Map【荐】

认识Map(理解)Map,翻译为映射,在数学中的解释为:设A、B是两个非空集合,如果存在一个法则f,使得A中的每个元素a,按法则f,在B中有唯一确定的元素b与之对应,则称f为从A到B的映射,记作f:A→B。也就是说映射表示两个集合之间各自元素的一种“对应”的关系,在面向对象中我们使用Map来封装和表示这种关系。从定义和结构图上,可以看出Map并不是集合,而表示两个集合之间的一种关系,故...

2018-09-19 10:38:30 235

原创 【小白看的Java教程】第三十五章,贝联珠贯:排序

Comparable接口(了解)缺省情况下,TreeSet中的元素会采用自然排序(从小到大),此时要求元素对象必须实现java.util.Comparable接口,大多数JDK自带的类都实现了该接口,比如八大包装类和String。TreeSet会调用元素的compareTo方法来比较元素的大小关系,然后将集合元素按照升序排列。public interface Comparable<T&...

2018-09-19 10:28:28 192

原创 【小白看的Java教程】第三十四章,Set结构

集合元素遍历(掌握)对集合中的每一个元素获取出来。List<String> list = new ArrayList<>();list.add("西施");list.add("王昭君");list.add("貂蝉");list.add("杨玉环");使用for遍历for (int index = 0; index < list.siz

2018-09-19 10:27:48 196

原创 【小白看的Java教程】第三十三章,列队出发

集合框架体系集合是Java中提供的一种容器,可以用来存储多个数据,根据不同存储方式形成的体系结构,就叫做集合框架体系(掌握)。每一种容器类底层拥有不同的底层算法。既然数组可以存储多个数据,为什么要出现集合?+ 数组的长度是固定的,集合的长度是可变的。+ 使用Java类封装出一个个容器类,开发者只需要直接调用即可,不用再手动创建容器类。集合中存储的数据,叫做元素,元...

2018-09-19 10:26:48 217

原创 【小白看的Java教程】第三十二章,改善数据存在的章法:数据结构入门

Java的集合框架其实就是对数据结构的封装,在学习集合框架之前,有必要先了解下数据结构。什么是数据结构(了解)所谓数据结构,其实就是计算机存储、组织数据的方式。数据结构是用来模拟数据存储操作的,其实就是对数据做增删改查操作。+ 增:把某个数据存储到某个容器中+ 删:从容器中把某个数据删除掉+ 改:把容器中某个数据替换成另一个数据+ 查:把容器中...

2018-09-19 10:25:34 264

原创 【小白看的Java教程】第三十一章,杜绝多头管理:线程中的安全问题

继承方式VS实现方式(掌握)当多线程并发访问同一个资源时,会导致线程出现安全性的原因,看案例。案例:现有50个苹果,现在有请三个童鞋(小A、小B、小C)上台表演吃苹果。因为A、B、C三个人可以同时吃苹果,此时得使用多线程技术来实现这个案例。分析: 可以定义三个线程对象,并启动线程.第一步:每一个同学吃苹果的时候:先展示自己拿到手上苹果的编号,如1,2,3,36…第二步:再吃掉苹果(意味...

2018-09-19 10:24:12 259

原创 【小白看的Java教程】第三十章,多管齐下:线程入门

线程与并发理解线程与进程的区别(了解)进程:是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以有多个线程(1,n)。比如在Windows的任务管理器中,一个运行的xx.exe就是一个进程。线程:是指进程中的一个执行任务(控制单元),一个进程中可以运行多个线程,多个线程可共享数据。多进程:操作系统中同时运行的多个程序。多线程:在同一个进程中同时运行的多个任务。...

2018-09-18 14:20:37 206

原创 【小白看的Java教程】第二十九章,人非圣贤,孰能无过:异常

异常概述异常就是程序在运行时出现的意外的,不正常的情况或结果。若异常产生后没有正确的处理,会导致程序的中断,以致造成损失。所以我们在开发中要尽量考虑到各种可能会发生的异常,并对其作出正确的处理,确保程序的正常执行。主流编程语言大多都提供了异常处理机制。异常的继承体系(掌握)Throwable类有两个子类Error和Exception,分别表示错误和异常。Exception 和Error...

2018-09-18 14:19:55 247

原创 【小白看的Java教程】第二十八章,认识Java的一些常用类

###BigDecimal(掌握)float和double都不能表示精确的小数,使用BigDecimal类可以解决该问题,BigDecimal用于处理金钱或任意精度要求高的数据。BigDecimal不能直接把赋值和运算操作,只能通过构造器传递数据,而且必须使用字符串类型的构造器,操作BigDecimal主要是加减乘除四个操作。// 使用double类型:System.out.println...

2018-09-18 14:18:21 225

原创 【给小白看的Java教程】第二十七章,进入JavaAPI,热身

工具类的设计一般的,把很多完成通用功能的方法分类存放到类中,这些类就叫工具类。+ 工具类起名:XxxUtil、XxxUtils、XxxXTool、XxxTools等,其中Xxx表示一类事物,比如ArrayUtil、StringUtil、JdbcUtil。+ 工具类存放的包起名:util、utils、tool、tools等工具类如何设计,在开发中有两种设计:+&nbsp...

2018-09-18 14:17:21 178

原创 【给小白看的Java教程】第二十六章,可胜枚举:枚举

###枚举的诞生历史(了解)在服装行业,衣服的分类根据性别可以表示为三种情况:男装、女装、中性服装。private ? type;public void setType(? type){ this.type = type}需求:定义一个变量来表示服装的分类?请问该变量的类型使用什么?使用int和String类型,且先假设使用int类型,因为分类情况是固定的,为了防止调用者乱创建...

2018-09-18 14:03:30 254

原创 【给小白看的Java教程】第二十五章,面向对象查漏补缺

this关键字(重点掌握)什么是this:表示当前对象this主要存在于两个位置:+ 在构造器中:表示当前被创建的对象+ 在方法中:哪一个对象调用this所在的方法,此时this就表示哪一个对象public class Cat { private String name; private int age; public Cat() {...

2018-09-18 14:01:32 234

原创 【给小白看的Java教程】第二十四章,生命的多样性:多态

接口(了解)接口是一种约定规范,是多个抽象方法的集合。仅仅只是定义了应该有哪些功能,本身不实现功能,至于每个功能具体怎么实现,就交给实现类完成。接口中的方法是抽象方法,并不提供功能实现,体现了规范和实现相分离的思想,也体现了组件之间低耦合的思想。所谓耦合度,表示组件之间的依赖关系。依赖关系越多,耦合性越强,同时表明组件的独立性越差,在开发中往往提倡降低耦合性,可提高其组件独立性,举一个低耦合...

2018-09-18 14:00:23 318

原创 【给小白看的Java教程】第二十三章,生命的遗传:继承

继承思想需求,使用面向对象的知识定义出老师(Teacher)、学生(Student)、员工(Employee)三个类:+ 老师:拥有名字、年龄、级别三个状态,有授课和休息两个功能+ 学生:拥有名字、年龄、学好三个状态,有学习和休息两个功能+ 员工:拥有名字、年龄、入职时间三个状态,有工作和休息两个功能代码截图如下:此时,发现三个类中的存在着大量的共同代码...

2018-09-18 13:59:38 275

原创 【给小白看的Java教程】第二十二章,我的私人财产:封装

封装思想封装是面向对象三大特征之一,其含义有两个(掌握思想):+ 把对象的字段和方法存放在一个独立的模块中(类)+ 信息隐藏,尽可能隐藏对象的数据和功能的实现细节封装的好处:1、保证数据的安全性,防止调用者随意修改数据2、提高组件的重用性,把公用功能放到一个类中,谁需要该功能,直接调用即可没有封装带来的困惑:学生类:public class Student{...

2018-09-18 13:58:27 154

原创 【给小白看的Java教程】第二十一章,面向对象的基石:类和对象

类和对象的关系(了解)面向对象思想中有两个非常重要的概念,类和对象,其中:+ 类(class),是对某一类事务的抽象描述(状态和行为),如下图的抽象女人图。+ 对象(object),表示现实生活中该类事物的个体,也称之为实例,如下图的每一个具体的女人。+ 类可以看作是对象的数据类型,就好比无论你是谁,只要是女人,那么类型就是女人。上图,从左往右看是抽象的过...

2018-09-18 13:57:36 164

原创 【小白看的Java教程】第二十章,走进新世界:面向对象入门

软件开发方式(了解)面向过程(了解)一种较早的编程思想,顾名思义该思想是站在过程的角度思考问题,强调的是我该怎么去做。即功能的执行过程,即先干啥,后干啥。面向过程思想中函数是一等公民,每个函数负责完成某一个功能,用以接受输入数据,函数对输入数据进行处理,然后输出结果数据。而每一个功能我们都使用函数(类似于方法)把这些步骤一步一步实现,使用的时候依次调用函数就可以了。...

2018-09-15 11:38:26 210

原创 【小白看的Java教程】第十九章,更复杂一点的数组操作

数组拷贝(掌握)需求:定义一个方法arraycopy完成int类型数组的拷贝实现int类型数组元素拷贝(掌握)从指定源数组中从指定的位置开始复制指定数量的元素到目标数组的指定位置。src - 源数组srcPos - 源数组中的开始索引位置dest - 目标数组destPos - 目标数据中的开始索引位置length - 要复制元素的数量代码如下:...

2018-09-15 11:37:48 310

原创 【小白看的Java教程】第十八章,有条不紊:包

打印数组元素(掌握)API中还有一个专门操作数组的工具类Arrays,该类提供了对数组元素的拷贝、元素搜索、元素排序、打印等功能方法,且该类为不同数据类型的数组都重载了相同功能的方法。需求:通过调用Arrays类中的toString方法完成打印数组元素的功能,掌握如何给类定义包、导入类以及看API文档。为类定义包-package(掌握)在开发中存在几百个Java文件,为了更好的...

2018-09-15 11:36:39 150

原创 【小白看的Java教程】第十七章,Java开发的莫邪神兵:Eclipse

Eclipse概述(了解)Eclipse 是一个开源的基于Java的可扩展开发平台。Eclipse工具本身就是采用Java语言编写的,也就意味着运行Eclipse工具必须Java的运行环境(JRE)或者JDK。下载地址:https://www.eclipse.org/downloads/eclipse-packages/如果要支持Java8以上的语法,推荐Eclipse版本在4.x...

2018-09-15 11:34:18 348

原创 【小白看的Java教程】第十六章,参数,你到底是怎么传递的?

基本类型参数(掌握)static void change(int x) { System.out.println("change before,x=" + x);//? x = 100;// 修改x变量的值 System.out.println("change after,x=" + x);//?}public static void main(Str...

2018-09-15 11:28:47 177

原创 【小白看的Java教程】第十五章,更聪明的写代码:方法

之前讲解的循环操作,可以解决的是代码重复的问题,但是此时的重复的代码必须是有规律的。那循环操作,能解决所有的代码重复吗?答案肯定是不行的,比如针对于某一种功能的重复操作,循环解决不了,终于方法就该登场了。举个例子。编写一个飞机大战游戏,程序在运行过程中,需要不断地发射子弹。假设发射子弹功能需要编写200行代码,那么,每次发射子弹都需要重复地编写这200行代码,这样的程序太low了。在开发中我们...

2018-09-15 11:27:54 298

原创 【小白看的Java教程】第十四章,让数组动起来

基本操作(重点)int[] nums = new int[]{1,3,5,7};+ 获取数组长度,语法:int size =  数组名.length;int size = nums.length; -> 输出结果4+ 获取元素值,语法:元素类型 变量名 = 数组名[index];+ 数组的索引从0开始,最大索引值是数组长度...

2018-09-15 11:26:52 231

原创 【小白看的Java教程】第十三章,物以群分:数组

JVM内存模型(掌握)JVM内存划分,人为的根据不同内存空间的存储特点以及存储的数据。+ 程序计数器:当前线程所执行的字节码的行号指示器。+ 本地方法栈:为虚拟机使用的native方法服务。+ 方法区:线程共享的内存区域,存储已被虚拟机加载的类信息、常量、静态变量即时编译器编译后的代码数据等(这个区域的内存回收目标主要是针对常量池的回收和对类型的卸...

2018-09-15 11:25:58 148

原创 【小白看的Java教程】第十二章,更精确的控制循环

嵌套循环(掌握)循环解决的是:某一个操作需要重复执行,如果一个重复的操作需要做N次,此时得使用嵌套循环。注:可以把内层循环看成是一个整体。打印直角三角形public class LoopInLoopDemo{public static void main(String[] args) { for (int line = 1; line <= 5; lin...

2018-09-15 11:25:14 193

原创 【小白看的Java教程】第十一章,翻来覆去的循环

话说唐僧师徒四人还在21世纪继续闯关,一天,师徒四人来到数字王国:第一关:Boss叫傻乎乎的唐僧叫500声帅哥。可是唐僧平时吃素,体力不好,叫200声就晕了,咋办,悟空马上变了个复读机出来,录音,播放。第二关:Boss觉得唐僧好欺负再叫他从1数到100。此时复读机用不上来了,咋办?第三关:求100以内正整数和?于是,唐僧算1到25的和,悟空算26到50的和,八戒算51到75的和...

2018-09-15 11:24:26 250

原创 【小白看的Java教程】第十章,我该选谁呢:switch

需求:根据输入的一个数字,判断是星期几?public static void main(String[] args) { System.out.println("begin..."); int weekday = 3; if (weekday == 1) { System.out.println("周一"); } else if (...

2018-09-14 22:54:42 174

原创 【小白看的Java教程】第九章,多谋善断

顺序结构(重点)如果代码里没有流程控制,程序是按照书写的格式从上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,中间没有判断和跳转,直到程序的结束。public class SequenceDemo{public static void main(String[] args) { System.out.println("A"); System.ou...

2018-09-14 22:54:02 136

原创 【小白看的Java教程】第八章,计算的基础:运算符

对常量和变量进行操作的符号称为运算符常用运算符:算术运算符赋值运算符比较运算符逻辑运算符三元运算符算术运算符(掌握)用来四则运算的符号,和小学学习的加减乘除无异。加减乘除余(了解)对于字符串而言,+符号表示连接操作,任何类型的数据和字符串相连接,结果都是字符串。public class ArithmeticOperatorsDemo1{ ...

2018-09-14 22:52:13 191

原创 【小白看的Java教程】第七章,连词成句:表达式

表达式(掌握)表达式(expression),是由数字、运算符、括号、常量、变量等以能求得结果的组合。表达式举例(下列a、b、x、y、z都表示变量)。n a + bn 3.14 + an (x + y) * z + 100基本数据类型转换(掌握)在8大基本数据类型中,boolean不属于数值类型,所以不参与转换,其他类型的转换规...

2018-09-14 22:50:37 198

原创 【小白看的Java教程】第六章,百变星君:变量

 变量(重点)通过一张不完整的房屋租赁合同,引出变量。案例:张三需要租赁李四的房屋,租赁合同如下:上述合同,相当不正规,因为正规的合同上,租客和房东都是有变动的,不能写死,在整个合同中应该是使用甲方来表示房东,乙方来表示租客,只会在最后的时候签名甲方是谁,乙方是谁。变量概述(了解)表示存储空间,可用来存放某一类型的常量,没有固定值,并可以重复使用。变量是内...

2018-09-14 22:49:56 196

原创 【小白看的Java教程】第五章,数据之本:基础数据类型

常量(掌握)常量,程序中固定不变化的值。常量分类:+ 字面量: 就表示直接给出的一个值(可以是整数、小数等),也有人称之为直接量。如整数常量1,2,3,小数常量3.14等。。+ 使用final定义的变量(后讲)数据类型(重点)生活中,数据都是有类型这个概念的,比如张三18岁,18这个数字就是整型的,买了2.5斤菜,2.5就是小数类型的,在Java中...

2018-09-14 22:49:10 216

原创 【小白看的Java教程】第四章,石器时代:Editplus

Editplus工具(了解)Editplus工具,能够友好地使用颜色区分出关键字和保留字(蓝色),以及JDK里内置的类名(红色)。使用该工具,先在文件-设置中,把保存时创建备份文件的√去掉,否则每次保存都会生成一份拓展名为bak的备份文件。要求:照着笔记配置,配好了能用即可。+ 配置编译操作(上图)和运行操作(下图)+ 如果我们需要把源文件和字节...

2018-09-14 22:48:28 789

原创 【小白看的Java教程】第三章,慢慢来,从基础语法开始

基本语法(必须记住)+ Java语言严格区分大小写,好比main和Main、system和System是完全不同的概念。+ 一个Java源文件里可以定义多个Java类,但其中最多只能有一个类被定义成public类。若源文件中包括了public类,源文件必须和该public类同名。+ 一个源文件中包含N个Java类时,成功编译后会生成N份字节码文件,即每个类...

2018-09-14 22:47:13 223

Java 单点登录开发教程(SSO)

详细阐述Java开发一个单点登录系统的原理和流程(SSO),文档为MD格式

2019-01-08

空空如也

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

TA关注的人

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