JDK

ConcurrentHashMap 1.7/1.8

纵饮孤独 提交于 2020-12-13 10:49:24
https://www.cnblogs.com/study-everyday/p/6430462.html JDK1.7的实现 ConcurrentHashMap的数据结构是由一个Segment数组和多个HashEntry组成 每一个Segment元素存储的是HashEntry数组+链表,这个和HashMap的数据存储结构一样 HashEntry大小的计算也是2的N次方(cap <<=1) Segment实现了 ReentrantLock ,也就带有锁的功能, 当执行put操作时,会进行第一次key的hash来定位Segment的位置 这里要进行两次Hash去定位数据的存储位置 计算ConcurrentHashMap的元素大小是一个有趣的问题 第一种方案他会使用不加锁的模式去尝试多次计算ConcurrentHashMap的size,最多三次, 比较前后两次计算的结果,结果一致就认为当前没有元素加入,计算的结果是准确的 第二种方案是如果第一种方案不符合,他就会给每个Segment加上锁,然后计算ConcurrentHashMap的size返回 JDK1.8的实现 直接用Node数组+链表+红黑树的数据结构来实现,并发控制使用Synchronized和CAS来操作 JDK1.8中还能看到Segment的数据结构,但是已经简化了属性, 只是为了兼容旧版本

JDBC驱动程序类型

﹥>﹥吖頭↗ 提交于 2020-12-13 10:48:21
JDBC驱动程序是什么? JDBC驱动程序在JDBC API中实现定义的接口,用于与数据库服务器进行交互。 例如,使用JDBC驱动程序,可以通过发送SQL或数据库命令,然后使用Java接收结果来打开数据库连接并与数据库进行交互。 JDK附带的 Java.sql 包包含各种类,其类的行为被定义,实现在第三方驱动程序中完成。 第三方供应商在其数据库驱动程序中实现 java.sql.Driver 接口。 JDBC驱动程序类型 JDBC驱动程序实现因Java运行的各种操作系统和硬件平台而异。 Sun将实现类型分为四种类型,分别为 1 , 2 , 3 和 4 类型,如下所述: 类型1:JDBC-ODBC桥驱动程序 在 类型1 驱动程序中,JDBC桥接器用于访问安装在每台客户机上的ODBC驱动程序。 使用ODBC需要在系统上配置表示目标数据库的数据源名称(DSN)。 当Java第一次出现时,这是一个驱动程序,因为大多数数据库仅支持ODBC访问,但现在这种类型的驱动程序仅推荐用于实验性使用或没有其他替代方案时使用。 JDK 1.2 附带的JDBC-ODBC桥接是这种驱动程序的一个很好的例子。 类型2:JDBC本地API 在 类型2 驱动程序中,JDBC API调用将转换为本地C/C++ API调用,这是数据库唯一的。 这些驱动程序通常由数据库供应商提供,并以与JDBC-ODBC桥接相同的方式使用

超美观的 Vue+Element 开源后台管理 UI

我们两清 提交于 2020-12-13 06:16:15
关注我 们, 设为星标,每天7:30不见不散,架构路上与您共享 回复" 架构师 "获取资源 基于Vue+Element等组件联合开发的一个免费的开源后台, 免费开源后台主要为了能够减少开发者的时间,可以快速构建一个后台管理系统,为大家提供一个简单的学习环境。 1. 亮点 1、 支持后台自定义 2、 多页面自定义 3、 TinyMce富文本支持 4、 左侧菜单收缩、伸展 5、 Echarts图表支持 2. 主要 JavaScript 库 Vue+Element-Ui+vue-router+vue-cookies+echarts,通过四个JavaScript库你可以更简单的更快的使用后台。 3. 图片集 登录 集成登录+注册+密码找回 主页 富文本 集成Vue最强tinymce富文本编辑器,可以满足基础的文本编辑 丰富动画 Animate动画助力EuiAdmin成长,可以直接将需要的动画进行选择将"动画 class名"的内容放到需要的class中便可以实现动画 用户表格 所有数据为JavaScript数据虚拟生成,如有雷同纯属意外。支持页面和条数切换 Echarts图表 常用网站设置-网站设置 高级自定义 可以自定义网站基础颜色、菜单颜色等 4. 怎样获取 1. 识别并关注公众号「 Java架构师社区 」; 2. 在下面公众号后台回复关键字「 222 」。 👆 长按上方二维码 2 秒

如何把安全证书导入到java中的cacerts证书库(转)

亡梦爱人 提交于 2020-12-13 00:54:34
如何把安全证书导入到java中的cacerts证书库 提示: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 每一步:进入某个https://www.xxx.com开头的网站,把要导入的证书下载,     在该网页上右键 >> 属性 >> 点击"证书" >>     再点击上面的"详细信息"切换栏 >>     再点击右下角那个"复制到文件"的按钮     就会弹出一个证书导出的向导对话框,按提示一步一步完成就行了。     例如:保存为wcceca.cer, 放在d盘下 第二步:如何把上面那步的(wcceca.cer)这个证书导入java中的cacerts证书库里? 如:我的 jdk安装这个目录在 C:\Program Files\Java\jdk1.8.0_131 开始 >> 运行 >> 输入cmd 进入dos命令行 >> 再用cd进入到C:\Program Files\Java

为了忽悠大厂面试官,熬夜总结了这些Spring面试题!

