Java基础
文章平均质量分 61
Java基础及常见问题
冷锋-
只要现在努力一切都来得及,最近暂停更
展开
-
Java Vector类
Java Vector 类一、Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:Vector 是同步访问的。 Vector 包含了许多传统的方法,这些方法不属于集合框架。Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。Vector 类支持 4 种构造方法。第一种构造方法创建一个默认的向量,默认大小为 10...原创 2019-06-03 10:23:45 · 673 阅读 · 0 评论 -
在方法和作用域的内部类
通常在一个方里面或者任意的作用域内定义内部类,有如下俩个需求:1.实现了某类型的接口,于是可以创建并返回对其的引用。2.解决一个复杂的问题,想创建一个类来辅助你的解决方案,但又不希望这个类是公共可用的。接口:实例类内部类的作用:...原创 2019-04-22 17:21:39 · 178 阅读 · 0 评论 -
Java基础之继承初始化
1.通过示例来说明:(2)运行main方法时的加载顺序 2.1 在对Beetle进行编译加载的过程中,编译器会找到extend关键字,找到这个类有一个父类,如果有多个父类,依次加载; 2.2根据父类中的static初始化即会被执行,然后是下一个子类的static初始化; 2.3至此为止,就可以进行对象创建了。首先对象中所有的父类类型都会被设置默认值,对象引用则被...原创 2019-04-08 18:22:31 · 265 阅读 · 0 评论 -
利用Java反射机制对象属性名/属性值
直接上代码,不懂的地方可以去查看api//java反射机制获取对象所有属性,并拼接成字符串 public String splicingString(Object o){ String str = ""; String[] fieldNames=this.getFiledName(o); for(int i=0 ; i< fieldNames.length ; i++...原创 2018-04-04 16:52:37 · 376 阅读 · 0 评论 -
HashMap的底层实现原理
数据结构中有数组和链表这两个结构来存储数据。 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难; 链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。 综合这两者的优点,摒弃缺点,哈希表就诞生了,既满足了数据查找方面的特点,...原创 2018-10-22 17:42:10 · 201 阅读 · 0 评论 -
深入理解--Threadlocal原理,及可能导致内存泄露
一.原理(1)什么是ThreadLocal变量?ThreadLoal 变量,线程局部变量,ThreadLocal 提供了线程本地的实例,它与普通变量的区别在于,每个使用该变量的线程都会初始化一个完全独立的实例副本。当一个线程结束时,它所使用的所有 ThreadLocal 相对的实例副本都可被回收。总的来说,ThreadLocal 适用于每个线程需要自己独立的实例且该实例需要在多个方法中被使用,也即变量在线程间隔离而在方法或类间共享的场景。(2)ThreadLocal内部数据结构首先 Th原创 2021-01-23 20:33:11 · 350 阅读 · 0 评论 -
深入理解--CAS算法原理
1、CAS介绍CAS:Compare and Swap,即比较再交换,而。在java.util.atomic包下,找一个原子操作类AtomicInteger,CAS源码如下:valueOffset (该变量在内存中的偏移地址) expect(预期值) update(新值)/** * Atomically sets the value to the given updated value * if the current value {@code ==} the expec原创 2020-09-26 23:44:19 · 304 阅读 · 0 评论 -
Java核心深入理解BIO、NIO、AIO
Java核心深入理解BIO、NIO、AIOBIO、NIO、AIO 的区别是什么?同/异步、阻/非阻塞的区别是什么?文件读写最优雅的实现方式是什么?NIO 如何实现多路复用功能?一、IO 介绍我们通常所说的 BIO 是相对于 NIO 来说的,BIO 也就是 Java 开始之初推出的 IO 操作模块,BIO 是 BlockingIO 的缩写,顾名思义就是阻塞 IO 的意思。...转载 2020-01-12 22:02:54 · 146 阅读 · 0 评论 -
Java 使用ajax访问依然是上个请求URL地址
JavaWeb项目,使用ajax进行访问Url,依然请求是上个请求地址 我实际遇到的问题: 当我请求到用户添加的url,信息填写完成之后,我自己设置通过button标签提交,ajax请求到saveUserUrl;经过我反复测试,最后发现了这个bug。 我填写用户的信息是在form标签里面,action里面没写,同时我把这个button标签,写在这个fo原创 2017-06-25 15:42:19 · 2840 阅读 · 4 评论 -
Java static常用应用场景
一. static特点static是一个修饰符,通常用于修饰变量和方法,如开发过程中用到的字典类数据都会用到static来修饰,工具类方法,如Dateutils,Stringutils这类工具方法也会用到static来修饰,那么除了这两种最常用的场景外,是否还有其他场景呢,答案是:有的,总共五种:static变量 static方法 static代码块 static内部类 stati...原创 2019-12-25 17:51:38 · 301 阅读 · 0 评论 -
Token与Jwt详解
区别: Token验证方式:由于服务器没有存储token数据,因此需要先从数据库中查询当前token,服务器再是验证否有效; JWT验证方式:直接在服务端进行校验,并且不用查库。因为用户的信息及加密信息,在第二部分payload和第三部分签证中已经生成,只要在服务端进行校验就行,并且校验也是JWT自己实现的。接下来,详细介绍Token和Jwt相关概念1.To...原创 2019-10-30 10:17:59 · 3937 阅读 · 2 评论 -
解决Fastdfs依赖包问题:Dependency 'org.csource:fastdfs-client-java:1.27-SNAPSHOT' not founnd
因为fastdfs-client-java-1.27-SNAPSHOT.jar这个依赖包在目前在Maven中央仓库是已经没有了,所以需要手动引入jar<dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifa...原创 2019-09-27 15:38:36 · 4791 阅读 · 2 评论 -
Java 比较StringBuilder和Stringbuffer 线程安全性
直接上代码:1.StringBufferpackage com.thread;import javax.annotation.concurrent.ThreadSafe;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util....原创 2019-08-01 16:00:09 · 612 阅读 · 0 评论 -
Java 抽象类和接口区别
抽象类、接口其实都可以说是一种特殊的类。抽象类是对类的属性和行为的双重抽象,而接口则是对类行为的抽象。一、抽象类1、含有抽象方法的类一定是抽象类,反之则不成立,抽象类可以没有抽象方法。2、抽象类不能被实例化只能被类或抽象类继承,可实现接口。3、类继承抽象类必须实现所有抽象方法,抽象继承另一个抽象类则不一定实现父类的所有抽象方法。二、接口1、接口中的成员变量必须是常量即p...原创 2019-10-11 14:54:35 · 171 阅读 · 0 评论 -
Java中队列queue和Deque
前言:学过数据结构的,一定对队列不陌生,java也实现了队列。接下来,介绍一下deque和queue1、Queue 队列, 一种常用的数据结构,可以将队列看做是一种特殊的线性表,该结构遵循的先进先出原则。Java中,LinkedList实现了Queue接口,因为LinkedList进行插入、删除操作效率较高 相关方法: boolean offer(E ...原创 2019-06-03 10:43:25 · 2259 阅读 · 0 评论 -
Java正则表达式
(1)Java正则表达式作用: 判断目标字符串中是否 可能 含这个字符。假如待匹配字符串包含指定字符串并且匹配正则表达式,则为真,假如待匹配字符串不包含指定字符串但是匹配正则表达式,也为真,其他情况为假。(2)正则表达式语法 在其他语言中,\\表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。在 Java...原创 2019-05-27 16:43:34 · 222 阅读 · 0 评论 -
Maven常用命令
Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ Maven常用命令: 1. 创建Maven的普通java项目: mvn archetype:create -DgroupId=packageName ...原创 2018-07-03 18:12:10 · 129 阅读 · 0 评论 -
Maven命令打jar包及引入第三方jar包
(1)maven命令打jar包一.首先进入本地maven工程路径下二.使用mvn clean package -Dmaven.test.skin=true命令,完成之后,会显示Build Success,如下图三.然后可以在maven工程Target目录下面找到打的jar包四.最后用java -jar xxxx.jar就可以运行了(2)maven命令引入第三方jar...原创 2018-04-08 10:36:51 · 1606 阅读 · 0 评论 -
Java远程调用shell脚本(项目实战)
前言 Java远程调用shell脚本,需要用到SSH建立链接(类似于xshell连接linux),然后再根据合法的参数进行shell脚本调用1 首先,从业务层开始,我这里实现重传脚本的业务,代码如下. //重传 public String reUpload(Upload upload) throws Exception{ Map...原创 2018-10-11 16:16:13 · 8330 阅读 · 5 评论 -
Apache HttpClient的实例CloseableHttpClient发起Http请求
public static String doPost(String url, Map<String, Object> param) { // 创建Httpclient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse...原创 2018-08-30 20:54:13 · 1002 阅读 · 0 评论 -
getWriter() has already been called for this response异常(100%解决)
java.lang.IllegalStateException: getWriter() has already been called for this response异常(100%解决)1.首先看下抛的异常详情:java.lang.IllegalStateException: getWriter() has already been called for this respon...原创 2017-12-21 10:41:44 · 38196 阅读 · 8 评论