自定义博客皮肤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)
  • 资源 (5)
  • 收藏
  • 关注

原创 TIME_AWAIT 和CLOSE_WAIT.md

### 1. TCP连接建立与断开过程建立:首先,客户端主动进行连接,客户端处于SYN_SENT状态,发送同步码SYN=J,服务器收到SYN后状态为SYN_RCVD;然后,server发送SYN=K , ACK=J+1(对SYN=J进行确认),client接受SYN和ACK建立连接,处于ESDABULISHED状态;client 发送 ACK=K+1(确认K收到),server收到ACK建立连接ES

2017-10-29 18:36:05 896

原创 Consul 微服务注册与发现

1. 创建Spring Boot项目IDE :IntelliJ IDEAFile ->new->project->Spring Initializer 创建Spring Boot项目pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht

2017-10-22 21:25:26 1616

原创 Java 9 新特性之模块化和进程API

Java 9 新特性:https://docs.oracle.com/javase/9/whatsnew/toc.htm#JSNEW-GUID-C23AFD78-C777-460B-8ACE-58BE5EA681F61. Java Platform Module System 模块化系统模块化系统是Java 9 最大的一个特性,模块之间存在相互的依赖关系,可以导出一个公共的API,并且隐藏实现的细节

2017-09-24 18:45:34 412

原创 事务

1. 概述 事务是由一组SQL语句组成的访问并更新数据库中各种数据项的一个程序执行单元。1.1 事务的特性(ACID)原子性(A):一个事务是一个不可分割的工作单位, 事务中任何一条SQL语句执行失败,整个事务将失败,执行成功的SQL语句将进行回滚。一致性(C):事务将数据库从一种状态转变为另一种一致的状态,事务开始前和结束后数据库的完整性约束没有被破坏。隔离性(I):事务的隔离性要求每个事务

2017-09-17 18:13:53 375

原创 MySQL InnoDB存储引擎中的锁(二)

1. 锁的算法InnoDB存储引擎中有三种行锁算法:Record Lock:单个行记录上的锁Gap Lock: 间隙锁,锁定一个范围,但不包含记录本身Next-key Lock: Gap Lock + Record Lock, 锁定一个范围, 并且锁定记录本身1.1 Next-Key LockNext_Key Lock 是结合了Gap Lock 和 Record Lock的一种锁定算法,例如

2017-09-17 18:04:36 377

原创 MySQL InnoDB索引

