自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 问答 (1)
  • 收藏
  • 关注

原创 Devops学习Day3--jacoco的详细使用

step1:启动jacoco。

2022-08-10 10:15:57 719

原创 devops学习Day2-单元测试jacoco

在一个项目中,通常测试的是最小单元,比如说类或者函数;代码覆盖率是用来衡量测试代码对功能代码的测试情况,通过统计测试代码对功能代码中行、分支、类等模拟场景数量,来量化说明测试的充分度。代码覆盖率=代码覆盖程度。覆盖率简单来说就是功能代码在测试代码的基础上哪些文件、模块、类、方法、分支执行了。行覆盖:当至少一个指令被指定源码行执行时,该源码行被认定为已执行。分支覆盖:if或switch作为分支覆盖率,这个指标作为一个方法中的分支总数,并决定已执行和未执行的分支数量。......

2022-08-09 16:34:02 886

原创 Devops学习Day1--概念

在持续集成的基础上,将每次单元测试好的代码可以很好的部署在贴近真实的运行环境中(制作镜像)。保证软件可以持续、稳定的保持在可发布状态。之后可以进行手动部署。持续集成是将每次写的部分新代码分支合到原有代码主干上的做法。合到主干上可以立即构建并进行测试。在持续交付的基础上,把部署环境自动化。敏捷开发的基础上更加快速的上线。下图的循环可以一直跑下去。...

2022-08-08 10:49:24 278

原创 @Resource注解的解释

