/**PageBeginHtml Block Begin **/ /***自定义返回顶部小火箭***/ /*生成博客目录的JS 开始*/ /*生成博客目录的JS 结束*/
摘要: 文件上传 普通文件和url文件 主要用来学习使用common-fileupload.jar和java.net.httpURLConnection 普通文件: url文件上传: 更多详细关于HttpURLConnection的学习资料请参考: HttpURLConnection学习 JDK中的URLC 阅读全文
posted @ 2017-09-05 00:37 一品堂.技术学习笔记 阅读(507) 评论(0) 推荐(0) 编辑
摘要: HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身 阅读全文
posted @ 2017-09-05 00:35 一品堂.技术学习笔记 阅读(931) 评论(0) 推荐(0) 编辑
摘要: Commons-configuration Commons-FileUploadCommons DbUtilsCommons BeanUtils Commons CLI Commons CodecCommons Collections Commons DBCPCommons HttpClient C 阅读全文
posted @ 2017-09-05 00:27 一品堂.技术学习笔记 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 主题:多线程进阶 多线程的一些核心内容以及要关注的细节。 一、线程的实现 继承thread类重写run()方法和实现Runnable接口实现run()方法 注意点:new线程实例时建议加线程名和要处理下线程的中断异常([InterruptedException]) 二、不得不提的[ThreadLoc 阅读全文
posted @ 2017-09-05 00:12 一品堂.技术学习笔记 阅读(474) 评论(0) 推荐(0) 编辑
摘要: 多线程下[HashMap]的问题: 1、多线程put操作后,get操作导致死循环。 2、多线程put非NULL元素后,get操作得到NULL值。 3、多线程put操作,导致元素丢失。 本次主要关注[HashMap]-死循环问题。 为何出现死循环? 大家都知道,HashMap采用链表解决Hash冲突, 阅读全文
posted @ 2017-09-05 00:11 一品堂.技术学习笔记 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 一、ThreadLocal基础知识 原始线程现状: 按照传统经验,如果某个对象是非线程安全的,在多线程环境下,对对象的访问必须采用synchronized进行线程同步。但是Spring中的各种模板类并未采用线程同步机制,因为线程同步会影响并发性和系统性能,而且实现难度也不小。 ThreadLocal 阅读全文
posted @ 2017-09-05 00:08 一品堂.技术学习笔记 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 一、Eclipse常见快捷键使用 自动完成单词:Alt+/ 重命名:Shift+Alt+r(统一改变字段或方法名) 生成getter/setter方法: Shift+Alt+s,然后r 删除当前行:Ctrl+d 定位到前(后)一个编辑点:标准为Alt+左(右)箭头 , 修改方法为: Windows- 阅读全文
posted @ 2017-09-05 00:05 一品堂.技术学习笔记 阅读(567) 评论(0) 推荐(0) 编辑
摘要: 集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的 阅读全文
posted @ 2017-09-05 00:00 一品堂.技术学习笔记 阅读(715) 评论(0) 推荐(0) 编辑
摘要: 一、Arrays.sort()数组排序Java Arrays中提供了对所有类型的排序。其中主要分为Primitive(8种基本类型)和Object两大类。 基本类型:采用调优的快速排序; 对象类型:采用改进的归并排序。1、对于基本类型源码分析如下(以int[]为例): Java对Primitive(int,float等原型数据)数组采用快速排序,对Object对象数组采用归并排序。对这一区别... 阅读全文
posted @ 2017-09-04 23:53 一品堂.技术学习笔记 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 一、源码解析1、 LinkedList类定义。 1 public class LinkedList 2 extends AbstractSequentialList 3 implements List, Deque, Cloneable, java.io.SerializableLinkedList 是一个继承于AbstractSequentialList的双向链表。它也... 阅读全文
posted @ 2017-09-04 23:48 一品堂.技术学习笔记 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 一、 ArrayList概述: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。 ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函 阅读全文
posted @ 2017-09-04 23:34 一品堂.技术学习笔记 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 一、 HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 二、 HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用H 阅读全文
posted @ 2017-09-04 23:20 一品堂.技术学习笔记 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 一、HashMap概述 HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 值得注意 阅读全文
posted @ 2017-09-04 23:18 一品堂.技术学习笔记 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 在开发工作中,我们常常需要获取客户端的IP。一般获取客户端的IP地址的方法是:request.getRemoteAddr();但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。 原因:由于在客户端和服务之间增加了中间代理,因此服务器无法直接拿到客户端的IP,服务器 阅读全文
posted @ 2017-09-04 23:07 一品堂.技术学习笔记 阅读(3317) 评论(3) 推荐(1) 编辑
摘要: 上传文件时经常需要做文件类型判断,例如图片、文档等,普通做法是直接判断文件后缀名,而文艺青年为了防止各种攻击同时也会加上使用文件头信息判断文件类型。原理很简单:用文件头判断,直接读取文件的前2个字节即可。 1 public class FileUtil { 2 /** 3 * byte数组转换成16进制字符串 4 * 5 * @param src ... 阅读全文
posted @ 2017-09-04 23:04 一品堂.技术学习笔记 阅读(2144) 评论(0) 推荐(2) 编辑
摘要: 一、Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。1、LoggersLoggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。... 阅读全文
posted @ 2017-09-04 23:01 一品堂.技术学习笔记 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 概述:Java解析apk文件,获取apk文件里的包名,版本号,图标文件等;功能:可以提供给windows和linux平台使用;原理:利用aapt.exe或者aapt这些anroid平台解析apk文件的工具,借用终端shell调用命令解析输出信息;代码: 这里贴出一些关键代码,并给出代码注释,如下 1 package com.apkutils; 2 3 import java.io... 阅读全文
posted @ 2017-09-04 22:49 一品堂.技术学习笔记 阅读(1271) 评论(0) 推荐(0) 编辑
摘要: 一:代码图解: 二:配置文件: 三:获取配置文件信息 PathUtil.java PropertiesConfig.java PropertyReadUtil.java 四:JDBC 获取连接的封装 阿里巴巴开源的数据库连接jar 连接工具类 :DruidDataSourceUtil.java c3 阅读全文
posted @ 2017-09-04 21:42 一品堂.技术学习笔记 阅读(825) 评论(0) 推荐(0) 编辑
摘要: 1:javascript对JSON的支持2:java对JSON的支持 alibaba->fastjson 封装工具类: 1 import com.alibaba.fastjson.JSONObject; 2 3 public class JSONBuilder { 4 JSONObject json = new JSONObject(); 5 6 publi... 阅读全文
posted @ 2017-09-04 21:36 一品堂.技术学习笔记 阅读(166) 评论(0) 推荐(0) 编辑
摘要: JFreeChart主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等 (源代码下载) 示例程序运用的jar包: jcommon-1.0.17.jar jfreechart-1.0.14.jar 1:普通柱状图 这是 阅读全文
posted @ 2017-09-04 21:28 一品堂.技术学习笔记 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 一、Java数组初始化Java数组是静态的,即当数组被初始化之后,该数组的长度是不可变的。Java数组使用之前必须先对数组对象进行初始化,所谓初始化,就是为数组的所有元素分配内存空间,并为每个数组元素指定初始值。(文章来源于李刚老师的《突破java程序员的16课》)1:基本类型数组的两种初始化方式静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。动态初始化:初始化时程序... 阅读全文
posted @ 2017-09-04 21:09 一品堂.技术学习笔记 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 下面这段代码可用于Jsp+Servle+JavaBean中做验证码: 1 2 255) fc=255; 6 if(bc>255) bc=255; 7 int r=fc+random.nextInt(bc-fc); 8 int g=fc+random.nextInt(bc-fc); 9 int b=fc+random.ne... 阅读全文
posted @ 2017-09-04 20:59 一品堂.技术学习笔记 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 1:java中垃圾回收机制主要完成下面两件事情:跟踪并监控每个java对象,当某个对象处于不可达状态时,回收该对象所占的内存清理内存分配,回收过程中产生的内存碎片2:对于JVM的垃圾回收机制来说,是否回收一个对象的标准是:是否还有引用变量引用该对象? 只要还有引用变量引用该对象,立即回收机制就不会回收它。3:基本上,可以把JVM内存中对象引用理解成一种有向图,把引用变量,对象都当成为有向图... 阅读全文
posted @ 2017-09-04 20:54 一品堂.技术学习笔记 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 1. java.lang.NullPointerException(空指针异常)调用了未经初始化的对象或者是不存在的对象经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始... 阅读全文
posted @ 2017-09-04 20:52 一品堂.技术学习笔记 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 一、为什么要编码?由于人类的语言太多,因而表示这些语言的符号太多,无法用计算机的一个基本的存储单元----byte来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解。byte一个字节即8个bit,所以能表示的字符范围是0~255个,这满足不了人类的需要,要解决这个矛盾必须需要一个新的数据结构char,从char到byte必须经过编码。二、常用编码介绍ASCII码 总共128... 阅读全文
posted @ 2017-09-04 20:49 一品堂.技术学习笔记 阅读(340) 评论(0) 推荐(0) 编辑
摘要: Spring IOC设计原理解析:本文乃学习整理参考而来一、什么是Ioc/DI? IoC 容器:最主要是完成了完成对象的创建和依赖的管理注入等等。先从我们自己设计这样一个视角来考虑:所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们可配置的... 阅读全文
posted @ 2017-09-04 19:51 一品堂.技术学习笔记 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 项目代码pom.xml 文件Quartz 的包是整个项目不可缺少的 1 2 3 4.0.6.RELEASE 4 5 2.2.1 6 7 8 9 10 junit 11 junit 12 3.8.1 1... 阅读全文
posted @ 2017-09-04 14:51 一品堂.技术学习笔记 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 1 //配置类 2 3 package test; 4 5 import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; 6 import org.springframework.context.annotation.ComponentScan; 7 import org.springfram... 阅读全文
posted @ 2017-09-04 14:45 一品堂.技术学习笔记 阅读(1869) 评论(0) 推荐(0) 编辑
摘要: 前言:当一个对象或变量可以被多个线程共享的时候,就有可能使得程序的逻辑出现问题。 在一个对象中有一个变量i=0,有两个线程A,B都想对i加1,这个时候便有问题显现出来,关键就是对i加1的这个过程不是原子操作。要想对i进行递增,第一步就是获取i的值,当A获取i的值为0,在A将新的值写入A之前,B也获取了A的值0,然后A写入,i变成1,然后B也写入i,i这个时候依然是1. 当然Java的内存模型没有上... 阅读全文
posted @ 2017-09-04 14:35 一品堂.技术学习笔记 阅读(215) 评论(0) 推荐(0) 编辑
摘要: Java多线程在使用的时候会有很多语句需要我们具体的学习,在这其中wait()就是其中的一个。当然我们需要不断的努力学习才能掌握这一个语句的应用,下面的代码会对你学习Java多线程有所帮助。 1 2 class ThreadA { 3 public static void main(String[] args) { 4 ThreadB b=new ThreadB(); 5 ... 阅读全文
posted @ 2017-09-04 14:24 一品堂.技术学习笔记 阅读(573) 评论(0) 推荐(0) 编辑
摘要: 俗话说,人多好办事!在程序里也是这样,如果是同一个应用程序需要并行处理多件任务,那就可以创建多条线程。但是人多了,往往会出现冲突,使得这个工作无法再进行下去了,(三个和尚没水喝啊!)这就是“死锁”。死锁,举个形象的例子,就像3(A、B、C)个人在玩3个球(1、2、3),规则很简单:每个人都必须先拿到自己左手边的球,才能拿自己右边的球,两手都有球之后,才能把球都放下。这个游戏看起来似乎可以永远进行下... 阅读全文
posted @ 2017-09-04 14:18 一品堂.技术学习笔记 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 当程序中有多个线程存在的时候,线程和线程之间的关系并非是平等的。例如,总有一些线程是CPU消耗密集型的,也就说该线程所对应的任务是紧迫的,因此需提高这些线程的优先级来保证这些线程能够分得更多的时间片。这时肯定会出现高优先级的线程抢占低优先级线程的执行权的情况。这样一来,很有可能出现低优先级的线程长时间得不到执行的问题。要解决这个问题,就要求在那些已经设置为高优先级的线程完成了任务以后,降低它们的优... 阅读全文
posted @ 2017-09-04 14:05 一品堂.技术学习笔记 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 1 package com.faramita.test.mianshi; 2 3 import java.util.concurrent.ArrayBlockingQueue; 4 import java.util.concurrent.BlockingQueue; 5 import java.ut 阅读全文
posted @ 2017-09-04 13:58 一品堂.技术学习笔记 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 什么是正则表达式?正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子.一个正则表达式是在一个主体字符串中从左到右匹配字符串时的一种样式. "Regular expression"这个词比较拗口, 我们常使用缩写的术语"regex"或"regexp". 正则表达式可以从一个基础字符串中根据一定的匹配模式替换文本中的字符串、验证表单、提取字符串等等.想象你正在写... 阅读全文
posted @ 2017-09-04 13:51 一品堂.技术学习笔记 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 动态代理的步骤:创建一个实现了 InvocationHandler 接口的类,必须重写接口里的 invoke()方法。创建被代理的类和接口通过 Proxy 的静态方法 newProxyInsatance(ClassLoader loader,Class[] interfaces,InvocationHandler,handler) 来创建一个代理通过代理来调用方法简单的动态代理实例 1 pack... 阅读全文
posted @ 2017-09-04 13:35 一品堂.技术学习笔记 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 在初学 Java 时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String("hello"); 3 4 System.out.println(str1==str2); 5 System.out.println(str1.equals(str2));为什么第 4 行和第 ... 阅读全文
posted @ 2017-09-04 13:33 一品堂.技术学习笔记 阅读(353) 评论(0) 推荐(0) 编辑
摘要: 1. 寄存器。 这是最快的存储区,因为它位于不同于其他存储区的地方 -- 处理器的内部。但是寄存器的数量极其有限,所以寄存器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。 2. 堆栈。 位于通用 RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那里获得直接支持。堆 阅读全文
posted @ 2017-09-04 13:23 一品堂.技术学习笔记 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 机制 锁机制是用来解决多线程共享资源时产生的冲突问题的。java 为每一个对象关联一个对象锁,通常把锁分为对象锁和类锁,他们的本质都是对象锁,只不过对象锁关联的是类的 Object 对象 (java.lang.Object),而类锁关联的是类的 Class 对象 java.lang.Class。 jvm 对每个锁都有一个计数若该计数为 0,则锁没有被占用,可以被访问它的线程来持有一个对象的对象... 阅读全文
posted @ 2017-09-04 13:14 一品堂.技术学习笔记 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 一、如何实现多线程实现 Runnable 接口 1 public static void main(String[] args) { 2 MyThread myThread = new MyThread();// 一个实现了Runnable接口的类 3 Thread t = new Thread(myThread);// 声明一个线程 4 t.start();// ... 阅读全文
posted @ 2017-09-04 13:09 一品堂.技术学习笔记 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 个人认为看书有两个点好处: 1. 能出版出来的书一定是经过反复思考,雕琢和审核的,因此从专业性的角度来说,一本好书的价值超其他资料 2. 对着书上的代码自己敲的时候方便 “看完书之后再次提升自我的最好途径是看一些相关的好博文”,我个人认为这是学习的第二步,因为一本书往往有好几百页,好的博文是自己看书 阅读全文
posted @ 2017-09-04 13:02 一品堂.技术学习笔记 阅读(186) 评论(0) 推荐(0) 编辑