自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

五山口老法师

仰望星空,脚踏实地!

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

原创 常见存储引擎及比较

四种mysql存储引擎前言数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。存储引擎查看MySQL给开发者提供了查询存储引擎的功能,我这里使用...

2018-12-30 14:37:44 412

原创 通俗易懂权限管理模块设计

通俗易懂权限管理模块设计

2018-12-30 14:10:19 320

原创 先了解一下Shiro安全框架

 Shiro与Spring Security对比: Shiro的整体架构:认识Shiro!!! 官网:https://shiro.apache.org/ 一. Shiro是什么Shiro是一个Java平台的开源权限框架,用于认证和访问授权。具体来说,满足对如下元素的支持:用户,角色,权限(仅仅是操作权限,数据权限必须与业务需求紧密结合),资源(url)。 用...

2018-12-30 13:51:46 210

原创 数据库:分布式事务的解决方案

本节涉及到一些技术术语:2PC、CAP、BASE、RocketMQ、RabbitMQ、XA、Kafka、TCC事务在数据库系统中,一个事务是指:由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和,构成一个完整的逻辑过程,不可拆分。这个过程被称为一个事务,具有ACID特性。ACID:是指在数据库管理系统(DBMS)中...

2018-12-30 13:25:29 382

原创 Mycat中间件的下发准则

下面是转的一篇:Mycat从入门到放弃,这篇文章写得非常好,对分库分表入门有醍醐灌顶之感转自:https://blog.csdn.net/u013235478/article/details/53178657 当初写这篇文章的初衷只是想提醒自己在用一个开源产品前不仅要了解其提供的功能,更要了解其功能和场景边界。1.非分片字段查询Mycat中的路由结果是通过分片字段和分片方法...

2018-12-29 21:18:29 198

原创 MYSQL: MERGE引擎实现多分表的联合

MERGE存储引擎把一组MyISAM数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询。构成一个MERGE数据表结构的各成员MyISAM数据表必须具有完全一样的结构。每一个成员数据表的数据列必须按照同样的顺序定义同样的名字和类型,索引也必须按照同样的顺序和同样的方式定义。假设你有几个日志数据表,他们内容分别是这几年来每一年的日志记录项,他们的定义都是下面这样,YY代表年份: ...

2018-12-29 16:38:34 412

原创 关系型数据库和非关系型数据库

一、什么是关系型数据库1. 关系数据库:是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。简单说来就是关系型数据库用了选择、投影、连接、并、交、差、除、增删查改等数学方法来实现对数据的存储和查询。可以用SQL语句方便的在一个表及其多个表之间做非常复杂的数据查询。安全性高。2. 非关系型数据库:简称NOSQL,是基于键值对的对应关系,并且不需要经过SQL...

2018-12-29 16:23:36 890

原创 数据库索引:引入

数据库索引的通俗理解为什么需要索引?「索引就像书的目录,通过书的目录就准确的定位到了书籍具体的内容」,数据在磁盘上是以块的形式存储的。为确保对磁盘操作的原子性,访问数据的时候会一并访问所有数据块。磁盘上的这些数据块与链表类似,即它们都包含一个数据段和一个指针,指针指向下一个节点(数据块)的内存地址,而且它们都不需要连续存储(即逻辑上相邻的数据块在物理上可以相隔很远)。举个例子来讲,...

2018-12-27 20:22:55 214

原创 Statement和PraparedStatement区别

获取执行sql语句对象,PraparedStament对象        通过Connection对象获取Statement或者PraparedStament对象(使用它)处理sqlStatementStatement st = conn.createStatement();//获取sql语句执行对象st.excuteUpdate(sql);//执行增删改语句st.excute...

2018-12-27 17:44:34 462

原创 Java:main()函数调用类中方法的限制

1、在本类中调用自己的方法,方法必须为静态的,否则报错;通过递归方法,实现N!的算法。 public class TestRecursion { public static void main(String[] args) { System.out.println(recursion(4)); //编辑器自动提示:Cannot make a static reference ...

2018-12-27 17:24:56 1681

原创 JDBC编程的步骤

首先,需要知道使用Java开发任何数据库应用程序都需要4个主要接口:Driver,Connection,Statement和ResultSet。这些接口定义了使用SQL访问数据库的一般架构。访问数据库的Java程序主要有5个步骤,分别是:1)加载驱动程序。2)建立连接。3)创建语句。4)执行语句。5)处理ResultSet。6)关闭连接。那么就简单说明这5个步骤如何实现...

