java
张超帅
哈哈哈哈哈哈
展开
-
MyBatis批量更新出错update foreach
<update id="updateCheckList" parameterType="java.util.List"> <foreach collection="list" separator=";" item="item"> update fund_ <set> ...原创 2019-08-27 17:08:18 · 895 阅读 · 0 评论 -
concurrentHashMap
线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他线程访问Has原创 2017-10-02 09:58:04 · 145 阅读 · 0 评论 -
socket通信
一.服务端服务端开启socket,端口 开输入流监听客户端信息 读取客户端传来的信息并处理 开启输出流并写出数据二.客户端开启socket端口 写出待处理数据 开启输入流读取获取服务端传来的信息server:public class Service { public static void main(String[] args) throws IOException {转载 2017-10-06 22:27:42 · 220 阅读 · 0 评论 -
FileInputStream和FileOutputStream实现简单的文件复制
package qiuzhao;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class InputOutput { publ原创 2017-10-06 22:02:16 · 407 阅读 · 0 评论 -
简述final,finalize,finally的区别?
final是关键字,final可以修饰类、方法、属性。 如果一个类被final修饰,那么这个类就是最终类,不能派生出新的子类,不能作为父类被继承,该类中的所有方法都不能被重写,但是final类中的成员变量是可以改变的,要想final类中的成员变量的不可以改变,必须给成员变量添加final修饰。因此,一个类不能同时被final和abstract修饰,这两个关键字相互矛盾。 如果final修饰方法,原创 2017-08-22 22:43:43 · 1083 阅读 · 0 评论 -
abstract类和接口
比较一下两者的语法区别: 1.抽象类可以有构造方法,接口中不能有构造方法。 2.抽象类中可以有普通成员变量,接口中没有普通成员变量 3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。 4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然 eclipse下不报错,但应该也不行),但接口中的抽象方法只能是publ原创 2017-08-06 16:59:55 · 368 阅读 · 0 评论 -
Java中的static
static 修饰的变量属于类,只能定义在类中方法外。不能出现在public static void main(String[] args)中。原创 2017-09-03 09:02:09 · 170 阅读 · 0 评论 -
java基础真题
Java程序的种类有: (a)内嵌于Web文件中,由浏览器来观看的_Applet (b)可独立运行的 Application (c)服务器端的 Servletsjavac一次可同时编译数个Java源文件 javac.exe能指定编译结果要置于哪个目录(directory),classpath属性java不允许单独的方法,过程或函数存在 java语言中的方法属于对象的成员,而不是类的成员。不原创 2017-08-18 14:09:21 · 260 阅读 · 0 评论 -
Java反射机制
获取Class对象的三种方式: 方式一:通过Object类中的getClass()方法 Person p=new Person(); Class c=p.getClass();方式二:通过 类名.class获取到字节码文件的对象 Class c2=Person.class;方式三:通过Class类中的方法 (把类名作为字符串传递给Class类中的静态方法forName即可)。运行cla原创 2017-09-21 18:03:20 · 260 阅读 · 0 评论 -
Servlet过滤器和监听器
Servlet过滤器的创建步骤 创建一个Servlet过滤器需要下面的步骤: 1.创建一个实现了javax.servlet.Filter接口的类。 2.重写init(FilterConfig)方法,读入为过滤器配置的初始化参数,申请过滤器需要的资源。 3.重写方法doFilter(ServletRequest,ServletResponse,FilterChain),完成过滤操作原创 2017-09-25 12:18:07 · 140 阅读 · 0 评论 -
servlet是线程安全的吗?
Servlet不是线程安全的。 要解释为什么Servlet为什么不是线程安全的,需要了解Servlet容器(即Tomcat)使如何响应HTTP请求的。当Tomcat接收到Client的HTTP请求时,Tomcat从线程池中取出一个线程,之后找到该请求对应的Servlet对象并进行初始化,之后调用service()方法。要注意的是每一个Servlet对象再Tomcat容器中只有一个实例对象,即是单例原创 2017-10-02 20:28:44 · 415 阅读 · 0 评论 -
重载和重写
动态绑定与静态绑定 在Java中存在两种绑定方式,一种为静态绑定,又称作早期绑定;另一种就是动态绑定,也叫后期绑定。区别 (1)、静态绑定发生在编译时期,动态绑定发生在运行时。 (2)、使用private或static或final修饰的变量或者方法,使用静态绑定。而虚方法(可以被子类重写的方法)则会根据运行时 的对象进行动态绑定。 (3)、静态绑定使用类信息来完成,而动态绑定则需要使用对象原创 2017-10-03 19:31:21 · 130 阅读 · 0 评论 -
HashMap的实现原理
HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表 链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表 那么我们能不能综合转载 2017-09-07 09:55:50 · 188 阅读 · 0 评论 -
关于java的一些写法
遍历List遍历houses使用forEachlamda表达式List<House> houses = houseMapper.selectPageHouses(query, pageParams);houses.forEach(h->{ h.setFirstImg(imgPrefix + h.getFirstImg()); h.setImageList(h.getI...原创 2019-02-21 01:12:13 · 1243 阅读 · 0 评论 -
获取秒的时间戳
Instant.now().getEpochSecond()原创 2019-02-26 00:10:28 · 1944 阅读 · 0 评论 -
java获取当前时间的时间戳和后7天的时间戳
话不多说,看代码public class AppTime { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); long createTime = calendar.getTimeInMillis(); System....原创 2018-11-03 16:58:24 · 14599 阅读 · 1 评论 -
Java8新特性之forEach+Lambda 表达式遍历Map和List
今天来说一下Java8中forEach的简单使用。我们使用对比的方式来看应该会看得更加清楚,更能理解:============Java8之前的方式==========Map<String, Integer> items = new HashMap<>();items.put("A", 10);items.put("B", 20);items.put("C", 30...转载 2018-09-27 11:24:22 · 7644 阅读 · 0 评论 -
future异步回调
Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到。FutureTask实现了两个接口,Runnable和Future,所以它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值,那么这个组合的...原创 2018-06-22 14:44:53 · 1088 阅读 · 1 评论 -
关于String类
对于 String str="a"; JVM先到字符串池中查找,看是否已经存在值为”abc”的对象,如果存在,则不再创建新的对象,直接返回已存在对象的引用;如果不存在,则先创建这个对象,然后把它加入到字符串池中,再将它的引用返回。所以这句代码创建了一个对象。 前面的意识就是如果“a”存在,会在堆内存中开辟空间新建一个对象,然后再把它加入常量池。 对于String str1="a"; 由于常原创 2017-10-06 09:38:29 · 168 阅读 · 0 评论 -
Java的值传递,没有引用传递
结合上面的分析,关于值传递和引用传递可以得出这样的结论:(1)基本数据类型传值,对形参的修改不会影响实参; (2)引用类型传引用,形参和实参指向同一个内存地址(同一个对象),所以对参数的修改会影响到实际的对象; (3)String, Integer, Double等immutable的类型特殊处理,可以理解为传值,最后的操作不会修改实参对象。“在Java里面参数传递都是按值传递”这句话的意思是:原创 2017-10-06 10:13:08 · 150 阅读 · 0 评论 -
java nio
Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。 Asynchronous IO(异步IO):Java NIO可以让你异步的使用IO,例如:当线程从通道读取数据到缓冲区时原创 2017-10-04 13:28:01 · 203 阅读 · 0 评论 -
Random函数
要生成在[min,max]之间的随机整数package edu.sjtu.erplab.io;import java.util.Random;public class RandomTest { public static void main(String[] args) { int max=20; int min=10; Random rand原创 2017-10-04 10:41:20 · 359 阅读 · 0 评论 -
object对象重写equals方法时为什么需要重写hashCode方法
在Java语言中,equals方法在使用时: 针对包装对象,比较的是对象的值(包括 boolean,byte,char,short,int,long,float,double) 针对String对象,比较的也是String的值(因为String内部重写了equals方法和hashCode方法) 针对其他object对象,比较的是两个对象的引用是否指向同一个内存地址而当我原创 2017-09-25 00:24:35 · 668 阅读 · 0 评论 -
字符串
若串str=”xunlei”,其子串的数目是() 字串: n(n+1)/2 + 1 非空子串:n(n+1)/2 非空真子串:n(n+1)/2 - 1原创 2017-09-24 00:13:35 · 165 阅读 · 0 评论 -
Servlet
Servlet的生命周期一般可以用三个方法来表示: init():仅执行一次,负责在装载Servlet时初始化Servlet对象 1.加载Servlet类及.class对应的数据 2.创建ServletConfig对象 3.创建Servlet对象service() :核心方法,一般HttpServlet中会有get,post两种处理方式。在调用doGet和doPost方法时会构造servle原创 2017-09-23 22:26:39 · 188 阅读 · 0 评论 -
构造函数
构造方法 必须满足以下语法规则: (1)方法名必须与类名相同; (2)不要声明返回类型; (3)不能被static、final、synchronized、abstract和native修饰; (4)构造方法用final和abstract修饰没有意义。原创 2017-08-06 17:11:43 · 266 阅读 · 0 评论 -
Hashmap和Hashtable比较
关于HashMap的一些说法: a) HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。HashMap的底层结构是一个数组,数组中的每一项是一条链表。 c) HashMap实现不同步,线程不安全。 HashTable线程安全 d) HashMap中的key-value都是存储在Entry中的。 e) HashMap可以存null键和null值,不保证元素原创 2017-08-06 16:49:07 · 199 阅读 · 0 评论 -
java 异常
都是Throwable的子类: 1.Exception(异常) :是程序本身可以处理的异常。 2.Error(错误): 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,一般不需要程序处理。 3.检查异常(编译器要求必须处置的异常) : 除了Error,RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。这原创 2017-08-07 22:29:26 · 159 阅读 · 0 评论 -
java基础部分总结2
StringBuffer和StringBuilder 效率:StringString(大姐,出生于JDK1.0时代) 不可变字符序列原创 2017-08-05 14:20:42 · 224 阅读 · 0 评论 -
java基础部分代码相关题2
public class Test{static{ int x=5;}static int x,y;public static void main(String args[]){ x--; myMethod( ); System.out.println(x+y+ ++x);}public static void myMethod( ){ y=x++ + ++x原创 2017-08-07 11:49:43 · 517 阅读 · 0 评论 -
如何处理线程并发时产生的线程安全问题(Runnable和Thread)
在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runnable接口。多线程执行没有一个确定的顺序,并不是先启动线程一定先执行,当前一刻,谁抢占了cpu资源,谁就执行 一.实现runnable接口 位于同一个Thread对象里,t1,t2两条线程的run()方法,其实是一个run(),都在调用静态方法区的sum,将会导致线程安全问题 public class原创 2017-05-26 20:14:34 · 814 阅读 · 0 评论 -
读取文本txt字符串的方法汇总(及出现乱码情况)
通常情况下我们考虑系统默认的编码格式(gbk),notepad上默认的是ansi编码格式。当一个txt文件的编码格式为utf-8时,直接用系统默认的编码格式肯定是会乱码的。这时候我们在输入输出的时候可以给定编码方式,使其不乱码或得到的目标文件为我们想要的编码格式。1.选择FileInputStream和FileOutputStream输入输出这种方法不能指定编码格式,当原文件为gbk时,生原创 2017-05-23 19:57:48 · 2227 阅读 · 0 评论 -
java多种方式实现1G文件复制
比较复制1G视频文件时间的快慢,其中byte[]数组大小可以更改,发现byte[512]时复制时间比byte[1024]明显更快,可以选择适合的byte数组大小实现更快的速度import java.io.*;import java.nio.channels.FileChannel;import java.nio.ByteBuffer;public class CopyFile1{转载 2017-05-23 19:51:00 · 454 阅读 · 0 评论 -
java内存管理
Java虚拟机栈虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。本地方法栈 本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常转载 2017-05-12 00:53:44 · 196 阅读 · 0 评论 -
java并发与线程
CopyOnWriteArrayList适合使用在读操作远远大于写操作的场景里,比如缓存。 ReadWriteLock 当写操作时,其他线程无法读取或写入数据,而当读操作时,其它线程无法写入数据,但却可以读取数据 。适用于 读取远远大于写入的操作。 ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。Co原创 2017-08-05 10:06:06 · 212 阅读 · 0 评论 -
java基础部分代码相关题
public class SendValue{ public String str="6"; public static void main(String[] args) { SendValue sv=new SendValue(); sv.change(sv.str); System.out.println(sv.str);原创 2017-08-05 00:04:22 · 801 阅读 · 0 评论 -
jvm java回收机制
java的内存回收是自动的,Gc在后台运行,不需要用户手动操作 java中不允许使用指针 内存回收线程可以释放无用的对象内存原创 2017-08-05 19:43:52 · 160 阅读 · 0 评论 -
线程安全的类
she stack,hashtable ,enumerator stringbuffer concurrenthashmap原创 2017-09-02 23:28:48 · 210 阅读 · 0 评论 -
Java的数据类型与运算符
以下表达式中,正确的是()byte i=128boolean i=nulllong i=0xfffLdouble i=0.9239d答案:CDA byte ,1字节,值域-128至127 B boolean并非包装对象Boolean,不能赋值为null原创 2017-08-22 21:58:26 · 1118 阅读 · 0 评论 -
object的常用方法及作用
clone,equals,hashCode,getClass,wait,notify,notiftAll,toString (1)clone 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。 (2)equals 在Object中与==是一样的,子类一般需要重写该方法 (3)hashCode 该原创 2017-09-06 21:05:38 · 1838 阅读 · 0 评论