JDK

Spring IOC容器的源码阅读,通过一张思维导图把Spring IOC都总结好了

落花浮王杯 提交于 2020-11-07 00:42:56
一、前言 作为一个经常使用 Spring 的后端程序员,很早就想彻底弄懂整个 Spring 框架了!但它整体是非常大的. spring ioc 思维导图: 点击领取spring全套视频与源码 :暗号CSDN 最新2020整理收集的一线互联网公司面试真题(都整理成文档),有很多干货,包含netty,spring,线程,spring cloud等详细讲解,也有详细的学习规划图,面试题整理等,我感觉在面试这块讲的非常清楚:获取面试资料只需: 点击这里领取!!! 暗号:CSDN 二、文章将围绕什么来进行展开? 不多,就一行代码,如下图: 这句是 Spring 初始化的代码,虽然只有一句代码,但内容贼多! 三、Spring 容器 IOC 有哪些东西组成? 这样子,小编先理清下思路,一步一步来: 1、上面那句代码有个文件叫applicationContext.xml, 这是个资源文件,由于我们的bean都在里边进行配置定义,那 Spring 总得对这个文件进行读取并解析吧!所以 Spring 中有个模块叫Resource模块,顾名思义,就是资源嘛!用于对所有资源xml、txt、property等文件资源的抽象。 下面先贴一张小编生成的类图(图片有点大,不知道会不会不清晰,如果不清晰可以按照上面说的idea生成方法去生成即可): 可以看到Resource是整个体系的根接口

二、图形数据库Neo4j的简介与安装

谁都会走 提交于 2020-11-06 23:57:27
今天来说一下图形数据库——Neo4j。它由Neo Technology开发的开源图数据库,该公司从2000年起就开始研发图数据库,目前Neo4j已经成为领先的图数据库产品。思科、惠普、德意志等跨国企业均成为其客户。知识图谱系列的文章都将收录在我的个人专栏 《知识图谱系列》 中,欢迎大家关注~ 目录 一、Neo4j简介 1.1 简介 1.2 图形数据结构 二、Neo4j安装 2.1 Linux下安装Neo4j 2.1.1 检查jdk 2.1.2 下载Neo4j 2.1.3 上传并解压 2.1.4 配置环境变量 2.1.5 修改配置文件 2.1.6 测试 2.2 Windows下安装Neo4j 三、简单使用 一、Neo4j简介 1.1 简介 Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。 ——摘自《百度百科》 Neo4j的特点:1、直观的图模型存储。2、完全支持ACID事务。3、基于磁盘的持久存储。4

Alibaba【Java岗】P5-P8级别“有史以来”最新最全面试真题:JVM+数据库+spring+数据结构+多线程+网络

时光总嘲笑我的痴心妄想 提交于 2020-11-06 23:56:44
前言 2020终于迎来了最后的两个月,这一年,全世界都不安定,被疫情包围,渐渐治愈和免疫,国内虽然看着和往常没有多大的区别,但对于经济的冲击,不知道又倒退了多少年?大大小小的公司面临倒闭或已破产,对于职场上的我们而言,无疑是致命的打击,好了,回到主题,作为JAVA博主,看下JAVA近况~ 今年,从java转到别的行业的人不少,也有不少人挤进这个市场想要分得一杯羹。年复一年,年年如此。当然,Java程序员市场需求依然是比较大的,而且Java岗位晋升方向多,这就为许多人带去了机会。但是另一方面,高级人才紧缺,很多即使是有工作经验的程序员都达不到大厂招聘的要求,对比阿里,看下你离高级人才还差几步? 该怎么学习呢?两个小建议 第一,评估自己的自学能力。 第二,寻找有效的学习指引。 今天为大家提供一些今年的大厂真题,一方面,可以帮助正在准备面试的朋友,另一方面因为我准备的是初级—中级—高级三个级别的大厂面试真题,所以有需要的小伙伴也可以试试自己的水平,看看自己在哪个段位? 获取完整面试资料关注+点赞后【 点击这里即可 】 免费分享给你哦~ 阿里云——Java实习生/初级 List 和 Set 的区别 HashSet 是如何保证不重复的 HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)? HashMap 的扩容过程 HashMap 1.7 与 1.8 的

【Kafka】windows下搭建Kafka运行环境