2018-12-27 16:59:29 228

原创 数据库的5种约束

数据库五大约束数据库中的五种约束及其添加方法五大约束1.—-主键约束(Primary Key Constraint)唯一性,非空性,设置主键约束;2.—-唯一约束(Unique Constraint)唯一性,可以空,但只能有一个,设置唯一性约束,不能有重复值;3.—-检查约束 (Check Constraint) 对该列数据的范围、格式的限制(如:年龄、性别等)NOT NULL...

2018-12-27 12:28:14 1743 2

原创 数组:s.length()与s.length的区别

s.length是针对java中数组的,length是数组的一个属性,用来表示数组的长度s.length()则是字符串的一个方法,用来返回字符串的长度的字符串是没有length属性的,只有length()方法数组有length属性,而没有length()方法...

2018-12-27 01:40:01 11486

原创 数据库的七种传播方式

其实数据库的七种传播行为在网上查询了一下,和Spring中使用到的7种事务传播行为是没什么差别的,因为我写的博文基本和JAVA有相关,所以就结合Spring中事务传播和例子来讲一下咯。事务传播行为如下:Require:支持当前事务,如果没有事务,就建一个新的,这是最常见的;Supports:支持当前事务,如果当前没有事务,就以非事务方式执行;Mandatory:支持当前事务,如果当...

2018-12-26 19:11:17 446

原创 数据库:悲观锁与乐观锁

何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让...

2018-12-26 17:17:34 320

原创 数据库外键的使用原则

作用:保持数据的一致性、完整性为何说外键有性能问题:1.数据库需要维护外键的内部管理;2.外键等于把数据的一致性事务实现,全部交给数据库服务器完成;3.有了外键,当做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,(扫描变化了的记录是否合格等)而不得不消耗资源;4.外键还会因为需要请求对其他表内部加锁而容易出现死锁情况;数据库外键的使用以及优缺点摘录网上...

2018-12-26 16:05:33 300

原创 超键、候选键、主键、外键、联合主键、复合主键

首先看看各种键的定义:超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键(只要有一个键唯一,再随便组其他的键,合起来叫主键)候选键(candidatekey):不含有多余属性的超键称为候选键(最小的超键,ID,身份证号)主键(primary key):关系型数据库中的一条记录中有若干个属性,若其中某一个属性集(注意是集)能唯一标识一条记录,该属性组就可以成为一...

2018-12-26 15:46:25 5085 2

原创 java:面试

常用java面试题推荐(网址):Java面试题上篇https://blog.csdn.net/jackfrued/article/details/44921941Java面试题中篇https://blog.csdn.net/jackfrued/article/details/44931137Java面试题下篇 https://blog.csdn.net/jackfrued/article/...

2018-12-26 14:23:45 224

原创 Windows下的bat文件的@echo off 作用?

我们常常会在一些批处理文件中看到@echo off这个命令,那他究竟有什么作用,要想知道这个命令,我们首先得知道echo这个命令的作用,这个命令叫做“回显”,就是把这条命令后的内容显示到控制台上,接下来我们来看一下@echo off命令的作用。我们来新建一个文件,文件就命名为test_echooff.bat,然后在文件中编写如下内容:@echo offecho 这是测试内容的第1行...

2018-12-21 22:48:25 146222 15

原创 Windows下打包maven项目,编写bat脚本,dos命令在后台运行与关闭

在IDEA终端mvn clean package 会在项目目录下创建一个target目录,打好包的jar包就在这个目录下。那么如何运行?首先编写bat文件,如下编写 eureka_run.bat @echo offstart javaw -jar G:\workspace\eureka\target\eureka-0.0.1-SNAPSHOT.jarexit...

2018-12-21 22:42:13 1234

原创 IO: BIO ? NIO ? AIO?

IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO     在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝...

2018-12-19 23:30:57 200

原创 数据库理论复习点

1)索引优点?分类?底层实现?2)引擎分类?优缺点?区别?3)数据库分表4)乐观锁、悲观锁5)死锁 

2018-12-19 20:30:44 222

原创 关系数据库的设计理论

