首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
java农
获赞
47
粉丝
11
关注
0
看过 TA
104
北京科技大学
2012
Java
IP属地:湖南
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑java农吗?
发布(53)
评论
刷题
收藏
java农
关注TA,不错过内容更新
关注
2022-12-08 10:31
已编辑
北京科技大学 Java
Spring Security入门学习
认识Spring SecuritySpring Security 是为基于 Spring 的应用程序提供声明式安全保护的安全性框架。Spring Security 提供了完整的安全性解决方案,它能够在 Web 请求级别和方法调用级别处理身份认证和授权。因为基于 Spring 框架,所以 Spring Security 充分利用了依赖注入(dependency injection, DI)和面向切面的技术。核心功能对于一个权限管理框架而言,无论是 Shiro 还是 Spring Security,最最核心的功能,无非就是两方面:认证授权通俗点说,认证就是我们常说的登录,授权就是权限鉴别,看看请求...
0
点赞
评论
收藏
分享
2022-12-07 10:24
北京科技大学 Java
Spring Boot3.0升级,踩坑之旅,附解决方案
一. 编译报错,import javax.servlet.*; 不存在这个报错主要是Spring Boot3.0已经为所有依赖项从 Java EE 迁移到 Jakarta EE API,导致 servlet 包名的修改,Spring团队这样做的原因,主要是避免 Oracle 的版权问题,解决办法很简单,两步走:1 添加 jakarta.servlet 依赖<dependency> <groupId>jakarta.servlet</groupId> <a...
0
点赞
评论
收藏
分享
2022-12-07 10:17
已编辑
北京科技大学 Java
从进程的角度来看JVM的内存分布
JVM(下面JVM都是指代HotSpot)本质上是运行在操作系统上的一个C++程序,本文会从这个角度来构建对于JVM内存的完整视角,以HotSpot这个JVM实现运行在Linux操作系统上进行分析,在分析的过程中会解释清楚一些不太好理解的概念,诸如堆外内存,NIO可以避免native堆与java堆的数据拷贝...一、JVM进程内存占用图像图像拆解解析用户态虚拟内存、内核态虚拟内存,动态映射与线性映射上图中机器持有4G的物理内存,JVM进程则对应4G的虚拟内存空间(物理内存与虚拟内存大小并不需要保持一致); PS:为什么以4G(32位)为例,因为64位的设计因为地址空间足够反而简单一些。 可以看...
0
点赞
评论
收藏
分享
2022-12-06 10:46
已编辑
北京科技大学 Java
Java:MessageDigest&Base64类的解析与
在进行JavaWeb项目开发时,尤其是在实现登录/注册功能时,处于安全性考虑,经常需要将前端提交的用户密码信息做加密处理之后再存储到数据库中。而相对经常听到的加密算法是md5算法,那么,什么是MD5算法呢?MD5算法与加密散列函数 MD5算法,全称为:MD5信息摘要算法(MD5 Message-Digest Algorithm),是一种被广泛应用的密码散列函数/加密散列函数。而作为散列函数之一的加密散列函数(Cryptographic Hash Function),是一种单向函数,类似于Vue中的单向数据流的概念,也即:极其难以由散列函数解译出来的...
0
点赞
评论
收藏
分享
2022-12-06 10:34
已编辑
北京科技大学 Java
五个分层维度:SpringBoot工程分层实战
1 分层思想计算机领域有一句话:计算机中任何问题都可通过增加一个虚拟层解决。这句体现了分层思想重要性,分层思想同样适用于Java工程架构。分层优点是每层只专注本层工作,可以类比设计模式单一职责原则,或者经济学比较优势原理,每层只做本层最擅长的事情。分层缺点是层之间通信时,需要通过适配器,翻译成本层或者下层可以理解的信息,通信成本有所增加。我认为工程分层需要从五个维度思考:(1) 单一每层只处理一类事情,满足单一职责原则(2) 降噪信息在每一层进行传输,满足最小知识原则,只向下层传输必要信息(3) 适配每层都需要一个适配器,翻译信息为本层或者下层可以理解的信息(4) 业务业务对象可以整合业务逻辑...
0
点赞
评论
收藏
分享
2022-12-05 10:46
北京科技大学 Java
CopyOnWriteArrayList真的线程安全吗?
前几天刷博客时,无意中看到一篇名为《CopyOnWriteArrayList真的完全线程安全吗》博客。心中不禁泛起疑问,它就是线程安全的啊,难道还有啥特殊情况?我们知道CopyOnWrite的核心思想正如其名:写时复制。在对数据有修改操作时,先复制再操作,最后替换原数组。在这些操作时,是有加锁的了。1 问题复现这篇博文中主要提到数组越界异常。场景为:假设现在有一个已存在的列表,线程1尝试去查询列表最后一个元素,而此时线程2要去删除列表最后一个元素。此时线程1由于最开始读取的size()=n,在线程2删除后size()=n-1,再拿原Index方式时,便触发ArrayIndexOutOfBoun...
0
点赞
评论
收藏
分享
2022-12-05 10:41
已编辑
北京科技大学 Java
常见的限流算法分析以及手写实现(计数器、漏斗、令牌桶)
常见的限流算法分析限流在我们日常生活中经常见到,如火车站门口的栏杆、一些景点的门票只出售一定的数量 等等。在我们的开发中也用到了这种思想。为什么要限流🏫在保证可用的情况下尽可能多增加进入的人数,其余的人在排队等待,或者返回友好提示,保证里面的进行系统的用户可以正常使用, 防止系统雪崩。限流算法🌴🌴限流算法很多,常见的有三类,分别是 计数器算法 、漏桶算法、令牌桶算法 。(1)计数器:在一段时间间隔内,处理请求的最大数量固定,超过部分不做处理。(2)漏桶:漏桶大小固定,处理速度固定,但请求进入速度不固定(在突发情况请求过多时,会丢弃过多的请...
0
点赞
评论
收藏
分享
2022-12-03 09:27
已编辑
北京科技大学 Java
分布式 ID 生成系统 Leaf 的设计思路,源码解读
今天来分享下最近研究的分布式 ID 生成系统 —— Leaf ,一起来思考下这个分布式ID的设计吧 👇什么是分布式ID?ID 最大的特点是 唯一而分布式 ID,就是指分布式系统下的 ID,它是 全局唯一 的。为啥需要分布式ID呢?这就和 唯一 息息相关了。比如我们用 MySQL 存储数据,一开始数据量不大,但是业务经过一段时间的发展,单表数据每日剧增,最终突破 1000w,2000w …… 系统开始变慢了,此时我们已经尝试了 优化索引, 读写分离 ,升级硬件,升级网络 等操作,但是 单表瓶颈 还是来了,我们只能去 分库分表 了。而问题也随着而来了,分库分表后,如果还用 数据库自增ID 的方式...
0
点赞
评论
收藏
分享
2022-12-11 19:38
已编辑
北京科技大学 Java
一文弄懂Java中线程池原理
在工作中,我们经常使用线程池,但是你真的了解线程池的原理吗?同时,线程池工作原理和底层实现原理也是面试经常问的考题,所以,今天我们一起聊聊线程池的原理吧。为什么要用线程池使用线程池主要有以下三个原因:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提升响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。可以对线程做统一管理。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统稳定性,使用线程池可以进行统一分配、调优和监控。线程池的原理Java中的线程池顶层接口是Executor接口,ThreadPoolExecutor是这个接口的实现类。我们先看看...
0
点赞
评论
收藏
分享
2022-12-02 10:53
北京科技大学 Java
夯实算法-行星碰撞
题目:给定一个整数数组 asteroids,表示在同一行的行星。对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。示例 1:输入:asteroids = [5,10,-5] 输出:[5,10] 解释:10 和 -5 碰撞后只剩下 10 。 5 和 10 永远不会发生碰撞。 示例 2:输入:asteroids = [8,-8] 输出:[] 解释:8 和 -8 ...
0
点赞
评论
收藏
分享
2022-12-02 10:50
已编辑
北京科技大学 Java
夯实算法-等式方程的可满足性
题目:给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 "a!=b"。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。示例 1:输入:["a==b","b!=a"] 输出:false 解释:如果我们指定,a = 1 且 b = 1,那么可以满足第一个方程,但无法满足第二个方程。没有办法分配变量同时满足这两个方程。 示例 2:输入: ["b==a","a==b"] 输出: true 解释:...
0
点赞
评论
收藏
分享
2022-11-30 10:58
已编辑
北京科技大学 Java
如何定位线上问题?
面试官:「你是怎么定位线上问题的?」这个面试题我在两年社招的时候遇到过,前几天面试也遇到了。我觉得我每一次都答得中规中矩,今天来梳理复盘下,下次又被问到的时候希望可以答得更好。下一次我应该会按照这个思路去答:1、如果线上出现了问题,我们更多的是希望由监控告警发现我们出了线上问题,而不是等到业务侧反馈。所以,我们需要对核心接口做好监控告警的功能。2、如果是业务代码层面的监控报警,那我们应该是可以很快地定位出是哪儿的问题,毕竟告警逻辑都是我们写的嘛。如果是服务器资源/所依赖的中间件告警,那我们可能就要花点时间去排查啦。3、不管怎么样,无论是系统告警还是是业务侧反馈系统或者接口出了问题。我们要想想在...
0
点赞
评论
收藏
分享
2022-11-30 10:50
已编辑
北京科技大学 Java
集合学习笔记——Collection 全家桶
Collection是我们日常开发中使用频率非常高的集合,它的主要实现有List和Set,区别是List是有序的,元素可以重复;Set是无序的,元素不可以重复,我们简单看下继承关系:List的实现类主要线程不安全的ArrayList和LinkedList以及线程安全的CopyOnWriteArrayList;Set的实现类主要有线程不安全的HashSet和TreeSet以及线程安全的CopyOnWriteArraySet。个人觉得,以上集合组件类其实并不难,所以我不打算分析源码,其中HashSet和TreeSet底层使用分别是HashMap和TreeMap, 所以只要看下之前的文章就比较容易理...
0
点赞
评论
收藏
分享
2022-11-29 10:54
北京科技大学 Java
Spring Security快速入门
一文带你快速走进Spring Security的世界(本文是基于Servlet应用实现的Spring Security)。Security架构Filter对基于Servlet的应用,Spring Security是通过其Filter(过滤器)来实现的。在应用程序接收到Servlet请求后,容器就会创建一个FilterChain(包含Filter和Servlet)来进行处理,其中Filter(过滤器)可以阻止请求进一步向下执行或者对请求的参数/返回值进行修改,Servlet则会在所有Filter通过后进行业务处理。下面给出了关于FilterChain的核心流程: +----------+ | C...
0
点赞
评论
收藏
分享
2022-11-29 10:44
北京科技大学 Java
Spring 事务失效的场景
1、private、final、static 方法被 @Transactional 注解标注的方法的访问权限必须是 public;被 @Transactional 注解标注的方法不能被 final、static 修饰,被标注的方法必须是可覆盖的。这是因为事务底层使用的是 aop,而 aop 使用的是代理模式。代理模式生成的代理类无法重写被 final、static 修饰的方法。而 private 方法对子类不可见。2、非事务方法调用非事务方法调用事务方法,事务方法会失效。public void transfer() { String sql = "update `test` set money...
0
点赞
评论
收藏
分享
1
2
3
4
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客企业服务