java
文章平均质量分 59
涂有
架构世界,架构未来
展开
-
快速过一遍ThreadLocal源码
get方法用于获取ThreadLocal对象代表的实际的值,如下图所示,先获取当前线程,然后获取线程的ThreadLocalMap属性,如果ThreadLocalMap不为空则以当前ThreadLocal的this为key获取Map里面的值,即返回ThreadLocal代表的值,如果ThreadLocalMap为空则调用setInitialValue方法初始化ThreadLocal的值。ThreadLocal是java的用来做线程隔离的一个类,原意就是一个线程私有变量,用来保证线程的数据安全。原创 2023-03-18 14:23:12 · 467 阅读 · 0 评论 -
深入浅出TDD测试驱动
测试驱动红灯-绿灯-重构测试驱动就是先写测试,这是测试是红灯,也就是不能通过;然后再写实现,这时测试变为绿灯,表示能通过了;最后重构优化代码,再次测试看是否有红灯黑盒-白盒测试黑盒测试就是不知道实现细节的测试,一般指功能测试白盒测试就是知道实现细节的测试,一般指单元测试测试就是可执行的文档,而TDD是创建和维护这种文档的最常用方式单侧和集成测试单侧要尽量覆盖所有情况,而集成测试只需验证各个部分是否打通,所以集成测试只需少许用例TDD和非TDD的区别未使用TDD的情况下,单元测试的主要目标原创 2021-03-27 12:37:57 · 676 阅读 · 0 评论 -
Java并发编程基础
添加链接描述原创 2021-02-18 19:35:59 · 110 阅读 · 0 评论 -
ThreadLocal 原理源码解析,以及内存泄漏案例分析
ThreadLocal在面试经常会被问到,这里来做一个透彻的解析介绍ThreadLocal我们叫他线程变量,为什么叫线程变量,主要是因为他生命周期是一个线程内。由于一个线程可以存在多个ThreadLocal线程变量,所以Thread中有一个ThreadLocalMap的属性专门用于存储多个线程变量,map的key正是用ThreadLocal,map的value才是存的真正ThreadLocal.get()的值源码分析ThreadLocal.set() public void set(T原创 2020-08-07 01:27:45 · 207 阅读 · 1 评论 -
快速过一遍Object类源码
通过阅读Object类的源码,我们发现Object的方法几乎所有方法都是直接或者间接是native方法,即非java代码实现的方法,只有finalize方法是空实现方法,通过阅读finalize方法的注释,可以了解到此方法主要是在gc垃圾回收此对象会回调这个方法...原创 2020-07-20 22:23:36 · 152 阅读 · 1 评论 -
快速过一遍Vector源码
类图Vector和ArrayList源码几乎是一模一样的不同点Vector每个public都加了synchronized关键字,所以Vector是线程安全,而ArrayList非线程安全Vector的增长因子可以设置,而ArrayList的增长因子固定50%其他请看 ArrayList源码分析...原创 2020-07-19 18:07:16 · 157 阅读 · 0 评论 -
快速过一遍LinkedList源码
List类继承关系图由类图可以看出LinkedList不仅仅有List的功能,还实现了Deque双向队列功能优缺点优点不需要连续的内存空间,充分利用内存空间缺点不可以随机访问,必须从头遍历挨个寻找属性使用int size表示当前存储的实际个数Node first 第一个元素Node last 最后一个元素方法构造方法LinkedList()无参构造什么也不做LinkedList(Collection c)使用其他集合元素填充LinkedListadd方法public原创 2020-07-19 17:47:32 · 156 阅读 · 0 评论 -
快速过一遍ArrayList源码
List类继承关系图优缺点优点随机访问缺点必须是连续的内存空间ArrayList属性使用Object[] elementData使用int size存储当前数量存储的实际个数ArrayList方法构造方法ArrayList()无参构造使用默认的10容量public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;}ArrayList(int capacity)指定容量,如果为零原创 2020-07-19 17:44:47 · 162 阅读 · 1 评论 -
Spring Cloud深入浅出
小知识点application.yml中,"—"分割多个配置断,有spring.profiles=xxx的,表示要spring.profiles.active=xxx才能激活,没有spring.profiles的代码段是默认生效的配置@SpringCloudApplication是@SpringBootApplication、@EnableDiscoveryClient、@EnableCircuitBreaker组成的yml配置:和value之间必须要有个空格,name后面必须要有“:”注册中心原创 2020-07-09 00:10:05 · 3829 阅读 · 1 评论 -
spring cloud - java.lang.StringIndexOutOfBoundsException: String index out of range
2015-11-24T14:30:29.89-0600 [App/0] OUT java.lang.StringIndexOutOfBoundsException: String index out of range: 1232015-11-24T14:30:29.89-0600 [App/0] OUT at java.lang.String.checkBounds(String.java:385)2015-11-24T14:30:29.89-0600 [App/0]原创 2020-05-11 14:30:57 · 1137 阅读 · 0 评论 -
json-lib学习总结
测试所依赖的包:json-lib-2.3-jdk15.jar commons-collections.jar commons-lang.jar commons-logging.jar commons-beanutils.jar ezmorph-1.0.6.jar xom-1.1.jar1、数组、list--------->json数组JSONArray js原创 2013-04-04 10:17:09 · 676 阅读 · 0 评论 -
log4j2 动态生成logger,每个logger一个输出文件
maven依赖<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</version></dependency&am原创 2017-12-27 00:53:14 · 15154 阅读 · 4 评论 -
JAVA BIO与NIO、AIO的区别(这个容易理解)
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者原创 2018-01-05 11:26:13 · 100792 阅读 · 25 评论 -
jacob语法总结
1、 Dispatch.get(ds, “a1”);返回Variant类型,获取ds对象的a1属性,通过to…()方法可以转换为java的很多类型2、 Dispatch.put(ds, “a1”, …);设置ds对象a1属性,具体参数为…指定3、 ActiveXComponent有setProperty(“a1”, …)和getProperty(“a1”)方法,比Dispatc...原创 2013-05-05 09:07:18 · 3713 阅读 · 5 评论 -
Mybatis之Mapper接口的实现原理
mybatis的mapper代理是用的jdk的动态代理,请看mybatis的如下代码:/** * Copyright 2009-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use ...原创 2018-05-16 17:13:41 · 6778 阅读 · 0 评论 -
Lombok常用注解解析「简化Java各种简单对象的模板代码」
目录 一 IDE语法支持二 添加Maven依赖三 常用注解解析简单注解@Getter@Setter@ToString@EqualsAndHashCode@NoArgsConstructor@AllArgsConstructor@Cleanup@NonNull@val@var简单注解组合@Data@Value日志注解@L...原创 2018-12-16 15:02:24 · 378 阅读 · 0 评论 -
Spring整合Redis序列化问题
1、key的序列化问题o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Resolved exception caused by Handler execution: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String发生这个异常是因...原创 2019-08-01 23:40:52 · 2444 阅读 · 0 评论 -
Java7 新支持的语法
package java7;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Scanner;import java.util.Set;import org原创 2017-08-14 22:52:59 · 388 阅读 · 0 评论 -
jacob实现word和xml的互转化
使用准备: 1、jacob-1.15-M3-x86.dll copy到c:\\windows\system32 2、引入jacob.jarword转xml try { ActiveXComponent app = new ActiveXComponent( "Wor原创 2013-05-04 13:33:35 · 4481 阅读 · 0 评论 -
html和jsp的相对路径不同【注意】
如右图:当我在main.jsp中引入js文件时:我弄了半天都不能引入js文件,但是换了在html文件引入js文件时,同样采用以上的代码却可以总结: 相对路径形如:js/main.js 在jsp中,这种相对路径相对的目录是项目根目录,也就是WebRoot文件夹 在html中,这种相对路径相对的目录是当前文件的目录,原创 2013-05-09 16:00:35 · 891 阅读 · 0 评论 -
selenium(WebDriver) API
1.2.1 用webdriver打开一个浏览器打开firefox浏览器: WebDriver driver = new FirefoxDriver(); 打开IE浏览器 WebDriver driver = new InternetExplorerDriver ();打开HtmlUnit浏览器转载 2017-10-31 11:08:30 · 293 阅读 · 0 评论 -
Java ClassLoader动态加载外部java代码
外部代码package priv.tuyou;public class Say { public void say(){ System.out.println("say priv.tuyou.hello"); }}存放路径动态加载示例import java.io.ByteArrayOutputStream;import java.i原创 2017-08-14 22:45:08 · 751 阅读 · 0 评论 -
Java 8的新特性—终极版
声明:本文翻译自Java 8 Features Tutorial – The ULTIMATE Guide,翻译过程中发现并发编程网已经有同学翻译过了:Java 8 特性 – 终极手册,我还是坚持自己翻译了一版(写作驱动学习,加深印象),有些地方参考了该同学的。Java 8前言: Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级。在Java转载 2017-08-14 23:39:57 · 300 阅读 · 0 评论 -
Java URLClassLoader动态加载外部java代码
外部代码package priv.tuyou;public class Say { public void say(){ System.out.println("say priv.tuyou.hello"); }}存放路径动态加载示例import java.lang.reflect.InvocationTargetException;原创 2017-08-14 22:42:55 · 6129 阅读 · 0 评论 -
jvisualvm远程连接tomcat调试
1 修改tomcat在catalina.sh中最开始增加:JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=f原创 2017-08-24 16:39:42 · 655 阅读 · 0 评论 -
java连接常见数据库的连接字符串
1. MySQL(http://www.mysql.com)mm.mysql-2.0.2-bin.jar Class.forName( "org.gjt.mm.mysql.Driver" ); cn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", sUsr, sP转载 2013-11-09 22:37:23 · 768 阅读 · 0 评论 -
WebMagic高级用法
Maven依赖 us.codecraft webmagic-core 0.7.3 us.codecraft webmagic-extension 0.7.3 设置PageProcessor设置请求header、cookie,很多网站都要专门的header才能正确网站,否则会出现访问错误原创 2017-11-09 23:08:16 · 7369 阅读 · 2 评论 -
Eclipse远程调试Tomcat
1 配置Tomcat启动参数在远程tomcat的startup.bat或者startup.sh文件中开始处配置如下变量,端口配置成默认的8000:SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=原创 2017-07-27 15:02:02 · 303 阅读 · 0 评论 -
jni中jstring与char*转换的乱码问题
这两天在学习使用jni,在java程序中,调用海量词典的dll。利用jni的GetStringChars函数和NewString函数时,遇到了中文乱码的问题,折腾了一个晚上。查阅了一些资料,总结如下:一.相关概念java内部是使用16bit的unicode编码(UTF-16)来表示字符串的,无论中文英文都是2字节; jni内部是使用UTF-8编码来表示字符串的,UTF-8是变长编码的u原创 2014-06-27 12:52:16 · 5499 阅读 · 2 评论 -
正则表达式匹配汉字
utf-8编码下:[\\u4E00-\\u9FA5]原创 2013-06-01 16:25:13 · 568 阅读 · 0 评论 -
(一)struts2.2.1之前和struts2.3基本配置的区别
注意:创建web项目,一定搭配的是j2ee1.4只有两步,1.导入包,2.在web.xml中配置过滤器1、导入包的区别在struts2.0中: commons-logging-1.0.4.jar-----日志包;freemarker-2.3.8.jarognl-2.6.11.jarstruts2-core-2.0.11.jarxw...原创 2019-09-06 00:18:39 · 5445 阅读 · 1 评论 -
java获得当前文件路径
第一种:File f = new File(this.getClass().getResource("/").getPath());System.out.println(f);结果:C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin获取当前类的所在工程路径;如果不加“/”File f转载 2013-11-09 21:23:43 · 641 阅读 · 0 评论 -
(二)struts2.0之helloworld
1.在导入包的最小集合 commons-logging-1.0.4.jar freemarker-2.3.8.jar ognl-2.6.11.jar struts2-core-2.0.11.jar xwork-2.0.4.jar 2.在web.xml中编写过滤器01. 02. 03. 04. Struts 2.0 He原创 2014-01-08 10:40:53 · 628 阅读 · 0 评论 -
hibernate之helloworld(四步)
1、编写pojo,如:public class Student { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNa原创 2014-01-13 22:21:33 · 555 阅读 · 0 评论 -
mysql连接超时问题,用数据源解决
org.hibernate.connection.C3P0ConnectionProvider 5 20 1800 50 true原创 2014-05-13 00:00:25 · 725 阅读 · 0 评论 -
Linux下关于解决JavaSwing中文乱码的情况
前两天在linux中运行java 老是出乱码,很苦恼,后来网上找了好多解决办法。有些可行,有些不可行,今天总结一下。 redhed 貌似没出现乱码 本身就jdk就支持中文 红旗linux suse等都不支持,需要自己手工配置,解决办法:第一种方法: 1.从windows C:\WINDOWS\Fonts里拿取simsun.ttc(宋体)。 2.放到linux原创 2014-05-13 17:29:49 · 1766 阅读 · 0 评论 -
jdbc链接oracle11g
1、首先在oracle的安装根目录下原创 2014-05-29 17:19:35 · 994 阅读 · 0 评论