自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hobson的专栏

爱音乐 爱电影 爱运动 的一枚程序员

  • 博客(68)
  • 收藏
  • 关注

原创 关于NIO的学习理解

以下仅仅介绍各个组件的用途与为什么会出现这些组件,不提供API的详解NIO是什么?全称new input output。针对于文件系统的IO,提供内存映射以提高IO效率;对于网络IO,提供一个线程可以管理多个连接的能力。为什么能提高IO效率?本地文件系统针对于本地文件系统,不支持选择通道+IO多路复用。文件要被应用所访问到,路径为 磁盘-->>>内核空间-->>>用户空间,磁盘到内核空间有一个DMA控制器,DMA控制器从磁盘加载数据是不需要消耗CPU.

2020-05-13 17:50:19 211

原创 造轮子-手写java线程池

今天学习了JDK中的线程池,梳理了一下线程池的流程机制,尝试着写个简单的线程池package com.hobson.day2;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ConcurrentLinkedQueue;import java.util.concurrent.Executor;...

2020-04-13 17:16:15 217

原创 volatile关键字修饰的变量线程安全测试

原理: volatile使用内存屏障保证所有线程的更改都能立刻被感知到,直接从主内存中读取使用场景: 不依赖变量本身的值,如下图,index依赖本身的值就不能保证线程安全。复合操作也是如此,比如++i,这种会依赖变量本身的值...

2020-04-02 21:09:21 447

原创 利用IDEA解决Maven版本依赖

最近有朋友使用IDEA,启动项目遇到jar包中的bean找到多个,一看就是依赖冲突;现实中还有其它的异常,比如NosuchMethod之类的异常,也可能是版本冲突,也有可能是版本号不对。所以今天给大家分享一下利用IDEA解决版本依赖冲突。步骤如下根据类找到所属jar,找到jar的artifactId 利用idea工具,选中具体的项目,点击红框中的图标,会出现依赖关系图 当前页面co...

2020-04-02 17:51:23 1300

翻译 centos安装mysql 5.7

=============================================================参考文档https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/=============================================================1、添加yum仓库http://de...

2018-06-16 11:52:45 130

原创 JAVA8自定义函数接口

