技术博客
ObjectSpace
代码如风
展开
-
重识JVM(二)-解构Java对象
这篇文章主要会对Java对象进行详细分析,基于上一篇文章,对Java对象的布局及其底层的一些机制进行解读,相信这些会对后期JVM调优有很大的帮助。原创 2020-11-23 13:07:56 · 528 阅读 · 0 评论 -
重识JVM(一)-类与对象在JVM中是如何存储的
这篇博客主要来说说类与对象在JVM中是如何存储的,由于JVM是个非常庞大的课题,所以我会把他分成很多章节来细细阐述,具体的数量还没有决定,当然这不重要,重点在于是否可以在文章中学到东西,是否对JVM可以有一些更深的理解,当然这也是笔者自己写文章的初衷。原创 2020-11-16 12:37:43 · 1427 阅读 · 1 评论 -
万字长文带你从0到1了解分布式文件系统和FastDFS
FastDFS是一个以C语言开发的开源轻量级分布式文件系统,由阿里巴巴开发并开源。它对文件进行管理,功能包括:文件存储、文件同步、文件访问(上传、下载)等。解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。原创 2020-10-16 21:00:33 · 600 阅读 · 1 评论 -
MyBatis源码解析(三)—缓存篇
大家好,这一篇文章是MyBatis系列的最后一篇文章,前面两篇文章《MyBatis源码解析(一)—构建篇》和《MyBatis源码解析(二)—执行篇》,主要说明了MyBatis是如何将我们的xml配置文件构建为其内部的Configuration对象和MappedStatement对象的,然后在第二篇我们说了构建完成后MyBatis是如何一步一步地执行我们的SQL语句并且对结果集进行封装的。那么这篇作为MyBatis系列的最后一篇,自然是要来聊聊MyBatis中的一个不可忽视的功能,一级缓存和二级缓存。原创 2020-02-24 13:01:59 · 397 阅读 · 0 评论 -
MyBatis源码解析(二)—执行篇
上一篇文章《MyBatis源码解析(一)—构造篇》提到了MyBatis是如何构建配置类的,也说了MyBatis在运行过程中主要分为两个阶段,第一是构建,第二就是执行,所以这篇文章会带大家来了解一下MyBatis是如何从构建完毕,到执行我们的第一条SQL语句的。原创 2020-02-21 10:49:43 · 320 阅读 · 0 评论 -
MyBatis源码解析(一)——构造篇
好久不见,从上一篇文章过后,休整了两个月,又逢疫情特殊时期,天天宅在家里挺尸,真是见证了一个人可以懒惰到什么境界。好吧废话不多说了,今天会给大家分享我们常用的持久层框架——MyBatis的工作原理和源码解析。说实话MyBatis是我第一个接触的持久层框架,在这之前我也没有用过Hibernate,从Java原生的Jdbc操作数据库之后就直接过渡到了这个框架上,当时给我的第一感觉是,有一个框架太方便了,举一个例子吧,我们在Jdbc操作的时候,对于对象的封装,我们是需要通过ResultSet.getXXX(i原创 2020-02-18 11:48:23 · 382 阅读 · 0 评论 -
清空认知,然后重新理解MySQL索引结构
前言Hello我又来了,快年底了,作为一个有抱负的码农,我想给自己攒一个年终总结。自上上篇写了手动搭建Redis集群和MySQL主从同步(非Docker)和上篇写了动手实现MySQL读写分离and故障转移之后,索性这次把数据库中最核心的也是最难搞懂的内容,也就是索引,分享给大家。这篇博客我会谈谈对于索引结构我自己的看法,以及分享如何从零开始一层一层向上最终理解索引结构。从一个简单的表开始cr...原创 2019-12-10 13:17:44 · 805 阅读 · 3 评论 -
动手实现MySQL读写分离and故障转移
前言久违了,由于最近新项目下来了,所以工作特别忙,导致迟迟没更,上一篇发了手动搭建Redis集群和MySQL主从同步(非Docker)之后,很多同学对文中主从结构提到的读写分离感兴趣,本打算在双十一期间直接把读写分离分享给大家,奈何工作一直没停下,所以这个周末抽空把这些分享出来。关于MySQL的读写分离的实现,有两种方式,第一种方式即我们手动在代码层实现逻辑,来解析读请求或者写请求,分别分发到...原创 2019-12-04 12:56:56 · 1499 阅读 · 3 评论 -
SpringBoot自动装配原理初探
前言Spring翻译为中文是“春天”,的确,在某段时间内,它给Java开发人员带来过春天,但是随着我们项目规模的扩大,Spring需要配置的地方就越来越多,夸张点说,“配置两小时,Coding五分钟”。这种纷繁复杂的xml配置随着软件行业一步步地发展,必将逐步退出历史舞台。SpringBoot介绍来自:百度百科Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简...原创 2019-12-03 09:41:48 · 3471 阅读 · 1 评论 -
手动搭建Redis集群和MySQL主从同步(非Docker)
一直都想自己动手搭建一个Redis集群和MySQL的主从同步,当然不是依靠Docker的一键部署(虽然现在企业开发用的最多的是这种方式),所以本文就算是一个教程类文章吧,但在动手搭建之前,会先聊聊理论的东西,以便于大家有一个**集群**和**主从同步**的概念,如果有同学不了解Redis和MySQL,可以看一下我之前的两篇文章。原创 2019-11-08 10:29:04 · 1559 阅读 · 0 评论 -
从实践角度重新理解BIO和NIO
前言这段时间自己在看一些Java中BIO和NIO之类的东西,看了很多博客,发现各种关于NIO的概念说的天花乱坠头头是道,可以说是非常的完整,但是整个看下来之后,自己对NIO还是一知半解的状态,所以这篇文章不会提到很多的概念,而是站在一个实践的角度,写一些我自己关于NIO的见解,站在实践过后的高度下再回去看概念,应该对概念会有一个更好的理解。实现一个简易单线程服务器要讲明白BIO和NIO,首先...原创 2019-10-22 12:38:06 · 774 阅读 · 0 评论 -
最适合初学者了解的Java多线程与并发基础
本文会介绍Java中多线程与并发的基础,适合初学者食用,如果想看关于多线程与并发稍微进阶一些的内容可以看我的另一篇博客— [《锁》](https://juejin.im/entry/5d8db0c2f265da5baf40f3db)原创 2019-10-13 13:37:18 · 274 阅读 · 1 评论 -
锁
前言在Java编程中有一个每个程序猿想躲躲不开遇到了又十分头疼的问题,即多线程的线程安全问题。这块知识应该可以算是Java中比较麻烦的一块知识之一了,今天就来谈一谈Java中如何解决线程安全问题,以及各种锁的区别。线程安全问题的主要诱因1.存在共享数据(临界资源)2.存在多条线程共同操作这些数据解决问题的根本方法:同一时刻有且只有一个线程在操作共享数据,其它线程必须等到该线程处理完数据后...原创 2019-09-27 14:52:41 · 423 阅读 · 0 评论 -
Redis由浅入深深深深深剖析
这篇准(tou)备(lan)了相当久的时间,因为有些东西总感觉自己拿不准不敢往上写,差点自闭,就算现在发出来了也感觉有很多地方是需要改动的。如果有同学觉得哪里写的不对劲的,评论区或者私聊我...嗯,我不要你觉得,我要我觉得。原创 2019-09-17 17:06:02 · 291 阅读 · 0 评论 -
【从入门到入土】令人脱发的数据库底层设计
当你点击进这篇文章,你至少能明白一个事实——简简单单的数据库,和.......渐渐脱落的三千烦恼丝。原创 2019-09-04 12:31:44 · 978 阅读 · 4 评论 -
JVM—深入理解内存模型与垃圾收集机制
Java是一种跨平台的语言,当初其设计初衷也是为了解决各个平台编译环境具有差异,对程序移植性问题造成困难这一痛点,于是推出了Java语言。这么多年Java受业界追捧的原因除了其面向对象的特性以外就是其可移植性强,而可移植性这一特性正式建立在JVM虚拟机这一基础上的,JVM在其内存模型和垃圾回收机制的设计上堪称神作,了解JVM虚拟机是每一个Java开发工程师必备的技能。原创 2019-08-30 16:18:19 · 336 阅读 · 0 评论 -
浅谈计算机网络(HTTP-HTTPS-TCP-UDP-IP)
计算机网络是计算机专业很重要的一门课,课程中详细阐述了两台计算机之间是如何进行通信、如何保证通信的可靠性、如何保证通信的高效性等等内容,在日常coding中可能比较少关注到这方面,但是在真正遇到网络方面的问题无法解决时,了解计算机网络的原理却是十分必要的。原创 2019-08-24 17:38:55 · 1471 阅读 · 0 评论