- 博客(24)
- 收藏
- 关注
原创 线程的创建方法及Thread类的常见方法
线程是为了解决并发编程引入的机制, 线程相比于进程来说,更轻量进程是操作系统资源分配的基本单位 , 线程是操作系统调度执行的基本单位一个线程一旦进入到工作状态,他就会按照任务的步骤去进行工作,不完成时不会结束的,但有时我们需要增加一些机制,涉及到了停止线程的方式。如果线程因为调用 wait/join/sleep 等方法而阻塞挂起,则以 InterruptedException 异常的形式通知,前面已经介绍了如何通过复写 run方法创建一个线程对象,但线程对象被创建出来并不意味着线程就开始运行了。
2023-09-25 23:08:06
439
原创 【数据结构】 二叉搜索树 和 哈希表(Map、Set 集合底层数据结构)
线性探测的缺陷是产生冲突的数据堆积在一块,这与其找下一个空位置有关系,因为找空位置的方式就是挨着往后逐个去找,因此二次探测为了避免该问题,找下一个空位置的方法为: Hi= (H0 + i^2 )% m, 或者:Hi= (H0 - i^2)% m。其中:i = 1,2,3…, H0是通过散列函数Hash(x)对元素的关键码 key 进行计算得到的位置,m是表的大小。虽然哈希表一直在和冲突做斗争,但在实际使用过程中,我们认为哈希表的冲突率是不高的,冲突个数是可控的,也就是每个桶中的链表的长度是一个常数,所以,
2023-09-19 22:29:12
499
原创 Java集合--Map 和 Set概念及基本使用方法
Map中键值对的Key不能直接修改,value可以修改,如果要修改key,只能先将该key删除掉,然后再来进行重新插入。Set的底层是使用Map来实现的,其使用key与Object的一个默认对象作为键值对插入到Map中的。,该内部类中主要提供了的获取,value的设置以及Key的比较方式。Set与Map主要的不同有两点:Set是继承自Collection的接口类,Set中的Key不能修改,如果要修改,先将原来的删除掉,然后再重新插入。Set最大的功能就是对集合中的元素进行去重。
2023-09-18 16:21:18
460
原创 PriorityQueue中元素为对象类型时的比较
上篇总结了优先级队列,优先级队列在插入元素时有个要求:插入的元素不能是null 或者元素之间必须要能够进行比较。那么如何让自定义类型对象可以比较呢?有以下几种方式:复写基类的 equals实现 Comparble 接口,重写 compareTo 方法基于比较器比较
2023-09-16 23:30:45
267
原创 Java集合-- 栈(Stack)和 队列(Queue)
栈的底层是数组,队列:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈栈的删除操作叫做出栈, 出数据在栈顶。队列。
2023-09-11 13:55:45
167
原创 Java集合--List(ArrayList、LinkedList)
ArrayList和LinkedList是Java中两种常用的List实现类。它们之间的主要区别如下:内部实现:ArrayList是动态数组实现,底层使用数组来存储元素。LinkedList是链表实现,底层使用双向链表来存储元素。随机访问:对于随机index访问的get和set方法,一般ArrayList的速度要优于LinkedList。插入和删除操作:对于插入和删除操作,LinkedList优于ArrayList。内存占用:LinkedList比ArrayList更占内存,因为LinkedLis
2023-09-10 21:10:19
1033
1
原创 Linux环境安装MySQL5.7的初始密码
linux安装完MySql5.7后,为root用户随机生成了一个密码,在 error log 中。cat /var/log/mysqld.log | grep password 查看临时密码.如果是RPM包, error log 的位置默认为:/var/log/mysqld.log。启动过一次 mysql 就可以查看临时密码。
2023-09-03 21:56:04
948
原创 MyBatis -- MyBatis简介、配置开发环境及简单使用教程
MyBatis 是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis 去除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。简单来说 MyBatis 是更简单的完成程序和数据库交互的工具,也就是更简单的操作和读取数据库的工具。MyBatis 中文官方文档。
2023-08-23 22:26:49
379
原创 Spring MVC 功能及常用注解
Spring MVC是一种Web框架,从一开始就包含在 Spring 框架中,它是基于 Servlet API构建的,它提供了一种基于模型-视图-控制器(MVC)的Web开发模型。Spring MVC的核心是DispatcherServlet,它负责接收HTTP请求,将请求分发给相应的控制器,并将控制器的结果返回给客户端。Spring MVC的控制器是一个Java类,它负责处理HTTP请求并返回响应。控制器通常包含一个方法,该方法将HTTP请求映射到相应的视图。视图。
2023-08-20 22:16:34
312
1
原创 Spring Boot 配置文件—properties、yml 语法格式、使用、配置项、读取
Component 在 Spring Boot 启动的时候会注入的框架中,注入到框架中时会执行 @PostConstruct 初始化方法,这个时候就能读取到配置信息了。yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中文就是“另⼀种标记语⾔”。properties 配置文件是最早起的配置文件格式,也是创建 Spring Boot 项目默认的配置文件。,properties 和 yml 的读取方式是相同的,yml 是树形结构的配置文件,
2023-07-29 12:03:14
886
原创 SpringBoot 项目的创建和使用
Spring Boot 译为 Spring 脚手架,它是为了简化 Spring 程序开发而诞生的。2.1 使用 Spring Boot 来实现和浏览器及用户的交互@RequestMapping("/sayhi") //路由 localhost:8080/sayhi就可以访问到此 public String sayhi() {} }
2023-07-28 14:24:40
316
1
原创 Spring 详解(学习总结)
之前是上级对象创建并控制下级对象, 通过控制权发生反转后,是将下级对象注入到当前对象中,下级的控制权不再由上级类控制了, 这样的好处就是即使下级类发生任何变化,当前类都是不受影响的,,⽐如 singleton 单例作⽤域,就表示 Bean 在整个 Spring 中只有⼀份,它是全局共享的,那么当其他⼈修改了这个值之后,那么另⼀个⼈读取到的就是被修改的值。所以,依赖注⼊(DI)和控制反转(IoC)是从不同的⻆度的描述的同⼀件事情,就是指通过引⼊ IoC 容器,利⽤依赖关系注⼊的⽅式,实现对象之间的解耦。
2023-07-26 21:29:40
261
1
原创 【网络原理】网络层ip协议总结
指定IP协议的版本,对于IPv4来说,就是4。:IP头部的长度是多少个32bit,也就是 length * 4 个字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节。:3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。:IP数据报整体占多少个字节(头+载荷)。
2023-05-24 22:06:54
97
1
原创 【网络原理】传输层重点协议 TCP与UDP协议详解
本文分别介绍了TCP和UDP的报文格式、特点、对应的应用层协议,并着重介绍了TCP原理,TCP的几个重要的机制。
2023-05-17 23:53:47
1116
1
原创 【网络原理】浅谈网络中的一些基本概念
网络互连的目的是进行网络通信,也就是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用。
2023-05-05 22:25:44
246
原创 浅谈HashMap, HashTable, ConcurrentHashMap 之间的区别--Java
浅谈多线程编程中HashMap,HashTable,ConcurrentMap 在线程安全、效率上的区别
2023-04-20 22:01:59
156
原创 一片文章总结Java初学阶段的常见的几种锁策略(内含八股文知识点)
二、CAS1.什么是CAS?2.CAS是怎么实现的3.CAS的应用场景(1)实现原子类(2)实现自旋锁4.CAS的ABA问题三、Synchronized原理及加锁优化过程四、JUC(java.util.concurrent)的常见类1.Callable接口理解Callable,及其与Runnable的区别2.ReentrantLockReentrantLock和Synchronized的区别如何选择使用哪个锁?3.原子类例:基于 AtomicInteger 实现多线程自增同一个
2023-04-12 15:38:40
569
1
原创 wait和notify讲解,及3个线程搭配wait和notify连续输出10次ABC
使用synchronized、wait和notify。 三个线程t1、t2、t3分别循环打印10次A、B、C,
2023-04-07 01:39:24
660
1
原创 多线程初阶-进程调度基本过程
通俗来讲,进程就是运行起来的程序。它是一个重要的“软件资源”,是由操作系统内核负责管理的。通常,操作系统的重要任务之一是使用户充分、有效的利用系统资源。采用一个什么样的概念来描述计算机程序的执行过程和作为资源分配的基本单位,才能充分反应操作系统的执行并发、资源共享及用户随机的特点呢?这个概念就是进程。通俗来讲,进程就是运行起来的程序。它是一个重要的“软件资源”,是由操作系统内核负责管理的。
2023-03-23 00:42:41
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人