- 博客(29)
- 收藏
- 关注
原创 为什么重写equals方法还要重写hashCode方法
例如定义两个对象,值相等,equals重写了,但是hashcode没有重写,那么此刻,equals得出相等,但是hashcode得出不相同。所以我们必须重写hashcode,以让当equals相同时,hashcode也必须相同,这时候当两个值都存进hashMap时,会自动去重。根据业务状况重写equals后,一定要将hashCode用一定相同的规则做hash,防止在一些需要用到对象hashCode的地方造成误会,引发问题。
2024-03-27 23:40:02
238
原创 K8s基本概念和使用
pod是管理的最小单位,一个 Pod 可以包含一个或多个容器,每个 Pod 有自己的虚拟IP。一个工作节点可以有多个 pod,主节点会考量负载自动调度 pod 到哪个节点运行。
2023-04-03 01:32:51
239
转载 Mybatis kt Mapper和Mybatis-Plus的常用方法
Mybatis-Pluswrapper介绍:AbstractWrapper: 用于查询条件封装,生成sql的where条件AbstractLambdaWrapper: Lambda语法使用Wrapper统一处理解析lambda获取columnQueryWrapper: Entity 对象封装操作类,不是用lambdaUpdateWrapper: Update条件封装,用于Entity对象更新操作其中QueryWrapper是最常用的Mapper CRUD接口int insert (T e
2021-08-26 17:52:05
1431
原创 前端知识点
双向绑定:在Vue中,使用双向绑定非常容易,我们仍然先创建一个VM实例:$(function () { var vm = new Vue({ el: '#vm', data: { email: '', name: '' } }); window.vm = vm;});然后,编写一个HTML FORM表单,并用v-model指令把某个和Model的某个属性作双向绑定:<fo
2021-07-22 01:56:43
128
1
原创 消息队列知识点
RabbitMQ的使用场景1.服务间异步通信:通过把把消息发送给消息中间件,消息中间件并不立即处2.顺序消费:拆分多个 queue,每个 queue 一个 consumer,就是多一些 queue 而已,确实是麻烦点;或者就一个 queue 但是对应一个 consumer,然后这个 consumer 内部用内存队列做排队,然后分发给底层不同的 worker 来处理。3.定时任务:用户创建定时任务往死信队列插入一条消息,并设置过期时间为首个任务执行时间死信队列中的消息过期后,消息流向工作队列任务
2021-07-12 15:14:30
295
转载 软件工程
1、什么是软件工程?它目标和内容是什么?软件工程就是用科学的知识和技术原理来定义,开发,维护软件的一门学科。软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程内容:包括开发技术和开发管理两个方面。2、软件开发中有哪几种过程模型?哪些适用于面向对象的软件开发?软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统一软件过程等。其中喷泉模型、统一软件过程适用于面向对象
2021-04-26 13:17:33
1773
原创 面试题
海量数据找出现次数最多分治法 + HashMap (HashMap 不要局限在 Java 语言)将 2.5 亿个整数,分批操作,例如分成 250 万一批,共100批次。每批使用循环遍历一次,存入 HashMap<int1,int2> 里面,int1 对应这个数,int2 对应它出现的次数,没出现就默认是 1 次。每操作完一批,就进行当前的 HashMap 的去重操作,读出 int2 > 1 的,排除掉。接下来的批次,以此类推,得出 100,剩下的自然就是不重复的。用数组实现栈:使用
2021-04-11 22:14:19
83
转载 RPC框架
什么是RPCRPC是远程调用过程的简写,是一个协议,处于网络通信协议的第五层:会话层,其下就是TCP/IP协议,在建立在其基础上的通信会话协议。RPC定义了交互的模式,而应用程序使用这些模式,来访问其他服务器的方法,并不需要关系具体的网络上的细节。RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即无论是调用本地接口/服务的还是远程的接口/服务,本质上编写的
2021-04-11 15:43:11
2430
转载 分布式锁实现
为什么要使用分布式锁为了保证一个方法在高并发情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLcok或synchronized)进行互斥控制。但是,随着业务发展的需要,原单体单机部署的系统被演化成分布式系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题。分布式锁应该具备哪些条件在分
2021-04-10 01:25:41
106
原创 Socket实现聊天室逻辑
WebSocket实现聊天室功能:webscoket客户端:先创建websocket对象,然后调用websocket对象的open,message,error,close等方法作为前端展示node.js版本的webscoket服务端:Java版本的webscoket服务端:推送方法:逻辑跟node.js版本的差不多JavaWebSocket服务端常见注解:**@ServerEndpoint(value = “/websocket”)**定义一个WebSocket服务端。va
2021-04-10 01:04:28
477
原创 Java部署知识点
普通打包部署方式:原文链接Jekins集成部署Jekins:可以看出,jenkins充当的是一个自动构建的作用,允许持续集成和持续交付项目,而Docker相当于虚拟机,或者说是一个容器。1、持续、自动地构建/测试软件项目。2、监控软件开放流程,快速问题定位及处理,提示开放效率。补充:1、jenkins是一个插件的集合K8s和Docker:官方定义1:Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。
2021-03-22 17:32:53
705
原创 Redis面试知识点
Redis面试知识点1.Redis概述在我们日常的Java Web开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导
2021-01-21 20:33:57
1027
1
原创 操作系统面试知识点
1.linux的僵尸进程和孤儿进程的区别,如何清理僵尸进程?(kill僵尸进程的父进程)僵尸进程一个子进程在其父进程没有调用wait()或waitpid()的情况下退出,这个子进程就是僵尸进程。如果其父进程还存在而一直不调用wait,则该僵尸进程将无法回收,等到其父进程退出后该进程将被init回收。孤儿进程**一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。**孤儿进程将被init进程(进程号为1)所收养,并由init进程对他们完成状态收集工作。一个可选的解决方法是,
2020-12-25 21:51:34
89
转载 常见设计模式详解
1.代理模式(应用:一是创建多线程的方式之使用Runnable接口应用了静态代理;二是Spring AOP应用了动态代理)参考文章:https://blog.csdn.net/can_chen/article/details/107827629代理模式分为静态代理和动态代理,动态代理又分为基于接口实现的动态代理和基于子类实现的动态代理;在jdk源码中,很多底层的实现也是基于代理模式的,例如创建线程的方式之一实现Runnable接口就使用了静态代理模式,而Spring框架最为重要的AOP的实现是基于动态代
2020-12-25 18:00:27
522
原创 Java基础知识总结
Java基础Final关键字:final可以用来修饰类、变量(包括成员变量和局部变量)和方法修饰类final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。修饰方法第一个原因是把方法锁定,以防任何继承类修改它的含义第二个原因是效率 父类的final方法是不能被子类所覆盖的,也就是说子类是不能够存在和父类一模一样
2020-12-01 10:45:04
2693
原创 JVM--Java虚拟机常见知识点
虚拟机谈一谈JVM的GC,包括几个垃圾回收算法GC常用算法:GC算法–引用计数法:给每个对象分配一个计数器,引用一次就+1,当有对象没被引用时,就会被回收GC算法–复制算法:复制算法:可以把to区里面的内容复制到from区中他将可用内存按容量划分为大小相等的两块,每次只使用其中一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。这样使得每次都是对整个半区进行内存回收,内存分配时也就不用考虑内存碎片等复杂情况,只要移动堆顶指针,按顺序分
2020-12-01 09:31:25
2577
1
原创 Java多线程常见知识点
Java多线程面试常见知识点谈你对synchronized锁的理解,锁的粒度的是什么,一个线程怎么去判断synchronized锁已经被占用,底层实现是什么?修饰实例方法,作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁 。因为访问静态 synchronized方法占用的锁是当前类的锁,而访问非静态 synchronized 方法占用的锁是当前实例对象锁。修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要
2020-12-01 09:22:23
464
1
原创 Java框架常见知识点
框架mybatis的一级缓存和二级缓存一级缓存是SqlSession级别的缓存,只要SqlSession没有flush或close,它就存在。虽然在上面的代码中我们查询了两次,但最后只执行了一次数据库操作,这就是Mybatis提供给我们的一级缓存在起作用了。因为一级缓存的存在,导致第二次查询id为41的记录时,并没有发出sql语句从数据库中查询数据,而是从一级缓存中查询。简单地来说就是,当用户查询相同参数下的同一条SQL语句两次,第二次的查询结果会在第一次的一级缓存中查询。一级缓存是SqlSess
2020-12-01 00:53:46
1845
1
原创 Linux常用命令
Linux的常用命令ls 显示文件或目录mkdir 创建目录cd 切换目录cat 查看文件内容mv 移动或重命名rm 删除文件find 在文件系统中搜索某 文件grep 在文本文件中查找某个字符串rmdir 删除空目录pwd 显示当前目录ln 创建链接文件more、less 分页显示文本文件内容head、tail 显示文件头、尾内容Id 查看当前用户id系统管理命令stat 显示指定文件的详细信息,比ls更详细ifconfig 查
2020-12-01 00:04:07
322
原创 集合与数据结构常见知识点总结
集合和数据结构HashMap的底层结构Node对象数组来存放数据,Hash冲突时会形成Node链表,在链表长度超过8,Node数组超过64时会将链表结构转换为红黑树,Node对象:为什么HashMap集合是线程不安全的?主要原因是没加锁① 同时put碰撞导致数据丢失:多个线程同时执行put操作,计算出来的hashcode值相等,插入到同一位置导致有的数据被覆盖② 同时put扩容导致数据丢失:多个线程执行put操作时同时发现需要扩容,也会发生数据丢失③ 死循环导致CPU100%HashMap
2020-11-25 19:55:45
3904
1
原创 数据库常见知识点
数据库嵌套查询怎么实现嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询。其中外层查询也称为父查询,主查询。内层查询也称子查询,从查询。事务的基本要素(ACID)四大特性 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的
2020-11-24 11:47:17
9061
1
原创 计算机网络常见知识点总结
网络TCP与UDP区别总结:1、TCP面向连接(如打电话要先拨号建立连接); UDP是无连接 的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。4.每一条TCP
2020-11-24 11:34:05
4815
1
原创 计算机网络复习笔记--计算机网络概述
1. 计算机网络概述 --计算机网络复习笔记##1.1 计算机网络分类个域网–>局域网–>城域网–>广域网(从左到右逐渐增大)以太网是局域网的一种1.2 计算机网络拓扑结构1.1.1 总线网络1.1.2 星状网络:处于中心的网络设备可以是集线器,也可以是交换机1.1.3 环状网络1.1.4 树状网络1.1.5 网状网络1.3 网络交换技术1.3.1 电路交换...
2020-01-08 22:54:02
477
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人