@Resource注解是什么?@Resource(基于类的名称)注解与@Autowired注解类似,也是用来进行依赖注入的,@Resource时Java层面所提供的注解,@Autowired(基于类型type)是Spring所提供的注解,它们依赖注入的底层实现逻辑也不同。@Target({TYPE, FIELD, METHOD})@Retention(RUNTIME)public @interface Resource { /** * The JNDI name of the re

2022-04-19 12:37:46 7757

原创 Spring中@Autowired注解解释

@Autowired是什么@Autowired表示某个属性是否需要进行依赖注入,可以写在属性和方法上。注解中的required属性默认为true,表示如果没有对象可以注入给属性则抛出异常。@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})@Retention(RetentionPolicy.RUNTIME

2022-04-19 12:21:59 2857

原创 Linux目录结构

/bin:bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。/boot:这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev :dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。/etc:etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。/home:用户的主目录,在 Li

2021-07-31 21:35:37 83

转载 JVM--执行引擎

执行引擎执行引擎负责将字节码文件翻译成操作系统可以执行的机器指令。执行引擎属于JVM的下层,里面包括 解释器、及时编译器、垃圾回收器。如果想要让一个Java程序运行起来,执行引擎(Execution Engine)的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以。简单来说,JVM中的执行引擎充当了将高级语言翻译为机器语言的译者。执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器

2021-06-14 19:58:06 89

原创 idea上git工具的使用,傻瓜式操作!!!

前提:配好git相关属性再来使用,这个我只是自己记录一下,怕忘了。一、 在码云Gitee上新建仓库二、将新建库克隆到本地通过idea打开你的项目文件夹打开后,在你的文件夹界面右键,然后选择git Bush这是打开的样子,然后输入命令git clone 后面加你复制下来的克隆地址git clone 这就是成功啦!接下来我们打开idea,注意看你的右上角上传我们先提交,点击第二个绿色的小勾,它会报出来commit,选他没错出来这样的界面,文本框里输入的是我们这次提交代码的备注

2021-06-14 17:23:57 292

原创 Java并发编程:线程池的使用

为什么要使用线程池?在平时开发中我们经常会使用到并发编程,我们可以一个一个的创建线程,也可以使用线程池创建。如果我们所需要执行的任务量很小,我们可以一个个创建线程。假设现在任务量巨大,你不能再使用单个创建线程了吧,所以就引出了线程池的使用。线程池所创建的线程在执行完任务时,它不会被销毁,而是会继续去执行其他任务。线程池的优点:降低消耗资源:通过重复利用已创建的线程降低线程的创建和销毁造成的消耗。提高响应速度:当任务到达时,可以不需要等待线程创建就能执行。提高线程的可管理性:线程时稀缺资源,

2021-06-12 19:29:34 1200 2

原创 JVM内存结构(方法区)

方法区方法区(Method Area)与Java堆一样,是各个线程共享的区域。方法区在JVM启动时被创建,并且它的实际的物理内存空间中和Java堆区一样都可以是不连续的。方法区的大小,跟堆空间一样,可以选择固定大小或者可扩展。方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类 ,导致方法区溢出,虚拟机同样会抛出内存溢出错误OOM.​ 加载大量的第三方jar包,Tomcat部署过多的工程;大量动态的生成反射类。关闭JVM就会释放这个区域的内存。方法区的内部结构它用于存储已经被

2021-06-04 21:13:52 185 1

原创 JVM内存结构(堆Heap)

堆多个线程共享一个堆空间。一个JVM实例值存在一个堆内存,堆是内存管理的核心区域。堆是JVM管理的最大一块空间。堆可以处于物理上不连续的内存空间,但逻辑上他应该被视为连续。堆内的缓冲区(TLAB)是线程私有的。几乎所有的对象实例都在这里分配,栈中存放的是变量的引用地址。在方法结束后,堆中的实例不会马上被移除,仅仅在垃圾收集的时候才会被移除。堆,是执行垃圾回收的重点区域。堆在jdk8之前和jdk8之后有什么变化?在Java6版本中,永久代在非堆内存区;到了Java7版本,永久代的静态变量和

2021-06-04 21:07:45 353 1

原创 本地方法栈

本地方法栈Java虚拟机栈是用来管理java方法的,本地方法栈是用来管理本地方法的。本地方法栈线程私有的。

2021-06-04 21:04:02 77

原创 来看看什么是虚拟机栈

虚拟机栈由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译容易实现;缺点是性能下降,在实现tong’yi同样功能需要更多的指令。什么是虚拟机栈栈是运行时单位(如何处理数据),堆是存储数据的单位(数据怎么放,放在哪)。线程私有的。每个线程创建的时候都会创建一个虚拟机栈,其内部保存一个个栈帧,对应这一次次Java方法调用。栈帧和方法是一 一对应的。生命周期:和线程一样。作用:主管Java程序的运行,它保存方法

2021-06-04 21:02:03 645 8

原创 程序计数器

程序计数器什么是程序计数器PC寄存器是用来存储指向下一条指令的地址,也即将将要执行的指令代码。由执行引擎读取下一条指令。它是一块很小的内存空间,几乎可以忽略不计。也是运行速度最快的存储区域在jvm规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持一致任何时间一个线程都只有一个方法在执行,也就是所谓的当前方法。程序计数器会存储当前线程正在执行的java方法的JVM指令地址;或者,如果实在执行native方法,则是未指定值(undefined),因为程序计

2021-06-04 20:55:30 1254

原创 类的加载过程

类的加载过程1 加载“加载”(Loading)阶段是“类加载”(Class Loading)过程的第一个阶段,在此阶段,虚拟机需要完成以下三件事情:1、 通过一个类的全限定名来获取定义此类的二进制字节流。2、 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。3、 在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口。加载阶段即可以使用系统提供的类加载器在完成,也可以由用户自定义的类加载器来完成。加载阶段与连接阶段的部分内容(如一

2021-06-04 20:52:27 61

原创 何时开始类的初始化(类什么时候加载)

何时开始类的初始化(类什么时候加载)什么情况下需要开始类加载过程的第一个阶段:“加载”。虚拟机规范中并没强行约束,这点可以交给虚拟机的的具体实现自由把握,但是对于初始化阶段虚拟机规范是严格规定了如下几种情况,如果类未初始化会对类进行初始化。创建类的实例访问类的静态变量(除常量【被final修辞的静态变量】原因:常量一种特殊的变量,因为编译器把他们当作值(value)而不是域(field)来对待。如果你的代码中用到了常变量(constant variable),编译器并不会生成字节码来从对象中载入域的

2021-06-04 20:51:16 156

原创 你想了解类加载过程双亲委派机制么?漫画+图解

双亲委派机制在介绍双亲委派机制之前,我们首先要了解一下类的加载器。类的加载器虚拟机自带的加载器有Bootstrap ClassLoader(引导类加载器),Extension ClassLoader(扩展类加载器),AppClassLoader(系统类加载器)。三者是包含关系,不是上层下层关系,也不是子父类继承关系。Bootstrap ClassLoader(引导类加载器)这个加载器使用C/C++语言实现的,嵌套在jvm内部;它用来加载java核心库,用于提供JVM自身所需要的类并不继承

2021-05-26 13:17:16 144 1

原创 (了解B树看过来)你懂什么是B树么???

B树概念在计算机科学中,B树(英语:B-tree)是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉查找树(binary search tree)一个节点可以拥有2个以上的子节点。与自平衡二叉查找树不同,B树适用于读写相对大的数据块的存储系统,例如磁盘。B树减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。性质一个 m

2021-05-24 21:11:57 360

原创 红黑树的概念、性质以及插入数据的过程原理

红黑树概念红黑树是一种自平衡二叉树查找树,是计算机科学中用到的一种数据结构,典型用途是关联数组 。红黑树的结构复杂,但他的操作有着良好的最坏的情况运行时间,并且实践中高效:它可以在O(logn)时间内完成查找、插入和删除,这里的n是树中元素的数目。性质红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:节点是红色或黑色。根是黑色。所有叶子都是黑色(叶子是NIL节点(通俗说是null节点))。每个红色节点必

2021-05-24 20:02:11 195 2

转载 (JVM)Java类的加载过程

何时开始类的初始化什么情况下需要开始类加载过程的第一个阶段:“加载”。虚拟机规范中并没强行约束,这点可以交给虚拟机的的具体实现自由把握,但是对于初始化阶段虚拟机规范是严格规定了如下几种情况,如果类未初始化会对类进行初始化。创建类的实例访问类的静态变量(除常量【被final修辞的静态变量】原因:常量一种特殊的变量,因为编译器把他们当作值(value)而不是域(field)来对待。如果你的代码中用到了常变量(constant variable),编译器并不会生成字节码来从对象中载入域的值,而是直接把这个

2021-05-24 10:19:51 97

原创 Java数据结构--二叉树

树树(tree)是一种抽象数据类型(ADT),用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点通过连接它们的边组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。①、节点:上图的圆圈,比如A,B,C等都是表示节点。节点一般代表一些实体,在java面向对象编程中,节点一般代表对象。②、边:连接节点的线称为边,边表示节点的关联关系。一般从一个节点到另一个节点的唯一方法就是沿着一条顺着有边的道路前进。在Java当中通常表示引用。树

2021-05-11 20:43:55 74

原创 希尔排序(我卡了很久的地方)

//希尔排序(二分后在直接插入排序) public static int[] shellSort(int[] arr){ //计算增量 for(int d = arr.length/2; d > 0; d/=2){ //插入排序 for(int i = d; i < arr.length; i++){ int temp = arr[i]; for(i...

2021-04-27 21:01:30 54

原创 Mybatis--SQL动态规划(sql标签)

sql标签 <insert id="addEmps"> insert into tbl_employees(<include refid="insertColumn"></include>) values <foreach collection="emps" item="emp" separator=","> (#{emp.name},#{emp.email},#{emp.gend

2021-04-12 19:13:48 143

原创 Mybatis--SQL动态规划(set、foreach)

测试修改员工信息通过set封装EmployeeDynamicSql.xml<!-- set(封装更新条件)--> <update id="updateEmp"> update tbl_employees <set><if test="name!=null"> last_name=#{name}, </if> <if test="e

2021-04-12 18:58:09 688

原创 MyVBatis----SQL动态规划(if、where、trim、switch-case)

if/where的用法案例:查询员工,要求带了哪个字段就用哪个字段来查找员工信息EmployeeDynamicSql.xml<select id="getEmpsByConditionIf" resultType="com.fjn.mybatis.bean.Employee"> select id,last_name name,email,gender from tbl_employees <!-- 查询的时候如果没给出某些条件可能sq

2021-04-12 18:46:10 1068

原创 Mybatis--ResultMap关联查询(discriminator:鉴别器)

discriminator:鉴别器 mybatis可以使用鉴别器判断某列的值,然后根据某列的值改变封装行为(相当于自定义) 封装Employee: 如果查出的是女生:把部门信息查询出来,否则不查询 如果是男生,把last_name赋值给emailEmployeeMapperPlus.xmlEmployeeMapperPlus.java测试:...

2021-04-11 18:50:17 185

原创 Mybatis--ResultMap关联查询(collection :嵌套结果集的方式)

collection :嵌套结果集的方式,定义关联集合类型元素的封装规则案例:查询部门信息的同时可以查出所在该部门里的员工信息第一步:在DepartMent.java中添加第二步:DepartmentMapper.java中添加方法第三步:Department.xml测试:使用collection嵌套结果集:分步查询先查询部门信息获取部门id,然后在根据部门id在员工表中查出员工信息DepartmentMapper.xmlDepartmentMapper.javaEmploy

2021-04-11 18:48:22 789 1

原创 Mybatis---ResultMap关联查询(正片)

例子:查询员工的同时查出部门一个员工有与之对应的部门信息第一种:用级联属性进行封装EmployeeMapperPlus.xmlEmployeeMapperPlus.javaMybatisTest.java第二种:使用association指定联合的javaBean对象区别第一种只有EmployeeMapperPlus.xml有不同第三种:根据association进行分布查询创建DpartmentMapper.xml创建DepartmentMapper.javaEmploy

2021-04-11 18:43:25 89

原创 Mybatise---ResultSet关联查询(resultMap自定义javaBean与数据表的映射关系(强大且重要) )

resultMap自定义javaBean与数据表的映射关系(强大且重要)自定义结果集映射Type:自定义规则的java类型Id:唯一id方便引用EmployeeMapperPlus.xmlEmployeeMapperPlus.javaMybatisTest.java

2021-04-11 18:39:21 168

原创 Mybatise---ResultSet关联查询(Mybatis查询多条数据返回ResultSet )

Mybatis查询多条数据返回ResultSet1.封装为ListResultType如果返回的是一个集合,则返回的是集合中元素的类型,非List类Mybatis会自动将所查询到的数据进行封装,封装为ListEmployeeMapper.javaEmployeeMapper.xmlMybatisTest.java2.封装为Mapkey是列名,value值对应值多条记录封装一个map:Map<Integer,Employee>:键是这条记录的主键,值是封装后的javaBean

2021-04-11 18:36:25 1389

原创 Mybatis遇到问题(Invalid bound statement (not found))

我的问题主要在mybatis配置文件中mappers注册这里mybatis-config.xml我这里使用了批量注册,可我的xml配置文件没有放在与DAO相同的路径下,路径可以不同,但是名称相同。解决方法第一步:将resrouse文件先修改为Test Source Root(这样做的目的是为了创建包的过程中,命名为com.fjn.mybatis.dao,它会自动生成一系列的子文件夹)第二部:创建包包名为:com.fjn.mybatis.dao它在资源管理器中的路径第三步:将你的xm.

2021-04-10 12:06:56 143

原创 Mysql---关联查询(内连接、外连接区别)

笛卡尔积 :简单概括一个表里的记录要分别和另外一个表的记录匹配为一条记录,即如果表1有3条记录,表2也有3条记录,经过笛卡尔运算之后就应该有3*3即9条记录.多表联合查询主要分为三种:内连接、外连接(左外连接,右外连接,全外连接)、自然连接自然连接:自然连接是一种特殊的等值连接,他要求两个关系表中进行比较的必须是相同的属性列(必须同名),无须添加连接条件,并且在结果中消除重复的属性列。内连接:内连接基本与自然连接相同,不同之处在于自然连接要求是同名属性列的比较,而内连接则不要求两属性列同名, on来

2021-04-09 23:33:44 1753

原创 mysql分页查询

分页查询应用场景:当我们所查询的数据一页显示不全,我们就需要提交sql分页语法:select 查询列表from 表1【join typejoin 表2on 连接条件where 筛选条件group by 分组字段having 分组后的筛选order 排序的字段】limit offset,size;offset 要显示条目的起始索引(起始索引从0开始)size 要显示的条目个数要显示页数page,每页的条目数size公式: limit (page-1)*size,size

2021-04-09 21:25:57 62

原创 Mybatis---ResultMap自定义映射规则

自定义结果集映射Type:自定义规则的java类型Id:唯一id方便引用EmployeeMapperPlus.xmlEmployeeMapperPlus.javaMybatisTest.java

2021-04-09 20:45:04 75

原创 随手一记3(Mysql)多表联合查询

/*语法:select 查询列表from 表1 别名 【连接类型】join 表2 别名on 连接条件【where筛选条件】【group by 分组】【having 筛选条件】【order by 排序】分类:内连接 inner外连接左外 left 【outer】outer可以省略右外 right 【outer】全外 full 【outer】交叉连接 cross*/#内连接/*语法:select 查询列表from 表1 别名 innerjoin 表2 别名on 连

2021-03-12 22:38:22 109

原创 随手一记2(Mysql)

#count表示不为空(null)的个数#sum,avg用来处理数值型;max,min,count可以用来处理任何值#以上分组函数都忽略NULL值#salary工资select max(salary),min(salary),count(salary),avg(salary) from employees;#和distinct搭配使用(distinct是去重操作)select sum(distinct salary) from employees;#count函数的单独介绍use cs;s

2021-02-24 22:41:27 68

原创 随手一记1(Mysql)

use cs;create table goods(g_id int,g_name char(20),g_factor char(20),g_type char(8),g_people char(6));insert into goods(g_id,g_name,g_factor,g_type,g_people)values(003,“旺旺雪饼”,“旺旺公司”,“膨化食品”,“赵文卓”);select * from goods;select * from goodsorde

2021-02-23 10:47:47 79

原创 LeetCode 求无重复字符子串的最大长度

主要利用的是滑动窗口思想来写这道题。HashMap是存储无序的、不可重复的数据import java.util.HashMap;public class LeetCode3 { public static int lengthOfLongestSubstring(String s) { int x = 0; int left = 0;//left滑动窗口的左指针 HashMap<Character,Integer> map = ne

2021-01-18 13:23:54 89

原创 有关Java线程里同步锁的问题(求助)

代码是三个窗口售票这段代码线程是安全的,它和第二个不安全有什么区别么,之不不过是判定条件改变,两段代码同步监视器(锁)在程序运行中都是唯一的。第一段代码:public class ThreadWindons implements Runnable{ private int count = 100; Object obj = new Object(); public void run(){ while(true){//这里为true,此时线程安全

2020-11-22 23:07:50 83

原创 汉诺塔呀汉诺塔!我们最爱的汉诺塔!(JAVA)

引入讲个故事吧:据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。规则1.一次只能移动一个圆盘;2.大圆盘不能放在小圆盘的上面;(小圆盘上只能有大圆盘)解决方法引用递归...

2020-11-15 22:17:19 110

空空如也

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

TA关注的人

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