自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MyBatis动态SQL标签

主要使⽤在update语句当中,⽤来⽣成set关键字,同时去掉最后多余的“,”⽐如我们只更新提交的不为空的字段,如果提交的数据是空或者"",那这个字段不更新。2.所有条件都为空时,where标签保证不会⽣成where⼦句。include标签⽤来将声明的sql⽚段包含到某个sql语句当中。2.if标签中的test属性的值是true或false。3.如果是true则将if标签中的sql语句就会拼接。prefixOverrides:删除前缀。4.test属性中可以使用的是。4.继续使⽤if标签中的需求。

2023-11-06 17:00:09 84

原创 MyBatis程序开发步骤

mybatis核⼼配置⽂件存放的位置也可以随意。这⾥选择放在resources根下,相当于放到了类的根路径下。:mybatis核⼼配置⽂件的⽂件名不⼀定是mybatis-config.xml,可以是其它名字。步骤三:在resources根目录下新建mybatis-config.xml配置文件。编写MyBatisIntroductionTest代码。:运⾏程序,查看运⾏结果,以及数据库表中的数据。步骤二:引入依赖:MyBatis和Mysql。设置IDEA中的Maven。创建Module模块。

2023-11-06 15:39:25 49

原创 Math、UUID、BigInteger、BigDecimal、使用double设置误差

BigDecimal:常用于金融领域、科学计算、工程领域、数据库和数据处理、人工智能和机器学习、航天、遥感、医疗等领域。negateExact 取反。随机数 random 范围[0,1)舍入进位 ceil。三角函数 tan。数据溢出报错:addExact +UUID:保证同一时空中的所有机器都是唯一识别码。如果除数结果为无尽小数时会报错,所以需要舍入规则。比较大小 max。幂与开方 pow。

2023-09-25 11:16:51 56

原创 单例模式、String、StringBuilder、StringBuffer

缓冲区:一个定长的存储空间,在存储超出范围时会申请新的空间,将旧数据拷贝到新的空间中,那么在申请的时候追加预留空间增加一个int变量,作为空间使用区域的游标,区分有效区和预留区。String不可变,因为他是final修饰的一个char数组,但是StringBuffer和StringBuilder是可变的Java提供了对他俩本身修改操作的API。字节->字符串 String str=new String(b,"utf-8");编码转换:字符串->字节 byte[]b=s.getBytes("utf-8");

2023-09-12 21:12:01 58 1

原创 公平锁、读写锁、信号量、倒计时锁、原子性包

4.循环屏障的等待方法await中绑定计数功能,倒计时锁等待await计数countDown。atomic原子性包——AtomicReferenceFieldUpdater。1.都是基于计数触发释放锁的机制,都是让多个线程任务等待执行。3.循环屏障的超时等待释放所有线程,倒计时锁释放线程自身。5.循环屏障可以使用reset复用,倒计时锁不可重复使用。atomic 原子性包——AtomicReference。2.循环屏障是累加计数,倒计时锁是减法归零计数。Semaphore 信号量。循环屏障与倒计时锁比较。

2023-09-11 21:00:06 34

原创 锁升级、偏向锁、轻量级锁、重量级锁、wait()、结束休眠状态、join()、守护线程、Thread.State:getState() 、线程饥饿(线程饿死)、用户态、内核态

轻量级锁发生在较少的线程竞争的环境,有偶尔的少量竞争,如果发现资源被占用,可以再次重新检查使用状态,很快会获得资源的使用权、轻量级锁正是规范的资源锁思路、获取释放的代价与争抢的代价处于均衡状态。:发生在没有资源争抢的单线程或者少量线程的环境,线程的数量极少,并且交替使用资源的概率很低,那么标记资源占用,释放资源的环节大部分是徒劳的。:当一个线程获取锁之后,其余所有线程等待获取该锁的线程都会处于阻塞状态,等待资源的使用者使用完毕后,唤醒这些线程,重新争抢。BLOCKED 阻塞。3.其他线程中断线程。

2023-05-26 17:34:15 57

原创 线程分组、线程优先级、维护线程的手段、synchornized、锁粒度、Thread.yield()、Thread.sleep()

Thread.yield():是一个静态方法,会自动判断是哪个线程发起的会使该线程从运行状态转换为就绪状态,然后立刻争抢cpu资源所以可能会出现刚刚放弃后又抢到资源的情况。ThreadGroup 线程分组类:线程分组类包含的主要属性有分组名,组内线程成员,组内最大线程数,父级分组,子集分组,是否已销毁,是否是守护线程,未启动的线程等。线程组不负责维护线程,负责线程资源的竞争以及可以对多个线程下达命令。线程的优先级不能超过线程组的优先级。线程池是批量控制激发顺序,线程组是批量控制,比如停止整个线程组。

