
Java从基础到就业全套内容更新ing
文章平均质量分 92
这里有全套学习路选图+源码+项目,全套学习内容累积700+小时,从入门到就业!关注一个专栏就够了~独家项目资源哦!
黑马程序员官方
国内公认的好口碑IT教育机构,持续提供优质免费资源,让千万学子少走弯路!
黑马程序员是A股上市公司传智教育旗下子品牌,已培养30余万IT人才,每10名学员有7名来自老学员推荐。
展开
-
Redis系列面试题整理(含参考答案)
字符串 string哈希 hash列表 list集合 set有序集合 sorted set / zset什么叫数据淘汰策略?什么样的应用场景需要用到数据淘汰策略?当新数据进入redis时,如果内存不足怎么办?在执行每一个命令前,会调用**freeMemoryIfNeeded()**检测内存是否充足。如果内存不满足新 加入数据的最低存储要求,redis要临时删除一些数据为当前指令清理存储空间。清理数据的策略称为逐出算法。原创 2023-08-09 10:39:19 · 2795 阅读 · 0 评论 -
数据库常用工具
定期对你的MYSQL数据库进行一个体检,是保证数据库安全运行的重要手段,因为,好的工具是使你的工作效率倍增!常用工具。原创 2023-07-21 16:14:46 · 271 阅读 · 0 评论 -
ELK搭建
1.需要准备一台linux服务器(最好是CentOS7),内存至少4g以上(三个组件都比较占用内存)2.需要有docker使用经验。原创 2023-07-11 11:34:45 · 2908 阅读 · 1 评论 -
零基础如何学习Java?Java学习路线图
课程内置大量的案例实战,初学者可以学练合一,对 Java 语言形成完整体系,并能得到自己的心得,足以轻松应对薪酬 30万+ 的 Java 基础面试。20 天学会 Java - 1. Java 课程简介www.zhihu.com/education/video-course/1483149993460109313正在上传…JDK8-15新特性 → 编程强化 → 数据库强化 → 安全框架SpringSecurity → 报表技术 →。VelocityTools → 工作流Activiti7……原创 2023-02-13 18:00:19 · 430 阅读 · 0 评论 -
【黑马程序员项目】传智健康项目预约管理-套餐管理
【黑马程序员项目】传智健康项目概述和环境搭建【黑马传智健康项目】功能需求和源码【黑马传智健康项目】预约管理-检查组管理在实际开发中,我们会有很多处理不同功能的服务器。例如:应用服务器:负责部署我们的应用数据库服务器:运行我们的数据库文件服务器:负责存储用户上传文件的服务器分服务器处理的目的是让服务器各司其职,从而提高我们项目的运行效率。常见的图片存储方案:方案一:使用nginx搭建图片服务器方案二:使用开源的分布式文件存储系统,例如Fastdfs、HDFS等方案三:使用云存储,例如阿里云、七牛云等七牛云原创 2023-02-09 17:29:12 · 696 阅读 · 0 评论 -
【黑马项目】传智健康预约管理-检查组管理
/分页相关模型数据 currentPage : 1 , //当前页码 pageSize : 10 , //每页显示的记录数 total : 0 , //总记录数 queryString : null //查询条件 } , dataList : [ ] , //当前页要展示的分页列表数据在页面中提供了findPage方法用于分页查询,为了能够在checkgroup.html页面加载后直接可以展示分页数据,可以在VUE提供的钩子函数created中调用findPage方法。原创 2023-01-31 17:42:27 · 557 阅读 · 0 评论 -
Redis入门学习的三个阶段10个知识点
Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样:Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网(原创 2022-11-29 18:27:02 · 342 阅读 · 0 评论 -
重试实现高可用方案
Guava是一个基于Java的开源类库,其中包含谷歌在由他们很多项目使用的核心库。这个库目的是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,并发性,常见注解,字符串处理,I/O和验证的实用方法。源码地址:https://github.com/google/guava标准化 - Guava库是由谷歌托管。高效 - 可靠,快速和有效的扩展JAVA标准库优化 -Guava库经过高度的优化。当然,此处咱们主要来看下 guava-retrying 功能。原创 2022-11-25 16:23:45 · 311 阅读 · 0 评论 -
一次请求的来龙去脉 - Tomcat架构解析(二)
Tomcat采用分层结构设计了4种容器,这4种容器分别是: Engine 、Host 、Context 、Wrap。它们钧继承 Container 容器接口。这样设计使得Tomcat在处理请求时,分工更加明确,也使得容器具有很好的灵活性。其中从左到右: Engine 表示引擎,用来管理多个虚拟站点,一个Service最多只能有一个Engine。Host代表虚拟主机,或者表示站点。其实就是我们配置出来的虚拟映射地址。原创 2022-11-25 16:07:45 · 168 阅读 · 0 评论 -
一次请求的来龙去脉 - Tomcat架构解析(一)
Tomcat 的整体架构包含了两个核心组件连接器和容器。连接器负责对外交流,容器负责内部处理。连接器用 ProtocolHandler 接口来封装通信协议和 I/O 模型的差异,ProtocolHandler 内部又分为 Endpoint 和 Processor 模块,Endpoint 负责底层 Socket 通信,Processor 负责应用层协议解析。连接器通过适配器 Adapter 调用容器。通信,Processor 负责应用层协议解析。连接器通过适配器 Adapter 调用容器。原创 2022-11-25 16:01:44 · 158 阅读 · 0 评论 -
ArrayList集合特点为什么是增删慢、查询快
我们都知道ArrayList集合底层是数组结构,因为数组中每个元素是有索引存在,所以查询效率高,增删效率低。那为什么数组结构有索引查询效率就会高呢?而且ArrayList集合长度是可变的,数组一旦创建长度就不可变,那ArrayList集合底层是数组结构,它的底层原理又是如何执行的? 下面我们就带着这两个问题,通过分析ArrayList源码,了解其中的原理。 通过上述分析,我们发现ArrayList集合底层是Object[]数组,所以ArrayList具有数组的查询速度快的优点以及增删速度慢的缺点。原创 2022-11-23 17:42:07 · 323 阅读 · 0 评论 -
Java接口幂等性设计场景解决方案v1.0
用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个简单的例子:那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常了,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。在以前的单应用系统中,我们只需要对数据操作加入事务即可,发生错误的时候立即回滚,但是再响应客户端的时候也有可能网络中断或者异常等等情况。原创 2022-10-20 18:24:00 · 209 阅读 · 0 评论 -
防缓存穿透利器-隆过滤器(BloomFilter)
如果想要判断一个元素是不是在一个集合中存在,一般的想法是将所有元素保存起来,然后再拿着这个元素在集合中一个一个进行比对。但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢。针对这种需要在大量数据中去判断某一个值是事否存在的情况,1970年由布隆提出了布隆过滤器的概念。布隆过滤器本质是一个位数组,位数组就是数组的每个元素都只占用 1 bit。每个元素只能是 0 或者 1。这样申请一个 10000 个元素的位数组只占用 10000 / 8 = 1250 字节 的空间。原创 2022-10-19 17:38:48 · 362 阅读 · 0 评论 -
Java NIO理解与使用
NIO是New I/O的简称,与旧式基于流的I/O相对,从名字上来看,它表示新的一套I/O标准。它是从JDK1.4中被纳入到JDK中的。与旧式的IO流相比,NIO是基于Block的,它以块为单位来处理数据,最为重要的两个组件是缓冲区Buffer和通道Channel。缓冲区是一块连续的内存块,是NIO读写数据的载体;通道表示缓冲数据的源头和目的地,它用于向缓冲区读取或者写入数据,是访问缓冲区的接口。原创 2022-10-18 17:58:04 · 270 阅读 · 0 评论 -
手把手带你用Java爬取网站数据
Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。原创 2022-10-17 17:10:06 · 951 阅读 · 0 评论 -
新手 Java 编程思想应该如何提高?
大家的必经之路都是学习,在对框架简单的运用之后可以招一些框架源码进行深入了解。除此之外这个时候可以对设计模式进行了解,还需要看一些关于代码的优化,提高自己的编程能力。原创 2022-10-10 18:06:36 · 306 阅读 · 0 评论 -
Java小白一个,可以直接学习SpringBoot来做毕设吗?
个人建议不要跳过SSM。很多人想要跳过SSM直接上手SpringBoot,但是SpringBoot中自动化配置、条件注解、Java配置等东西都基于Spring的。Java配置是Spring3开始提供的,条件注解也是Spring中的内容,很多内容都是Spring就有的,只不过在SpringBoot更好用。那既然如此,还不如老老实实学Spring。要知道,各个领域都会面临一些问题,学了一些比较优秀的封装框架之后,还有没有必要学底层?原创 2022-09-26 18:53:04 · 1922 阅读 · 0 评论 -
Java程序员要掌握的前端:JavaScript篇
第一篇HTML+CSS在这里哦:Java程序员要掌握的前端_HTML&CSS它是一种脚本语言,可以用来更改页面内容,控制多媒体,制作图像、动画等等例子js 代码位置引入 js 脚本注意,到了框架之后,引入方式会有不同1. 变量与数据类型声明变量1) let ⭐️let 声明的变量可以被多次赋值,例如2) const ⭐️const 修饰的叫常量,只能赋值一次const 并不意味着它引用的内容不可修改,例如3) varvar 声明的变量可以被多次赋值,例如基本类原创 2022-09-26 18:46:27 · 634 阅读 · 0 评论 -
Java八股文最全版本,高薪offer
这类问题,学是学过,但是根本记不住。面试但凡回答的不太好,直接就被pass了。所以至少提前半个月来准备面试,每一个知识板块刷题刷个100道,绝对面试顺利通过。原创 2022-09-21 17:46:08 · 1288 阅读 · 0 评论 -
不使用数组实现打印“杨辉三角形”
杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。 我们先看一下杨辉三角形的打印结果:。原创 2022-09-16 17:18:01 · 814 阅读 · 0 评论 -
k8s快速入门:从部署到实战
随着Docker技术的流行,对项目的容器化部署方式越来越流行,容器化部署的优点如下:可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署这些容器管理的问题统称为目前为止Kubernetes是最为流行的一种容器编排技术。原创 2022-09-15 16:47:43 · 1847 阅读 · 0 评论 -
Dubbo源码解析:服务暴露与发现
Dubbo 现在的设计是完全无侵入,也就是使用者只依赖于配置契约。在 Dubbo 中,可以使用 XML 配置相关信息,也可以用来引入服务或者导出服务。配置完成,启动工程,Spring 会读取配置文件,生成注入相关Bean。那 Dubbo 如何实现自定义 XML 被 Spring 加载读取呢?从 Spring 2.0 开始,Spring 开始提供了一种基于 XML Schema 格式扩展机制,用于定义和配置 bean。原创 2022-09-15 16:44:21 · 344 阅读 · 0 评论 -
代码的认爹之路: 面向对象继承
Hello , 各位同学朋友大家好啊, 今天给大家分享的技术呢, 是面向对象三大特征之一的继承 .我们今天主要按照以下几个点, 展开继承的讲解 提到了继承, 大家想到了什么?是的, 子女继承到的家产, 那家产是存在着一种关系的, 父亲和儿子的关系 . 对比生活中的继承, Java 中的继承, 其实就是让类与类之间产生关系, 什么关系?子父类关系, 当这种关系建立起来之后, 子类就可以直接使用父类中,非私有的成员了.原创 2022-09-07 19:06:37 · 200 阅读 · 0 评论 -
添加了@LoadBalanced注解,即可实现负载均衡功能,这是什么原理呢?
SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTemplate发出的请求,对地址做了修改。用一幅图来总结一下:拦截我们的RestTemplate请求http://userservice/user/1RibbonLoadBalancerClient会从请求url中获取服务名称,也就是user-serviceDynamicServerListLoadBalancer根据user-service到eureka拉取服务列表。原创 2022-09-06 18:55:29 · 722 阅读 · 0 评论 -
Eureka学习:搭建eureka-server、将user-service注册到eureka-server中
注意:一个微服务,既可以是服务提供者,又可以是服务消费者,因此eureka将服务注册、服务发现等功能统一封装到了eureka-client端。下面,我们将order-service的逻辑修改:向eureka-server拉取user-service的信息,实现服务发现。为了演示一个服务有多个实例的场景,我们添加一个SpringBoot的启动配置,再启动一个user-service。最后,我们要去eureka-server中拉取user-service服务的实例列表,并且实现负载均衡。原创 2022-09-05 16:37:59 · 677 阅读 · 1 评论 -
任何架构都离不开服务的拆分,微服务的拆分和远程调用你会吗?
因此,我们需要在order-service中 向user-service发起一个http的请求,调用http://localhost:8081/user/{userId}这个接口。修改order-service中的根据id查询订单业务,要求在查询订单的同时,根据订单中包含的userId查询出用户信息,一起返回。如果服务A调用了服务B,而服务B又调用了服务C,服务B的角色是什么?:一次业务中,调用其它微服务的服务。:一次业务中,被其它微服务调用的服务。因此,服务B既可以是服务提供者,也可以是服务消费者。原创 2022-09-05 16:18:33 · 159 阅读 · 0 评论 -
Spring的Async注解线程池扩展方案
Async。原创 2022-09-02 18:16:23 · 400 阅读 · 0 评论 -
Java高性能并发计数器之巅峰对决
在JDK1.5开始就新增了并发的Integer/Long的操作工具类AtomicInteger和AtomicLong。AtomicLong 利用底层操作系统的CAS来保证原子性,在一个死循环内不断执行CAS操作,直到操作成功。不过,CAS操作的一个问题是在并发量比较大的时候,可能很多次的执行CAS操作都不成功,这样性能就受到较大影响。示例代码//定义 incrementAndGet();//递增11.使用volatile保证内存可见性,获取主存中最新的操作数据。原创 2022-09-02 16:54:26 · 243 阅读 · 0 评论 -
拜托!别再问我hashmap是否线程安全
通过上面的学习得知,hashmap在多线程情况下初始化数组和扩容的时候均会出现线程安全问题。我们可以通过HashTable来解决,HashTable是对整个hash表加锁,相当于线程串行化操作hash表,在解决问题的同时也会导致性能极低。最终我们可以使用ConcurrentHashMap将锁的粒度控制到最小,将性能影响控制到最低,同时扩容的时候ConcurrentHashMap还支持多线程扩容。原创 2022-09-02 16:49:55 · 248 阅读 · 0 评论 -
SpringCloud01:认识微服务
单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝微服务:一种良好的分布式架构方案①优点:拆分粒度更小、服务更独立、耦合度更低②缺点:架构非常复杂,运维、监控、部署难度提高SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件。...原创 2022-08-31 18:04:03 · 234 阅读 · 0 评论 -
高阶源码分析:ConcurrentHashMap
JDK1.7 使用分段锁实现JDK1.8 使用CAS+synchronized+volatile 的具体实现put方法的复杂实现过程get方法的无锁实现尤其是volatile关键字的使用有一个问题需要注意的是获取是无锁的那么他如果出现多线程修改或者写入的时候他就有可能会出现可见性的问题,因为每一个线程都有自己的工作内存,那么ConcurrentHashMap是如何解决可见性的问题呢?...原创 2022-08-31 17:59:29 · 214 阅读 · 0 评论 -
JDK8-Lambda表达式、方法引用
匿名类的一个问题是,如果匿名类的实现非常简单,例如只包含一个方法的接口,那么匿名类的语法可能会显得笨拙和不清楚。在这些情况下,您通常会尝试将功能作为参数传递给另一个方法,例如当有人单击按钮时应该采取什么操作。Lambda 表达式使您能够做到这一点,将功能视为方法参数,或将代码视为数据。它们是用于已具有名称的方法的紧凑、易于阅读的 lambda 表达式。从上述案例中,使用lambda表达式是对Runnable接口中的run方法进行了重写。格式:(抽象方法的参数列表) -> {重写的代码}原创 2022-08-25 17:26:29 · 290 阅读 · 0 评论 -
GitLab在项目的环境搭建和基本的使用
GitLab是整个DevOps生命周期的第一个应用程序。其使用与GitHub类似,并且提供了许多DevOps相关的功能。GitLab提供无与伦比的可见性,更高的效率和全面的治理。这使得软件生命周期加快了200%,从根本上提高了业务速度。各位小伙伴,在企业开发的过程中,代码的版本控制工具肯定会使用的,而GitLab是目前最流行的版本控制服务,通过我们以上的学习,我们要重点掌握关于GitLab的基本使用,如:项目组的创建、把成员添加到对应的开发组内、以组创建项目并与成员进行共享等等操作。原创 2022-08-24 18:48:06 · 962 阅读 · 0 评论 -
教你更优雅的写法处理null检查
Optional是JDK1.8推出的一个新的类,是一个没有子类的工具类,Optional可以理解为一个容器,其内部仅能存放一个对象元素或者存放null。它的作用主要就是为了解决避免Null检查,防止NullPointerException。Optional可以理解为一个容器,其内部仅能存放一个对象元素或者存放null。它的作用主要就是为了解决避免Null检查,防止NullPointerException。Optional的orElse,ifPresent,orElseGet。原创 2022-08-24 18:46:06 · 316 阅读 · 0 评论 -
Mybatis源码剖析-黑马程序员
mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。mybatis 通过 xml或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中 sql的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。原创 2022-08-24 18:42:34 · 523 阅读 · 0 评论 -
Java什么情况下数据类型可以自动转换?什么情况下需要强制转换?
在程序中,当把一种数据类型的值赋给另一种数据类型的变量时,需要进行。,指的是两种数据类型在转换的过程中不需要显式地进行声明。当把一个类型取值范围小的数值直接赋给另一个取值范围大的数据类型变量时,系统就会进行自动类型转换,。Java中的自动类型转换就好比将小瓶中的水倒入到大瓶的换装过程。我们将小瓶水倒入到大瓶中时,由于小瓶的容量比大瓶的容量小,所以倒入的水永远不可能溢出大瓶。同样,在Java中,将取值范围小的数据类型的变量值赋值给取值范围大的数据类型的变量时,程序也不会出现任何问题。原创 2022-08-19 11:21:08 · 3500 阅读 · 0 评论 -
Nginx的源码简单/复杂安装,yum安装详解
通过Nginx源码通过Nginx源码简单安装 (1)通过Nginx源码复杂安装 (3)通过yum安装 (2)原创 2022-08-18 16:26:53 · 2486 阅读 · 0 评论 -
Nginx环境准备、版本介绍、获取Nginx源码
Nginx的官方网站为: http://nginx.org打开源码可以看到如下的页面内容Nginx的官方下载网站为,当然你也可以之间在首页选中右边的download进入版本下载网页。原创 2022-08-16 17:40:37 · 494 阅读 · 0 评论 -
大厂高频面试:Java并发篇(线程6种状态、线程池、悲观锁vs乐观锁等)
乐观锁的代表是 AtomicInteger,使用 cas 来保证原子性。ThreadLocalMap 中的 key 被设计为弱引用,原因如下。仅是让 key 的内存释放,关联 value 的内存并不会释放。悲观锁的代表是 synchronized 和 Lock 锁。主动 remove 释放 key,value。主动 remove 释放 key,value。懒惰被动释放 value。...原创 2022-08-15 16:54:13 · 197 阅读 · 0 评论 -
2022年还有人不会用MyBatisPlus吗?
本文分享MyBatisPlus入门案例与简介,这个和其他课程都不太一样。我们学技术的时候通常是先分享概念,然后是入门案例。对于MyBatisPlus的学习,我们进行了顺序上的调整。主要原因是MyBatisPlus是对MyBatis的简化,所以我们先体会下它简化在了哪,然后再学习它是什么,以及它帮助我们做了哪些事。......原创 2022-08-12 16:13:53 · 642 阅读 · 0 评论