自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (7)
  • 收藏
  • 关注

原创 分布式设计-扩展性(可伸缩性)

1、性能和可伸缩性什么是性能问题?如果你的系统对于一个用户访问还很慢,那就是性能问题;什么是可伸缩性问题?如果你的系统对一个用户来说是快的,但是在用户不断增长的高访问量下就慢了。2、伸缩性方案垂直伸缩: 升级到更强大的服务器(多CPU 昂贵大中型机)。水平伸缩: 增加更便宜的机器。3、水平伸缩设计状态的扩展(存储可伸缩性):状态是指保存数据的地方,如内存或数据库无状态的扩展(计...

2019-05-06 14:49:06 1412

原创 分布式设计

1、扩展设计2、稳定性和高可用3、数据库扩展4、服务治理5、分布式一致6、分布式文件系统7、分布式惟一id8、一致hash算法

2019-05-06 14:18:28 170

原创 设计思想和开发模式归类

1、DDD2、Actor模式3、Reactor模式4、DoDAF2.05、Serverless6、Service Mesh

2019-05-06 14:10:44 154

原创 MySQL 四种隔离级别

1、事务的 ACID事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。原子性。事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做一致性。事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交...

2019-04-26 12:03:35 164

原创 排序-冒泡排序

public class BubbleSort { public static void main(String[] args) { int[] a = {10, 9, 7, 101, 23, 44, 12, 78, 34, 23}; bubbleSort(a); System.out.println("Printing Sorted Lis...

2019-04-25 16:22:48 90

原创 搜索-二进制(二分查找)搜索

二进制搜索是一种在排序列表上有效工作的搜索技术。 因此,要使用二进制搜索技术来搜索某个列表中的元素,需要确保对列表是一个已排好顺序。二进制搜索遵循分而治之的方法,其中,列表被分成两半,并且项目与列表的中间元素进行比较。 如果找到匹配,则返回中间元素的位置,否则根据匹配产生的结果搜索到两半中的任何一个。public class BinarySearch { public static v...

2019-04-25 16:05:25 1943

原创 搜索-线性搜索

线性搜索是最简单的搜索算法,通常称为顺序搜索。 在这种类型的搜索中,只是完全遍历列表,并将列表中的每个元素与要找到其位置的项匹配。如果找到匹配,则返回项目的位置,否则算法返回NULL。public class LineSearch { public static void main(String[] args) { int[] arr = {10, 23, 15, 8,...

2019-04-25 15:45:00 266

原创 数据结构基础

1、基本术语数据:数据可以定义为基本值或值集合,例如,学生的姓名和ID,成绩等就是学生的数据。组项:具有从属数据项的数据项称为组项,例如,学生的姓名由名字和姓氏组成。记录:记录可以定义为各种数据项的集合,例如,如果以学生实体为例,那么学生的名称,地址,课程和标记可以组合在一起形成学生的记录。文件:文件是一种类型实体的各种记录的集合,例如,如果类中有60名员工,则相关文件中将有20条记录,其...

2019-04-25 13:52:23 105

转载 集合底层原理分析

https://blog.csdn.net/qq_25868207/article/details/55259978

2019-04-24 15:40:15 117

原创 9、线程安全与锁优化

1、线程安全的实现方法1.1 互斥同步(悲观锁)1)synchronized:在同步块形成monitorenter和monitorexit指令。synchronized是一个重要级的操作。2)java.util.concurrent.Locka、等待中断:在长时间等待锁时,可以放弃等待。b、公平锁:多个线程在等待同一个锁时,根据申请锁的时间顺序来依次获得。c、锁绑定多个条件:可以一次锁...

2019-04-24 14:30:58 80

原创 8、Java内存模型与线程

1、Java内存模型1.1 主内存和工作内存Java线程<->工作内存<->内存交互<->主内存1.2 内存间交互操作1)lock2)unlock3)read4)load5)use6)assign7)store8)write1.3 对于volatile型变量的特殊规则volatile型变量的两种特性:1)保证此变量对所有线程的可见性:...

2019-04-24 14:04:14 100

原创 7、Tomcat类加载器结构

