Java
文章平均质量分 94
ningdunquan
软件开发工程师
展开
-
数据结构—Java版链表相交问题的终极解决方案
【题目】判断两个链表(链表可以有环,可以无环)是否相交,若相交,则返回相交节点,不相交则返回null1.判断两个链表是否相交【思路】两个链表分三种情况:①两个链表均为非环链表;②两个链表一个为环,一个非环;③两个链表均为环第一种情况非环链表根据链表的定义,只需比较两个链表尾节点是否相同,若相同则一定相交,不同则一定不相交;第二种情况由于链表的next指针永远原创 2015-09-13 19:55:09 · 416 阅读 · 0 评论 -
Java虚拟机与GC
Java内存区域 1.程序计数器(Program Counter Register)(线程私有的) 2.Java虚拟机栈 (Java Virtual Machine Stacks)(线程私有的) 3.本地方法栈 (Native Method Stack)(Native方法) 4.Java堆 (Java Heap)(线程共享)原创 2016-01-28 20:18:48 · 496 阅读 · 0 评论 -
Tomcat是如何启动及运行—对tomcat的源码解析
本文是我阅读了Tomcat源码后的一些心得。 主要是讲解Tomcat的系统框架,启动流程已经运行过程。若有错漏之处,敬请批评指教。先给出几个问题:tomcat作为一个应用服务器的程序入口在哪里?tomcat的整体组件结构是什么样的?tomcat是如何及什么时候创建线程来处理请求的?tomcat的配置文件context.xml,server.xml,tomca原创 2016-06-20 16:12:21 · 3792 阅读 · 1 评论 -
性能优化的方法论建设
一. 相关概念系统性能有两个相关的概念:Throughput ,吞吐量。也就是每秒钟可以处理的请求数,任务数。Latency, 系统延迟。也就是系统在处理一个请求或一个任务时的延迟。而这两者之间又是存在着一些联系Throughput越大,Latency会越差。因为请求量过大,系统太繁忙,所以响应速度自然会低。Latency越好,能支持的Throughput就会越高。因为Latency短说明处理速度...原创 2018-04-12 10:27:08 · 2780 阅读 · 0 评论 -
RPC框架pigeon源码分析
Pigeon是一个分布式服务通信框架(RPC),是美团点评最基础的底层框架之一。已开源,链接:https://github.com/dianping/pigeon从接下来三个方面来分析pigeon的源码。一. 基础框架1.1 rpc的基础架构rpc最基础的架构图1.2 rpc的基本流程客户端在调用某一个服务时,这个服务实际上是通过动态代理生成的一个代理类的对象。因此在执行方法的时候,实际上执行的是...原创 2018-04-12 10:57:08 · 7498 阅读 · 0 评论 -
Java中的锁
一. Java的锁机制1.1 锁的类型乐观锁:读多写少的情况,读数据不加锁,写数据加锁。java中的乐观锁基本都是通过CAS操作实现的,CAS是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。悲观锁:悲观的意思是写多,每次去拿数据的时候都认为别人会修改,所以每次在读写数据的时候都会上锁,这样别人想读写这个数据就会block直到拿到锁。java中的悲观锁就是Synchroniz...原创 2018-04-12 11:01:46 · 247 阅读 · 0 评论 -
CAS原理
CASCAS:现代的处理器都包含对并发的支持,其中最通用的方法就是比较并交换(compare and swap),简称CAS。CAS是非阻塞的同步机制,锁解决的是阻塞的同步机制,但是锁需要借助操作系统,线程的挂起和恢复都有很大的开销。而CAS在不释放cpu的情况下进行同步,这是CAS的功能。CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹...原创 2018-04-12 11:04:31 · 141 阅读 · 0 评论