自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 python文件锁

python文件锁

2021-11-16 23:05:57 3094 1

原创 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 342

原创 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 592

原创 Ambari学习笔记:初步了解

Ambari学习笔记:初步了解一、Ambari初印象 Ambari 是 Apache Software Foundation 的一个顶级开源项目,是一个集中部署、管理、监控 Hadoop 分布式集群的工具。但是这里的 Hadoop 是一个广义概念,并不仅仅指的是 Hadoop(HDFS、MapReduce),而是指 Hadoop 生态圈(包括 Spark...

2021-01-18 21:18:09 376

转载 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 170

原创 JVM学习笔记

JVM学习笔记一.什么是JVM?JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重...

2019-11-30 16:49:03 204 1

原创 Java并发编程之六--线程池

一、什么是线程池?为什么使用线程池?线程池介绍:  线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的...

2019-11-10 14:19:06 134

原创 Java并发编程之五:并发容器

一、ConCurrentHashMap可参考HashMap和ConcurrentHashMap详解二、更多的并发容器1).SkipList含义:跳表 SkipList,以空间换时间,在原链表的基础上形成多层索引,但是某个节点在插入时,是否成为索引,随机决定,所以跳表又称为概率数据结构。应用:ConcurrentSkipListMap 和 ConcurrentSkipListS...

2019-11-06 21:19:25 148

原创 Java并发编程之四:AQS源码研究

Java高并发专题之~~AQS源码研究一、什么是AQS?AQS是AbstractQueuedSynchronizer的简称。AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,如下图所示。AQS为一系列同步器依赖于一个单独的原子变量(state)的同步器提供了一个非常有用的基础。子类们必须定义改变state变量的prot...

2019-11-01 14:57:01 466

原创 Java并发编程之三:原子操作CAS

参考https://blog.csdn.net/weixin_37598682/article/details/81285176https://blog.csdn.net/v123411739/article/details/79561458

2019-10-25 21:11:11 132

原创 Java并发编程之二:线程的开发工具类

线程的开发工具类一、Fork-Join1.Fork-Join简介从JDK1.7开始,Java提供Fork/Join框架用于并行执行任务,它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果得到这个大任务的结果。这种思想和MapReduce很像(input --> split --> map --> reduce --> output)主要有两步:第一、任务...

2019-10-20 20:08:52 228 1

原创 Java并发编程之一:线程基础,线程之间的共享与协作

线程基础,线程之间的共享与协作目录线程基础,线程之间的共享与协作1.CPU时间片轮转机制2.进程和线程3.并行和并发4.高并发编程的含义,好处及注意事项(二)认识java的线程1.3种创建线程的方式2.线程安全停止工作的方式3.线程常用方法和线程的状态5.线程中的stop(),interrupt(),isInterrupted(),static方法int...

2019-10-19 19:26:55 419

原创 SpringBoot 中 @SpringBootApplication注解

结合SpringBoot的源码,来看看SpringBoot中@SpringBootApplication注解背后的奥秘概 述平时如果我们需要搭建一个spring web项目的时候需要怎么做呢?1)配置web.xml,加载spring和spring mvc2)配置数据库连接、配置spring事务3)配置加载配置文件的读取,开启注解4)配置日志文件...配置完成之后部署tomcat 调试但...

2019-02-02 17:18:40 3128

原创 Java并发编程之六:线程池ThreadPoolExecutor构造方法和规则

为什么用线程池有时候,系统需要处理非常多的执行时间很短的请求,如果每一个请求都开启一个新线程的话,系统就要不断的进行线程的创建和销毁,有时花在创建和销毁线程上的时间会比线程真正执行的时间还长。而且当线程数量太多时,系统不一定能受得了。使用线程池主要为了解决一下几个问题: 通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销。对线程进行一些维护和管理,比如定时开始,...

2018-12-28 16:42:07 231

原创 springboot学习--关于项目启动自动过滤某包下面的类

在项目初始化时,会将加@component,@service...相关注解的类添加到spring容器中。但是项目需要,项目初始化时自动过滤某包下面的类,不将其添加到容器中。有两种实现方案,1.如果要过滤的类比较少,直接在启动类@SpringbootApplication(scanPackage="xxx.xxx.xxx")该注解上添加exclude属性,过滤某个class类也可...

2018-11-26 16:33:17 17043 2

原创 spring boot配置同时支持单机和集群redis

正式环境都是用集群版redis,开发用的单机版,领导要求通过配置文件来确定是单机还是集群,由于单机版已经实现了,那么准备就在单机版基础上进行开发,然后发现spring boot1.2版本已经比较老,就升级版本,由于升级了spring boot版本,对应其他配置也进行了修改。最终修改的配置如下:pom.xml<properties> <java.version>1...