1、Tomcat可存放jar类库的地方1)/common/* : Tomcat和所有Web应用都可以访问2)/server/* : 仅Tomcat可以访问3)/shared/* : 仅所有Web应用可以访问4)另外Web应用程序自身的目录:/WEB-INF/*: 仅单个Web应用可以访问2、各种ClassLoader1)CommonClassLoader: 加载/common/*2...

2019-04-24 10:27:21 306

原创 6、运行时栈帧结构

运行时栈帧结构1)局部变量表2)操作数栈3)动态连接4)方法返回地址

2019-04-24 09:42:44 102

原创 5、JVM类加载机制

1、类加载步骤加载-》验证-》准备-》解析-》初始化-》使用-》卸载链接:验证-》准备-》解析初始化时机:1)new、invoke指令2)java.lang.refect反射调用3)初始化子类时,如果父类没初始化,则触发父类初始化。2、类加载过程2.1 加载1)通过类的全限定名获取二进制字节流2)将字节流所代表的静态结构转化为方法区的运行时数据结构3)在内存中生成一个代表这个...

2019-04-23 18:28:07 121

原创 4、类文件结构

1、无关性的基石-字节码(.class)2、Class类文件的结构8位字节为基础单位的二进制流。两种数据类型:无符号数和表。无符号数:基本的数据类型。表:无符号数或者其他表复合的数据类型。2.1 魔数与Class文件的版本魔数:文件首4字节版本:5,6是次版本号,7,8字节是主版本号2.2 常量池版本之后是常量池。常量池:字面量和符号引用字面量:文本字符串、声明为final...

2019-04-23 17:11:36 89

原创 3、虚拟机性能监控与故障处理工具

1、JDK的命令行工具1.1 jps:(jvm process status)虚拟机进程状况1.2 jstat:(JVM Statistics Monitoring)虚拟机统计信息监视1.3 jinfo:java配置信息1.4 jmap: Java内存映射用户生成堆快照1.5 jhat: JVM堆转储快照分析1.6 jstack: Java堆栈跟踪2、JDK的可视化工具2.1 J...

2019-04-23 16:41:49 76

原创 2、垃圾收集器与内存分配策略

1、判断对象是否已死1.1 引用计数算法?java没有用引用计数算法,难于解决对象间的相互引用问题。1.2 可达性分析算法通过GC Roots为起点,如果没有达到一个对象,则不可达。可作为GC Roots的对象:1)栈中的引用的对象。2)方法区中类静态属性引用的对象。3)方法区中常量引用的对象。4)本地方法栈中JNI引用的对象。1.3 再谈引用分类:1)强引用2)软引用...

2019-04-23 16:21:04 124

原创 1、Java内存区域

1、运行时数据区域1.1 程序计数器程序计数器:当前线程所执行的字节码指示器。字节码解释器根据这个计数器的值来选取下一条需要执行的字节码指令。线程私有的内存区域。唯一不会出错OutOfMemoryError。执行的指令分为几种:1)java方法:计数器记录的是正在执行虚拟机字节码指令的地址;2)Native方法:计数值为空。1.2 Java栈也是线程私有的,它的生命周期跟线程相同...

2019-04-23 15:54:49 94

原创 九、计算高可用

1 主备2 主从3 对称集群4 非对称集群

2019-04-11 11:55:54 147

原创 十一、可扩展模式

1 可扩展的基本思想所有的可扩展性架构设计,基本思想都是“拆”。常见的拆分思路有三种:面向分层拆分。面向模块/服务拆分。面向功能拆分。2 可扩展方式不同的拆分方式对应不同的扩展方式,得到不同的架构:面向分层拆分:分层架构面向模块/服务拆分:SOA、微服务等面向功能拆分:微内核架构...

2019-04-11 11:55:44 453

转载 JVM详解

https://www.cnblogs.com/lishun1005/p/6019678.htmlhttps://segmentfault.com/a/1190000014395186https://www.cnblogs.com/zwbg/p/6194470.htmlhttps://blog.csdn.net/ns_code/article/details/17565503

2019-04-11 11:55:21 109

原创 八、存储高可用

本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用。复杂性:如果应对复制延迟和中断导致的数据不一致问题。常见的高可用存储有:主备、主从、主主、集群、分区。分布式事务算法:主要目的:保证分散在多个节点上的数据统一提交或回滚。满足ACID。2PC3PC分布式一致性算法:主要目的:保证同一份数据在多个节点上是一致的,满足CAP中的CP。(1)paxos(2)Ra...

2019-04-10 18:06:42 1680

原创 六、CAP

1 CAP理论CAP理论:在一个分布式系统中,当涉及读写操作时,只能保证一致性、可用性、分区容错性三者中的两个,另外一个必须被牺牲。一致性:对某个客户端来说,读操作保证能返回最新的写操作结果。可用性:非故障节点在合理的时间内返回合理的响应(不是错误和超时)。分区容错性:当出现网络分区后,系统能继续“履行职责”。2 CAP应用在实际应用中,因为网络无法100%可靠。因此,CAP理论只能选...

2019-04-10 17:28:32 122

原创 五、计算高性能

1 单服务器高性能单服务器高性能关键之一是服务器采取的网络编程模型。网络编程模型有两处关键点:一、服务器如何管理连接;二、服务器如何处理请求。1.1 PPC(每个连接一个进程)1.2 prefork1.3 TPC(每个连接一个线程)1.4 prethread1.5 Reactor1.6 Proactor2 集群高性能2.1 负载均衡分类3种:DNS、硬件负载和软件负载2.2...

2019-04-10 17:04:13 146

原创 四、存储高性能

1 关系型数据库1.1 读写分离本质是将访问压力分散到集群中的多个节点,但没有分散存储压力。读写分离:实现简单,但实际应用中需要应对复制延迟带来的复杂性。解决复制延迟的几种常用方法:一、写操作后的读操作指定发给数据库主服务器。二、读从机失败后再读一次主机。三、关键业务读写操作全部指向主机,非关键业务采用读写分离。1.2 分库分表分库分表能分散访问压力和存储历程。(1)业务分库...

2019-04-10 15:54:05 304

原创 三、架构设计流程

1 识别复杂度2 设计备选方案根据识别出的主要复杂度,方案设计就有了明确的目标。3 评估和选择备选方案4 详细方案设计细化确定的备选方案,使得备选方案变成一个可落地的设计方案。...

2019-04-10 15:16:59 133

原创 二、架构设计原则

遵循三大原则:合适原则、简单原则、演化原则。1 合适原则原则宣言:合适优化于业界领先。(1)将军难打无兵之仗。没有那么多人,却想干那么多活,是失败的第一个主要原因。(2)罗马不是一天建成的。(2)业务倒逼新的方案。2 简单原则原则宣言:简单优于复杂。3 演化原则原则宣言:演化优于一步到位。”建筑一旦完成就不可再变;软件却需要根据业务的发展不断变化“...

2019-04-10 15:02:45 91

原创 一、架构基础

1 架构是什么1.1 系统与子系统系统:一群有关联的个体,根据某种规则运作,完成单个元件不能单独完成的工作能力。1.2 模块与组件模块:从逻辑的角度来拆分得到的单元。划分模块的目的是职责分离。组件:从物理的角度来拆分得到的单元。划分的目的是单元复用。1.3 框架与架构框架:为了实现组件规范,提供规范的基础功能的软件产品。架构:软件系统的顶层结构2 架构设计的目的架构设计的目的:...

2019-04-10 14:52:18 241

原创 查询性能优化

##查询性能优化1. 为什么查询会慢查询的生命周期:客户端-》服务器-》查询缓存-》命令解析-》预处理-》优化器优化-》查询执行引擎查询生命周期每一子任务响应时间都可能慢,但核心是执行任务。2. 慢查询基础:优化数据访问分析步骤:确认是否在检索大量超过需要的数据。(访问了太多行或列)确认服务器是否在分析大量超过需要的数据行。2.1 衡量查询开销三大指标:1.响应时间:服务器...

2019-04-10 10:27:08 251

原创 创建高性能的索引

##创建高性能的索引1. 索引基础1.1索引的类型索引是在引擎层实现,不是在服务器层实现的。1)B-Tree索引B-Tree意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同。叶子节点指向被索引的数据。B-Tree索引是按顺序存储,所适合范围查找数据。可以使用B-Tree索引的查询类型:全值匹配匹配最左前缀匹配列前缀匹配范围值精确匹配某一列并范围匹配另外一列...

2019-04-10 10:25:12 185

原创 Schema与数据类型优化

##Schema与数据类型优化1. 选择优化的数据类型1)更小的通常更好:占用更少的磁盘、内存和cpu缓存2)简单就好:简单数据类型的操作通常需要更少的cpu周期3)尽量避免NULL: NULL更难优化,使用索引、索引统计和值比较都更复杂。2. Schema设计陷阱1)大多的列2)大多的关联3.范式与反范式4.缓存表和汇总表1)计数器表...

2019-04-10 10:23:55 129

转载 mysqld初探

https://www.cnblogs.com/weidiao/p/6058458.html

2018-02-07 18:42:18 119

原创 mysql Archive版安装过程

Archive版安装过程一、安装配置1.解压mysql-5.7.19-winx64.zip,并复制粘贴到想要安装的位置,比如放在C:/mytools/下面;2.在路径C:/mytools/mysql-5.7.21-winx64下新建my.ini文件,并修改内容如下后保存。[mysqld]#设置3306端口port = 3306 #

2018-02-07 18:08:53 1313

转载 lombok的使用和原理

https://my.oschina.net/darkness/blog/510808

2018-01-23 11:57:26 112

转载 分布式文件系统(FastDFS)安装 配置

https://www.jianshu.com/p/aa6b76e3ad61

2018-01-23 10:58:51 113

原创 logback使用

1. maven依赖的添加          org.slf4j      slf4j-api      1.6.0      jar      compile          ch.qos.logback      logback-core      0.9.28      jar          ch.qos.logback 

2018-01-22 10:36:48 103

转载 javascript拷贝

对象浅拷贝(shallow copy)的实现:Object.prototype.clone = function() {    var newObj = {};    for ( var i in this) {        newObj[i] = this[i];    }    return newObj;}var obj = {    name : 'b

2016-05-03 16:07:06 123

changed jfiles

changed jfiles

2013-06-14

changed file generator

changed file generator

2013-06-14

Servlet与JSP核心编程(第二卷 第2版).pdf

Servlet与JSP核心编程(第二卷 第2版).pdf

2012-08-05

Servlet与JSP核心编程(第一卷 第2版).pdf

Servlet与JSP核心编程(第一卷 第2版).pdf

2012-08-05

xdoclet 生成hbm文件

在myeclipse中用xdoclet生成hbm文件

2009-07-18

dwr对struts2的支持包

struts2不支持dwr,这个支持包是人家自己写的,使struts2能够支持dwr,并提供使用源代码

2009-07-18

自动生成DAO源代码

利用eclipse的JET模板自动生成java文件来生成DAO,生成的DAO继承了一个通用的GenenicDao,GenenicDao用到了spring和hibernate. 提供源代码

2009-07-18

空空如也

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

TA关注的人

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