自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 MyBatis xml 踩坑记录(判断空串)

无效空串判断Java 中的 BigDecimal 是 0 (零)的话会给判定为空串,很坑。Java 中的 Integer 是 0(零)好像也是会的。所以不建议加上判断空串(因为有点无意义) <select id="findProduct"> select product_name from product <if test="price != null and price != '' "&gt

2020-11-28 23:06:32 789

原创 MyBatis 动态SQL

动态SQL动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。如果你之前用过 JSTL 或任何基于类 XML 语言的文本处理器,你对动态 SQL

2020-11-28 22:55:25 189

原创 MyBatis xml 文件符号转换

符号替换注意:不要少了 分号 ;原符号 < <= > >= & ' "替换符号 &lt; &lt;= &gt; &gt;= &amp; &apos; &quot;

2020-11-28 22:39:04 283

原创 IntelliJ IDEA 如何设置字体大小

首先打开 IDEA第一步点击 File第二步然后点击下拉列表的 Settings打开 Settings 界面第三步搜索框搜索 font第四步点击 Color Scheme Font第五步设置字体大小(笔记本15.6寸,字体大小22我觉得差不多了)第六步点击应用 APPLY第七步就能看到字体大小已经改变了第八步点击 OK...

2020-11-28 11:13:04 471

原创 Java 多线程(十)多线程三大特性

多线程有三大特性原子性、可见性、有序性什么是原子性?即一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。一个很经典的例子就是银行转账问题:列如,张三向李四转1000元,那么必然包括2个操作:1、从张三的账户减去1000元。2、李四的的账户增加1000元。这两个操作必须要具备原子性才能保证不出现一些意外的问题。我们操作数据也是如此,比如 i = i + 1;其中就包括,读取 i 的值,计算 i,写入 i。这行代码在 Java 中是不具备原子性的,则多线

2020-06-08 11:49:06 1025

原创 Java 多线程(九)ThreadLocal

ThreadLocal什么是 ThreadLocal ?ThreadLocal 提高一个线程的局部变量,访问某个线程拥有自己局部变量。 当使用 ThreadLocal 维护变量时,ThreadLocal 为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 ThreadLocal 的接口方法 ThreadLocal 类接口很简单,只有 4 个方法,我们先来了解一下:1、void set(Object value)设置当前线程的线程局

2020-06-06 23:42:20 159

原创 Java 多线程(八)死锁代码演示

死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。死锁-百度百科同步嵌套同步,容易死锁下列代码极其容易死锁,建议多试几次查看效果。/** * @Author : PengPeng * 死锁演示 (建议多试几次,或者票数改大点) * 现在有 10 张火车票,有两个窗口同时抢火车票,请使用多线程模拟抢票效果。 */publi

2020-06-06 23:27:03 222

原创 Java 多线程(七)synchronized关键字

内置的锁Java 提供了一种内置的锁机制来支持原子性。每一个 Java 对象都可以用作一个实现同步的锁,称为内置锁,线程进入同步代码块之前自动获取到锁,代码块执行完成正常退出或代码块中抛出异常退出时会释放掉锁。内置锁为互斥锁,即线程 A 获取到锁后,线程 B 阻塞直到线程 A 释放锁,线程 B 才能获取到同一个锁。内置锁使用 synchronized 关键字实现,synchronized 关键字有两种用法:1、修饰需要进行同步的方法(所有访问状态变量的方法都必须进行同步),此时充当锁的对象为调用

2020-06-06 12:23:46 161

原创 Java 多线程(六)线程安全