2023-05-25 08:56:22 55

原创 基本数据类型包装类、线程相关基础概念、线程生命周期、阻塞状态原因、创建线程、线程池、结束线程

2.实现Runnable接口,重写run()方法,根据实例创建Thread对象,thread.start()开启 Runnable接口是函数式接口 支持使用方法引用以及lambda表达式。任务队列:操作系统将待处理的线程任务放到同一个队列中,参考用户标记的优先级决定队列的顺序将队列中的线程任务分配给CPU执行。4.线程调用wait()方法,等待某一通知。创建线程的4种途径:1.继承Thread类,重写run()方法,调用实例的start()方法。并行:多核心下,调用最多的算力,完成任务。

2023-05-19 16:31:21 55

原创 Java中的异常

根据代码执行是否成功决定是否执行try、catch的return语句,之后在执行finally中的return语句,如果return语句后面的是表达式,返回的就是表达式的结果,对于try、catch中的return的结果会直接抛弃,然后在返回finally中的return语句,所以在finally语句中尽量避免书写return语句。异常以类和对象的形式存在,异常可以增加代码的健壮性,发生异常JVM会创建对象所有异常都是在运行阶段发生。在try、catch、finally中都出现return语句该如何执行?

2023-05-14 18:02:02 44

原创 不会导致类初始化的情况、抽象方法、接口、函数式接口、方法引用、Lambda表达式、内部类

7、接口里的资源可以简写: 接口里的常量,可以简写,会自动拼接public static final,接口里的方法,可以简写,会自动拼接public abstract。3、抽象类是一个特殊的类,特殊在可以有抽象方法和普通方法;接口是一个特殊的抽象类,特殊在接口里 都是抽象方法。接口没有构造方法,实现类new时调用Object类的无参构造。Lambda表达式可以调用外部的局部变量和静态常量,但不能修改而方法引用都可以调用,与正常方法相同。JDK1.8-:1.创建接口实现类,创建实现类对象,长期保存,复用。

2023-05-12 11:18:40 49

原创 修饰词、final、static、静态代码块

成员变量:public、protected、private、static、final、transient(不被序列化)、volatile(可被异步的线程所修改,禁用cpu缓存,禁止指令重排)静态代码块在类加载后,初始化阶段执行,用于初始化静态变量,做一些复杂的逻辑运算,main是第一个加载到栈中的方法但并不是第一个在栈中运行的代码,第一个运行的是main方法所在类的静态代码块。被修饰的类不能被继承、方法不能被重写、变量为常量、参数不可被修改。static:可以修饰变量、方法、代码块、内部类。

2023-04-15 14:59:23 40

原创 继承、重写、@Override、多态

上转型之后的对象,操作变量时,是根据该对象的变量数据类型访问的,也就是说,上转型后的对象访问的是父类的变量表。上转型之后的对象,操作方法时,是根据该对象的对象类型访问的,也就是说,上转型后的对象访问的是子类的方法表。在继承条件下,被隐藏的方法不会出现在方法表里,正常继承下来的方法,如果没有被重写,会在子类的放发表里生成虚方法。继承:以已存在的类为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性的继承父类。@Override:检查下方的方法是否是被重写的方法。

2023-04-11 08:39:53 54

原创 访问修饰符、面向对象的三大特点、this、重载、构造器链问题

4.降低耦合:“高内聚,低耦合” 高内聚 就是类的内部数据操作细节自己完成,不允许外部干涉,编程上就是想对其它类或对象复杂的操作,通过调用目标自身开放接口实现 低耦合 是仅暴露少量的方法给外部使用,尽量方便外部调用 编程上就是不要直接读写其他类或对象的数据 即自己的数据自己管理 自己制定的维护规则,外界以请求的姿态修改或访问数据,能否获取数据修改数据 要看数据资源的持有者的决定。实现某一种功能的方法与属性独立保存,可以多调用这部分封装,使代码简洁。2.构造器链的数据初始化赋值时机问题。

2023-04-10 21:13:58 49

原创 局部变量、成员变量、构造方法、构造器

