自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (6)
  • 收藏
  • 关注

原创 Java-AbstractQueuedSynchronizer

Java 中的 ReentrantLock Semaphore ReentrantReadWriteLock等 这些同步的基础都是依靠AbstractQueuedSynchronizer的类来实现。为了方便起见下面使用AQS代替AbstractQueuedSynchronizer。从ReentrantLock看AQS: 对于ReentrantLock 通常使用的如下: reentrantL

2016-03-14 14:49:15 523

原创 Netty的FastThreadLocal

Summary: Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network

2016-03-04 14:19:19 3217

原创 java内存模型

java内存模型首先计算机运行程序需要将内存里面的数据读取到CPU中,CPU对数据进行处理,然后CPU从内存读入到CPU这种代价是很大的,所以CPU根内存又加入了一道高速缓存 假设一个线程(CPU1)为变量 a赋值 a = 3; 那么CPU2,CPU3,在上面条件下能看到3这个值?如果缺少了同步,就会有很多因素导致CPU1,CPU2 可能无法立即甚至永远看不到这个a的值被CPU1更改的结果,因为

2016-03-02 14:50:47 407

原创 深入分析ConcurrentHashMap

再多线程的情况下,如果使用HashMap,就会导致死循环,导致cpu利用率接近100%,所以如果是并发的情况不要使用HashMap 导致死循环主要是这段代码,当在多线程的情况由于没有同步导致,着段代码在扩容的时候会执行 do { Entry<K,V> next = e.next; //假设线程一执行到这里就被调度挂起了,当再次获得执行的时候,数据结构已经改变了,而线程却不知道

2016-02-24 13:43:37 631

原创 如何理解java 垃圾收集器

如何理解java 垃圾收集器1)java对象的创建是在java堆(heap)中,如本地变量和成员变量不在此区域。值得注意的是,类变量(static)静态成员的创建是在方法区(method area),方法区和堆区是被各个线程共享。2)垃圾收集是由Java虚拟机提供了一个机制,它通过回收可以回收的对象,来重新分配堆空间3)垃圾收集器让java 编程者脱离内存管理,而不是跟c++一样管理内存是每个使用它

2016-02-18 15:17:19 626

原创 使用netty建立websocket进行群聊

WebSocket 简介:WebSocket 规范定义了一种 API,可在网络浏览器和服务器之间建立“套接字”连接。简单地说:客户端和服务器之间存在持久的连接,而且双方都可以随时开始发送数据。第一次请求客户端发送的是http请求,请求头中包含websocket相关的信息,服务器端对请求进行验证,所以要添加一些http 的解码编码handler,同时也要添加WebSocket 的handler处理器,

2016-02-17 18:16:38 2228

原创 Netty与Google的protobuf使用

Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Event-Loop机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的

2016-02-14 21:35:47 498

原创 maven的聚合与继承的使用

简介:maven 用于构建我们的项目,帮组我们管理已一些依赖包 1,maven聚合在解释之前,先引入一个模块(module)的概念,我们在做开发的时候很喜欢将单独的功能,做一个独立的,让它与其他各个功能进行解耦。这样 做的目的是希望在开发的过程中不至于重复实现相同的东西,已经进一步降低开发的复制度和后面的可调整性拓展性。maven的聚合,就是将多个module合并在一起为某个module提供服务

2016-02-12 23:07:20 427

原创 事件驱动模型的角度来看看 JAVA NIO

## 事件驱动模型的角度来看看 JAVA NIO ## 事件驱动模型的角度来看看 java nio,先作知识的简单铺垫, 1,阻塞非阻塞 阻塞式I/O模型: (1)等待数据准备好; (2)从内核向进程复制数据。 2,非阻塞式I/O: 当所请求的I/O操作非得把本进程投入睡眠才能完成时,不要把进程投入睡眠,而是返回一个错误。进而不断的通过轮询方式来获取正确的结果 3,I/O多路复用:虽然I

2016-02-11 00:51:25 2627

原创 C语言中的数组与指针

