自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 System.currentTimeMillis()用法以及计算方式

System.currentTimeMillis()的作用是返回当前的计算机时间,格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。比如在做项目时,需要统计下gc。

2024-03-07 18:35:01 462

原创 Bean 的生命周期的各个阶段

⽣命周期指的是⼀个对象从诞⽣到销毁的整个⽣命过程, 我们把这个过程就叫做⼀个对象的⽣命周期.

2024-02-05 01:00:42 399

原创 Bean 的六种作用域总结

什么是Bean的作用域?Bean的作用域指的是指 Bean 在 Spring 框架中的某种行为模式⽐如单例作⽤域: 表⽰ Bean 在整个 Spring 中只有⼀份, 它是全局共享的. 那么当其他⼈修改了这个值之后, 那么另⼀个⼈读取到的就是被修改的值.观察运行结果得知dog1 和 dog2 为同⼀个对象, dog2 拿到了 dog1 设置的值那么,能不能将Bean对象设置为非单例的(每次获取的bean都是⼀个新对象)这就是了。

2024-02-05 00:39:31 1014

原创 总结 MyBatis 的XML实现方法(使用XML使用实现数据的增删改查操作)

MyBatis是一个优秀的持久层框架,它的XML配置文件是实现数据库操作的关键之一。通过XML文件,可以定义SQL语句、映射关系和一些高级功能。下面将探讨下如何使用MyBatis的XML配置文件实现数据的增、删、改、查操作。

2023-11-15 18:02:22 1279

原创 MyBatis 的注解实现方法整合(完成数据的增删改查操作)

MyBatis是一个用于简化数据库访问层的开源持久层框架。它提供了将对象与数据库表之间的映射关系进行配置的方式,而不需要使用繁琐的 JDBC 代码和手动设置参数。MyBatis的目标是使数据库操作变得更加简单,同时保持足够的灵活性和性能。

2023-11-15 17:29:02 132

原创 汉明距离(Java)

锻炼算法时,重复造轮子不可避免,也是应当的,本方法使用位运算中移位的操作实现位计数功能。两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。

2023-11-12 11:41:20 144

原创 合并二叉树(Java)

给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

2023-11-12 11:08:54 197

原创 最长有效括号

给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

2023-11-11 23:37:46 83

原创 找到所有数组中消失的数字(java)

遍历nums,将遇到的元素index作为索引,让nums[index]增加nums.length;因为原来nums数组中的元素范围在[1, n],所以遍历完成后,所有的nums中的元素不大于nums.length的就是没出现过的元素。给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果.输入:nums = [4,3,2,7,8,2,3,1]输入:nums = [1,1]

2023-11-11 13:06:17 248

原创 回文链表(递归方法)

首先关于链表,有两种常用的实现,分别是数组列表和链表,若想在链表中存储值是如何做到的呢?

2023-11-10 20:55:19 160

原创 IDEA中常用的调试快捷键

快捷键可以帮助你更有效调试代码,逐步执行代码并检查变量值,以及快速定位和解决问题.不过,一些快捷键可能会因为IDE版本或者个人设置而有所不同,但以上是一般情况下的默认设置。在代码行号左侧双击,或者使用。在调试模式下,选中变量,然后。

2023-11-10 18:36:51 972

原创 Spring 中存储 Bean 的相关注解及其用法.

Bean注解通常与@Configuration注解一起使用,@Configuration注解标记的类通常包含了一个或多个@Bean注解的方法,用于定义应用程序中需要的Bean。使用@Bean注解的方法可以接受参数,这些参数可以是其他Bean,也可以是其他配置信息,从而允许你在方法内部执行一些复杂的逻辑来创建Bean实例。总之,@Bean注解是Spring中用于自定义Bean创建的重要注解,它允许你以编程的方式定义和配置应用程序中的Bean。类注解是添加到某个类上的,而方法注解是放到某个方法上的。

2023-11-05 12:43:14 194

原创 垃圾回收(GC)的核心知识点总结

