- 博客(43)
- 收藏
- 关注
原创 hibernate二级缓存ehcache的put原理
hibernate执行sql,将数据转化为映射实体类后会进行数据缓存,其中调用AbstractRowReader#performTwoPhaseLoad方法时,会循环数据集,调用TwoPhaseLoad.initializeEntity();该方法会调用ehcache的put方法进行数据缓存。ehcache在put数据实例(数据实例已转化为Element实例对象),该对象到磁盘时(此时内存缓存已满,按照ehcache.xml中设定的策略,超过部分存储在磁盘),会判断当前disk store spool i
2021-06-02 21:43:15
431
原创 Ambari学习笔记:安装调试
Ambari框架开发环境搭建一、jdk安装1、检查下系统中的jdk版本:java -version2、检查jdk自带安装包:rpm -qa | grep java3、如果有自带jdk,则卸载旧的:yum remove *openjdk* 4.下载jdk安装包 1),在线下载wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" ht
2021-02-18 21:38:32
717
原创 Ambari学习笔记:初步了解
Ambari学习笔记:初步了解一、Ambari初印象 Ambari 是 Apache Software Foundation 的一个顶级开源项目,是一个集中部署、管理、监控 Hadoop 分布式集群的工具。但是这里的 Hadoop 是一个广义概念,并不仅仅指的是 Hadoop(HDFS、MapReduce),而是指 Hadoop 生态圈(包括 Spark...
2021-01-18 21:18:09
468
转载 spring boot:启动原理解析
我们开发任何一个Spring Boot项目,都会用到如下的启动类@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }从...
2020-02-29 16:42:09
236
原创 JVM学习笔记
JVM学习笔记一.什么是JVM?JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重...
2019-11-30 16:49:03
232
1
原创 Java并发编程之六--线程池
一、什么是线程池?为什么使用线程池?线程池介绍: 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的...
2019-11-10 14:19:06
183
原创 Java并发编程之五:并发容器
一、ConCurrentHashMap可参考HashMap和ConcurrentHashMap详解二、更多的并发容器1).SkipList含义:跳表 SkipList,以空间换时间,在原链表的基础上形成多层索引,但是某个节点在插入时,是否成为索引,随机决定,所以跳表又称为概率数据结构。应用:ConcurrentSkipListMap 和 ConcurrentSkipListS...
2019-11-06 21:19:25
173
原创 Java并发编程之四:AQS源码研究
Java高并发专题之~~AQS源码研究一、什么是AQS?AQS是AbstractQueuedSynchronizer的简称。AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,如下图所示。AQS为一系列同步器依赖于一个单独的原子变量(state)的同步器提供了一个非常有用的基础。子类们必须定义改变state变量的prot...
2019-11-01 14:57:01
534
原创 Java并发编程之三:原子操作CAS
参考https://blog.youkuaiyun.com/weixin_37598682/article/details/81285176https://blog.youkuaiyun.com/v123411739/article/details/79561458
2019-10-25 21:11:11
183
原创 Java并发编程之二:线程的开发工具类
线程的开发工具类一、Fork-Join1.Fork-Join简介从JDK1.7开始,Java提供Fork/Join框架用于并行执行任务,它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果得到这个大任务的结果。这种思想和MapReduce很像(input --> split --> map --> reduce --> output)主要有两步:第一、任务...
2019-10-20 20:08:52
279
1
原创 Java并发编程之一:线程基础,线程之间的共享与协作
线程基础,线程之间的共享与协作目录线程基础,线程之间的共享与协作1.CPU时间片轮转机制2.进程和线程3.并行和并发4.高并发编程的含义,好处及注意事项(二)认识java的线程1.3种创建线程的方式2.线程安全停止工作的方式3.线程常用方法和线程的状态5.线程中的stop(),interrupt(),isInterrupted(),static方法int...
2019-10-19 19:26:55
462
原创 SpringBoot 中 @SpringBootApplication注解
结合SpringBoot的源码,来看看SpringBoot中@SpringBootApplication注解背后的奥秘概 述平时如果我们需要搭建一个spring web项目的时候需要怎么做呢?1)配置web.xml,加载spring和spring mvc2)配置数据库连接、配置spring事务3)配置加载配置文件的读取,开启注解4)配置日志文件...配置完成之后部署tomcat 调试但...
2019-02-02 17:18:40
3228
原创 Java并发编程之六:线程池ThreadPoolExecutor构造方法和规则
为什么用线程池有时候,系统需要处理非常多的执行时间很短的请求,如果每一个请求都开启一个新线程的话,系统就要不断的进行线程的创建和销毁,有时花在创建和销毁线程上的时间会比线程真正执行的时间还长。而且当线程数量太多时,系统不一定能受得了。使用线程池主要为了解决一下几个问题: 通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销。对线程进行一些维护和管理,比如定时开始,...
2018-12-28 16:42:07
277
原创 springboot学习--关于项目启动自动过滤某包下面的类
在项目初始化时,会将加@component,@service...相关注解的类添加到spring容器中。但是项目需要,项目初始化时自动过滤某包下面的类,不将其添加到容器中。有两种实现方案,1.如果要过滤的类比较少,直接在启动类@SpringbootApplication(scanPackage="xxx.xxx.xxx")该注解上添加exclude属性,过滤某个class类也可...
2018-11-26 16:33:17
17275
2
原创 spring boot配置同时支持单机和集群redis
正式环境都是用集群版redis,开发用的单机版,领导要求通过配置文件来确定是单机还是集群,由于单机版已经实现了,那么准备就在单机版基础上进行开发,然后发现spring boot1.2版本已经比较老,就升级版本,由于升级了spring boot版本,对应其他配置也进行了修改。最终修改的配置如下:pom.xml<properties> <java.version>1...
2018-10-11 20:18:20
7176
1
原创 redis学习系列--Redis 高并发下的,缓存穿透问题解决方案
下面这段代码 如果1W个人同时访问的话, 从redis 拿 allUser 时, userList为空时,那么1W个人都要进入if判断语句,查询数据库,数据库压力承受不住package com.tb.service; import com.tb.dao.TUserMapper;import com.tb.pojo.TUser;import org.springframework.d...
2018-09-01 21:26:41
1004
2
原创 quartz学习-quartz框架依赖表脚本
/*Navicat MySQL Data TransferSource Server : local_mysqlSource Server Version : 50537Source Host : localhost:3306Source Database : quartz_testTarget Server Type : M...
2018-08-17 10:46:34
1314
原创 Quartz学习——Quartz简单入门Demo(二)
要学习Quartz框架,首先大概了解了Quartz的基本知识后,在通过简单的例子入门,一步一个脚印的走下去。 下面介绍Quartz入门的示例,由于Quartz的存储方式分为RAM和JDBC,分别对这两种进行简单的说明。并附上代码! 首先需要添加Quartz的Jar包 ,我使用的是quartz.2.2.1版本! <!-- quartz --> <dependenc...
2018-08-17 10:45:19
353
转载 Quartz学习——Quartz大致介绍(一)
1. 介绍 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。 Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Sc...
2018-08-17 10:07:07
422
转载 springboot和springcould面试相关问题记录
什么是springboot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 创建独立的spring引用程序 main方法运行 嵌入的Tomcat 无需部署war文件 简化maven配置 ...
2018-08-13 11:41:33
611
转载 HashMap的原理
1、 HashMap的原理,内部数据结构?底层使用哈希表(数组+链表) , 当链表过长时会将链表转成红黑树以实现O(logn)时间复杂度内查询2、 讲一下HashMap中put方法过程?①.对Key求hash值,然后计算其存储在数组的下标值②,如果没有碰撞,直接放入数组中,如果碰撞了,以链表方式链接到后面③.如果链表长度超过阈值(TREEIFY_THRESHOLD== 8), 就把链表转成红黑树④...
2018-05-31 22:30:16
618
1
原创 redis学习系列(五)--redis主从复制原理、断点续传、无磁盘化复制、过期key处理
一、redis replication概括1、主从架构的核心原理当启动一个slave node的时候,它会发送一个PSYNC命令给master node如果这是slave node重新连接master node,那么master node仅仅会复制给slave部分缺少的数据; 如果是slave node第一次连接master node,那么会触发一次full resynchronization(全...
2018-03-18 22:29:42
2227
2
原创 redis学习系列(四)--在项目中部署redis企业级数据备份方案以及各种踩坑的数据恢复容灾演练
到这里为止,其实还是停留在简单学习知识的程度,学会了redis的持久化的原理和操作,但是在企业中,持久化到底是怎么去用得呢?企业级的数据备份和各种灾难下的数据恢复,是怎么做得呢?1、企业级的持久化的配置策略①.在企业中,RDB的生成策略直接使用默认的即可②.aof默认是关闭的 (appendonly no) 将no改为yes即可,其他的按默认配置即可。save 900 1save 300 10...
2018-03-18 13:14:06
413
原创 redis学习系列(四)--redis的AOF持久化深入理解各种操作和相关实验
目录1、AOF持久化的配置2、AOF持久化的数据恢复实验3、AOF rewrite4、AOF破损文件的修复5、AOF和RDB同时工作6、最后一个小实验,让大家对redis的数据恢复有更加深刻的体会1、AOF持久化的配置AOF持久化默认是关闭的,默认是打开RDB持久化appendonly yes,(在redis.conf中修改appendonly 的策略,将n...
2018-03-18 12:15:51
3934
原创 redis学习系列(四)--redis的RDB持久化配置以及数据恢复实验
目录1、如何配置RDB持久化机制2、RDB持久化机制的工作流程3、基于RDB持久化机制的数据恢复实验1、如何配置RDB持久化机制在redis.conf配置文件中去配置持久化save 60 1000(默认文件里面已经添加过持久化策略)涵义:每隔60s,如果有超过1000个key发生了变更,那么就生成一个新的dump.rdb文件,就是当前redis内存中完整的数据快照,这个操...
2018-03-17 22:50:33
1228
原创 redis学习系列(四)--redis持久化的两种方式详解
目录详解大纲:1、RDB和AOF两种持久化机制的介绍2、RDB持久化机制的优点3、RDB持久化机制的缺点4、AOF持久化机制的优点5、AOF持久化机制的缺点6、RDB和AOF到底该如何选择我们已经知道对于一个企业级的redis架构来说,持久化是不可减少的企业级redis集群架构要做到 --> 海量数据、高并发、高可用持久化主要是做灾难恢复,数据恢复,...
2018-03-17 18:50:31
325
原创 Springboot企业级框架搭建
在公司用了半年的springboot框架,这里想跟大家分享一下企业中springboot框架的搭建过程框架要求功能: - 处理http/json 请求 - 日志记录 - 持久化 - 数据源,事务控制 - 定时任务 搭建环境: - 编译器:idea 2017.1.5 - Gradle gradle 4.0- JDK: java8 - 系统: windows 10 - 数据库: mysql5.6搭建记...
2018-03-11 13:16:00
3419
原创 springboot学习--springboot+maven+mybatis项目搭建
今天我们来搭建一个简单的基于springboot+mybatis+maven的项目,使用的数据库为mysql。 最终项目目录结构一、项目创建1.新建spring项目 选择Spring Initializr,选择jdk版本,之后点击Next填写Group,Artifact,Type选择Maven Project 点击Next添加项目依赖,暂时只需添加W...
2018-01-25 11:45:09
17090
7
原创 springboot学习--定时任务及cron表达式
在做项目时有时候会有定时器任务的功能,比如某某时间应该做什么,多少秒应该怎么样之类的。spring支持多种定时任务的实现。我们来介绍下使用spring的定时器 1.我们使用spring-boot作为基础框架,其理念为零配置文件,所有的配置都是基于注解和暴露bean的方式。 2.使用spring的定时器: spring自带支持定时器的任务实现。其可通过简单配置来使用到简单的...
2018-01-25 11:01:47
11190
3
原创 Linux开发环境搭建(四)--Maven私服搭建
1、Nexus介绍 Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。Nexus使用ExtJS来开发界面,利用Restlet来提供完整的REST
2018-01-25 10:55:03
276
原创 springboot学习--maven+springboot项目搭建
一、简介1.springbootSpring Boot使您可以轻松创建独立的生产级基于Spring的应用程序,您可以“运行”。我们对Spring平台和第三方库有自己的看法,所以你可以从最小的麻烦开始。大多数Spring Boot应用程序只需要很少的Spring配置。特征创建独立的Spring应用程序 直接嵌入Tomcat,Jetty或Undertow(无需部署W...
2018-01-25 10:27:27
1648
原创 Linux开发环境搭建(二)--MySQL配置主从复制
Linux下MySQL主从同步配置主服务器:centos7 IP:192.168.1.101CentOS 6.5 MySQL主从同步,MySQL版本5.6.25从服务器:centos6.5 IP:192.168.1.102一、主服务器相关配置 1、创建同步账户并指定服务器地址[root@localhost ~]mysql -uroot -pmysql>use mysql
2018-01-25 09:58:35
398
原创 Linux开发环境搭建(二)--mysql服务启动、停止、重启
如何启动/停止/重启MySQL 一、启动方式 1、使用 service 启动:service mysqld start 2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start 3、使用 safe_mysqld 启动:safe_mysqld& 二、停止 1、使用 service 启动:service mysqld stop 2、
2018-01-24 11:23:12
225
原创 Linux常用命令
1.查看程序端口 ①.根据端口查询:netstat –apn | grep 8080 ②.根据程序名称查询:ps -aux | grep tomcat ③.查看所有的进程和端口使用情况:netstat –apn2.开放linux防火墙端口 firewall-cmd --permanent --add-port=8081-9999/tcp //开发80
2018-01-24 11:22:19
224
原创 Linux开发环境搭建(三)--Centos7安装Redis及注意事项
Linux(Centos)之安装Redis及注意事项阅读目录1.redis简单说明2.准备工作3.gcc的安装4.Tcl的安装5.redis的安装6.redis的测试7.Linux中设置redis的服务器启动和关闭8.Linux中设置redis的开机启动注:安装前须安装yum(包资源管理器)1.redis简单说明 a.redis是一个key-value存储系统,它支持
2018-01-24 11:20:34
1403
1
原创 linux开发环境搭建(二)--CentOS 7.0下使用yum安装MySQL
CentOS7默认数据库是mariadb,配置等用着不习惯,因此决定改成mysql,但是CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。注:安装前须安装yum(包资源管理器)1.下载mysql的repo源$ wget http://repo.mysql.com/mysql-community-release-el7-5.noa
2018-01-24 11:05:09
252
原创 linux开发环境搭建(一)--linux下yum安装及配置
简介yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。工具/原料电脑linux基础操作知识方法/步骤1.查看、卸载已安装的yum包
2018-01-24 11:03:36
4308
原创 redis学习系列(三)--redis集群-相关命令
Redis集群:集群常用命令及说明一、本文目的 介绍集群的基本情况及常用命令 二、集群的特点 3、集群优缺点 三、集群客户端命令(redis-cli -c -p port)集群cluster info :打印集群的信息cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息。节点clus
2018-01-24 11:01:02
280
原创 redis学习系列(二)--spring boot整合Redis集群
spring boot整合Redis集群开发项目地址 https://gitee.com/zhenhai_zheng/springboot_rediscluster.git添加依赖,加载Jedis org.springframework.boot spring-boot-starter-data-redis添加redis配置springbo
2018-01-24 10:59:30
27200
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人