自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多线程相关知识

线程池是一种多线程处理形式,它的执行流程是:当有任务提交时,首先判断有没有达到核心线程数量,如果没有达到,就由线程工厂创建一个工作线程来执行任务,如果达到了,就看工作队列有没有满,如果没有满,就把新提交的任务存储在工作队列里面,如果工作队列也满了,再查看有没有达到线程池的最大数量,没有达到就创建一个新的工作线程来执行任务。进程就是在内存中正在运行的程序,像电脑中的QQ、微信、爱奇艺视频都是进程,线程是进程中的一个最小执行单元,像微信中的搜索好友、添加好友、查看朋友圈都属于线程,一个进程最少得有一个线程。

2023-09-26 01:58:45 26

原创 HashMap扩容及相关

HashMap的默认负载因子是0.75,不是其他数是因为阈值= 负载因子x 容量,根据HashMap的扩容机制,他会保证容量的值永远都是2的幂,为了保证负载因子x容量的结果是一个整数,这个值是0.75比较合理,因为这个数和任何2的次幂乘积结果都是整数。一般正常的元素不会超过阈值,只有插入一堆重复的元素,hash值一样才可能达到阈值,这个简称Dos攻击 元素一旦多起来,链表查找的效率就远不及红黑树,维护红黑树需要占用比链表更多的空间,而且当链表长度足够短的时候,链表查找的效率反而比红黑树更高。

2023-09-16 20:12:01 44 1

原创 分布式搜索引擎Elasticsearch

实现过程,先将文档的内容通过算法进行分词,得到一个词条列表,再讲词条列表当做key,包含该词条的文档id列表作为值,形成一张表,因为词条是唯一的,所以给词条创建索引可以提高搜索效率,通过词条查询可以得到文档ID,再通过文档ID查询到具体的文档。ES的技术栈是ELK,E代表Elasticsearch,功能是存储、搜索、分析数据,L代表Logstash,功能是数据抓取,K代表Kibana,功能是数据可视化,提供了图像化界面,可以操作ES。正向索引是先通过文件找到具体的文件,再获取文件中的内容过程,

2023-09-15 21:05:02 55

原创 Linux常用命令