*避免内存泄漏:**在手动内存管理的系统中,程序员需要显式地分配和释放内存。如果程序员犯了错误,忘记释放内存,就会导致内存泄漏,使程序占用的内存不断增加,最终耗尽系统资源。**提高开发效率:**垃圾回收允许程序员专注于解决业务问题,而无需担心手动内存管理。这提高了开发效率,减少了错误的可能性。:手动内存管理容易导致各种内存错误,如空指针引用、野指针等。垃圾回收可以减少这些类型的错误。**提高程序的可维护性:**垃圾回收可以减少内存管理方面的代码,使代码更易于维护和理解。

2023-10-17 16:34:49 67

原创 类加载的过程总结以及双亲委派模型[JVM]

缓存机制将会保证所有加载过的Class都会被缓存,当程序中需要使用某个Class时,类加载器先从缓存区中搜寻该Class,只有当缓存区中不存在该Class对象时,系统才会读取该类对应的二进制数据,并将其转换成Class对象,存入缓冲区中。扩展类加载器是Java类加载层次中的第二级加载器,其加载范围在类加载层次中位于启动类加载器和应用程序类加载器之间。1.当一个类收到类加载请求时,他首先不自己尝试去加载,而是层层向上委派给自己的父类,每一层加载器都如此,因此所有的请求都应该传送到启动类加载器中。

2023-10-17 16:19:53 353

原创 Linux 的常用命令大全

