- 博客(65)
- 收藏
- 关注
原创 封装web返回对象
因为SpringMVC的controller层会自动将返回对象封装成json格式返回给客户端,在前后端分离的架构中,后端返回给移动端或者前端的数据最好有固定的格式,由特定的 属性名标记对应的数据。例如 :status 属性代表状态码 , message 属性 为消息内容,date 属性 为 处理后的业务数据。使得前端 获取到的 web 方法的返回结果统一,从而处理更加方便。写代码也会更加顺利。
2023-05-08 04:47:00
350
原创 【备战秋招】权限常见面试题
RBAC模型是指,对于一个系统的权限并不是直接赋予用户的,而是在用户集合和权限集合之间创建一个角色集合,每一个角色都有相应的权限,在创建用户的时候会分配给用户一个或者多个角色,该用户就拥有此角色的所有操作权限。这样做的好处是,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理,减少系统的开销。允许用户在不分享他们的用户名和密码的情况下,授权第三方应用访问特定的用户数据。
2023-04-27 21:06:11
889
原创 【两个月算法速成】day03-链表
单链表删除节点的操作只需要前一个节点不指向原来的节点,就相当于删除了节点添加节点也是只需要改变节点指向就行,如下图所示。
2023-04-24 23:07:35
808
原创 【两个月算法速成】day02
数组是非常基础的数据结构,在面试中,考察数组的题目一般在思维上都不难,主要是考察对代码的掌控能力也就是说,想法很简单,但实现起来 可能就不是那么回事了。首先要知道数组在内存中的存储方式,这样才能真正理解数组相关的面试题数组是存放在连续内存空间上的相同类型数据的集合。数组可以方便的通过下标索引的方式获取到下标下对应的数据。需要两点注意的是数组下标都是从0开始的。数组内存空间的地址是连续的正是因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。
2023-04-23 16:46:24
678
原创 【redis】数据同步:主从库如何实现数据一致
如果redis实例宕机了,在恢复期间,无法服务新来的数据存取请求。redis提供了主从模式,采用读写分离-保证数据副本的一致读操作-主库,从库都可以接收写操作:主库先执行,然后主库将写操作同步给从库。
2023-04-03 14:43:37
501
原创 【redis】RBD-内存快照
类似与照片,记录内存中数据在某一时刻的状态。全量快照(为了保证数据的可靠性)生成RDB文件的两个命令:save:在主线程中执行,会导致阻塞bgsave:创建一个子线程,专门用于写入RDB文件,避免主线程的阻塞(默认配置)redis借助操作系统提供的写时复制技术(Copy-On-Write,COW),在执行快照的同时,正常处理写操作。如果主线程要修改一块数据,这块数据就会被复制一份,生成该数据的副本。然后bgsave子进程把这个副本数据写入RDB文件。
2023-04-03 14:42:52
596
原创 【redis】AOF日志:宕机了,Redis如何避免数据丢失
(因为AOF日志也是在主线程中执行,如果把日志写入磁盘时,磁盘写压力大,就会导致写盘很慢,进而后续的操作就无法执行)然后,使用两个日志保证在重写过程中,新写入的数据不会丢失。每次重写时,主线程fork后台的bgrewriteaof子线程,并且把主线程内存拷贝一份给bgrewrieaof子线程,然后bgrewrieaof子线程在不影响主线程的状况下,逐一把拷贝的数据携程操作。Everysec,每秒写回:每个写命令执行完,只是先把日志写到 AOF 文件的内存缓冲区,每隔一秒把缓冲区中的内容写入磁盘;
2023-04-03 14:39:24
610
原创 【redis】单线程redis为什么这么快
为什么说redis是单线程?redis的网络IO和键值对读写是由一个线程来完成的,这也是redis对外提供键值存储服务的主要流程。
2023-04-03 14:38:10
749
原创 【redis】快速的redis中有哪些慢操作
在拷贝数据的时候,redis正常处理客户端请求,每处理一个请求,从hash表1中第一个索引位置,顺带着将这个索引位置上的所有entries拷贝到哈希表2中,等处理下一个请求时,在顺带拷贝哈希表1中的下一个索引位置的entries。用一个哈希表保存所有的键值对,这样做的好处是通过O(1)时间复杂度快速查找到键值对-》我们只需要计算键的哈希值,就可以知道它对应的哈希桶的位置,然后访问相应的entry元素。但是哈希桶中的元素保存的不是值本身,而是指向具体值的指针。redis使用一个hashb表保存所以的键值对。
2023-04-03 14:35:28
623
原创 蓝桥杯刷题-卡牌-二分
m的最大范围已经超出int,所以我们要使用long,另外n 的最大范围是 2×10^5 ,而m 最大取到 n^2 ,能凑出的最大套牌数应该是 2n,所以r的上限一定不能设小了。的做法,既然要二分那肯定得具有两段性,不难理解,如果我们可以凑出x 套牌,那么[ 1 , x − 1 ] 套牌也都是一定可以凑出来的,而并不一定可以凑出大于x 的套牌数。如果当前牌类型允许补充空白牌的数量足够给我们进行补充到 x ,那么我们让空白牌的数减去需要使用的数量,如果不够用了,那么也返回。整体做法的时间复杂为O(nlogn)
2023-04-02 20:57:17
315
原创 【从0入门JVM】-01Java代码怎么运行的
在深入学习JVM之前,我们需要先了解java程序是如何运行的这是JVM执行代码的一个过程下面分以下几点 介绍Java代码的运行过程。
2022-10-31 00:29:46
207
原创 算法回溯问题-涉及去重
当子集需要去重的时候,如果是树枝去重,就需要使用一个userd数组来标记是否使用数字continue;}用这个就可以进行树枝去重了。
2022-10-30 19:42:39
133
原创 整合elasticsearch遇到的问题
NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{SBV8frpTTIiwbU2dgCOFbA}{127.0.0.1}{127.0.0.1:9300}]
2022-10-26 09:02:19
753
原创 自动拆箱时遇到的NPE问题
拆箱:是将包装类型转换为基本数据类型自动拆箱时由于调用的是intValue方法,所以如果调用方本身是null的话,肯定会NPE。我们需要在测试的时候可以咋自动拆箱的地方进行判断,来避免NPE。
2022-10-15 10:22:53
536
原创 java集合HashMap总结
hash将乘积数写死31,为什么一定是31.一方面冲突范围最小,另一方面31计算的值都在取值范围内所以得到的hash值在源码中*/}我们得到的hash值,需要hash%length来得到放在哪个位置上,如果length的值是2的幂次方,那么就可以得到hash%length = hash&(length-1)。同时,&运算是一定比%运算效率高的。
2022-10-11 14:35:41
250
原创 一篇文章带你看懂Spring的IoC和AOP
IOC(控制反转)是一种思想,不是技术。IOC是指,本来需要类创建的对象,现在交给SPring容器来管理,当我们需要这个对象的时候,就直接从Spring容器中获取,不需要自己主动创建。这样说可能有点难理解,举个例子 类A依赖与类B传统的方式:需要在类A中new出一个类B的对象IoC思想:将对象放入Spring容器中,我们直接从容器中获取对象面向切面编程。
2022-10-10 08:59:23
289
原创 【每日算法】 N叉树的遍历
}}N叉树就是一层中有许多个子节点。如果N叉树进行遍历的时候,在遍历前序的时候每一层其实就是层序遍历。所以很简单我们就可以写出N叉树的前后续遍历。
2022-10-08 17:10:24
304
原创 【每日算法】 通过中后序遍历数组构造二叉树
二叉树的构建差不多就是这样,我们要确定的是左子树右子树来递归构造树,一层一层的构造。如果会了这个二叉树的构造,后面好多二叉树的构造都大同小异了。
2022-10-04 22:30:54
548
原创 java中的集合
本文是看了之后自己用自己的话复述出来的。也可以说是笔记集合分为两大类 collection接口和map接口。collection接口常用于村=存放单一元素,map接口常用于存放键值对。
2022-10-04 13:42:02
511
原创 【Java基础】代理模式
代理模式就是我们用一个替代的对象来对真实的对象进行访问,并且对这个对象进行一些额外扩展功能。灵活性:静态代理灵活性差,接口增加了新的方法以后,目标对象和代理对象都需要进行修改,而且,对目标代码的每个类都要进行代理。动态代理则灵活一些,不需要对每个目标类都实现代理。JVM角度:静态代理在编译时就对接口,实现类,代理类生成了class文件。动态代理则是在运行时生成类字节码,并加载到JVM中。
2022-10-03 15:54:30
364
原创 【每日算法】二叉树专题 路径总和
leetcode链接 112.路径总和典型的深度优先遍历题目,采用递归算法递归算法的三个步骤参数就是树和目标值,为什么我们不传入一个sum=0,每遍历一个节点就让sum加上这个节点的值,这样当然可以,但是代码就变复杂了,我们可以直接将targetSum传入,当遍历到一个节点之后,只需要减去这个值就可以了。这个函数需不需要返回值呢?对于这个题目,我们不需要将树完全遍历,只要找到了目标路径之后,就可以返回了,所以我们需要返回值boolean。
2022-10-02 22:00:22
470
原创 java的序列化
序列化:将对象或数据结构转换成二进制字节流反序列化:将序列化过的二进制字节流转换为对象或者数据结构序列化的目的是能够在网络上传输对象,也能将对象存储到文件系统,数据库,内存中。序列化对应OSI七层模型中的表示层。因为表示层是对数据进行处理。因此,对应TCP/IP的是应用层。
2022-09-30 07:44:33
122
原创 Java基础必知总结
/...}String内部保存字符串的而数组用final修饰,不能被继承同时方法是private类型,并且没有提供修改方法具体原因如何理解 String 类型值的不可变?- 知乎提问。
2022-09-28 23:18:03
97
原创 【计算机网络】HTTP和HTTPS的区别
HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTTP协议是无状态的协议,也就是说,对于服务器,不需要维护客户端过去发送的所有请求信息HTTPS协议其实就是HTTP协议的加强版,在HTTP协议的基础上额外使用SSL/TLS 协议用作加密和安全认证。默认端口号是 443.
2022-09-26 07:05:57
82
原创 每日算法之二叉树的最大深度
104.二叉树的最大深度首先给你一棵树,你能说明什么是深度,什么是高度吗看文字比较枯燥,我们直接来看一个例子后序遍历用来求高度,前序遍历用来求深度在这道题里,我们可以用后序遍历来得到深度,不是说后序遍历是求高度的吗,但是我们树的高度就等于深度,所以我们采用后序遍历讲根节点的高度求出,就可以得到树的深度了。这里我们还是采用递归还记得之前说过的递归三要素吗如果为空节点的话,就返回0,表示高度为0。我们要求的是这棵树的深度,自然参数为这棵树,返回值类型为int。
2022-09-26 06:35:18
80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人