自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阿伟のBlog

成就伟大的道路注定是孤独的

  • 博客(67)
  • 收藏
  • 关注

原创 数据的行式存储和列式存储

数据的行式存储和列式存储最近在公司接触到了与大数据有关的内容,其中要对一个框架进行升级, 其中很重要的一个概念就是将数据的存储由传统的行式存储转换到利于数据分析的列式存储.这其中需要一个比较大的思维上的转变,在网上查阅了很多的资料之后,自己进行了一个小小的总结一. 传统的行式存储传统的行式存储看起来是那么的自然,那么理所应当.大家日常生活中使用的成绩单,Excel表,学校中学习的数据库都是以这种数据格式进行存储.行式存储在逻辑上将数据看成一个个的实体.例如一个学生有名字,性别,年龄等,例如(mar

2021-07-07 21:42:29 1081 1

原创 Redis底层数据结构

redisObject大家都知道我们在使用redis的时候有五种数据类型可以使用分别是string,list,hash,set,sorted_set,但是这五种数据可以看成是已经封装好的数据结构,就像Java里面的ArrayList,我们使用的是ArrayList但是它底层使用的数据结构还是数组.所以我们现在需要了解的就是redis中我们使用的五种数据类型底层是什么数据结构.首先我们需要知道的是,redis中所有的对象都是用一个同一个对象来表示的,这个对象就是**redisObject**,它的定义

2021-04-19 19:55:01 505 1

原创 MVCC与事务隔离级别

(一)事务隔离级别众所周知,MySQL中的INNODB引擎是支持事务的并发操作,但是并发就会带来各种的问题—例如:脏读,幻读等 所以我们首先来看一下MySQL中并发可能会产生的问题1.并发产生的问题脏读:两个事务同时在执行,A修改了一个数据但是还没有提交,B读取并使用了A修改后的数据,但是A事务之后又回滚,那么B读到的这个数据就是不合法的,是脏的.这种情况就被称为脏读不可重复读:两个事务在执行,A在一开始读取到一个数据为x,然后B将这个数据更改为y,更改之后A又去读取该数据,结果却发现数据为y

2021-04-15 10:52:54 570

原创 TCP/UDP协议介绍

TCP协议1.TCP协议的主要特点TCP是面向连接的传输层协议,使用前需建立连接,使用后需释放连接每一条TCP连接只能有两个端点,也就是说TCP连接只能是一对一TCP能提供可靠交互的服务.也就是说使用TCP协议连接传输的数据:无差错,不丢失,不重复TCP提供双全工通信.在连接期间双方的应用进程再任何时候都能发送数据.面向字节流.与进程进行数据交互的形式都是以字节流的形式.2. TCP报文的首部格式及简介TCP首部概念图:3.TCP首部中字段详细解读1.序号(16bits 2byt

2021-02-20 18:18:24 607 1

原创 类加载机制以及类加载器---Java虚拟机

本文生动详细的介绍JVM中类加载机制和类加载器以及双亲委派模型

2020-12-15 20:35:11 295

原创 synchronized源码级别详解---Java多线程

本文详细的介绍了synchronized的使用方法及其原理.以及在JDK1.6之后对其进行的大量优化:轻量级锁,偏向锁,自旋等

2020-11-29 11:23:54 370 1

原创 几款常用的垃圾收集器---Java虚拟机

本文详细的介绍了几款经典的垃圾收集器GC,包括MinorGC:Serial,ParNew,Parallel Scavenge.Major GC:Serial Old,Parallel Old,CMS和MixedGC:G1.尤其是CMS和G1两款热门的GC进行了细致的介绍.

2020-11-23 21:02:26 2876 5

原创 垃圾收集算法详解---Java虚拟机

本位详细的介绍了Java虚拟机JVM中常见的垃圾收集算法,包括分代收集理论,标记清除算法,标记复制算法,标记整理算法和他们的优缺点以及优化.

2020-11-20 11:29:50 2720

原创 初识分布式系统

为什么需要分布式系统相信大家在学习阶段学习的demo或者是项目基本上都是单体系统,在自己的一台机器上就可以成功运行了,我自己也是如此.但是无论是面试中或者说随着学习的深入,自己又常常遇到分布式,可是分布式的相关知识在我的脑海中就像蒙上一层雾气,可以看清轮廓,却不见其细节,所以自己也打算系统的学习一下.1.单体结构系统的不足我们把我们的服务部署在一台服务器上就可以正常运行了,但是我们可以假设一些场景来说明分布式的重要性facebook和Instagram等世界级网站每秒可能要承受几百万级别的访问

2021-08-04 16:25:24 183

原创 快来学习HTTPS

1.HTTPS简介1.1为什么要有HTTPS大家都应该知道HTTP报文是明文传输的,这也就意味着如果有人在你进行http传输的过程中截获了你的报文,那么Ta就可以获取到你和服务器之间进行交互的内容.这是一个很严重的问题.1.2什么是HTTPShttps可以看成是http的安全版本,它其实就是在http的基础上加了一个SSL(SecureSocket Layer).通过这个SSL对传输的数据进行加密.所以可以这么说https = http + ssl.1.3.HTTPS和HTTP的区别H

2021-05-09 20:30:42 470 1

原创 快进来学习HTTP协议

1.什么是HTTP协议HTTP协议全称是HyperText Transfer Protocol 超文本传输协议.是大家在上网是最经常遇到的协议,它指定了客户端和服务端进行交互的消息格式和步骤.请求消息就包括两个方面:“对什么进行操作”,“进行什么样的操作”.对什么进行操作就是指的URI (Uniform Resource Identifier统一资源标识符).进行什么样的操作就是指:HTTP方法,如get,post,delete,put等2.HTTP方法详解其中我们最常使用的就是get和p

2021-03-11 14:12:42 121 2

原创 SQL中的常见函数详细汇总

文章目录(一)单行函数1.字符函数2.数学函数3.日期函数4. 流程控制函数5.其他函数(二)分组函数单行函数:传一个值,得到一个值: length concat分组函数:传一组值,得到一个值:sum,max,min(一)单行函数单行函数又可以分为:字符函数:length,concat,upper,lower,substr,instr,trim,lpad,rpad,replace,数学函数:round ,ceil, floor,truncate,mod日期函数:now,curdate

2021-01-25 18:18:56 451

原创 (1.1)浏览器生成HTTP消息--从浏览器到服务器的探索

本文将会将会介绍当你从浏览器输入一个字符串,或者点击一个东西的时候浏览器第一件做的事–生成HTTP请求.所以我们首先介绍一下HTTP协议.(一)什么是HTTP协议HTTP协议的全称是Hyper Text Transfer Protocol(超文本传输协议).它定义了客户端和服务器之间进行交互的消息内容和步骤.基本思路是这样的:1.1首先客户端向服务器发送请求消息,请求消息中包含了两个部分的内容:去哪里:就是指我们在地址栏中输入的URL做什么:就是我们想要做的事情,也被称为是方法附加信息:主要是

2021-01-16 18:53:49 274

原创 从浏览器到服务器综述

本文是本专栏的一个总结性的文章,本专栏通过从浏览器到服务器的这样一个过程生动活泼的介绍计算机网络中的种种知识.

2021-01-06 22:13:52 365 1

原创 数据传输的三种方式--计算机网络

本文介绍了网络中数据传输的三种方式,包括电路交换,报文交换,分组交换,并对它们的优缺点进行了总结和对比

2020-12-26 15:29:19 16596

原创 反射机制---java基础核心部分

反射机制—java基础核心部分java中的反射可以可以在程序运行时动态的获取类的各种详细信息,包括成员属性,成员方法,构造方法.从而操作类或者的属性和方法.是框架的灵魂所在1.获取对象的Class类JVM将类的字节码文件通过类加载器加载进内存然后就会生成一个对应的Class对象.获取到Class对象之后就可以进行各种操作了.有三种方式可以获取到Class对象.通过Class.forName()方法通过 类.class成员来获取通过 对象.getClass()来获取 // method

2020-12-12 22:18:02 101 2

原创 Volatile底层原理级别详解---Java多线程

本文介绍了volatile关键字的作用,以及其如何保证可见性和有序性.并解释了为什么不能保证原子性.

2020-12-06 14:50:56 233

原创 java对象中的内存布局详解--Java虚拟机

本文介绍了一个java对象在JVM中的存储布局是什么,并依次对对象头,实例数据,对齐填充进行较为详细的介绍.

2020-11-18 20:31:02 149

原创 深入浅出设计模式(Design Pattern)----策略模式(Strategy Pattern)

深入浅出设计模式(Design Pattern)----策略模式(Strategy Pattern)这是设计模式开篇,我觉得策略模式真的对我来说是一种醍醐灌顶的感觉.让我感觉:哇,真的诶,用这种设计模式真的可以方便很多,代码的层次结构更清晰.下面就让我们开始吧.策略模式:策略模式定义了算法族,分别将其封装起来,让他们之间可以相互转换,这个模式使得算法的变化独立于使用算法的客体. 但是严谨的定义通常是难以理解的,接下来我们通过一个故事,来深刻理解这种设计模式的使用场景和强大之处吧(以下例子来自Head

2020-11-16 21:54:56 597

原创 判断一个对象是否死亡---Java虚拟机

垃圾收集器要对内存中的内容进行垃圾清理,那么哪一些东西是应该被回收的呢?这篇文章就介绍了堆和方法区中如何判断一个对象是否应该被回收

2020-11-15 21:08:24 137

原创 JVM中一个对象的产生过程---Java虚拟机

JVM中一个对象的产生过程在一个java程序中创建一个对象仅仅是使用一个new关键字,在给构造函数必要的参数好了,但是在JVM中发生的事远远不止于此,下面我们就来探索一下JVM中一个对象的创建需要经历哪些过程.分析如下图1.信息检查阶段在JVM遇到new关键字的时候,首先检查是否可以在方法区的常量池中定位到一个符号引用(既检查是不是有满足参数的函数),然后检查这个符号代表的类是否已经被加载过了(查看是不是有这样一个类).2.内存分配当对对象进行必要的检查之后就需要对该对象分配空间,因为一个类

2020-11-15 15:11:36 166

原创 Java运行时数据区域简介与分析

Java运行时数据区域简介Java虚拟机在执行Java程序的时候会将它管理的内存区域分为若干个不同的数据区域.这些区域都有自己的用途,创建和销毁时间.可以看到运行时数据区域主要分为5个部分:方法区,堆,虚拟机栈,本地方法区,程序计数器. 其中前两个 方法区和堆是所有线程共享的.而后面三个是线程独享的.1.程序计数器(Program Counter Register,PC)相信学过计算机组成原理的同学对PC应该是不陌生,和硬件层次的PC类似**,JVM中的PC也是用来控制当前线程的执行流程**.

2020-11-15 12:53:37 160

原创 Java多线程学习之路(四)---死锁(DeadLock)

多线程中死锁的概念,产生的必要条件,以及对于死锁的解决方案

2020-11-07 17:23:55 216

原创 Java多线程学习之路(三)---解决共享资源问题线程同步和锁

本文介绍了java中多线程并发编程可能产生的问题,以及通过同步机制解决的方案.

2020-11-07 17:19:41 358

原创 Java多线程学习之路(二)---相关类和方法详解

本文介绍了java中线程类的创建,Thread类的相关方法,线程之间的状态转换,以及执行器executor

2020-11-07 17:16:37 157

原创 注释---一把双刃剑

为什么要有注释呢?注释其实一把双刃剑,那怎么样避免垃圾的注释,哪些注释又是需要的呢?快来看看吧

2020-11-04 16:50:10 130 1

原创 Java多线程学习之路(一)--常见概念介绍

本文用通俗的语言简单的介绍了java多线程中的常见概念,包括线程,进程,线程的分类,多线程编程的优点,并行和并发关系和差异,线程的状态,线程池和锁的概念

2020-11-01 23:21:35 116

原创 1. Two Sum解决及其优化(Java语言版本)

1. Two Sum解决及其优化(Java语言版本)1.Descriptiondescription:Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.You may assume that each input would have exactly one solution, and you may not

2020-10-24 08:58:27 171

原创 逆波兰式的产生及计算(C++/Java)---编译原理

编译原理中利用栈这种数据结构将中缀表达式转换成后缀表达式,即逆波兰表达式,并计算其结果.

2020-10-20 12:44:22 6907 1

原创 数据库的三级模式和两级映射--简单介绍

用具体的例子来形象解释数据库的三级模式和两级映射,以及数据的物理独立性和逻辑独立性

2020-09-25 16:36:22 8457 3

原创 函数---代码整洁之道

函数—代码整洁之道函数是一个程序中最小的功能单位,如何写好一个函数是至关重要的.一.短小精悍,目标明确的函数短小的函数一个函数是一个完整的逻辑片段,如果一个函数承载了过多的功能,那么无论是后期的修改和阅读都会十分的困难.如果一个函数因为承担了过多的功能而无奈的太长.那么当你需要修改或者扩展的时候就会因为找不到对应的代码块而挠头抓耳.特别是你变量的命名也特别糟糕时候.所以一个优秀函数不应该超过二十行.只做一件事**一个函数应该只做一件事,并且把它做好.**这样的函数有两个显著的好处:代码在

2020-09-21 23:29:25 2051 1

原创 C语言词法分析器--编译原理

C语言词法分析器(C++语言实现)这是老师布置的编译原理的实验课任务,课余时间花了近一个星期的时间去编写代码(主要是C++太久没有用了,好多函数都不熟悉,查阅了很多资料),这次的词法分析没有语法错误判断功能,如果想要增加功能可以在相关函数代码段增加即可.c语言词法分析流程如图所示:代码如下:这次的代码算是我对代码整洁之道前期知识的一个练习,特别是变量的命名以及函数的编写,如果觉得写的不错可以看看我关于代码整洁之道的相关文章这次的代码基本没有写注释,但是我相信大家结合流程图也能看懂,如果觉得太长

2020-09-21 23:24:06 7298 1

原创 C语言词法分析器(C++语言实现)

C语言词法分析器(C++语言实现)这是老师布置的编译原理的实验课任务,课余时间花了近一个星期的时间去编写代码(主要是C++太久没有用了,好多函数都不熟悉,查阅了很多资料),这次的词法分析也没有语法错误判断功能,如果想要增加功能可以在相关函数代码段增加即可.对于此法单元的种别码也只是简单区分,不过自己加上去就可以了c语言词法分析流程如图所示:代码如下:这次的代码算是我对代码整洁之道前期知识的一个练习,特别是变量的命名以及函数的编写,如果觉得写的不错可以看看我关于代码整洁之道的相关文章这次的代码基

2020-09-20 23:29:45 6381

原创 有意义的命名--代码整洁之道

有意义的命名—代码整洁之道命名是一个非常重要的环节,因为可以说在编程过程你一定逃不过命名:变量名,函数名,类名,文件名.所以要好好取一个名字名副其实,把东西说清楚这条规则顾名思义就是要名字要说清楚这个东西是什么,比如:不要使用不常见的缩写 如:gendmy(按照 day month year 的格式来生成 generate 日期,这除了自己谁看的懂)尽量不要使用单字符 如:a,b,i,j,k,a1,a2不要使用拼音,遇到不知道的可以查字典 如:shuben变量名和类名应该使用名词词组来说

2020-09-09 15:38:19 1930

原创 代码整洁之道(clean code)序

代码整洁之道(clean code)序为什么要写出一手整洁的代码我可以说是对自己coding水平要求比较高的那种类型,不是说代码能跑起来就ok了,总是希望自己的代码就像诗一样的优美,让人读起来赏心悦目.自己也深受劣质代码之苦,我自己可以说在班上水平还算不错,所以常常会有同学或者是学弟学妹们来问我题目,当他们把代码拿给我看的时候,绝大多数的都可以称得上是灾难级别的.比如函数名或者变量全是abc+数字,不知道这段代码是要干什么(事实上我初期的代码也都是这样).我目前理解的clean code逻辑

2020-09-09 15:36:11 1883

原创 有穷自动机(Finite Automate)及其分类和转化

有穷自动机(Finite Automate)及其分类和转化自我理解有穷自动机在我目前浅薄的知识看来就是在词法分析阶段对程序中所有出现的单词进行逐一判断和分类,如果一个单词能被某个有穷自动机接收的话,那么它就是某一类单词,如果所有有穷自动机都不能接收它的话,它就不符合语法有穷自动机分类虽说有穷自动机有分类,但是他们其实是可以相互转换的.确定的有穷自动机(Deterministic finite automate,DFA)不确定的有穷自动机(Nondeterministic finite au

2020-08-24 11:57:14 2428

原创 正则表达式

正则表达式正则表达式是一种用来描述正则语言更紧凑的方法.正则表达式可以由较小的正则表达式按照特定规则递归地构建。每个正则表达式 r定义(表示)一个语言,记为L®。这个语言也是根据r的子表达式所表示的语言递归定义的正则文法和正则表达式等价正则文法和正则表达式等价...

2020-08-18 11:01:56 1825

原创 上下文无关文法的分析树(Context-Free Grammar, CFG)的分析树--编译原理

上下文无关文法的分析树(Context-Free Grammar, CFG)的分析树分析树根节点的符号为文法开始符号S每个内部节点都是对某个产生式A→β的应用,该节点的标号就是产生式的左部,子节点从左往右构成了产生式的右部.叶子节点的标号既可以是终结符,也可以是非终结符,把一棵树的叶子节点从左往右的排列得到的符号称为这棵树的产出或者是边缘.句型的短语短语:给定一个句型,其分析树的每一颗子树的边缘称为该句型的一个短语如果子树的高度为2(只有父子两代节点),那么该子树的边缘就称为该句型的直

2020-08-17 10:55:10 2894

原创 文法的分类---编译原理

编译原理中文法的分类及它们之间的关系

2020-08-17 10:16:10 1923

原创 语言的定义——编译原理

什么是编译原理中的推导和规约,句型和句子,语言的形式化定义

2020-08-17 09:18:38 3582

空空如也

空空如也

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

TA关注的人

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