tar -zxvf test.tar.gz -C /usr/local :将test.tar.gz文件进行解压,并将解压后的文件放在/usr/local目录。mv demo1/ demo2/ :如果demo2目录不存在,将demo1目录改名为demo2,如果demo目录存在,将demo1移动到demo2目录中。tar -zcvf test.tar.gz ./* :将当前目录下所有文件打包并压缩,打包后的文件名为test.tar.gz。

2023-09-04 16:55:45 828 1

原创 网络编程-UDP

UDP是面向无连接的、不需要确认双方是否存在,所以它是不可靠的协议。Java提供了一个类叫DatagramSocket来完成基于UDP协议的收发数据。使用DatagramSocket收发数据时,数据要以数据包的形式体现,一个数据包限制在64KB以内。

2023-08-29 21:47:07 28 1

原创 java-网络编程

网络编程,意思就是编写的应用程序可以与网络上其他设备中的应用程序进行数据交互。网络编程有什么用呢?这个就不言而喻了,比如我们经常用的微信收发消息就需要用到网络通信的技术、在比如我们打开浏览器可以浏览各种网络、视频等也需要用到网络编程的技术。我们知道什么是网络编程、也知道网络编程能干什么后了,那Java给我们提供了哪些网络编程的解决方案呢?Java提供的网络编程的解决方案都是在java.net包下。

2023-08-29 00:21:58 31 1

原创 Java-异常

先写一个异常类再写一个测试类,在测试类中定义一个saveAge(int age)方法,对age判断如果年龄不在0~100之间,就抛出一个MyException 异常对象给调用者。try {System.out.println("年龄被成功保存:" + age);}else {throw new MyException("年龄不在范围内");自定义异常可能是编译时异常,也可以是运行时异常1.如果自定义异常类继承Excpetion,则是编译时异常。

2023-08-28 00:43:38 38 1

原创 多线程创建方式 二

线程的创建方式 需要写一个Runnable接口的实现类,然后再把Runnable实现类的对象传递给Thread对象,使用匿名内部类可以直接创建Runnable接口的匿名内部类对象,传递给Thread对象。在Callable接口中有一个call方法,重写call方法就是线程要执行的代码,它是有返回值的。3.创建FutureTask类的对象,将Callable对象传递给FutureTask。再定义一个测试类,在测试类中创建线程并启动线程,还要获取返回结果。2.创建Callable实现类的对象。

2023-08-26 00:58:30 22

原创 多线程创建方式 一

12306网站就是支持多线程的,因为同时可以有很多人一起进入网站购票,而且每一个人互不影响。再比如百度网盘,可以同时下载或者上传多个文件。这些程序中其实就有多条执行路径,每一条执行执行路径就是一条线程,所以这样的程序就是多线程程序。

2023-08-25 01:00:44 32 1

原创 RedisTemplate序列化

通过设置适合的序列化方式,可以提高存取效率,并且满足业务需求。需要注意的是,序列化和反序列化可能会占用较多的时间和内存资源,因此在存储大量数据时,应该考虑对象的大小和选择合适的序列化方式来优化性能。对象传递和保存时,保证对象的完整性和可传递性。实现序列化,将对象序列化成字节数组进行存储。根据字节流中保存的对象状态及描述信息,通过反序列化重建对象;使用不同的序列化方式可以根据实际需求来选择合适的方式。客户端连接池的封装,提供了一系列的操作方法,方便在。进行对象的序列化和反序列化时,可以通过。

2023-08-23 23:28:15 144

原创 IO流(字符流)

使用字节流可以读取文件中的字节数据。但是如果文件中有中文使用字节流来读取,就有可能读到半个汉字的情况,这样会导致乱码。虽然使用读取全部字节的方法不会出现乱码,但是如果文件过大又不太合适。所以Java提供了另外一种流,叫字符流,字符流是专门为读取文本数据而生的。

2023-08-21 20:11:31 33 1

原创 IO流(字节流)

IO流的作用:就是可以对文件或者网络中的数据进行读、写的操作。把数据从磁盘、网络中读取到程序中来,用到的是输入流。把程序中的数据写入磁盘、网络中,用到的是输出流。简单记:输入流(读数据)、输出流(写数据)IO流在Java中有很多种,不同的流来干不同的事情。Java把各种流用不同的类来表示,这些流的继承体系如下图所示:IO流分为两大派系:1.字节流:字节流又分为字节输入流、字节输出流2.字符流:字符流由分为字符输入流、字符输出流。

2023-08-20 19:40:00 45 1

原创 关于ThreadLocal

ThreadLocal是Java中的一个线程本地变量工具类,如果创建一乐ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个副本,在实际多线程操作的时候,操作的是自己本地内存中的变量,从而规避了线程安全问题。传递上下文信息:需要在线程之间传递一些上下文信息时,例如用户身份、请求信息等,可以使用ThreadLocal将这些信息绑定到当前线程上,其他代码可以通过ThreadLocal获取到这些信息,而不需要显式地传递参数。每个线程都可以独立地操作自己的变量副本,不受其他线程的干扰。

2023-08-18 21:41:59 30

原创 Arrays类

Arrays是,它可以便捷的对数组中的元素进行遍历、拷贝、排序等操作。

2023-08-16 20:44:05 18

原创 Stream流

Stream流(Stream API)是从JDK8以后才有的一个新特性,是专业用于对集合或者数组进行便捷操作的。

2023-08-16 00:00:27 27 1

原创 Git工具

Git 是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。通过Git 仓库来存储和管理这些文件,Git 仓库分为两种:本地仓库:开发人员自己电脑上的 Git 仓库远程仓库:远程服务器上的 Git 仓库commit:提交,将本地文件和版本信息保存到本地仓库push:推送,将本地仓库文件和版本信息上传到远程仓库pull:拉取,将远程仓库文件和版本信息下载到本地仓库。

2023-08-14 21:44:40 29

空空如也

空空如也

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

TA关注的人

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