自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 运用freemark引擎的word模板导出

一:进行模板创建首先需要一份想要导出的模板,通过office软件转换成xml格式 (一定要根据office 不是wps toon过“另存为”的方式转换格式不能手动更改拓展名来进行格式转换;之后将xml文件放入到项目里面,我放到了 word导出对应的包下,并将其扩展名改为.ftljpg是模板导出需要用到的图片,只有红色箭头标注的是本项目必须的文件 其余几个可以忽略,当然图片和导出样例.ftl 可以自己放到别的 写对他们的路径就可以(我放在了别处这只是演示)。二:进行文件导出的工具...

2022-05-19 17:42:52 833

原创 Mysql 索引的介绍

mysql索引是一种特殊的数据结构由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录。通过索引,查询数据时不用读完记录的所有信息,而只是查询索引列即可。...

2022-05-18 16:20:41 325

原创 从零开始创建一个mybaits

一:创建maven项目项目前准备:创建数据库Mybati中文文档:https://mybatis.org/mybatis-3/zh/getting-started.html点击file二:导入mybaits依赖包<dependencies> <!--mybatis核心包--> <dependency> <groupId>org.mybatis</gr

2022-05-11 21:50:41 378

原创 springboot 用到的一些常用注解

一:辅助性注解在spring boot 框架下@Autowired,@Override作用都是被框架管理自动生成对象@Autowired 注解。这个注解的功能就是为我们注入一个定义好的 bean。首先,我们从所属范围来看,事实上这个注解是属于 Spring 的容器配置的一个注解,与它同属容器配置的注解还有:@Required,@Primary, @Qualifier 等等。因此 @Autowired 注解是一个用于容器 ( container ) 配置的注解。应用最多:将 @Autowi

2022-05-11 16:51:37 193

原创 用oderby grouby/limit 来进行实现根据id 返回数值字段最小值并排序

问题1有Products表,含有字段prod_price代表产品价格,vend_id代表供应商id| vend_id | prod_price || ------- | ---------- || a0011 | 100 || a0019 | 0.1 || b0019 | 1000 || b0019 | 6980 || b0019 | 20 |【问题】编写 SQL 语句,返回名为 cheapest_item 的字段,该字段包含每个供应商成本最低的产品(使用 Products 表中的 prod_price

2022-05-09 19:13:50 104

原创 ioc通过注释的属性注入

ioc属性值注入

2022-02-20 15:54:43 231

原创 ioc的注解方式 实现bean管理和注入属性

1.什么是注解①:注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值...)②:使用注解,注解作用在类上面,方法上面,属性上边③:使用注解的目的:简化XML配置2.Spring针对Bean管理中创建对象提供的注解@Component 普通的类@Controller 表现层@Service 业务层@Repository 持久层这四个功能都一样写一个就行使用注解的两种方式:配置文件进行注解扫描1、在需要进行管理的类上添加注解 上述任意一种

2022-02-20 11:52:11 198

原创 MyBaits二级缓存

与一级缓存不同的是二级缓存是要手动开启的1. 在SqlMapConfig.xml配置文件中开启二级缓存<!‐‐ 开启二级缓存 ‐‐><settings> <!--开启二级缓存--> <setting name="cacheEnabled" value="true"/></settings>在<settings>标签下添加<setting 缓存开启配置2. 在Mapper.xml配置文件声明使用

2022-02-19 17:07:12 339

原创 Mybatis缓存机制-一级缓存SqlSession

目录作用分级缓存测试一级缓存缓存失效:作用减少与数据库的交互次数,减少系统开销,提高系统效率。经常使用的数据才可以进入缓存分级缓存mybatis缓存默认分为两级 一级缓存sqlsession(默认开启) 和二级缓存(需要手动开启)一级缓存也是本地缓存,在与数据库的一次会话当中,从数据库中查询到的数据会被放入缓存中(以对象形式放入,二级缓存是单纯的存储了数据),再次访问相同的数据的时候不需要再次链接数据库。测试一级缓存public class User

2022-02-19 16:54:13 1002

原创 java多线程

线程:任务控制流 一个线程可由一个或多个任务构成计算机核心cpu的核心是算术逻辑单元 举个例子 用一个cpu去同时执行两个任务;比如:int count,temp; count temp 自增一百次 这是一个顺序执行的过程一个或多个任务从第一个入栈到最后一个出栈有顺序的执行就是一个线程;多线程是让两个以及以上的线程同时发生比如吃着饭玩手机但是早期对于单内核cpu来说 多线程的关键是时间片 在同一个时间片总共分成两份的时间去执行两个任务 但是每一时刻还是只有一个线程在执行,并没有真正同时执行;

2022-02-09 17:12:00 328

原创 shell一些基础语句

ps -ef |grep tomcat ps -ef|grep tomcat 筛选并查询所有tomcat进程 ps -ef|grep 进程名称ps -ef 查询所有进程grep 筛选 tomcat进程rz 上传文件 sz 下载文件 vi 编辑文件 rm -rf 彻底删除文件 mkdir 创建文件夹 touch 创建文件cat 打开文件 Ctrl+c 中断 ll 查看详细信息chomd 777 *sh 把所有.sh结尾 改为可读可写可执行chomd 777 startup.sh 把 s

2022-02-09 17:11:39 167

原创 数组的查找删除操作

二分查找(折半查找):前提时有序数组递归查找:public class WorkTest {public static void main(String []args) {int []a =new int [] {1,2,3,4,5,9,10,44,33,66,44,55};System.out.println("输入要查找的数");Scanner x= new Scanner(System.in);int m=x.nextInt();int end=a.length-1

2022-02-09 17:11:20 203

原创 linux服务器的一些指令实操

linux 系统稳定性基本在一年 windows稳定性在几个月 linux 为重要学习内容root@VM-16-9-centos ~ root 为用户名 ~是目录 VM-16-9是服务器名字linux 只有根目录(c盘)cd / 进入根目录 [root@VM-16-9-centos /] /可以当成根目录蓝色是文件加 浅蓝色是软连接 浅蓝色--软链接(相当于windows操作系统里面的快捷方式)mkdir 文件夹名 创建文件夹ll查看详细信息touch创建文件 m..

2022-02-09 17:10:43 491

原创 java循环

在case 里面如果不写break会造成 swith击穿 导致 自符合的case一下全部执行;忘掉一个的话会执行本个与下一个 到有break的地方swith 可以被选择的 char byte short String int 枚举常量(面试考点);for(){for(){if(){break;}}} 只打断内循环外循环还会继续;for (;;i++){if(){continue;//跳过这一次循环进行下一次循环跳到执行i++这一步}}for e

2022-02-07 23:56:47 183

原创 java128陷阱

java128陷阱public static void main(String[] args) {Integer num1 = 100;Integer num2 = 100;System.out.println(num1 == num2);Integer num3 = 128;Integer num4 = 128;System.out.println(num3 == num4);}答案就在Integet的valueOf()方当中,如果我们的数值在-128-127之间的数值

2022-02-07 23:52:02 302

原创 java跨语言优势以及jdk jre两个概念的简单了解

jdk jre 作用?两者关系jdk是Java的运行环境,包含有jre 通常安装jdk就可以是适合于java开发者的工具jdk是java标准的开发工具包。它提供了编译、运行Java程序所需的各种工具和资源,包括java编辑器,java运行环境jre 以及常用的Java基础类库等,是整个Java 的核心工具。jre:是运行基于Java语言编写的程序所必不可缺少的运行环境,用于解释执行java的字节码文件,颞部包含了jvm。jvm:是Java的虚拟机,是jre的一部分。负责解释执行字节码文件,是

2022-02-07 23:51:15 764

原创 Java的输入输出

Scanner x=new Scanner(System.in);//输入方法int a=x.nextInt();//int类型;float b=x.nextFloat();String s=x.nextLine();//字符串类型;//可以输入单个字符编码库里面在屏幕上输出一个 形状 为了在不同位置输出 在形状里面对应着不同的x y 代码;因此为了在不同位置输出就可以加上 x,y 坐标来实现输出;记事本的编码库 支持形状但不支持颜色 word可以实现一个字一个字号一个颜色因此包含:

2022-02-07 23:49:21 140

原创 cpu的简单原理,以及信号传输

计算机读取数据流程先磁盘读取数据到内存,再从内存读取数据到cpucpu单次运算0.2-0.3 纳秒 寄存器0.2-0.3l1:0.6-1ns l2 1-2ns l3:4-6ns内存:20-30ns磁盘:4-6ms:cpu从磁盘读取到运行;5ms;电流:Cu:16万千米每秒;Au 20万千米每秒。 在cpu里面一般是铜丝和金丝混合 整个线路是铜按金来算:电流每走 1m/s cpu/25次电流的传播速度在cpu内成为了性能的限制,是性能瓶颈的一部分信号的衰减:电流...

2022-02-07 23:48:05 1716

原创 字符串拼接的两种方式

StringBuilder StringBuffer 速度比String 要快(字符串拼接)相差速度可能达到上千上万倍拼接字符串越大速度相差越大StringBuilder StringBuffer Builder 线程不安全 Buffer线程安全 安全的速度要稍微慢于不安全的速度(这两个拼接速度不会相差太多)10个一下的拼接用哪个都可以超过之后一般用 Builder这是string 拼接 4万毫秒差不多内部原理:buffer每次加减在不超过原空间大小的时候不会申请新空间进行 是在原地

2022-02-07 23:44:58 362

原创 一些常用String Api 接口

char charAt (int index);String x1="abcdefg";char y1=x1.charAt(2);System.out.println(y1);//y1=c;返会指定位置的代码单元因为java默认unix编码 16位两字节也就是一个代码单元因此返回的是第二个代码单元里面的第二个字符;int codePointAt(int index) 5.0;返回字符串里面第几个字符的编码值 index是索引也就是下标的意思;int compareTo(String ..

2022-02-07 23:42:33 118

原创 八大排序之选择排序

选择排序和插入排序类似默认第一个最小往后遍历,找到比他小的交换位置,依次循环进行public static void selectSort(int a[]) { for(int i=0;i<a.length-1;i++) { int min=a[i]; int realmin=i; for(int j=i+1;j<a.length;j++) { if(a[j]<min) { min=a[j]; real

2022-02-07 23:40:22 127

原创 八大排序之插入排序

插入排序是从第二个开始和第一个比较把后面的大的放到前面 public static void insertSort(int a[]) { for(int i=0;i<a.length-1;i++) { for(int j=i;j>=0;j--) { if(a[j]>a[j+1]) { int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } }

2022-02-07 23:38:06 275

原创 冒泡排序算法

public static void main(String[] args) { int a[]= {3,45,15,55,66,16,80,13,54,46,82,29,18,78}; //record number int count=0; //first compare for(int i=0;i<a.length;i++) //compare two numbers { boolean flag=true; for(int j.

2022-02-07 23:35:29 39

原创 java 异常

程序错误:是由于jvm引发的栈溢出错误 eg:异常exception:受检异常(非运行时异常):比如没有Throw exception io异常异常解决:throw 抛出、try catch 解决异常非受检异常(运行时异常):数组越界、null指针异常自定义异常:...

2022-01-22 11:31:35 256

原创 java反射

反射是什么:能够获取分析类信息的能力,反射.反射是如何工作的?这需要了解类的声明周期由创建的.java文件编译为字节码文件,再在方法区存储class 对象 到在堆内存实例化对象 到卸载我们来分析一下class里面含有什么 :成员变量、构造器、方法、(父类)获取类信息磁盘阶段:class.forName("全类名') //全类名是包名加类名jdbc 加载驱动程序也是用的class.forName类对象阶段:类名.class运行时阶段:对象名.getclass()

2022-01-18 17:57:28 247

原创 Java内存指向 静态static

对于 引用类型 基本类型 静态 的区分;所有的C类语言 static 意味着只要刚进入内存就有 自己的内存空间 如果一个变量没有自己的内存空间就不可以被操作;静态方法 或者静态变量 刚定义后进入内存 就可以被直接调用 使用但是非静态的不可以...

2022-01-10 17:39:50 191

原创 计算机数据存储 和cpu的一些介绍

标题1:读取数据流程,与数据处理的矛盾计算机读取数据流程先磁盘读取数据到内存,再从内存读取数据到cpucpu单次运算0.2-0.3 纳秒 寄存器0.2-0.3l1:0.6-1ns l2 1-2ns l3:4-6ns //这是三级缓存内存:20-30ns磁盘:4-6ms:cpu从磁盘读取到运行;5ms;电流:Cu:16万千米每秒;Au 20万千米每秒。 在cpu里面一般是铜丝和金丝混合 整个线路是铜就算全部按金来算:电流每走 1m/s cpu/25次因此电流的传播速

2022-01-10 17:25:09 1368

原创 B+树的概念和创建

b+树是一种数据库的存储 结构b+树:b+树的所有叶子结点都在一行,且形成一个链表 b树的叶子结点也在一行 但是并不形成 链表1.非叶子节点仅具有索引作用,也就是说,非叶子节点只能存储Key,不能存储value2.树的所有叶节点构成一个有序链表,可以按照key排序的次序依次遍历全部数据。若参数M选择为5,那么每个节点最多包含4个键值对,我们以5阶B+树为例,看看B+树的数据存储在空树中插入 key= 5 data (在这注意一下 B树的构建我省略了 那些位null的key 其实是存在

2022-01-05 11:54:40 2350

原创 b树的概念和建立

对于红黑树(二叉树)来说 当数据较多的时候他只有 两个子节点 那么对应的深度会很大 ,,那么在进行查找时多次的访问会造成查找效率的下降,同时,在对二叉查找树进行插入时,可能会破坏二叉查找树的平衡。为了降低对于树的访问次数,实现树的平衡,我们需要新的数据结构来处理这样的问题。首先来了解一下 2-3 查找树 (一种多叉树)、2节点: 包含一个键(及其对应的值)和两条链,左连接指向2-3树中都小于该节点,右链接所指向的值都大于该节点。3节点:包含两个键(及其对应的值)和三条链,左链接指向2-3树中的键

2022-01-05 11:35:49 284

原创 哈希曼编码哈希曼树

哈希曼书这种结构 我了解的应用方面有子网划分 和不可变编码压缩为可变编码再解压带权路径长度:跟根节点到该节点 路径长度*结点的权树带权路径长度:该树所有叶子结点的带权路径之和 wpl最小哈夫曼树:最小wpl就是哈夫曼树我觉得他的核心思想就是 以最小的时间代价去进行这些数据的操作所以需要把带权路径大的结点放在前面 (这个权 可以是被访问所占比重,在所有数据中的比例、就是用到的越多权越大 单纯的数字没必要用哈夫曼存放,也不太准确,总之那个权并不是单纯的数字肯定有着自己的意义)这个构造思路比较

2022-01-03 22:22:53 868

原创 红黑树的基本概念

虽然平衡二叉树的查找效率很高 可是数据一旦多起来 构建平衡二叉树就太费力了 要来回孤岛很多次 对计算机的性能是一个很大的损耗,因此不长用于生产实际中 生产实际中运用较多的是一种 红黑树红黑树 即兼顾了平衡二叉树的查找速率有兼顾了 对于计算机性能的损耗 所有他的限制是非常多的1:红黑树的结点非黑即红;2:一个结点到自己后代节点路径上经过的黑结点数目是一样的3:红黑树的叶子结点都是黑的 4:红黑树的跟结点是红的;5:如果一个结点是红色的那么他的子结点一定是黑色的。红黑树没有一条路径的长度是其他路

2022-01-03 22:04:06 323

原创 平衡二叉树

有序的二叉树 他的查找时间复杂度是 logn 但是如果只有一个子节点的情况下 它的时间复杂度就会为n平衡二叉树 的查找时间复杂度 大体上都是 logn的时间复杂度平衡二叉树定义是 每一个结点的左子树的深度和右子树的高度只差不超过 1.不平衡二叉树改为平衡二叉树 有四种方式一:LL型旋转第一步 找到不平衡的结点target 就是value=7的那个 他的左子树高度是3 右子树是1 是不平衡的第二部:把target 改为 他的左孩子的右孩子 如果target 的左孩子右右孩子就把它改为

2022-01-03 20:55:38 257

原创 删除有序二叉树的结点

无序的删除 连上就行 不需要比较具体的值有序二叉树删除结点虽然代码量较多但是 他的思想是很简单的我们来把它拆分一下一、删除叶子结点:1:找到叶子结点;2:找到叶子结点的父结点3:看看目标结点 是父节点的左孩子还是右孩子4:左孩子就parentNode.left=null; 右孩子就parentNode.right=null;5:没有父亲结点还是叶子结点 那就直接root=null;二:删除 只有一个子树的结点1:找到目标结点;2:找到目标结点的父结点3:看看目标结点 是父节点的左

2022-01-02 21:23:26 189

原创 二叉树的四种遍历---先序、中序、后序遍历、广度优先遍历

其中先序、中序、后续遍历都是 深度优先遍历先序遍历:顺序输出:根结点->左节点->右节点 (用根节点不太准确 改为父节点可能更好 )中序遍历:左节点->根节点->右结点后续遍历:左、右、根 根结点在哪就是什么遍历以中序遍历为例(中序遍历输出的是一个升序排序 因为左孩子的值小嘛 父节点老二 右孩子的值最大) public void put(TreeNode node) {//中序遍历 if(node==null) {//可以不写 因为空的时候就...

2022-01-02 21:03:44 573

原创 有序二叉树的两种建立方法 --递归-正常建立

为啥要构建有序二叉树 排序方便啊 构建完了就拍完了,还要查询、存储都会方便T首先要建立一个结点类 TreeNode包含 结点的值value 结点的左右子结点public class TreeNode { public int value; public TreeNode left; public TreeNode right; public TreeNode(int value) { this.value=value; left=null;

2022-01-02 20:36:24 120

原创 数据结构二叉树的基本概念

树的优点:以有序二叉树来说 可以提高检索效率(二分查找)同时也可以提高数据的存储检索效率,但是删除 会相对麻烦一点。树的元素:结点、高度、层(这是结点的属性)、根节点、父节点、子节点、叶子结点(没有子节点)根节点:树的最上面第一层的结点;父节点:每一个结点最多只有一个父节点 根节点没有父节点子结点:每个结点最多有两个左右子结点(这是二叉树)、叶子结点没有子结点,叶子结点的最大层数就是 树的高度 ,也就是最下面的结点在第几层。路径:从根结点到某一结点的路径树有很多种我们最常见的就是二叉树:

2022-01-02 20:22:35 551

原创 前后端的简单交互

以运用eclipse为例,简单介绍一下 它的网页项目创建一个Dynamic Web Project 在他的 WebContent 文件夹里面 新建一个 html文件,可以进行任意命名,新建之后大概是如下界面<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body>

2022-01-01 01:39:44 572

原创 泛型的定义使用

泛型顾名思义就是泛指所有类型,java是一个强类型语言,你给他定义什么类型那他就会创建什么类型的地址空间。嗯。。看起来没啥问题 但是比如对于栈和队列来说 你要入什么类型的栈难道还要再去创建一个栈吗?所以就可以用泛型加在栈或队列上。(不止这个用法)public class Queue<all> { private int p=0; private int s=0; private all a[]=(all[])new Object[10]; public void

2021-12-09 21:34:07 298

原创 循环队列的实现

循环队列的实现有两个点 队列的扩容 和队列如何实现循环1:队列的循环依靠 取余数 运算符%来实现 输入指针 i=i%a.length 输出指针也是 j=j%a.length2: 队列扩容 举一个境况 队列长度为10 要输入15个数据 输入10个数据后 进行三次出队操作 此时还有三个空间 再次输入三个之后 此时 i j 指针相遇 如果在进行入队的话 显然会出现数据覆盖 因此这个时候就要进行队列的扩容操作,每当i==j的时候进行扩容public class XunHuanDui {...

2021-12-09 21:10:24 369

原创 用栈实现队列、用队列实现栈

1、用栈实现队列:栈是先进后出,队列是先进先出定义两个栈 把第一个栈的输出 输入到第二个栈里面就可以 再让第二个栈进行输出就可以main方法 Stack stack=new Stack(); Stack stack1=new Stack(); for(int i=0;i<10;i++) { stack.set(i); } stack.putf(); for(int i=0;i<10;i++) { int a=st...

2021-12-08 21:30:21 192

空空如也

空空如也

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

TA关注的人

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