- 博客(68)
- 收藏
- 关注
原创 关于NIO的学习理解
以下仅仅介绍各个组件的用途与为什么会出现这些组件,不提供API的详解NIO是什么?全称new input output。针对于文件系统的IO,提供内存映射以提高IO效率;对于网络IO,提供一个线程可以管理多个连接的能力。为什么能提高IO效率?本地文件系统针对于本地文件系统,不支持选择通道+IO多路复用。文件要被应用所访问到,路径为 磁盘-->>>内核空间-->>>用户空间,磁盘到内核空间有一个DMA控制器,DMA控制器从磁盘加载数据是不需要消耗CPU.
2020-05-13 17:50:19
255
原创 造轮子-手写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
270
原创 volatile关键字修饰的变量线程安全测试
原理: volatile使用内存屏障保证所有线程的更改都能立刻被感知到,直接从主内存中读取使用场景: 不依赖变量本身的值,如下图,index依赖本身的值就不能保证线程安全。复合操作也是如此,比如++i,这种会依赖变量本身的值...
2020-04-02 21:09:21
496
原创 利用IDEA解决Maven版本依赖
最近有朋友使用IDEA,启动项目遇到jar包中的bean找到多个,一看就是依赖冲突;现实中还有其它的异常,比如NosuchMethod之类的异常,也可能是版本冲突,也有可能是版本号不对。所以今天给大家分享一下利用IDEA解决版本依赖冲突。步骤如下根据类找到所属jar,找到jar的artifactId 利用idea工具,选中具体的项目,点击红框中的图标,会出现依赖关系图 当前页面co...
2020-04-02 17:51:23
1381
翻译 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
166
原创 JAVA8自定义函数接口
函数接口:JDK1.8的特性,有且只有一个抽象方法的接口就是函数接口@FunctionalInterface:该注解用于编译器校验该函数接口是否合法即用于限制一个接口中只有一个抽象方法方法自定义函数接口/** * 自定义函数接口 * 函数接口只能有一个抽象方法 * * @author haibin.tang * @create 2018-01-30 下午1:55 **
2018-01-30 16:52:06
6662
1
原创 JAVA8自定义收集器
自定义收集器,实现集合元素求和java.util.stream.Stream#collect(java.util.stream.Collector) [T为元素类型,A为容器类型,R为最终返回类型] ;此方法接受一个Collector类型的收集器;所以自定义就需要实现Collector接口。先不论如何用收集器实现,可以试想一下按照常理来说求和一个集合,首先需要声明一个变量用于存放累加的值,在循
2018-01-30 16:11:53
466
原创 适配器模式(adapter)
模式名称:适配器使用场景 当原有功能不能满足现有需求并且现有需求与原有功能相近 比如:Version2适配Version1 好处 原有功能是稳定的版本,不应该直接修改原有版本,直接增加一个适配器适配现有功能,当出现bug的时候就可以直接定位到适配器中实现方式:第一种继承方式第二种委托方式代码实现/** *
2017-09-12 17:19:59
279
原创 迭代器(iterator)模式
模式名称:迭代器模式 Iterator描述:一个一个遍历对代码的作用:当数据容器内存储结构发生改变,不必修改客户端遍历的代码容器接口:public interface Container { ContainerIterator iterator(); void add(T element);}迭代器接口:public interface ContainerItera
2017-08-28 22:21:54
407
原创 MAC配置JCO,与找不到sapjco3异常
①到jco官网下载jco压缩包,解压②把libsapjco3.jnilib 放到一个文件夹中 把该路径配置到环境变量中③项目运行有可能会出现异常:找不到 sapjco3 ;第一种解决方式:配置虚拟机参数:-Djava.library.path=之前环境变量路径Intellj IDEA 配置VM options,如图:第二种解决方式:把jnil
2017-08-28 13:58:35
3244
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
8465
原创 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
3975
原创 配置java环境变量
还记得以前刚学java的时候配置环境变量;很头疼;按照网上找的资料配置好麻烦;配置了好久;今天闲来无事;分享一下;其实没那么麻烦①安装jdk②右键计算机--------属性---------高级系统设置-----------环境变量 其中有用户变量与系统变量 用户变量配置只针对用户生效;系统变量针对这台计算机生效(一般配置系统变量;方便一些)③系统变量找到pat
2015-08-15 09:54:42
287
原创 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
323
原创 Could not find acceptable representation
做项目的时候搭建环境出现下列异常;找了1个小时;贴出来分享一下springmvc 和mybatis整合:Could not find acceptable representation: 原因①:没有加入json的支持包 原因②:没有启用mvc注解驱动:
2015-08-14 11:20:39
2259
原创 异常总结
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
449
原创 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
18445
原创 spring的SpEl表达式
SpEl表达式: ①语法:#{表达式},表达式可以是字面值也可以是对其他bean的引用,也可以引用其它bean的属性值,也可以调用方法 例如:#{bean.name.toUpperCase()} ②在调用方法的时候需要注意到nullpointException空指针异常 解决之道:#{bean.name?.toUpperCase()}这样做在调用toUpp
2015-07-06 14:47:29
540
原创 spring的集合装配
装配集合: spring提供了与java相应的集合配置元素: 允许重复 不允许重复 key与value可以是任意类型 key与value只能是string类型 ①map与props的区别:map的键与值可以是任意类型,props的键与值都只能是String类型 ②无论是还是都可以用来装
2015-07-06 14:47:27
659
原创 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
548
原创 servlet实现下载
step1: 设置头:response.setHeader("content-disposition","attachment;filename="+文件名);step2: 读取资源路径:Stringpath =this.getServletContext.getRealPath("文件路径");//文件路径是针对于WebRoot目录下的根路径
2015-07-06 14:47:22
297
原创 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
264
原创 getWriter()与getOutputStream()
HttpServletResponse的说明:getWriter()与getOutputStream()区别:1. getWriter()用于向客户机回送字符数据2. getOutputStream()返回的对象,可以会送字符数据,也可以回送字节数据OutputStreamos=response.getOutputStream();os.write(
2015-07-06 14:47:16
569
原创 重定向与转发的区别
重定向(sendRedirect)与转发(forward)的区别:1. 方法不一样:sendRedirect是重定向转发,forward是转向2. 实际发生的位置不一样;sendRedirect发生在浏览器,forward是发生在web服务器3. 用法不一样:request. getRequestDispatcher(“/资源url”).forwa
2015-07-06 14:47:14
375
原创 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
282
原创 2015年05月15日
开发servlet有三种方法:1. 实现Servlet接口2. 通过继承GenericServlet3. 通过继承HttpServlet简述servlet的生命周期:1. 当servlet第一次被调用的时候,会触发init函数,该函数会把servlet实例装载到内存,inint函数只会被调用一次2.
2015-07-06 14:47:09
455
原创 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
247
原创 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
287
原创 myeclipse修改servlet模板
myeclipse的安装路径\plugins\com.genuitec.eclipse.wizards_11.5.0.me201310291746.jar找到servlet.java;把此文件拖出来后进行修改,修改完毕后在拖到压缩文件中进行替换掉之前的servlet.java
2015-07-06 14:47:01
403
原创 TCP/UDP编程
UDP:面向无连接的 就是发条消息过去,不会管对方有没有接收到,就会断开TCP:面向连接的 连接上后就一直监听;等待下一次请求UDP案例:发送端:package com.tanghaibin.socket;import java.io.BufferedInputStream;import java.io.IOException;import
2015-07-06 14:46:59
291
原创 反射
反射:加载类,获得类的字节码有三种方式: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
246
原创 对象流
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
275
原创 字符流
字符抽象流 1.Reader 2.writer 文件字符流: 1. FileReader 2. FileWriter 缓冲字符流: 1. BufferedReader 2. BufferedWriter此流可以提高效率 字符流只用来处理文本格式的文件 标准的输入输出流: 1.BufferedReader 2.BufferedWrit
2015-07-06 14:46:51
207
原创 合并流
sequenceInputStream: 此流可以把多个文件合并在一起;比如文件太大的时候,如果采用下载的方式,可以先分割为多个文件,然后在合并起来就可以了;下面是简单的分割工具类与合并工具类: 分割工具类:package com.tanghaibin.io;import java.io.File;import java.io.FileInputStream;import jav
2015-07-06 14:46:49
336
原创 字节流
两大字节抽象流: 1.inputstream 2.outputstream 字节流与字符流的区别: 1.字节流可以处理所有类型的文件 2.字节流没有缓冲区,而字符流有缓冲区 3.字符流只能处理文本格式的文件 操作文件的字节流: 1.FileInputStream 2.FileOutputStream
2015-07-06 14:46:46
259
原创 File类
File类:1.当我们写路径的时候;分隔符应该调用使用File.separator这个字段来获取分隔符,以保证在任何系统下都能够正常运行,不会出现兼容性问题。 2.判断文件是否存在:通过File对象调用exists方法 3.判断是否是一个文件:通过File对象调用isFile方法 4.创建文件:调用:createNewFile()方法;在调用此方法之前,应当先判断该文件是否存在
2015-07-06 14:46:43
272
原创 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
249
原创 Set集合
HashSet:当使用hashset时,hashcode方法就会得到调用,判断已经存储在集合中的对象的hashcode值是否与增加的对象的hashcode值一致,如果不一致,直接加入进去,如果一致,在进行equals方法的比较,equals方法如果返回true,则表示对象已经加入进去了,就不会加入新的了 ,否则加入进去此集合是无序的 TreeSet集合:会把放进去的对象进行自然排序
2015-07-06 14:46:38
254
原创 map集合
map集合:hashmap:键值不能重复,否则会替换,会把新的键值与对应的object放进去keyset方法:会返回key的集合,因为map的键是不能重复的,因此keyset方法返回类型是set,而map的值是可以重复的,因此values方法返回的是collection,可以容纳重复的元素。 hashset底层是采用hashmap实现的;当使用add方法将对象添加到set当中,实际上是将
2015-07-06 14:46:36
375
原创 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
332
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人