函数依赖:A->B   A决定B,B依赖于A;如果 {A1,A2,... ,An} 是关系的一个或多个属性的集合,该集合函数决定了关系的其它所有属性并且是最小(元素最少的集合)的,那么该集合就称为键码。对于 A->B,如果能找到 A 的真子集 A',使得 A'-> B,那么 A->B 就是部分函数依赖,否则就是完全函数依赖。对于 A->B,B->...

2018-12-19 19:52:03 516

原创 PyQt:如何给界面自定义背景?

原本的效果是这样的:我想变成这样: 怎么做呢?有很多方法,这里给出一种:from PyQt5.QtGui import QPalette, QBrush, QPixmapfrom dx import Ui_Formclass MyWindow(QtWidgets.QWidget,Ui_Form): def __init__(self): su...

2018-12-19 16:05:43 1468

原创 数据库事务隔离技术之 Next-Key Locks

Next-Key LocksNext-Key Locks 是 MySQL 的 InnoDB 存储引擎的一种锁实现。MVCC 不能解决幻读的问题,Next-Key Locks 就是为了解决这个问题而存在的。在可重复读(REPEATABLE READ)隔离级别下,使用 MVCC + Next-Key Locks 可以解决幻读问题。Record Locks锁定一个记录上的索引,而不是记录...

2018-12-18 22:58:38 728

原创 数据库的事务隔离技术 之 MVCC

在mysql中,提供了两种事务隔离技术,第一个是mvcc,第二个是next-key技术。这个在使用不同的语句的时候可以动态选择。不加lock in share mode之类的就使用mvcc。否则使用next-key。mvcc的优势是不加锁,并发性高。缺点是不是实时数据。next-key的优势是获取实时数据,但是需要加锁。同时需要注意几点:1.事务的快照时间点是以第一个select来...

2018-12-18 22:47:00 319

原创 数据库的封锁

封锁封锁粒度MySQL 中提供了两种封锁粒度:行级锁以及表级锁。(还有一种折中的锁叫 页级锁 BDB支持)应该尽量只锁定需要修改的那部分数据,而不是所有的资源。锁定的数据量越少,发生锁争用的可能就越小,系统的并发程度就越高。但是加锁需要消耗资源,锁的各种操作(包括获取锁、释放锁、以及检查锁状态)都会增加系统开销。因此封锁粒度越小,系统开销就越大。在选择封锁粒度时,需要在锁开销和...

2018-12-18 22:06:17 554

原创 数据库的隔离级别

数据库的隔离级别1)未提交读   read uncommitted事务中所做的修改,在未提交之前,对其他的事务也是可见的。2)提交读   read committed   (不可重复读)一个事务只能读取已经提交的事务所做的修改3)可重复度  repeatable read  RR保证同一个事务中多次读取同样的数据的结果是一样的4)可串行化   serializable...

2018-12-18 20:58:26 167

原创 数据库并发一致性的问题

在并发环境下,事务的隔离性很难保证,因此会出现很多并发一致性问题。使用隔离级别来防止产生的并发一致性问题1)丢失修改2) 读脏数据   3)不可重复读      即每次读取的结果可能不一致 4)幻影读    举个栗子:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入    了一条具体分数的记录,当系统管...

2018-12-17 17:44:52 1126

原创 Redis:常见的面试题

Redis的那些最常见面试问题 先把这些面试题给浏览一遍,大概知道redis的一些相关名词,接下来几篇博客才会继续的详细一些写redis的一些特性~~然后慢慢把redis学会。 1.什么是Redis?Redis 是一个基于内存的高性能key-value数据库。 2.Reids的特点  Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据...

2018-12-17 16:42:36 337

原创 JVM:常用调优命令

Jvm堆内存的划分结构和优化,垃圾回收详解(详细解答篇)调试参数列表:参数及其默认值 描述 -XX:-CITime 打印消耗在JIT编译的时间 -XX:ErrorFile=./hs_err_pid<pid>.log 保存错误日志或者数据到文件中 -XX:-ExtendedDTraceProbes 开启solaris特有的dtrace探针 ...

2018-12-17 14:52:07 242

原创 JVM: G1和CMS的区别

CMS:以获取最短回收停顿时间为目标的收集器,基于并发“标记清理”实现有人会好奇为什么标记清理算法会产生内存碎片!但是CMS仍采用这种算法呢?答案是:因为CMS作为第一款实现用户线程和收集线程并发执行的收集器!当时的设计理念是减少停顿时间,最好是能并发执行!但是问题来了,如要用户线程也在执行,那么就不能轻易的改变堆中对象的内存地址!不然会导致用户线程无法定位引用对象,从而无法正常运行!而标...

