
Java
java
hestyle
戎码一生!
展开
-
字节跳动上海创新业务(2021届实习岗)三轮技术面总结
博主于2020.4月初投了字节跳动 上海创新业务 后端开发实习岗(Java方向),并且在2020.5初拿到了客户端的实习offer,下面分享一下此次技术面试的相关内容。字节跳动上海创新业务(2021届实习生)三轮技术面总结一、笔试(2020.4.12)1、尽量使用`优惠卷`2、其它不记得了。。。二、第一轮面试(2020.4.21)三、第二轮面试(2020.4.24)四、第三轮面试(2020.4.29)五、总结未完待续...\color{red}未完待续...未完待续...一、笔试(2020.4.12原创 2020-05-13 21:55:21 · 2960 阅读 · 3 评论 -
Java字符串类之String、StringBuilder、StringBuffer源码分析与总结(你知道三者的区别?)
前面分析完Java中常见容器的源码,此篇博客来分析下Java字符串相关的常用的三个类String、StringBuilder、StringBuffer。 相信看过我前面的Java容器源码分析博客的小伙伴会发现一个规律,我一般分析某个类的源码都是从属性、构造器(初始化方法)、常用的API三个方向下手,并不会也没有必要从源码的第一行读到最后一行。在此篇博客分析这三个类也同样使用这种技巧,如果你...原创 2020-04-29 22:35:15 · 669 阅读 · 0 评论 -
Java常用容器JDK源码分析总结(震惊,某博主竟然分析完了List、Queue、Map、Set接口的主要实现类)
前些天花了12篇博客,分析了Java常用的容器的源码,主要是List、Queue、Map、Set等接口的实现类。此篇博客将对这些容器进行一个总结,但不会涉及源码,如果需要了解更多的细节,可以通过文中的链接阅读。Java常用容器JDK源码分析总结目录一、Java`容器`概述二、`List`容器1、`ArrayList`容器2、`Vector`容器3、`LinkedList`容器三、`Queue...原创 2020-04-27 16:49:45 · 810 阅读 · 4 评论 -
Java容器之PriorityQueue源码分析(附堆的调整图解)
PriorityQueue容器,也就是我们日常所称的优先队列,也有小伙伴称堆。优先队列的作用是将队列中的元素最小值放到堆顶(默认小顶堆,最小的元素在顶端,你也可以修改comparator,使之变成大顶堆,最大的元素在顶端)。每当我们插入、删除元素,都是从堆顶进行,优先队列会自动重新调整堆,将最小的元素值调整到堆顶。 本篇博客将从源码的角度并结合相应的图解,对Java中的PriorityQu...原创 2020-04-27 11:05:52 · 1220 阅读 · 0 评论 -
Java容器之ArrayDeque源码分析(你知道ArrayDeque维护循环数组的原理吗?)
在上一篇博客 Java容器之LinkedList源码分析(LinkedList到底是单链表还是双链表?) 分析了LinkedList容器的源码,LinkedList实现了Deque接口,所以它不但是一个List容器,而且还是一个双端队列容器,并且是基于双链表实现。在此篇博客,将分析基于(循环)数组实现的双端队列容器——ArrayDeque。注明:以下源码分析都是基于jdk 1.8.0_22...原创 2020-04-26 11:09:54 · 723 阅读 · 0 评论 -
Java容器之LinkedList源码分析(LinkedList到底是单链表还是双链表?)
前面在分析ArrayList、Vector容器的源码时,发现的底层实现原理都是维护一个数组,并且自动调整数组的大小(扩容、缩小),随机查找效率高,但是插入、删除操作效率低。在此篇博客中,博主将带领各位小伙伴也看看LinkedList容器的实现原理,它又有什么优势呢,它到底是单链表还是双链表实现呢?注明:以下源码分析都是基于jdk 1.8.0_221版本Java容器之LinkedList源...原创 2020-04-25 23:03:57 · 1360 阅读 · 0 评论 -
Java容器之Vector源码分析(Vector容器为啥线程安全呢?)
在上一篇博客 Java容器之ArrayList源码分析(这应该是Java中最简单的容器吧) 从源码的角度分析了ArrayList容器,现在我们看下Vector容器又是什么。注明:以下源码分析都是基于jdk 1.8.0_221版本Java容器之Vector源码分析目录一、`Vector`容器概述二、`Vector`类中主要属性三、`Vector`类的构造器四、`查找`相关方法1、`get`...原创 2020-04-25 16:06:32 · 1294 阅读 · 0 评论 -
Java容器之ArrayList源码分析(这应该是Java中最简单的容器吧)
前面已经分析完Java的Map、Set容器源码,还剩List相关的容器,此篇博客将分析List接口的实现类之一ArrayList容器的源码实现。注明:以下源码分析都是基于jdk 1.8.0_221版本Java容器之ArrayList源码分析目录一、`ArrayList`容器概述二、`ArrayList`类主要属性三、`ArrayList`类构造器四、`查找`相关方法1、`get`方法2、...原创 2020-04-25 10:32:18 · 629 阅读 · 0 评论 -
Java容器之HashSet、LinkedHashSet、TreeSet源码分析(不敢称东半球最好,只称东半球最好理解)
前面分析了Java中的常见五大map容器,Java中的Set容器是对Map容器的封装,今天就结合源码分析一下Java中常见的三大Set容器。注明:以下源码分析都是基于jdk 1.8.0_221温馨提示:\color{red}温馨提示:温馨提示:请先阅读一下我之前写的HashMap、LinkedHashMap、TreeMap源码分析博客,Java中的Set就是把Map改了个名字,这里不会再...原创 2020-04-24 11:44:37 · 602 阅读 · 0 评论 -
Java中的常见五种map容器源码分析总结(HashMap、Hashtable、ConcurrentHashMap、LinkedHashMap、TreeMap)
断断续续写了半个月,今天终于把TreeMap容器中的红黑树搞定了,现在来水一篇又快又短的Java Map容器总结博客 ????????。注明:本篇博客不会涉及容器的源码什么的,主要是总结各个map容器的底层实现特点、主要运用场景。如果你需要详细了解更多关于Java中的map容器实现的细节,文末会提供我前面写的源码分析的博客链接,欢迎阅读。Java中的常见五种map容器源码分析总结目录一、`Java`中...原创 2020-04-23 22:08:21 · 1226 阅读 · 0 评论 -
Java容器之TreeMap源码分析(附红黑树调整图解,全网最详细、图解最全,不服来辩)
在之前分析HashMap、ConcurrentHashMap容器的源码实现时,反复提及到JDK 1.8的版本中,HashMap、ConcurrentHashMap两个容器都引入了红黑树来解决hash冲突问题(在之前的版本只有链表,现在hash桶的实现可有链表、红黑树进行转换),但是JDK中的红黑树到底是如何实现的呢?Java容器之TreeMap源码分析目录一、`TreeMap`容器概述二、`...原创 2020-04-23 16:45:42 · 730 阅读 · 0 评论 -
Java容器之LinkedHashMap源码分析(看看确定不点进来?进来真不点?)
前面几篇博客Java容器之Hashtable源码分析、Java容器之HashMap源码分析分别分析了HashMap、Hashtable的源码,此篇博客我们分析一下LinkedHashMap容器,看看它又有什么花样。注明:以下源码分析都是基于jdk 1.8.0_221LinkedHashMap源码分析目录一、`LinkedHashMap`容器概述(==一图以蔽之==)1、`LinkedHa...原创 2020-04-16 17:49:42 · 1359 阅读 · 4 评论 -
Java容器之ConcurrentHashMap源码分析(JDK 1.7与JDK 1.8对比)
在前面两篇博客 Java容器之HashMap源码分析、Java容器之Hashtable源码分析分别对JDK1.8中的HashMap、Hashtable的源码进行一些分析,在本篇博客将对ConcurrentHashMap容器的源码进行一些分析。申明:在前两篇博客介绍了两个容器的增、删、改、查相关的API,并且给源码加上了中文注释,在本篇博客将只介绍一些关键的API,比如hash值的计算,put...原创 2020-04-14 09:39:22 · 628 阅读 · 0 评论 -
Java容器之Hashtable源码分析(关于Hashtable的这些细节你可能还不知道)
在上一篇博客 Java容器之HashMap源码分析(妈妈再也不用担心我不懂HashMap了) 从源码层次分析了HashMap容器的底层实现,在本篇博客将继续从源码层次分析Hashtable的底层实现。 注明:以下源码分析都是基于jdk 1.8.0_221版本Hashtable源码分析目录一、`Hashtable`容器概述(==一图以蔽之==)二、`Hashtable`类的属性三、`Ha...原创 2020-04-11 12:02:42 · 531 阅读 · 3 评论 -
Java容器之HashMap源码分析(妈妈再也不用担心我不懂HashMap了)
最近面试被问HashMap容器的实现原理,答的一塌糊涂。。。虽说一直念叨着说要看看Java容器的源码,但总是被耽搁了,今天终于静下心来看了????♂️。 注明:以下源码分析都是基于jdk 1.8.0_221版本HashMap源码分析目录一、`HashMap`概述(==一图以蔽之==)二、`HashMap`类的属性1、`HashMap`类静态属性2、`HashMap`非类静态属性三、`Has...原创 2020-04-10 12:22:01 · 846 阅读 · 1 评论 -
Java多线程之线程通信(Demo演示)
在上一篇博客 Java多线程之线程安全与线程同步(锁) 介绍一下线程安全与线程同步相关概念,在本篇博客将使用输入、输出Demo模拟线程通信。线程通讯1、何为线程通信所谓线程通信,通俗的来说,就是多个线程之间需要进行信息交换,达到改变线程执行顺序、状态的目的。2、线程通信DemoInput进程负责往cache中写入信息,Output进程负责读出cache中的信息。那么这就有几个逻辑问题...原创 2020-02-09 22:58:32 · 829 阅读 · 0 评论 -
Java多线程之线程安全与线程同步(锁)
在上一篇博客 Java多线程之概述与三种创建方式 演示了Java创建多线程的三种方式,在此篇博客将讲述一下线程安全与线程同步相关概念,以及Java是如何处理的。一、线程安全什么是线程安全?当多个线程同时共享同一个全局变量或静态变量,做写操作\color{red}写操作写操作时,可能会发生数据冲突\color{red}数据冲突数据冲突问题,也就是线程安全问题。但是做读操作\color{red}...原创 2020-02-09 20:23:06 · 983 阅读 · 0 评论 -
Java多线程之概述与三种创建方式
最近折腾了一下Java多线程相关的内容,来水几遍博客。。。一、多线程之概述1、什么是多线程?谈线程这个概念前,我们先需要了解一下进程。在操作系统中,进程定义为,计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。进程与程序的区别程序是指令、数据及其组织形式的描述,进程是程序的执行实体。我们都知道CPU执行速度非常快,但是一些IO操作、或者执行存在被某些事...原创 2020-02-09 16:10:51 · 678 阅读 · 0 评论 -
SpringBoot框架之整合Mybatis、SpringMVC(“S“SM整合)
在上一篇博客 SpringBoot框架之创建第一个项目(两种方式)演示了如何创建使用SpringBoot、SpringMVC框架的项目,在此篇博客将进一步演示整合Mybatis框架,也就是Spring、SpringMVC、Mybatis三大框架的整合(SpringBoot框架的实质是提供更简洁的使用Spring的方式)。一、项目搭建1、使用Spring Initializr方式创建项目2...原创 2020-02-07 19:07:05 · 1411 阅读 · 0 评论 -
SpringBoot框架之概述与原理浅析
在上一篇博客 SpringBoot框架之创建第一个项目(两种方式)演示了如何创建SpringBoot项目,在此篇博客将对上述过程的作用、SpringBoot实现原理进行简单的分析。一、SpringBoot框架概述1、什么是SpringBootSpring Boot是由Pivotal团队提供的全新框架,目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从...原创 2020-02-07 12:12:28 · 10416 阅读 · 3 评论 -
SpringBoot框架之创建第一个项目(两种方式)
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。一句话:SpringBoot不是对Spring功能上的增强...原创 2020-02-06 20:10:37 · 978 阅读 · 0 评论 -
Maven工具之分模块构造SSM项目(附Demo源码)
最近搞了一下Maven依赖管理工具,今天更新一篇把Maven工具运用到SSM项目的博客(其实是为了水一篇文章 /捂脸/捂脸)。阅读此博客需要一定的SSM框架(Spring、SpringMVC、Mybatis框架),以及Maven工具的知识,最好跟着做一遍操作。注意:这里演示的是将mapper(dao)、service、web三层分为三个功能独立的模块。一、创建根项目1、创建项目maven_...原创 2020-02-03 21:22:59 · 344 阅读 · 0 评论 -
Maven工具之快速入门(此篇绝对足够!)
在前面的博客 Maven工具之安装Maven(附详细演示过程)、Maven工具之创建第一个项目分别从实践的角度演示了Maven工具的安装、配置、使用,在篇博客将侧重从理论的角度介绍一下Maven工具。理论可能会有些枯燥,建议你先把前面两篇博客的操作跟着做一遍,然后带着为什么要这要操作的疑问再来阅读此篇博客,这样效果更好一些。一、Maven相关概念1、什么是Maven?Maven (发音为[...原创 2020-02-01 19:56:55 · 365 阅读 · 0 评论 -
Maven工具之创建第一个项目
在上一篇博客 Maven工具之安装Maven(附详细演示过程) 介绍了Maven工具的安装,以及IDEA中如何配置Maven。在本篇博客将演示如何创建使用Maven的Java项目。一、不使用骨架,手动撸使用Maven的普通的Java项目1、选择Maven项目,不勾选任何选项2、设置项目组织名、项目名3、设置项目名(默认使用前面设置的)4、等待资源下载完毕如果你是第一次创建Mav...原创 2020-02-01 15:16:03 · 605 阅读 · 2 评论 -
Maven工具之安装Maven(附详细演示过程)
Maven 发音是[ˈmevən](然后我一般读“马瘟”)。Maven 在美国是一个口语化的词语,代表专家、内行的意思。Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生...原创 2020-01-31 22:05:49 · 822 阅读 · 0 评论 -
SpringMVC框架之拦截器(附Demo)
在上一篇博客SpringMVC框架之处理文件上传(附照片上传Demo)实现了照片上传功能,在此篇博客将实现必须登录之后才能访问页面的功能。关于Demo源码,直接下载SpringMVC框架之处理文件上传(附照片上传Demo)尾端的源码即可,这是一个简化的Product信息展示的Demo,使用了Spring、SpringMVC、Mybatis框架。说到拦截器,我的想到的是Java Web三大组件(...原创 2020-01-31 11:07:31 · 316 阅读 · 0 评论 -
SpringMVC框架之处理文件上传(附照片上传Demo)
在上一篇 Spring、SpringMVC、Mybatis框架整合(IDEA)(附Demo) 演示了SSM框架的整合,但是Product照片上传还没有实现,在本篇博客将实现该功能。本篇博客就不再复述项目创建、配置了,直接去Spring、SpringMVC、Mybatis框架整合(IDEA)(附Demo)下载Demo源码即可。SpringMVC框架处理文件上传,是对Apache fileuplo...原创 2020-01-30 20:58:28 · 918 阅读 · 0 评论 -
SpringMVC框架之处理json格式数据(注解ResponseBody和RequestBody)
在上一篇博客 SpringMVC框架之前后端数据交互(附Demo)演示了在SpringMVC框架中如何进行前后端的数据交互,在本篇博客将介绍SpringMVC框架中如何以Json格式的数据进行前后端的交互。关于项目创建,直接下载前一篇博客的Demo源码 SpringMVC框架之前后端数据交互(附Demo),这里不再复述了。由于需要使用Ajax、处理Json格式数据,请先导入jQuery、Jac...原创 2020-01-29 19:23:42 · 1588 阅读 · 0 评论 -
SpringMVC框架之URL模板映射与转发、重定向(附Demo)
在上一篇博客SpringMVC框架之前后端数据交互(附Demo)演示了前后端的数据交互,本篇博客将演示SpirngMVC中的URL模板映射、请求转发、重定向。关于SpringMVC项目创建、配置,请参考SpringMVC框架之创建第一个项目(IDEA)、SpringMVC框架之前后端数据交互(附Demo),两篇博客尾端都有源码链接,这里不再复述。一、URL模板映射所谓的URL模板映射,就是把...原创 2020-01-28 19:36:56 · 1326 阅读 · 0 评论 -
SpringMVC框架之前后端数据交互(附Demo)
在上一篇博客 SpringMVC框架之创建第一个项目(IDEA)演示了如何在Java Web项目中引入Spring MVC框架,本篇博客将演示SpringMVC如何进行前后端的数据交互,包括前端页面提交数据到controller以及controller返回数据给前端页面。为了缩短博文篇幅,此处不再复述项目的创建、配置过程,请参考前一篇博客 SpringMVC框架之创建第一个项目(IDEA)。...原创 2020-01-28 14:01:00 · 6653 阅读 · 1 评论 -
SpringMVC框架之创建第一个项目(IDEA)
Spring MVC框架是Spring提供的一个强大而灵活的WEB框架(Struts2框架也是WEB框架)。借助于注解,Spring MVC提供了POJO(又称为enitity实体、model模型)的开发模式,使得controller控制器的开发和测试更加简单。这些controller控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些b...原创 2020-01-27 19:40:04 · 908 阅读 · 0 评论 -
Spring框架与Mybatis框架整合启动报错Property 'dataSource' threw exception; nested exception is java.lang.NoCla
一、报错详细信息java.lang.ExceptionInInitializerError at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAcce...原创 2020-01-27 15:43:07 · 6107 阅读 · 4 评论 -
Spring框架与Mybatis框架整合(IDEA)
当前,大部分的Java互联网项目都是用SSM框架,即SpringMVC + Spring + MyBatis 。SpringMVC用于拦截前端请求,Mybatis用于访问数据库,Spring IoC控制反转用于装备bean,Spring AOP可用于处理数据库事务。前期已经介绍了不少Spring、Mybatis框架的内容,此篇博客将进行Spring-Mybatis的整合。闲话少叙,直接开始吧!...原创 2020-01-27 15:25:22 · 1212 阅读 · 1 评论 -
Mybatis框架之延时加载与查询缓存
在上一篇博客 Mybatis框架之快速入门(别再翻了,此篇博客就够了) 介绍了Mybatis框架基本使用细节,在本篇博客将介绍一下延时加载与查询缓存相关内容。一、延时加载延时加载,当用到的时候再去访问数据库加载数据,也称为懒加载。此加载策略默认是不开启的,需要手动开启。在mybatis中,resultMap标签 的association标签和collection标签具有延迟加载的功能。1...原创 2020-01-26 20:40:15 · 352 阅读 · 0 评论 -
Mybatis框架之关联查询(一对多、多对多)(附Demo:用户和订单)
在上一篇博客 Mybatis框架之快速入门(别再翻了,此篇博客就够了) 介绍了Mybatis框架基本使用细节,在本篇博客将介绍一下在Mybatis如何处理实体之间的关系。懂一点数据库原理的都知道常见的实体之间的关系有一对一、一对多(多对一)、多对多三种基本关系。下面是User、Order、Product三者之间的关系:建表sql语句:/* Navicat Premium Data Tra...原创 2020-01-26 20:40:01 · 923 阅读 · 0 评论 -
Mybatis框架之快速入门(别再翻了,此篇博客就够了)
在上一篇博客 Mybatis框架之创建第一个项目(IDEA),演示了如何使用Mybatis操作数据库,在此篇博客,将介绍一下相关使用细节,帮助大家更好掌握Mybatis的使用。一、Mybatis相关概述1、Mybatis是什么?MyBatis 是持久层框架(即对数据库操作(增、删、改、查)的封装)!2、Mybatis使用的主要步骤?①、导入Mybatis的jar包②、编写Mybati...原创 2020-01-25 20:58:12 · 723 阅读 · 0 评论 -
Mybatis框架之创建第一个项目(IDEA)
一、Mybatis简介MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL M...原创 2020-01-25 14:18:23 · 759 阅读 · 0 评论 -
Shiro报错 No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util
Shiro报错1、报错详情org.apache.shiro.UnavailableSecurityManagerException: No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util.ThreadContext or as a vm static single...原创 2020-01-20 22:54:39 · 14535 阅读 · 1 评论 -
WebService之CXF、Spring web整合发布REST风格的服务(报错)
在上一篇博客 WebService之CXF发布REST风格的服务讲述了REST风格,并且演示如何发布一个REST风格的服务,在此篇博客将演示将CXF与Spring web整合,让spring负责发布REST风格的服务。1、创建一个java web服务2、导入CXF、Spring的jar包①、在WEB-INF目录下创建lib文件夹②、导入CXF的jar包③、导入Spring的ja...原创 2019-12-11 15:01:57 · 437 阅读 · 0 评论 -
WebService之CXF发布REST风格的服务
在上一篇博客 WebService之CXF快速入门(附Demo演示)讲述了CXF的基本概念,并且演示了如何编写WebService的服务端、客户端,在本篇博客将演示使用CXF发布REST风格的服务。一、REST1、REST是什么?REST 是一种软件架构模式,是一种能对HTTP的利用实现精确的资源定位的风格。举个栗子,如果不使用REST风格,常见的URL如下:http://ip:port...原创 2019-12-11 10:26:08 · 440 阅读 · 0 评论