痞子三分冷 提交于 2020-11-06 23:56:10
一、安装JDK 1.JDK下载路径 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.按照网上参考步骤,依次配置JAVA_HOME、Classpath和Path,然后打开cmd,运行java -version成功,则JDK配置成功; 二、安装Zookeeper 由于Kafka的运行依赖于Zookeeper,所以在运行Kafka之前需要安装并运行Zookeeper 1.Zookeeper下载路径 http://zookeeper.apache.org/releases.html#download 2.解压到文件下(我的目录是 D:\Program Files\zookeeper-3.5.2-alpha) 3.打开D:\Program Files\zookeeper-3.5.2-alpha\conf,复制zoo_sample.cfg重命名成zoo.cfg 4.编辑zoo.cfg,修改dataDir为【dataDir=/zookeeper-3.5.2-alpha/data】 5.添加环境变量 ZOOKEEPER_HOME D:\Program Files\zookeeper-3.5.2-alpha Path 在现有的值后面添加 ;%ZOOKEEPER_HOME%

利用Zookeeper实现

与世无争的帅哥 提交于 2020-11-06 13:56:46
许多场景中, 数据一致性 是一个比较重要的话题,在单机环境中,我们可以通过Java提供的 并发API 来解决;而在分布式环境(会遇到网络故障、消息重复、消息丢失等各种问题)下要复杂得多,常见的解决方案是 分布式事务 、 分布式锁 等。 本文主要探讨如何利用Zookeeper来实现分布式锁。 关于分布式锁 分布式锁是控制分布式系统之间 同步访问共享资源 的一种方式。 在 实现 分布式锁的过程中需要注意的: 锁的可重入性(递归调用不应该被阻塞、避免死锁) 锁的超时(避免死锁、死循环等意外情况) 锁的阻塞(保证原子性等) 锁的特性支持(阻塞锁、可重入锁、公平锁、联锁、信号量、读写锁) 在 使用 分布式锁时需要注意: 分布式锁的开销(分布式锁一般能不用就不用,有些场景可以用乐观锁代替) 加锁的粒度(控制加锁的粒度,可以优化系统的性能) 加锁的方式 以下是几种常见的实现分布式锁的方案及其优缺点。 基于数据库 1. 基于数据库表 最简单的方式可能就是直接创建一张锁表,当我们要锁住某个方法或资源时,我们就在该表中增加一条记录,想要释放锁的时候就删除这条记录。给某字段添加唯一性约束,如果有多个请求同时提交到数据库的话, 数据库会保证只有一个操作可以成功 ,那么我们就可以认为操作成功的那个线程获得了该方法的锁,可以执行方法体内容。 会引入数据库单点、无失效时间、不阻塞、不可重入等问题。 2.

Guava 2:Basic utilities基本工具

