java - 中间件 Maven 什么是MavenMaven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中…Maven是一款跨平台的项目管理工具,是一个开源的项目…Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理…POM怎么理解呢???我们使用Java是面向对象编程,对象就是我们的类而Maven是面向项目,把我们的项目看做成是一个对象来进行管...
java - JVM CPU100%,问题排查 前段时间我们新上了一个新的应用,因为流量一直不大,集群QPS大概只有5左右,写接口的rt在30ms左右。因为最近接入了新的业务,业务方给出的数据是日常QPS可以达到2000,大促峰值QPS可能会达到1万。所以,为了评估水位,我们进行了一次压测。压测过程中发现,当单机QPS达到200左右时,接口的rt没有明显变化,但是CPU利用率急剧升高,直到被打满。压测停止后,CPU利用率立刻降了下来。于是开始排查是什么导致了CPU的飙高。 问题排查与解决在压测期间,登录到机器,开始排查问题。本案例
java - JVM堆外内存泄漏故障排查记录 记录一次线上JVM堆外内存泄漏问题的排查过程与思路,其中夹带一些「JVM内存分配的原理分析」以及「常用的JVM问题排查手段和工具分享」,希望对大家有所帮助。在整个排查过程中,我也走了不少弯路,但是在文章中我仍然会把完整的思路和想法写出来,当做一次经验教训,给后人参考,文章最后也总结了下内存泄漏问题快速排查的几个原则。「本文的主要内容:」故障描述和排查过程故障原因和解决方案分析JVM堆内内存和堆外内存分配原理常用的进程内存泄漏排查指令和工具介绍和使用故障描述8月12日中午午休时间,我们商业服务
java - JVM 线上服务的FGC问题排查 线上服务的GC问题,是Java程序非常典型的一类问题,非常考验工程师排查问题的能力。同时,几乎是面试必考题,但是能真正答好此题的人并不多,要么原理没吃透,要么缺乏实战经验。过去半年时间里,我们的广告系统出现了多次和GC相关的线上问题,有Full GC过于频繁的,有Young GC耗时过长的,这些问题带来的影响是:GC过程中的程序卡顿,进一步导致服务超时从而影响到广告收入。这篇文章,我将以一个FGC频繁的线上案例作为引子,详细介绍下GC的排查过程,另外会结合GC的运行原理给出一份实践指南,希望对你有所帮助
java 中间件 - redis 秒杀系统 絮叨之前写了很多Redis相关的知识点,我又大概回头看了下,除了比较底层的东西没写很深之外,我基本上的点都提到过了,我相信如果只是为了应付面试应该是够了的,但是如果你想把它们真正的吸收纳为己用,还是需要大量的知识积累,和很多实际操作的。就我自己而言Redis在开发过程中实在用得太普遍了,热点数据的存储啊,整体性能的提升啊都会用到,但是就像我说的技术就是一把双刃剑,使用它们随之而来的问题也会很多的,我在老东家双十二就遇到缓存雪崩问题让整体服务宕机3分钟,想必大家都知道阿里今年的双十一数据了,那三分钟在这种
java - 中间件 -Redis常见面试题 缓存知识点缓存有哪些类型?缓存是高并发场景下提高热点数据访问性能的一个有效手段,在开发项目时会经常使用到。缓存的类型分为:本地缓存、分布式缓存和多级缓存。本地缓存:本地缓存就是在进程的内存中进行缓存,比如我们的 JVM 堆中,可以用 LRUMap 来实现,也可以使用 Ehcache 这样的工具来实现。本地缓存是内存访问,没有远程交互开销,性能最好,但是受限于单机容量,一般缓存较小且无法扩展。分布式缓存:分布式缓存可以很好得解决这个问题。分布式缓存一般都具有良好的水平扩展能力,对较大数据量
java - 中间件 Redis哨兵、持久化、主从、手撕LRU 前言Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。作为一个在互联网公司面一次拿一次offer的面霸(请允许我使用一下夸张的修辞手法),打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚,在一个寂寞难耐的夜晚,我痛定思痛,决定开始写《吊打面试官》系列,希望能帮助各位读者以后面试势如破竹,对面试官进行360°的反击,吊打问你的面试官,让一同面试的同僚瞠目结舌,疯狂收割大厂Offer!絮叨写这期其实比较纠结
java - 操作系统 Linux 1.什么是LinuxLinux是一套免费使用和自由传播的类似Unix操作系统,一般的WEB项目都是部署放在Linux操作系统上面。Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。2.Windows和Linux的区别Windows是微软开发的操作系统,民用操作系统,可用于娱乐、影音、上网。Windows
java - 中间件 ElasticSearch面试题 1、详细描述一下 Elasticsearch 更新和删除文档的过程。(1)删除和更新也都是写操作,但是 Elasticsearch 中的文档是不可变的,因此不能被删除或者改动以展示其变更;(2)磁盘上的每个段都有一个相应的.del 文件。当删除请求发送后,文档并没有真的被删除,而是在.del 文件中被标记为删除。该文档依然能匹配查询,但是会在结果中被过滤掉。当段合并时,在.del文件中被标记为删除的文档将不会被写入新段。(3)在新的文档被创建时,Elasticsearch 会为该文档指定一个版本号,当
java - 中间件 Elasticserarch 1.ElasticSearch了解多少,说说你们公司es的集群架构,索引数据大小,分片有多少,以及一些调优手段?比如:ES集群架构13个节点,索引根据通道不同共20+索引,根据日期,每日递增20+,索引:10分片,每日递增1亿+数据,每个通道每天索引大小控制150GB之内。1.1、设计阶段调优(1)根据业务增量需求,采取基于日期模版创建索引,通过roll over API滚动索引;(2)使用别名进行索引管理(3)每天凌晨定时对索引做force_merge操作,释放空间(4)采取冷热分离机制,热数
spring - 框架 Nginx 1.什么是Nginx?Nginx是一个轻量级/高性能的反向代理WEB服务器,他实现非常高效的反向代理、负载均衡,他可以处理2-3万并发连接数,官方监测能支持五万的并发,现在中国使用nginx网站用户有很多,例如:新浪、网易、腾讯等。2.为什么要使用Nginx?跨平台、配置简单、反向代理、高并发看姐、内存消耗小:开启10个nginx才占用150M内存,nginx处理静态文件好,消耗内存少而且Nginx内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,在发送的请求就不会发送到宕机的服务器。重新
java框架 - SpringCloud 什么是微服务架构微服务架构就是将单体的应用程序分成多个应用程序,这多个应用程序就成为微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信。这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。为什么需要学习Spring Cloud首先springcloud基于spingboot的优雅简洁,可还记得我们被无数xml支配的恐惧?可还记得springmvc,mybatis错综复杂的配置,有了spingboot,这些..
java框架 - Spring Boot 什么是SpringBoot?通过Spring Boot,可以轻松地创建独立的,基于生产级别的Spring的应用程序,您可以“运行”它们。大多数Spring Boot应用程序需要最少的Spring配置。快速开发,快速整合,配置简化、内嵌服务容器SpringBoot的特征?创建独立的Spring应用程序直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)提供固化的“starter”依赖项,以简化构建配置尽可能自动配置Spring和3rd Party库提供可用于生产的功能..
java框架 - SpringMVC 1.1 什么是Spring MVC?简单介绍下你对Spring MVC的理解?Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。1.2 Spring MVC的优点(1)可以支持各种视图技术,而不仅仅局限于JSP; (2)与Spring框架集成(如IoC容器、AOP等);(3)清晰的角色分配:前端控制器(dispa
java框架 - Spring AOP、 MVC、数据访问 42.在 Spring 框架中如何更有效地使用 JDBC? 使用 SpringJDBC 框架,资源管理和错误处理的代价都会被减轻。所以开发者只需 写 statements 和 queries 从数据存取数据,JDBC 也可以在 Spring 框架提供的 模板类的帮助下更有效地被使用,这个模板叫 JdbcTemplateJdbcTemplate JdbcTemplate 类提供了很多便利的方法解决诸如把数据库数据转变成基本数据类 型或对象,执行写好的或可调用的数据库操作语句,提供自定义的数据错误处理。
java框架 - Spring Beans 和注解 21.什么是 Spring beans? Spring beans 是那些形成 Spring 应用的主干的 java 对象。它们被 Spring IOC 容 器初始化,装配,和管理。这些 beans 通过容器中配置的元数据创建。比如,以 XML 文件中 的形式定义。 Spring 框架定义的 beans 都是单件 beans。在 bean tag 中有个属性”singleton”, 如果它被赋为 TRUE,bean 就是单件,否则就是一个 prototype bean。默认是 TRUE,所以所有在 Spri
java框架 - Spring概述 什么是 spring? Spring 是个 java 企业级应用的开源开发框架。Spring 主要用来开发 Java 应用, 但是有些扩展是针对构建 J2EE 平台的 web 应用。Spring 框架目标是简化 Java 企 业级应用开发,并通过 POJO 为基础的编程模型促进良好的编程习惯。使用 Spring 框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约 2MB 控制反转:Spring 通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是 创建或查找依赖的对象们 面向切面..
java框架 - MyBatis映射器 #{}和KaTeX parse error: Expected 'EOF', got '#' at position 7: {}的区别#̲{}是占位符,预编译处理;{}是拼接符,字符串替换,没有预编译处理。Mybatis在处理#{}时,#{}传入参数是以字符串传入,会将SQL中的#{}替换为?号,调用PreparedStatement的set方法来赋值。#{} 可以有效的防止SQL注入,提高系统安全性;KaTeX parse error: Expected 'EOF', got '#' at po.
java框架 - MyBatis架构 MyBatis编程步骤是什么样的?1、 创建SqlSessionFactory2、 通过SqlSessionFactory创建SqlSession3、 通过sqlsession执行数据库操作4、 调用session.commit()提交事务5、 调用session.close()关闭会话请说说MyBatis的工作原理在学习 MyBatis 程序之前,需要了解一下 MyBatis 工作原理,以便于理解程序。MyBatis 的工作原理如下图读取 MyBatis 配置文件:myba..