程序员
文章平均质量分 87
公众号【Java大蜗牛】
这个作者很懒,什么都没留下…
展开
-
阿里面试题:如何解决缓存常见的坑?
为什么使用缓存在高并发请求时,我们会频繁提到使用缓存技术,最直接的原因是,磁盘IO及网络开销是直接请求内存IO的千百上千倍做个简单计算,如果我们需要某个数据,该数据从数据库磁盘读出来需要0.0045S,经过网络请求传输需要0.0005S,那么每个请求完成最少需要0.005S,该数据服务器每秒最多只能响应200个请求,而如果该数据存于本机内存里,读出来只需要100us,那么每秒能够响应10000个请求。通过将数据存储到离CPU更近的未位置,减少数据传输时间,提高处理效率,这就是缓存的意义。...原创 2021-05-27 13:49:33 · 306 阅读 · 1 评论 -
实战级详解Spring框架中引入阿里开源组件Nacos作配置中心
Nacos的配置中心先来聊聊配置中心是什么,以及为什么要使用配置中心。简单的说,配置中心是可以集中、灵活、动态的管理系统中的各种配置参数的配置管理产品,例如增、删、改、查功能开关、数据库连接配置、服务请求地址等。所谓集中,就是有统一管理的平台;灵活,不需要修改代码,做到自动匹配赋值、配置隔离;动态,不需要通过重启服务来使变更生效,主动推送或拉取变更的值。对于配置参数,早期很传统的做法是通过程序硬编码的方式,将参数值写到代码中,如果要改变参数值,不仅要修改代码,还需要重新部署。重新部署倒是勉强可以接受原创 2021-05-26 22:05:59 · 722 阅读 · 3 评论 -
牛逼!从0到1用Java实现-Redis分布式锁。
1、为什么要使用分布式锁如果在一个分布式系统中,我们从数据库中读取一个数据,然后修改保存,这种情况很容易遇到并发问题。因为读取和更新保存不是一个原子操作,在并发时就会导致数据的不正确。这种场景其实并不少见,比如电商秒杀活动,库存数量的更新就会遇到。如果是单机应用,直接使用本地锁就可以避免。如果是分布式应用,本地锁派不上用场,这时就需要引入分布式锁来解决。由此可见分布式锁的目的其实很简单,就是为了保证多台服务器在执行某一段代码时保证只有一台服务器执行。2、为了保证分布式锁的可用性,至少要...原创 2021-05-26 15:25:49 · 258 阅读 · 0 评论 -
搞定Tomcat服务配置和服务器优化只需看这一篇文章就够了!
一、Tomcat内存优化① tomcat启动脚本Tomcat内存优化其实也就是JVM优化,启动时告诉JVM需要多大内存(调优内存是最直接的方式)。配置文件为Windows 下的 catalina.bat,Linux 下的 catalina.sh。在linux启动Tomcat通常我们会执行bin/startup.sh文件,查看该文件源码会发现,该文件最后会执行catalina.sh脚本文件。在catalina.sh脚本文件中,会看到如下注释变量释义:该脚本注释说明了一些CATALINA Serve原创 2021-05-25 19:39:25 · 498 阅读 · 1 评论 -
面试被虐后,我忍痛把JVM调优原理的知识和经验分享了出来!
前言:先了解原理,然后在进行调优。一定要记住的是任何的调优都不是一蹴而就,不要指望改动一个参数就达到调优的目的,也不要仅仅改动了一个参数,就认为是做了调优。调优是在已有的资源和要达到的目标的前提上,进行权衡。从类加载到整个JVM的运行周期内大致流程和结构如下:从上图可以看到,JVM 可以划分为这些部分:执行引擎,包括:GC、JIT 编译器类加载子系统,这部分的问题,一般在开发过程中出现JNI 部分,这部分问题一般在 JVM 之外运行时数据区;Java 将内存分为 2 大块:堆内存和栈内原创 2021-05-21 14:56:07 · 317 阅读 · 2 评论 -
我已迷失在MySQL的锁世界无法自拔~~~!
1.饮料这是一杯饮料。这是3杯饮料,每杯饮料的味道各不相同。但是人类并不称呼【饮料】为【饮料】,而是称呼【饮料】为【记录】。2.红章鱼这个红色的,长的像章鱼????的家伙,我们就叫它红章鱼~红章鱼分为头部和触手两个部分。红章鱼有触手,且可以有任意根触手。红章鱼爱喝饮料,把触手伸进杯子就能吸到饮料。红章鱼将不同的触手伸进不同的杯子,就可以同时喝多杯饮料。多只红章鱼可以同时出现。但是正在喝饮料的红触手会排...原创 2021-05-19 19:56:50 · 185 阅读 · 1 评论 -
线程不安全类的产生的原因是什么?我们来分析一下!
1.前言我们都知道,对于线程不安全的类,我们需要采用一些方法去保证线程安全;那么,我们首先要知道什么类是线程不安全的。2.set相关如果说:对于,一个资源来说:所有的线程都是去读的,那么,这个资源就是线程安全的。(不涉及资源的更改)但是,如果,有写操作时,就可能导致线程不安全了;线程安全类定义:不存在竞态条件(类中不存在被修改的成员变量),或存在时进行了同步控制举例说明:SimpleDateFormatprivate StringBuffer format(Date date, StringBu原创 2021-05-18 14:19:04 · 758 阅读 · 10 评论 -
什么,你管这叫“线程安全”?
前言:1.什么叫线程安全?2.线程安全与变量的关系?变量又与堆/栈/静态存储区有密切关系什么叫线程安全?我们以常见的一行代码i++ ,i-- 为例, 计算机的操作姿势可能与你想象的不一样。在大多数计算机中, 给变量自增并不是原子操作, 需要下面三步:① 将变量值加载进寄存器② 寄存器自增/自减值③ 将寄存器值加载回原变量多线程环境下,如果你不使用一些原子锁操作:线程A ( i++ )可能只执行了前面两步后,之后CPU轮询切换到其他线程或者线程A被抢占CPU; 线程B ( i-- )欻.原创 2021-04-30 14:58:16 · 198 阅读 · 2 评论 -
【2021最新】Spring 全家桶:Java之Sping MVC SpringBoot常见面试题总结,附答案解析!
Spring 全家桶100问,常见面试题总结,一共分为三篇 上 中 下,本篇为上篇!一,Spring boot 有哪些方式可以实现热部署?使用 devtools 启动热部署,添加 devtools 库,在配置文件中把 spring. devtools. restart. enabled 设置为 true; 使用 Intellij Idea 编辑器,勾上自动编译或手动重新编译。 109.jpa 和 hibernate 有什么区别? jpa 全称 Java Persistence API,是...原创 2021-04-28 15:49:10 · 371 阅读 · 0 评论 -
拜托,不要再问我Java需要学到什么程度才能找到工作了
前言:最近有很多粉丝朋友私信我,说找工作太难了,Java需要学到什么程度才能找到工作,这不 我针对了企业用人需求 做了个技术栈,基本上掌握个70%以上就能找到一个不错的开发工作,技术栈如下:一:Java基础-语言语法数据类型运算符流程控制方法的定义,调用,重载数组二:面向对象继承封装多态三:JavaSE进阶异常常用类集合IO流多线程网络编程JUnit枚举注解反射机制四:数据库+JDBCOeacle+MyQSL+JDBC...原创 2021-04-26 17:42:59 · 509 阅读 · 1 评论 -
总是记不住Java的IO流用法?用N个问题教你掌握Java IO流
前言:Java IO 体系看起来类很多,感觉很复杂,但其实是 IO 涉及的因素太多了。在设计 IO 相关的类时,编写者也不是从同一个方面考虑的,所以会给人一种很乱的感觉,并且还有设计模式的使用,更加难以使用这些 IO 类,所以特地对 Java 的 IO 做一个总结。Java IO 体系看起来类很多,感觉很复杂,但其实是 IO 涉及的因素太多了。在设计 IO 相关的类时,编写者也不是从同一个方面考虑的,所以会给人一种很乱的感觉,并且还有设计模式的使用,更加难以使用这些 IO 类,所以特地对 Java 的原创 2021-04-23 16:29:07 · 275 阅读 · 0 评论 -
死磕Spring之IoC篇 - 深入了解Spring IoC(面试题)
目录什么是 Spring Framework ?Spring Framework 的优势和不足?你对 IoC 的理解?为什么需要 IoC ?IoC 和 DI 的区别?IoC 容器的职责?什么是 Spring IoC 容器?构造器注入和 Setter 注入BeanFactory 和 ApplicationContext 谁才是 Spring IoC 容器?Spring Bean 的生命周期?BeanDefinition 是什么?Spring 内建的 Bean 作用域有哪些?Bean原创 2021-04-19 18:01:35 · 637 阅读 · 0 评论 -
RabbitMQ 中 7 种消息队列
七种模式介绍与应用场景简单模式(Hello World)做最简单的事情,一个生产者对应一个消费者,RabbitMQ相当于一个消息代理,负责将A的消息转发给B应用场景:将发送的电子邮件放到消息队列,然后邮件服务在队列中获取邮件并发送给收件人工作队列模式(Work queues)在多个消费者之间分配任务(竞争的消费者模式),一个生产者对应多个消费者,一般适用于执行资源密集型任务,单个消费者处理不过来,需要多个消费者进行处理应用场景:一个订单的处理需要1...原创 2021-04-19 17:03:58 · 374 阅读 · 0 评论