java实战
文章平均质量分 88
在的XF
这个作者很懒,什么都没留下…
展开
-
并发编程:并发操作原子类Atomic以及CAS的ABA问题
Atomic原子类原子类是具有原子操作特征的类。原子类存在于java.util.concurrent.atmic包下。根据操作的数据类型,原子类可以分为以下几类。基本类型AtomicInteger:整型原子类 AtomicLong:长整型原子类 AtomicBoolean:布尔型原子类AtomicInteger的常用方法public final int get() //获取当前的值public final int getAndSet(int newValue)//获取当前原创 2022-04-03 10:15:00 · 281 阅读 · 0 评论 -
Java Lambda详解
Lambda表达式是JDK 8开始后的一种新语法形式。作用:简化匿名内部类的代码写法简化格式(匿名内部类被重写方法的形参列表) -> { 重写方法}Lambda表达式只能简化函数式接口的匿名内部类的写法形式什么是函数式接口?首先必须是接口、其次接口中有且仅有一个抽象方法的形式 通常会在接口上加上一个@FunctionalInterface注解,标记该接口必须是满足函数式接口如何使用Lambda?我们将根据下面三个问题来帮助大家理解和使用Lambda背景:我们自原创 2022-04-02 12:00:00 · 175 阅读 · 0 评论 -
Java 创建kafka主题
本文简要介绍Apache Kafka,并使用Java编码方式创建、配置kafka主题。Kafak 介绍Apache Kafka是强大、高性能、分布式的事件流平台。通常生产者应用程序发布事件到Kafka,消费者订阅这些事件以便读取和处理它们。Kafka使用主题来存储和分类这些事件,例如,在一个电子商务应用程序中,可能有一个“订单”主题。Kafka主题是分区的,它将数据分布在多个代理上以实现可伸缩性。分区可设置副本,从而使数据具有容错性和高可用性。主题还可设置保留策略,便于后期使用。这些都可以通过K原创 2022-04-02 12:30:00 · 877 阅读 · 0 评论 -
SpringMVC源码剖析:消息转换器HttpMessageConverter与ResponseBody注解
本文使用的demo基于maven,是根据入门blog的例子继续写下去的。我们先来看一看对应的现象。 我们这里的配置文件 *-dispatcher.xml中的关键配置如下(其他常规的配置文件不在讲解,可参考本文一开始提到的入门blog):(视图配置省略)<mvc:resources location="/static/" mapping="/static/**"/><mvc:annotation-driven/><context:component-scan b原创 2022-04-02 11:00:00 · 691 阅读 · 0 评论 -
SpringMVC源码分析2:SpringMVC设计理念与DispatcherServlet
SpringMVC简介SpringMVC作为Struts2之后异军突起的一个表现层框架,正越来越流行,相信javaee的开发者们就算没使用过SpringMVC,也应该对其略有耳闻。我试图通过对SpringMVC的设计思想和源码实现的剖析,从抽象意义上的设计层面和实现意义上的代码层面两个方面,逐一揭开SpringMVC神秘的面纱,本文的代码,都是基于Spring的 3.1.3RELEASE版本。任何一个框架,都有自己特定的适用领域,框架的设计和实现,必定是为了应付该领域内许多通用的,烦琐的、基础的工作原创 2022-04-02 09:30:00 · 103 阅读 · 0 评论 -
Java工程师面试指南,Lucene基础原理与实践
根据定义:Lucene是一个高效的,基于Java的全文检索库。所以在了解Lucene之前要费一番工夫了解一下全文检索。那么什么叫做全文检索呢?这要从我们生活中的数据说起。我们生活中的数据总体分为两种:结构化数据和非结构化数据。结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等。当然有的地方还会提到第三种,半结构化数据,如XML,HTML等,当根据需要可按结构化数据来处理,也可抽取出纯文本按非结构化数据来处原创 2022-04-01 14:23:47 · 453 阅读 · 0 评论 -
Java 线程池原理及最佳实践(面试必问)
概述1.1 线程池是什么线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。创建线程本身开销大,反复创建并销毁,过多的占用内存。所以有大量线程创建考虑使用线程池。线程池不用反复创建线程达到线程的复用,更具配置合理利用cpu和内存减少了开销,性能会得到提高,还能统一管理任务比如服务器收到大量请求,每个请求都分配线程去处理,对服务器性能考验就比较大,如果创建5个以上线程考虑使用线程池。线程过多会带来额外的开销,其中包括创建销毁线程的开销、原创 2022-03-31 15:26:41 · 2109 阅读 · 0 评论 -
Spring 中那些让你爱不释手的代码技巧
最近越来越多的读者认可我的文章,还是件挺让人高兴的事情。有些读者私信我说希望后面多分享spring方面的文章,这样能够在实际工作中派上用场。正好我对spring源码有过一定的研究,并结合我这几年实际的工作经验,把spring中我认为不错的知识点总结一下,希望对您有所帮助。一 如何获取spring容器对象1.实现BeanFactoryAware接口@Servicepublic class PersonService implements BeanFactoryAware { priv原创 2022-03-31 14:28:43 · 578 阅读 · 0 评论 -
玩转SpringBoot之定时任务Scheduled线程池配置
对于定时任务,在SpringBoot中只需要使用@Scheduled 这个注解就能够满足需求,它的出现也给我们带了很大的方便,我们只要加上该注解,并且根据需求设置好就可以使用定时任务了。但是,我们需要注意的是,@Scheduled 并不一定会按时执行。因为使用@Scheduled 的定时任务虽然是异步执行的,但是,不同的定时任务之间并不是并行的!!!!!!!!在其中一个定时任务没有执行完之前,其他的定时任务即使是到了执行时间,也是不会执行的,它们会进行排队。也就是如果你想你不同的定时任务互不原创 2022-03-31 09:00:00 · 8788 阅读 · 5 评论 -
集合框架(Collections工具类的方法使用----ArrayList集合存储自定义对象的排序和去除元素重复值)
Collections:是针对集合进行操作的工具类,都是静态方法。** 面试题:* Collection和Collections的区别?* Collection:是单列集合的顶层接口,有子接口List和Set。* Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法** 要知道的方法* public static <T> void sort(List<T> list):排序 默认情况下是自然顺序。* public static <.原创 2022-03-30 13:45:26 · 613 阅读 · 0 评论 -
kratos 微服务框架商城实战初识 kratos
准备工作本机器这里已经安装好了 go、kratos、proto、wire、make等所需的工具。初始化项目目录进入自己电脑中存放 Go 项目的目录新建 kratos-shop/service目录,并进入到新建的目录中执行 kratos new user命令并进入 user目录,执行命令 kratos proto add api/user/v1/user.proto,这时你在 /service/user/api/user/v1目录下会看到新的 user.proto文件已经...原创 2022-03-30 12:30:00 · 1673 阅读 · 0 评论 -
如何设计一个易扩展、易运维的内容下发服务架构?
内容为王时代,任何一个ToC的App都会有内容下发服务,内容包含商品、图文、视频等,比如在淘系App上,首页和各个垂类频道页充满了各类内容,这些页面业务变化非常较快,如何设计一个易扩展、稳定、低延迟的内容下发接口,需要开发同学不断思考摸索。作者总结内容下发服务遇到的常见问题和挑战,设计出一套灵活架构来支持不断变化的业务,重点梳理在内容服务下发内容时需要关注的点、拆分内容下发服务各个环节,通过分层架构,最终达到易扩展、易运维的业务效果。重要术语解释 内容:包括商品、图文、视频等,服务端通过算法...原创 2022-03-30 11:00:00 · 135 阅读 · 0 评论 -
《ClickHouse 实战:企业级大数据分析》
计算机科学领域的所有问题,都可以通过添加一层中间层来解决。通过在用户和计算机中间添加一层逻辑层(概念模型层),于是就有了“数据库的三级模式”:数据库在三个级别 (层次)上进行 抽象 ,使用户能够逻辑地、抽象地处理数据,而不必关心数据在计算机中的物理表示和存储。数据库简介当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。数据库是一个按数据结...原创 2022-03-29 19:49:06 · 759 阅读 · 1 评论 -
Spring源码解析:高级容器的扩展
本篇我们一起来详细探究一下基于 ApplicationContext 的容器初始化和注入过程,至于 ApplicationContext 的使用方式,广大开发者应该是信手拈来,这里还是简单的举例一下:ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-core.xml");MyBean myBean = (MyBean) context.getBean("my-bean");myBean转载 2022-03-29 15:26:34 · 421 阅读 · 0 评论 -
如何设计一个高并发的秒杀架构?
高并发下如何设计秒杀系统?这是一个高频面试题。这个问题看似简单,但是里面的水很深,它考查的是高并发场景下,从前端到后端多方面的知识。秒杀一般出现在商城的促销活动中,指定了一定数量(比如:10个)的商品(比如:手机),以极低的价格(比如:0.1元),让大量用户参与活动,但只有极少数用户能够购买成功。这类活动商家绝大部分是不赚钱的,说白了是找个噱头宣传自己。虽说秒杀只是一个促销活动,但对技术要求不低。下面给大家总结一下设计秒杀系统需要注意的9个细节。掌握了这些,以后就可以和面试官好好聊一聊了。9个细原创 2022-03-29 14:35:09 · 286 阅读 · 0 评论 -
拿捏字节面试官:这92道 Spring Boot 面试题轻松应对(上)
Spring Boot面试题1、什么是Spring Boot?多年来,随着新功能的增加,spring变得越来越复杂。只需访问页面,我们就会看到可以在我们的应用程序中使用的所有Spring项目的不同功能。如果必须启动一个新的Spring项目,我们必须添加构建路径或添加Maven依赖关系,配置应用程序服务器,添加spring配置。因此,开始一个新的spring项目需要很多努力,因为我们现在必须从头开始做所有事情。Spring Boot是解决这个问题的方法。Spring Boot已经建立在现有spri原创 2022-03-28 16:22:09 · 660 阅读 · 0 评论 -
spring-cloud-kubernetes背后的三个关键知识点
首先为自己打个广告,我目前在某互联网公司做架构师,已经有5年经验,每天都会写架构师系列的文章,感兴趣的朋友可以关注我和我一起探讨,关注我,免费分享Java基础教程,以及进阶的高级Java架构师教程,全部免费送概览总结下来有三个关键知识点需要深入理解:1、DiscoveryClient是个接口,对应的实现类是哪个?2、discoveryClient.getServices()方法取得了kubernetes的service信息,这背后的机制是什么?java应用是怎样取得所在kubernetes原创 2022-03-28 15:07:25 · 1280 阅读 · 0 评论 -
Spring Boot + Prometheus + Grafana 可视化监控 配图详解
一、背景Spring Boot 的应用监控方案比较多,SpringBoot + Prometheus + Grafana 是目前比较常用的方案之一。它们三者之间的关系大概如下图:二、开发SpringBoot应用首先,创建一个SpringBoot项目,pom文件如下:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo原创 2022-03-20 21:03:16 · 406 阅读 · 0 评论 -
Spring MVC整体结构介绍,图文+代码
Spring MVC是Spring提供的构建Web应用程序的框架,该框架遵循了Servlet规范,负责接收并处理Servelt容器传递的请求,并将响应写回Response。Spring MVC以DispatcherServlet为核心,众多组件如HandlerMapping为辅助,为用户封装了请求映射等底层逻辑,让用户可以更专注与业务逻辑的处理。本文会对Spring MVC整体结构做简单介绍。Spring MVC结构图Spring MVC是一个基于Servlet容器的Web应用框架,这里的Se.原创 2022-03-20 20:16:36 · 888 阅读 · 0 评论 -
AQS 源码解读之解锁
在 AQS 源码解读之加锁中,线程 A 占用着锁没有释放。然后线程 B 和线程 C 都在 CHL 队列中排队,也就是执行了 parkAndCheckInterrupt 方法将自己挂起了。现在 CHL 队列的状态:线程 Aunlock() 方法解析ReentrantLock 类中的 unlock 方法public void unlock() { sync.release(1);}sync 类中的 release 方法public final boolean rele原创 2022-03-20 17:08:15 · 466 阅读 · 0 评论 -
强推面试前必刷:Alibaba 内部 Java 高级架构师
最近有很多同学已经开始准备下半年的跳槽面试了,不得不说还是要给这些同学竖一个大拇指的,看来这些同学都是未雨绸缪的行家呀!老师今天就为大家分享一份 Alibaba 内部 Java 高级架构师面试题的总结!这份阿里的 Java 高级架构师面试总结涉及到的内容有:Java 基础、JVM、多线程与高并发、设计模式、操作系统、网络底层原理、Spring、SpringBoot、SpringCloud、MySQL、Redis、Dubbo、Nginx、消息中间件、ZooKeeper、分布式、ELK、Git 等等内容原创 2022-03-18 19:22:09 · 3644 阅读 · 0 评论 -
腾讯云开源业界微服管理框架 Femas
想了解“一线互联网公司”最新技术要求,对比找出自身的长处和弱点所在,评估自己在现有市场上的竞争力如何;原创 2022-03-17 15:51:39 · 361 阅读 · 0 评论 -
你还在为转换Bean对象 发愁吗.本文为你详解
前言:我们的故事要从一个风和日丽的下午开始说起!这天,外包韩在位置上写代码~外包韩根据如下定义PO(persistant object):持久化对象,可以看成是与数据库中的表相映射的 java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录。 VO(view object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。 BO(business object):业务对象,主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。 DT原创 2022-03-16 14:38:36 · 161 阅读 · 1 评论 -
2022.Java面试 相关概念
面向对象的三个特征封装,继承,多态.这个应该是人人皆知.有时候也会加上抽象.多态的好处允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用).主要有以下优点:可替换性:多态对已存在代码具有可替换性. 可扩充性:增加新的子类不影响已经存在的类结构. 接口性:多态是超累通过方法签名,想子类提供一个公共接口,由子类来完善或者重写它来实现的. 灵活性: 简化性:代码中如何实现多态实现多态主要有以下三种方式: 1. 接口实现 2原创 2022-03-16 13:46:58 · 490 阅读 · 0 评论 -
Spring 源码学习~ 循环依赖
package com.example;import com.example.config.AppConfiguration;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import com.example.bean.A;/** <pre> </pre> <pre> @author m原创 2022-03-15 17:38:01 · 270 阅读 · 0 评论 -
Spring 由浅到深全方位讲解,带你走进一个更高的领域
IoC 概念框架怎么学:框架是一个软件,是其它人写好的软件。知道框架能干啥, 具体的使用步要就行。1)知道框架能做什么,mybatis--访问数据库, 对表中的数据执行增删改查。2)框架的语法,框架要完成一个功能,需要一定的步骤支持的。3)框架的内部实现,框架内部怎么做,原理是什么。4)通过学习,可以实现一个框架。spring 的第一个核心功能 iocIOC (Inversion of Control) :控制反转,是一个理论,概念,思想。描述原创 2022-03-15 17:21:52 · 454 阅读 · 0 评论 -
Spring Cloud 微服面试笔记
主要内容:=====第一部分介绍分布式系统的概念、分法和优缺点,提出微服务的概念,对 Spring Cloud、SpringBoot 和 REST 风格进行简单的介绍。第 1 章分布式和微服务概述 1.1 互联网系统的特征 1.2 分布式系统概述 1.3 分布式系统的设计原则 1.4 微服务架构 1.5 Spring Cloud 1.6 微服务系统样例简介 第 2 章技术基础 2.1 Spring Boot原创 2022-03-15 16:59:06 · 368 阅读 · 0 评论 -
Java 将PDF转为PDF/A
通过将PDF格式转换为PDF/A格式,可保护文档布局、格式、字体、大小等不受更改,从而实现文档安全保护的目的,同时又能保证文档可读、可访问。本篇文章,将通过Java后端程序代码展示如何将PDF转为符合PDF/A1A, 2A, 3A, 1B, 2B和3B标准的PDF。以下是具体方法及步骤。Jar包导入本次程序中导入的是Spire.Pdf.jar。可在Maven程序中配置pom.xml如下内容来实现下载导入:复制代码<repositories> <repository&原创 2022-03-12 19:17:32 · 355 阅读 · 0 评论 -
引流Java解决内存利用
Valhalla布莱恩·格茨在去年底发表了一篇名为State of Valhalla的文章,里面信息量非常大,里面提到早在2014年Java项目组就启动了一个名叫Valhalla的项目,这个项目将为JVM平台带来更加灵活的、扁平化的数据类型。在2021年该项目将有进一步的动作,值对象(value objects)、原始类(primitive classes)、专用泛型(specialized generics)即将引入JVM平台。今天先来聊聊这个值对象是个啥。我们知道什么是“值”,什么是“对象”,但原创 2022-03-12 19:03:49 · 102 阅读 · 0 评论