自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 盒子模型-宽度计算

总结:在标准文档模式下,所有的浏览器(IE6及之后的)的行为都是统一的,即绝大多数元素的宽度等于内容区宽度。设置补白和边框会直接增加此元素的视觉上的宽度,是在内容区宽度的基础上增加。另外到绝大多数浏览器可以通过box-sizing这个css属性来控制宽度计算的模式。参考资料-CSS参考手册:box-sizing:content-box | padding-box | border-box默认值:content-box取值:content-box:padding和border不被包

2020-05-31 23:17:01 2867

转载 CSS-float

转自:https://zhuanlan.zhihu.com/p/62658484div+css布局,是前端开发人员的核心技能,在工作中占很大的比重。良好的前端布局是进行javascript书写和互的基础,足见布局的重要性,今天我们就讲讲css布局的基石-float。可以说,没有浮动,就谈不上布局了。1、float的产生互联网产生从一开始到日渐壮大,期间借鉴了大量印刷排版的理念和技术,比如一开始互联网的发明,就是将文档电子化互相链接。而后的table布局的发明,也是印刷专家完成的,直到css出

2020-05-25 23:03:31 305

转载 Java语言跨平台和JVM的理解

1、什么是平台Java是可以跨平台的编程语言,那我们首先得知道什么是平台,我们把CPU处理器与操作系统的整体叫平台。CPU大家都知道,如果计算机是人,那CPU就是人的大脑,它既负责思维运算,又负责身体各部件的命令控制。CPU的种类很多,除去我们熟知的Intel与AMD外,还有比如上面说到的SUN的Sparc,比如IBM的PowerPC等等,这些各个公司生产的CPU使用或相同或不同的指令集。指...

2019-07-12 23:43:32 309

转载 GC工作机制概述

GC如其名,就是垃圾收集,当然这里仅就内存而言。Garbage Collector(垃圾收集器)以应用程序的root为基础,遍历应用程序在Heap(堆)上动态分配的所有对象,通过识别它们是否被引用来确定哪些对象是已经死亡的、哪些仍需要被使用。已经不再被应用程序的root或者别的对象所引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收(回收的是该对象占用的内存空间)。这就是GC工作的原理。为了实...

2019-07-12 22:27:05 909

原创 GC以及堆,栈的简述

堆,栈都是java用来在RAM中存放数据的地方一、堆(1)Java的堆是一个运行时数据区,存储的是数组和对象(其实数组就是对象),凡是new建立的都是在堆中,堆中存放的都是实体(对象),实体用于封装数据,而且是封装多个(实体的多个属性),如果一个数据消失,这个实体也没有消失,还可以用,所以堆是不会随时释放的,但是栈不一样,栈里存放的都是单个变量,变量被释放了,那就没有了。堆里的实体虽然不会...

2019-07-12 17:55:14 699

转载 java内存模型

为什么要有内存模型在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情。要说计算机的内存模型,就要说一下一段古老的历史,看一下为什么要有内存模型。内存模型,英文名Memory Model,他是一个很老的老古董了。他是与计算机硬件有关的一个概念。那么我先给你介绍下他和硬件到底有啥关系。CPU和缓存一致性我们应该...

2019-05-14 17:17:21 158

转载 分布式锁,进程锁,线程锁

摘要:在分布式集群系统的开发中,线程锁往往并不能支持全部场景的使用,必须引入新的技术方案分布式锁。 线程锁,进程锁,分布式锁 线程锁:大家都不陌生,主要用来给方法、代码块加锁。当某个方法或者代码块使用锁时,那么在同一时刻至多仅有有一个线程在执行该段代码。在分布式集群系统的开发中,线程锁往往并不能支持全部场景的使用,必须引入新的技术方案分布式锁。线程锁,进程锁,分布式锁线程锁:大家都不...

2019-05-10 15:07:32 412

原创 Java锁的可重入性(Reentrancy)

