- 博客(37)
- 收藏
- 关注
原创 如何自定义一个线程池,以及创建线程池是构造方法的参数及含义?
基于数组的有界阻塞队列,按FIFO排序。第三种拒绝策略是 DiscardOldestPolicy,如果线程池没被关闭且没有能力执行,则会丢弃任务队列中的头结点,通常是存活时间最长的任务,这种策略与第二种不同之处在于它丢弃的不是最新提交的,而是队列中存活时间最长的,这样就可以腾出空间给新提交的任务,但同理它也存在一定的数据丢失风险。一个任务被提交到线程池后,首先会缓存到阻塞队列,如果阻塞队列满了,则会创建一个新线程,然后从工作队列中的取出一个任务交由新线程来处理,再将刚提交的任务放入阻塞队列。
2023-08-22 11:08:16
102
原创 索引为失效场景以及原因
因为索引保存的是索引字段的原始值,而不是 id + 1 表达式计算后的值,所以无法走索引,只能通过把索引字段的取值都取出来,然后依次进行表达式的计算来进行条件判断,因此采用的就是全表扫描的方式。不过,从 MySQL 8.0 开始,索引特性增加了函数索引,即可以针对函数计算后的值建立一个索引,也就是说该索引的值是函数计算后的值,所以就可以通过扫描索引来查询数据。MySQL 5.5 的话,前面 a 会走索引,在联合索引找到主键值后,开始回表,到主键索引读取数据行,然后再比对 c 字段的值。
2023-08-22 09:54:10
246
原创 项目中使用MD5加密数据
MD5 信息摘要演算法(Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位元(16位元组)的散列值(hash value),用于确保信息传输完整一致。
2023-08-13 20:32:07
100
原创 git push时出现error: RPC failed; curl 56 OpenSSL SSL_read: Connection was aborted, errno 10053解决方案
1、切换网络,或者等网络稳定之后重新推送。如果还是推送不成功有以下两种方案。2、将http连接变为ssh连接。
2023-08-11 11:42:28
677
原创 mybatis-generator使用
在java.com.example.forum目录下创建dao,model软件包,在resources目录下创建包mapper,用来存放生成的文件。新建项目,在项目的resources的目录下创建mybatis目录,再创建generatorConfig.xml文件。在项目中添加mybatis-generator-core-1.3.2.jar的依赖坐标。按照注释,修改为自己要生成的数据库表的po和dao层代码。打开右侧Maven找到generator双击。为dao,model包中的类添加对应的依赖。
2023-08-10 22:12:53
45
原创 Spring Aop
什么是 Spring AOP?什么是 Spring AOP?AOP(Aspect Oriented Programming):⾯向切⾯编程,它是⼀种思想,它是对某⼀类事情的集中处理。⽐如⽤户登录权限的效验,没学 AOP 之前,我们所有需要判断⽤户登录的⻚⾯(中的⽅法),都要各⾃实现或调⽤⽤户验证的⽅法,然⽽有了 AOP 之后,我们只需要在某⼀处配置⼀下,所有需要判断⽤户登录⻚⾯(中的⽅法)就全部可以实现⽤户登录验证了,不再需要每个⽅法中都写相同的⽤户登录验证了。
2023-08-10 21:41:54
33
原创 Mybatis
MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据库中的 记录。简单来说 MyBatis 是更简单完成程序和数据库交互的⼯具,也就是更简单的操作和读取数据库⼯具。MyBatis 也是⼀个 ORM 框架,
2023-08-09 21:59:10
23
原创 Spring MVC
什么是 Spring MVCSpring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为“SpringMVC”。从上述定义我们可以得出两个关键信息:1.Spring MVC 是⼀个 Web 框架。2.Spring MVC 是基于 Servlet API 构建的。然⽽要真正的理解什么是 Spring MVC?
2023-07-29 11:00:00
57
原创 SpringBoot
什么是Spring BootSpring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的。Spring Boot 就是 Spring 框架的脚⼿架,它就是为了快速开发 Spring 框架⽽诞⽣的。Spring Boot 优点快速集成框架,Spring Boot 提供了启动添加依赖的功能,⽤于秒级集成各种框架。内置运⾏容器,⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序。快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬。
2023-07-28 09:00:00
73
原创 Spring使用注解读取和存储对象
存储 Bean 对象前置⼯作:配置扫描路径(重要)注意:想要将对象成功的存储到 Spring 中,我们需要配置⼀下存储对象的扫描包路径,只有被配置的 包下的所有类,添加了注解才能被正确的识别并保存到 Spring 中。其中标红的⼀⾏为注册扫描的包,如下图所示:也就是说,即使添加了注解,如果不是在配置的扫描包下的类对象,也是不能被存储到 Spring 中的。添加注解存储 Bean 对象。
2023-07-27 09:41:52
67
原创 springIOC详解
1.操作容器之前,先要有容器,所以先要得到容器。2.存对象a.创建 Bean(普通类)。b.将 Bean 注册(配置)到 spring-confing.xml 中3.取对象a.得到 Spring 上下⽂,并读取到 Spring 的配置⽂件。b.获取某⼀个 Bean 对象。c.使⽤ Bean 对象。
2023-07-26 17:15:24
64
原创 牛客编程题——合唱团
然后,它的子问题,需要从start前面的left个人里面,选择k-1个,这里left表示k-1个人中最后一个(即第k-1个)人的位置,因此,子问题可以表示成f[left][k-1].有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?从n个学生中选择k个,可以看成是先选出第k个学生,再从剩下学生中选出k个。此处g[][]是存储n个选k个能力值乘积的最小值数组。
2023-07-21 22:09:23
136
原创 根据前序+中序遍历结果重建二叉树
给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。
2023-07-20 11:04:27
85
原创 HTTP协议
header 的整体格式是键值对结构,每个键值对占一行,键和值之间使用 冒号+空格 进行分割。,完全取决于不同浏览器和不同服务器之间的实现区别.回显服务器端收到的请求,测试的时候会用到这个。响应报头的基本格式和请求报头的格式基本一致。会根据用户的历史行为实时更新现有的结果。但是现代浏览器支持的长度一般都很长。多用于提交用户输入的数据给服务器。等属性的含义也和请求中的含义一致。的长度由 header 中的。返回服务器所支持的请求方法。的长度取决于浏览器的实现和。如果多次请求得到的结果一样。
2023-07-18 16:32:58
79
原创 UDP协议
UDP传输的过程类似于寄信。知道对端的IP和端口号就直接进行传输,不需要建立连接;2、不可靠没有任何安全机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息;3、面向数据报应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并;用UDP传输100个字节的数据:如果发送端一次发送100个字节,那么接收端也必须一次接收100个字节;而不能循环接收10次,每次接收10个字节4、缓冲区UDP。
2023-07-17 16:11:51
105
原创 TCP协议
TCP,即,传输控制协议。人如其名,要对数据的传输进行一个详细的控制。源/目的端口号:表示数据是从哪个进程来,到哪个进程去;32位序号/32位确认号:4位TCP报头长度:表示该TCP头部有多少个32位bit(有多少个4字节);所以TCP头部最大长度是 15 * 4 = 606位标志位URG:紧急指针是否有效ACK:确认号是否有效PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走RST:对方要求重新建立连接;我们把携带RST。
2023-07-17 15:29:56
63
1
原创 网络原理之套接字
针对网络编程,操作系统提供了用于网络编程的技术,称为Socket套接字,是系统提供的专门用来实现网络编程的一套APP应用程序在应用层,操作系统工作在传输层,Socket套接字就是传输层对应用层提供的API支持。特殊的,对于开发来说,在条件有限的情况下,一般也都是在一个主机中运行多个进程来完成网络编程。所以即便是同一个主机,只要是不同进程,基于网络来传输数据, 也属于网络编程。注意:发送端和接收端只是相对的,只是一次网络数据传输产生数据流向后的概念。网络编程,指网络上的主机,通过。的一方进程,称为客户端。
2023-07-16 17:53:25
68
1
原创 初识网络原理
分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。端口号的范围是1-65535,但是1-1024是知名端口号,我们自定义的程序一般不使用这个范围内的端口,可以在1025 - 65535之间任意选择一个没有占用的。都必须共同遵从 的一组约定、规则。范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。1应用层:程序员关心的层,我们的工作主要是在这一层,数据的编码、解码方式。
2023-07-16 16:05:43
69
1
原创 JVM运行流程以及垃圾回收
程序计数器的作用:用来记录当前线程执行的行号的。程序计数器是一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。如果当前线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是一个Native方法,这个计数器值为空。程序计数器内存区域是唯一一个在JVM规范中没有规定任何OOM情况的区域!
2023-07-15 21:38:41
494
1
原创 Web 项目部署
是Linux下非常常用的一种包管理器主要应用在Fedora, RedHat, Centos等发行版上yum起到的功能和Maven的依赖管理功能类似使用Maven能帮我们方便的安装一些第三方jar包, 而 yum方便我们方便的安装第三方程序类似的, Github也能起到软件仓库的效果而且确实有些编程语言的包管理工具就是基于Github (例如Go语言).只不过, Github不光能用于分发程序也能管理源码并进行协同开发而yum和maven。
2023-07-15 11:23:28
67
1
原创 Linux的基本使用
ls [选项] [目录或文件:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。-a列出目录下的所有文件,包括以开头的隐含文件。-d将目录象文件一样显示,而不是显示其下的文件。如:ls –d指定目录-k以k字节的形式表示文件的大小。ls –alk指定文件-l列出文件的详细信息。-r对目录反向排序。-t以时间排序。-R列出所有子目录下的文件。递归: pwd:显示用户当前所在的目录cdLinux。
2023-07-15 10:40:47
1000
1
原创 Java文件操作和IO
void写入要给字节的数据voidb)将b这个字符数组中的数据全部写入os中intint len)将b这个字符数组中从off开始的数据写入os中,一共写len个voidclose()关闭字节流voidflush()重要:我们知道I/O的速度是很慢的,所以,大多的为 了减少设备操作的次数,在写数据的时候都会将数据先暂时写入内存的一个指定区域里,直到该区域满了或者其他指定条件时才真正将数据写入设备中,这个区域一般称为缓冲区。
2023-06-06 17:33:02
27
原创 单例模式、阻塞队列、线程池
线程安全问题发生在首次创建实例时. 如果在多个线程中同时调用 getInstance 方法, 就可能导致创建出多个实例。// 1. 用来处理大量短时间工作任务的线程池,如果池中没有可用的线程将创建新的线程,如果线程空闲60秒将收回并移出缓存。// 6. 创建一个指定大小(不传入参数,为当前机器CPU核心数)的线程池,并行地处理任务,不保证处理顺序。// 5. 创建一个指定大小的线程池,可以在给定时间后执行或定期执行。// 3. 创建一个操作无界队列且只有一个工作线程的线程池。指定一下线程池中的最大线程数。
2023-06-05 17:40:41
61
原创 java多线程
目录1、线程1,1 进程1.2 线程1.2.1 并发线程为什么成为了刚需:1.2.2 进程与线程的区别2、创建线程的几种方式2.1、继承Thread类2.2、实现Runnable接口2.3 实现Callable接口 2.4、使用线程池3、Thread类的几种属性及方法3.1、属性3.2、方法4、线程状态5、线程安全5.1、线程不安全的原因6、synchronized6.1、synchronized 的特性6.1.1、互斥6.1.2、刷新内存6.1.3、可重入6.2、synchronized 使用示例
2023-05-15 20:45:06
157
原创 java反射
Java的反射(reflflection)机制是在状态中,对于任意一个类,都能够知道这个类的;对于任 意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflflection)机制。用途1.在日常的第三方应用开发过程中,经常会遇到,这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方法。2.反射最重要的用途就是,比如在spring中,我们将所有的类Bean交给。
2023-05-03 16:16:29
35
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人