别说谁变了你拦得住时间么 提交于 2020-11-06 05:43:11
一、引子 Guava的经典很大一部分原因来源于对于基础工具类的封装,使用这些类能够让我们的代码更加优雅且完善,这些类大部分都在com.google.common.base包下。 注:JDK有很多借鉴guava的地方,本文只讲解guava,如果jdk中有类似的实现,不必疑虑。 二、基本工具 按照官网介绍,Guava base包下有一些经典工具,如下: 2.1 Optional<T> 1.作用 在构造对象的时候就明确申明该对象是否可能为null,快速失败拒绝null值,可以避免空指针异常。 2.简单使用 1 /** 2 * @Description Optional:一个指向值对象引用的对象实例,使得构造对象时就明确申明是否支持null 3 * @author denny 4 * @date 2018/7/24 下午2:23 5 */ 6 public class OptionalTest { 7 public static void main(String[] args) { 8 Integer a = null ; 9 Integer b = 1 ; 10 // 支持null、非null 11 Optional<Integer> optionalA1 = Optional. fromNullable (a); 12 Optional<Integer> optionalA2 =

HashMap 为什么会导致 CPU 100%?文章看不懂?来看这个视频吧!——面试突击 006 期

╄→尐↘猪︶ㄣ 提交于 2020-11-06 04:47:17
无论是在实际工作中还是在面试中,HashMap 无疑是使用频率最高的知识点之一,所以我们需要搞懂每一个关于 HashMap 的知识点才行。 哈喽,大家好,我是老王,欢迎来到 Java 面试突击,我们今天来开始第 6 期的内容。 本期的问题是:HashMap 为什会导致 CPU 运行 100%?这是一个比较常见的经典问题了,但是有很多人读者朋友给我反馈,尼玛,看文章根本看不懂啊?Sun 公司都不知道这个问题的原因吧?不,是 Oracle 公司都不知道这个问题的原因吧?面试官怕也不知道这个的答案吧? 咳咳,作为一个很正经的面试官,我觉得这个问题一点都不重要,重要的是你不知道答案啊。好的,下一位面试者请进,您先回去等通知吧。 为了避免这种尴尬的事情发生,今天我们来好好聊一下这个问题,毕竟技能再手,才能吊打面试官不是? 正文 这个问题相关的知识点,有以下几个: HashMap 的底层数据结构是什么? 什么是哈希碰撞?如何该解决这个问题? 什么是扩展因子?它有什么用? 还有对 HashMap 源码的理解,为什么 HashMap 会导致死循环? 视频版答案 视频内容如下: 图文答案 1.HashMap 的底层数据结构 先来说 HashMap 的底层数据结构,看过 HashMap 的源码我们就会发现,JDK 1.7 和 JDK 1.8 HashMap 的组成是不同的,JDK 1.7

安装Oracle11g的一些注意点

烈酒焚心 提交于 2020-11-05 11:34:03
虽说Oracle 11g不是目前最新的版本,但使用的人还是很多,在教学中还是常用的版本,在安装oracle 11g时,我总结了一些自己填过的坑,希望对大家有益。 1. 关闭安全软件(如“360安全卫士”)再安装Oracle 11g 2. 密码不能采用数字开头,必须以字母开头(话说这是一个很坑人的地方,在创建密码的时候没有这个要求,但如果密码是以数字开头安装到后面就会锁定system账号),密码不能超过30个字符,只能是:A-Z,a-z, 0-9, _, $,和#这些字符。不能使用保留字和关键字。 3. 要想使用Sql Developer,必须要安装32位的jdk,最好是jdk1.5版本,并修改sqldeveloper.conf文件,该文件位于:{ORACLE_HOME}\dbhome_1\sqldeveloper\sqldeveloper\bin目录下,此处{ORACLE_HOME}指你的Oracle安装目录,如我的是:G:\OracleBaseDir\product\11.2.0。这是最坑的地方, Oracle11g仅支持32位的java,不支持自带的64位java (我想大家下载Oracle11g时大部分都是下载64位版本吧)。找到sqldeveloper.conf文件的最后,确保SetJaveHome正确地指向你32Jdk的安装目录,修改如: SetJavaHome C:

Java在线诊断利器之Arthas

て烟熏妆下的殇ゞ 提交于 2020-11-05 07:06:14
一. 简介 Arthas 是阿里在2019年9月份开源的一款java在线诊断工具,能够分析、诊断、定位java应用问题,例如:JVM信息、线程信息、搜索类中的方法、 跟踪代码执行、观测方法的入参和返回参数等等。 Arthas最大的特点是能在 不修改代码和不需要重新发布的情况下,对业务问题进行诊断 ,包括查看方法调用的出参入参、异常、监测方法执行耗时、类加载信息等,大大提升线上问题排查效率。 二. 适用场景 线上环境某个方法数据处理有问题,但没有日志埋点等记录入参和出参信息,无法debug,并且本地环境无法重现问题 线上接口调用响应缓慢,耗时高,但接口逻辑复杂,接口内部又调用很多其他系统的接口或第三方的jar,不确定是哪个方法导致的耗时高,无法定位到具体方法 出问题的方法被执行的路径非常多,无法确定该方法是在哪些具体的地方被调用或执行,这个方法也可能是第三方的jar包里的 无法确定线上环境是否是最新提交的代码,只能把服务器上的class文件下载下来使用反编译工具打开确认 线上出现偶发问题或只是某些条件下才会触发,通过日志不容易排查 三. 安装使用 目前的arthas版本都是基于命令行的交互方式,所以下面会按照上面的适用场景列出一些重要和常用的命令,全部命令请查看官方安装。 这里有一个坑,如果在widows环境安装,本地之前安装了多个版本的jdk

CentOS 7 安装 JAVA环境(JDK 1.8)

試著忘記壹切 提交于 2020-11-05 07:02:14
博客园 首页 新随笔 管理 随笔 - 206 文章 - 0 评论 - 2094 CentOS 7 安装 JAVA环境(JDK 1.8) 1.打开url选择jdk1.8下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 我选择linux x64版本: 2.下载 wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz?AuthParam=1531155951_4e06a4d17c6c1dbfb8440352e19dd2ae 该下载地址已失效 请自行在官网复制下载地址 下载以后通过命令检查安装包大小是否符合 ls -lht 3.安装 (1)创建安装目录 mkdir /usr/local/java/ (2)解压至安装目录 tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/java/ 4.设置环境变量 打开文件 vim /etc/profile 在末尾添加 export JAVA_HOME=/usr/local/java/jdk1.8.0