自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

像风一样的男人

菜鸟选手

  • 博客(19)
  • 收藏
  • 关注

原创 带缓冲的IO流和不带缓冲的IO流

先来看看不带缓存的I/O和标准(带缓存的)I/O都有那些不带缓存的I/O:       read,write,open......标准(带缓存的)I/O: fgets,fread,fwrite.....这里使用两个对应的函数进行比较:ssize_t write(int filedes, const void *buff, size_t nbytes)size_t fwrite(cons...

2018-10-15 10:33:09 1087

原创 如何分库分表

当数据大的时候,都会考虑分库分表的实现。分库分表可以在不同的层做。一般来说有以下几种:jdbc层:实现复杂,属于轻量级,对应用基本没有侵入性;缺点是不能复用数据库连接,在应用部署多的时候资源耗费大,不适于大规模部署。类似当当网的sharding-jdbc. ORM层:比如蘑菇街TSharding框架封装mybatis,实现简单。缺点是必须依赖ORM层,侵入性比较大。 DBProxy层:如c...

2018-09-17 15:36:48 4265

原创 状态机理解

有限状态机概念有限状态机简称就是状态机,因为一般的状态机的状态都是离散和可举的,即为有限,所以后面的介绍都不加有限二字。状态机表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。通俗的描述状态机就是定义了一套状态変更的流程:状态机包含一个状态集合,定义当状态机处于某一个状态的时候它所能接收的事件以及可执行的行为,执行完成后,状态机所处的状态。所以状态机会包含以下几个重要的元素:S...

2018-09-17 15:29:36 4166 1

原创 Java反射设置和访问私有属性值

越学习到后面,越感觉java反射机制很重要,必须精通,要不框架那块比较难自己动手实现,回过头温习一下反射机制,查漏补缺今天尝试了一下通过反射访问和设置类的私有属性(不设置settesr和getters),比较容易理解,代码一贴就知道了下面是po代码:package cn.liangqinghai.reflect;public class Beans1 { public B...

2018-09-17 15:22:59 2667

原创 线程池的实现原理

1. 如何实现一个线程池?线程池的概念这里不多说,在讲它的原理前,我们先自己想一下,如果我来写,那如何实现一个线程池?1.1 线程池的重要变量首先要定义一个存放所有线程的集合; 另外,每有一个任务分配给线程池,我们就从线程池中分配一个线程处理它。但当线程池中的线程都在运行状态,没有空闲线程时,我们还需要一个队列来存储提交给线程池的任务。/**存放线程的集合*/private ArrayList&...

2018-03-30 13:21:12 580

原创 HashMap扩容机制、线程安全

HashMap1.容量static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;      // HashMap初始容量大小(16) static final int MAXIMUM_CAPACITY = 1 << 30;               // HashMap最大容量transient int size;       ...

2018-03-29 10:41:37 1114

原创 简谈mysql索引事物

1.谈谈对Mysql索引的认识。主键查询走索引,我们一般使用的索引都是Btree索引;MyISAM和InnoDB索引结构有很大差异,这里以InnoDB为例,InnoDB的叶节点存储的是数据的行,而除了主键之外的列索引存储的是主键key,也就是说在查询的时候需要二次查询,先通过列索引找到主键,再通过主键索引找到row。针对我们经常查询的多列场景,我们可以建组合索引,组合索引在可以尽可能多的运用列的查...

2018-03-29 09:45:17 300

原创 jvm,jre以及jdk三者之间的关系?

JDKJDK是java开发工具包,在其安装目录下面有六个文件夹、一些描述文件、一个src压缩文件。bin、include、lib、 jre这四个文件夹起作用,demo、sample是一些例子。可以看出来JDK包含JRE,而JRE包含JVM。bin:最主要的是编译器(javac.exe)include:java和JVM交互用的头文件lib:类库jre:java运行环境(注意:这里的bin、lib文件...

2018-03-28 15:54:22 6056

原创 负载均衡原理图

2018-03-28 15:52:28 620

原创 java共享变量的可见性与原子性

1. Java内存模型(Java Memory Model, JMM)Java的内存模型如下,所有变量都存储在主内存中,每个线程都有自己的工作内存。共享变量:如果一个变量在多个线程中都使用到了,那么这个变量就是这几个线程的共享变量。可见性:一个线程对共享变量的修改,能够及时地到主内存并且让其他的线程看到。怎么理解上面的可见性的意思呢?线程对共享变量的修改,只能在自己的工作内存里操作,不能直接对主内...

2018-03-28 15:49:30 2329

原创 jstack,jmap,jutil分别的意义

1.Jstack 1.1   jstack能得到运行java程序的java stack和native stack的信息。可以轻松得知当前线程的运行情况。如下图所示 注:这个和thread dump是同样的结果。但是thread dump是用kill -3 pid命令,还是服务器上面少用kill为妙 1.2   命名行格式 jstack [ option ] pid jstack [ option ...

2018-03-28 15:38:51 7226 3

原创 YGC和GFC

1.YGC和FGC是什么    YGC :对新生代堆进行gc。频率比较高,因为大部分对象的存活寿命较短,在新生代里被回收。性能耗费较小。   FGC :全堆范围的gc。默认堆空间使用到达80%(可调整)的时候会触发fgc。以我们生产环境为例,一般比较少会触发fgc,有时10天或一周左右会有一次。2.什么时候执行YGC和FGC   a.edn空间不足,执行 young gc   b.old空间不足,...

2018-03-28 15:31:24 1454

原创 集群session一致性和同步问题

一. 何为session用户使用网站的服务,基本上需要浏览器和web服务器进行多次交互,web服务器如何知道哪些请求是来自哪个会话的?具体方式为:在会话开始时,分配一个唯一的会话标识(sessionId),通过cookie把这个标识告诉浏览器,以后每次请求的时候,浏览器都会带上这个会话标识来告诉web服务器请求是属于哪个会话的。如果遇到禁用cookie的情况,一般的做法就是把这个会话标识放到url...

2018-03-28 15:22:32 168

原创 IO和NIO的区别

面向Stream和面向BufferJava NIO和IO之间最大的区别是IO是面向流(Stream)的,NIO是面向块(buffer)的,所以,这意味着什么?面向流意味着从流中一次可以读取一个或多个字节,拿到读取的这些做什么你说了算,这里没有任何缓存(这里指的是使用流没有任何缓存,接收或者发送的数据是缓存到操作系统中的,流就像一根水管从操作系统的缓存中读取数据)而且只能顺序从流中读取数据,如果需要...

2018-03-28 15:19:13 264 1

原创 JVM中类加载过程,里面执行的哪些操作?GC和内存管理是什么

java堆(JavaHeap)1.用来存放对象的,几乎所有对象都放在这里,被线程共享的,或者说是被栈共享的2.堆又可以分为新生代和老年代,实际还有一个区域叫永久代,但是jdk1.7已经去永久代了,所以可以当作没有,永久代是当jvm启动时就存放的JDK自身的类和接口数据,关闭则释放。新生代可以分为Eden区和两个幸存区,这么设计是为了更好地利用内存  之前的设计是只分为两部分一样一半  后来发现这样...

2018-03-28 15:02:37 1073

原创 http协议中get和post的基本区别,tcp/ip协议的三次握手

1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456.(注意对于用户登录来说,get是不安全的,网页直接显示你的用户名和密码) POST方法是把提交的数据放在HTTP包的Body中.2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限...

2018-03-28 15:00:47 2995

原创 开发中用了那些数据库?储存引擎有哪些?悲观锁和乐观锁问题使用场景、分布式集群实现的原理

(1):MyISAM存储引擎:不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表支持3种不同的存储格式,分别是:静态表;动态表;压缩表静态表:表中的字段都是非变长字段,这样每个记录都是固定长度的,优点存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多(因为存储时会按照列的宽度定义补足空格)p...

2018-03-28 14:59:57 380

转载 jvm内存模型以及jvm性能调优

一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Old(年老代)永久代(Perm)  其中New和Old属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。 年轻代(New):年轻代用来存放JVM刚分配的...

2018-03-28 14:57:45 471

原创 JavaScript基础知识总结

1、鼠标事件有如下这些: onclick 鼠标点击;onmouseover 鼠标移入;onmouseout 鼠标移开;onmousedown 鼠标按下 ;onmouseup 鼠标抬起;onmousemove 鼠标移动。 2、变量的命名规则:可以由数字、字母、下划线、$组成;但是数字不能开头。一般习惯有驼峰命名法,如:oDivElem、object、aDiv。 3、通过某些方法得到元素实

2017-09-21 20:17:35 186

空空如也

空空如也

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

TA关注的人

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