自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(145)
  • 资源 (5)
  • 收藏
  • 关注

原创 设计模式实例总结

1 创建型模式1.1 单例模式为了避免不一致的状态,避免政出多头。某些实例的创建需要很大的开销,一个就够了,为了节约资源所以做成单例模式。RuntimeRuntime 类代表着Java程序的运行时环境,每个Java程序都有一个Runtime实例,该类会被自动创建,我们可以通过Runtime.getRuntime() 方法来获取当前程序的Runtime实例。 ...

2018-03-05 23:55:33 276

原创 Kubernetes架构学习笔记

Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,是Docker分布式系统的解决方案。k8s里所有的资源都可以用yaml或Json定义。1 K8s基本概念1.1 MasterMaster节点负责整个集群的控制和管理,所有的控制命令都是发给它,上面运行着一组关键进程:...

2018-03-04 20:58:39 14910 1

原创 Kafka客户端使用

Consumer客户端1 消费者模型在开始编码之前, 我们先回顾一下一些基本概念。 在Kafka中, 每个topic被分成一组称为Partitions的logs。 Producer向这些logs的末尾写入消息, Consumer则自己按自己的节奏读取log。 Kafka通过在一个Consumer Group中分配Partitions来伸缩topic的消费, Consumer Group...

2018-03-04 00:50:12 15427

原创 kafka架构与原理

1 简介它可以让你发布和订阅记录流。在这方面,它类似于一个消息队列或企业消息系统。它可以让你持久化收到的记录流,从而具有容错能力。首先,明确几个概念:Kafka运行在一个或多个服务器上。Kafka集群分类存储的记录流被称为主题(Topics)。每个消息记录包含一个键,一个值和时间戳。Kafka有四个核心API:生产者 API 允许应用程序发布记录流至一个或多个K...

2018-03-03 23:44:14 650

转载 HBase学习笔记

1. 简介HBase是Hadoop Database的简称 。HBase是一个分布式的、面向列的开源数据库,它不同于一般的关系数据库,是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。HBase使用和 BigTable非常相同的数据模型。用户存储数据行在一个表里。一个数据行拥有一个可选择的键和任意数量的列,一个或多个列组成一个ColumnFamily,一...

2018-03-03 17:33:17 691

原创 Zookeeper架构与原理

Zookeeper的特点:最终一致性:为客户端展示同一视图,这是zookeeper最重要的功能。 可靠性:如果消息被到一台服务器接受,那么它将被所有的服务器接受。 **非实时性:**Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。 等待无关(wait-free):慢的或者失效的client不干预快速的client的请求...

2018-03-03 12:25:38 426

转载 Etcd全方位解读

etcd是一个键值存储仓库,用于配置共享和服务发现。A highly-available key value store for shared configuration and service discovery.实际上,etcd作为一个受到ZooKeeper与doozer启发而催生的项目,除了拥有与之类似的功能外,更专注于以下四点。简单:基于HTTP+JSON的API让你用c...

2018-03-03 10:21:22 5087 1

原创 仅用递归和栈操作逆序一个栈

1 根据结果推测代码 | 3 | | 1 | ----- -----(A) | 2 | => (B) | 2 | ----- ----- | 1 | | 3 | ----- -----根据【递归栈】返...

2018-02-27 00:00:55 205

原创 Java 13个原子操作

1 总结在java.util.concurrent.atomic 包下原子更新方式** 原子更新基本类型原子更新数组原子更新引用原子更新属性(字段)原子更新基本类型 AtomicBoolean :原子更新布尔类型AtomicInteger: 原子更新整型AtomicLong: 原子更新长整型原子更新数组 AtomicIntegerArray :原子更新整型数组里的元素...

2018-02-25 16:18:57 1309

转载 ConcurrentLinkedQueue

1. 引言在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现。而非阻塞的实现方式则可以使用循环CAS的方式来实现。本文让我们一起来研究下Doug Lea是如何使用非阻塞的方式来实现线程安全队列Con...