北战南征 提交于 2020-12-12 23:47:08
前言 如果说 Java 工程师,有什么一定要“死磕”拿下的东西,那一定是 Spring 无疑了。众所周知,Spring 无论在 Java 生态系统,还是在就业市场, Spring Boot、Spring Framework、Spring Data、Spring Cloud、Spring Security、Spring Session等都是Spring Framework 的基石,面试出镜率之高,无出其右。 先分享一个Spring知识点思维导图给大家 1.说说Spring 里用到了哪些设计模式? 单例模式:Spring 中的 Bean 默认情况下都是单例的。无需多说。 工厂模式:工厂模式主要是通过 BeanFactory 和 ApplicationContext 来生产 Bean 对象。 代理模式:最常见的 AOP 的实现方式就是通过代理来实现,Spring主要是使用 JDK 动态代理和 CGLIB 代理。 模板方法模式:主要是一些对数据库操作的类用到,比如 JdbcTemplate、JpaTemplate,因为查询数据库的建立连接、执行查询、关闭连接几个过程,非常适用于模板方法。 2.谈谈你对IOC 和 AOP 的理解?他们的实现原理是什么? IOC 叫做控制反转,指的是通过Spring来管理对象的创建、配置和生命周期,这样相当于把控制权交给了Spring

pytest文档13-allure2生成html报告(史上最详细)-已废弃,不用看了

£可爱£侵袭症+ 提交于 2020-12-12 22:58:41
前言 allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面。 环境准备 1.python3.6 2.windows环境 3.pycharm 4.pytest-allure-adaptor 5.allure2.7.0 6.java1.8 ** 作者:上海-悠悠 QQ交流群:588402570** pytest-allure-adaptor下载 pip安装pytest-allure-adaptor, github地址https://github.com/allure-framework/allure-pytest pip3 install pytest-allure-adaptor 生成xml报告 pytest -s -q --alluredir report 如果不指定路径,默认在当前目录下新建一个report目录,当然也可以指定路径 pytest -s -q --alluredir 指定report路径 执行完之后打开report文件夹,会自动生成xml格式的报告 安装 Command Tool allure的版本目前有2个,从github上看,allure1不再被支持,请考虑使用allure2 https://github.com/allure

Java并发编程系列-(6) Java线程池

风流意气都作罢 提交于 2020-12-12 18:46:41
目前已经更新完《Java并发编程》,《Docker教程》和《JVM性能优化》,欢迎关注【后端精进之路】,轻松阅读全部文章。 <div align=center><img src="http://ww1.sinaimg.cn/large/a18449c6gy1gazysez0b1j20ni0n6afy.jpg" width = "200" height = "200"></div> Java并发编程: Java并发编程系列-(1) 并发编程基础 Java并发编程系列-(2) 线程的并发工具类 Java并发编程系列-(3) 原子操作与CAS Java并发编程系列-(4) 显式锁与AQS Java并发编程系列-(5) Java并发容器 Java并发编程系列-(6) Java线程池 Java并发编程系列-(7) Java线程安全 Java并发编程系列-(8) JMM和底层实现原理 Java并发编程系列-(9) JDK 8/9/10中的并发 Docker教程: Docker系列-(1) 原理与基本操作 Docker系列-(2) 镜像制作与发布 Docker系列-(3) Docker-compose使用与负载均衡 JVM性能优化: JVM性能优化系列-(1) Java内存区域 JVM性能优化系列-(2) 垃圾收集器与内存分配策略 JVM性能优化系列-(3) 虚拟机执行子系统 JVM性能优化系列

Spring Boot 能给我们带来什么?Spring项目配置开发环境及Maven

余生颓废 提交于 2020-12-12 17:27:18
1、Spring Boot 能给我们带来什么? 独特见解:简而言之 SpringBoot就像一个集装箱,对其他组件是可插拔开箱即用,只要你需要开启自动配置即可。 约定优于配置:Spring Boot 中很多配置都可以选用默认配置。 独立运行:Spring Boot 内嵌有 Tomcat、Jetty 等 Web 容器,不需要单独集成,从而直接运行和部署。 生产应用:Spring Boot 可以提供用于生产的应用监控指标、心跳检查、甚至加载外部配置等功能。 2、 配置开发环境 第一步:安装 jdk 环境,推荐使用 jdk8。原因是目前 Spring5.0及其以上的版本都必须是 jdk8. 第二步:介绍一款 Spring 定制开发者 IDE:Spring Tools Suite简称 STS。它是 一个专门开发 Spring 项目的Eclipse工具。使用步骤如下: 2.1、选择操作系统对应的 STS下载 2.2、解压,并打开STS.exe 即可。界面跟Eclipse 一样。 3、Maven介绍 我们在创建一个 Java 工程的时候,如果想要使用其他框架或者技术,我们就必须依赖其他第三方的 jar 包,那么在创建工程时需要导入 jar 包,最终添加到 classpath 中。那么问题就来了,我们这些依赖的 jar 包从哪儿来?这时我们使用 maven 这个 jar

java线程池和五种常用线程池的策略使用与解析

半城伤御伤魂 提交于 2020-12-12 16:30:31
java线程池和五种常用线程池策略使用与解析 一.线程池 关于为什么要使用线程池久不赘述了,首先看一下java中作为线程池Executor底层实现类的ThredPoolExecutor的构造函数 public ThreadPoolExecutor( int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue <Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) { ... } 其中各个参数含义如下: corePoolSize- 池中所保存的线程数,包括空闲线程。需要注意的是在初创建线程池时线程不会立即启动,直到有任务提交才开始启动线程并逐渐时线程数目达到corePoolSize。若想一开始就创建所有核心线程需调用prestartAllCoreThreads方法。 maximumPoolSize-池中允许的最大线程数。需要注意的是当核心线程满且阻塞队列也满时才会判断当前线程数是否小于最大线程数,并决定是否创建新线程。 keepAliveTime - 当线程数大于核心时,多于的空闲线程最多存活时间 unit - keepAliveTime 参数的时间单位。