1. InnoDB索引概述InnoDB可支持如下几种索引:B+树索引:由平衡二叉树演化而来,给定键值不能找到具体的行,只是找到数据行所在的页,然后将该页读入内存,再在内存中进行查找想要的数据.全文索引哈希索引:InnoDB支持的哈希索引是自适应的,会根据表的使用情况自动为表生成哈希索引,不能人为干预一张表的是否生成哈希索引.2. B+树索引B+树索引的一个特点是“高扇出性”(可理解为每个节点

2017-09-10 18:20:50 369

原创 MySQL InnoDB存储引擎中的锁

数据库锁(Lock)针对的对象是事务,用于锁定数据库中的表、页、行。一般lock的对象只有在事务commit或者rollback之后才会释放.1. 锁类型(InnoDB实现了两种行级锁)1.1行级锁共享锁 (S Lock):允许事务读一行数据排他锁(X Lock):允许事务删除或者更新一行数据1.2锁的兼容若事务T1获得了行r的共享锁,则事务T2可以立即获得行r的共享锁,该情况称为锁兼容.若事务

2017-09-02 17:49:10 333

原创 首次安装配置hadoop2.6.5碰到的坑

1.安装编译hadoop时:hadoop2.6.5 依赖protoc2.5.02.hadoop2.6.5的配置文件在/etc/hadoop目录下3.需要将/etc/hadoop/yarn-evn.sh中 修改“JAVA_HOME=你的jdk目录”4.修改配置文件路径:/etc/hadoop/hadoop-evn.sh中export HADOOP_CONF_DIR=/opt/hadoop

2017-06-09 17:08:08 1447

转载 Synchronized 锁优化

文章转自:http://blog.csdn.net/u010723709/article/details/503416311 对象头与锁要了解Synchronized的锁,必须知道对象头是怎么回事。因此这个锁就保存在对象头中。Hotpot虚拟机的对象头分两部分信息,第一部分用于存储对象自身的运行时数据,如HashCode,GC分代年龄等,这部分数据长度在32位和64位虚拟机中分别为32bi

2017-03-28 19:40:17 531

原创 Java ThreadPoolExecutor 简单剖析

一、ThreadPoolExecutor概述1.简介ThreadPoolExecutor继承自AbstractExecutorService。线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定和管理资源(包括执行集合任务时使用的线程)的方法。每个 ThreadPoolExecutor 还维护着一些基本的统计数据,如完成的任务数

2017-03-22 15:52:43 316

原创 JVM指令重排导致Singleton双重锁定出错

指令重排导致单例模式失效我们都知道一个经典的懒加载方式的单例模式:public class Singleton {private static Singleton instance = null;private Singleton() { }public static Singleton getInstance() {if(instance == n

2017-03-16 15:56:38 1791

原创 java.util.concurrent.locks.ReentrantLock 源码剖析

ReentrantLock从jdk1.5开始引入,相对于synchronized关键字有较好的效率。方法摘要如下:方法摘要 intgetHoldCount()           查询当前线程保持此锁的次数。protected  ThreadgetOwner()           返回目前拥有此锁的线程,如果此锁不被任何线程拥有,则返回

2017-02-28 22:32:53 403

原创 Redis跳跃表实现

Redis在 redis.h中定义了跳跃表的节点和跳跃表的结构如下:typedef struct zskiplistNode { robj *obj; double score; struct zskiplistNode *backward; struct zskiplistLevel { struct zskiplistNode *forward;

2017-01-07 20:29:49 629

原创 Redis基本命令

结构类型操作stringget:获取指定键对应的值,set:设置指定键的值,del:删除指定键对应的值(适用于所有元素)listrpush:插入链表右端lrange:获取给定范围的所有值(-1:最后一个)lindex:获取指定位置的单个元素lpop:从最左边弹出一个值,并返回该值sets

2016-12-03 21:19:23 336

原创 Java多线程之 生产者与消费者

JDK的Concurrent包中的BlockingQueue接口,增加了可阻塞的插入和获取等操作。当队列为空时,获取操作被阻塞;当队列满时,插入操作被阻塞。通过BlockingQueue可以和方便的实现生产者与消费者模式。LinkedBlockingQueue(一个BlockingQueue的实现类)通过分别在插入和获取操作上加不同的Reentrant锁,来实现插入操作的同步和获取操作的同步,

2016-11-26 10:45:45 335

转载 Java并发编程(一) Java内存模型

物理计算机并发问题在介绍Java内存模型之前,先简单了解下物理计算机中的并发问题。由于处理器的与存储设置的运算速度有几个数量级的差距,所以现代计算机加入一层读写速度尽可能接近处理器的高速缓存来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存中,这样处理器就无须等待缓慢的内存读写了。基于高速缓存的存储交互引入一个新的问题

2016-09-27 16:12:57 268

转载 Java并发编程之Java内存模型

物理计算机并发问题在介绍Java内存模型之前,先简单了解下物理计算机中的并发问题。由于处理器的与存储设置的运算速度有几个数量级的差距,所以现代计算机加入一层读写速度尽可能接近处理器的高速缓存来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存中,这样处理器就无须等待缓慢的内存读写了。基于高速缓存的存储交互引入一个新的问题

2016-09-27 16:08:58 311

转载 new T 与new T()的区别

①T *p =new T;②T *p =new T();这两类用法不同点的总结。 1.若T为类类型,且用户定义了构造函数,则两种形式的效果完全相同,都会调用这个定义了的构造函数来初始化内部成员变量,但是如果此构造函数中并未对成员变量初始化,则这个时候内部的成员变量进行默认初始化——值是未定义的。2.若T为类类型,但是用户并没有定义任何构造函数,则我们可以知道

2016-09-20 16:27:15 5699

原创 JVM——体系结构、生命周期简述

1. JVM 体系结构如图所示,JVM包括类装载器子系统、运行时数据区、执行引擎。类装载器子系统根据给定的权限的名来装入类型(类或者接口)。执行引擎负责执行那些包含在被装载类的方法中的指令。运行时数据区包含方法区、堆、Java栈、PC寄存器、本地方法栈。类装载器子系统:在JVM中负责查找并装载类型的那部分被称为类装载器子系统。JVM中有两种类装载器:启动类装载器和用户自定义

2016-08-24 20:38:10 1589

转载 红黑树

文章转自:http://www.cnblogs.com/fornever/archive/2011/12/02/2270692.html红黑树(RBT)的定义:它或者是一颗空树,或者是具有一下性质的二叉查找树:1.节点非红即黑。2.根节点是黑色。3.所有NULL结点称为叶子节点,且认为颜色为黑。4.所有红节点的子节点都为黑色。5.从任一节点到其叶子节

2016-08-23 19:55:54 325

原创 结合Java反射用简单工厂模式改进抽象工厂模式

前一篇简单介绍了抽象工厂模式,结合Java的反射机制,可以用简单工厂模式来改进抽象工厂模式,减少类的数量,增加可维护性。UML图如下:去除IFactory、SqlserverFactory和AccessFactory三个工厂类,取而代之的是DataAccess类,用一个简单工厂模式来实现。代码示例:1. 两个表User和Department的实体类

2016-08-20 12:01:50 2722 4

原创 抽象工厂模式

试想一个应用,在开发时使用的是MySQL数据库,由于各种原因现在需要将底层的数据库更改为Oracle。由于数据库使用的命名空间不同,用到的方法不同,所以很难直接进行替换,往往需要大量的时间进行代码的修改。因此,考虑将DAO层的设计尽可能的降低耦合,一个数据库有多个表,对每个表的操作分别进行封装,抽象出一个对该表进行操作的接口,然后不同的数据库类型(myslq、oracle...),分别进行实现。结

2016-08-20 10:43:24 517

转载 B-Tree 、B+树、B*树

大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下。1.      B-TreeB 树是为了磁盘或其它存储设备而设计的一种多叉平衡查找树。许多数据库系统都一般使用B树或者B树的各种变形结构,如下文即将要介绍的B+树

2016-08-17 20:55:50 12496 1

原创 观察者模式

观察者模式又称为“发布-订阅模式”。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象。这个主题对象在发生状态变化时,负责通知所有观察者对象,使观察者对象能自动更新自己。Subject类一般用一个抽象类或者接口实现。它把所有对观察者对象的引用保存在一个聚集里边,每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,并notify所

2016-08-16 19:56:20 504

原创 Java String、StringBuffer和StringBuilder

1. String String 类代表字符串。Java 程序中的所有字符串字面值(如"abc" )都作为此类的实例来实现。字符串是常量;它们的值在创建之后不能改变。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享它们。String 类包括的方法有:检查序列的单个字符;比较字符串;搜索字符串;提取子字符串;创建字符串副本,在该副本中,所有的字符都被转换

2016-07-30 11:47:44 231

原创 常用JAVA集合框架(Collection、List、Set、Map)

1.常用集合框架结构2. List  2.1 ArrayListList 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于Vector 类,除了此类是不同步的。)每个ArrayList 实例都有一个容量。该容量是指用来存储列表元素

2016-07-29 20:17:18 4700

原创 句柄与指针

句柄是一个32位的整数,实际上是一个Windows在内存中维护的一个对象(窗口等)内存物理地址列表的整数索引。因为Windows的内存管理经常会将当前空闲的对象的内存释放掉,当需要时再重新提交到物理内存,所以对象的物理地址是变化的,不允许程序直接通过物理地址来访问对象。程序将想要访问的对象的句柄传递给系统,系统根据句柄检索自己维护对象列表就能知道程序想要访问的对象的及其物理地址了。句柄是一种指

2016-04-20 22:03:23 958

原创 《More Effective C++》 Item M2:尽量使用C++风格的类型转换

c++有四种类型转换:static_cast、const_cast、dynamic_cast、reinterpret_cast。1.static_cast(expression)static_cast在功能上基本上与C风格的类型转换一样强大,含义也一样。它也有功能上限制。例如,你不能用static_cast象用C风格的类型转换一样把struct转换成int类型或者把double类型转换成指

2016-04-12 10:35:32 358

原创 《More Effective C++》 Item M1:指针与引用的区别

C++中指针与引用的区别主要体现在两点:引用不可以指向空值、引用总是指向初始化时指定的对象。1、因此,当你使用一个变量并让它指向一个对象,但是该对象有时可能也不指向任何对象时,应该把该变量声明为指针;相反如果变量肯定指向一个对象,不允许变量为空,此时应把变量声明为引用。但是,如下情况应该注意: char *pc = 0; // 设置指针为空值 char& rc = *

2016-04-11 16:31:47 400

原创 MPICH2 Windows 多节点并行计算Demo

刚刚接触MPICH,入手写了一个计算A * B(A 矩阵,B 向量)的测试程序,以熟悉MPICH。程序以主从模式进行设计,主节点负责分发计算任务到不同的计算节点,然后接收从计算节点发送来的计算结果。应用OpenThread线程库,在主机端创建数据接收子线程,专门负责接收计算结果。程序代码如下:数据接收子线程:#pragma once#include #include "Open

2016-03-10 15:39:23 1371

原创 MPICH Demo测试__两主机进行通信出现的问题及解决方案

最近利用VM虚拟机搭建MPICH2 + windows的并行环境,开始入门MPI 编程。运行MPI自带的CPI.exe没有问题,根据教程写了一个两主机进行数据发送和接受的Demo时运行出错,代码如下:#include "mpi.h"#include #include #include #pragma comment (lib, "mpi.lib") void main(int arg

2016-03-07 15:39:56 440

原创 OSG Note

1. osg::NodePath 在Node中定义,

2016-02-25 11:00:18 510

转载 BSP树

原理: 首先,将整个场景包围在一个AABB(外包盒)中,然后以递归形式将此外包盒分为若干比较小的盒子。通常是选取盒子的一个轴,生成与之垂直的平面,将其分为两个小盒子。一般是将盒子分为完全相同的两个部分。与分割平面相交的物体,或存储在此层次上,成为两个子集中的一员;或被这个平面分割成两个不同的物体。重复这个平面分割过程,就可以对每个AABB进行递归细分,直到满足某个标准。通常这个标准是

2015-12-09 17:41:33 901

原创 三线性插值计算重采样点数值

三线性插值是一种较为经典的计算重采样点数值的方法,它将距离重采样点最近8个顶点的权重Wi(i=0,1,2…7)分别计算出来,在进行相加后得到重采样点值。如图所示:假设立方体8个顶点上的数值分别为Pi(i=0,1,2…7),三个坐标轴方向X,Y,Z,顶点与顶点间的距离为1,则每个采样点Pi权重可由如下算式分别得出: W0 = (1 - x)(1 - y)(1 - z) W1 = x(1 - y

2015-12-07 16:46:55 4033

原创 OSG更新回调(UpdateCallback)与事件回调(EventCallback)的相似之处和不同之处

相似之处:(1)由专门的访问器对象 _updateVisitor负责场景图形的更新遍历(2)所有的节点和Drawable几何体对象都可以调用setUpdateCallback设置回调(3)通过实现NodeCallback::operator()或者DrawableCallback::update()函数在相应的对象中添加自定的回调操作不同之处:(1)每个用户交互或者系统

2015-12-03 11:37:49 4465

原创 CUDA二维网格模型下线程索引的计算

用于线程索引计算的CUDA运行时库提供的变量gridDim.x —— 线程网格X维度上线程块的数量gridDim.y —— 线程网格Y维度上线程块的数量blockDim.x  —— 一个线程块X维度上的线程数量blockDim.y  —— 一个线程块Y维度上的线程数量threadIdx.x —— 线程块X维度上的线程索引threadIdx.y ——

2015-11-23 16:58:11 4054

转载 CUDA线程模型

线程格:由 gridDim.x 个线程块组成 线程块:由 blockDim.x 个线程组成 下面线程格就是由 4 个线程块组成,其中每个线程块有4 个线程。 定位某个线程的方法:threadIdx.x 表示该线程于所在线程块的索引blockIdx.x 表示线程块于线程格的索引 根据 blockIdx.x 找到线程块,再根据 threadI

2015-11-21 10:00:24 657

原创 OSG updateTraversal(更新遍历)

OSG 的更新遍历函数updateTraversal 在系统每帧的执行过程中有着重要的地位,除了处理用户的更新回调对象之外,还要负责更新摄像机的位置,并且更新分页数据库DatabasePager 和图像库ImagePager 的内容。这里我们首先对它的流程做一个概述:1、获取函数的起始时刻。2、使用预设的更新访问器_updateVisitor,访问场景图形的根节点并遍历其子节点,实

2015-08-07 14:53:58 2318

原创 OSG更新遍历(updateTraversal)流程

OSG 的更新遍历函数updateTraversal 在系统每帧的执行过程中有着重要的地位,除了处理用户的更新回调对象之外,还要负责更新摄像机的位置,并且更新分页数据库DatabasePager 和图像库ImagePager 的内容。这里我们首先对它的流程做一个概述:1、获取函数的起始时刻。2、使用预设的更新访问器_updateVisitor,访问场景图形的根节点并遍历其子节点,实

2015-08-03 11:13:36 1368

原创 OSG 视景器、漫游器、摄像机与场景的关系

视景器包括几个最主要的组件:漫游器_cameraManipulator,用于实现交互式的场景漫游;事件处理器组_eventHandlers,负责处理视景器的事件队列_eventQueue,主要是键盘/鼠标等事件的处理;场景_scene,它包括视景器所对应的场景图形根节点,以及用于提高节点和图像数据处理速度的两个分页数据库;摄像机_camera 和_slaves,前者为场景的主摄像机

2015-08-02 16:01:45 3504

mpich2-1.4.1p1-win-x86-64.msi

mpich2 windows平台下安装文件,64bit

2016-03-02

Visual Assist 破解工具 VA_X.dll

Visual Assist 破解工具 VA_X.dll

2015-01-23

opengl+glew-win32bit

opengl+glew-win32bit opengl和glew-win32bit

2014-12-20

glew-1.8.0-win64.zip

glew-64bit opengl 扩展库64位版本

2014-12-20

Matlab中文帮助文档

Matlab中文帮助文档

2012-10-11

空空如也

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

TA关注的人

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