- 博客(52)
- 收藏
- 关注
原创 SpringMVC的控制器是单例的吗?
尽量不要在controller里面去定义属性,如果在特殊情况需要定义属性的时候,那么就在类上面加上注解@Scope("prototype")改为多例的模式.以前struts是基于类的属性进行发的,定义属性可以整个类通用,所以默认是多例,不然多线程访问肯定是共用类里面的属性值的,肯定是不安全的,但是springmvc是基于方法的开发,都是用形参接收值,一个方法结束参数就销毁了,多线程访问都会有一块内存空间产生,里面的参数也是不会共用的,所有springmvc默认使用了单例.
2024-12-05 19:46:44
294
原创 盘点Netty面试常问考点:什么是 Netty 的零拷贝?
理解零拷贝 零拷贝是Netty的重要特性之一,而究竟什么是零拷贝呢?WIKI中对其有如下定义:"Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another.从WIKI的定义中,我们看到“零拷贝”是指计算机操作的过程中,CPU不需要为数据在内存之间的拷贝消耗资源。而它通常是指计算机在网络上发送文件
2024-12-05 19:40:21
564
原创 说说 如何停止一个正在运行的线程?
停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。在java中有以下3种方法可以终止正在运行的线程:使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。使用stop方法强行终止,但是不推荐这个方法,因为stop和suspend及resume一样都是过期作废的方法。使用interrupt方法中断线程。
2024-12-05 19:36:10
1168
原创 谈为什么要拆分数据库?有哪些方法?
垂直切分是根据业务来拆分数据库,同一类业务的数据表拆分到一个独立的数据库,另一类的数据表拆分到其他数据库。比如说一个新零售的电商数据库,我们可以把跟商品相关的数据表拆分成一个数据库,然后在这些数据表的基础之上,构建出商品系统。比如用JAVA或者PHP语言,创建出一个商城系统。然后把跟进销存相关的数据表拆分到另外一个数据库上,再用程序构建出仓库系统。垂直切分解决了什么问题垂直切分可以降低单节点数据库的负载。
2024-12-05 19:25:21
833
原创 你能谈谈HashMap怎样解决hash冲突吗?
HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。值得注意的是HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collections类的静态方法synchronizedMap获得线程安全的HashMap。
2024-12-05 17:29:11
1019
原创 【Java面试题 | 解答】说说Redis的过期键删除策略吧!(高频)
划重点:Redis的过期键删除策略也是面试中经常会被问的,我最近面试,被问到了好几次。对于Redis服务器来说,内存资源非常宝贵,如果一些过期键一直不被删除,就会造成资源浪费,因此我们需要考虑一个问题:如果一个键过期了,它什么时候会被删除呢?
2024-12-04 21:58:28
686
原创 【Java面试题 | 解答】Dubbo面试八连问,这些你都能答上来吗?
Dubbo是什么?Dubbo能做什么?Dubbo内置了哪几种服务容器?Dubbo 核心的配置有哪些?Dubbo有哪几种集群容错方案,默认是哪种?Dubbo有哪几种负载均衡策略,默认是哪种?Dubbo默认使用的是什么通信框架,还有别的选择吗?你觉得用Dubbo好还是SpringCloud好?
2024-12-04 21:56:12
867
原创 【Java面试题 | 解答】为什么需要消息队列?使用消息队列有什么好处?
但是很可惜,十年前开始流行的C10K说法就是在讲:并发量上来之后,会造成chain reaction,大量的并发不会直接挂掉你的mysql节点,但是会拖慢速度,降低吞吐量,一个玩家的请求由于处理时间太长,导致玩家放弃重试,但是对于后端来说,对该玩家之前的处理过程消耗的资源就全部浪费了,陷入恶性循环。逻辑节点与Db的交互会有大量IO,即使把与Db交互的模块耦合在逻辑节点内,其实现对你来说是黑盒,如果内部是同步实现的,那就直接卡你游戏主逻辑,就因为一次存盘操作,玩家们都掉线了,服务器也可以关掉了。
2024-12-04 21:52:18
865
原创 【Java面试题 | 解答】谈谈 Redis 的过期策略。
两个线程或两个以上线程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是这些线程都陷入了无限的等待中。
2024-12-04 21:50:26
465
原创 【Java面试题 | 正确解答】谈谈项目中单点登录的实现原理?
单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用,而在架构单点登录时,也会遇到一些小问题,在不同的应用环境中可以采用不同的单点登录实现方案来满足需求。我将以我所遇到的应用环境以及在其中所经历的各个阶段与大家分享,若有不足,希望各位不吝赐教。
2024-12-04 16:49:47
541
原创 分布式系统接口,如何避免表单的重复提交?
关于怎么实现承载更多用户量的系统,一直是我重点关注的一个技术方向。改造架构提高承载力,通常来讲分为两个大方向,互相配合实现。主要是使用阿里云这种多组件的云环境:通过负载均衡SLB,模版克隆的云服务器ECS,云数据库RDS,共享对象存储OSS等不同职责的云产品组合实现。主要是软件代码开发的规范:业务解耦合,架构微服务,单机无状态化,文件存储共享等在分布式系统的学习途中也不断见识新的知识点,今天要说的就是软件开发时候对于接口服务的“幂等性”实现!
2024-12-04 16:37:52
353
原创 Redis 面试常见问答!
通常,我们会使用缓存用于缓冲对 DB 的冲击,如果缓存宕机,所有请求将直接打在 DB,造成 DB 宕机——从而导致整个系统宕机。缓存查询一个没有的 key,同时数据库也没有,如果黑客大量的使用这种方式,那么就会导致 DB 宕机。我们可以使用一个默认值来防止,例如,当访问一个不存在的 key,然后再去访问数据库,还是没有,那么就在缓存里放一个占位符,下次来的时候,检查这个占位符,如果发生时占位符,就不去数据库查询了,防止 DB 宕机。
2024-12-04 14:48:03
382
原创 【Java面试题】说说hashCode() 和 equals() 之间的关系?
上一篇关于介绍时,提到equals()和hashCode()方法可能引出关于的面试题,本篇来解析一下这道基础面试题。先祭一张图,可以思考一下为什么?equals()的作用是用来判断两个对象是否相等。hashCode()的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。我们以“类的用途”来将“hashCode() 和 equals()的关系”分2种情况来说明。
2024-11-30 16:28:38
766
原创 单例模式有几种写法?
上面的分析都忽略了反射和序列化的问题。通过反射或序列化,我们仍然能够访问到私有构造器,创建新的实例破坏单例模式。此时,只有枚举模式能天然防范这一问题。反射和序列化笔者还不太了解,但基本原理并不难,可以在其他模式上手动实现。
2024-11-30 16:08:12
896
原创 【Java面试题】消息队列中,如何保证消息的顺序性?
比如,生产者向 RabbitMQ 里发送了三条数据,顺序依次是 data1/data2/data3,压入的是 RabbitMQ 的一个内存队列。生产者在写的时候,其实可以指定一个 key,比如说我们指定了某个订单 id 作为 key,那么这个订单相关的数据,一定会被分发到同一个 partition 中去,而且这个 partition 中的数据一定是有顺序的。这是生产系统中常见的问题。一个 topic,一个 partition,一个 consumer,内部单线程消费,单线程吞吐量太低,一般不会用这个。
2024-11-29 16:25:42
496
原创 【Java面试题】分库分表之后,id 主键如何处理?
更重要的是,UUID 不具有有序性,会导致 B+ 树索引在写的时候有过多的随机写操作(连续的 ID 可以产生部分顺序写),还有,由于在写的时候不能产生有顺序的 append 操作,而需要进行 insert 操作,将会读取整个 B+ 树节点到内存,在插入这条记录后会将整个节点写回磁盘,这种操作在记录占用空间比较大的情况下,性能下降明显。这个 snowflake 算法相对来说还是比较靠谱的,所以你要真是搞分布式 id 生成,如果是高并发啥的,那么用这个应该性能比较好,一般每秒几万并发的场景,也足够你用了。
2024-11-29 16:22:00
585
原创 【JAVA面试题】如何决定使用 HashMap 还是 TreeMap?
的Key值是要求实现,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键(key)。的Key值实现散列hashCode(),分布是散列的、均匀的,不支持排序;数据结构主要是桶(数组),链表或红黑树。适用于在Map中插入、删除和定位元素。
2024-11-29 16:16:30
976
原创 你能说说Spring框架中Bean的生命周期吗?
Spring通常通过配置文件定义Bean。如:这个配置文件就定义了一个标识为 HelloWorld 的Bean。在一个配置文档中可以定义多个Bean。
2024-11-29 16:11:00
789
原创 Spring,SpringMVC,SpringBoot,SpringCloud有什么区别和联系?
Spring 是核心所在,提供了基础的功能;Spring MVC 就是基于 Spring 的一个 MVC 框架;Spring Boot 是为简化 Spring 配置的快速开发整合包;Spring Cloud 是构建于 Spring Boot 之上的服务治理框架。
2024-11-29 15:48:41
946
原创 Java核心技术教程:深入理解URL类的实例化与应用
URL类是Java标准库中用于表示和操作统一资源定位符的类。通过URL类,我们可以轻松地访问网络上的资源,如网页、图片等。通过本文的讲解,希望大家对Java中的URL类有了更深入的理解。掌握URL类的使用,不仅可以提高我们的编程技能,还能在实际开发中解决更多网络编程相关的问题。
2024-11-28 21:34:26
403
原创 Java核心技术详解:Stream实例化全攻略
Stream是Java 8引入的一种新的抽象层,用于处理数据集合(如数组、集合等)。它提供了一种声明式的方式来处理数据,使代码更简洁、易读。
2024-11-28 21:32:24
258
原创 10个JAVA常见代码大全,Java从入门迈向高手!
Java,作为一门流行多年的编程语言,始终占据着软件开发领域的重要位置。无论是初学者还是经验丰富的程序员,掌握Java中常见的代码和概念都是至关重要的。本文将列出10个Java常用代码示例,并提供相应解释,助力你Java小白成长之路。
2024-11-28 19:31:11
351
原创 初入职场的Java程序员要做好哪几步呢?
高筑墙”意味着要为自身构建坚实的知识与技能壁垒,不断提升自己的专业素养,以抵御外界的各种挑战和竞争压力。就如同在建筑领域,高耸坚固的城墙能够有效地保护城内的安全与稳定,我们也需要通过持续学习和实践,积累深厚的专业知识,为自己的职业发展打造坚实的防护。“广积粮”则代表着要广泛地积累资源和经验。这包括人脉资源、项目经验、行业认知等等。以农业为例,丰富的粮食储备是应对灾荒和不确定性的有力保障;在职业生涯中,丰富的资源积累能够为我们在关键时刻提供更多的选择和机会。
2024-11-28 15:39:36
667
原创 Java 程序员的卓越简历:技巧与实例全方位解析
编写一份出色的 Java 程序员简历绝非易事,这需要您以极其认真的态度去精心处理每一个细微之处。要知道,一份优秀的简历不仅仅是文字的简单罗列,更是您个人技能、经验和专业素养的全面展示。对于 Java 程序员而言,技术能力的准确呈现至关重要。您需要清晰而详尽地阐述所掌握的 Java 核心知识,如面向对象编程、多线程处理、异常处理等。同时,对于所使用的相关开发工具和框架,如 Spring、Hibernate 等,也要进行准确且深入的描述。
2024-11-28 15:24:05
1046
原创 Java程序员应该知道且会的Spring AOP 详解!
AOP的主要编程对向是切面。要想理解切面的概念,就要先理解什么是面。从日常生活中来看,常常听说“以点带面”这句话,点表示个体,面表示群体。也就是说,一个群体都要做的事情,就是“面”。例如,大家都要进一道门,门上设置了指纹锁,大家都要开锁才能进门,那么“刷指纹进门”这个动作就是一个涉及“面”的动作。那么,如何将这个概念抽象到编程里来呢?现在的软件开发多采用基于OOP的分层机制,如最常用的MVC,就分为业务实体层、业务逻辑层、控制层、表示层等。项目的每个层是一个对象或多个对象。
2024-11-27 20:43:16
703
原创 高级Java程序员必备的二十个技术点,你会了吗?
Spring data Jpa在支持JPA标准的基础上,提供了丰富的CRUD API以及查询表达式语言,很多查询只需要两三行代码就可以搞定,例如把函数定义成findByName,那么Spring data Jpa就会直接将这个函数解析成调用的实体仓库类中的查询Name字段,比如说在一个UserRepository里使用定义这个函数,就意味着会进行一条。因此,很多先辈们就为我们创造了不同的数据库框架,了解这些数据库框架的特点,熟练在不同的的场景中选用合适的数据库,是高级程序员必备的技能。
2024-11-27 20:35:15
1881
原创 以24年的上海行情为例子,讲讲Java程序员的薪资水平
如果是非计算机专业的,这段时间是非常苦的,但一定得熬住。1 在一些小公司,做增删改查的初级程序员,薪资天花板是1.5w,甚至更低,项目的顶梁柱,或者项目小组长(未必是项目经理),工资可以到2万,但压力很大,这种属于典型的干活多薪资少,而且老板还常画饼,指望这种公司涨薪,基本不可能。3 认识一波培训班出身的程序员,第一份工作的工资普遍在15k以下,低的才11k,但工作2到3年后,第二份工作,最差的也有18k,基本能过2w,他们第二份工作,一般都是银行保险大厂外企的外派岗,个别的也有能以正式员工进大厂的。
2024-11-27 20:07:37
2542
原创 Java基本类型与包装类:92%的开发者都会踩的那些坑!
Java开发中,基本数据类型和包装类的使用,其复杂程度远远超出了许多初学者的预期,甚至对于经验丰富的开发者而言,也时常需要细致斟酌。这些看似简单的数据类型和类,在实际应用中却蕴含着丰富的内涵和微妙的差异。基本数据类型,如int、float、char等,它们是Java语言中的基石,直接存储数据值,无需额外的内存开销。然而,正是这份简洁,使得它们在处理复杂逻辑和需要对象特性的场景中显得捉襟见肘。相比之下,包装类如Integer、Float、Character等,则为基本数据类型披上了对象的外衣。它们不仅提供
2024-11-26 16:38:51
250
原创 如何用Java实现文件上传!!!
文件上传的简介:文件上传是指将本地计算机中的文件传输到网络上的服务器或另一台计算机上的过程。在 Web 开发中,文件上传通常指的是将用户通过 Web 页面提交的文件(如图像、文档、音频、视频等)传输到服务器端的操作。简单来说,文件上传是指将本地图片、视频、音频等文件上传到服务器上,供其他用户浏览或下载的过程。文件上传通常涉及以下几个主要组件:客户端:指的是文件上传的发起方,通常是用户在 Web 浏览器中通过表单提交文件。服务器端:指的是接收并处理文件上传请求的计算机系统或服务器。上传表单。
2024-11-26 16:09:10
1385
原创 Java进阶必读:深入解析字节流,提升编程实力
在Java编程中,字节流是处理数据输入输出的重要机制。掌握字节流不仅有助于提升编程技能,还能更好地解决实际问题。本文将详细讲解Java字节流的概念、使用方法及实战案例。字节流是Java中用于处理二进制数据的流,主要用于读写文件、网络传输等场景。字节流的基类是和。字节流是Java编程中不可或缺的一部分,掌握其使用方法对于提升编程能力和解决实际问题至关重要。通过本文的讲解和示例,希望能帮助大家更好地理解和应用字节流。
2024-11-26 15:09:46
407
原创 Java面试题合集385道!
JDK:Java Development Kit 的简称,Java开发工具包,提供了Java的开发环境和运行环境。2.String是一个常量,是不可变的,所以对于每一次+ =赋值都会创建一个新的对象,StringBuffer和StringBuilder都是可变的,当进行字符串拼接时采用append方法,在原来的基础上进行追加,所以性能比String要高,又因为StringBuffer是线程安全的而StringBuilder是线程非安全的,所以StringBuilder的效率高于StringBuffer.
2024-11-26 14:54:49
491
1
原创 99%的 Java 程序员极易陷入的 5 处陷阱!
大家好,我是码牛,又跟大家见面啦!身为 Java 程序员的您,不知是否曾踏入过某些基础知识的误区。时而,某个漏洞,您耗费大量时间查找,最终惊觉竟是一个极为低级的差错。时而,某些代码,对于这一批数据其功能正常,然而更换一批数据便出现了异常状况。时而,您或许会望着某行代码瞠目结舌,心中思忖:这行代码缘何出错?今日与诸位一同探讨 99%的 Java 程序员已然踏入,亦或即将面临的 5 个误区。不知您在项目中是否目睹过,有些同仁针对 Integer 类型的两个参数运用“==”号来比较是否相等?
2024-11-24 14:20:42
1109
原创 如何成为一个优秀的java程序员
优秀的程序员仿若一名剑客,不但以键盘作剑,还需与人切磋,唯有这般,假以时日,方可逐渐展露自身的锋芒!这不仅是由于 Java 程序员所属为高薪领域,更为关键的是,Java 编程技术的应用范畴日益宽泛,众多公司皆在采用此项技术,故而其就业前景无可限量。此乃由于出色的程序员不单在某个技术领域历经漫长岁月,并且每日刻意训练,迫使自身习得别样的技术,每日持续进取。但是,长时间的沉默会让你渐渐丧失自己活泼的个性,甚至会变得呆萌,羞涩,不善言辞。也许普通的程序员在看书,查看各种资料,但优秀的程序员已经在动手写代码了。
2024-11-22 19:42:55
735
原创 Java程序员从青铜到王者,不同段位的薪资状况与技能水平变化
黄金与白银的差异在于功底的深厚程度,白银主要彰显于简单的实操能力,而黄金段位的 Java 程序员则拥有更为深厚的编程功底,能够化解工作中的繁杂技术难题,对市面上主流框架的源码、原理皆有探究,此实则为高级程序员。其六,对新技术抱有强烈的兴致,时常关注最新的技术动态,并甘愿尝试新的技术与工具,以提升自身的技术水平。其四,对新技术抱有强烈的热忱,时常关注最新的技术动态,并甘愿尝试新的技术和工具,以提升自身的技术水准。其一,拥有深厚的 Java 编程知识与经验,能够独力完成复杂的 Java 应用程序的开发与维护。
2024-11-21 19:55:02
507
原创 就说说1到3年经验的Java程序员如何准备面试
这块倒好准备,因为再小的项目,一样有高可用的需求,一样要用Nacos做注册中心,用Gateway做网关,这方面本人有专门的文章,事实上本人在具体的面试辅导过程中,很多朋友用类似的方法,证明了微服务以及Spring Cloud Alibaba的项目经验。有1到3年工作经验的Java程序员,哪怕当下的公司规模很小,项目里包含的技术只是增删改查,在项目里也只干了很初级的活,感觉面试时拿不出亮点,其实在准备面试时,依然可以通过准备说辞,让面试官感觉,在之前的项目里,实践过足量资深的技术,有过足量的亮点。
2024-11-20 16:33:43
1186
原创 在国企和央企任职程序员的体验,着实真切至极。
1、老生常谈了。在国企,工资待遇可以保证你在一线城市吃吃喝喝和基本的生活需要没问题,当然房子是不用想的了。2、国企搞开发,技术不会特别新,很多时候是项目管理的角色。工作内容基本体现为领导的决定。3、国企研究技术没有意义,想当领导,就多学习做PPT和领导搞好关系。或者当一个平庸的人,混吃等死,把时间留给家人,也不乏是一种好选择。最后,推荐下我们的面试辅导!现在找工作比以前难多了,一个人找工作周期会很长,有一个经验丰富的大厂导师全流程辅导,速度更快,结果更好,能早一个月入职都能回本了。
2024-11-20 15:55:11
1253
原创 10+年Java程序员,半年求职,极限降薪从28k到3.5k,终于上岸。
哈喽,大家好,这里是码牛!一个和大家一样,奋斗在互联网一线的程序员。每周会定时给大家更新一些程序员相关的技术与实事文章。欢迎大家多多支持与评论留言论呀!
2024-11-20 13:29:57
573
原创 遭遇此类情形,实乃技术人员之悲哀。
在知乎上存有一项热门讨论【程序员的悲哀究竟为何?】今日,我们来就此话题展开探讨。对于初涉编程领域的人员而言,在初始学习编程之际,满怀冲劲,整个人激情四溢。此般状态大致能够维持两三年,然而伴随工作年限的递增,愈发体悟到身为技术人员的无奈。每一位程序员皆在技术钻研的路途上奋力疾行,期望借由持续提升自身的技术能力,以使自身具备更强劲的竞争实力。但现实终归是冷峻的,在不断内卷的进程中,便会察觉自身已无力再卷。新技术持续涌现,知识的范畴仿若无垠之海,仅仅依托于技术层面的钻研,实难在这竞争激烈的环境中崭露头角。
2024-11-19 21:40:43
405
原创 程序员的一周,凌晨 3 点才是效率最高的
早上 9 点:“我可是个厉害角色,可不能带着那些不咋好的变量名就把代码发布出去。”老板:“给您分配了新的任务,需要开发一个新的模块,为您安排了 5 天的时间。” 我:“没问题的,这都不算事儿,周三之前便能完成。上午 10 点:“来进行设计吧,纸和笔准备好,画三个框框,再用箭头连接起来,这便是咱们的惯用套路。事实是凌晨三点对程序员来说是个挺不错的时间,先不说编程效率,就测试效率都特别高,项目常常会在这个点儿完成。下午 6 点:“代码已经完成了,本想着尝试一下能否运行起来,然而一天的工作已然结束,着实遗憾。
2024-11-15 20:45:25
967
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