自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Foo

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

转载 Mysql数据的时间类型对应的java时间类型

mysql的时间日期存储格式如下:year xxxx(年)time xx:xx:xx(时分秒) 只表示时间date xxxx-xx-xx(年月日) 只表示日期datetime xxxx-xx-xx xx:xx:xx(年月日 时分秒) 表示日期和时间timestamp xxxx-xx-xx xx:xx:xx(年月日 时分秒) 精确表示日期和时间java中的时间日期表示

2021-02-20 18:09:56 10228 2

转载 小议mybatis plus相比传统mybatis手写SQL的好处

一、场景描述假设有两张表:一张商品表、一张订单表,具体表的字段如下:商品表和订单表是一对多的关系,一个商品可以有多个订单。现有如下需求:1、 发送通知求:某一特定类别的商品,购买成功后需要发送通知给下单的客户,下单后默认通知状态为未发送,发送成功标记已发送。2、 查询需求:查询某一用户的订单列表,列出订单信息和订单的商品信息。供给用户购买记录页面呈现使用。二、发送通知需求(传统mybatis写法 和 mybatis plus 对比)传统的mybatis做ORM映射工具并手写sql的时代,常规

2021-02-18 15:58:30 1536

转载 一个@Transactional哪里来这么多坑?

前言这篇文章我们来聊一聊平常工作时使用事务可能出现的一些问题(本文主要针对使用@Transactional进行事务管理的方式进行讨论)以及对应的解决方案事务失效事务回滚相关问题读写分离跟事务结合使用时的问题事务失效事务失效我们一般要从两个方面排查问题数据库层面数据库层面,数据库使用的存储引擎是否支持事务?默认情况下MySQL数据库使用的是Innodb存储引擎(5.5版本之后),它是支持事务的,但是如果你的表特地修改了存储引擎,例如,你通过下面的语句修改了表使用的存储引擎为My

2020-11-03 09:08:11 653

转载 Redis五大数据类型使用场景

Redis是一种基于键值对的NoSQL数据库,它的值主要由string(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)五种基本数据结构构成,除此之外还支持一些其他的数据结构和算法。key都是由字符串构成的,那么这五种数据结构的使用场景有哪些?一起来看看!一 字符串字符串类型是Redis最基础的数据结构,字符串类型可以是JSON、XML甚至是二进制的图片等数据,但是最大值不能超过512MB。1.1 内部编码Redis会根据当前值的类型和长度决定使用哪种内部编码来实现

2020-11-02 22:32:41 318

原创 狂刷牛客的Java专题,我总结出易错的异常题型

异常异常是指程序运行时(非编译)所发生的非正常情况或错误,当程序违反了语言规则,jvm就会将出现的错误表示一个异常抛出。异常也是java 的对象,定义了基类 java.lang.throwable作为异常父类。 这些异常类又包括error和exception。两大类error类异常主要是运行时逻辑错误导致,一个正确程序中是不应该出现error的。当出现error一般jvm会终止。exception表示可恢复异常,包括检查异常和运行时异常。检查异常是最常见异常比如IO异常、SQL异常,都发生在**编

2020-10-24 20:13:29 189

原创 狂刷牛客的Java专题,我总结出易错的类型转换题型

类型转换刷了牛客的Java专题,整理出常见易错的数据类型转换的面试题,以此希望巩固一下自己的基础知识,也希望能帮到正在学Java的朋友。将低精度int向上转型到float,由于java的特性导致而不需要进行强制转换;如果没有这个f,就默认是double类型了由于float的精度没有double类型高,因此必须对其进行显式的格式书写。 float x=1; //正确 float y=1.0f; //正确 float z=1.0; //错误 double x = 1.0d /

2020-10-22 18:00:41 199

转载 java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

1. 概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型

2020-10-11 10:21:33 596

原创 ServletContext、Session、Request

ServlerContext的对象由Web容器在启动项目时创建,该对象可用于从web.xml文件获取配置信息.每个Web应用程序只有一个ServletContext对象.如有信息要共享给多个Servlet,可以在web.xml文件中使用标签.例1:处理中文乱码,统一编码:在web.xml中: <context-param> <param-name>encoding</param-name> <param-value>U

2020-10-06 22:22:39 381

原创 @Autowired注入的对象总为null