2018-12-17 12:24:12 15956 7

原创 一个例子理解什么是RPC?

RPC的实现原理正如上一讲所说,RPC主要是为了解决的两个问题:解决分布式系统中,服务之间的调用问题。 远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑。还是以计算器Calculator为例,如果实现类CalculatorImpl是放在本地的,那么直接调用即可: 现在系统变成分布式了,CalculatorImpl和调用方不在同一个地址空间,那么就必须要进...

2018-12-17 12:08:40 214

原创 JVM:堆与栈的比较

堆(heap)与栈(stack)    堆和栈是程序运行的关键,很有必要它他们的关系说清楚。    在java中,Main函数就是栈的起始点,也是程序的起始点。程序要运行总是有一个起点的(程序执行的入口)。概括:    1  栈是运行时的单位 , 而堆是存储的单元。 2  栈解决程序的运行问题,即程序如何执行,或者说如何处理数据,    堆解决的是数据存储的问题,即数据...

2018-12-17 12:02:14 143

原创 JVM:gc什么时候开始?System.gc()能保证gc一定发生吗?

gc什么时候开始?“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?”在什么时候:1.新生代有一个Eden区和两个survivor区,首先将对象放入Eden区,如果空间不足就向其中的一个survivor区上放,如果仍然放不下就会引发一次发生在新生代的minor GC,将存活的对象放入另一个survivor区中,然后清空Eden和之前的那个survivor区的内存。在...

2018-12-17 11:39:39 5865 3

原创 JVM:永久代 以及jdk1.8为什么将其移除?

永久代在JDK8之前的HotSpot实现中,类的元数据如方法数据、方法信息(字节码,栈和变量大小)、运行时常量池、已确定的符号引用和虚方法表等被保存在永久代中,32位默认永久代的大小为64M,64位默认为85M,可以通过参数-XX:MaxPermSize进行设置,一旦类的元数据超过了永久代大小,就会抛出OOM异常。虚拟机团队在JDK8的HotSpot中,把永久代从Java堆中移除了,并把类...

2018-12-17 11:15:49 4189 4

原创 SIP协议和压力测试, SIP callflow图形生成

SIPp是一个测试SIP协议性能的工具软件。这是一个GPL的开放源码软件。     它包含了一些基本的SipStone用户代理工作流程(UAC和UAS),并可使用INVITE和B YE建立和释放多个呼叫。它也可以读XML的场景文件,即描述任何性能测试的配置文件。它能动态显示测试运行的统计数据(呼叫速率、信号来回的延迟,以及消息统计)。周期性地把CSV统计数据转储,在多个套接字上的TCP和UDP,...

2018-12-17 08:38:50 813

原创 Spring和SpringMVC的总结

1. 为什么使用Spring ?    1). 方便解耦,简化开发         通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。    2). AOP编程的支持         通过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测、事务管理、日志记录等。    3). 声明式事务的支持 ...

2018-12-15 21:30:13 138

原创 JVM:方法区可以GC吗?

方法区和堆一样,都是线程共享的内存区域,被用于存储已被虚拟机加载的类信息(字段等)、即时编译后的代码(方法字节码)、静态变量和常量等数据。根据Java虚拟机规范的规定,方法区无法满足内存分配需求时,也会抛出OutOfMemoryError异常,虽然规范规定虚拟机可以不实现垃圾收集,因为和堆的垃圾回收效率相比,方法区的回收效率实在太低,但是此部分内存区域也是可以被回收的。方法区的垃圾回收主要...

2018-12-15 21:11:32 5480 2

原创 ubuntu系统批量端口永久开放

最近在对端口做有关操作,特将端口范围做记录如下:一般用到的是1到65535,其中0不使用,1-1023为系统端口,也叫BSD保留端口;1024-65535为用户端口,又分为: BSD临时端口(1024-5000)和BSD服务器(非特权)端口(5001-65535).0-1023: BSD保留端口,也叫系统端口,这些端口只有系统特许的进程才能使用;1024-5000: BSD临时端口,一...

2018-12-15 17:55:46 3321

空空如也

空空如也

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

TA关注的人

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