2018-10-11 20:18:20 7088 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 939 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 1233

原创 Quartz学习——Quartz简单入门Demo(二)

要学习Quartz框架,首先大概了解了Quartz的基本知识后,在通过简单的例子入门,一步一个脚印的走下去。 下面介绍Quartz入门的示例,由于Quartz的存储方式分为RAM和JDBC,分别对这两种进行简单的说明。并附上代码! 首先需要添加Quartz的Jar包 ,我使用的是quartz.2.2.1版本! <!-- quartz --> <dependenc...

2018-08-17 10:45:19 317

转载 Quartz学习——Quartz大致介绍(一)

1. 介绍 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。 Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Sc...

2018-08-17 10:07:07 377

转载 springboot和springcould面试相关问题记录

什么是springboot        用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件)                 创建独立的spring引用程序 main方法运行                嵌入的Tomcat 无需部署war文件                简化maven配置              ...

2018-08-13 11:41:33 570

转载 HashMap的原理

1、 HashMap的原理,内部数据结构?底层使用哈希表(数组+链表) , 当链表过长时会将链表转成红黑树以实现O(logn)时间复杂度内查询2、 讲一下HashMap中put方法过程?①.对Key求hash值,然后计算其存储在数组的下标值②,如果没有碰撞,直接放入数组中,如果碰撞了,以链表方式链接到后面③.如果链表长度超过阈值(TREEIFY_THRESHOLD== 8), 就把链表转成红黑树④...

2018-05-31 22:30:16 577 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 2162 2

原创 redis学习系列(四)--在项目中部署redis企业级数据备份方案以及各种踩坑的数据恢复容灾演练

到这里为止,其实还是停留在简单学习知识的程度,学会了redis的持久化的原理和操作,但是在企业中,持久化到底是怎么去用得呢?企业级的数据备份和各种灾难下的数据恢复,是怎么做得呢?1、企业级的持久化的配置策略①.在企业中,RDB的生成策略直接使用默认的即可②.aof默认是关闭的 (appendonly no) 将no改为yes即可,其他的按默认配置即可。save 900 1save 300 10...

2018-03-18 13:14:06 353

原创 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 3746 2

原创 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 1138

原创 redis学习系列(四)--redis持久化的两种方式详解

 目录详解大纲:1、RDB和AOF两种持久化机制的介绍2、RDB持久化机制的优点3、RDB持久化机制的缺点4、AOF持久化机制的优点5、AOF持久化机制的缺点6、RDB和AOF到底该如何选择我们已经知道对于一个企业级的redis架构来说,持久化是不可减少的企业级redis集群架构要做到 --> 海量数据、高并发、高可用持久化主要是做灾难恢复,数据恢复,...

2018-03-17 18:50:31 289

原创 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 3308

原创 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 16847 9

原创 springboot学习--定时任务及cron表达式

在做项目时有时候会有定时器任务的功能,比如某某时间应该做什么,多少秒应该怎么样之类的。spring支持多种定时任务的实现。我们来介绍下使用spring的定时器  1.我们使用spring-boot作为基础框架,其理念为零配置文件,所有的配置都是基于注解和暴露bean的方式。  2.使用spring的定时器:    spring自带支持定时器的任务实现。其可通过简单配置来使用到简单的...

2018-01-25 11:01:47 11088 5

原创 Linux开发环境搭建(四)--Maven私服搭建

1、Nexus介绍     Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。Nexus使用ExtJS来开发界面,利用Restlet来提供完整的REST

2018-01-25 10:55:03 245

原创 springboot学习--maven+springboot项目搭建

一、简介1.springbootSpring Boot使您可以轻松创建独立的生产级基于Spring的应用程序,您可以“运行”。我们对Spring平台和第三方库有自己的看法,所以你可以从最小的麻烦开始。大多数Spring Boot应用程序只需要很少的Spring配置。特征创建独立的Spring应用程序 直接嵌入Tomcat,Jetty或Undertow(无需部署W...

2018-01-25 10:27:27 1512

原创 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 367

原创 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 177

原创 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 203

原创 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 1341 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 222

原创 linux开发环境搭建(一)--linux下yum安装及配置

简介yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。工具/原料电脑linux基础操作知识方法/步骤1.查看、卸载已安装的yum包

2018-01-24 11:03:36 4268

原创 redis学习系列(三)--redis集群-相关命令

Redis集群:集群常用命令及说明一、本文目的       介绍集群的基本情况及常用命令    二、集群的特点 3、集群优缺点 三、集群客户端命令(redis-cli -c -p port)集群cluster info :打印集群的信息cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息。节点clus

2018-01-24 11:01:02 243

原创 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 27056 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除