- 博客(40)
- 资源 (2)
- 收藏
- 关注
原创 java引用传递和值传递的问题
java引用传递和值传递的问题1、首先明确一下值传递和引用传递的概念: 值传递:表示方法接收的是调用者提供的值。 引用传递:表示方法接收的是调用者提供的变量地址。在Java中,变量分为以下两类:①对于基本数据类型变量(int、long、double、float、byte、boolean、char),Java是传值的副本。②对于一切对象型变量,Java都是传引用的副本。其
2017-10-19 12:45:48
335
转载 Java JDK代理、CGLIB、AspectJ代理分析比较
什么是代理,在Design patterns In java这个本书中是这样描述的,简单的说就是为某个对象提供一个代理,以控制对这个对象的访问。在不修改源代码的基础上做方法增强,代理是一种设计模式,又简单的分为两种。静态代理:代理类和委托类在代码运行前关系就确定了,也就是说在代理类的代码一开始就已经存在了。动态代理:动态代理类的字节码在程序运行时的时候生成。静态代理
2017-10-15 15:08:06
401
原创 重入锁ReentranLock与Synchronized对比
重入锁ReentranLock与Synchronized对比1. ReentranLock相关介绍:(1)Lock接口介绍:Lock接口不是Java语言内置的,不像synchronized是Java语言的关键字,是内置属性。而Lock是一个接口,通过这个接口可以实现同步访问;其中ReentranLock就是Lock接口的实现类。(2)Lock的一般语法:Lock l
2017-10-15 14:14:08
2800
原创 Java 内部类的总结
内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。内部类分为: 成员内部类、局部内部类 、 静态嵌套类 、匿名内部类 。1.成员内部类成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形如下面的形式:class Outter { private int age = 12; class Inner { privat
2017-10-08 19:24:50
246
原创 一点一点学线程(五)Callable、Future和FutureTask
一点一点学线程(五):Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从J
2017-10-05 21:56:27
467
原创 一点一点学线程(四)concurrent包
一点一点学线程(四)concurrent包1.闭锁 CountDownLatch:1.1 CountDownLatch是什么?CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier、Semaphore、Concurren
2017-10-05 21:25:48
299
原创 一点一点学线程(三)线程池
一点一点学线程(三)线程池1.初识线程池:根据系统自身的环境情况,有效的限制执行线程的数量,使得运行效果达到最佳。线程主要是通过控制执行的线程的数量,超出数量的线程排队等候,等待有任务执行完毕,再从队列最前面取出任务执行。2.线程池作用:减少创建和销毁线程的次数,每个工作线程可以多次使用可根据系统情况调整执行的线程数量,防止消耗过多内存3.使用ExecutorServi
2017-10-05 16:30:23
234
原创 一点一点学线程(二)锁
在线程中我们需要访问的数据没有被保护,这就是多线程最令人头疼的地方,线程安全,多线程之间的数据共享引发的安全问题。解决办法是采用加锁。何为加锁呢?就是我们将部分数据保护起来,每次只能有一个线程进行访问。1.Synchronized1.1同步代码块有效范围:同步代码块最小的粒度应该放在共享数据的上下文,或者说共享数据被操作的上下文中。语法:Java 中同步代码块的语法如下
2017-10-05 11:41:08
301
原创 常见的加密算法
常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。1、对称加密指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取
2017-10-04 18:27:02
765
原创 汉字编码
1、汉字内码(机内码)汉字的区码和位码:由于国标码是四位十六进制,为了便于交流,大家常用的是四位十进制的区位码。所有的国标汉字与符号组成一个94×94的矩阵。在此方阵中,每一行称为一个"区",每一列称为一个"位",因此,这个方阵实际上组成了一个有94个区(区号分别为1到94)、每个区内有94个位(位号分别为1到94)的汉字字符集。一个汉字所在的区号和位号简单地组合在一起就构成了该汉字的"区
2017-10-04 16:52:12
1472
原创 二维码之实现代码
1.QRCode生成二维码package com.useqrcode; import java.awt.AlphaComposite;import java.awt.BasicStroke;import java.awt.Canvas;import java.awt.Color;import java.awt.Graphics2D;import java.awt.i
2017-10-03 10:20:10
3669
原创 二维码之介绍
二维码1.介绍:某种特定的几何图形按照一定规律在平面图分布的黑白相间的图形记录符号信息的图形,黑点代表的是1 白点代表的是02.分类:线性堆叠式二维码 PDF417、U1tracode、Code49、Code 16K矩阵式二维码 Data Matrix、Maxi Code、Aztec Code、QP Code、Vericode邮政码 主要用于邮件编码 POSTNET
2017-10-03 10:19:06
919
原创 报错BeanCreationException之ExceptionInInitializerError
当在静态初始化块中出现了异常的时候,JVM会抛出 java.lang.ExceptionInInitializerError异常。如果你了解Java中的静态变量,你会知道它们是在类加载的时候进行初始化的。如果在这个静态变量初始化的过程中出现了异常,那么就会抛出 java.lang.ExceptionInInitializerError异常。任何异常都可能会引发这种情况,比如说,java
2017-09-29 14:17:17
386
原创 设计模式之代理模式
1. 代理模式主要有两种:静态代理和动态代理 2. 静态代理: 比如要在输出“HelloWorld”前打印一个字符串“Welcome” A:先定义一个接口类 java 代码 package ttitfly.proxy; public interface HelloWorld { public void print(); // public v
2017-09-24 20:47:15
196
原创 Spring中加载xml配置文件
一、Spring中加载xml配置文件的方式 XmlBeanFactory , ClassPathXmlApplicationContext , FileSystemXmlApplicationContext , XmlWebApplicationContext加载这些容器的配置文件的xml有一下几种常见的方法:1:引用资源用XmlBeanFactor
2017-09-23 18:51:01
322
原创 一点一点学线程(一)线程基础
一点一点学线程(一)线程基础1、线程概念线程:序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。线程的构成:1)线程ID。用于标实线程2)当前指令指针PC。标明下一指令执行点3)寄存器集合和堆栈。该线程的可用空间线程访问权限 一般来说线程能访问进程内存中的所有数据,但实际应用中线程也有自己的空间1)栈(可能被其他进程访问,但仍可认为是私有数据)
2017-09-20 12:43:09
292
原创 string/tostring/string.valueof的区别
今天在使用这个的时候发现,他们三者好像在某些场所都是可以用的,但是不免会让人想到那既然它们三者这么的相似,那么总有些什么区别吧。我也在网上找了一些资料看。自己也看了API文档,就将他们三的区别总结一下吧。先说他们三的作用是什么吧:没什么特别的作用,就是让我们得到的对象或参数类型,按照要求转成字符串的形式。String:毫无疑问,这种就是强转形式,简单方便,效率高。java程序员可能看到
2017-09-20 11:28:08
387
原创 解析xml文件
解析示例一、总结:Document document=new SAXReader.reader(“xml文路径/文件名xxx.xml”);//得到Document对象Element root = document.getRootElement()//获得根节点Iterator iterator=root.elementIterator(); //从根节点遍历子节点Itera
2017-09-09 14:43:31
221
原创 JSON
1、JSON是一个接口,JSON有两种表示结构,对象和数组。JSON分为jsonObject和jsonArray2、之前我一直有个困惑,分不清普通字符串,json字符串和json对象的区别。经过一番研究终于给弄明白了。比如在js中。字符串:这个很好解释,指使用“”双引号或’’单引号包括的字符。例如:var comStr = 'this is string';json字符串:
2017-09-09 12:37:38
335
原创 web项目读取classpath下面文件
注意:本文用到spring的工具类和,commons-io工具类首先分两大类按web容器分类1、是普通的web项目,像用Tomcat容器,特点是压缩包随着容器的启动会解压缩成一个文件夹,项目访问的时候,实际是去访问文件夹,而不是jar或者war包这种的无论你是用获取路径的方法this.getClass().getResource("/")+fileNam
2017-08-30 17:17:22
2215
原创 json和String转换
1、JSON字符串转换为JSON对象JSONObject.parseObject(obj.toString());var obj = str.parseJSON(); //由JSON字符串转换为JSON对象或者var obj = JSON.parse(str); //由JSON字符串转换为JSON对象2、String转json可以使用toJSONString()
2017-08-30 15:09:11
558
原创 FileUtils的方法
获取系统的临时目录路径:getTempDirectoryPath()[java] view plain copy print?public static String getTempDirectoryPath() { return System.getProperty("java.io.tmpdir");
2017-08-30 14:56:09
771
原创 restful接口之Jersy开发
restful接口之Jersy开发1. Restful风格的API介绍Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。在Restful风格中,用户请求的url使用同一个url而用请求方式:get,post,delete,put...
2017-08-20 18:14:37
561
转载 web容器
Jetty 与 Tomcat 的比较1. Jetty 的基本架构Jetty 目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器,它有一个基本数据模型,这个数据模型就是 Handler,所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler。Jetty 的基本架构
2017-08-20 17:21:34
242
原创 webservice
WebService (三)使用CXF框架开发webservice1、CXF框架概念介绍Apache CXF 是一个开源的 Services 框架,CXF 帮助您来构建和开发 Services 这些 Services 可以支持多种协议,比如:SOAP、POST/HTTP、RESTful HTTP CXF 大大简化了 Service可以天然地和 Spring 进行无缝集成。1、1Serv
2017-08-20 16:54:02
234
原创 webservice
WebService (二)WSDL的介绍1、WSDL语法分析获取web的发布信息是通过wsimport 来解析wsdl文件得到Java类来实现的. 如论是获取发布的服务,还是调用发布的服务.都需要参考wsdl文件.接下面我们就来分析wsdl文件的结构分析服务类相关信息// HelloWorldService 就是我们注册的服务,默认在原来的类名后面加上Servic
2017-08-20 16:52:35
370
原创 webservice
WebService (一)简单调用发布1、WebService相关介绍 WebService概念介绍:Web Service, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据通俗的讲,Web Service就是一个部
2017-08-20 16:51:10
508
转载 Commons包
一、Commons BeanUtils说明:针对Bean的一个工具集。由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装。二、Commons CLI说明:这是一个处理命令的工具。比如main方法输入的string[]需要解析。你可以预先定义好参数的规则,然后就可以调用CLI来解析。三、Commons Codec说明:这个
2017-08-12 18:39:16
415
原创 quartz
quartz1、 quartz1. 基本概念quartz定时任务必须搞清楚几个概念:调度器:负责调度作业和触发器;触发器:设置作业执行的时间、参数、条件等;(简单触发器和Cron触发器)作业:定时任务内容,被执行的程序;JobDetail——处理类Trigger——触发器,指定触发时间,必须要有JobDetail属性,即触发对象Scheduler——调度器,
2017-07-09 11:50:45
238
原创 日志(二)--logback
logback的使用和logback.xml详解1. logback的介绍Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面下个模块: logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便
2017-07-09 11:47:52
230
原创 日志(一)--组件
日志1. 常用的日志组件common-logging、log4j、slf4j、logback2. Common-loggingcommon-logging是apache提供的一个通用的日志接口。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,c
2017-07-09 11:46:43
210
原创 微服务
1. SOA与MSA1. 是什么SOA是面向服务架构MSA是微服务2. 关系MSA 是细粒度的SOA3. 通信协议通信协议经过这些年的发展,现在主流的基本上了两种:1. 文本协议使用最广泛的多是基于HTTP的RESTful规范1. 轻量级二进制协议Thrift、Protobuf,或者任何自定义的轻量级协议4. 微服务
2017-06-20 16:07:16
303
原创 线程池详解
线程池1、好处:1、降低资源消耗2、提高响应速度3、提高线程的可管理性2、线程池流程: 1. 首先线程池判断基本线程池是否已满?没满,创建一个工作线程来执行任务。满了,则进入下个流程。 2. 其次线程池判断工作队列是否已满?没满,则将新提交的任务存储在工作队列里。满了,则进入下个流程。 3. 最后线程池判断整个线程池是否已满?没满,则创建一个新的工作线程来执行任
2017-06-11 21:58:11
200
原创 云计算相关概念
云计算相关概念1、openstack 管理虚拟机,并进行计算的2、docker 打包、部署用的3、ClouldstackCloudStack是一个开源的具有高可用性及扩展性的云计算平台。目前Cloudstack支持管理大部分主流的hypervisors,如KVM,XenServer,VMware,Oracle VM,Xen等。同时CloudStack是一个开源云
2017-04-02 20:29:31
376
原创 ConcurrentHashMap 的红黑树
ConcurrentHashMap 的红黑树1、红黑树红黑树是一种特殊的二叉树,主要用它存储有序的数据,提供高效的数据检索,时间复杂度为O(lgn),每个节点都有一个标识位表示颜色,红色或黑色,有如下5种特性:每个节点要么红色,要么是黑色;根节点一定是黑色的;每个空叶子节点必须是黑色的;如果一个节点是红色的,那么它的子节点必须是黑色的;从一个节点到该节点的子孙节点的所有
2017-03-27 21:18:04
895
原创 1.7和1.8中的ConCurrentHashMap对比
1.7和1.8中的ConCurrentHashMap对比1.7中数据结构jdk1.7中采用Segment + HashEntry的方式进行实现, 初始化ConcurrentHashMap初始化时,计算出Segment数组的大小ssize和每个Segment中HashEntry数组的大小cap,并初始化Segment数组的第一个元素;其中ssize大小为2的幂次方,默认为16
2017-03-27 21:16:58
393
原创 设计模式之代理模式
设计模式之代理模式1、什么是代理模式:代理模式(Proxy)为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。就是一个接口由两个类来实现,一个是真实角色,一个是代理角色。代理可以提供延迟实例化(lazy instantiation),控制访问, 等等。2、代理模式中的角色:抽象角色:声明的共同接口或者是抽象类。代理角色:代理
2017-03-26 17:57:28
258
原创 jvm体系
Jvm体系1、类的加载机制主要内容有:类加载的顺序类初始化的步骤类初始化的时机类加载的文件有哪些虚拟机什么情况下会结束生命周期2、Jvm内存结构3、Gc算法 垃圾回收主要有:对象存活判断(引用计数、可达性分析)Gc算法 标记-清除算法垃圾回收器 主要有:串行、并行、并发三种 默认的是串行垃圾回收器在java9中默认的是G1 Ga
2017-03-19 21:21:25
229
原创 设计模式之工厂模式
设计模式之工厂模式1、什么是工厂模式?工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。2、简单工厂模式抽象产品:在java中是接口具体产品:在java中实现上述接口工厂产品:在java中由一个具体类实现3、工厂方法模式:抽象工厂:具体工厂不必须实现的接口或者必须继承的父类具体工厂:在java中由具体的类来实现上述
2017-03-19 17:07:08
301
原创 设计模式之单例模式
设计模式之单例模式1、单例模式的作用:确保一个类只有一个实例2、单例模式的写法:懒汉式、饿汉式、双重检验锁、静态内部类(当需要懒加载的时候可以使用静态内部类)、枚举(用的少)3、例:静态内部类 上述打印出来的地址都是同一个地址
2017-03-19 17:05:07
254
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