Java
文章平均质量分 80
鸨哥学JAVA
一名努力不秃头的程序猿
展开
-
弯道超车,阿里甩出Spring Security宝典我粉了
据有关数据表明Spring Security在Java应用安全领域已经慢慢成为首先被推崇的安全解决方案。虽然它在Java应用安全领域所占比重越来越大,但大多数开发者面对Spring Security这样的“庞然大物”时无从入手,也因为对其不够了解而在实际项目中不敢轻易采用。如何学?怎么把它引入到项目里?已经是每一个开发人员需要考虑的问题。原创 2022-10-19 13:29:59 · 692 阅读 · 1 评论 -
大白话揭秘搞好就能“年薪百万”的SpringCloud微服务
Spring Cloud是一个涵盖多个子项目的开发工具集,集合了众多的开源框架,他利用了Spring Boot开发的便利性实现了很多功能,如服务注册,服务发现,负载均衡等。没有想到的是,公司业务越来越好,网站用户量越来越大,单体架构的问题就暴露出来了,随着访问量增加,项目经常宕机。随着并夕夕商城不断壮大,公司迎来了风投,风投两个亿,于是商城发展的更快了,新的问题出现了。上述的架构看上去非常的完美,但是,随着并夕夕商城业务量的不断增加,新的问题暴露了出来。原创 2022-10-19 13:18:38 · 655 阅读 · 0 评论 -
Github星标百万,终于有人将Spring技术精髓收录成册
本书每个章节内容都有内容介绍和小章节,方便大家更好地理解每个章节的内容和知识点!原创 2022-10-19 13:14:06 · 641 阅读 · 0 评论 -
优秀,阿里甩出GC面试小册,仅7天Github获赞96.9K
我们都知道Java在运行时内存分为了五个部分:程序计数器、虚拟机栈、本地方法栈、堆、方法区。其中程序计数器、虚拟机栈、本地方法栈所占用的内存是不需要垃圾收集的,这三个区域的内存随着线程生,随着线程死,我们需要关注的其实只有堆和方法区这两块内存的垃圾收集。这时候就需要用到GC技术了。如果你是一个新手,这些问题扑面而来的时候你肯定会一脸懵逼,不知道该怎么办。原创 2022-10-19 11:53:38 · 255 阅读 · 0 评论 -
直击面试,阿里技术官手码12W字面试小册在Github上爆火
相信大家面试前都会习惯性地去看一些面经,看一些人家的面试总结。做这些无可厚非。但是对于一个不擅长找工作的小伙伴来说,其实在简历制作这一块很重要。因为简历没写好的话,连面试邀请都没有,何谈面试呢。所以小编对简历模板也做了一些收录总结,希望能对大家有所帮助。最后祝大家在秋招,钱途不断,Offer多多!原创 2022-10-19 11:36:04 · 248 阅读 · 0 评论 -
系统梳理面试6大专题,阿里爆款Java面试速成笔记也太香了
我们做技术的,职业生涯中会遇到很多大大小小的面试。每次面试前的查漏补缺跟面试后的复盘总结都是我们提升的机会。希望今天LZ分享的资料能对近期需要面试的小伙伴有所帮助!原创 2022-10-19 11:03:53 · 222 阅读 · 0 评论 -
真香,Github一夜爆火,阿里性能优化不传之秘终于开源
性能优化虽然难啃,但是你要是能真正地把他啃下来肯定是能跃迁至架构岗,毕竟不想当架构师的程序员不是好程序员。况且面试中你简历上要是有一笔:有过性能调优经验,也是面试的一个不错的加分项。原创 2022-10-19 10:53:26 · 220 阅读 · 0 评论 -
进阶面试皆宜,阿里强推Java程序员进阶笔记,差距不止一点点
程序员是肯定不能停止学习的,这点想必大家也知道!只有不断地学习充实自己,才不会有所谓的“中年危机”原创 2022-10-19 10:31:37 · 231 阅读 · 0 评论 -
刷爆LeetCode,字节技术官亲码算法面试进阶神技太香了
算法这东西你想要进大厂或者往更高的层次进阶的话,肯定是绕不开的!原创 2022-10-19 10:17:37 · 243 阅读 · 0 评论 -
程序员必修课:阿里性能优化全解终开源,设计+代码+JVM三飞
性能优化可以说是我们程序员的必修课,如果你想要跳出CRUD的苦海,成为一个更“高级”的程序员的话,性能优化这一关你是无论无何都要去面对的。为了提升系统性能,开发人员可以从系统的各个角度和层次对系统进行优化。除了最常见的代码优化外,在软件架构上、JVM虚拟机层、数据库以及操作系统层面都可以通过各种手段进行调优,从而在整体上提升系统的性能。 为了能让大家更好的入手性能优化,今天LZ为大家带来了一份阿里内部强推性能优化全栈小册,内容涵盖设计调优、代码调优、JVM调优。大家看了之后就知道,差距不止一点点!下面就为大原创 2022-10-19 10:09:14 · 240 阅读 · 1 评论 -
一文解读 redis 主从/哨兵/集群架构
主从结构示意图: master-slave数据同步过程:全量同步:slave会发送一个PSYNC命令给master,master接收到该命令后,会立即进行持久化操作,通过命令bgsava生成一个RDB快照文件,持久化期间,如果客户端仍在写入数据,这部分数据会被保存在内存缓冲区(repl buffer)中,持久化完成以后,master会将RDB文件发送给slave,slave 将数据加载到内存中,然后master会将缓冲区的命令发送给slave节点。 断点续传:当master和slave由于某些原因断开时,s原创 2022-10-17 11:43:13 · 239 阅读 · 0 评论 -
ElasticSearch全流程,看这篇我也懂了
es提供了很多search api,例如match_query,term_query等等,可以很方便的组装query DSL(Domain Specific Language),且开发人员不需要考虑DSL中query的顺序,dsl中query的顺序不会影响最后的执行效率,真正的执行顺序会在CBO(Cost Based Optimizer)后进行重排。ES返回的doc默认会按照_score(文档相关性)降序排列,即算分后的分数值,如果指定了其他的Sort字段,就会按照指定的字段排序。原创 2022-10-17 11:28:10 · 537 阅读 · 0 评论 -
RabbitMQ 可靠性、重复消费、顺序性、消息积压解决方案
其实认真研究下来你会发现所谓的消息可靠性本身就是无法保证的......所谓的各种可靠性机制只是为了以后消息丢失提供可查询的日志而已,不过通过这些机制耗费一些(巨大)成本的确是能够缩小消息丢失的可能性。原创 2022-10-17 11:25:30 · 1304 阅读 · 2 评论 -
不是吧,不是吧,居然有比B+Tree更快的一种查询结构
通过这种方式,MySQL就可以将锁分散加在不同的HashTable上,尽可能减少并发导致的HashTable构建锁死造成的性能问题。原创 2022-10-17 11:22:31 · 524 阅读 · 0 评论 -
不是吧!不会还不懂Zookeeper的watcher机制吧!一文深入源码分析
我们可以使用 zookeeper 作为注册中心来实现服务的注册与发现,curator 框架提供了 curator-x-discovery 扩展实现了开箱即用的服务注册发现,但更多时候我们还是选择自己去实现,那这个时候我们需要额外关注 zookeeper 的 1 个特性,即 wathcer。在微服务场景中,watcher 机制主要提供了服务通知功能,比如 Instance1 这个实例在 Service1 服务节点下注册了一个 emphemeral 子节点后,它的某个服务消费者根据依赖配置在 Service1原创 2022-10-17 11:16:12 · 460 阅读 · 0 评论 -
深度掌握 Java Stream 流操作,让你的代码高出一个逼格
Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。Stream` 的操作符大体上分为两种:`中间操作符`和`终止操作符。原创 2022-10-17 11:05:07 · 505 阅读 · 0 评论 -
字节架构师:来说说 Kafka 的消费者客户端详解,你都搞懂了吗?
对于 Kafka 的分区来说,它的每条消息都有唯一的偏移量,用来展示消息在分区中对应的位置,它是一个单调递增的整数。在 0.9 版本之后 Kafka 的偏移量是存储在 Kafka 的 _consumer_offsets 主题中。消费者在消费完消息之后会向 这个主题中进行 消费位移的提交。消费者在重新启动的时候就会从新的消费位移处开始消费消息。因为,位移提交是在消费完所有拉取到的消息之后才执行的,如果不能正确提交偏移量,就可能发生数据丢失或重复消费。原创 2022-10-17 10:57:07 · 410 阅读 · 1 评论 -
硬核!GitHub置顶102W字Redis高手心法笔记,阿里竟第一时间收藏
天下武功,⽆坚不可摧,唯快不破!学习⼀个技术,通常只接触了零散的技术点,没有在脑海⾥建⽴⼀个完整的知识框架和架构体系,没有系统观。这样会很吃⼒,⽽且会出现⼀看好像⾃⼰会,过后就忘记,⼀脸懵逼。今天跟着阿嘴⼀起吃透 Redis,深层次的掌握 Redis 核⼼原理以及实战技巧。⼀起搭建⼀套完整的知识框架,学会全局观去整理整个知识体系。系统观其实是⾄关重要的,从某种程度上说,在解决问题时,拥有了系统观,就意味着你能有依据、有章法地定位和解决问题。原创 2022-10-17 10:48:33 · 260 阅读 · 0 评论 -
Java反射和new效率对比,差距有多大?
Method#invoke 方法会对参数做封装和解封操作需要检查方法可见需要校验参数反射方法难以内联JIT 无法优化。原创 2022-10-17 10:43:58 · 881 阅读 · 0 评论 -
同事开源我的微服务深度实践笔记到GitHub,短短3天竟吸粉10W+
很多人问我有没有教程,在这里我郑重地向大家介绍我搞来的一本绝密笔记--微服务深度实践与进阶 不仅会深入到源码,剖析Spring全家桶源码,分析Spring全家桶中技术的本质,还会将很抽象的概念讲得足够具体,足够容易理解,还会教你怎么让框架更好地为业务落地去服务,真正做到由点到线、由线到面、由浅到深、由应用到源码、由源码到设计、由设计到扩展、由扩展到实战的讲解技术。最后,祝看到这篇文章的朋友,都能在22年最后的几个月里,收获自己想要的东西!Kubernetes容器管理。原创 2022-10-17 10:42:08 · 207 阅读 · 0 评论 -
面试官灵魂暴击:如何保障消息100%投递成功及保证消息的幂等性?
今天带你们聊一下消息的可靠性传输和幂等性。原创 2022-10-14 13:43:20 · 181 阅读 · 0 评论 -
OAuth2 四种授权使用场景,图文结合不能再清晰了
OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全、开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息,并且这是安全的。Third-party application:第三方应用程序,又称"客户端"(client)。Resource Owner:资源所有者,又称"用户"(user)。User Agent:用户代理,指浏览器。Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。原创 2022-10-14 13:38:48 · 602 阅读 · 1 评论 -
二本4年Java经验,五面阿里艰苦经历(定薪45K),回馈一波心得体会
8月准备跳槽,先后面试了各大小公司,拿了一些offer,有阿里,滴滴,快手,达达,得物等公司。面试的公司大部分都能过,也给自己做个归档,希望能给正在准备跳槽,找工作的朋友一点帮助,原创 2022-10-14 13:31:54 · 519 阅读 · 0 评论 -
阿里后端优化这么恐怖?看完这20W字Java性能实战经验手册,最少P7
要建立一个完整的性能优化知识体系,系统地学习这些相关知识,而不是碎片化获取,基础理论实用性强,直入主题,让你在工作实战时有理可依,有据可循。同时实践也比理论重要。性能优化并不是对固定、单一场景的优化,场景不同,方法也会不同。比如,如果你的业务是串行的,耗时很长,就不能简单地通过增加 CPU 资源进行性能提升;如果你的业务是并行的,也不能钻牛角尖地优化每一行代码,要照顾各个资源的协调,对短板着重进行优化,以便达到最优效果。最后,性能优化既是工程师们进阶的“拦路虎”,也是提升能力的炼金石。原创 2022-10-14 13:26:07 · 146 阅读 · 0 评论 -
面试官:熟悉Redis,那聊聊Redis主从复制?我画了13张图讲明白了
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点。一个主节点可以有多个从节点,但一个从节点只能有一个主节点。看图:这里我们不会讲或者讲解redis 主从的安装步骤,这个网上的博文和官网都会有,相信大家都会一步步地配置成功。主从复制从开始到现在都经历了什么,同步的是什么,数据还是文件?在主从过程中,如果网络中断了,怎么办?同步的过程中,哪些因素会增加主库的压力?原创 2022-10-14 13:16:37 · 163 阅读 · 0 评论 -
ElasticSearch原理知识点和整体结构详解
通过上文,在通过图解了解了ES整体的原理后,我们梳理下ES的整体结构。原创 2022-10-14 11:37:24 · 260 阅读 · 0 评论 -
终于理解 Spring Boot为什么如此受青睐 HikariCP了,这图太透彻
到这里基本上一个连接的生产到获取到回收到废弃一整个生命周期在HikariCP内是如何管理的就说完了,相比之前的Druid的实现,有很大的不同,主要是HikariCP的无锁获取连接,本篇没有涉及FastList的说明,因为从连接管理这个角度确实很少用到该结构,用到FastList的地方主要在存储连接对象生成的statement对象以及用于存储线程内缓存起来的连接对象;原创 2022-10-14 11:33:05 · 497 阅读 · 0 评论 -
妙啊,美团 OCTO 分布式服务治理系统,这描述也太清晰了
OCTO 是 octopus(章鱼) 的缩写。是美团公司级基础设施,为公司所有业务提供统一的高性能服务通信框架,使业务具备良好的服务运营能力,轻松实现服务注册、服务自动发现、负载均衡、容错、灰度发布、数据可视化、监控告警等功能,提升服务开放效率、可用性及服务运维效率。【特别说明】OCTO 是美团内部专用系统,未开源,外部无法搭建该系统。【本文意义】OCTO 是国内重量级的服务治理系统,目前调用量上千亿,通过对该系统的架构原理和使用方法的梳理,可帮助我们深化对分布式服务的认识。原创 2022-10-14 11:24:16 · 242 阅读 · 0 评论 -
分布式ID生成器(CosId)的设计与实现
CosId旨在提供通用、灵活、高性能的分布式 ID 生成器。单机 TPS 性能:409W/s时钟回拨问题机器号分配问题RedisJdbclock-freeTPS 性能:12743W+/s。原创 2022-10-14 11:10:32 · 630 阅读 · 0 评论 -
阿里Java二面:如何用Redis实现分布式锁的?
为什么需要分布式锁在聊分布式锁之前,有必要先解释一下,为什么需要分布式锁。与分布式锁相对就的是单机锁,我们在写多线程程序时,避免同时操作一个共享变量产生数据问题,通常会使用一把锁来互斥以保证共享变量的正确性,其使用范围是在同一个进程中。如果换做是多个进程,需要同时操作一个共享资源,如何互斥呢?现在的业务应用通常是微服务架构,这也意味着一个应用会部署多个进程,多个进程如果需要修改MySQL中的同一行记录,为了避免操作乱序导致脏数据,此时就需要引入分布式锁了。原创 2022-10-14 11:03:55 · 564 阅读 · 0 评论 -
记一次自定义Redis分布式锁导致的生产事件
对于分布式锁来说,可实现方案其实远远不止Redis这个实现途径,比如基于Zookeeper、基于Etcd等方案,但其实对于目的来说,都是殊途同归,重点在于,如何安全、正确的使用这些方案,保证业务正常。对于研发团队来说,针对类似的问题,需要对技术小伙伴进行培训,不断提升技术,更需要重视codereview工作,及时识别风险,避免发生故障造成严重损失(本次故障造成脏数据修复耗时一个多星期)。敬畏技术,忠于业务。原创 2022-10-13 15:58:57 · 143 阅读 · 0 评论 -
任务调度框架Quartz用法指南(超详细)
项目中遇到一个,需要 客户自定任务启动时间 的需求。原来一直都是在项目里硬编码一些定时器,所以没有学习过。很多开源的项目管理框架都已经做了Quartz的集成。我们居然连这么常用得东西居然没有做成模块化,实在是不应该。Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。原创 2022-10-13 15:57:29 · 1125 阅读 · 0 评论 -
自定义的配置文件,如何注入到SpringBoot?
在实际的项目开发过程中,我们经常需要将某些变量从代码里面抽离出来,放在配置文件里面,以便更加统一、灵活的管理服务配置信息。比如,数据库、eureka、zookeeper、redis、mq、kafka 等服务组件的连接参数配置,还有我们自定义的项目参数配置变量。当然,实际上根据当前的业务需求,我们往往会自定义参数,然后注入到代码里面去,以便灵活使用!今天,我们就一起来聊一聊SpringBoot加载配置文件的几种玩法,如果有遗漏,欢迎留言!原创 2022-10-13 15:52:16 · 260 阅读 · 0 评论 -
代码开发技巧之快速逆向工程
根据数据库生成java代码,这就是逆向工程,也就是需要我们根据数据库表结构,然后生成我们的对应代码。话不多说,我们先来安排一下,直接建一个大约十几个字段的表,然后我们直接使用逆向工程来安排它。我们简单设计了一个订单表,表结构上面,然后我们把这个表创建到我们的数据库中。ID VARCHAR(32) NOT NULL COMMENT '主键ID' ,ORDER_SOURCE VARCHAR(32) COMMENT '订单来源' ,原创 2022-10-13 15:10:12 · 1568 阅读 · 0 评论 -
21个MySQL表设计的经验准则
如果没有特殊的理由, 一般都建议将字段定义为 NOT NULL。为什么呢?首先, NOT NULL 可以防止出现空指针问题。其次,NULL值存储也需要额外的空间的,它也会导致比较运算更为复杂,使优化器难以优化SQL。NULL值有可能会导致索引失效如果将字段默认设置成一个空字符串或常量值并没有什么不同,且都不会影响到应用逻辑, 那就可以将这个字段设置为NOT NULL。原创 2022-10-13 15:07:09 · 369 阅读 · 0 评论 -
一文带你了解 Spring 的 @Enable 开头的注解
上面通过 @EnableRetry 这个注解带大家了解了一下 Spring 的 @Enable 开头的注解的使用原理,相信大家对这些注解有了更深入的了解。简单来说就是因为我们要使用的很多类并不在我们项目所在的包下面,我们不能将所有的依赖包都进行扫描,也不不方便将所有的配置类都通过 @Import 的方式进行导入,而是让每个功能的项目包都提供一个 @Enable 开头的注解,我们直接启用注解就可以达到效果。原创 2022-10-13 15:03:23 · 257 阅读 · 0 评论 -
开发必须要懂的协议-oauth
百度百科上解释:允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。简单的来讲就是一个令牌,这个令牌可以有一定的权限,在不知道用户密码的情况下也可以进行部分的功功能操作。原创 2022-10-13 14:57:13 · 559 阅读 · 0 评论 -
10 万字节Spring Boot +redis详细面试笔记(带完整目录)
2022年一个不平淡的一年,金九银十也快要过去,各路码友们都开始磨拳擦脚,背面试题、知识点。小编最近得一良友赠送了一份关于SpringBoot,JVM篇,多线程&并发,Spring,MyBatis等 的学习笔记。简直不要好用,理论解析言简意赅,每一步操作都有图片展示。原创 2022-10-13 14:49:03 · 329 阅读 · 0 评论 -
ClickHouse 挺快,esProc SPL 更快
CH 计算某些简单场景(比如单表遍历)确实很快,和 SPL 的性能差不多。但是,高性能计算不能只看简单情况快不快,还要权衡各种场景。对于复杂运算而言,SPL 不仅性能远超 CH,代码编写也简单很多。SPL 能覆盖高性能数据计算的全场景,可以说是完胜 CH。SPL下载地址:http://c.raqsoft.com.cn/article/1595816810031SPL开源地址:https://github.com/SPLWare/esProc。原创 2022-10-13 11:56:58 · 211 阅读 · 0 评论 -
从TCP协议之滑动窗口分析应用性能
1、TCP Window Full 是站在发送端角度说的,表示此时发送端不能再发数据给对方,除非发送的数据包得到ACK。2、TCP zero window 是站在接收端角度来说的,是接收端接收窗口满,自动告知对方不能再发送数据给自己。原创 2022-10-12 14:06:00 · 829 阅读 · 0 评论