java思想
羽化而登仙~
生活就这么一回,有什么好怕的,有什么不敢做的,大胆向前走,不让人生充满遗憾。
展开
-
ThreadPoolExecutor线程池实现原理
一、java线程池ThreadPoolExecutor组成结构:1、核心线程数corePoolSize:当每次excute方法时,如果当前使用线程数小于核心线程数,则创建线程。2、最大线程数maxPoolSize: 当核心线程数使用完了,队列装满了,且使用线程数还未超过最大线程数,就可以继续创建线程。3、keepAliveTime: 当使用线程数大于核心线程数,且空闲时间超过keepAli...原创 2020-03-29 01:10:16 · 187 阅读 · 0 评论 -
JVM内存模型及垃圾回收算法
JVM内存模型总体架构图程序计数器多线程时,当线程数超过CPU数量或CPU内核数量,线程之间就要根据时间片轮询抢夺CPU时间资源。因此每个线程有要有一个独立的程序计数器,记录下一条要运行的指令。线程私有的内存区域。如果执行的是JAVA方法,计数器记录正在执行的java字节码地址,如果执行的是native方法,则计数器为空。虚拟机栈线程私有的,与线程在同一时间创建。管理J原创 2016-02-22 17:04:42 · 489 阅读 · 0 评论 -
JAVA CAS原理深度分析
看了一堆文章,终于把JAVA CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomics原创 2016-02-23 15:42:04 · 943 阅读 · 0 评论 -
java程序控制tomcat启动
package com.easy.zuboGUI;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader; //java程序控制tomcat启动//@author FKZ原创 2016-04-21 11:48:25 · 2287 阅读 · 1 评论 -
代理模式详解
什么是代理模式代理模式是对象的结构模式。代理模式为其他对象提供一种代理以控制对这个对象的访问。简单来说,在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。举个例子我们打算结婚,但是婚礼的细节我们不想管,这时候我们找到婚庆公司,让他们帮我们包揽婚礼的细节,这就是“代理模式”。既然是代理模式,那么就应该有一个代理角色和真实角色转载 2016-12-20 18:26:45 · 665 阅读 · 0 评论 -
Java并发编程:线程池的使用
原文: http://www.cnblogs.com/dolphin0520/p/3932921.html我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线转载 2017-10-28 12:24:08 · 323 阅读 · 0 评论 -
流量调整和限流技术
在早期的计算机领域,限流技术(time limiting)被用作控制网络接口收发通信数据的速率。 可以用来优化性能,减少延迟和提高带宽等。 现在在互联网领域,也借鉴了这个概念, 用来为服务控制请求的速率, 如果双十一的限流, 12306的抢票等。 即使在细粒度的软件架构中,也有类似的概念。两种常用算法令牌桶(Token Bucket)和漏桶(leaky bucket)是 最常用转载 2016-03-07 13:06:59 · 3172 阅读 · 0 评论 -
java.lang.Object.clone()分析
首先,看一下源码:1 public class Object {2 protected native Object clone() throws CloneNotSupportedException;3 } 由源代码我们会发现: 第一:Object类的clone()方法是一个native方法,native方法的效率一般来说都是远高于Java中的非nat转载 2016-03-01 14:56:11 · 438 阅读 · 0 评论 -
Java系列笔记(3) - Java 内存区域和GC机制
目录Java垃圾回收概况Java内存区域Java对象的访问方式Java内存分配机制Java GC机制垃圾收集器Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因转载 2015-03-04 14:55:17 · 642 阅读 · 0 评论 -
Java获取文件类型Mime Type的各种方法
使用 mime-util 另一个工具是mime-util,这个工具可以通过 检测文件扩展名,或者检测magic header 两种技术方式来实现mime类型的检测 Java代码 import eu.medsea.mimeutil.MimeUtil; public class Main { public static void mai原创 2013-11-21 14:37:58 · 9317 阅读 · 1 评论 -
JAVA 序列化作用 总结
java 序列化作用: Object serialization 允许你将实现了Serializable接口的对象转换为字节序列,这些字节序列可以被完全存储以备以后重新生成原来的对象。什么时候使用序列化: 1. 网络上传输对象,将被传送的对象序列化,然后通过socket传输,接收方接受到字节数组(由于发送之前对象序列化了,对象字节经过重新排序以及其他细节处理过的)原创 2013-12-20 11:39:35 · 863 阅读 · 0 评论 -
Tomcat源码分析------ 一次完整请求的里里外外
前几天分析了一下Tomcat的架构和启动过程,今天开始研究它的运转机制。Tomcat最本质就是个能运行JSP/Servlet的Web服务器 , 因此最典型的应用就是用户通过浏览器访问服务器,Tomcat接收到请求后转发给Servlet,由Servlet处理完后,把结果返回给客户端。今天就专门解析一下这么一个完整的请求的内部机理。通过DEBUG,一路跟下来,发现Tomcat处理请求的核心过程转载 2014-03-10 11:37:43 · 887 阅读 · 0 评论 -
Wireshark基本介绍和学习TCP三次握手
之前写过一篇博客:用 Fiddler 来调试HTTP,HTTPS。 这篇文章介绍另一个好用的抓包工具wireshark, 用来获取网络数据封包,包括http,TCP,UDP,等网络协议包。记得大学的时候就学习过TCP的三次握手协议,那时候只是知道,虽然在书上看过很多TCP和UDP的资料,但是从来没有真正见过这些数据包, 老是感觉在云上飘一样,学得不踏实。有了wireshark就能截获这些网络数转载 2014-04-01 10:14:13 · 690 阅读 · 0 评论 -
linux下的 jmap命令
jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等命令格式jmap [options] pid-dump:[live,]format=b,file= --dump堆到文件,live指明是活着的对象,file指定文件名因为在dump:live前会进行full转载 2014-03-26 11:17:22 · 14201 阅读 · 0 评论 -
内存分析工具 MAT 的使用
1 内存泄漏的排查方法Dalvik Debug Monitor Server (DDMS) 是 ADT插件的一部分,其中有两项功能可用于内存检查 :· heap 查看堆的分配情况· allocation tracker跟踪内存分配情况DDMS 这两项功能有助于找到内存泄漏的操作行为。Eclipse Memory Analysis Tools (MAT) 是一转载 2014-03-26 11:16:18 · 1242 阅读 · 0 评论 -
分析JAVA应用CPU占用过高的问题
使用jstack分析java程序cpu占用率过高的有关问题使用jstack分析java程序cpu占用率过高的问题1,使用jps查找出java进程的pid,如37072,使用top -p 14292 -H观察该进程中所有线程的CPU占用。[root@cp01-game-dudai-0100.cp01.baidu.com ~]# top -p 14292 -H top - 2转载 2014-08-14 14:55:12 · 1069 阅读 · 0 评论 -
Java虚拟机所管理的内存
Java虚拟机 运行时数据区Java在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途、创建和销毁的时间,有一些是随虚拟机的启动而创建,随虚拟机的退出而销毁,有些则是与线程一一对应,随线程的开始和结束而创建和销毁。Java虚拟机所管理的内存将会包括以下几个运行时数据区域 程序计数器(Program Coun转载 2015-03-04 11:53:13 · 684 阅读 · 0 评论 -
客户端用https webservice
项目需要用https与服务器进行连接,获取系统需要的一些配置参数。以前是用http进行连接的,客户端代码比较简单,直接使用URL类进行连接并获取输入流即可。试着在浏览器中输入相应的https连接地址,提示证书确认,确认以后就访问到内容了。 改 成https以后碰到了一些问题。原以为Java可能已经封装好了,所以把直接把原来的http连接改成https,结果抛出异 常:java.lang转载 2013-07-05 16:19:08 · 2041 阅读 · 1 评论