2018-02-25 15:55:10 363

转载 并发级别

在看多核编程相关论文时,往往一个并发算法会说自己是wait-free的或者lock-free的,或者是 non-blocking 的,这些专有词汇其实表示的是并发的程度,或者说并发的级别。并发级别的理解是阅读各种并发算法设计论文以及并发数据结构实现的必备基础。Wait-freedom 无等待并发无锁只要求有一个线程可以在有限步内完成操作,而无等待则在无锁的基础上更进一步进行扩展。它要求...

2018-02-25 15:11:09 1021

原创 Java队列同步器

队列同步器AbstractQueuedSynchronizer(AQS),似乎我们不经常用,但是它是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。对于锁来说,获取到同步状态就表示获取到了该锁。同步器的主要使用方式是继承,一般作为同步器组件的静态内部类,在同步器中仅定义了与状态相关的方法,且这个状态既可以独占地获...

2018-02-24 21:41:58 405

原创 Java常用集合类总结

StringBufferStringBuilderHashMapHashTableArrayListLinkedListStringBufferStringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类,所以在实际使用时,如果经常需要对一个字符串进行修改,例如追加、插入、删除等操作,使用StringBuffer要更加适合一些。对于String...

2018-02-24 21:38:17 309

原创 ConcurrentHashMap总结

HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占。ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的Hashtable,...

2018-02-24 21:33:33 403

原创 Java Executor框架

