自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

盖世英雄

看前面黑洞洞,定是那巢穴,待俺赶上去杀他个干干静静········

  • 博客(73)
  • 资源 (6)
  • 收藏
  • 关注

原创 【IO】【文章摘录】

Java NIO原理图文分析及代码实现关于Java NIO的一些看法NIO与传统IO的区别java的io读写,缓冲区是如何提高读写效率的深入java NIO系列之缓冲区分析与源码解读深入分析 Java I/O 的工作机制

2020-11-25 08:48:31 78

原创 【JDK】【list接口】

概括数组:01234尾部头部栈:先进后出。只能在头部添加、删除、查看;单向队列:实现Queue接口。只能在尾部添加,头部只能查看和删除;双向队列:实现Deque接口即双端列表。尾部和头部都可以添加、删除、查看;arrayList底层是数组;linkedList底层是链表;ArrayDeque底层也是数组,并没底层是树的实现;ArrayList底层数据结构数组存取数据默认大小及扩容机制默认容量为10。没有奇偶限制。扩容:int newCapac

2020-11-25 08:48:22 87

原创 【JDK】【set接口】

概括此接口表示没有重复元素,且元素不保证顺序;此接口所以功能都是依据MAP接口下面数据结构来实现的;HashSet实现原理内部基于hashMap实现,利用hashMap的key不能重复来实现无重复元素功能;因此,hashSet相当于只键,值都是固定值,这个值定义为: Object PRESENT = new Object();特点元素不会重复;没有顺序;扩充了add方法,添加元素时候都会返回true或者false来表示是否有这个key值;TreeSet实现原理和ha

2020-11-25 08:48:09 74

原创 【MutiThread】【volatile关键字】