如果当前工作目录是 /home/user/,要引用同一目录下的文件 document.txt,您可以使用相对路径 document.txt,而不需要指定完整的绝对路径。在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。千万不要运行rm -rf / 或 rm -rf /*, 尤其是在公司的生产服务器上,为这个命令是直接删除根目录。查看文件的内容,开头.默认head命令打印其相应文件的开头10行。

2023-10-17 15:24:10 305

原创 求最大bit数(java)

求一个int类型数字对应的二进制数字中1的最大连续数例如3的二进制为00000011,最大连续2个1数据范围:数据组数:11t15,11n1500000进阶: 时间复杂度: O(logn),空间复杂度: O(1)输入:200输出2说明200的二进制表示是11001000,最多有2个连续的1.

2023-10-14 14:55:41 98

原创 Cookie 和 Session 的工作流程总结

HTTP协议自身属于"无状态"协议,默认情况下HTTP协议的客户端和服务器之间的这次通信和下次通信没有直接的联系.而在实际的开发中,我们是需要知道请求之间的关系和联系的.例如登录网站后,第二次访问的时候就知道该请求是否已经登录过了.Cookie和Session的主要目的就是为了弥补HTTP的无状态特性.

2023-09-25 15:26:01 50

原创 HTTPS 的加密流程的总结

网络安全中,"攻击”和防御”是一个对抗的过程这个过程,理论上是“无限升级的过程但是实际上,一般来说,防御方还是比攻击方更有优势的.

2023-09-19 18:41:27 541

原创 总结 HTTP 协议的基本格式和 fiddler 的用法

HTTP协议也是日常开发中非常常用的的一种协议,在众多协议栈里HTTP可能是实际开发中用的最多的。这里说的HTTP是指HTTP1以及HTTP2,他们都是基于TCP协议的,注意:如今最新版的HTTP3是基于UDP的。但如今在互联网中使用的最多的仍然是HTTP1.1的版本。在整个协议栈中,之间的关系是一定的关联关系的,上层协议要调用下层协议,下层协议要给上层协议提供一个支撑,所以说HTTP作为一个应用层协议,他在进行传输数据的时候,就要基于TCP的这一套机制的保证。

2023-09-18 18:21:12 380

原创 数据链路层相关知识

两个设备(同一种数据链路节点)之间进行传递数据。

2023-09-12 21:00:33 138

原创 总结 NAT 机制的工作流程及优缺点

*NAT(Network Address Translator,网络地址转换)**是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术.实际上是为解决IPv4地址短缺而开发的技术:NAT技术作为当前解决IP地址不够用的主要手段,是路由器的一个重要功能;

2023-09-12 17:13:11 1098

原创 IP协议的相关特性

指定IP协议的版本,对于IPV4来说,就是四位.:IP头部的长度是多少个32bit,也就是Length4的字节数,4bit表示的最大的数是15,因此IP头部最大长度是60.:3位优先权字段(已经弃用),4位TOS字段,和1位保留 字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于 ftp这样的程序,最大吞吐量比较重要。:IP数据报整体占多少个字节.

2023-09-12 16:37:53 105

原创 总结 TCP 协议的相关特性

当连续发多条数据的时候,可能会出现"后发先至"的情况,即一个数据报,是先发的另一个是后发的后发的反而先到了(由于网络的延迟、拥塞或丢包等原因,可能会导致部分数据段的顺序被打乱,即后收到的数据段可能先到达接收方)发送方处理确认应答:发送方收到确认应答后,会更新发送窗口的状态,并根据接收方提供的确认应答信息进行相应处理,如确认成功发送的数据段、启动定时器等。发送确认应答:如果数据段没有错误,接收方会发送一个确认应答段(ACK),该段中包含了接收到的数据段的序列号,通知发送方数据已成功接收。

2023-08-16 15:38:46 605 4

原创 UDP 的报文结构以及注意事项

1.图中的16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度2.若校验和出错,会直接丢弃。

2023-08-15 18:21:05 467

原创 编写 UDP版本的 echo server 和 echo client

【代码】编写 UDP版本的 echo server 和 echo client。

2023-08-14 15:05:46 127

原创 网络中的一些基本概念整理总结

是用来定位主机的网络地址,主要是用于标识主机和其他的一些网络设备.比如路由器是用点分十进制来表示的。

2023-08-13 18:26:29 216

原创 总结 File 类的用法和 InputStream, OutputStream 的用法

在new的时候输入路径, 可以是绝对路径也可以相对路径一个依赖于系统的分隔符,String类型的表示另一个依赖于系统的路径分隔符,char类细表示。

2023-08-13 09:25:39 149

原创 编写代码, 基于 AtomicInteger 实现多线程自增同一个变量

【代码】编写代码, 基于 AtomicInteger 实现多线程自增同一个变量。

2023-08-11 19:34:58 139

原创 HashTable, HashMap, ConcurrentHashMap 之间的区别

虽然是线程安全的,但是它只是简单地用修饰了一些关键方法,相当于是对加锁,即对整个对象进行加锁在多线程情况下,这种加锁方式是非常低效的:1) 多个线程访问同一个对象时,无论做什么操作,都会产生锁冲突;2) 如果某个线程触发了扩容机制,那么就会由这个线程完成整个扩容过程,如果元素过多,效率则非常低,其它线程阻塞等待的时间也会更长。

2023-08-11 10:30:03 70

原创 总结锁策略, cas 和 synchronized 优化过程

假设数据一般情况下不会产生并发冲突,所以在数据进行提交更新的时候,才会正式对数据是否产生并发冲突进行检测,如果发现并发冲突了,则让返回用户错误的信息,让用户决定如何去做总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。

2023-08-11 09:37:56 85

原创 总结synchronized

互斥性:synchronized保证了同一时刻只有一个线程可以执行被synchronized修饰的代码块或方法。当一个线程进入synchronized代码块或方法时,其他线程必须等待,直到该线程执行完毕并释放锁。可重入性:同一个线程可以多次获得同一个对象的锁。如果一个线程已经获取了对象的锁,在持有锁的情况下再次进入由synchronized修饰的代码块或方法,不会产生死锁,而是允许继续访问。保证可见性:synchronized不仅保证了线程的互斥执行,还保证了共享变量的可见性。

2023-08-10 15:02:27 774

原创 死锁的成因,和解决方案总结

死锁是多线程或并发程序中的一种情况,当多个线程因为竞争资源而相互等待,并且无法继续执行的情况。在死锁中,每个线程都在等待其他线程释放资源,从而导致所有线程都陷入无限等待状态,无法继续向前执行,最终导致程序无法完成任务。

2023-08-10 14:44:35 236

原创 总结线程池

核心线程数():核心线程数是线程池中保持活动状态的线程数量。在没有任务执行时,核心线程会一直保持存活状态。如果任务数量超过核心线程数,线程池会创建新的线程来执行任务。最大线程数():最大线程数是线程池中允许存在的最大线程数量。当任务数量超过核心线程数且任务队列已满时,线程池会创建新的线程,直到达到最大线程数。超过最大线程数的任务会根据配置的拒绝策略进行处理。空闲线程存活时间():当线程池中的线程数量超过核心线程数时,多余的空闲线程会在一定时间内保持活动状态,等待新的任务。

2023-08-09 16:33:48 92

原创 线程安全问题的原因和解决方案的总结

1.随机调度,抢占式执行(万恶之源,无法解决)2. 多个线程修改同一个变量(可适当调节代码结构,避免这种情况)3.修改操作不是原子性的(加锁,关键字synchronized)4.内存可见性(使用关键字volatile)5.指令重排序(使用关键字synchronized)

2023-08-08 15:07:47 52

原创 单例模式写法的总结(保证线程安全)

知道你很饿,但是当你第一次需要的时候我再给你,不需要的时候是没有我的实例对象给你调用的,这个实例对象通常由方法中创建,由方法来返回。可以保证在程序运行过程中,一个类只有一个实例,而且该实例易于供外界访问,从而方便的控制了实例个数,并节约系统资源。会的,如果多个线程中同时调用getSingleton方法,那么就有可能同时创建出多个实例对象。而懒汉模式是需要才创建,那么多个线程中同时需要会怎么办?的过程中创建实例,所以就写在static代码块中,和类一起加载。因为饿汉模式提前创建好了,所以天生就是线程安全的。

2023-08-08 14:18:35 1162

原创 使用两个线程来累加 count 的值

每个线程循环 1w 次,累加变量 count 的值,count 默认值为 0,注意线程安全问题。

2023-08-07 17:32:27 81

原创 总结 Thread 类基本用法

/自定义标识符@OverrideSystem.out.println("开始执行");while(!flag){try {//线程休眠1sSystem.out.println("线程结束");});flag=true;// 自定义中断标识符的问题在于:线程中断的不够及时。// 因为线程在执行过程中,无法调用 while(!isInterrupt) 来判断线程是否为终止状态,// 它只能在下一轮运行时判断是否要终止当前线程,所以它中断线程不够及时。

2023-08-07 02:00:23 40

原创 Thread类中run和start的区别(方法及运行结果)

单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程!(1)Thread.currentThread().getName()是用于获取“当前线程”的名字。(3) mythread.start()会启动“线程mythread”,“线程mythread”启动之后,会调用run()方法;start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法。(2) mythread.run()是在“主线程main”中调用的,此时的run()方法是运行在“线程mythread”上。

2023-08-07 01:30:23 69

原创 Java 线程的几种状态解析

从,任何线程一般都具有五种状态,即创建、就绪、运行、阻塞、终止。在程序中用构造方法创建一个新线程时,如new Thread(),该线程就是创建状态,此时它已经有了相应的内存空间和其它资源,但是还没有开始执行。新建线程对象后,调用该线程的start()方法就可以启动线程。当线程启动时,线程就进入就绪状态(runnable)由于还没有分配CPU,线程将进入线程队列排队,等待CPU服务,这表明它已经具备了运行条件。当系统挑选一个等待执行的Thread对象后,它就会从等待状态进入执行状态。

2023-08-06 17:32:50 71

原创 进程和线程的区别和联系(总结)

进程是操作系统资源分配的基本单位,线程是处理器(CPU)任务调度和执行的基本单位每个进程都有独立的代码和数据空间(程序的上下文)程序之间的切换会有较大的开销;而同一类线程共享代码和数据空间,每个线程都有自己独立运行的栈和程序计数器(PC),线程之间的切换开销小一个进程有多个线程,执行过程由一个或多个线程共同完成同一个进程的线程共享本进程的地址空间和资源;进程之间的地址空间和资源是相互独立的某进程挂掉,在保护模式下不会对其他进程产生影响;但一个线程奔溃后整个进程都会死掉;多进程比多线程健壮。

2023-08-03 17:36:58 29

空空如也

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

TA关注的人

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