能力说明:
精通JVM运行机制,包括类生命、内存模型、垃圾回收及JVM常见参数;能够熟练使用Runnable接口创建线程和使用ExecutorService并发执行任务、识别潜在的死锁线程问题;能够使用Synchronized关键字和atomic包控制线程的执行顺序,使用并行Fork/Join框架;能过开发使用原始版本函数式接口的代码。
暂时未有相关云产品技术能力~
系统架构师,热爱生活,喜欢健身、跑步,持续学习,持续精进
maven是JAVA开发人员经常使用的工具之一,最核心的配置文件是setting.xml,本文对setting.xml做简要分析,梳理xml每个节点的说明。
maven是JAVA开发人员经常使用的工具之一,最核心的配置文件是setting.xml,本文对setting.xml做简要分析,梳理xml每个节点的说明。
CountDownLatch是从JDK1.5开始提供的一个辅助并发编程的一个类,它位于在JUC包中。 允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。
ECS(Elastic Compute Service)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。主要是企业及个人开发者提供一站式的服务,方便应用部署、数据存储等。
经常做web开发的人员对filter和Interceptor肯定都比较熟悉,它们都可以拦截请求及响应,在实际开发中可用来对参数进行过滤,对请求进行安全校验、记录操作日志,但是两者还是有本质区别。
@Async注解是spring中用来标注此方法是通过另外一个线程异步调用的,调用者将在调用时立即返回,方法的实际执行将提交给Spring TaskExecutor的任务中,由指定的线程池中的线程执行。
在使用springBoot进行开发时,经常会碰到把配置文件的属性值注入到某个JAVA类的属性中,可以使用@value注解注入配置文件的单个属性,也可以使用@ConfigurationProperties注入对象的多个属性。
springBoot是现在JAVA开发领域最优秀也是应用最广泛的框架之一,深受国内广大程序员喜爱,也是目前程序员的标配技术栈了,面试过程中经常会问道springBoot相关的技术问题,比如说我们今天探讨的自动配置原理,这是springBoot中一个很核心的技术,因为springBoot的理念是约定大于配置,在springBoot的整个框架中大量使用自动配置的原理,让我们来一块揭开神秘面纱。
快速排序是广泛使用的排序算法,它在平均情况下进行n log n比较,以对 n 个元素的数组进行排序。该算法遵循分而治之的方法。分而治之是一种将算法分解为子问题,然后解决子问题,并将结果组合在一起以解决原始问题的技术。
在目前流行的前后端分离的软件项目中,JSON格式的数据交互是业界标准,后端开发一般要和前端约定好返回的数据格式,提高接口联调及整个软件项目的开发效率。
合并排序是基于分治算法原理的最流行的排序算法之一。使用合并排序算法,一个问题被分成多个子问题。每个子问题都是单独解决的。最后,将子问题组合起来形成最终解决方案。
在开发软件系统过程中,异常信息是常见的,如何处理系统内部异常,快速定位BUG,是非常考验一位软件开发人员的功底。在软件系统开发过程中,统一自定义异常信息,统一对异常进行捕获处理,这样做能提高软件开发效率,并且使代码看起来更优雅。
插入排序是一种排序算法,它在每次迭代中将未排序的元素放置在合适的位置。虽然使用起来很简单,但它不适用于大型数据集,因为插入排序在平均情况和最坏情况下的时间复杂度为O(n 2 ),其中 n 是项目数。插入排序的效率低于其他排序算法,如堆排序、快速排序、合并排序等。
springframework中提供了两种IOC容器类型分别是BeanFactory 和ApplicationContext ,容器来管理业务对象的构建、业务对象之间依赖绑定、管理对象的生命周期等。
依赖注入是我们可以用来实现 IoC 的一种模式,其中被反转的控制是设置对象的依赖关系。 将对象与其他对象连接起来,或将对象“注入”到其他对象中,是由程序完成的,而不是由对象本身完成的。以下是我们如何在传统编程中创建对象依赖项:
bean的生命周期指的是从对象创建到对象销毁的过程。
选择排序是一种排序算法,它在每次迭代中从未排序列表中选择最小元素,并将该元素放在未排序列表的开头。
冒泡排序是一种排序算法,它比较两个相邻的元素并将它们交换,直到它们不符合预期的顺序。 就像水中上升到水面的气泡的运动一样,阵列的每个元素在每次迭代中都会移动到最后。因此,它被称为冒泡排序。
B+ 树是 B 树的扩展,它允许高效的插入、删除和搜索操作。 在 B 树中,键和记录都可以存储在内部节点和叶节点中。而在 B+ 树中,记录(数据)只能存储在叶子节点上,而内部节点只能存储键值。 B+树的叶子节点以单链表的形式链接在一起,使搜索查询更加高效。 B+树用于存储无法存储在主存储器中的大量数据。由于主存的大小总是有限的,B+树的内部节点(访问记录的键)存储在主存中,而叶节点存储在辅助内存中。
在计算机科学中,B树(英语:B-tree)是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉查找树(binary search tree)一个节点可以拥有2个以上的子节点。与自平衡二叉查找树不同,B树适用于读写相对大的数据块的存储系统,例如磁盘。B树减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。
在计算机科学中,时间复杂性,又称时间复杂度,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。
本篇分享参与冬季实战营新年特别任务第三期MySql进阶实战内容。
本篇文章介绍如何在阿里云ECS上安装部署mysql数据库及基本使用
本篇文件介绍linux系统中经常使用的系统工作命令及系统检测命令。
本篇文章介绍如何使用PolarDB和ECS搭建门户网站
本篇文章介绍在阿里云ECS上安装如何安装并验证apache,mysql,php等基础服务。
Vim 是一个基于文本界面的编辑工具,使用简单且功能强大。更重要的是,Vim 是所有 Linux 发行版本默认的文本编辑器。 很多人习惯将 Vim 称为 Vi,其实 Vim 是 Vi 的增强版(在 Vi 的基础上增加了正则表达式的查找、多窗口的编辑等功能),使用 Vim 进行程序开发会更加方便。
本文主要分享linux中主要的文本及文件处理命令及使用。
本文主要分享linux文件目录管理的操作命令
在ES中,提供BULK API来批量操作文档,在单个请求调用中执行多个索引或删除文档、更新文档的操作。这减少了开销,可以大大提高索引速度。
document是es中比较重要的一个概念,相当于数据库中的行数据,es可以对document进行操作,主要包括新增doc、删除doc、更新doc、更新doc的某个部分等。
Elasticsearch中的文本分析发生在以下两个时机,索引时 当文档被索引时,任何文本字段值都会被分析;搜索时 在文本字段上运行全文搜索时,会分析查询字符串。
索引相当与数据库中的表,一个 Elasticsearch 索引只是一个或多个物理分片的逻辑组,其中每个分片实际上是一个独立索引。通过将索引中的文档分布在多个分片上,并将这些分片分布在多个节点上。
Kibana 是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。
bool查询采用了“匹配越多越好”的方法,因此来自每个匹配的must或should子句的分数将添加在一起,以提供每个文档的最终_分数。
ES作为搜索引擎兼数据库,同样提供了强大的聚合分析能力。它基于查询条件来对数据进行分桶、计算的方法。有点类似于 SQL 中的 group by 再加一些函数方法的操作。聚合可以嵌套,由此可以组成复杂的操作(Bucketing聚合可以包含sub-aggregation)。
文本分析是搜索引擎中一个重要的环节,文本分析是将全文本转换为一系列单词的过程,也叫分词。analysis是通过analyzer分词器来实现的,可以使用Elasticsearch内置的分词器,也可以自己去制定一些分词器。除了在数据写入的时候将词条进行转换,在查询的时候也可以指定分词器对语句进行分析。
ElasticSearch是一个分布式、RESTful风格的搜索和数据分析引擎,能够结果不断涌现出的各种用例。作为Elastic Stack的核心,它集中存储数据、帮助您发现意料之中及意料之外的情况。
无影指的是“无影电脑”,阿里最近新推出的产品,相当于个人拥有一台云端电脑,可以通过web端、windows/mac桌面端、安卓端、硬件终端访问的电脑。
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。本篇文章介绍在阿里云服务器上(centos7.9)上安装es7.11.2单节点。
最近在使用druid数据源时,碰到一个问题closed connection。在本地及测试环境都运行正常,但是在正式环境,过一段时间就出现closed conneciton问题,关闭的连接。
Map是Java开发过程使用频率比较高的集合,并且在面试过程中经常会问道,HashMap的底层结构是什么?如何避免Hash碰撞等等,JDK8对HashMap进行了优化,这边文章重点介绍下HashMap在JDK7与JDK8的区别。
位运算(位指的是二进制位或者是bit位) 计算机中所有的计算到计算机底层中都会变成位运算(就是二进制位的运算)。位运算可以提高程序的效率!学习JDK源码的过程中发现很多地方都用到位运算,比如HashMap在中计算key应该放在那个hash桶位置时就用到了位运算。
因为redis是内存型的nosql数据库,所以对于数据的安全问题必须要考虑,redis支持将数据持久化的磁盘。redis的持久化方式有两种——RDB和AOF。
Java8 中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是 Stream API(java.util.stream.*),Stream主要用来操作java中的集合,可以执行复杂的查找、过滤等操作。有点类似使用SQL查询数据库一样,Stream API提供了一种高效且易于使用的处理数据的方式。
git stash使用的场景是,正在某个分支上开发新功能,突然来了BUG,要切换到其它分支修改BUG,但目前分支的代码还不想提交,就只能先使用git stash 命令暂存,然后切换到新的分支。 如果当前分支的代码没有提交,git拒绝切换分支的请求---这挺合情合理,因为切换分支涉及到工作目录的更新,git索引的重建,如果当前工作目录修改了,git总不能将你辛辛苦苦的成果抹去吧。
每个人对云原生的理解都可能不同,就如莎士比亚所说:一千个人眼中有一千个哈姆雷特。如果问我什么是云原生,具体的概念我也不是很清楚,这几年很火的一个词,但是对它没有一个深入的研究。翻遍网络解释千篇一律,也没有一个好、很确切的定义。从字面意思看就是云和原生两个部分,现在流行的云平台有阿里云、百度云等等各种云主机,很多应用都逐步迁移到云平台上,包括很多国企搭建的私有云,逐步抛弃应用跑在物理机、虚拟机上的模式。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较。Nginx 可以在大多数 Unix Linux OS 上编译运行,并有 Windows 移植版。 Nginx 的1.20.0稳定版已经于2021年4月20日发布。
在 Dockerfile 中有COPY 和 ADD两个指令, 它们允许我们将文件从特定位置复制到 Docker 镜像中。它们有着非常类似的作用,又有细微的差别。
代理模式(Proxy Pattern)是指建立某一个对象的代理对象,并且由代理对象控制对原对象的引用。可以在目标对象的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法。