暂时未有相关云产品技术能力~
关注公众号【Java极客技术】回复eeee03,获取最新代码资源
下面分享的是我在工作中遇到的一个问题。有关 mysql 索引失效的问题。 处于保密考虑,我拿一个类似的场景举例子。
大家好,我是本周的值班编辑 懿,本周将由我为大家排版并送出技术干货,大家可以在公众号后台回复“springboot”,获取最新版 Spring Boot2.1.6 视频教程试看。
说到 Nginx ,相信大家都不会陌生,最常用的莫过于:用它来与 Tomcat 搭配做负载均衡,起到灰度发布的作用,同时保证系统高可用!
说到 Nginx ,相信大家都不会陌生,最常用的莫过于:用它来与 Tomcat 搭配做负载均衡,起到灰度发布的作用,同时保证系统高可用!
今天十月一了,庆祝祖国七十周年,我们也为大家送上了直播链接,看完文章记得回头来看我们祖国的昌盛和繁荣,让我们共同为我们的祖国送上自己的祝福!
当你学习编程时,这一刻所有的事情都改变了。在 Firehose,我们习惯称之为编码的拐点。在这个阶段之后,你作为开发人员的编程能力将大不相同,建立起编码的拐点是非常重要的,到达拐点也就意味着你不再需要别人手把手的帮助,这是一个非常重要的过程,但是如果你达不到这个拐点的话,那么你就很难提高编程技能。
写作这件事,很多大佬都谈过,但我还是想从自己的角度去谈谈.
本文将分享从纯 Servlet 时代到 Spring 框架时代的过程中,关于请求分发的一些思考。 在讲请求分发之前先梳理一下一个Web请求的交互逻辑: 首先用户在客户端发送一个请求到服务器。 这个请求首先会经过操作系统的 TCP/IP 协议栈解析后发送至某一个端口 在该端口运行着一个 Web 应用服务器(假设是 Tomcat) 接着 Tomcat 会把请求根据请求路径传送给对应的 Servlet 处理 (要注意的是,Web 服务器本身是不处理请求的,比如说 Tomcat,它只负责分发请求)
线上某服务 A 调用服务 B 接口完成一次交易,一次晚上的生产变更之后,系统监控发现服务 B 接口频繁超时,后续甚至返回线程池耗尽错误 Thread pool is EXHAUSTED。因为服务 B 依赖外部接口,刚开始误以为外部接口延时导致,所以临时增加服务 B dubbo 线程池线程数量。配置变更之后,重启服务,服务恢复正常。一段时间之后,服务 B 再次返回线程池耗尽错误。这次深入排查问题之后,才发现 Kafka 异步发送消息阻塞了 dubbo 线程,从而导致调用超时。
当下 k8s 算是比较火的一个内容,那么它到底是什么呢,它为什么会这么火呢,它解决的是什么问题呢. 当我们谈 k8s 的时候,总是会想起来 Docker .是的,如果想要知道 k8s 解决的是什么问题,我们不可避免的再回到 Docker 上面,回到容器上面来.
在当今社会,人们似乎越努力越焦虑。许多人为此熬没了豪情,浮躁了心性,自叹自怜“怀才不遇”。 确实,生活节奏太快,知识迭代迅猛,潮流风口日新月异……人们害怕被时代抛弃,更怕岁数越大理想越远,所以不敢不努力。
这个文章来源灵感是公司的项目在安全检查的时候,发现了很多 SQL 注入的一些问题还有一些 XSS 攻击问题,SQL 注入我们都是比较了解的,那么什么是 XSS 攻击呢?测试反馈给我的时候我是一脸懵逼呀,现在我们就来说一下什么是 XSS 攻击,以及我们怎么防止它的出现。
废话不多说,就说一句:在 JFinal 中集成 EhCache,可以提高系统的并发访问速度。 可能有人会问 JFinal 是什么,EhCache 是什么,简单解释一下。 JFinal 是一个基于Java 语言的极速 Web 开发框架,用起来非常爽,谁用谁知道。EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干的特点,用起来非常爽,谁用谁知道。 JFinal 本身已经集成了 EhCache 这个缓存插件,但默认是没有启用的。那怎么启用呢? 请随我来。
上篇文章和小伙伴们聊了 realm 的简单操作,本文我们来继续深入这个话题。
前面跟大家分享的排序算法之快速排序,今天跟大家分享另外一个排序算法——插入排序。插入排序可能大家在平时真正用到地方不多,但是也会用到,而且有一个场景我想大家一定经历过,那就打扑克牌。想想我们在抓牌的时候,是不是随着拿到一张张的扑克牌,然后按照顺序插入我们左手呢(或者右手上)?这其实就是插入排序,通过依次比较前一个数字的大小,将需要排序的数字插到最适合的位置,下面我们一起看下吧。
引用参考第二条 - Arthas提醒您:诊断千万条,规范第一条,热更不规范,同事两行泪
面试相关的话题已经是一个老生常谈的问题了,不过网络是大部分的文章都是求职者的面试经历或者是一些面试题目汇总,站在面试官的角度的文章好像不多,所以今天我们就从面试官的角度来看一下面试这件事。 首先我们先思考一下,面试官在面试的时候主要看中的有哪些? 总的来说,我觉得可以简单总结为以下两点: 能力; 态度。
实际开发中,经常用到java的集合框架,比如ArrayList、LinkedList、HashMap、LinkedHashMap,几乎经常接触到,虽然用的多,但是对集合的整体框架,基础知识还是不够系统,今天想和大家一起来梳理一下!
实际开发中,经常用到java的集合框架,比如ArrayList、LinkedList、HashMap、LinkedHashMap,几乎经常接触到,虽然用的多,但是对集合的整体框架,基础知识还是不够系统,今天想和大家一起来梳理一下!
yaml 文件用在很多地方,但是这里以介绍在 Kubernetes 中的应用为主。
在学习一个新知识之前,要去想它为什么会出现,它的出现解决了什么问题.这样印象才会深刻一些. 在同一个主机下,两个进程间的通讯是很容易,直接把各种通讯细节交给操作系统去做就 OK 了.但是如果两个进程是处于不同主机下呢?该如何进行通讯呢?而且在实际的应用场景中,是很复杂的,有的使用 TCP 协议,有的使用 UDP 协议,那么当我们使用不同的协议进行通信时,是不是就要使用不同的接口?同时还要处理不同协议的各种通讯细节,这样一来,是不是就增加了开发的难度,同时软件不容易进行扩展.
通过上篇文章的学习,小伙伴们对 shiro 应该有了一个大致的了解了,本文我们就来通过一个简单的案例,先来看看 shiro 中登录操作的一个基本用法。
今天跟大家分享一个常用的排序算法——快速排序。我想大家在日常的工作或者面试的时候肯定经常会遇到很多排序算法,而且快速排序算法往往是这里面相对更好的排序算法,并且实现也非常简单。下面我们一起看下吧。
最近在学习极客时间上的一门课程<趣谈网络协议>,里面有涉及到虚拟机网络的一些东西.正好一直在接触,站在巨人的肩膀上,我也来写写.
上篇文章和小伙伴们仔细聊了聊 Shiro 中的登录操作,官方的 demo 中对登录操作也有很多英文注释,相信大家都能理解,但是对于整个登录的过程,可能小伙伴们还有一些疑惑,那么本篇文章我将和小伙伴们分享一下 Shiro 中的登录流程,顺便介绍一个重要的类--Realm。
使用 Java 阻塞 I/O 模型读取数据,将会导致线程阻塞,线程将会进入休眠,从而让出 CPU 的执行权,直到数据读取完成。这个期间如果使用 jstack 查看线程状态,却可以发现Java 线程状态是处于 RUNNABLE,这就和上面说的存在矛盾,为什么会这样? 上面的矛盾其实是混淆了操作系统线程状态与 Java 线程状态。这里说的线程阻塞进入休眠状态,其实是操作系统层面线程实际状态。而我们使用 jstack 查看的线程状态却是 JVM 中的线程状态。 线程是操作系统中一种概念,Java 对其进行了封装,Java 线程本质上就是操作系统的中线程,其状态与操作系统的状态大致相同,但还是存在
关于 Docker 的一些概念和操作,我争取这一篇博客说完。下面正文开始。
关于 Nginx 你还在背诵着培训班中教给你的内容么?面试的时候很多项目都说使用过 Nginx,但是当面试官问你 Nginx 的原理的时候,你还在手足无措么?如果有,那么这篇文章我送给大家,让你面试回答 Nginx 的的时候不再慌张,不需要再去背诵那些内容了,各位看官准备好了么?
Apache Shiro 是一个开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro 框架具有直观、易用等特性,同时也能提供健壮的安全性,虽然它的功能不如 SpringSecurity 那么强大,但是在普通的项目中也够用了。
服务注册中心,当前用得比较多的就是 Eureka 跟 Zookeeper 了。 Eureka 是 SpringCloud 自带的组件,而 Zookeeper 则是 Dubbo 一般会选择的。我们以前在做服务这块其实是基于 Spring Cloud 技术栈来做的,没有选择Dubbo。所以,Eureka 也就作为了我们的服务注册中心首选。
分布式系统面试系列02-Spring Cloud 的底层架构原理,前面我们讲了 SpringCloud 的核心架构,了解了有要构建一套分布式系统我们需要哪些组件。今天以 SpringCloud 为例,讲解一下它的核心组件的原理。 前面我们讲了一个以Spring Cloud 技术栈实现的分布式系统,至少得包含 Eureka、Ribbon、Feign、Zuul 这么几个组件,你还能记得他们各自是干嘛的么。记不清了没关系,回去看一下这篇文章就好。
在每个覆盖了 equals 方法的类中,都必须覆盖 hashCode 方法。如果不这样做的话,就会违反 hashCode 的通用约定,从而导致该类无法结合所有的给予散列的集合一起正常运作。这类集合包括 HashSet、HashMap,下面是Object 的通用规范:
简单工厂模式(Simple Factory Pattern)是指由一个工厂对象决定创建出哪一种产品类的实例。简单工厂适用于工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参数,对于如何创建对象的逻辑不需要关心。
简单工厂模式(Simple Factory Pattern)是指由一个工厂对象决定创建出哪一种产品类的实例。简单工厂适用于工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参数,对于如何创建对象的逻辑不需要关心。
我们可以通过springProfile为不同的环境配置不同的日志输出规则,比如生产环境不开启console,级别为info等 下面来看看示例,
之前星球的好友就在说,关于日志的问题,我们是怎么来进行使用和分析的,因为如果日志使用的好,那么我们在程序出现BUG的时候,能够快速的定位,然后找到原因,并且解决,如果使用不好,那么你将无从下手。下面我就就来说说日志的那点事!
人生有涯,学海无涯 面试相关的话题已经是一个老生常谈的问题了,不过网络是大部分的文章都是求职者的面试经历或者是一些面试题目汇总,站在面试官的角度的文章好像不多,所以今天我们就从面试官的角度来看一下面试这件事。 首先我们先思考一下,面试官在面试的时候主要看中的有哪些? 总的来说,我觉得可以简单总结为以下两点: 能力; 态度。
写作这件事,很多大佬都谈过,但我还是想从自己的角度去谈谈.
嗨,本篇文章来说说 Java 的一个小细节:为什么要将局部变量的作用域最小化? 明人不说暗话啊。这篇文章的灵感来源于《Effective Java》,这本书我买了有好长好长一段时间了,书页都已经泛黄,烙下了时间的痕迹,但我仍然还没有把这本书读完。说来惭愧啊。 为什么呢?总感觉这本书的中文翻译有点拙劣,读起来烦闷枯燥。明明感觉作者说得非常有道理,但就是提不起半点兴致。 (说完这句话,总觉得有点对不住这本书的译者,毕竟吐槽容易,分享难啊。)
分布式系统面试系列02-Dubbo 的底层原理,前面我们讲了 SpringCloud 核心组件的底层原理,同样的,作为微服务里面的另外一大派系Dubbo ,使用的也是蛮多的,很多时候面试也会考到。
Java类库中有许多资源需要通过close方法进行关闭。 比如 InputStream、OutputStream,数据库连接对象 Connection,MyBatis中的 SqlSession 会话等。作为开发人员经常会忽略掉资源的关闭方法,导致内存泄漏。
我们都知道,计算机的底层都是使用二进制数据进行数据流传输的,那么为什么会使用二进制表示计算机呢?或者说,什么是二进制数呢?在拓展一步,如何使用二进制进行加减乘除?二进制数如何表示负数呢?本文将一一为你揭晓。
Dubbo 通过注册中心在分布式环境中实现服务的注册与发现,而注册中心通常采用 ZooKeeper,研究注册中心相关源码绕不开 ZooKeeper,所以学习了 ZooKeeper 的基本概念以及相关 API 操作。
前段时间读 Jeff Atwood 的一篇博客,里面有一段话说得蛮好的:“沿着那条路冲下去,一定要快,如果有什么挡住了去路,绕开它。” 这段话的弦外之音就是在说:做一件事,不要刻意追求完美、极致,而是要追求快速地迭代。 大家都知道,Google Chrome 浏览器的迭代速度非常快,截个图大家感受一下(这些都是 release 的正式版本)。版本号用了 9 位数字表示,可想而知迭代的频率有多快。
今天,正式介绍一下Java极客技术知识星球 SpringBoot 精髓之 SpringBoot-starter Spring 源码学习(八) AOP 使用和实现原理 Java:前程似锦的 NIO 2.0 java中List元素移除元素的那些坑
之前研究JVM的垃圾回收机制之后,里面涉及到了类加载机制,类加载器,然后就看到了双亲委派模型了。今天我们来讲一下这个双亲委派模型吧。
之前研究JVM的垃圾回收机制之后,里面涉及到了类加载机制,类加载器,然后就看到了双亲委派模型了。今天我们来讲一下这个双亲委派模型吧。
修饰符是用于限定类型以及类型成员申明的一种符号,从修饰对象上可以分为类修饰符,方法修饰符,变量修饰符;从功能上可以划分为访问控制修饰符和非访问修饰符。访问修饰符控制访问权限,不同的访问修饰符有不同的权限范围,而非访问修饰符则是提供一些特有功能。
kafka内部发送和接收消息的时候,使用的是byte[]字节数组的方式(RPC底层也是用这种通讯格式)。但是我们在应用层其实可以使用更多的数据类型,比如int,short, long,String等,这归功于kafka的序列化和反序列化机制。
计算机自打诞生以来,用作最多的就是进行计算,而计算离不开运算符,所以运算符在我们的Java语言中的地位举足轻重,我们现在就来了解一下Java给我们提供的运算符。 从运算的元素的个数来区分,可以分为一元运算符,二元运算符,三元运算符。