java锁的可重入性机制可以解决下面这个问题,直接上代码:public class Demo1 { public synchronized void functionA(){ System.out.println("iAmFunctionA"); functionB(); } public synchronized void funct...

2019-05-10 14:18:41 1468

转载 分布式锁-实现方式

目前主流的有三种,从实现的复杂度上来看,从上往下难度依次增加:基于数据库实现基于Redis实现基于ZooKeeper实现基于数据库实现:基于数据库来做分布式锁的话,通常有两种做法:基于数据库的乐观锁基于数据库的悲观锁我们先来看一下如何基于「乐观锁」来实现:乐观锁机制其实就是在数据库表中引入一个版本号(version)字段来实现的。当我们要从数据库中读取数据的...

2019-05-10 09:05:08 147

转载 分布式锁原理以及redis,zookeeper实现分布式锁的原理

1.首先分布式锁和我们平常讲到的锁原理基本一样,目的就是确保,在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法、变量。在一个进程中,也就是一个jvm 或者说应用中,我们很容易去处理控制,在jdk java.util 并发包中已经为我们提供了这些方法去加锁, 比如synchronized 关键字 或者Lock 锁,都可以处理。但是我们现在的应用程序如果只部署一台服务器,那并发量...

2019-05-09 06:56:28 178

原创 分布式事务-RMI

在客户端通过RMI调用服务方法,该操作将会执行数据库操作,问题是:我如何在客户端回滚服务方法执行的数据库操作?RMIServer有DB的操作RMIClient也有DB操作,想两者构成事务即,如:当Server上的DB操作后,Client的DB操作发现的异常,想回滚Server上的DB操作但是实现上这是两个客户端在访问事务性的资源。JTA事务是同一客户端同时访问多个事务性资源时,可以...

2019-05-08 11:20:29 302

原创 分布式事务-BASE理论

BASE理论BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结, 是基于CAP定理逐步演化而来的。BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当...

2019-05-07 16:23:06 1544

转载 分布式事务-CAP理论

转自:http://www.ruanyifeng.com/blog/2018/07/cap.html分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。本文介绍该定理。它其实很好懂,而且是显而易见的。下面的内容主要参考了 Michael ...

2019-05-07 16:16:09 158

转载 epoll的概述和原理

1. 简单概述---举个来自知乎的例子(可能也不是很形象):select/poll饭店服务员(内核)告诉饭店老板(用户程序):”现在有客人结账“但是这个服务员没人明确告诉老板,哪几桌的客人结帐。老板得自儿一个一个桌子去问:请问是你要结帐?epoll饭店服务员(内核)告诉饭店老板(用户程序):”1,2,5号客人结账“老板就可以直接去1,2,5号桌收钱了。2. 原理首先我们来定...

2019-04-17 11:27:39 257

原创 分布式-缓存(ehcache,redis,memcached)应用场景的比较

1.ehcacheehcache直接在jvm虚拟机中缓存,速度快,效率高,使用方便;但是缓存共享麻烦,集群分布式应用不方便。如果是单个应用或者对缓存访问要求很高的应用,用ehcache。2.Memcachedmemcached 是早些年各大互联网公司常用的缓存方案,但是现在近几年基本都是 redis,没什么公司用 memcached 了。存储格式是Key-Value模式,但是很遗...

2019-04-15 12:16:49 370

转载 分布式-缓存架构

在高并发场景下,需要通过缓存来减少数据库的压力,使得大量的访问进来能够命中缓存,只有少量的需要到数据库层。由于缓存基于内存,可支持的并发量远远大于基于硬盘的数据库。所以对于高并发设计,缓存的设计是必不可少的一环。一、为什么要使用缓存对于一家电商来讲,我们既希望存储越来越多的数据,因为数据将来就是资产,就是财富,只有有了数据,我们才知道用户需要什么,同时又希望当我想访问这些数据的时候,能够快...

2019-04-15 10:50:39 190

转载 分布式系统-简介

一,什么是分布式系统分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(加内存、加磁盘、使用更好的CPU)高昂到得不偿失的时候,应用程序也...

2019-04-14 20:42:42 350

原创 java-事务的特征

事务的简单表述:就是一个方法中设计到多个步骤,一旦有步骤跑出了异常,就会回滚前面的步骤,把数据库中做过的修改进行复原。ACID特性:1.原子性(Atomic)此事务涉及的所有操作都是不可分割的,这些操作要么全部执行,要么全都不执行。2. 一致性(Consistency)事务开始前后,数据具备一致性;具体可以认为是事务前后各种约束都还在(符合各种约束);这里我们举个大家...

2019-04-11 15:27:54 266

转载 Spring---七大核心模块

核心容器(Spring Core)  核心容器提供Spring框架的基本功能。Spring以bean的方式组织和管理Java应用中的各个组件及其关系。Spring使用BeanFactory来产生和管理Bean,它是工厂模式的实现。BeanFactory使用控制反转(IoC)模式将应用的配置和依赖性规范与实际的应用程序代码分开。应用上下文(Spring Context)  Sprin...

2019-04-09 14:35:28 179

转载 java-序列化以及反序列化

对象序列化是一个用于将对象状态转换为字节流的过程,可以将其保存到磁盘文件中或通过网络发送到任何其他程序;从字节流创建对象的相反的过程称为反序列化。而创建的字节流是与平台无关的,在一个平台上序列化的对象可以在不同的平台上反序列化。Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。将序...

2019-04-09 10:15:02 237

原创 什么是死锁以及避免死锁

一、定义  线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程进入对象的synchronized代码块时,便占有了资源,直到它退出该代码块或者调用wait方法,才释放资源,在此期间,其他线程将不能进入该代码块。当线程互相持有对方所需要的资源时,会互相等待对方释放资源,如果线程都不主动释放所占有的资源,将产生死锁。当然死锁的产生是必须要满...

2019-04-09 06:56:23 313

转载 Thread类的sleep()方法和对象的wait()区别

概括:1. sleep()方法是线程类Thread的静态方法,调用该方法使线程暂停执行指定的时间,将CPU让给其他线程,并不释放所持有的对象锁,休眠时间结束后线程回到就绪状态。2. wait()是Object类的方法,调用wait()方法,线程释放所持有的对象锁,进入等待池中,只有调用notify()方法(或者notifyAll()方法),才能唤醒等待池中的线程进入等锁池,若线程获得对象的...

2019-04-08 17:40:11 1435

原创 线程 && 进程

1、进程进程是指运行中的应用程序,每一个进程都有自己独立的内存空间。一个应用程序可以同时启动多个进程。例如对于IE浏览器程序,每打开一个IE浏览器窗口,就启动了一个新的进程。2、线程是指进程中的一个执行流程,有时也称为执行场景。一个进程可以由多个线程组成,即一个进程中可以同时运行多个不同的线程,它们分别执行不同的任务。3、线程和进程的主要区别在于:每一个进程都需要操作系统为其分配独立的...

2019-04-07 22:57:10 136

原创 并行和并发的区别

并发,是在同一个cpu上同时(不是真正的同时,而是看来是同时,因为cpu要在多个程序间切换)运行多个程序。并行,是每个cpu运行一个程序。打个比方,并发,就像一个人(cpu)喂2个孩子(程序),轮换着每人喂一口,表面上两个孩子都在吃饭。并行,就是2个人喂2个孩子,两个孩子也同时在吃饭。...

2019-04-07 21:26:56 146

转载 java-确保集合不能被修改

转自:https://www.jianshu.com/p/89e776373d89在公司接触到Collections.unmodifiableList(List<? extends T> list)) 觉得用法挺特殊的,所以学习了下,简单而言,看名字就知道,将参数中的List返回一个不可修改的List.觉得以下这篇文章写得很好,说 明了它的应用场景。在《重构——改善既有代码的...

2019-04-07 17:25:38 2442

原创 Java 集合 类图

MapCollection:包括 List 和 Set线程安全(Thread-safe)的集合对象:Vector 线程安全: HashTable 线程安全: StringBuffer 线程安全非线程安全的集合对象;ArrayList : LinkedList: HashMap: HashSet: TreeMap: TreeSet: StringBulide...

2019-04-07 16:58:59 242

原创 java中Array和ArrayList区别

(1)ArrayList是Array的复杂版本ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。(2)存储的数据类型ArrayList却只能包含对象类型,而Array数组可以包含基本类型和对象类...

2019-04-07 16:34:12 342

转载 Java中HashMap的实现原理

转自:https://www.cnblogs.com/yuanblog/p/4441017.html一、Java中的hashCode和equals1、关于hashCodehashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的 如果两个对象相同,就是适用于equals(java.lang.Obje...

2019-04-07 15:54:58 144

原创 HashMap和Hashtable区别

HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题。HashMap的工作原理、ArrayList与Vector的比较以及这个问题是有关Java 集合框架的最经典的问题。Hashtable是个过时的集合类,存在于Java API中很久了。在Java 4中被重写了,实现了Map接口,所以自此以后也成了Java...

2019-04-07 12:42:33 130

原创 java-java集合

Set,List,Map的区别

2019-04-07 08:01:20 107

原创 java-ArrayList,LinkedList,Vector的区别

List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。3个具体实现类的相关区别如下:1. ArrayList: 代表长度可变的数组。允许对元素进行快速的随机访问,当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高,速度较慢;2.Vector与Arr...

2019-04-07 07:37:46 135

转载 字节流&&字符流

转自:连接字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如下图所示:InputStream 和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象,Reader和 Writer.两个是为字符流(一个字符占...

2019-04-06 22:20:06 171

原创 java-抽象类vs接口

一. 抽象类和接口的相同点:1、代表系统的抽象层;2、都不能被实例化;3、都能包含抽象方法。这些抽象方法用于描述系统能提供哪些服务,但不必提供具体的实现;二、抽象类和接口主要的两个区别:1、在抽象类中可以为部分方法提供默认的实现,从而避免在子类中重复实现它们,提高代码的可重用性,这是抽象类的优势所在;而接口中只能包含抽象方法;2、一个类只能继承一个直接的父类,这个父类有可能...

2019-04-06 15:37:24 115

转载 java-final用法

在java中,final关键字的含义在不同的场景下有细微的差别,但总体上来说,它指的是“这是不可变的”。下面,我们来讲final的四种主要用法。1.修饰数据在编写程序时,我们经常需要说明一个数据是不可变的,我们成为常量。在java中,用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。更重要的是,final会告诉编译器,这个数据是不会修改的,那么编译器就可能...

2019-04-04 15:01:47 178

转载 java-hashcode以及和equals的关系

1.hash和hash表是什么: Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。...

2019-04-04 14:47:45 264

原创 Java中equals和==的区别

一,首先介绍一下Java的数据类型分类:基本数据类型和引用数据类型基本数据类型:byte,short,char,int,long,float,double,boolean;他们之间的比较,应用双等号(==),比较的是他们的值。引用数据类型:类类型,接口类型,数据类型;当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址(确切的说,是堆内存地址)二,equals()方法介...

2019-04-04 11:28:20 170

原创 JDK,JVM,JRE

JDK:JDK是Java Development Kit的缩写,是Java的开发工具包,主要包含了各种类库和工具;它不仅提供了Java程序运行所需的JRE,还提供了一系列的编译,运行等工具,如javac,java,javaw等;JRE:JRE (Java Runtime Environment)只是Java程序的运行环境,它最核心的内容就是JVM(Java虚拟机)及核心类库。J...

2019-04-04 10:31:37 150

原创 java-事务定义以及分类

一,什么是事务就是一组操作数据库的动作集合,事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚到最初的系统状态。二,为什么用用到事务假如你有一个数据库操作,需要同时插入数据到多张表中,需要统一的进行...

2019-04-03 18:13:44 1742

转载 MyBatis-演变过程

1.JDBC怎么演变到Mybatis的渐变过程我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下七个步骤:(1)加载JDBC驱动(2)建立并获取数据库连接(3)创建JDBC Statements对象(4)设置SQL语句的传入参数(5)执行SQL语句并获得查询结果(6)对查询结果进行转换处理并将处理结果返回(7)...

2019-04-03 14:05:44 316

转载 SpringMVC-概述

在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为Model1:出现的弊端: JSP 和 Java Bean 之间严重耦合,Java 代码和 HTML 代码也耦合在了一起 要求开发者不仅要掌握 Java ,还要有高超的前端水平 前端和后端相互依赖,前端需要等待后端完成,后端也依赖前端完成,才能进...

2019-04-02 22:17:58 203

空空如也

空空如也

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

TA关注的人

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