4 一觉睡到丶小时候

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 18w+

Index column size too large. The maximum column size is 767 bytes.

创建索引的时候报错 :Index column size too large. The maximum column size is 767 bytes.错误原因由于MySQL的Innodb引擎表索引字段长度的限制为767字节,因此对于多字节字符集的大字段或者多字段组合,创建索引时会出现此错误。以utf8mb4字符集字符串类型字段为例,utf8mb4是4字节字符集,则默认支持的索引字段最大长度是191字符(767字节/4字节每字符≈191字符),因此在varchar(255)或char(.

2020-07-30 08:19:18

JVM&GC(四)-通用术语

G1(Garbage First).G1是一个并行回收器,他把内存分割为很多不相关的区间(Region),每个区间可以属于老年代或者年轻代,并且每个年代区间可以是物理上不连续的。垃圾回收时都是需要停下应用程序,不然没有办法防止应用程序的干扰,然后G1 GC可以集中精力在垃圾最多的区间上,并且只费一点点时间就可以清空这些区间里的垃圾,腾出完全空闲的区间。由于这种方式的侧重点在于处理垃圾最多的区间,所以我们给G1取一个名字:垃圾优先(Garbage First).G1内部主要有四个操作阶段:年轻代回收(

2020-07-23 14:47:35

Linux安装Oracle

官方最低要求配置内存:1G(官方最低要求1G)硬盘:40G(企业版安装所需4.29G和1.7G数据文件)准备工作安装环境介绍系统:CentOS 7 64位Oracle版本:Oracle 11gR2下载Oracle安装文件官网下载地址下载出来是这样两个压缩包:linux.x64_11gR2_database_1of2.ziplinux.x64_11gR2_database_2of2.zip检查系统版本uname -m[root@localhost ~]# uname -m

2020-07-23 14:45:48

JVM&GC(三)-System.gc()方法

前言在默认情况下,System.gc()会显示直接触发Full GC,同时对老年代和新生代进行回收。而一般情况下,垃圾回收应该是自动进行的,无需手工触发,否则就太麻烦了。示例public class TestGC { public static void main(String[] args) { new TestGC(); System.gc(); System.runFinalization(); }}如果在idea查看日志输

2020-07-19 10:19:37

JVM&GC(二)对象提升规则

前言虚拟机给每个对象定义了一个对象年龄(Age)计数器。如果对象在Eden区出生并经过第一次Minor GC后仍然存活,并且能被Survivor容纳的话,将被移动到Survivor空间中,并将对象年龄设为1.对象在Survivor中每熬过一次Minor GC,年龄就将增加1岁,当他的年龄增加到一定程度(默认为15岁)时,就会被晋升到老年代中。分配原则对象优先分配在Eden区,如果Eden区,如果Eden区没有足够的空间,虚拟机执行一次Minor GC。大对象直接进入老年代,这样做的目的是为了避免在

2020-07-19 10:19:06

垃圾回收算法(7)-分代回收算法

前言Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:年轻代 ( Young )、老年代 ( Tenured)。年轻代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。堆大小 = 年轻代 + 老年代年轻代 = eden space (新生代) + from survivor +

2020-07-12 10:14:43

垃圾回收算法(6)-增量算法

前言在垃圾回收过程中,应用软件处于一种Stop the World的状态。在Stop the World的状态下,应用程序的所有线程都会挂起,暂停一切工作,等待垃圾回收的完成。如果垃圾回收时间过长,应用程序会被挂起很久,将严重影响用户体验或者系统的稳定性。为了解决这个问题,即对实时垃圾手机算法的研究直接导致了增量收集算法的诞生。多进程运行思路最初,为了进行实时垃圾收集,可以设计一个多进程的运行环境,比如用一个进程执行垃圾收集工作,另一个进程执行程序代码。这样一来,垃圾收集工作看上去仿佛是在后台悄悄的干

2020-07-11 09:15:56

垃圾回收算法(5)-标记整理算法

前言标记清除算法的确可以应用在老年代中,但是该算法不仅执行效率低下,而且在执行完内存回收后会产生内存碎片。所以JVM的设计者在此基础上做了改进,标记压缩法(也称标记整理法)由此诞生。算法原理当成功标记出内存中的垃圾对象之后,标记压缩法会将所有的存活对象都移动到一个规整且连续的内存空间中,然后执行Full GC(老年代的垃圾回收,或者被称为Major GC)回收无用对象所占用的内存空间。当成功压缩后,已用和未用的内存都各自一遍,彼此之间维系着一个记录下一次分配起始点的标记指针,当为新对象分配内存时,则可

2020-07-10 10:40:13

垃圾回收算法(4)-复制算法

算法原理复制算法首先将或者的内存空间分为2块,每次只使用其中一块,在垃圾会搜时将正在使用的内存中的存活对象复制到未被使用的内存块中,之后清楚正在使用的内存块中的所有对象,交换2个内存的角色,最后完成垃圾回收。年轻代中的GCHotSpot JVM把年轻代分为了三部分:1个Eden区和2个Survivor区(分别叫from和to)。默认比例为8:1,为啥默认会是这个比例,接下来我们会聊到。一般情况下,新创建的对象都会被分配到Eden区(一些大对象特殊处理),这些对象经过第一次Minor GC后,如果仍

2020-07-10 10:39:20

垃圾回收算法(3)-标记清除算法

前言标记清除算法(Mark-Sweep)是一种非常基础和常见的垃圾收集算法,该算法被J.McCarthy等人在1960年提出并成功的发明并应用于Lisp语言。涉及概念先来了解一下mutator和collector。这2个名词经常在垃圾收集算法中出现。collector指的就是垃圾收集器。mutator是指除了垃圾收集器之外的部分,比如说我们的应用程序本身。mutator的职责一般是NEW(分配内存)、READ(从内存中读取内容)、WRITE(将内容写入内存),而collector则就是回收不在使

2020-07-10 10:38:07

垃圾回收算法(2)-根搜索算法

前言相对于引用计数算法而言,根搜索算法不仅同样具备实现简单和执行高效等特点,更重要的是该算法可以有效的解决在引用记数法中一些已经死亡的对象因为相互引用而导致的无法正确被标记的问题,防止内存泄漏的发生。算法原理根搜索算法是以根对象集合为起始点,按照从上至下的方式搜索被根对象集合所连接的目标对象是否可达(使用根算法后,内存中的存活对象都会被根对象集合直接或间接连接着)如果目标对象不可达,就意味着该对象已经死亡,便可将其标记为垃圾对象。在根搜索算法中不可达的对象,也并非是“非死不可”,这时候他们暂时处

2020-07-10 10:35:35

垃圾回收算法(1)-引用计数法

算法原理引用记数法在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活的对象,哪些是已经死亡的对象,只有被标记为已经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间。比如说,当我们编写以下代码时String p = new String("abc")abc这个字符串对象的引用计数值为1.而当我们去除abc字符串对象的引用时,则abc字符串对象的引用计数减1p = null由此可见,当对象的引用计数为0时,垃圾回收就发生了。引用计数算法很简单,它实际上是通过在对象头中分

2020-07-10 10:34:26

面向对象的7种设计原则(7)-开闭原则

开闭原则开闭原则是面向对象世界里最基础的设计原则,它指导我们如何建立一个稳定,灵活,可扩展的系统。开闭原则定义如下:Software entities like classes,modules and functions should be open for extension but closed for modifications.一个软件实体(如类,模块和函数)应该对扩展开放,对修改关闭。问题由来在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代

2020-07-07 11:14:48

面向对象的7种设计原则(6)-迪米特原则

迪米特原则迪米特原则(Law of Demeter)又叫最少知道原则(Least Knowledge Principle),可以简单说成:talk only to your immediate friends,只与你直接的朋友们通信,不要跟“陌生人”说话。模式与意义迪米特法则,如果两个类不必彼此直接通向,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个累哦的某一个方法的话,可以通过第三者转发这个调用。迪米特法则首先强调的前提是在类的结构设计上,每一个类都应当降低成员的访问权

2020-07-07 11:14:08

面向对象的7种设计原则(5)-里氏代换原则

定义里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。原则第一点子

2020-07-07 11:13:22

面向对象的7种设计原则(4)-合成/聚合复用原则

合成复用原则在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用这些对象的目的。如果两个类是“Has-a”关系应使用合成、聚合,如果是“Is-a”关系可使用继承。“Is-A"是严格的分类学意义上定义,意思是一个类是另一个类的"一种”。而"Has-A"则不同,它表示某一个角色具有某一项责任。什么是合成?什么是聚合?合成(Composition)和聚合(Aggregation)都是关联(Association)的特殊种类。聚合聚合用来表示“拥有”关系或者

2020-07-04 09:37:38

面向对象的7种设计原则(3)-依赖倒置原则

依赖倒置原则High level modules should not depend upon low level modules.Both should depend upon abstractions.高层模块不应该依赖低层模块,两者都应该依赖其抽象(模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的)Abstractions should not depend upon details.抽象不应该依赖细节(接口或抽象类不依赖于实现类)Details

2020-07-04 09:36:47

面向对象的7种设计原则(2)-接口隔离原则

定义Interface Segregation Principle客户端不应依赖它不需要的接口类间的依赖关系应该建立在最小的接口上其实通俗来理解就是,不要在一个接口里面放很多的方法,这样会显得这个类很臃肿。接口应该尽量细化,一个接口对应一个功能模块,同时接口里面的方法应该尽可能的少,使接口更加灵活轻便。或许有的人认为接口隔离原则和单一职责原则很像,但两个原则还是存在着明显的区别。单一职责原则是在业务逻辑上的划分,注重的是职责。接口隔离原则是基于接口设计考虑。例如一个接口的职责包含10个方

2020-07-04 09:36:04

面向对象的7种设计原则(1)-单一职责原则

永远不要让一个类存在多个改变的理由。单一原则表明,如果你有多个原因去改变一个类,那么应该把这些引起变化的原因分离开,把这个类分成多个类,每个类只负责处理一种改变。当你做出某种改变时,只需要修改负责处理该改变的类。当我们去改变一个具有多个职责的类时可能会影响该类的其他功能单一职责原则代表了设计应用程序时一种很好的识别类的方式,并且它提醒你思考一个类的所有演化方式。只有对应用程序的工作方式有了很好的理解,才能很好的分离职责。单一职责原则原则的核心含意是:只能让一个类/接口/方法有且仅有一个职责。案例.

2020-07-04 09:35:17

Spring事务隔离级别

事务隔离级别ISOLATION_DEFAULT这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。ISOLATION_READ_UNCOMMITTED这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。ISOLATION_READ_COMMITTED保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。ISOLATION_REPEATABL

2020-06-23 14:20:15

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。