- 博客(43)
- 资源 (18)
- 收藏
- 关注
原创 【深入理解JVM】垃圾收集器&内存分配策略
那么虚拟机要进行GC的时候,就不会管这些已经运行到安全区域的线程,当线程要脱离安全区域的时候,要自己检查系统是否已经完成了GC或者根节点枚举(这个跟GC的算法有关系),如果完成了就继续执行,如果未完成,它就必须等待收到可以安全离开安全区域的Safe Region的信号为止。简单解释一下,当线程1,线程2 是两个十分耗时的循环,并且根据HotSpot放置安全点的位置来说,上一段代码是典型的 counted loop(可数循环),也就是说每次循环回跳前是不会放置安全点的。所以这里就引入了安全点的概念。
2023-01-11 15:31:26
456
1
原创 【深入理解JVM】内存模型
局部变量表所需要的内存空间在编译期完成分配,当进入一个方法时,这个方法需要在栈帧中分配多大的局部变量空间是完全确定的,在方法运行期间不会改变局部变量表的大小(大小指的是变量槽的数量,一个变量槽32个比特、64个比特或者更多完全由具体的虚拟机实现)。在java虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。不过局部变量表用的是索引,操作数栈是弹栈/压栈来访问。
2023-01-10 11:56:36
338
原创 mysql笔记(二)- InnoDB数据页结构
Innodb设计了不同类型的页结构,存放表空间头部信息的页、存放change buffer信息的页、存放inode信息的页、存放undo redo日志信息的页;今天我们了解存放记录信息的页(数据页也叫索引页)数据页页结构总览名称描述filer header页的一些通用信息page header数据页专有的一些信息infimum + supremum两个虚拟的记录user records用户存储的记录内容free space页中尚未使用的空间.
2022-01-16 19:30:37
442
原创 mysql笔记(一)- InnoDB记录存储结构
InnoDB是以页为单位在内存和磁盘之间交互,页的大小16k,16384字节,那么一页能存放多少条记录呢?我们首先要了解下记录在磁盘的存储格式,才能计算出一页能够存放多少条。COMPACT行格式除了COMPACT行格式InnoDB还有其他几种行格式REDUNDANT、DYNAMIC、COMPRESSED记录的额外信息变长字段长度列表mysql的一些变长的数据类型:varchar、text等,这些类型的字段长度是多少不固定的,在存储的时候需要把字段的长度也存起来,这样在读取记录的时候才能.
2022-01-02 17:15:09
579
原创 SpringBoot配置mysql redis多数据源
多数据源方案Mysql配置多数据源从AbstractRoutingDataSource中需求解决方案配置我们的动态数据源配置两个数据源对象配置切面配置文件Redis多数据源配置文件配置redisTemplate使用Mysql配置多数据源从AbstractRoutingDataSource中需求解决方案 @Override //获取数据库连接 public Connection getConnection() throws SQLException { return determineTarge
2021-01-06 15:10:40
440
原创 pyspark提交任务依赖模块的解决方案
直接提交单个py文件 spark-submit --deploy-mode client --driver-memory 2G --executor-memory 2G --executor-cores 3 --num-executors 3 --properties-file /etc/spark/conf/spark-defaults.conf test.py依赖helper中的代码test.pyfrom helper.util_helper import sub_namedata_
2020-12-01 16:55:37
1515
原创 Flume使用
文章目录一、Flume简介二、Flume角色三、Flume传输过程四、Flume部署及使用4.1、文件配置4.2、案例4.2.1、案例一:监控端口数据4.2.2、案例二:实时读取本地文件到HDFS4.2.3、案例三:实时读取目录文件到HDFS4.2.4、案例四:Flume与Flume之间数据传递:单Flume多Channel、Sink,4.2.5、案例五:Flume与Flume之间数据传递,多Fl...
2019-02-16 22:04:43
493
原创 SparkSQL应用解析
文章目录第1章 Spark SQL概述1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 Dataframe1.2.3 Dataset1.2.4 三者的共性1.2.5 三者的区别第2章 执行SparkSQL查询2.1 命令行查询流程2.2 IDEA创建SparkSQL程序第3章 SparkSQL解析3.1 新的起始点SparkSession3.2 创建Da...
2019-02-15 17:01:54
793
原创 SparkCore应用解析
文章目录RDD概念RDD概述什么是RDDRDD的属性1.3 RDD弹性1.4 RDD特点1.4.1 分区1.4.2 只读1.4.3 依赖1.4.4 缓存1.4.5 checkpoint第2章 RDD编程2.1 编程模型2.2 创建RDD2.3 RDD编程2.3.1 Transformation2.3.2 Action2.3.3 数值RDD的统计操作2.3.4 向RDD操作传递函数注意2.3.5 ...
2019-02-14 17:07:23
489
原创 Spark基础解析
文章目录安装【Standalone】2.4 配置Spark【Standalone】2.5 配置Job History Server【Standalone】2.6 配置Spark HA【Standalone】【Yarn】配置Spark【Yarn】执行Spark程序执行第一个spark程序(standalone)执行第一个spark程序(yarn)Spark应用提交启动Spark Shell启动Spa...
2019-02-12 16:35:09
614
原创 hive安装和基本操作(二)
文章目录查询基本查询(Select…From)全表和特定列查询列别名常用函数Limit语句Where语句Like和RLike分组Group By语句Having语句Join语句等值Join表的别名内连接左外连接右外连接满外连接连接谓词中不支持or排序全局排序(Order By)每个MapReduce内部排序(Sort By)分区排序(Distribute By)Cluster By分桶及抽样查询分...
2019-01-25 16:27:24
362
原创 hive安装和基本操作(一)
文章目录hive的基本概念hive的优缺点优点缺点Hive架构原理Hive安装环境准备Hive安装部署将本地文件导入Hive案例MySql安装安装包准备安装MySql服务器安装MySql客户端MySql中user表中主机配置Hive元数据配置到MySql驱动拷贝配置Metastore到MySqlHive常用交互命令Hive其他命令操作Hive常见属性配置Hive数据仓库位置配置查询后信息显示配置H...
2019-01-25 15:22:47
7964
1
原创 HBase的安装和使用
文章目录HBaes介绍1.1、HBase的起源1.2、HBase的角色1.2.1、HMaster1.2.2、RegionServer1.3、HBase的架构HBase部署与使用2.1、部署2.1.1、Zookeeper正常部署2.1.2、Hadoop正常部署2.1.3、HBase的解压2.1.4、HBase的配置文件2.1.5、HBase需要依赖的Jar包2.1.6、HBase软连接Hadoop配...
2019-01-05 12:05:10
538
原创 Kafka环境搭建和实战
Kafka集群部署环境准备集群规划Kafka集群部署Kafka命令行操作Kafka工作流程分析Kafka生产过程分析写入方式分区(Partition)副本(Replication)写入流程Broker 保存消息存储方式存储策略Zookeeper存储结构Kafka消费过程分析消费模型API消费者组消费方式消费者组案例Kafka API实战环境准备Kafka生产者Java API创建生产者创建生产者...
2018-12-29 11:17:45
577
原创 MapReduce
MapReduce框架原理MapReduce工作流程InputFormat数据输入Job提交流程和切片源码详解FileInputFormat切片机制CombineTextInputFormat切片机制InputFormat接口实现类自定义InputFormatMapTask工作机制并行度决定机制MapTask工作机制Shuffle机制Shuffle机制Partition分区WritableCom...
2018-11-23 17:58:50
298
原创 HDFS HA高可用
目录HA概述HDFS-HA工作机制HDFS-HA工作要点HDFS-HA自动故障转移工作机制HDFS-HA集群配置环境准备规划集群配置Zookeeper集群配置HDFS-HA集群启动HDFS-HA集群配置HDFS-HA自动故障转移YARN-HA配置YARN-HA工作机制配置YARN-HA集群HA概述1)所谓HA(high available),即高可用(7*24小时不中断服务)。2)实现高可...
2018-11-21 17:46:35
236
1
原创 Hadoop编译源码
目录前期准备工作jar包安装编译源码常见的问题及解决方案前期准备工作1)CentOS联网配置CentOS能连接外网。Linux虚拟机ping www.baidu.com 是畅通的注意:采用root角色编译,减少文件夹权限出现问题2)jar包准备(hadoop源码、JDK7 、 maven、 ant 、protobuf)(1)hadoop-2.7.2-src.tar.gz(2)jdk...
2018-11-21 14:18:51
173
原创 Hadoop运行环境搭建
目录Hadoop运行环境搭建虚拟机网络模式设置为NAT克隆虚拟机修改为静态ip修改主机名关闭防火墙在opt目录下创建文件安装jdk安装HadoopHadoop运行模式本地运行Hadoop 案例官方grep案例官方wordcount案例伪分布式运行Hadoop案例启动HDFS并运行MapReduce程序YARN上运行MapReduce 程序配置临时文件存储路径配置历史服务器配置日志的聚集配置文件说明...
2018-11-21 11:47:27
1617
原创 mysql高级(四)——锁
表锁(基于MYISAM引擎)读锁 (共享锁)针对同一份数据多个操作同时进行而不会互相影响 当前session 其他session 可以查询当前锁定的表 可以查询被锁定的表 不可以查询其他未被锁定的表 可以查询其他未被锁定的表 不可以更新当前锁定的表,报错 可以更新被锁定的表,但是阻塞 释放读锁 阻塞结束...
2018-09-17 16:21:09
362
原创 mysql高级(三)——sql调优
小表驱动大表 使用in的sql:select * from A where id in (select id from B) 等价于: for select id from B for select * from A where A.id = B.id 当B表的数据小于A表的数据集时,用in 使用exists的sql:select * from A w...
2018-09-16 22:30:41
12223
1
原创 mysql高级(二)——索引实战
上述就是mysql索引失效的各种原因,下面我们来实战 ALTER TABLE tb_user ADD INDEX idx_user_nap(NAME,age,pos);//建立复合索引 带头大哥不能死 前面我们建立了(name,age,pos)的复合索引 可以看出这三种都用到了索引,索引条件越...
2018-09-16 12:40:31
454
原创 mysql高级(一)——索引和explain介绍
什么是索引? 可以理解为排好序的快速查找数据结构 优势: 1.类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本 2.通过索引对数据进行排序,降低数据排序的成本,降低了CPU的消耗 劣势: 1.实际上索引也是一张表,保存了主键和索引字段,并指向实体表的记录,所以索引也是要占用空间的 2.虽然索引提高了查询速度,但同时却降低了更新表的速...
2018-09-15 17:20:03
627
原创 类文件结构(四)
Class文件是一组以8位字节为基础单位的二进制流,各个数据项严格按照顺序紧凑地排列在Class文件中,中间没有任何分隔符,整个Class文件存储的内容几乎全是程序运行的必要数据,没有空隙存在。当遇到8位字节以上空间的数据项时,则按照高位在前的方式分割成若干个8位字节进行存储。 根据Java虚拟机规范,Class文件格式采用一种类似c语言结构体的伪结构来存储数据,这种伪结构中只有两种数...
2018-09-13 11:50:34
235
原创 jvm性能检测命令(三)
java的自动内存管理归结为:给对象分配内存和回收分配给对象的内存;下面我们来验证在使用Serial / Serial Old收集器下的内存分配和回收策略。对象优先在Eden分配 大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够的空间进行分配时,jvm发起一次Minor GC。 虚拟机提供了-XX:+PrintGCDetails这个收集器日志参数,告诉虚拟机在发生垃圾回收...
2018-09-07 11:41:44
215
原创 垃圾收集算法和垃圾收集器(二)
对象已死吗引用计数算法 : 给对象添加一个引用计数器,每当有一个地方引用它就+1,当引用失效时-1,任何时候当引用计数为0就证明可以被回收了.客观来说,引用计数实现简单,判断效率很高,但是解决不了循环引用的问题 python\actionScript3等一些语言使用引用计数来管理内存,但是jvm没有使用引用计数,原因就是没办法解决循环引用的问题可达性分析算法 : 从一些列成为 ” gc...
2018-09-06 20:30:04
218
原创 Java内存模型和内存泄漏实战(一)
java虚拟机在执行java程序过程中会把它所管理的内存划分为不同的数据区域。有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而简历和销毁。 上图的java运行时数据区,大体分为线程私有区和线程共享区线程私有区程序计数器:一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作的时候就是通过改变这个计数器的值来选取下一条需...
2018-09-05 23:21:54
467
原创 mybatis源码 (五) —— mybatis的事务如何被spring管理
要想使用spring的事务,要加入mybatis-spring依赖包 <!-- 引用插件依赖:MyBatis整合Spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>myba...
2018-08-28 20:04:26
1980
原创 mybatis源码 (四) —— 一级缓存和二级缓存
MyBatis的缓存分为两种一级缓存,一级缓存是SqlSession级别的缓存,对于相同的查询,会从缓存中返回结果而不是查询数据库(也叫本地缓存)默认会启用二级缓存,二级缓存是Mapper级别的缓存,定义在Mapper文件的标签中并需要开启此缓存,默认关闭先看二级缓存:开启 org.apache.ibatis.executor.CachingExecutor#query ...
2018-08-28 17:15:34
186
原创 mybatis源码 (三) —— mapper 动态代理以及select操作
String resource = "com/analyze/mybatis/mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().buil...
2018-08-28 16:46:33
687
原创 mybatis源码 (二) —— SqlSession的创建
SqlSession session = sqlSessionFactory.openSession();org.apache.ibatis.session.defaults.DefaultSqlSessionFactory#openSession() private SqlSession openSessionFromDataSource(ExecutorType execType...
2018-08-28 15:28:37
451
原创 mybatis源码 (一) —— SqlSessionFactory创建和mapper的解析
这篇主要分析SqlSessionFactory的构建过程,以及mybatis mapper文件的解析 先来看SqlSessionFactory的创建过程String resource = "org/mybatis/example/mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(res...
2018-08-28 14:29:00
1853
原创 Netty源码解析(九) —— channel的write操作
io.netty.channel.AbstractChannel#write(java.lang.Object) @Override /** * channel的写操作 */ public ChannelFuture write(Object msg) { //调用pipline的write操作 return pip...
2018-08-27 17:25:11
2527
原创 Netty源码解析(八) —— channel的read操作
客户端channel在建立连接之后会关注read事件,那么read事件在哪触发的呢? NioEventLoop中 /** * 读事件和 accept事件都会经过这里,但是拿到的unsafe对象不同 所以后续执行的read操作也不一样 * NioServerChannel进行accept操作 ...
2018-08-25 14:41:47
20815
1
原创 Netty源码解析(七) —— Pipeline的工作机制
Pipeline是一个由HandlerContext节点构成的双向环形链表,结构如下图,最前面是HeadContext,末尾是TailContext中间是用户自定义的HandlerContext节点 先来看pipLine的构造参数 /** * channelPipLine的默认构造方法 * @param channel */ protect...
2018-08-24 15:43:04
674
原创 Netty源码解析(六) —— 服务端channel如何完成注册
先看ServerBootstrap的继承关系 ServerBootstrap的成员变量 //worker group private volatile EventLoopGroup childGroup; //设置进来的childHandler private volatile ChannelHandler childHandler;Abstra...
2018-08-23 17:19:48
1518
原创 Netty源码解析(五) —— 客户端channel如何完成注册
上一篇我们拿到所有的accept到的channel之后,我们回头看事件通知 还记得io.netty.bootstrap.ServerBootstrap#init服务端启动的时候, ch.eventLoop().execute(new Runnable() { @Override pu...
2018-08-23 14:18:00
619
原创 Netty源码解析(四) —— NioEventLoop处理io
NioEventLoop处理io的一些操作方法io.netty.channel.nio.NioEventLoop#run /** * 启动服务 轮询selector */ @Override protected void run() { for (;;) { try { ...
2018-08-23 14:15:31
1890
原创 Netty源码解析(三) —— NioEventLoop初始化
这节我们来分析NioEventLoop的代码实现,还记得上节在NioEventLoopGroup中我们创建NioEventLoop,下面先看它的继承关系 构造方法 /** * @param parent NioEventLoopGroup * @param executor 线程执行器 每次调用会创建一个name为nioEventLoopGroup-...
2018-08-22 17:31:03
840
原创 Netty源码解析(二) —— NioEventLoopGroup(boss worker线程模型)
Netty的源码里面有example,参照echo demo启动netty服务public final class EchoServer { static final boolean SSL = System.getProperty("ssl") != null; static final int PORT = Integer.parseInt(System.getPrope...
2018-08-22 16:01:37
2939
1
iStat Menus 6.4.dmg
2020-06-15
Transmit v5.6.3.dmg
2020-06-15
Clover Configurator.app.rar 黑苹果efi
2020-03-29
balenaEtcher-Portable-1.5.71黑苹果镜像制作工具
2020-03-29
屏幕亮度调节 黑苹果亮度调节驱动
2020-03-29
RDM.app 开启HIDPI,黑苹果白苹果通用
2020-03-29
windows python-3.6.5-amd64
2020-03-29
jdk8 windows
2019-12-15
mongodb v3.2
2018-06-13
Sublime Text 3170注册版
2018-06-13
sqlyog windows 64位
2018-06-13
java项目代码生成器
2018-06-11
zookeeper-3.4.12 linux
2018-06-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人