- 博客(55)
- 收藏
- 关注
原创 SpringBoot的配置 和 日志文件
properties是以key=value的形式配置的键值类型的配置文件,而yml使用的是类似json格式的树形配置方式进行配置的,yml层级之间使用换行缩进的方式配置,key和value之间使用“”英文冒号加空格的方式设置,并且空格不可省略。properties为早期并且默认的配置文件格式,但其配置存在一定的冗余数据,使用yml可以很好的解决数据冗余的问题。......
2022-07-28 11:43:05
2848
原创 Spring Boot
我们之前了解过了Spring,我们知道Spring的诞生是为了简化Java程序的开发。而SpringBoot则是为了简化Spring程序开发。层层递进的关系。一、Spring Boot的优点二、Spring Boot的创建使用Spring Assistant插件,但是目前有问题,只能使用更复杂的方式创建。......
2022-07-28 10:59:10
539
原创 Spring的读取和存储对象
首先要明确的是这一步是非常重要的。只有被配置的包下的所有类,添加了注解才能被正确的识别并保存到Spring中。想要将对象存储在Spring中,有两种@Bean我们还要认识的是方法注解@Bean这块要注意的是如果我们单单使用Bean注解的话,要想获取Bean对象中的值,我们会发现获取不到。......
2022-07-20 12:18:29
554
原创 【EE进阶】Spring
1.学习框架相当于从“小作坊”到“工厂”的升级,小作坊什么都要自己做,工厂是组件式装配,特点就是高效。2.框架更加易用、简单且高效第三方框架使用也越来越多,几乎所有的java项目都会使用的基础框架,叫做javaee框架;.基于这些框架,对比之前的servlet、jdbc,灵活性,易用性,扩展性有很大提升。使用框架,主要要学习更多的注解;框架代码执行流程/顺序,与servlet相似,需要根据约定,先执行某个符合约定的类中哪个符合约定的方法,然后再执行其他哪个。......
2022-07-18 18:59:54
229
原创 JVM相关的知识点
当这块内存需要进行垃圾回收时,会将此区域还存活着的对象复制到另一块上面,然后再把已经使用过的内存区域一次清除掉。内存泄漏线程生命周期太长,导致始终只用一些不常使用的数据(这些数据gc无法正常回收),随着时间越来越长,最终导致OOM;概念遵循双亲委派机制的类加载,类加载不直接加载,认识委派给父类的加载器,以此类推,达到从上到下加载的方式。某个线程,调用方法,创建方法栈帧,入栈,如果栈中的栈帧超过jvm规定的数量,就会报这个异常。对象进入那个区域,哪个区域内存不足,哪个区域就触发该区域的gc。......
2022-07-16 12:48:32
311
原创 HTTP 协议的基本格式和 fiddler 的用法
HTTP 协议的基本格式和 fiddler 的用法1. 使用Chrome开发者工具来进行抓包,观察我们的HTTP协议。2. 使用Fiddler进行抓包
2022-06-26 18:45:46
208
原创 TCP协议相关特性
1.确认应答机制(安全机制)2.超时重传机制(安全机制)3.连接管理机制(安全机制)4.滑动窗口(效率机制)5.流量控制(安全机制)6拥塞控制(安全机制)7.延迟应答(效率机制)8.捎带应答(效率机制)9.粘包问题---UDP和TCP的区别?以特点为基础。--- 基于传输层UDP协议,设计一个可靠是数据传输。或者,基于传输层UDP协议,设计一个可靠是数据传输--- 啥样的场景中适合使用TCP,啥用的场景中适合使用UDP?......
2022-06-26 16:10:52
888
原创 File 和 InputStream, OutputStream 的用法
File 和 InputStream, OutputStream 的用法文件路径分为 绝对路径 和 相对路径 两种。
2022-06-22 17:27:26
1703
原创 【概念】锁策略, cas 和 synchronized 优化过程
一 . 常见的锁策略1. 乐观锁和悲观锁2. 读写锁3. 重量级锁 vs 轻量级锁4 自旋锁5.公平锁 vs 非公平锁6 可重入锁 vs 不可重入锁二、CAS1. 实现原理2.CAS 有哪些应用1) 实现原子类2) 实现自旋锁3 CAS 的 ABA 问题三、Synchronized 原理基本特点优化过程:1. 锁消除2. 锁粗化
2022-05-25 14:13:11
339
原创 网络中的一些基本概念
1. IP地址IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。格式IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:01100100.00000100.00000101.00000110。通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:100.4.5.6特殊IP127.*的IP地址用于本机环回(loop back)测试,通常
2022-05-18 16:15:07
323
原创 线程安全问题的原因和解决方案
如果多线程环境下代码运行的结果是符合我们预期的,即在单线程环境应该的结果,则说这个程序是线程安全的。线程安全问题的原因1. 修改共享数据static class Counter {public int count = 0;void increase() {count++;}}public static void main(String[] args) throws InterruptedException {final Counter counter =...
2022-05-18 15:56:32
212
原创 wait和sleep有什么区别
wait和sleep的概念:sleep:他是让我们的线程休眠一段时间,在等待是时间结束后继续执行当前线程。public class ThreadDemo {public static void main(String[] args) throws InterruptedException {System.out.println(System.currentTimeMillis());Thread.sleep(3 * 1000);System.out.prin...
2022-05-18 15:24:54
284
原创 线程池的执行流程和拒绝策略
1. 线程池的执行流程当任务来了之后,线程池的执行流程是:先判断当前线程数是否大于核心线程数?如果结果为 false,则新建线程并执行任务;如果结果为 true,则判断任务队列是否已满?如果结果为 false,则把任务添加到任务队列中等待线程执行,否则则判断当前线程数量是否超过最大线程数?如果结果为 false,则新建线程执行此任务,否则将执行线程池的拒绝策略。2 线程池的拒绝策略当任务过多且线程池的任务队列已满时,此时就会执行线程池的拒绝策略,线程池的拒绝策略默认有以下 4 种: Abo
2022-05-18 15:10:07
672
原创 【JavaEE】java线程的几种状态
【JavaEE】java线程的几种状态我们先来看看Java线程状态的一幅图:1. New状态:初始状态,即安排了工作, 还未开始行动;2. Runnable状态:运行状态,这面还包含了就绪,运行等状态;3. Waiting状态:等待状态,就是在等待运行;4. Time_Waiting状态:超时等待,就是在等待运行;5. Blocked状态:阻塞状态,就是在等待运行;6. Terminated状态:终止状态。工作完成了。...
2022-05-02 14:43:50
429
原创 【JavaEE】Thread 类的基本用法
【JavaEE】Thread 类的基本用法1. 线程创建2. 线程中断3. 线程等待4. 线程休眠5. 获取线程实例
2022-05-02 13:57:47
239
原创 【JavaEE】进程和线程的区别与联系
线程我们在前文已经解释过了,那什么又是线程,线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。我们可以看出进程包含线程,那么他两有什么叙.
2022-05-01 21:11:53
278
原创 【JavaEE初阶】进程调度的过程
什么是进程调度?进程调度是指操作系统按某种策略或规则选择进程占用CPU进行运行的过程。无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。那么我们先来看看进程的一个状态----》当计算机系统处于就绪状态的用户进程数多于CPU数时,就会产生多个进程或线程同时竞争CPU的结果。假设现在只有一个CPU可用,那么操作系统就必须选择下
2022-05-01 20:53:57
598
原创 LinkedList 和 链表
LinkedList 和 链表我们之前已经学习了ArrayList,我们知道ArrayList是通过数组来储存元素的。所以,在我们使用他来插入删除链表的时候,时间复杂度达到了O(n),效率很低,所以ArrayList不适合于插入删除操作,因此,java又引入了一种新型的结构-------LinledList。LinkedList常用的方法ArrayList和LinkedList的区别
2022-04-18 11:08:37
626
原创 ArrayList 和 顺序表
ArrayList 和 顺序表 ArrayList的使用1.ArrayList的构造2. ArrayList常见的方法3. ArrayList的遍历ArrayList的扩容机制
2022-04-13 14:37:00
763
原创 final,finally,finalize 的区别
final,finally,finalize 的区别final 用于声明 属性(属性不可交变)、方法(方法不可覆盖)、类(类不可继承)。finally 是 异常处理语句结构 的一部分,不管是否有异常,他的语句总是执行。finalize 是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。
2022-03-16 23:15:55
5976
原创 链表练习题(续)
1. 链表的回文结构链表的回文结构_牛客题霸_牛客网思路:经过以前做题的经验,要找回文结构,我们首先要找他的中心结点,--->中心节点的求法,我们在上次已经写过了,那就直接用。找到了中心结点,那我们要做的是,将前半段反转,上次也写过了。(链表的练习题_大干部的博客-优快云博客),最终我们要写的只是,让两边的结点同时走,比较其的val,就可以了。代码:public class PalindromeList { public boolean chkPalindrome(Li
2022-03-16 15:38:52
117
原创 链表的练习题
1.删除链表中等于给定值val的所有节点。2. 反转一个单链表。3. 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。4. 输入一个链表,输出该链表中倒数第k个结点。5. 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的
2022-03-14 22:22:13
622
原创 Iterable、Collection、List 的常见方法签名以及含义
Iterable、Collection、List 的常见方法签名以及含义
2022-03-14 13:58:17
445
原创 时间复杂度 和 空间复杂度
时间复杂度 和 空间复杂度时间复杂度例题; 计算阶乘递归Factorial的空间复杂度? 计算fibonacci的空间复杂度?/ 计算bubbleSort的空间复杂度? 计算斐波那契递归fibonacci的时间复杂度?/ 计算bubbleSort的时间复杂度?
2022-03-12 20:41:02
157
原创 选择排序 Java
选择排序的概念:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。 以此类推,直到全部待排序的数据元素的个数为零。 选择排序是不稳定的排序方法。另外,选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。
2022-03-07 21:17:12
212
4
原创 二分查找 Java和C语言
针对 有序数组,可以使用更高效的二分查找。以升序数组为例, 二分查找的思路是先取中间位置的元素, 然后使用待查找元素与数组中间元素进行比较:如果相等,即找到了返回该元素在数组中的下标 如果小于,以类似方式到数组左半侧查找 如果大于,以类似方式到数组右半侧查找重点是有序数组。快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。Java实现:public static void main(String[] args) { int[] arr
2022-03-07 20:20:56
745
2
原创 【Java】数组
1. 数组的基本概念数组:可以看做是 一种相同数据类型元素的集合。(在内存中占一段连续的内存单元)在java中包含6个整形类型元素的数组,就相当于上图中连在一起的6个车位,从上图中可以看到:1. 数组中存放的元素其类型相同 2. 数组的空间是连在一起的 3. 每个空间有自己的编号,其实位置的编号为0,即数组的下标。1.1数组的创建及初始化T[] 数组名 = new T[N];T:表示数组中存放元素的类型 T[]:表示数组的类型 N:表示数组的长度.
2022-03-07 13:14:34
153
原创 【Java】方法
1. 方法的概念和使用1. 是能够模块化的组织代码(当代码规模比较复杂的时候)。 2. 做到代码被重复使用, 一份代码可以在多个位置使用。 3. 让代码更好理解更简单。 4. 直接调用现有方法开发, 不必重复造轮子。方法的定义递归练习写一个递归方法,输入一个非负整数,返回组成它的数字之和. 例如,输入 1729, 则应该返回1+7+2+9,它的和是191. 按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)2. 递归求 1 + 2 + 3 + ... + 10
2022-03-07 11:04:20
332
2
原创 【Java】逻辑控制
If 语句1. 语法格式:第一种:if(布尔表达式){// 语句}如果布尔表达式结果为true,执行if中的语句,否则不执行。第二种:if(布尔表达式){// 语句1}else{// 语句2}如果布尔表达式结果为true,则执行if中语句,否则执行else中语句。第三种:if(布尔表达式1){// 语句1}else if(布尔表达式2){// 语句2}else{// 语句3}......表达式1成立,执行语句1...
2022-03-06 15:59:06
105
原创 【Java】运算符
Java的运算符其实与C的运算符大体都是相同的,只有极个别几个在用法上会有一点点差异。我们也就简单的叙述一下了。算数运算符:1. 基本的四则运算符 :+ - * / % 这五种。2. 增量运算符:+= -= *= /=这种运算符,在运算完成之后会将结果 赋值 给左边的操作数。这种运算符非常的简便。3. 自增自减运算符:++ --这里的运算性质和C里面的是一样的。关系运算符:关系运算符主要由6个:== != < > <= >=注意:1...
2022-03-06 14:39:08
306
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人