public class Client {private boolean stop = false;//没有volcatile标示private int num = 0;class A implements Runnable {public void run() { while (!stop) { num++; // System.out.println("aaaa");//打印一句话 //Thread.sleep(1000); //..

2020-11-25 08:47:03 92

原创 【MutiThread】【线程调度机制】

所谓多线程的并发运行,其实就是指各个线程轮流获得CPU的使用权,分别执行各自的任务。CPU的功能主要就是用于中断、内核以及用户进程处理,优先级分为中断>内核>用户进程,而线程何时获得CPU的使用权是由Java虚拟机说了算的。Java虚拟机的一项任务就是负责线程的调度。线程的调度是指按照特定的机制为多个线程分配CPU的使用权。有两种调度模型:1 分时调度模型2 抢占式调度模型。分时调度模型是让所有线程轮流获得CPU的使用权,并且平均分配每个线程占用的CPU的时间片。java虚拟机采用.

2020-11-25 08:46:17 183

原创 不同文件系统差异

文件系统区别文件系统区别主要在外存分配上以不同的方式存放;不同文件系统操作系统对于文件外存的访问方式都不一样,例如有连续的内存分配,也有显示的链接分配;例如FAT文件系统,在操作系统内部有个12位的文件分配表,表里面存放整个硬盘盘块(分区)的使用情况,例如某个文件占那个盘块,这样来读取文件的时候,首先回去这个文件分配表(FAT)里面去查找这个文件具体的物理磁盘位置信息,然后再进行读取;FAT12文件系统的分配表位数是12位的,所以叫FAT12;同理,为了满足更大的内存,又出现了FAT16文件系统.

2020-11-25 08:45:45 3737

原创 多线程和汇编联系

多线程主要是在80286以及以上的处理器中的功能,最早的32位多线程是80386,看了你另外的帖子,你好象懂点汇编语言,不知道你懂不懂80386汇编,他们的指令形式差不多,区别就在于工作机制和32位.如何你想搞多线程,首先要会386下的汇编,比起8086处理器,它了许多功能,如:分页机制(虚拟存储器),多线程等…还有很多功能,至于它多线程的工作机制主要是内存查表的方法,将所有程序的地址段地址和偏移地址放入GDT表和IDT表中,再用时钟频率的中断来不断读取这张表到cs:eip寄存器中和将cs:eip内容保存如

2020-11-25 08:45:39 752

原创 截图

2020-11-25 08:45:33 54

原创 进程的阻塞和挂起的区别(整理)

理解一:挂起是一种主动行为,因此恢复也应该要主动完成,而阻塞则是一种被动行为,是在等待事件或资源时任务的表现,你不知道他什么时候被阻塞(pend),也就不能确切 的知道他什么时候恢复阻塞。而且挂起队列在操作系统里可以看成一个,而阻塞队列则是不同的事件或资源(如信号量)就有自己的队列。理解二:阻塞(pend)就是任务释放CPU,其他任务可以运行,一般在等待某种资源或信号量的时候出现。挂起(suspend)不释放CPU,如果任务优先级高就永远轮不到其他任务运行,一般挂起用于程序调试中的条件中断,当出现某个条.

2020-11-25 08:45:27 1861

原创 文件描述符

每一次打开一个文件时候,这个进程(操作系统进程)内部都会产生一个与文件相对应的一个数据结构,这个结构里面通常存放一些操作这个文件的所有属性,例如文件读取到那个位置,所以里面肯定会有个POS值,当有很多文件打开的时候,自然就会有很多类似的数据结构来存储文件的属性信息,然后,这个所有的数据结构又会全部存放在一个数组里面,每个数组元素的值就是数据文件结构的位置,当然如果有两个操作都打开同一个文件,那么就会有连个不同的索引值,指向同一个文件结构体。而数组的每个元素的位置就叫做“文件描述符”即0,1,2,3,4··.

2020-11-25 08:45:20 253

原创 栈和堆

对于栈来说,CPU或者说硬件设备有专门的栈寄存器,同时CPU为此有相应的栈操作指令集,当然也就有相应的硬件支持,指令分别是push,pop,可以控制栈寄存器的指针向上或者向下移动,例如Java的方法执行,因此汇编操作这两个指令时候,就会被编译成相应的栈指令,进行操作,所以毋容置疑,直接从硬件的操作,绝对是最快的。正是有这样的操作指令,他也就描述了栈的先进先出数据结构,至于栈的内存空间,自然也就是操作系统内核来操作这些栈指令,来进行栈内存管理。堆,其实准确的说就是满足堆内存性质的一种数据结构。这种数据结构.

2020-11-24 08:47:33 406

原创 指令集--汇编--驱动程序-操作系统

无论AMD还是inter名牌的CPU,硬件厂商都会提供各自CPU的驱动程序,这个驱动程序是所有系统的最底层,他上层可以是操作系统,也可以是汇编语言,因此汇编语言没有操作系统也是可以运行的,或者汇编语言和操作系统没有什么关系;指令集是最底层的指令,每个不同的硬件CPU都有特定的指令集集合;汇编语言是直接操作指令集系统,第一点已经说过,他其实经过编译器然后转换成指令集,当然,这个编译器也是厂商提供的;驱动程序也是依据自身的硬件设置需求,然后根据指令集完成驱动程序的开发;因此,比如I/0的一些控制方式,如.

2020-11-24 08:47:23 1244

原创 文章

浅谈操作系统对内存的管理缓存一致性

2020-11-24 08:47:17 60

原创 JVM和OS内存数据交互

JVM启动申请多大的内存;java 启动的时候会按照配置参数分配一定的内存空间,通过OS预先分配的内存空间大小是-Xms的大小,而不会是-Xmx的大小,许多空间也只有是在真正使用的时候才分配的;当创建对象的时候,内存的分配是有JVM和OS交互完成的;数据为什么经过多次的拷贝才能到IO?当向OS申请到一定内存之后,OS就不在管理了,因为对于OS来说这些内存空间已经给JVM了,她并不知道什么时候来释放这些各个对象的内存空间,这些只有JVM自己知道,因此,JVM的对象都是有JVM来管理的;.

2020-11-24 08:47:10 410

原创 【IO】深入java NIO系列之缓冲区分析与源码解读

在进行NIO 缓冲区的介绍之前,我们需要理解以下概念:缓冲区操作进程执行IO操作,向操作系统发起请求,操作系统要么向缓冲区中写入数据,要么将缓冲区中的数据排干数据从磁盘移动到进程的内存区域整个过程:进程发起read()系统调用,要求其缓冲区被填满,内核随即要求磁盘控制硬件发送命令,磁盘控制器直接将数据写入内核的内存缓冲区中,该过程通过DMA来完成,无需主CPU协助,当磁盘控制器将内核缓冲区填满,内核随即将数据复制到进程对应缓冲区中。 这里涉及到内核空间和用户空间的概念内核空间:内核空

2020-11-24 08:47:02 136

原创 基本概念

接口是指两种硬件之间的连接电路,值得注意的是,接口和端口是两种不同的感念,端口是指连接电路中的一些寄存器,这些寄存器分别用来存放数据信息、控制信息、和状态信息。相应的端口分别称为数据端口、控制端口和状态端口。若干个端口加上相应的控制逻辑才组成接口。cpu通过输入指令、从端口读入信息,通过输出指令,可将信息写入端口中。如图5.28IO是针对内存来讲得,只要与内存程序通讯的就可以理解为IO。比如向硬盘写读数据,都需要把数据放入内存之后,然后CPU处理,内存就是一个数据的中转站,所以只要经过内存就是一种..

2020-11-24 08:46:56 117

原创 CPU缓存刷新的误解

时间 2014-01-02 14:01:56 segmentfault资讯原文 http://segmentfault.com/a/1190000000375559即使是资深的技术人员,我经常听到他们谈论某些操作是如何导致一个CPU缓存的刷新。看来这是关于CPU缓存如何工作和缓存子系统如何与执行核心交互的一个常见误区。本文将致力于解释CPU缓存的功能以及执行程序指令的CPU核心如何与缓存交互。我将以最新的Intel x86 CPU为例进行说明,其他CPU也使用相似技术以达到相同目的。绝大部分常见的现

2020-11-24 08:46:47 455

原创 计算机硬件组成

2020-11-24 08:46:38 124

原创 截图

2020-11-24 08:46:32 146

原创 内存对齐

内存地址对齐,是一种在计算机内存中排列数据(表现为变量的地址)、访问数据(表现为CPU读取数据)的一种方式,包含了两种相互独立又相互关联的部分:基本数据对齐和结构体数据对齐 。为什么需要内存对齐?对齐有什么好处?是我们程序员来手动做内存对齐呢?还是编译器在进行自动优化的时候完成这项工作?在现代计算机体系中,每次读写内存中数据,都是按字(word,4个字节,对于X86架构,系统是32位,数据总线和地址总线的宽度都是32位,所以最大的寻址空间为232 = 4GB,按A[31,30…2,1,0]这样排列,但是

2020-11-24 08:46:23 786

原创 文章

你不知道的FileInputStream的秘密同步和异步、阻塞和非阻塞深入java NIO系列之缓冲区分析与源码解读深入分析 Java I/O 的工作机制IO的分层IO性能的重要指标文件系统从Java视角理解CPU缓存(CPU Cache)...

2020-11-23 08:40:16 86

原创 规范

基础规范表、字段必须要有中文注释,切注意更新注释;命名规范库名,表名,列名必须用小写,采用下划线分隔,见名字知意思库名,表名,列名必须见名知义,带有自述性,长度不要超过32字符t_xxx开头表设计规范表必须有主键,推荐使用UNSIGNED整数为主键。无主键,在主从同步时候,会导致备库死掉;建议将大字段,访问频度低的字段拆分到单独的表中存储,分离冷热数据列设计规范使用TINYINT来代替ENUM必须把字段定义为NOT NULL并设默认值单表列数必须小于30;禁止使用t

2020-11-23 08:40:07 50

原创 设计原则

经验扩展性:是否对后期的业务开发,拥有扩展功能。这也是架构设计和基础开发的区别;字段冗余原则相关字段是否变化:例如订单存储商品的成本价,批发价等,这些在后期是会变化的,因此下单时候需要存储当时的以便追踪当时订单的价格情况;性能问题:如果这个字段数据操作中频繁使用,需要冗余。例如退款时候,需要用户ID,而且是异步任务在处理,如果此时不容易用户id,任务处理时候就需要调用接口来获取用户ID,造成操作不方便和性能问题,此时就需要容易会员ID字段;是否方便查询:正常严格按照也对对象来设计表,但是有时候为

2020-11-23 08:40:00 111 1

原创 Mysql操作命令

文章备份用户管理https://www.cnblogs.com/clsn/p/8047028.htmlhttps://blog.csdn.net/typa01_kk/article/details/49126365https://blog.csdn.net/anzhen0429/article/details/78296814https://www.cnblogs.com/jiuyi/p/6211275.htmlhttps://blog.csdn.net/u014313075/article/d

2020-11-23 08:39:51 120

原创 SQL优化原则

当多个单列索引建立时候,然后SQLwhere条件后面分别用这几列作为条件,那么此时只有一个索引有效;SQL查询事件有两部分组成:查询本身的计算时间和查询前的等待时间。经常索引影响的是前者,而锁机制影响的就是后者;Myisam:采用的是表级别的的锁定,即在有多个查询时候不进行锁定,一旦有更新操作,就进行操作。因此适合查询次数很多,但是更新比较少的应用系统。尽量使用查询缓存。当有很多相同的查询被执行多次的时候,这些数据就会放到缓存里面,但是需要注意的是这些数据没有被修改过,如果这条数据的某一个字..

2020-11-23 08:39:42 320

原创 文章

以B tree和B+ tree的区别来分析mysql索引实现B-tree&B+tree数据结构中的树mysql explain讲的比较清楚的Mysql Innodb 索引原理mysql show processlist命令 详解一台MySQL数据库启动多个实例怎么去看懂mysql的执行计划关于MySQL的lock wait timeout exceeded解决方案...

2020-11-23 08:39:35 53

原创 缓冲区大小及限制

TCP输出下图展示了应用进程写数据到TCP套接口的过程。每一个TCP套接口有一个发送缓冲区,我们可以用SO_SNDBUF套接口选项来改变这个缓冲区的大小。当应用程序调用write时,内核从应用程序进程的缓冲区中拷贝所有数据到套接口的发送缓冲区。如果套接口的发送缓冲区容不下应用程序的所有数据(或是应用程序的缓冲区大于套接口发送缓冲区,或是套接口发送缓冲区还有其他数据),应用进程将被挂起(睡眠)。这里假设套接口是阻塞的,它是通常的缺省设置(还有非阻塞的套接口)。内核将不从write系统调用返回,直到应用程

2020-11-23 08:39:28 3224

原创 计算机网络知识汇总

TCP为什么要三次握手,不是两次四次?.note原文地址:http://www.cnblogs.com/leetieniu2014/p/5843709.html因特网因特网是当今世界上最大的网络, 是”网络的网络”. 即因特网是所有网络互连起来的一个巨型网络.因特网的组成 :边缘部分 : 主机核心部分 : 大量网络和连接这些网络的路由器(此路由器不是我们家用的路由器)以太网以太网是现在最常用的局域网通信协议, 以太网上传输的是MAC帧. 由于以太网同一时间只允许一台计算机发送数据, 所以必须

2020-11-23 08:39:20 452

原创 同一端口如何区分不同的Socket

为了区分不同应用进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP 或 UDP)和使用的端口号。Socket的原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。accept()产生的Socket端口号是多少?要写网络程序就必须用Socket,这是程序员都知道的。而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,So

2020-11-23 08:39:10 1229

原创 运输层和应用层

运输层协议是用代码实现的服务组件,可以传递数据包,常说的三次握手,准确的说就是指tcp建立连接的三次请求、确认握手,只有tcp建立了连接,上面的应用层协议才可以依靠他进行数据传递。另外,tcp处于连接或者断开状态,都是依据tcp数据包头部的连接和断开状态位来确定的。例如,一个应用进程想建立TCP连接,例如浏览器,他就会调用OS的TCP接口,把头部的连接状态位改变,然后发送请求,如果他想断开连接,那么就可以吧TCP的报文头部断开位进行重置,这样就向服务器发送了断开请求的连接。从这里可以发现,浏览器是可以控..

2020-11-23 08:39:03 987

原创 HTTP协议与操作系统接口

协议如何通信现代网络操作系统,系统向程序员提供了基于Socket的TCP/IP接口,在操作系统的核心中实现了TCP/IP协议的几个基本层次为:________;Socket接口属于操作系统提供用户接口的________接口。  【分析】传输层协议、网络层协议和物理接口层是由操作系统内核来实现的。而用户并不能感觉到操作系统的工作,用户能知道的是应用程序。而应用程序依靠编程界面与内核联系,各种应用程序都是通过编程界面来开发的。  编程界面有两种形式:  由内核直接提供系统调用;  以库函数方式提供的各

2020-11-21 08:36:51 654

原创 socket读写缓冲区.

关于socket的发送缓冲区网上有诸多的讨论,这里个人小结一下,希望对以后有些帮助。首先,看下面一段代码,//设定socket参数#define dfUdpRcvCacheSize 2561024 //256//接收缓冲区大小(字节)int optval,optlen = sizeof(int);optval=dfUdpRcvCacheSize; //设置读缓冲区err=setsockopt(iSock,SOL_SOCKET,SO_RCVBUF,(char)&optval,optlen)

2020-11-21 08:36:40 982

原创 TCP 滑动窗口的简介

TCP的滑动窗口主要有两个作用,一是提供TCP的可靠性,二是提供TCP的流控特性。同时滑动窗口机制还体现了TCP面向字节流的设计思路。TCP 段中窗口的相关字段。TCP的Window是一个16bit位字段,它代表的是窗口的字节容量,也就是TCP的标准窗口最大为2^16-1=65535个字节。另外在TCP的选项字段中还包含了一个TCP窗口扩大因子,option-kind为3,option-length为3个字节,option-data取值范围0-14。窗口扩大因子用来扩大TCP窗口,可把原来16bit的

2020-11-21 08:36:30 1354

原创 TCP_IP,http,socket,长连接,短连接

概要:之前对这几个概念有点糊涂,查阅了些资料,稍微概括下他们的区别吧。如有错误,请拍~~~先看图:TCP/IP是什么?TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。Socket是什么呢?Socket是应用层与TCP/IP协议族通信的中间软件抽象层,一组接口,把复杂的TCP/IP协议族隐藏在Soc

2020-11-21 08:36:19 149

原创 TCP标志位详解及tcp拦截配置

http://blog.sina.com.cn/s/blog_6b6bf3830101ag0r.htmlTCP标志位URG:此标志表示TCP包的紧急指针域(后面马上就要说到)有效,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据;ACK:此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中;有两个取值:0和1,为1的时候表示应答域有效,反之为0;PSH:这个标志位表示Push操作。所谓Push操作就是指在数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中

2020-11-21 08:36:10 1419 1

原创 TCP为什么要三次握手,不是两次四次?

第三次握手——革命斗争中的通信故事在革命战争影片中,经常会看到英勇的解放军战士背着步话机在喊“长江长江,我是黄河,听到请回答。”很明显,这是呼号为黄河的一方想找呼号为长江的另一方说事,为了保证影片的节奏,导演往往把后面的联络过程省略了,其实后面还有两步,长江听到黄河的呼叫后要回答“黄河黄河,我是长江,我听到了你,请回答。”这叫做第二次握手。黄河听到长江的呼叫后还要回答“长江长江,我是黄河,我听到了你,现在请你收报”,这是第三次握手,三次握手成功后,才能在电台里传送工作报文。为什么必须三次握手后才能工作呢?

2020-11-21 08:36:00 337 1

原创 TCP协议详解(理论篇

TCP协议详解(理论篇)与UDP不同的是,TCP提供了一种面向连接的、可靠的字节流服务。面向连接比较好理解,就是连接双方在通信前需要预先建立一条连接,这犹如实际生活中的打电话。助于可靠性,TCP协议中涉及了诸多规则来保障通信链路的可靠性,总结起来,主要有以下几点:(1)应用数据分割成TCP认为最适合发送的数据块。这部分是通过“MSS”(最大数据包长度)选项来控制的,通常这种机制也被称为一种协商机制,MSS规定了TCP传往另一端的最大数据块的长度。值得注意的是,MSS只能出现在SYN报文段中,若一方不接

2020-11-21 08:35:49 446

原创 架构理论

什么是架构?系统与子系统关系?模块和组件关系?框架和架构?架构设计的目的解决系统复杂性带来问题架构设计复杂来源高性能单机: 主要是操作系统对硬件的资源调度。为了提高性能,操作系统喂我们提供批处理机制、进程、线程、等等,但是IO的操作、进程的调度是会降低性能的;集群:当一台服务器无法满足性能要求时候,就需要多台机器集群实现。但是集群实现存在很多技术复杂度。例如任务分配,不同任务依据任务分配器分配道不同机器来运行,任务分配器要考虑任务分配算法,以及和服务器之间连接检测、中断处理等等;任务

2020-11-21 08:35:34 665 2

原创 架构原则

高内聚、低耦合是所有人其他设计原则的原则,其他原则都是基于这个原则基础上扩展的;高内聚:每个对象职责尽可能保持聚焦和单一,易于管理和理解低耦合:对象之间的耦合度极可能低场景服务之间通过 HTTP/JSON等轻量机制通信,服务之间不强耦合。控制器把职责赋予系统、设备或者子系统的表示类 (门面控制器),或者某个用例的表示类 (用例控制器),让控制器接收事件并协调整个系统的运作。例如编写调度器,调度器控制服务启动、运行、暂停等。微服务设计时候,也可采用类似设计思想间接在两个或

2020-11-21 08:35:21 251

原创 分布式概念

CAP定理场景例如A、B、C两个节点,集群部署,A节点写数据,会通过网络同步到B、C节点,他们存储的数据一样,很像MYSQL的主从复制。一致性(Consistency)这里一定要注意,指的是“强一致性”,即每次无论从哪个节点读取都获得最新的数据即最近写入数据,否则就返回一个错误;可用性(Availability)每次请求无论到那个节点上,都能获得一个(非错误)响应,但不能不保证返回的是最新写入的数据分区容忍性(Partition Tolerance)指服务节点之间,若发生网络

2020-11-21 08:35:03 156

计算机组成原理(第2版)

计算机组成原理 学习底层知识必须掌握的一门课程。

2014-10-07

自己动手写操作系统

自己动手写操作系统 作为了解操作系统很好的入门文档

2014-10-07

jquery.js API

中文版得jquery 的API,提供详细的说明

2011-09-01

网上商城代码以及详细解释

网上商城的代码 以哎呦,不错哦。哎呦,不错哦。哎呦,不错哦。哎呦,不错哦。

2011-08-09

xml 和 html区别

xml和html的区别 以及dom文档内部的使用问题 和对象的具体概念

2011-08-09

空空如也

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

TA关注的人

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