函数接口:JDK1.8的特性,有且只有一个抽象方法的接口就是函数接口@FunctionalInterface:该注解用于编译器校验该函数接口是否合法即用于限制一个接口中只有一个抽象方法方法自定义函数接口/** * 自定义函数接口 * 函数接口只能有一个抽象方法 * * @author haibin.tang * @create 2018-01-30 下午1:55 **

2018-01-30 16:52:06 6582 1

原创 JAVA8自定义收集器

自定义收集器,实现集合元素求和java.util.stream.Stream#collect(java.util.stream.Collector) [T为元素类型,A为容器类型,R为最终返回类型] ;此方法接受一个Collector类型的收集器;所以自定义就需要实现Collector接口。先不论如何用收集器实现,可以试想一下按照常理来说求和一个集合,首先需要声明一个变量用于存放累加的值,在循

2018-01-30 16:11:53 400

原创 适配器模式(adapter)

模式名称:适配器使用场景       当原有功能不能满足现有需求并且现有需求与原有功能相近       比如:Version2适配Version1  好处       原有功能是稳定的版本,不应该直接修改原有版本,直接增加一个适配器适配现有功能,当出现bug的时候就可以直接定位到适配器中实现方式:第一种继承方式第二种委托方式代码实现/** *

2017-09-12 17:19:59 241

原创 迭代器(iterator)模式

模式名称:迭代器模式 Iterator描述:一个一个遍历对代码的作用:当数据容器内存储结构发生改变,不必修改客户端遍历的代码容器接口:public interface Container { ContainerIterator iterator(); void add(T element);}迭代器接口:public interface ContainerItera

2017-08-28 22:21:54 372

原创 MAC配置JCO,与找不到sapjco3异常

①到jco官网下载jco压缩包,解压②把libsapjco3.jnilib 放到一个文件夹中 把该路径配置到环境变量中③项目运行有可能会出现异常:找不到 sapjco3 ;第一种解决方式:配置虚拟机参数:-Djava.library.path=之前环境变量路径Intellj IDEA 配置VM options,如图:第二种解决方式:把jnil

2017-08-28 13:58:35 2943 3

原创 Parameter 'uidList' not found. Available parameters are [list]

当mybatis传入参数为list集合的时候;mybatis会自动把其封装为一个map;会以“list”作为key;每个元素的值作为value;格式为Map其中collectoin的值就为key;如果抛出 Parameter 'uidList' not found. Available parameters are [list]异常;就说明collection的值有问题如果传入

2015-09-06 12:30:44 8360

原创 Mapped Statements collection already contains value for

Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.liecw.www.mapper.UserMapper.insertUserEducational解决:检查同一个mapper.x

2015-08-27 11:03:08 3908

原创 配置java环境变量

还记得以前刚学java的时候配置环境变量;很头疼;按照网上找的资料配置好麻烦;配置了好久;今天闲来无事;分享一下;其实没那么麻烦①安装jdk②右键计算机--------属性---------高级系统设置-----------环境变量     其中有用户变量与系统变量     用户变量配置只针对用户生效;系统变量针对这台计算机生效(一般配置系统变量;方便一些)③系统变量找到pat

2015-08-15 09:54:42 258

原创 java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor

搭建springmvc与mybatis环境出现下列异常:java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor:    解决之道:缺少aopalliance-1.0.jar包

2015-08-14 11:22:06 295

原创 Could not find acceptable representation

做项目的时候搭建环境出现下列异常;找了1个小时;贴出来分享一下springmvc 和mybatis整合:Could not find acceptable representation:    原因①:没有加入json的支持包    原因②:没有启用mvc注解驱动:

2015-08-14 11:20:39 2220

原创 异常总结

Association references unmapped class异常:    1.某一个类没有映射文件(*.hbm.xml)    2.该映射文件没有注册到hibernate.cfg.xml中。    3.映射文件的文件名不对    4.映射的类路径有错误 QueryRunner requires a DataSource to be invoke

2015-08-13 13:24:33 419

原创 Error parsing Mapper XML. Cause

springmvc与mybatis整合出现的异常:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userHandler': Injection of resource dependencies failed; nested exception is org.spri

2015-08-12 11:46:33 18402

原创 spring的SpEl表达式

SpEl表达式:       ①语法:#{表达式},表达式可以是字面值也可以是对其他bean的引用,也可以引用其它bean的属性值,也可以调用方法 例如:#{bean.name.toUpperCase()}       ②在调用方法的时候需要注意到nullpointException空指针异常  解决之道:#{bean.name?.toUpperCase()}这样做在调用toUpp

2015-07-06 14:47:29 450

原创 spring的集合装配

装配集合:   spring提供了与java相应的集合配置元素:      允许重复      不允许重复      key与value可以是任意类型      key与value只能是string类型   ①map与props的区别:map的键与值可以是任意类型,props的键与值都只能是String类型       ②无论是还是都可以用来装

2015-07-06 14:47:27 613

原创 servlet读取资源文件的三种方式

1.通过相对路径得到绝对路径:   String path =this.getServletContext.getRealPath(资源路径)//路径针对于webroot下   InputStream in = newFileInputStream(path);   Properties prop = newProperties();   prop.prop.load(in);  

2015-07-06 14:47:24 489

原创 servlet实现下载

step1:           设置头:response.setHeader("content-disposition","attachment;filename="+文件名);step2:           读取资源路径:Stringpath =this.getServletContext.getRealPath("文件路径");//文件路径是针对于WebRoot目录下的根路径

2015-07-06 14:47:22 267

原创 servlet乱码总结

中文乱码有三种情况:1.    表单formpost在接收方request.setCharacterEncoding(“utf-8”)get接收方获取到的值使用String的构造器进行重组:newString(((String)request.getParameter("")).getBytes("ISO-8859-1"),"UTF-8"); 2.    

2015-07-06 14:47:19 248

原创 getWriter()与getOutputStream()

HttpServletResponse的说明:getWriter()与getOutputStream()区别:1.      getWriter()用于向客户机回送字符数据2.      getOutputStream()返回的对象,可以会送字符数据,也可以回送字节数据OutputStreamos=response.getOutputStream();os.write(

2015-07-06 14:47:16 512

原创 重定向与转发的区别

重定向(sendRedirect)与转发(forward)的区别:1.    方法不一样:sendRedirect是重定向转发,forward是转向2.    实际发生的位置不一样;sendRedirect发生在浏览器,forward是发生在web服务器3.    用法不一样:request. getRequestDispatcher(“/资源url”).forwa

2015-07-06 14:47:14 320

原创 2015年05月15日

http协议:1.    http协议是建立在tcp/ip协议基础上2.    http协议全称  超文本传输协议额3.    http协议1.0 1.1两个版本,目前通用是1.1版本http1.0称为短连接http1.1称为长连接所谓长和短,指的是持续时间的长短  长连接1.1 大约持续30s  短连接是发送完数据就断掉 http的请求部分:基本结构:

2015-07-06 14:47:11 262

原创 2015年05月15日

开发servlet有三种方法:1.      实现Servlet接口2.      通过继承GenericServlet3.      通过继承HttpServlet简述servlet的生命周期:1.      当servlet第一次被调用的时候,会触发init函数,该函数会把servlet实例装载到内存,inint函数只会被调用一次2.      

2015-07-06 14:47:09 436

原创 2015年05月15日

tomcat无法正常启动的原因:1.      JAVA_HOME配置错误2.      8080端口被占用解决:(1)    可以先关闭netstat –anb来查看哪一个占用了8080端口  (2)改变tomcat端口号      到conf/server.xml文件中去修改        (2)能够正常启动,但是会导航到另外一个页面     

2015-07-06 14:47:06 229

原创 tomcat配置虚拟主机

配置自己的主机名:1.      在C:\Windows\System32\drivers\etc下的host文件添加一个IP与主机名如:127.0.0.1  www.tanghaibin.com2.      在tomcat的server.xml文件添加主机名项目文件夹">        项目文件夹"/>

2015-07-06 14:47:04 269

原创 myeclipse修改servlet模板

myeclipse的安装路径\plugins\com.genuitec.eclipse.wizards_11.5.0.me201310291746.jar找到servlet.java;把此文件拖出来后进行修改,修改完毕后在拖到压缩文件中进行替换掉之前的servlet.java

2015-07-06 14:47:01 377

原创 TCP/UDP编程

UDP:面向无连接的        就是发条消息过去,不会管对方有没有接收到,就会断开TCP:面向连接的        连接上后就一直监听;等待下一次请求UDP案例:发送端:package com.tanghaibin.socket;import java.io.BufferedInputStream;import java.io.IOException;import

2015-07-06 14:46:59 269

原创 反射

反射:加载类,获得类的字节码有三种方式:1.Class.forName("包名.类名");2.new  类名().getClass();3.类名.class;Class clazz = Class.forName("com.tanghaibin.reflex.Person");      Constructor [] constructor =clazz.getConstru

2015-07-06 14:46:56 219

原创 对象流

ObjectInputStream:对象输入流ObjectOutputStream:对象输出流此流可以往文件中存取对象 案例:package com.tanghaibin.io;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.i

2015-07-06 14:46:54 258

原创 字符流

字符抽象流   1.Reader  2.writer 文件字符流:  1. FileReader   2. FileWriter 缓冲字符流: 1. BufferedReader    2. BufferedWriter此流可以提高效率 字符流只用来处理文本格式的文件 标准的输入输出流:   1.BufferedReader   2.BufferedWrit

2015-07-06 14:46:51 192

原创 合并流

sequenceInputStream:  此流可以把多个文件合并在一起;比如文件太大的时候,如果采用下载的方式,可以先分割为多个文件,然后在合并起来就可以了;下面是简单的分割工具类与合并工具类: 分割工具类:package com.tanghaibin.io;import java.io.File;import java.io.FileInputStream;import jav

2015-07-06 14:46:49 314

原创 字节流

两大字节抽象流:       1.inputstream       2.outputstream 字节流与字符流的区别:    1.字节流可以处理所有类型的文件    2.字节流没有缓冲区,而字符流有缓冲区    3.字符流只能处理文本格式的文件 操作文件的字节流:   1.FileInputStream   2.FileOutputStream 

2015-07-06 14:46:46 236

原创 File类

File类:1.当我们写路径的时候;分隔符应该调用使用File.separator这个字段来获取分隔符,以保证在任何系统下都能够正常运行,不会出现兼容性问题。 2.判断文件是否存在:通过File对象调用exists方法 3.判断是否是一个文件:通过File对象调用isFile方法 4.创建文件:调用:createNewFile()方法;在调用此方法之前,应当先判断该文件是否存在

2015-07-06 14:46:43 249

原创 comparator与Comparable比较器

package work2;import java.util.Arrays;import java.util.Comparator;public class ComparatorDemo { public static void main(String[] args) {  // TODO Auto-generated methodstub  Cat[] cat = {newCa

2015-07-06 14:46:41 232

原创 Set集合

HashSet:当使用hashset时,hashcode方法就会得到调用,判断已经存储在集合中的对象的hashcode值是否与增加的对象的hashcode值一致,如果不一致,直接加入进去,如果一致,在进行equals方法的比较,equals方法如果返回true,则表示对象已经加入进去了,就不会加入新的了 ,否则加入进去此集合是无序的 TreeSet集合:会把放进去的对象进行自然排序

2015-07-06 14:46:38 229

原创 map集合

map集合:hashmap:键值不能重复,否则会替换,会把新的键值与对应的object放进去keyset方法:会返回key的集合,因为map的键是不能重复的,因此keyset方法返回类型是set,而map的值是可以重复的,因此values方法返回的是collection,可以容纳重复的元素。 hashset底层是采用hashmap实现的;当使用add方法将对象添加到set当中,实际上是将

2015-07-06 14:46:36 352

原创 Object与equals与HashCode

关于object类的equals方法的特点:1.自反:x.equals(x)应该返回true2.对称性:x.equals(y)为true,那么y.equals(x)为true3.传递性4.一致性 关于object类的hashcode方法的特点:1.在java应用的一次执行过程当中,对于同一个对象的hashcode方法的多次调用,他们应该返回同样的值(前提是该对象的信息没有发生变化)

2015-07-06 14:46:33 311

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除