java高级应用
yinbucheng
这个作者很懒,什么都没留下…
展开
-
okhttp教程
okhttp教程——起步篇okhttp教程——起步篇这篇文章主要总结Android著名网络框架-okhttp的基础使用,后续可能会有关于他的高级使用。okhttp是什么okhttp是Android端的一个Http客户端,其基础功能相当于Android自带的HttpURLConnection和Apache HTTP Client,但他却比自带的2个Http转载 2017-05-11 11:31:29 · 330 阅读 · 0 评论 -
java中的对象头的解析
一:对象头HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。 HotSpot虚拟机的对象头(Object Header)包括两部分信息,第一部分用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等转载 2017-05-19 12:14:23 · 6788 阅读 · 0 评论 -
java中内存模型及对象头
今天看到一个不错的PPT:Build Memory-efficient Java Applications,开篇便提出了一个问题,在Hotspot JVM中,32位机器下,Integer对象的大小是int的几倍?我们都知道在Java语言规范已经规定了int的大小是4个字节,那么Integer对象的大小是多少呢?要知道一个对象的大小,那么必须需要知道对象在虚拟机中的结构是怎样的,来看看H转载 2017-05-19 13:44:04 · 939 阅读 · 1 评论 -
jvm中垃圾回收机制
Java的GC机制是自动进行的,和C语言有些区别需要程序员自己保证内存的使用和回收。Java的内存分配和回收也主要在Java的堆上进行的,Java的堆中存储了大量的对象实例,所以Java的堆也叫GC堆。Java在垃圾收集的过程中,主要用到了分代收集算法,我会先讲一下常用垃圾收集算法。常用垃圾收集算法1. 标记-清除算法这种垃圾收集算法思路非常简单,主要是转载 2017-05-19 14:01:03 · 325 阅读 · 0 评论 -
http协议讲解
HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(转载 2017-05-31 20:31:27 · 274 阅读 · 0 评论 -
java中注解的使用
注解目前非常的流行,很多主流框架都支持注解,而且自己编写代码的时候也会尽量的去用注解,一时方便,而是代码更加简洁。 注解的语法比较简单,除了@符号的使用之外,它基本与Java固有语法一致。Java SE5内置了三种标准注解: @Override,表示当前的方法定义将覆盖超类中的方法。 @Deprecated,使用了注解为它的元素编译器将发出警告,因为转载 2017-06-03 10:24:31 · 192 阅读 · 0 评论 -
java中反射讲解
1.问题描述:在采用动态代理时,我采用接口接受变量final T service = (T) Class.forName(implName).newInstance(); T proxy = (T)Proxy.newProxyInstance(service.getClass().getClassLoader(), new Class[]{clazz}, new Invoca转载 2017-06-04 09:36:12 · 293 阅读 · 0 评论 -
TCP中为什么采用三次握手而不采用两次握手
谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。转载 2017-06-21 21:33:31 · 2772 阅读 · 0 评论 -
java中的SPI机制
1 SPI机制简介SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的。在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下java spi机制的思想。我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。面向的对象的设计里,我们一般推转载 2017-07-20 21:11:31 · 239 阅读 · 0 评论 -
java中spi
一、SPI机制这里先说下SPI的一个概念,SPI英文为Service Provider Interface单从字面可以理解为Service提供者接口,正如从SPI的名字去理解SPI就是Service提供者接口;我对SPI的定义:提供给服务提供厂商与扩展框架功能的开发者使用的接口。在我们日常开发的时候都是对问题进行抽象成Api然后就提供各种Api的实现,这些Api的实现都是封装与我们转载 2017-07-17 20:25:22 · 261 阅读 · 0 评论 -
java中bio,nio,aio详解
1、BIO编程 1.1、传统的BIO编程 网络编程的基本模型是C/S模型,即两个进程间的通信。 服务端提供IP和监听端口,客户端通过连接操作想服务端监听的地址发起连接请求,通过三次握手连接,如果连接成功建立,双方就可以通过套接字进行通信。 传统的同步阻塞模型开发中,ServerSocket负责绑定IP地址,启动监听端口;Socket负责发起连转载 2017-08-09 20:47:41 · 522 阅读 · 0 评论 -
使用SpringMVC和js实现文件及字段上传中遇到的坑
界面代码: 后台代码:class TestBean{ private MultipartFil转载 2017-08-17 18:19:31 · 565 阅读 · 0 评论 -
java中获取运行路径
1、利用System.getProperty()函数获取当前路径: System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径 2、使用File提供的函数获取当前路径: File directory = new File("");//设定为当前文件夹 try{ System.out.pr转载 2017-08-13 19:44:37 · 3033 阅读 · 0 评论 -
java中分代思想
文章出处:http://ifeve.com/jvm-yong-generation/聊聊JVM的年轻代1.为什么会有年轻代我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕转载 2017-05-30 00:34:01 · 760 阅读 · 0 评论 -
java中niosocket的实例使用
Server端代码:public class NioServer { //通道管理器 private Selector selector; //获取一个ServerSocket通道,并初始化通道 public NioServer init(int port) throws IOException{ //获取一个ServerSoc转载 2017-05-10 10:33:55 · 301 阅读 · 0 评论 -
RPC原理
你应该知道的RPC原理 在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示。这些程序的特点是服务消费方和服务提供方是本地调用关系。 而一旦踏入公司尤其是大型互联网公司就会发现,公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,由不同的团队负责。这时就会遇到两个问题:1)要搭建一个新服务,免不了需要依赖他人的服务,而现在他人的服转载 2017-05-11 13:52:46 · 166 阅读 · 0 评论 -
java中NIO编程另一种实现超实用
除了普通的Socket与ServerSocket实现的阻塞式通信外,Java提供了非阻塞式通信的NIO API。先看一下NIO的实现原理。 从图中可以看出,服务器上所有Channel(包括ServerSocketChannel和SocketChannel)都需要向Selector注册,而该Selector则负责监视这些Socket的IO状态,当其中任意一个或者转载 2017-05-11 15:39:50 · 448 阅读 · 0 评论 -
Java中如何动态创建接口的实现
Java中如何动态创建接口的实现有很多应用场景,用到了接口动态实现,下面举几个典型的应用:1、mybatis / jpa 等orm框架,可以在接口上加注解进行开发,不需要编写实现类,运行时动态产生实现。2、dubbo等分布式服务框架,消费者只需要引入接口就可以调用远程的实现,分析源代码,其实在消费端产生了接口的代理实现,再由代理调用远程接口。3、spring aop 这是最转载 2017-05-11 16:26:00 · 1787 阅读 · 0 评论 -
Iterator的源码解析
Java里面的数组数据可以通过索引来获取,那么对象呢?也是通过索引吗?今天我们就来分析一下Java集合中获取集合对象的方法迭代-Iterator。本篇文章主要分析一下Java集合框架中的迭代器部分,Iterator,该源码分析基于JDK1.8,分析工具,AndroidStudio,文章分析不足之处,还请指正!一、简介我们常常使用 JDK 提供的迭代接口进行 Java 集合的转载 2017-04-16 12:30:56 · 2120 阅读 · 0 评论 -
java中voliate的讲解
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java转载 2017-05-07 00:01:23 · 42765 阅读 · 20 评论 -
java中内存机制
0.参考资料:http://www.j2megame.org/index.php/content/view/2246/125.html1.Java的内存机制 Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作转载 2017-05-07 00:09:15 · 186 阅读 · 0 评论 -
java中的内存模型
1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。2.硬件的效率与一致性转载 2017-05-07 00:13:05 · 151 阅读 · 0 评论 -
动态代理和cglib实现
jdk动态代理:import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class JdkHanler implements InvocationHandler { private O转载 2017-05-07 00:17:07 · 330 阅读 · 0 评论 -
java运行时数据区域
对于从事C和C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的皇帝,又是从事最基础工作的劳动人民—既拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。 对于Java程序员来说,在虚拟机的自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,而且不容易出现内存泄漏和内存溢出问题,看起来由虚拟机管理内转载 2017-05-07 00:22:13 · 213 阅读 · 0 评论 -
Java内存模型
Java内存模型原本准备把内存模型单独放到某一篇文章的某个章节里面讲解,后来查阅了国外很多文档才发现其实JVM内存模型的内容还蛮多的,所以直接作为一个章节的基础知识来讲解,可能该章节概念的东西比较多。一个开发Java的开发者,一旦了解了JVM内存模型就能够更加深入地了解该语言的语言特性,可能这个章节更多的是概念,没有太多代码实例,所以希望读者谅解,有什么笔误来Email告知:s转载 2017-05-09 11:13:53 · 415 阅读 · 0 评论 -
实现网页同时只能有一个账号登录
网上看了很多方法,个人也看了,自己也总结了几个比较常用的: 前提都是用session监听器,对session的创建与销毁进行监听 一、在用户登录时保存该用户的状态有这几种保存方式: 1、保存到内存中(application ,servletcontext ,个人也是推荐这种方式) 2、保存状态到数据库,至于转载 2017-05-10 07:45:30 · 15774 阅读 · 1 评论 -
java异步读取网络
简单的来说,Java NIO 提供了一种异步非阻塞模型,使得网络请求都可以并发执行。服务器端采用这种模型,响应速度将大大提高,Apache,Nginx 都是这种模型。本文介绍的是客户端如何采用这种模型来提高客户端访问网络的速度。1. 使用范例public static void main(String[] args) throws Exception { //初始化 N转载 2017-05-10 09:59:34 · 830 阅读 · 0 评论 -
如何使用java代码加载指定包下面的所有类
如何加载指定包下面的所有类使用代码来实现加载指定包下面的所有类配置文件config.properties(其位置在resource目录下)page=cn.ishow读取配置文件工具类/** * 读取配置文件工具类 */public abstract class ReadUtils { private static Map<String,Object> cache = new HashM原创 2017-12-04 14:24:32 · 7845 阅读 · 0 评论