自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刺猬小颖

保持初心,探索未知。

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

原创 RBAC支持公认的安全原则

RBAC(Role-Based Access Control )基于角色的访问控制。RBAC认为权限的过程可以抽象概括为:判断【Who是否可以对What进行How的访问操作】这个逻辑表达式的值是否为True的求解过程。即将权限问题转换为Who、What、How的问题。who、what、how构成了访问权限三元组。RBAC支持公认的安全原则:最小特权原则、责任分离原则和数据抽象原则。最小特权原则得到支持,是因为在RBAC模型中可以通过限制分配给角色权限的多少和大小来实现,分配给与某用户对应的角色的权

2020-11-30 02:15:53 1152 1

原创 char的toString()是取地址值,String.valueOf()拿到数值

char的toString()是取地址值,String.valueOf()拿到数值public class Solution { public static void main(String[] args) { String s = "-46"; char[] chars = s.toCharArray(); System.out.println(chars); System.out.println("chars:" + chars

2020-11-08 23:22:56 291

原创 final、finalize、finally异同,以及final关键字如何使用

final、finalize()、finally性质不同1.final为关键字;2.finalize()为方法;3.finally为区块标志,用于try语句中;作用1.final为用于标识常量的关键字,final标识的关键字存储在常量池中;final用于声明属性、方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。2.finalize()方法在Object中进行了定义,用于在对象“消失”时,由JVM进行调用用于对对象进行垃圾回收,类似于C++中的析构函数,可以覆盖此方法提供垃圾收集时的其他资源;用户

2020-09-22 09:35:21 733

原创 String类的常用方法

String类的常用方法有那些?charAt: 返 回 指 定 索 引 处 的 字 符indexOf(): 返 回 指 定 字 符 的 索 引replace(): 字 符 串 替 换trim(): 去 除 字 符 串 两 端 空 白split():分割字符串,返回一个分割后的字符串数组getBytes(): 返 回 字 符 串 的 byte 类 型 数 组length(): 返 回 字 符 串 长 度toLowerCase():将字符串转成小写字母toUpperCase():将字符串转成

2020-09-22 09:08:12 104

原创 mysql基本语句

–mysql基本语句–连接数据库mysql -u root -p;–创建数据库mysql> create database school;–展示数据库mysql> show databases;–删除数据库mysql> drop database school;–使用数据库mysql> use school;–创建数据表create table student( sid int, sno varchar(10), sname varchar(20));

2020-09-17 10:19:33 70

原创 SpringMvc之helloSpringMvc注解版入门

SpringMvcHello SpringMVC步骤新建一个maven的web项目导入相关jar包编写web.xml,注册DispatcherServlet编写springmvc-servlet配置文件创建对应的控制类,controller建jsp,完善前端视图与controller之间的对应运行调试pom.xml<dependencies> <dependency> <groupId>junit</gro

2020-09-12 11:34:50 139 1

原创 mybatis缓存

mybatis缓存[cache]1.缓存[cache]什么是缓存?存在内存中的临时数据将用户经常查询的数据放在缓存[内存]中,用户去查询数据不用再磁盘上(关系型数据库数据文件)查询,在缓存中查询,从而提升查询效率,解决了高并发系统的性能问题。为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率。什么样的数据可以使用缓存?经常查询并且不经常修改的数据查询: 连接数据库,消耗资源​ 一次查询的结果,给它暂存到一个可以直接取到的地方。—>内存:缓存

2020-09-11 19:04:28 64

原创 报错org.apache.ibatis.cache.CacheException: Error serializing object.

org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializableException: com.jy.pojo.Student。去实体类实现一下序列化即可。public class Student implements Serializable {}

2020-09-11 17:06:47 221

原创 mybatis动态sql

mybatis动态sql什么是动态sql?动态sql就是根据不同的条件生成不同的sql语句。利用动态 SQL,可以彻底摆脱sql语句拼接的这种痛苦。如果你之前用过 JSTL 或任何基于类 XML 语言的文本处理器。在 MyBatis 之前的版本中,需要花时间了解大量的元素。借助功能强大的基于 OGNL 的表达式,MyBatis 3 替换了之前的大部分元素,大大精简了元素种类,现在要学习的元素种类比原来的一半还要少。ifchoose (when, otherwise)trim (where, s

2020-09-11 15:39:31 94

原创 mybatis一对多处理

mybatis一对多处理搭建环境@Datapublic class Student { private int id; private String name; private int tid;}@Datapublic class Teacher { private int id; private String name; //一个老师有多个学生 private List<Student> students;}publi

2020-09-10 23:45:08 69

原创 mybatis多对一处理

mybatis多对一处理1.环境搭建多个学生,对应一个老师对于学生而言,关联。。多个学生,关联一个老师【多对一】对于老师而言,集合,一个老师,有很多老师【一对多】建表CREATE TABLE `teacher`( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY(`id`))ENGINE=INNODB DEFAULT CHARSET=utf8INSERT INTO teacher(`id`,

2020-09-10 22:39:05 98

原创 idea中的xml文件的中文乱码问题

全部设置成utf-8 就可以了!!!

2020-09-10 22:28:37 2296

原创 mybatis使用limit进行分页

分页分页可以减少数据的处理量,实际应用非常广泛1.使用limit分页【重点】sql语句select * from user limit startIndex,pageSize使用mybatis实现分页,核心sql接口//分页查询List<User> getUserByLimit(Map<String, Integer> map);配置文件UserMapper.xml<select id="getUserByLimit" parameterType

2020-09-10 16:21:01 635

原创 插件Lombok简单使用

插件Lombok它可以通过注解的形式自动生成构造器、getter、setter、equals、toString等方法。提高了一定的开发效率。可以让代码变得简洁。不用过多的去关注相应的方法、属性做修改时,也简化了维护为这些属性所生成的getter、setter方法等。但同时也大大降低了源代码的可读性和完整性,降低了阅读源代码的舒适度。搜索安装Lombok插件导入lombok的jar包<dependency> <groupId>org.projectlomb

2020-09-10 16:15:02 83

原创 mybatis日志之标准日志STDOUT_LOGGING与log4j简单使用

日志1.日志工厂如果一个数据库操作,出现了异常。排错的时候,日志是最好的助手。之前:sout、debug现在:日志工厂设置名描述有效值默认值logImpl指定 MyBatis 所用日志的具体实现,未指定时将自动查找。描述SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING有效值未设置默认值重点掌握LOG4J 、 STDOUT_LOGGING。但是

2020-09-10 10:37:12 6836

原创 Mybatis使用注解开发与简单CRUD

Mybatis使用注解开发1.使用注解开发注解在接口上实现,不需要UserMapper.xml@Select("select * from user")List<User> getUsers();在核心配置文件中绑定接口<mappers> <mapper class="com.jy.dao.UserMapper"/></mappers>测试@Testpublic void getUserTest() { Sq

2020-09-10 10:30:10 58

原创 Mybatis解决属性名和数据库字段名不一致的问题

Mybatis解决属性名和数据库字段名不一致的问题例如:数据库:id name password属性名:id username passwordselect * from user where id = #{id}//类型处理器select id,name as username,password from user where id = #{id}解决:起别名(简单粗暴,不推荐使用)<select id="getUserById" resultType="com.

2020-09-09 14:19:40 166

原创 Mybatis配置 简单解析

Mybatis配置解析1.核心配置文件mybatis-config.xmlMyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境配置)environment(环境变量)tran

2020-09-09 12:38:00 76

原创 mybatis简单使用like进行模糊查询

简单模糊查询//模糊查询接口List<User> getUserLike(String value);java代码执行的时候,传递通配符% %List<User> user = mapper.getUserLike("%y%");在sql拼接的时候使用通配符select * from mybatis.user where name like "%"#{value}"%"详细代码 @Test public void getUserLike

2020-09-08 23:40:00 214

原创 mybatis中的万能map使用

万能map在字段比较多的时候用map非常方便,在项目中应用非常多。接口中//万能的mapint addUser1(Map<String, Object> map);xml中<!--用map类型,对象的属性可以直接取出来,传递map的key,values后面可自定义名字,无需完全匹配数据库,但是测试的时候,字段要和values后面的一样--><insert id="addUser1" parameterType="map"> insert int

2020-09-08 22:53:39 643

原创 mybatis的简单CRUD

mybatis的 CRUD首先要注意:namespace中的包名要和Dao/Mapper接口的包名一致<mapper namespace="com.jy.dao.UserDao">增删改要提交事务!id:就是对应的namespace中的方法名resultTYpe:sql语句执行的返回值parameterType:参数类型<select id="getUserList" resultType="com.jy.pojo.User"> select *

2020-09-08 22:24:24 51

原创 mybatis根据官网的快速入门写的简单入门案例

参考官网入门https://mybatis.org/mybatis-3/zh/getting-started.html1搭建环境在数据库中建一个mybatis的user表,id,name,password.CREATE DATABASE `mybatis`;USE `mybatis`;CREATE TABLE `user`( `id` INT(20) NOT NULL PRIMARY KEY, `name` VARCHAR(30) DEFAULT NULL, `password` V

2020-09-08 18:52:20 102

原创 报错 资源绑定失败org.apache.ibatis.binding.BindingException: Type interface...

要在mybatis-config.xml中加入这个以下语句。每一个Mapper.xml文件都需要在mybatis-config.xml核心配置文件中注册<mappers> <mapper resource="com/jy/dao/UserMapper.xml"></mapper></mappers>

2020-09-08 18:04:47 810

原创 Maven导出资源过滤问题

Maven导出资源过滤问题。在父级pom.xml中加入以下代码,也有可能不好用,那就再加到子pom.xml中.<!--在build中配置resources,来防止我们资源导出失败的问题,几乎每一个maven工程中都要配置--><build> <resources> <resource> <directory>src/main/resources</directory>

2020-09-08 18:02:46 97

原创 学习mybatis出现的java.lang.ExceptionInInitializerError

排除掉配置文件没有注册,排除掉Maven导出资源问题。。还在报错把所有xml中的注释都删除掉就可以了。。好迷呀运行结果!!!

2020-09-08 17:56:34 221

原创 简述序列化和Serializeable

简述序列化序列化:将对象写入到IO流(ObjectOutputStream)=>将对象转换为字节序列化的过程。反序列化:从IO流中恢复对象(ObjectInputStream)=>把字节序列恢复为对象的过程。意义:序列化机制允许将实现序列化的java对象转换为字节序列。这些字节序列可以保存在磁盘上,或通过网络传输,以达到以后恢复成原来的对象。系列化机制使得对象可以脱离程序的运行而独立存在。使用场景:所有可在网络上传输的对象都必须是可序列化的,比如RMI(remote

2020-08-23 11:10:14 357

原创 简述类加载器子系统

简述类加载器子系统图解:作用:负责从文件系统或者网络中加载Class文件,Class文件在文件开头有特定的文件标识ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)过程:加载->链接->初始化加载loading:过程:引导类

2020-08-22 23:54:14 122

原创 简述JVM内存模型及垃圾回收

JVM内存模型运行时数据区->方法区、堆、虚拟机栈、本地方法栈、程序计数器程序计数器:它是一块很小的内存空间,几乎可以忽略不计。也是运行速度最快的存储区域。在JVM规范中,每个线程都有它自己的程序技术器,是线程私有的,生命周期与线程的生命周期保持一致。PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。它是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域问:使用PC寄存器存储字节码指令地址有什么

2020-08-22 23:29:12 85

原创 java中 8大基本类型

1. JAVA中的几种基本类型,各占用多少字节? 数据类型 基本数据类型 数值型 整数类型(byte,short,int,long) 浮点类型(float,double) 字符型(char) 布尔型(boolean) 引用数据类型 类(class) 接口(interface) 数组下图单位是bit,非字节 1B = 8bit

2020-08-21 15:43:15 129

原创 简述线程池 以及四种常见线程池

线程池概念线程池就是首先创建一些线程,他们的集合称为线程池,使用线程池可以很好的提高性能。5种状态ThreadPoolExecutor 使用int的高3位来表示线程池状态,低29位表示线程数量状态名高3位说明Running111(这里的第一个1是负数)正在运行状态ShutDown000不接收新的任务,但会处理阻塞队列中剩余的任务Stop001不接收新的任务,并抛弃阻塞队列中的剩余任务Tidying010任务全执行完毕,活动线程为0即将

2020-08-21 15:40:45 685

原创 Redis缓存穿透,缓存雪崩

Redis缓存穿透,缓存雪崩缓存穿透问题=>现象:用户大量并发请求的数据(key)对应的数据在redis和数据库中都不存在,导致尽管数据不存在但还是每次都会进行查DB。=>为什么key对应数据在缓存和db中不存在但还是都进行db查询呢?​ 因为很多人写的代码逻辑都是先在redis缓存中查一把,如果缓存中为空就去db中查。如果db中查到的数据不为空则设置到缓存并返回给接口。那么问题就来了,如果从db中查询的数据为空呢?=>解决方案:​ 从db中查询出来数据为空,也进行空数据的

2020-08-21 15:30:59 83

原创 mysql技术内幕--innodb存储引擎图解(超级详细)

方便自己查看。这篇图解超级详细。mysql技术内幕–innodb存储引擎图解(超级详细)

2020-08-21 00:22:07 123

原创 值引用与对象引用,代码测试

=>一般认为,java内的传递都是值传递。=>值传递是对基本型变量而言的,传递的是该变量的副本,改变副本不影响原变量。=>引用传递一般是对对象变量而言的,传递的是该对象地址的一个副本,并不是原对象的本身,所以对引用对象进行操作会同时改变原对象。代码测试:public class ValuePassed { public int value; public ValuePassed(int value) { this.value = value;

2020-08-20 23:02:26 119 1

原创 ArrayList和LinkedList异同 加部分源码

都实现了List接口。都是线程不安全的。(区别:简单来说 ArrayList 只有查询快,其余都是LinkedList快,LinkedList更占内存)ArrayList是基于索引的数据接口,底层是动态数组。它可以以O(1)时间复杂度对元素进行随机访问。LinkedList使用双向链表实现存储,每一个元素都和它的前一个和后一个元素链接在一起,这种情况下,查找某个元素的时间复杂度是O(n).但是相对于ArrayList,它的插入、添加、删除操作速度更快。因为当元素被添加到集合任意位置的时候,不需要

2020-08-20 18:47:27 88

原创 equals 和 == 区别,代码测试

== 是一个运算符  基本类型:比较的就是值是否相同  引用类型:比较的就是地址值是否相同(即两个引用是否指向同一个对象实体)public static void main(String[] args) { String a = "aaa"; String b = "aaa"; String c = a; int d = 1; int e = 1; int f = d; System.out

2020-08-20 16:23:50 70

原创 工厂模式之静态工厂模式和工厂方法模式

1.简介工厂模式作用:实现了创建者和调用者的分离详细分类:静态工厂模式:用来生产同一等级结构中的任意产品(对于增加新的产品,需要覆盖已有的代码),又叫简单工厂模式工厂方法模式:用来生产统一等级结构中的固定产品(支持增加的任意产品)抽象工厂模式:围绕一个禅机共产创建其他工厂,该超级工厂又称为其他工厂的工厂(工厂的工厂)。核心本质:实例化对象不使用new,用工厂方法代替。将选择实现类,创建对象统一管理和控制,从而将调用者跟我们的实现类解耦。应用场景:JDK中Calendar的

2020-08-20 15:13:35 1815

原创 OOP七大原则

开闭原则:对扩展开放,对修改关闭。=>理想情况下。当我们需要增加一个新的功能时,只需要从原来的类中潘生出一些新的类就可以,不需要修改原来的任何一行代码。里氏替换原则:继承必须确保超类所拥有的的性质在子类中仍然成立。=>任何时候都可以用子类替换掉父类型。=>注意:子类是增加父类的能力,而不是减少父类的能力,因为子类比父类能力更多,把能力多的对象当成能力少的对象来用肯定没有问题。=>举例:让长方形去继承正方形就是错误的依赖倒置原则:要面向接口编程,不要面向实现编程。=&gt

2020-08-20 14:05:40 119

原创 单例模式之静态内部类

静态内部类也是懒汉式/** * 静态内部类 */public class Singleton4 { private Singleton4(){ } //问题一:属于懒汉式还是饿汉式 => 懒汉式,有需要才被创建 private static class LazyHolder{ static final Singleton4 s4 = new Singleton4(); } //问题二:在创建时是否有并发问题 => 没有,类

2020-08-20 13:39:04 82

原创 单例模式之懒汉式

两版懒汉式第一版直接将synchronized加入到类上第二版采用DCL模式,性能更好。//第一版 锁的范围太大,性能比较低public class Singleton2 { private Singleton2(){ } private static Singleton2 singleton2; public synchronized static Singleton2 getInstance(){ if(singleton2 == null){

2020-08-20 13:37:31 88

原创 单例模式之枚举单例

/** * 枚举单例 */// 问题1:枚举单例是如何限制实例个数的 =>反编译后可以看到 就是我们枚举类的一个静态成员变量而已,单实例的// 问题2:枚举单例在创建时是否有并发问题// =>没有,因为它也是静态成员变量,它的线程安全性也是在类加载阶段完成的。那个时候不会有线程并发问题// 问题3:枚举单例能否被反射破坏单例 =>不能!所以这是枚举的一大优势// 问题4:枚举单例能否被反序列化破坏单例// =>enum底层实现了序列化接口,所以就默认可以序

2020-08-20 13:32:17 181

空空如也

空空如也

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

TA关注的人

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