执行流程:1.会在new时识别是哪个类的对象,然后根据类中的变量数据类型,计算出要申请对象的空间。成员变量:写在方法外,类里的变量,具有默认初始值,分为静态变量(static)和实例变量(生命周期与对象一致。局部变量:在方法中定义的变量与参数,局部变量必须赋值后才使用,局部变量在方法结束后就会被删除。构造器(constructor):目的是对在堆中申请的新空间(空对象)进行数据初始化。5.执行构造器的方法体。4.如果不写构造方法,默认是无参构造。创建对象的本质:在堆中开辟内存,存储运行时的数据。

2023-04-10 19:45:19 54

原创 什么是JVM,JRE,JVM,三者的关系是什么?

JRE是运行Java程序的必要组件,与JDK不同,JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具,只针对使用Java程序的用户。JDK是整个java的核心,包括Java运行环境JRE,java运行工具(javac/java/jdb等)和Java基础的源代码库。JVM即Java虚拟机,是整个Java实现跨平台最核心的部分,所有Java程序会首先被编译为.class文件,然后在虚拟机上执行。综上:JDK包含JRE和JVM JRE包含JVM。

2023-04-10 17:25:52 123

原创 switch()、for循环、增强for、Scanner 、冒泡法排序

判断条件不局限于某种不变量,可以是单个变量,也可以是表达式结果 目标的最终类型是int,支持byte、short、char、int及其对应的包装类(拆箱)枚举(ordinal方法)String(JDK1.7后,可通过hashCode算法和equals方法,将其转为int并判断)for(变量类型 变量名 :数组或集合){ 按照顺序一次取数组或集合,把数据提取到声名的变量中 }注:增强for循环只读不写,展示出的备份数据而不是原有数组。第一个位置为空:表示不需要循环变量。

2023-04-01 18:54:52 63

原创 数组及锯齿数组

优点:查询时只涉及到的列会被读取 投影(映射)很高效 任何列都能作为索引(数据库)缺点:选择完成时,被选择的列要重新组装 增加、删除数据时成本高。列存储是数组下标映射,一对一映射的实际应用,在数据分析和数据库索引中大量应用。数组:是用于存储多个相同类型数据的集合,是一种计算偏移量寻址的数组。优点:添加、删除一个事物的成本低 访问特定事物的各维度信息成本低。缺点:读取数据时,和搜索不想关的数据也会被检索出来。行式存储(强调的是数据间的关系,适用于面向对象)

2023-04-01 18:34:37 90

原创 Java运算符

右移 A>>n 右 ,正数前n位补0,负数前n位补1,后n位舍弃。左移 A>n 向右移n位,前n位补0后n位舍弃。"A||B" 在A为对时,不会考虑B,因此B不会执行。:2.计算a++,10+a+++a++ 此时a=11。"A&&B"在A为错时,不会考虑B,因此B不会执行。

2023-03-14 10:27:07 37

原创 Java内存结构

方法区:字节码文件加载时,就将类的结构信息、方法的详细内容,静态数据储存到方法区。堆:程序运行时产生的数据,存储在堆中,堆空间只有一个,其它内存区域共用一个堆空间。本地方法栈 Nativemethodstack:保存调用本地方法的地址。栈中保存变量引用,保存并运行算法 堆中存储的是变量的具体数据。堆heap:运行时数据区,用于存储运行时产生的数据。栈stack: 存储运行时正在执行的指令。存储执行的指令所用的数据,分为基本、引用。常量池包含的内容:1.字面量:文本字符串。栈:加载准备运行的算法。

2023-03-14 10:17:11 53

原创 Java数据类型

byte->short/char->int->long->float->double (按精度排序) boolean。浮点型采用指数方法表示方法,对应十进制小数存在数值表示盲区,使用近似数来表示(所以long转小数会精度丢失)但是a+b=c的算式使用浮点型可能无法得到想要的结果,因为a的近似值和b的近似值运算得到的值更近似于d。:在计算机中不管怎样的数据最终都会用大量的“0”和“1”表示,我们称之为。:一组特殊文字给变量申请存储空间大小与存储规则的工具。因为引用类型存的是地址值 所以引用类型都为8字节。

2023-03-09 22:08:07 73 1

原创 Java的“一次编写,处处运行”是如何实现的?

Java具有很强大一个功能,就是跨平台。因为中间多了个jvm虚拟机。我们javac编译*.java文件为字节码文件,然后在指定的操作系统上,加载字节码文件。因为字节码文件都一致,但每个JVM不同,每个JVM都是根据服务器硬件而专门编写的。这样JVM虚拟机会把字节码文件再次编译成对应硬件服务器上的指令集,这样就完美的解决了跨平台的特性。

2022-11-11 11:35:04 731

原创 Java变量

可以简单的理解为一个名字。在Java中,我们需要用到许多标识符,比如包名、类名、方法、变量、字段等。我们所选择的名字称为标识符,并且遵循以下规则:1.标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符。2.数字不能开头3.严格区分大小写4.标识符的命名最好能反映出其作用,做到见名知意。

2022-11-10 20:45:21 244 2

原创 Java--彩票案例

【代码】Java--彩票案例。

2022-11-10 20:21:35 214 1

API讲义.md

API讲义.md

2022-09-18

空空如也

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

TA关注的人

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