自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 内存的扩充(覆盖技术和交换技术的设计思想)

首先,我们要先了解清楚的问题是,为什么会出现内存扩充?这个可以思考一下好,开始正文:覆盖技术:早起的计算机内存很小,比如IBM推出的第一台PC机最大只支持1MB大小的内存。因此经常会出现内存大小不够的情况。后来人们引入了覆盖技术,用来解决”程序大小超过物理内存总和”的问题覆盖技术的思想:就是将程序分为多个段(多个模块),常用的段常驻内存,不常用的段的需要调入内存。内存中分为一个固定区 和若干个覆盖区常用的段呢存储在固定区,调入后就不会再调出(除非结束运行)不常用的段放在覆

2020-09-25 10:47:30 1571

原创 泛型小助手-通配符(?)

泛型通配符虽然通配符给我们解决了一系列强制转换所带来的安全隐患,但是从另外一个角度来讲,泛型也带来了一些新的问题:引用传递处理范例:观察问题的产生public class Message<T> { private T content; public T getContent() { return content; } public void setContent(T content) { this.content

2020-09-23 14:48:52 193

原创 内存管理(指令,地址,装入,链接等)

内存的基础知识什么是内存,有何作用存储单元内存地址进程运行的基本原理,内存起到什么作用指令的工作原理逻辑地址vs物流地址(绝对地址)从写程序-->程序运行三种链接方式三种装入方式什么是内存,有何作用存储单元内存地址以上两张图呢,其实就生动形象可以来描述内存,内存是什么呢?其实内存就是用于存放数据的硬件。程序执行前,需要先把程序放到内存中才可以执行。从上面这张图中呢,就可以生动形象的理解什么是内存。内存简单可以理解为:地址+存储单元好比我们进行住宿的时候,如何可以知道住在哪呢,那就会

2020-09-22 17:25:58 1984

原创 关于时间片轮转算法

关于时间片轮转算法时间片轮转算法含义基本原理时间片大小的确定调度方式(可抢夺,抢占)调度时机特点时间片轮转算法含义时间片轮转调度算法是一种最古老,最简单,最公平的且使用最广的算法。每个进程被分配一个时间段,称作它的时间片,即该进程允许进行的时间。如果在时间片结束时进程还在运行,则cpu将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则cpu当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完他的时间片后,就被移动到队列的末尾。在进行时间片时间设计的时候,其实也是有讲究的,

2020-09-20 19:03:14 10031

原创 计算机操作系统概述OS

计算机操作系统概述计算机系统概述从控制方式来看操作系统从应用领域看操作系统资源管理的视角来看操作系统管理计算机系统的软硬件资源控制程序执行的视角来看操作系统多道程序同时计算的宏观分析多道程序设计及优点计算机系统概述OS是计算机系统最基础的系统软件,管理软硬件资源,控制程序资源,改善人机界面,合理组织计算机工作流程,为用户使用计算机提供良好的运行环境。操作系统:换句话来说:操作系统是方便用户、管理和控制计算机软硬件资源的系统程序集合。从用户角度看:OS管理计算机系统的各种资源,扩充硬件的功能,控制

2020-09-13 18:30:40 1138

原创 SRAM与DRAM的前生今世

SRAM与DRAM的前生今世SRAM与DRAMSRAM与DRAM区别?SRAM会什么比DRAM贵呢?SRAM与DRAMSRAM与DRAM区别?静态随机存取存储器(Static Random-Access Memory,SRAM) 和 动态随机存取存储器(Dynamic Random Access Memory,DRAM) 是不同类型的RAM,具有不同水平的性能和价格,都在当今的SSD技术中发挥着关键作用。从名字上看,SRAM与DRAM的区别只在于一个是静态一个是动态。由于SRAM不需要刷新电路就能够保

2020-09-13 11:36:49 1564

原创 畅游计算机存储层次结构

计算机存储层次结构了解一波硬件存储存储结构层次概况了解一波硬件存储如果CPU爱好哲学,它可能会问自己两个问题,我要运算的数据能哪里来?运算好的数据,又要去往哪里?这在计算机当中确实是非常重要的问题,这恰恰就是存储器了。存储结构层次概况这是我们非常熟悉的冯·诺依曼计算机结构, 那这其中哪些部件和存储功能有关呢? 存储器自然会是一个,而外部记录介质也是带有存储功能的。 这两个都比较明显,另外还有一个也带有存储功能那就是运算器。 因为CPU当中的通用寄存器是包含在运算器当中的, 通用寄存器中也是用来存放

2020-09-13 11:06:52 360

原创 冯.诺依曼计算机结构要点

冯诺依曼计算机结构冯诺依曼和<关于EDVAC的报告草案>该报告所描述的计算机结构,即为“冯诺依曼计算机结构”,简称呢就是冯诺依曼结构冯诺依曼和《关于EDVAC的报告草案》1.长度101页,未完稿2.论述了两个重要设计思想(1)存储程序(而不是开关连线)(2)二进制(而不是十进制)明确了计算机的五个部分 运算器 CA central arithmetical 控制器 CC central control 存储器 M memory...

2020-09-10 00:33:26 5259

原创 聊一聊JWT(JSON WEB TOKEN)鉴权

JWT 定义:Json web token 是一个开发标准,它定义了一种紧凑且自包含的方式,用于在各方之间安全地将信息作为json对象传输。由于此信息是经过数字签名的,因此可以被验证和信任。可以使用密钥(HMAC算法)或使用RSA的公/私钥对JWT进行签名。了解下定义的一些概念:紧凑:由于其大小,它可以通过url,post参数或Http表头发送。另外,由于其内存空间较小,其传输速度很快。自包含:有效负载包含有关用户的所有必须信息,以避免多次查询数据库或者查询相关缓存带来的相关性...

2020-08-31 20:54:13 534

原创 来来来,引人深思的二阶段提交协议2PC

分布式理论 2pc协议 二阶段提交协议为了使系统尽量能够达到CAP,也是有了BASE协议,而Base协议是在可用性和一致性之间做的取舍和妥协。也就是说,我们在对分布式系统进行架构设计的过程中,往往需要我们在系统的可用性和数据一致性之间反复的权衡。于是就有一些非常经典的算法和协议,大家知道的,基本就是二阶段提交协议和三阶段提交协议,Paxos算法等。什么是2PC在分布式系统中,会有多个机器节点,每一个机器节点虽然能够明确的知道自己在进行事务操作过程中的结果是成功或者失败,但无法直接获取..

2020-08-27 20:58:03 250

原创 分布式事务以及背后的思考CAP理论和BASE理论

分布式事务在单机数据库中,我们很容易能够实现一套满足ACID特性的事务处理系统,在在分布式数据库中,数据分散在各台不同的机器上,如何对这些数据进行分布式的事务处理具有非常大的挑。分布式事务是指事务的参与者、支持事务的机器、资源服务器以及事务管理器分别位于分布式系统的不同节点上,通常一个分布式事务中会涉及对多个数据源或业务系统的操作。可以想象一下典型的分布式事务场景:例子:一个跨银行的转账操作设计调用两个异地的银行服务,其中一个是本地银行提供的取款服务,另一个则是目标银行提供的存款服务,这两个

2020-08-24 21:19:17 195

转载 从内存来理解字符串String的修改奥秘

内存层面上深入了解String类型数据的存储方式,并深刻体悟频繁修改String数据带来的内存负担String对象常量池对象池的主要目的是实现数据的共享处理。以String对象池为例,里面的对象主要就是为了重用,而重用实际上就属于共享设计,但是在Java之中对象池实际上可以分为两种:静态常量池:指的是程序(*.class)在加载的时候会自动将此程序之中保存的字符串、普通的常量、类和方法的信息等等,全部进行分配。 运行时常量池:当一个程序(*.class)加载之后,里面可能有一些变量,这个时候提

2020-08-24 16:48:06 387

原创 分布式一致性背景和理解

分布式一致性概念分布式一致性是一个相当重要且被广泛探索与论证的问题,下面从下面三个业务厂场景简单了解下一致性的概念1.购买火车票假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然后拿着车票去检票口,再坐上火车,开始了一段美好的旅行。想象一下,如果他选择的目的地是杭州,而某一趟开往杭州的高铁只剩下最后一张车票,可能在同一时刻,不同售票窗口的另一位乘客也购买了同一张车票。假如说售票系统没有进行一致性的保障,这个时候,两个人都进行了购票,而在检票口进行检票的时候.

2020-08-20 16:05:39 310

原创 搞一波分布式系统定义与面临的问题

分布式系统定义与面临的问题分布式环境的各种问题:通信异常网络分区三态节点故障分布式系统定义:分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。上面这个简单的定义涵盖了几乎所有有效地部署了网络化计算机的系统。通俗的理解,所谓分布式系统,就是一个业务拆分成多个子业务,分布在不同的服务器节点,共同构成的系统成为分布式系统,同一个分布式系统中的服务器节点在空间部署上可以随意分布的,这些服务器可能放在不同的机柜中,也可能在不同的.

2020-08-18 21:31:37 321

原创 Dubbo前世今生

在学习dubbo之前,需要知道的是为什么产生这个东西,产生的意义何在,解决了什么问题,有什么优点,和其他类似的又有什么缺点,在了解清楚这些内容后,对整体的学习这个东西是非常有帮助的下面就了解一下:随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已经无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。单一应用架构:当网站流量很小的时候...

2020-04-05 17:12:51 200

原创 Dubbo剖析:(一)服务导出

服务导出主要从以下几个方面来阐述:1.服务导出的目的2.服务导出的入口3.服务导出几个关键的概念4.服务导出的流程一:服务导出的目的服务导出,其实就可以简单理解为服务暴露。服务提供者向注册中心注册服务,将服务实现类以服务接口的形式提供出去,这样可以就可以让服务消费者从注册中心中查看并订阅以及调用服务。服务导出还有导出到本地和导出到远程两块内容,那就出现了直连和通过注册中...

2020-04-05 17:04:26 387

原创 Spring IOC容器的设计

IOC相关接口类实现和继承关系图:1.从接口BeanFactory到HierarchicalBeanFactory,再到ConfigurableBeanFactory,是一条主要的BeanFactory设计途径。在这条设计途径中,Beantory接口定义了基本的IoC容器的规范。在这个接口定义中,包括了getBean()这样的IoC容器的基本方法(通过这个方法可以从容器中取得bean)。而...

2020-03-08 22:59:21 163

原创 Servlet生命周期

Servlet生命周期Servlet生命周期可被定义为从创建到毁灭的整个过程。Servlet通过调用init()进行初始化。 Servlet调用service()方法处理客户端的请求 Servlet通过调用destory方法终止结束 Servlet是由JVM的垃圾回收器垃圾回收的1.init()方法init()方法被设计成只调用一次。它在第一次创建Servlet时被调用,在后续...

2020-02-06 16:44:10 136

原创 Servlet简介

Servlet是什么?Java Servlet是运行在web服务器或应用服务器上的程序,它是作为来自web浏览器或其他Http客户端的请求和Http服务器上的数据库或应用程序之间的中间层。使用Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,可以动态创建网页。Java Servlet通常情况下与使用CGI(Common Gateway Interface...

2020-02-06 16:21:28 314

原创 Spring事务

那么什么是事务属性呢?事务属性可以理解成事务的一些基本配置,描述了事务策略如何应用到方法上。事务属性包含了5个方面,如图所示:事务属性:传播行为,隔离规则,是否只读,回滚规则,事务超时传播行为:事务的第一个方面是传播行为(propagation behavior)。当事务被另一个方法调用时,必须指定事务应该如何进行传播,eg:方法可能继续在现有事务中进行,也可能开启...

2019-09-17 15:38:57 142

原创 Synchronized 关键字的一些理解

简单介绍一下Synchronized 关键字的一些理解synchronized关键字最主要的三种使用方式的总结:1.修饰实例方法:作用于当前对象实例加锁,进入同步代码前要获得当前对象的锁。2.修饰静态方法:作用于当前类对象加锁,进入同步代码前需要获取当前类对象的锁。也就是给当前类加锁,会作用于类的所有实例对象,因为静态成员不属于任何一个实例对象,是类成员(static表明这是一个该...

2019-09-07 14:40:38 186

原创 Redis常用技术

Redis设置过期时间Redis中有个设置时间过期的功能,即对存储在Redis中的值可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。如我们一般在项目中的一些token session或者一些其他的登录信息,或者短信验证码,按照传统的数据库处理方式,我们需要自己判断是否过期,这样肯定会影响项目的性能。我们 set key 的时候,都可以给一个 expire time,就是过期时...

2019-09-04 22:39:03 387 1

原创 Redis的线程模型 性能

Redis 的线程模型Redis内部使用文件事件处理器(file event handler),这个文件事件处理器是单线程的,所以redis才叫做单线程模型。它采用IO多路复用机制同时监听多个Socket(多路复用涉及到IO的知识点,有兴趣可以进行了解和学习,很多的中间件通讯方式都是基于IO来实现的),根据socket上的事件来选择对应的事件处理器来进行处理。文件事件处理器的结构...

2019-09-04 22:03:20 147

原创 为什么要用Redis做缓存

Redis的简介简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。 为什么要Redis做缓存?...

2019-09-04 21:53:37 3311

原创 Stack(栈) 详细介绍(源码分析)

从下面三个层面去分析1.Stack的简介2.Stack的数据结构3.Stack的源码分析4.Stack的示例在这篇博客中(进入Vector详细介绍)已经学习Vector,从数据结构这一节,可以看到Stack是继承于Vector的,所以学习Stack更容易学习和理解了,想要学习Stack肯定首先把Vector搞清楚,那么学习起来这一章节就很简单了。只是提供了Stack特有的...

2019-08-31 13:51:13 187

原创 Vector 详细介绍(源码分析)

主要以下层面去分析VectorVector介绍Vector架构设计(数据结构)Vector源码分析Vector遍历方式,性能,示例Vector介绍Vector简介Vector 是矢量队列,它是JDK1.0版本添加的类。继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口。Vector 继承了AbstractLis...

2019-08-30 17:48:06 297

原创 集合框架 LinkedList分析

大纲:第一部分:简介第二部分:LinkedList数据结构第三部分:LinkedList源码分析第四部分:LinkedList遍历方式第五部分:示例第一部分:简介LinkedList是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList实现List接口,能对它进行队列操作。L...

2019-08-25 15:26:48 151

原创 集合框架 fail-fast机制(通过ArrayList来说明fail-fast的原理、解决办法)

第一部分:fail-fast简介第二部分:fail-fast示例第三部分:fail-fast解决方法第四部分:fail-fast原理第五部分:解决fail-fast的原理说明第一部分:fail-fast简介fail-fast机制是Java集合(collection)中的一种错误机制。当多个线程对同一个集合的内容(也就是数据)进行操作时,就可能会产生fail-fast...

2019-08-24 23:35:37 397

原创 集合框架 总体架构

Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)。Java集合工具包框架图(如下):大致说明:看上面的框架图,先抓住它...

2019-08-24 21:13:59 440

原创 Kafka Provider(生产者)(二)API 样例

kafka生产者的三种方式(不同业务场景使用不同的生产方式)(后续在总结梳理)三种发送方式1.发送并忘记 :把消息发送到服务器,但是并不关心它是否到达。大多数的情况下,消息会正常到达,因为kafka是高可用的,而且生产者会自动尝试重发。不过使用这种方式有时候也会丢失一些数据。2.同步发送我们使用send()方法发送消息,它会返回一个future对象,调用get()方法...

2019-08-23 21:34:46 260

原创 AarrayList优缺点

Arraylist优点(查询快,增删慢)ArrayList缺点(增删慢,查询快)其实想要明白这两点也比较简单,那就是对数据结构(数组有一个了解),每个数据结构都有它自身的时间空间复杂度,这就表示着效率问题类似于O(1),O(n),O(logn)这些就是复杂度,还有就是Java实现方式层面,本篇就从这几个层面来讲效率性能问题第一部分 :数组(数据结构)在数据结构一书中提到:数组可...

2019-08-18 20:23:08 1304

原创 集合框架ArrayList 源码分析(二)

Arraylist介绍ArrayList数据结构ArrayList源码解析ArrayList遍历方式toArray()异常第一部分:Arraylist介绍ArrayList 的简介ArrayList是一个数组队列,底层使用的数据结构存储数据就是数组,相当于动态数组。与Java中的数组相比,它的容量能动态扩容,它继承于AbstractList,实现了List, Rand...

2019-08-18 19:14:07 153

原创 集合框架ArrayList 源码分析(一)

今天来分析一下Arraylist的一些源码解读,看一些源码以及学习一下设计者的思想我认为是很有必要的。下面先分享一下官方文档,这也就是作者(设计者)所描述的一些注意点和思想,现在先简单介绍一下:后续会把一些自己的梳理和总结都会放到上面,希望大家可以共同进步,下面步入正题:/** * 这是一个实现了list接口的可变长度的数组。实现所有可选列表操作,并允许存放所有元素,包括null...

2019-08-17 17:18:42 168

原创 kafka安装后命令测试创建消费者报错 zookeeper is not a recognized option

创建消费者命令,并进行消费: .\bin\windons\kafka-console-consumer.bat --zookeeper localhost:2181 --topic 主题名通过此命名报如下错误:出现了上述图片问题,导致这个问题的原因,应该kafka版本较高的问题,0.90版本以后在启动的时候--zookeeper是一个过时的方法,在0.90版本之后,最新的...

2019-07-03 19:16:35 655

原创 Kafka Provider(生产者)(一)概览

kafka作为一个分布式消息中间件,必然有优势所在,下面简单说一下kafka的生产者的一些内容,下面章节将告知如何创建生产者以及生产者的一些配置kafka生产者的发送顺序:1.从创建一个ProducerRecord对象开始,需要包含目标主题和要发送的内容,我们可以指定键和分区,才能发送ProducerRecord对象时,生产者要先把键和值对象序列化成字节数组,这样才能在网络上传输2...

2019-07-03 14:44:24 306

原创 kafka与zk的关系(一)

一个典型的kafka集群中包含若干个Producer,若干个broker(一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个zk集群,kafka通过zk管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance。Producer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅并消...

2019-06-25 21:22:03 11667

原创 理解Java线程池以及线程池的如何使用

前言:多线程的异步执行方式,虽然能够最大限度的发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担,线程本身也要占用内存空间,大量的线程会占用内存资源,并且可能会导致OutofMemory,即便没有这样的情况,大量的线程回收也会给GC带来很大的压力,为了避免重复的创建线程,线程池的出现可以让线程直接进行复用。通俗点讲,当有工作任务过来时,就会想线程池拿一个线程,当工作完成后,并不是...

2019-06-09 17:29:03 277

原创 Mysql的SQL优化手段

近日整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:sele...

2019-06-06 17:49:44 361

转载 Spring Ioc初始化过程

https://www.cnblogs.com/chenjunjie12321/p/6124649.html

2019-04-12 18:06:31 1000

原创 Spring Ioc容器的设计理解

Spring ioc容器的设计主要是基于BeanFactory和ApplicationContext两个接口,其中ApplicationContext是BeanFactory的子接口之一,换句话说BeanFactory是spring ioc容器所定义的最底层接口,而ApplicationContext是其高级接口之一,并且对BeanFactory功能做了许多有用的扩展,所以在绝大部分的工作场景下,...

2019-04-12 17:50:24 368

空空如也

空空如也

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

TA关注的人

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