在C语言中,有时候在写函数的时候,形式参数,有的是数组形式,有的是指针类型 其实编译器把数组的形式参数当作了指针类型 指针实参                                                                                                    fun1(int *ptr) { ptr[1] = 3 ;

2013-06-13 19:23:01 640

原创 微软一道笔试题目

此题目是冲一篇博客上面看到的http://blog.csdn.net/v_JULY_v/article/details/6057286,最后我下载了他的解答,发现有错误,准备直接看他解答的博客,结果没有发现,所以自己就在他的思想上,进行了,重新编写 题目是这样的, 一下是我的源代码 数据没有完全一样,在创建二叉树的时候,没有优化,懂那个意识就可了我觉得 #inclu

2013-04-07 21:48:42 645

原创 仿函数(functor function objects)

传递给算法的"函数参数",并不一定的是函数,可以使行为类似的函数对象.这种对象称为function object(函数物件),或者是functor(仿函数,跟函数有点一样,所以叫做仿函数呵呵) 1.什么是仿函数了? 你可以说,任何东西行为向函数,他就是函数,也就是一个对象可以向函数那样来使用 给出模型 class A{ return value operator()( arg(参

2013-03-28 23:09:01 801

原创 c++智能指针

auto_prt :它是(它所指向对象的拥有者),所以当自身对象被摧毁时候,该对象也将遭受摧毁,要求一个对象只有一个拥有者, 注意: auto_prt 不能使用new 来分配对象给他 #include #include using namespace std; template void bad_print(auto_ptr f){ cout }

2013-03-23 22:47:20 523

原创 数据结构_符号匹配

#include #include #include #define OK 1; #define ERROR 0 #define  STACK_SIZE 100   //储存空间的初始长度 #define  STACK_INC   10   //储存空间的增加长度 typedef char Elem; typedef struct   { Elem *base;//栈低指

2013-01-14 20:41:15 1105

原创 数据结构_行编辑

#include #include #include #define STACK_SIZE 100  //储存空间的容量 #define STACK_INC  10   //增加储存空间的容量 #define  OK 1 #define  ERROR 0 typedef int Elme; typedef struct   { Elme *base; Elme *top

2013-01-14 20:39:30 543

原创 数组的顺序表实现

#include #include #include #define  ERROR 0 #define  Ok   1; typedef char ElemType; #define MAX_ARRAY_DIM 8   //假设数组维数最大为8 typedef struct   { ElemType *base;    //数组元素基地址

2013-01-14 20:38:19 511

原创 C++复制构造函数

今天看了effect C++看到了,不知构造函数,就回忆了一下,然后再网上看了一些资料,就来总结一下 class Widget { public: Widget();   //default 构造函数 Widget(const Widget & rhs);   //copy 构造函数 Widget& operator=(const Widget& rhs);  //copy a

2013-01-14 19:26:18 436

转载 unix hash

1 概述 链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,但Hash链表查找的时间效率为O(1)。 设 计高效算法往往需要使用Hash链表,常数级的查找速度是任何别的算法无法比拟的,Hash链表的构造和冲突的不同实现方法对效率当然有一定的影响,然而 Hash函数是Hash链表最核心的部分,本文尝试分析一些经典软件中使用到的字符串Hash函数

2013-01-06 23:26:11 576

visual assit(vs助手)

visual studio 助手不必多少,你懂的

2015-03-08

visual gdb 4.2r

visual gdb 在Windows上面写Linux程序,通过vs配合,我的电脑是win7+vs2013可用的哦

2015-03-08

hadoop-eclipse-插件

hadoop-eclipse-plugin 1.1`.2 本人亲自测试 JAVAEE Version: Juno Service Release 2

2013-06-06

ajax后台数据时时刷新

ajax后台数据时时刷新,更加清醒,让你对ajax有更加深入的了解机制

2013-04-20

最小生成树prim算法

数据结构最小生成树,prim生成树,简单明白了,通俗易懂,学习数据结构必备,最小生成树,必备哦

2013-01-14

迷宫求解(基本原理)

迷宫求解用栈,讲述的基本原理.可以帮助理解递归的运作

2012-04-04

空空如也

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

TA关注的人

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