![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后端
文章平均质量分 85
苹果苹果开花吧
努力做头发最多的程序猿
经验分享/避坑指南/岗位咨询/专业知识
因为自己淋过雨,所以想给别人撑把伞~
展开
-
掌握模型性能:使用 GridSearchCV 调整超参数
Hyper参数是在学习机的学习过程之前设置的参数,在模型训练的学习过程中不会直接从数据中学习。与模型参数不同,这些参数不是从数据中学习的,超参数是由数据科学家或机器学习专家根据他们的知识和直觉确定的。正确选择超参数可以提高机器学习模型的性能。通过调整超参数,您可以确定可提高准确性、精度或其他性能度量的区域,从而提高速度和建模精度。调优良好的模型更加健壮和稳定,因为它们对输入的微小变化和训练集的微小变化不太敏感。原创 2023-07-25 11:44:04 · 325 阅读 · 0 评论 -
看了我项目中的商品功能设计,同事也开始悄悄模仿了...
这里还是简单介绍下mall项目吧,mall项目是一套基于 SpringBoot + Vue + uni-app 的电商系统,目前在Github已有60K的Star,包括前台商城项目和后台管理系统,能支持完整的订单流程!涵盖商品、订单、购物车、权限、优惠券、会员等功能,功能很强大!原创 2023-07-25 10:17:02 · 45 阅读 · 0 评论 -
如何设计一套可控的定时任务系统
上面的代码仅仅是关于asynq的简单的一个介绍。在生产环境下,如何使用呢,一般情况下,我们会提供一个provider.provider来提供配置的源,源可以是文件,也可以是Mysql还可以是其他存储源,最重要的是需要实现对应的方法。现在的系统设计中,有许多规律性的功能特征需要用到定时任务来完成,比如每分钟需要执行一次清理数据的任务,每个月的第一天,需要处理一项什么任务等等这种,还有一种规律性的任务不是以时间间隔为第一维度切割的,而是如果任务执行完成,不管成功与否,都间隔一段时间执行一次任务等等。原创 2023-07-25 09:45:34 · 255 阅读 · 0 评论 -
HashMap如何确定key的存储位置
将传入的参数 key 调用自身的方法 hashCode() 得到哈希值 h。根据哈希值 h 调用扰动函数 hash() 计算 h ^ (h >>> 16) 得到扰动后的哈希值 hash。根据哈希值 hash 取模操作 hash & (n - 1) 从而确定 key 的存储位置。以上就是本篇文章的全部内容了。原创 2023-07-24 10:41:42 · 252 阅读 · 0 评论 -
Spring AOP切面编程实现原理
基于以上全部就是今天要讲解的Spring AOP相关知识点啦,AOP作为Spring框架的核心模块,在很多场景都有应用到,如Spring的事务控制就是通过aop实现的。采用横向抽取机制,取代了传统纵向继承体系重复性代码,将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码,从而做到保证开发者在不修改源代码。原创 2023-07-24 10:27:29 · 144 阅读 · 0 评论 -
你的Spring应用启动很慢?不妨试试这个工具!
从项目名称中就大概能猜到,这是一个分析Spring应用启动过程的工具。Spring Startup Analyzer通过采集Spring应用启动过程的数据,进而生成一个交互式的分析报告,帮助用户发现Spring应用启动慢的位置。同时,Spring Startup Analyzer还提供了Spring Bean异步初始化的工具,来帮助开发者加快Spring应用的启动时间。下面一起来看看其提供的强大功能。原创 2023-07-24 09:59:10 · 77 阅读 · 0 评论 -
架构演变:微服务架构的四种常见模型
微服务的几种模型见证了微服务架构的演进历史,每种架构都有其使用场景和一定的时代意义;四种架构都是分离关注点,将变与不变进行分离;四种架构模型表现形式不一样,但设计思想都体现了微服务架构高内聚低耦合原则,正所谓神同行异;四种架构的核心层都是领域层,它保持领域模型和业务逻辑的稳定,对外提供稳定的细粒度的领域服务;原创 2023-07-24 09:46:39 · 170 阅读 · 0 评论 -
单行数据查询之谜:为什么慢?细解查询长时间不返回和查询慢
单行数据查询速度缓慢,你有没有想过其中的原因是什么?本文深入分析了单行数据查询为何会变慢的两大类原因:查询长时间不返回和查询慢。我们将揭开这个谜团,并探索其中的细致原因。首先来看一下这张思维导图,对本文内容有个直观的认识。接下来进入正文。一般情况下,如果我跟你说查询性能优化,你首先会想到一些复杂的语句,想到查询需要返回大量的数据。但有些情况下,“查一行”,也会执行得特别慢。原创 2023-07-24 09:19:24 · 123 阅读 · 0 评论 -
JAVA8新特性(Stream API,LocalDate,LocalDateTime)
【代码】JAVA8新特性(Stream API,LocalDate,LocalDateTime)原创 2023-07-22 11:31:19 · 170 阅读 · 0 评论 -
MySQL写缓冲Change Buffer原理解读
我们知道MySQL在查询的时候有一种预读机制, 为了提高同样数据的查询效率,会将磁盘中的数据加载到内存中,Buffer Pool(缓冲池)就承担了这么一个角色。如果每次写操作,数据库都直接更新磁盘中的数据,会很占磁盘IO,那么MySQL是怎么优化的呢?当用户执行SQL对非唯一索引进行更改时,如果索引对应的数据页不在缓存中时,InnoDB不会直接加载磁盘数据到缓存数据页中,而是缓存对这些更改操作(buffer changes)。原创 2023-07-22 10:42:08 · 42 阅读 · 0 评论 -
如何理解redis的内存回收与内存淘汰策略?
我们知道,对于redis这样的内存型数据库而言,如何删除已过期的数据以及如何在内存满时回收内存是一项很重要的工作。原创 2023-07-21 11:06:16 · 34 阅读 · 0 评论 -
SpringBoot核心特性——ApplicationRunner && CommandLineRunner使用
如果想在SpringApplication启动后做一些操作,那么除了可以监听ApplicationReadyEvent事件外,还可以实现ApplicationRunner或CommandLineRunner接口.原创 2023-07-21 10:50:35 · 334 阅读 · 0 评论 -
MySQL 中的 count 你用对了吗?性能对比一览
在不同的存储引擎中,count(*)函数的实现方式不同。我们之前讨论过使用缓存系统来存储计数值存在的问题。现在,我来简洁地解释一下为什么将计数值存储在Redis中不能保证与MySQL表中的数据精确一致。Redis和MySQL是不同的存储系统,它们不支持分布式事务,因此无法提供精确一致的视图。这就是为什么将计数值存储在Redis中无法确保与MySQL表中数据的一致性。相比之下,将计数值存储在MySQL中可以解决一致性视图的问题。原创 2023-07-21 10:34:02 · 649 阅读 · 0 评论 -
Java岗秋招最全面试攻略,就看这份Java架构面试核心手册
有大佬整理了完整的Java完整的架构面试核心知识体系。按照这样的一个脉络,我觉得能够掌握这里面的绝大部分内容,并且有过相应的一些实践,那么可以去面试自己心仪的工作了。这些这份笔记总结都是作者近几年结合牛客大家的面经分享总结和整理出来的,非常实用,对于学习Java后端的朋友来说应该是最全面最完整的面试文档。先给大家展示一个完整的目录:头条篇幅限制,所以小编下面给大家展示部分内容,完整版有需要的小伙伴可以见文末。原创 2023-07-21 10:08:33 · 114 阅读 · 0 评论 -
浅析本地缓存技术-Guava Cache | 京东物流技术团队
本文简要叙述了guava cache的应用场景以及简单的使用方式,通过源码对于guava cache的存储原理以及简单的读写方法进行了介绍。相信通过阅读本文,能够对于常见的guava cache有一个大致的认知。原创 2023-07-20 11:39:26 · 85 阅读 · 0 评论 -
2023年金九银十最新版Java面试必背八股文详解(含答案)
为大家分享的这份Java八股文总分为14个技术专题小编在社区里看见不少小伙伴都在背Java八股文,为此在这里统一的做一次总结归类,也算是给粉丝们划重点了。原创 2023-07-20 11:32:47 · 4021 阅读 · 5 评论 -
堪称全网最详细的Java八股面试文,秋招面试必备(附答案)
老规矩,在代码实践之前,先对基础知识做一个普及。1、面向对象中的多态(Polymorphism)是指一个对象可以具有多种不同的形态或表现方式。简单来说,就是同一个类型的对象,在不同的上下文中表现出不同的行为。多态性是面向对象的三大特性之一(封装、继承、多态)。2、在多态中,父类的引用可以指向子类的对象,通过父类的引用调用子类的方法。这样可以实现代码的灵活性和扩展性,可以根据具体的对象类型调用相应的方法,无需关心对象的具体类型。原创 2023-07-20 10:57:47 · 171 阅读 · 0 评论 -
操作日志数据治理实战
这是 LeetCode 上的,难度为。Tag : 「模拟」、「队列」、「排序」、「构造」牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。返回能以递增顺序显示卡牌的牌组顺序。答案中的第一张牌被认为处于牌堆顶部。原创 2023-07-20 09:16:59 · 39 阅读 · 0 评论 -
MacBook Java开发环境搭建记录
以上便是本次在MacBook上对Java环境变量的搭建,至于ide我使用的是Jetbrans Idea。后续若有安装其他Java环境将在本文后进行追加,如Redis、Docker、mysql等。原创 2023-07-19 10:21:27 · 47 阅读 · 0 评论 -
CountDownLatch原理深度解析
在高并发编程中,AbstractQueuedSynchronizer(简称AQS)抽象的队列同步器是我们必须掌握的,AQS底层提供了二种锁模式接下来我们通过CountDownLatch底层实现原理来了解AQS共享锁模式的实现原理。原创 2023-07-19 09:36:34 · 61 阅读 · 0 评论 -
Docker容器编排工具
Docker Swarm提供了一种简单易用的方式来管理Docker容器,可以轻松地实现容器的自动化部署、扩展和管理。本文将介绍两个最常用的Docker容器编排工具:Kubernetes和Docker Swarm,并探讨如何使用它们来提高应用程序的可靠性和可扩展性。通过使用容器编排工具、持久化存储、自动化部署、监控工具、负载均衡等方法,可以有效地提高应用程序的可靠性和可扩展性,并为企业带来更高的效益。通过使用负载均衡工具,可以将流量分配到多个容器中,并提高应用程序的可靠性和可扩展性。一、使用容器编排工具。原创 2023-07-18 11:15:36 · 244 阅读 · 0 评论 -
万字梳理,带你拿下 Java 大厂offer!
Unicode 统一了所有字符的编码,是一个 Character Set,也就是字符集,字符集只是给所有的字符一个唯一编号,但是却没有规定如何存储,不同的字符其存储空间不一样,有的需要一个字节就能存储,有的则需要2、3、4个字节。String 类是一种对象,它是独立于 Java 基本数据类型而存在的,String 你可以把它理解为字符串的集合,String 被设计为 final 的,表示 String 对象一经创建后,它的值就不能再被修改,任何对 String 值进行修改的方法就是重新创建一个字符串。原创 2023-07-18 11:12:09 · 58 阅读 · 0 评论 -
一道经典面试题:BeanFactory 和 FactoryBean 有何区别?
这也是 Spring 面试时一道经典的面试问题,今天我们来聊一聊这个话题。区别在于,BeanFactory 是 Spring 框架的核心接口,用于管理和提供 Bean 实例,而 FactoryBean 是一个特殊的 Bean,用于创建和管理其他 Bean 的实例。FactoryBean 在 Bean 的创建过程中提供更多的自定义能力,允许进行额外的逻辑处理。可能有的小伙伴看的还不是很清楚,我们再来详细看下。原创 2023-07-18 10:58:39 · 88 阅读 · 0 评论 -
Alibaba的这份528页2023最新版Java工程师进阶知识全扫盲(PDF版)真的鲨疯了!
今天给大家分享一份由阿里巴巴内部大佬分享给我的《Java工程师进阶知识全扫盲(PDF版)》就是来帮助大家逃离苦海的!原创 2023-07-18 10:33:54 · 79 阅读 · 0 评论 -
1000道 Java面试题及答案整理(2023最新版)
整理了 2023年最新、最全的 Java 面试题,题目涉及 Java 基础、集合、多线程、IO、分布式、Spring全家桶、MyBatis、Dubbo、缓存、消息队列、Linux…...原创 2023-07-18 10:15:31 · 1588 阅读 · 19 评论 -
2023Java面试题大全(整理版)1000+面试题附答案详解,全网最全面详细,看完offer稳了!
对于Java后端的朋友来说应该是最全面最完整的面试备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer, 也已经帮助了很多的Java学习者,希望也能帮助到你。进大厂是大部分程序员的梦想,而进大厂的门槛也是比较高的,所以这里整理了一份阿里、美团、滴滴、头条等大厂面试大全,其中概括的知识点有:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、原创 2023-07-18 09:52:02 · 5004 阅读 · 58 评论 -
InnoDB的Buffer Pool是如何管理数据页的?
DBMS 中 MVCC 的目标是允许多个查询同时读取和写入数据库,而不会在可能的情况下相互干扰。MVCC 的基本思想是 DBMS 永远不会覆盖现有的行。相反,对于每个(逻辑)行,DBMS 维护多个(物理)版本。当应用程序执行查询时,DBMS 根据某些版本号排序(例如创建时间戳)确定要检索哪个版本来满足请求。这种方法的好处是多个查询可以读取旧版本的行,而不会被另一个更新它的操作阻止。当 DBMS 启动该查询的事务时,查询会观察数据库的快照(快照隔离)。这种方法消除了显式。原创 2023-07-18 10:18:40 · 31 阅读 · 0 评论 -
【MySQL 02】InnoDB 的 Buffer Pool 学习
本文主要有以下内容:Buffer Pool 结构介绍 Free、Flush、Lru 链表介绍写下本文的原因主要是因为在总结事务相关知识的时候,提到了这一块的相关知识,本来打算一起总结的,但是内容太多,就分成两篇!下周上事务相关的总结知识吧!原创 2023-07-17 10:35:28 · 46 阅读 · 0 评论 -
数据库的扩展策略
了解不同的数据库扩展技术可以帮助我们选择适合我们需求和目的的合适策略。因此,在本文中,我们将展示不同的解决方案和技术,用于扩展数据库服务器。它们分为读取和写入策略。原创 2023-07-17 10:30:41 · 176 阅读 · 0 评论 -
【JDBC系列】- jdbc的概念以及与数据库的交互流程
接下来详细介绍以下流程步骤中的一些小问题与小细节。使用jdbc与数据库进行通信,简单来说就只有6个步骤,首先需要注册驱动,获取连接,接着创建statement对象,用来存放sql语句并且执行,然后将获得到的数据进行解析,最后就是要把资源进行销毁。这里只是基本的使用jdbc,像mybatis、jpa、ibatis等持久层框架,都是对jdbc进行封装,万变不离其宗,想要学习底层知识,就需要把这学基础知识给学好!原创 2023-07-17 10:22:40 · 477 阅读 · 0 评论 -
RocketMQ - producer获取Namesrv地址
抛出几个问题。第一个是producer是怎么在开始的时候获取namesrv的地址;第二个是producer获取namesrv的方式有几种;第三个是produce是怎么刷新namesrv地址的;原创 2023-07-17 10:07:50 · 375 阅读 · 0 评论 -
怎么使用Netty解码自定义通信协议
Netty 作为一个非常优秀的网络通信框架,已经为我们提供了非常丰富的编解码抽象基类,帮助我们更方便地基于这些抽象基类扩展实现自定义协议。MessageToByteEncoder 对象编码成字节流;MessageToMessageEncoder 一种消息类型编码成另外一种消息类型。将字节流解码为消息对象;MessageToMessageDecoder 将一种消息类型解码为另外一种消息类型。原创 2023-07-17 10:01:29 · 69 阅读 · 0 评论 -
【无标题】
社交支付类的项目,怎么能没有图片上传功能呢!涉及到文件存储我第一时间就想到了 OSS 对象存储服务(腾讯叫 COS),但是接着我又想到了”OSS 被刷 150 T 的流量,1.5 W 瞬间就没了?本来想着是自己搭建一套 MinIO ,但后来一想服务器的开销又要大了,还是作罢了。就在此时,我脑袋突然灵光了一下,既然对象存储的流量是由于资源 url 泄漏导致的外界不停的访问 url 使公网流量剧增从而引起巨额消费,那我能不能不泄露这个 url 呢!原创 2023-07-17 09:25:59 · 45 阅读 · 0 评论 -
【月度刷题计划同款】难度不小的 DP 运用
这是我们「刷穿 LeetCode」系列文章的第 No.1994 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。原创 2023-07-17 09:15:45 · 28 阅读 · 0 评论 -
【锁思想-终章】解锁高性能编程的密码:掌握JVM锁优化的黄金法则
锁优化是在多线程编程中提高性能和减少竞争的关键技术之一。本文中,我们将讨论几种常见的锁优化思想:自适应的自旋锁、锁消除、锁粗化以及偏向锁、轻量级锁和重量级锁。自旋锁是一种在多线程环境下等待锁释放的技术。传统的自旋锁会一直忙等待,消耗大量的CPU资源。而自适应的自旋锁则根据前一次在同一个锁上的自旋时间来决定是否继续自旋。如果前一次自旋时间较长,那么下一次就会更倾向于阻塞线程而不是自旋,从而减少CPU的消耗。在某些情况下,编译器可以通过静态分析判断出一段代码中不可能存在竞争的情况,因此可以将对应的锁消除掉。原创 2023-07-14 11:36:13 · 37 阅读 · 0 评论 -
@Autowired 到底是怎么把变量注入进来的?
在 Spring 容器中,当我们想给某一个属性注入值的时候,有多种不同的方式,例如可以通过构造器注入、可以通过 set 方法注入,也可以使用 @Autowired、@Inject、@Resource 等注解注入。今天就来和小伙伴们聊一聊,@Autowired 到底是如何把数据注入进来的。原创 2023-07-14 11:15:35 · 442 阅读 · 0 评论 -
PostgreSQL MVCC的弊端优化方案
尽管 PostgreSQL 的 MVCC 实现是 Oracle 和 MySQL 等其他广泛使用的数据库中最差的,但它仍然是我们最喜欢的 DBMS,而且我们仍然喜欢它!通过分享我们的见解,我们希望帮助用户释放这个强大的数据库系统的全部潜力。好消息是 OtterTune 会自动为您解决许多此类问题(但不是全部!原创 2023-07-14 10:59:47 · 141 阅读 · 0 评论 -
Flink SQL流处理中的表
SQL API 是基于 SQL 标准的 Apache Calcite 框架实现的,可通过纯 SQL 来开发和运行一个Flink 任务。原创 2023-07-14 09:55:10 · 199 阅读 · 0 评论 -
ACL与NAT
基本ACL:尽量用在靠近目的点高级ACL:尽量用在靠近源的地方(可以保护带宽和其他资源)网络地址转换(Network Address Translation,NAT)是一种在计算机网络中常用的技术,它在网络设备(如路由器和防火墙)之间转换IP地址,实现不同网络间的通信。IP地址转换:NAT允许将内部网络(如家庭或企业局域网)使用的私有IP地址转换为公共IP地址,从而实现与公共互联网的连接。这样,一个公共IP地址就可以代表整个内部网络的所有设备。原创 2023-07-14 09:39:46 · 176 阅读 · 0 评论 -
Python基础教程:Matplotlib图形绘制
Matplotlib是一个广泛使用的数据可视化库,提供了丰富的绘图功能,用于创建各种类型的静态、动态和交互式图形。原创 2023-07-13 11:39:10 · 371 阅读 · 0 评论