1. Runnable接口步骤:定义类实现Runnable接口:覆盖Runnable接口中的run方法,将线程要运行的代码存放在该run方法中。通过Thread 类建立线程对象:将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。调用Thread类的start方法开启线程。public class example { public s...

2018-02-23 02:04:04 222

原创 阻塞队列BlockingQueue

1 简介阻塞队列支持阻塞的插入和移除方法:(1)阻塞的插入:当队列满时,队列会阻塞插入元素的线程,直到队列不满。(2)阻塞的移除:当队列为空的时候,获取元素的线程会被阻塞。BlockingQueue<E>方法以四种形式出现,对于不能立即满足但可能在将来某一时刻可以满足的操作,这四种形式的处理方式不同:第一种是抛出一个异常,第二种是返回一个特殊值(null或false`,...

2018-02-23 01:43:42 484

原创 Java并发编程的艺术-读书笔记

Java直接内存NIO的Buffer提供了一个可以不经过JVM内存直接访问系统物理内存的类——DirectBuffer。 DirectBuffer类继承自ByteBuffer,但和普通的ByteBuffer不同,普通的ByteBuffer仍在JVM堆上分配内存,其最大内存受到最大堆内存的限制;而DirectBuffer直接分配在物理内存中,并不占用堆空间,其可申请的最大内存受操作系统限制。...

2018-02-22 23:22:03 170

转载 双重检查锁定与延迟初始化

转自:http://www.infoq.com/cn/articles/double-checked-locking-with-delay-initialization在java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时程序员可能会采用延迟初始化。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出现问题。比如,下面是非线程安全的延迟...

2018-02-22 23:19:53 166

原创 Java多线程总结(一)

一、守护进程我认为学习java的最佳资料就是两个东西,一个是其JDK文档,一个就是源码。我们先来看看JDK文档中对于Thread类的描述,下面摘取一些重要信息,然后逐个展开讲解。(JDK文档)线程 是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。每个线程都可以或不可以标记为一个守护程序。当某个...

2018-02-22 01:06:53 711

原创 JVM对锁的优化

JVM对锁的优化1 线程状态及状态转换当多个线程同时请求某个对象监视器时,对象监视器会设置几种状态用来区分请求的线程:Contention List:竞争队列,所有请求锁的线程首先被放在这个竞争队列中;Entry List:Contention List中那些有资格成为候选资源的线程被移动到Entry List中;Wait Set:哪些调用wait方法被阻塞的线程被放置在...

2018-02-21 18:01:00 527

原创 MyBatis入门

1. 基本用法开发流程:(1)配置好MyBatis主要就是需要配置好数据源以及告诉MyBatis持久化类的映射文件mapper.xml哪里找。MyBatis默认的配置文件名称是mybatis-config.xml,在最开始的示例中我们将MyBatis的配置放在了applicationContext.xml中,这也是可以的。传统简单配置:<?xml version="1...

2018-02-21 13:41:41 325

原创 SpringMVC入门

SpringMVC处理流程:(1)DispatcherServlet截获客户端请求。(2)DispatcherServlet解析URL,通过查找处理器映射器(HandlerMapping)找到对应的处理器对象(Handler),以及这个对象关联的拦截器(Interceptor),这些对象被封装在一个HandlerExecutionChain对象里面。(3)DispatcherServl...

2018-02-21 13:38:58 412

原创 SpringMVC配置文件详解

1 web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocat...

2018-02-19 01:37:00 446

原创 分布式事务

一、XA规范X/Open 组织(即现在的 Open Group )定义了分布式事务处理模型。 X/Open DTP 模型( 1994 )包括:应用程序( AP )事务管理器( TM ):交易中间件资源管理器( RM ):数据库通信资源管理器( CRM ):消息中间件全局事务:通常把一个数据库内部的事务处理,如对多个表的操作,作为本地事务看待。数据库的事务处理对象是本地事务,而...

2018-02-13 20:20:05 293

转载 倒排索引

见其名知其意,有倒排索引,对应肯定,有正向索引。正向索引(forward index),反向索引(inverted index)更熟悉的名字是倒排索引。在搜索引擎中每个文件都对应一个文件ID,文件内容被表示为一系列关键词的集合(实际上在搜索引擎索引库中,关键词也已经转换为关键词ID)。例如“文档1”经过分词,提取了20个关键词,每个关键词都会记录它在文档中的出现次数和出现位置。1. 正...

2018-02-13 00:51:39 334

原创 Mysql学习笔记2-SQL基础

一、管理数据库创建数据库:[root@host]# mysqladmin -u root -p create RUNOOBEnter password:******删除数据库:[root@host]# mysqladmin -u root -p drop RUNOOB选择数据库:mysql> use RUNOOB;二、管理表1. 数据...

2018-02-11 17:05:25 281

原创 Mysql学习笔记-1

一、Mysql体系结构和存储引擎1. 数据库与实例数据库:操作系统上的文件或其他形式的文件的集合;实例:一个操作数据库文件的后台进程;MySQL中实例和数据库是一一对应的关系,但在集群模式下可能是一个数据库被多个实例使用。 _1.1 数据库对比Mysql/SQL server: 单进程而多线程;Oracle:多进程; _1.2 配置配置文件:/...

2018-02-10 01:58:42 399

原创 常用树

二叉查找树 平衡树 2-3-4树 B树 B+树一、二叉查找树每个节点都大于其左子女的值,小于其右子女的值。(1)Node类 value 左子女的引用 右子女的引用(2)BST类 root节点(3)contains(value) 判空 与根节点进行比较,如果value更小则在左子树递归比较,如果value更大则在右子树递归比较;(4)findMin和f...

2018-02-10 01:50:07 241

原创 Java代理模式

从UML图中,可以看出代理类ProxySubject和被代理类RealSubject都实现了抽象主题Subject(接口),其中RealSubject是ProxySubject的一个成员属性,ProxySubject调用visit()方法会调用RealSubject的visit()方法,同时会加上自己的一些逻辑,比如before()、after()、权限校验等。代理模式可以有两种实现的方式,一

2018-02-05 18:37:51 257

原创 Java泛型

一、概述泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。以ArrayList举例,在不指定泛型类型的时候,它可以存放任意数据类型:List arrayList = new ArrayList()

2018-02-05 18:36:39 151

原创 Java反射学习笔记

一、概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。1. Class对象所有类都是在对其第一次使用时,类加载器首先会检查这个类的Class对象是否已被加载过,如果尚未加载,默认的类加载器就会根据类名查找对应的.class

2018-02-05 18:35:59 216

转载 Servlet简介

1. Servlet简介Servlet是sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:   1、编写一个Java类,实现servlet接口。   2、把开发好的Java类部署到web服务器中。 按照一种约定俗成的称呼习惯,通常我们也把实现

2018-02-03 01:11:59 211

转载 Spring注解+AOP+JDBC

注解@Required注释应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常。public class Student { private Integer age; private String name; @Req

2018-02-02 21:02:05 207

转载 Spring概述

数据访问/集成JDBC 模块提供了删除冗余的 JDBC 相关编码的 JDBC 抽象层。ORM 模块为流行的对象关系映射 API,包括 JPA,JDO,Hibernate 和 iBatis,提供了集成层。OXM 模块提供了抽象层,它支持对 JAXB,Castor,XMLBeans,JiBX 和 XStream 的对象/XML 映射实现。Java 消息服务 JMS 模块包含生产和消费的信息

2018-02-02 21:01:07 216

原创 Redis笔记1-简介

http://www.runoob.com/redis/redis-intro.html1. 特点(1)持久化(2)k-v 加 list,set,zset,hash等数据结构(3)master-slave模式的数据备份(4)单个操作是原子性的(5)多个操作支持事务,通过MULTI和EXEC指令包起来(6)支持publish/subscribe2. 安装2.1

2018-01-25 21:22:21 255

原创 Java继承相关的考点

1. 子类与父类的构造器1.1 super方法(1)super()表示子类在初始化时调用父类的空参数的构造函数来完成初始化。(2)一个类都会有默认的空参数的构造函数,若指定了带参构造函数,那么默认的无参构造函数,就不存在了。(3)子类构造器会默认调用super方法,用于初始化父类的成员。(4)如果父类定义了带参构造函数,但没有无参构造函数,而子类默认调用了父类的无参构造函数

2018-01-23 21:46:09 295

原创 Java多态时类的加载顺序

问题public class Base { private String baseName = "base"; public Base() { callName(); } public void callName() { System.out.println(baseName); } static cla

2018-01-23 21:27:35 842

转载 forward和redirect的区别

1. Redirect重定向实际是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。重定向一般用于避免用户的非正常访问。例如:用户在没有登录的情况下访问后台资源,Servlet可以将该HTTP请求重定向到登录页面,让用户登录以后再访问。在Servlet中,通过调用response对象的SendRedirect()方法,告诉浏览器重定向

2018-01-23 20:45:30 204

转载 Java常见代码块的作用与区别

代码块中声明的变量的作用域只在这个1. 局部代码块作用在方法当中,作用是控制变量的生命周期:public void show(){ { System.out.println("局部代码块运行!"); }}在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中,不想再用到它时,那么就没必要让x在内存中继续占用空间。因此就有了局部代码块。...

2018-01-23 19:42:14 4347

转载 Java中abstract、interface、static和final关键字

1. 抽象类(1)抽象方法: abstract void fun(); // 注意,这里不能有{},{}表示一个空的实现(2)抽象方法必须用abstract关键字进行修饰。 (3)抽象类必须在类前用abstract关键字修饰。 (4)如果一个类含有抽象方法,则称这个类为抽象类。没有抽象方法的用abstract关键字修饰的抽象类也是符合语法的,只是没有意义。 (5)抽象类同样可

2018-01-23 14:31:55 488

黑白棋(奥赛罗)Android APP完整源代码工程包

黑白棋在西方和日本很流行。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。它的游戏规则简单,因此上手很容易,但是它的变化又非常复杂。有一种说法是:只需要几分钟学会它,却需要一生的时间去精通它。 本资源系本人课程作业编写,包括完整的可编译的Android Studio 工程包,还包括可以直接在Android手机上安装的apk文件。该APP实现了所有黑白棋的功能和逻辑,还有背景音乐和翻转动画等效果。

2016-01-09

空空如也

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

TA关注的人

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