在 shiro-spring结合的框架实验中: @Autowired注入的sysUserDao总是为nullReaml 中的代码:public class ShiroRealm extends AuthorizingRealm { @Autowired private SysUserDao sysUserDao; /** * 登录认证 * * @param authenticationToken * @return * @th

2020-09-23 18:30:32 2554

原创 通过 JProfiler排查OOM异常

在学习 JVM过程中使用到两个软件:Java Visualvm用于演示对象分配过程;JProfiler 用于排查出现异常的问题所在,有利于 JVM调优。JProfiler 测试版本:11.0Java Visualvm:1.8JDK:1.8IDEA:2019.11.写一个会OOM的程序public class Main { public static void main(String[] args) { //StackOverflowError

2020-08-18 23:01:21 585

原创 Java 的类加载过程

一般来说, Java 的类加载过程分为三个主要步骤:加载,连接,初始化,具体行为在 Java 虚拟机规范里有非常详细的定义。加载(Loading)类的加载是指把类的字节码文件数据读入到内存中,通常是创建一个字节流读入字节码文件,然后在堆中产生与所加载类对应的Class对象。字节码数据源可以是 jar 文件、class 文件、网络数据源等。连接(Linking)把原始的类定义信息平滑地转入 JVM 运行的过程中,可以细分成三个步骤:验证:目的是确保Class文件的字节流中包含的信息符合JVM约束

2020-08-12 09:49:29 210

转载 Java中PO、BO、VO、DTO、POJO、DAO概念及其作用和项目实例图

PO(bean、entity等命名):Persistant Object持久对象,数据库表中的记录在java对象中的显示状态最形象的理解就是一个PO就是数据库中的一条记录。好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。BO(service、manager、business等命名):Business Object业务对象主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。形象描述为一个对象的形为和动作,当然也有涉及到基它对象的一些形为和动作。比如处理一个人

2020-08-09 19:36:28 839

转载 MySQL | Spring 事务传播特性和隔离级别

事务的ACID特性是什么?ACID其实是事务特性的英文首字母缩写,具体的含义是这样的:原子性(atomicity)一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作。一致性(consistency)数据库总是从一个一致性的状态转换到另外一个一致性的状态。隔离性(isolation)通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。持久性(durability)一旦事务提交,则其

2020-08-07 21:37:33 141

原创 简单理解 Java内部类

内部类在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这三种:成员内部类、局部内部类、匿名内部类。三种内部类定义及使用如下:public class Outter { //成员内部类,定义在类内部的类 class UserInner { void user() { System.out.println("调用了成员内部类的方法"); } } //

2020-08-07 15:03:29 276

原创 简单理解参数引用 ${}和 #{}

参数的引用有两种常见的方式:${} 和 #{},但是${}存在SQL注入的安全问题。SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。来看一个例子:在mybatis中,如果使用 ${} 来进行参数引用:<select id="selectUserInfo" parameterType = "java.util.Map" resultMap ="BaseResultMap"> sele

2020-08-01 22:38:23 696

原创 Java抽象类、接口

抽象类抽象类是一个特殊的普通类,只要是一个普通类中可以定义的东西在抽象类中也可以定义特点:抽象类中可以构造方法,构造函数可以是私有的,任何一个类的构造函数都可以私有化;抽象类中可以存在普通属性,方法,静态属性和方法;如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法;抽象类中的抽象方法,需要有子类全部实现,如果子类不实现,则子类也需要定义为抽象的;抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰;关键字使用注意:抽象类中的抽象方法(其前有abst

2020-07-31 23:28:29 346

原创 常见运算符及举例详解

运算符符号意义|按位或||逻辑或&按位且(1&1=1,其他为0)&&逻辑与~按位取反^按位异或(相同是0 不同是1)!非<<左移,补0,相当于乘以2(例:2<<3 = 8,乘以2的3次方的意思)>>右移,补符号位,相当于除以2(例:8>>3 = 1)>>>无符号右移,补0(上面节选几个结合例题讲一下,比较容易混

2020-07-31 22:11:01 1834

转载 浅谈Java中的 hashCode方法

浅谈Java中的 hashCode方法文章转载自:https://www.cnblogs.com/dolphin0520/p/3681042.html哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:public native int hashCode();根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现。一、hashCode方法的作用:hash

2020-07-29 20:39:42 182

原创 简单理解 Object 类

Object 类是类层次结构的根类。每个类都使用 Object 作为超类。所有对象,包括我们自定义的类都实现这个类的方法。1.clone方法创建并返回此对象的一个副本。用于保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。 笔试题中,常与 copy() 相混淆,注意区分,Object类没有 copy() 方法!!2.getClass方法final 修饰的方法,返回此 Object 的运行时类型。publi

2020-07-29 19:54:47 286

原创 简单理解String的 intern() 方法

提示:对于接触Java不久的小萌新,或者对String还不熟的朋友,可以先看一下上一篇博文:关于String的小知识点,预热一下,或许能够帮助你理解接下来的内容。String.intern()原理String.intern()是一个Native方法,底层调用C++的 StringTable::intern 方法。原理:当调用 intern 方法时,如果常量池中已经有该字符串,则返回池中的字符串;否则将此字符串添加到常量池中,然后返回常量池中字符串的引用。String.intern()在JDK.

2020-07-28 20:30:14 368 1

原创 简单理解String的 substring() 方法

substring()在String中提供了两个sunstring()方法 //截取从begin到str.length()-1内容 subString(begin) //截取指定范围的内容 str1.subString(begin,end) String str = "asdfghjk"; System.out.println(str.substring(2)); //dfghjk //从下标为2的位置开始截取,第4个位置停止截取,结果

2020-07-27 23:35:16 14785 1

原创 String的小知识点

String 类字符串广泛应用在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。String的两点特殊性:长度不可变值不可变这两点从源码中对String的声明可以体现: private final char[] value ;String 类是final类,不可以被继承。String 底层用char[] 实现,故String的长度为2^16-11.常用方法:int length(); //获取字符串长度 char charA

2020-07-27 16:57:26 693

原创 关于++i 和 i++ 的一道面试题

直接看题目: public void autoIncre() { int i = 1; i = i++; int j = i++; int k = i + ++i*i++; System.out.println(i); System.out.println(j); System.out.println(k);}这道题的结果为:i = 4j = 1k = 11首先要知道:= 右边

2020-07-23 22:01:22 601

空空如也

空空如也

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

TA关注的人

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