什么是线程安全?当多个线程同时共享,同一个全局变量或静态变量。做写的操作时(增、删、改),可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。比如说,我们现在去上厕所。就两个厕所,但是好几十人急着上厕所。然后那个厕所又没有里面锁头,你上着厕所蹲着茅坑了,别人还推开们抢你的坑位。(这样子拉屎就不安全,需要一个锁头,别人就进不来了,需要等待)例子现在有 30 张火车票,有三个窗口同时抢火车票,请使用多线程模拟抢票效果。/** * @Author : PengPen

2020-06-02 21:07:41 222

原创 Java 多线程(五)join() 方法

join() 方法当在主线程中执行 t1.join() 方法时,就认为主线程应该把执行权让给子线程 t1。/** * @Author : PengPeng * join() 方法 */public class ThreadJoinDemo01 { public static void main(String[] args) throws InterruptedException { System.out.println("====程序开始====");

2020-06-01 20:02:31 237

原创 Java 多线程(二)线程的创建方式

线程的创建方式?线程的创建方式有四种。一、继承 Thread 类创建线程类;二、通过 Runnable 接口创建线程;三、使用匿名内部类的方式;四、通过 Callable 接口和 FutureTask 类来创建线程。Thread 类定义 Thread 类的子类,并重写该类的 run() 方法,该 run() 方法的方法体就是该线程需要完成的任务。因此把 run() 方法称为执行体。创建 Thread 子类的实例,就是创建了线程对象。调用线程对象的 start() 方法来启动线程。

2020-06-01 19:17:00 223

原创 Java 多线程(一)多线程入门

线程与进程区别线程线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在UnixSystem V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernelthread),而把用户线程(user thread)称为线程。线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,

2020-06-01 19:15:59 178

原创 Java 多线程(三)用户线程和守护线程

Java中有几种线程?Java 中有两种线程,一种是用户线程,另一种是守护线程。用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止。守护线程,当进程不存在或者主线程停止,守护线程也会被停止。使用 setDaemon(true) 方法设置为守护线程。例子:/** * @Author : PengPeng * 什么是守护线程? * 进程线程(主线程挂了) 守护线程也会被自动销毁。 */public class Demo01 { public static void

2020-06-01 17:08:45 252

原创 Java 多线程(四)线程的运行状态

多线程运行状态新键状态当用 new 操作符创建一个线程时,列如 new Thread() ,线程还没有开始运行,此时线程处在新键状态。当一个线程处在新生状态时,程序还没有开始运行线程中的代码。就绪状态一个新创建的线程并不自动开始运行,要执行线程,必须调用线程的 start() 方法。当线程对象调用 start() 方法即启动了线程,start() 方法创建线程运行的系统资源,并调度线程运行 run() 方法。当 start() 方法返回后,线程就处于就绪状态。处于就绪状态的线程并不一定立即

2020-06-01 17:08:12 222

原创 MySQL 中concat函数、concat_ws函数、group_concat函数的使用

表数据1.concat() 函数功能:将多列合并为一列显示语法:concat(列1,列2,列3,…)注意:如果这些列中,有一个列的值为null,那这一行数据全部为null;SELECT CONCAT(u.`id`,u.`username`,u.`age`,u.`address`) FROM `user` u;这样看数据看的不舒服,我还可以使用 ,号分隔开;SELECT CONCAT(u.`id`,',',u.`username`,',',u.`age`,',',u.`addres

2020-06-01 14:48:09 454

原创 使用外键的优缺点?

使用外键的优缺点?优点:1、由数据库自身保证数据一致性,完整性,更可靠,因为程序很难 100% 保证数据的完整性,而用外键即使在数据库服务器宕机或者出现其它问题的时候,也能够最大限度的保证数据的一致性和完整性。(数据库和应用是一对多的关系,A应用会维护他那部分数据的完整性,系统一变大时,增加了B应用,A和B两个应用也许是不同的开发团队来做的。他们如何协调保证数据的完整性,而且一年以后如果增加了C应用呢)。2、有主键的数据库设计可以增加 ER图 的可读性,这点在数据库设计时非常重要。3、外键在一度程

2020-05-24 13:12:43 4262

原创 MySQL 中 union 和 union all 的用法

MySQL 中 union 和 union all 的用法。union 和 union all 就是把两条或多条查询 SQL 的结果经行合并;union 合并后的结果会经行去重。union all 合并后的结果不会经行去重。需要用到的数据-- 创建表 学生表CREATE TABLE `tab_student` ( `stu_id` VARCHAR (16) NOT NULL COMMENT '学号', `stu_name` VARCHAR (20) NOT NULL COMMENT

2020-05-21 19:17:16 731

原创 MySQL case函数的详细用法

case 函数MySQL 的 case 函数的语法有种:1.简单函数CASE [column_name] WHEN [value1] THEN [result1]... ELSE [default] END多表查询的时候需要注意下。CASE hero_name WHEN '盖伦' THEN '上单'WHEN '拉克丝' THEN '中单'WHEN '金克斯' THEN 'ADC'WHEN '琴女' THEN '辅助'WHEN '盲僧' THEN '打野'ELSE '混子' END

2020-05-20 14:33:55 11354

原创 MySQL里on和where的区别

插入练习数据现在有两张表 user , orders-- 用户表(user)CREATE TABLE `user`( `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户id(主键)', `username` VARCHAR(50) COMMENT '用户姓名', `age` CHAR(3) COMMENT '用户年龄');-- 订单表(orders)CREATE TABLE `orders`( `id` INT AUTO_INCREME

2020-05-18 23:03:08 477

原创 图说JVM内存模型

JVM内存模型图根据JVM规范,JVM内存共分为五个部分。方法区、堆、虚拟机栈、本地方法栈、程序计数器。JVM的内存结构大概分为方法区(Method Area):线程共享。存储类信息、常量、静态变量、即时编译器编译后的代码。堆(Heap):线程共享。所有的对象实例以及数组都要在堆上分配。回收器主要管理的对象。虚拟机栈(VM Stack):线程私有。存储局部变量表、操作栈、动态连接、方法出口、对象指针。本地方法栈(Native Method Stack):线程私有。为虚拟机

2020-05-16 13:28:59 447

原创 MySQL 默认的事务隔离级别?什么是事务?事务的特性?

MySQL 默认的事务隔离级别?什么是事务?事务的特性?读已提交(MySQL 默认隔离级别)1.什么是事务将一组业务操作中的多条sql语句当成一个整体,那么这多条sql语句要么全部执行成功,要么全部执行失败。如果有一条sql语句执行失败,则回滚已经执行成功的sql语句。2.事务的特性原子性(atomicity):表示事务是一个不可再分割的工作单元,事务中的操作要么全部执行成功,...

2020-05-07 21:59:52 586

原创 什么是脏读?不可重复读?幻读?可重复读?

什么是脏读?不可重复读?幻读?可重复读?脏读:当前事务读取到了其它事务未提交的数据。不可重复读:在一个事务中,查询结果是这个,当其它事务提交的时候,再查询发现结果变了,这种现象就是不可重复读。幻读:事务A第一次查询得到一行记录a,事务B提交修改后记录b,事务A第二次查询得到两行记录,记录a和记录b。可重复读:在一个事务中,别的事务提交了,查询结果和别的事务没提交前是一样的,查询结果不会变...

2020-05-07 21:58:58 452

原创 常说的数据库三范式到底是什么?

数据库的三范式是什么?第一范式:最基本要求,表中的每一列必须保证原子性,列不可在分割。如有一个列,年级班级。然后存储数据为,一年级一班,一年级二班。那么这是错误的,应该年级和班级分开为单独列。一年级,一班一年级,二班年级和班级单独为一列。第二范式:一张表只描述一件事情,表必须有主键(有主键是最基本的)。比如说,订单表就描述订单的,用户表就描述用户的,不应该弄在一起。学生...

2020-05-07 18:02:40 564

原创 MySQL 高级多表查询

MySQL多表查询添加练习表-- 用户表(user)CREATE TABLE `user`( `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户id(主键)', `username` VARCHAR(50) COMMENT '用户姓名', `age` CHAR(3) COMMENT '用户年龄');-- 订单表(orders)CRE...

2020-05-05 14:03:33 5859

原创 MySQL使用聚合函数单表查询

聚合函数作用于一组数据,对那组返回一个值count :统计结果记录多少条数,max: 统计最大值min: 统计最小值sum: 计算求和avg: 计算平均值注意,分组函数 group by。如果要对 分组后 的数据进行筛选,那么必须使用 having 关键字,条件写在 having 后面;where:先过滤已有的数据,在分组,在聚合函数计算;having:过滤分组之后的数据...

2020-05-01 17:28:44 1742

原创 MySQL 详细单表增删改查语句

(MySQL) 增删改查语句1.创建练习表这里练习表没有满足三范式第一范式(又称 1NF):保证每列的原子性数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。第二范式(又称 2NF):保证一张表只描述一件事情满足1NF后要求表中的所有列,每一行的数据只能与其中一列...

2020-04-28 19:59:26 3038

原创 MySQL DDL 基础语句

(MySQL) SQL 语句基础假设现在有数据库 lian_xi 里面有表 user 和 orders;1.1登陆MySQL环境在cmd窗口中输入mysql -u root -p登录MySQL环境1.2查看数据库Show databases;1.3使用数据库User 表名;Use lian_xi;1.4创建数据库Create database 表名;Create da...

2020-04-27 18:41:21 925

原创 Java里面String,StringBuffer与StringBuilder的区别?

String,StringBuffer与StringBuilder的区别?我们在Java编程中,广泛使用字符串操作,Java就为我们提供了String类来创建和操作字符串。但是需要注意的是,我们经常使用的String值是不可变的。也就是每次对操作都会形成新的对象,开辟新的空间,浪费内存。大量的操作那更是效率低下。如下String str = “aaa”;str += “bbb”;str...

2020-04-09 16:12:11 502

空空如也

空空如也

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

TA关注的人

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