![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
Vasari
这个作者很懒,什么都没留下…
展开
-
StringBuilder在高性能场景下的正确用法
关于StringBuilder,一般同学只简单记住了,字符串拼接要用StringBuilder,不要用+,也不要用StringBuffer,然后性能就是最好的了,真的吗吗吗吗?还有些同学,还听过三句似是而非的经验:1. Java编译优化后+和StringBuilder的效果一样;2. StringBuilder不是线程安全的,为了“安全”起见最好还是用StringBuffe转载 2015-12-09 13:02:59 · 381 阅读 · 0 评论 -
一些java代码编程规范
1. 命名驼峰命名class命名尽量表达含义,尽量使用常用单词非static的方法和变量,使用驼峰命名static的方法,使用驼峰命名static的变量,尽量使用大写,以下划线区分单词 2. 代码格式化统一代码格式化,导入格式文件每次写一部分代码后按ctrl+shift+f格式化代码,ctrl+shift+o重新组织impor转载 2016-03-02 13:44:33 · 510 阅读 · 0 评论 -
深入理解 Session 与 Cookie
Session 与 Cookie 的作用都是为了保持访问用户与后端服务器的交互状态。它们有各自的优点,也有各自的缺陷,然而具有讽刺意味的是它们的优点和它们的使用场景又是矛盾的。例如,使用 Cookie 来传递信息时,随着 Cookie 个数的增多和访问量的增加,它占用的网络带宽也很大,试想假如 Cookie 占用 200 个字节,如果一天的 PV 有几亿,它要占用多少带宽?所以有大访问量的时候希望转载 2016-02-04 11:16:22 · 801 阅读 · 0 评论 -
Session机制详解
虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答。 一、术语session 在我的经验里,session这个词被滥用的程度大概仅次于transacti转载 2016-02-04 11:22:14 · 431 阅读 · 0 评论 -
Tomcat的Session管理(一) - Session的生成
Session对象的创建一般是源于这样的一条语句:Session session = request.getSession(false);或者Session session = request.getSession();如果不在乎服务器压力可能多那么一点点的话。在Tomcat的实现中,这个request是org.apache.catalina.connector.Request类的包装转载 2016-02-04 11:24:20 · 470 阅读 · 0 评论 -
Tomcat的Session管理(二) - Session后台处理
Tomcat会开启一个后台线程每隔一段时间检查Session的有效性,这个线程是在Tomcat启动的时候当StardardEngine启动时随之启动的。可以参看StardardEngine的基类ContainerBase的#threadStart()方法:Java代码 protected void threadStart() { if (thread !=转载 2016-02-04 11:26:17 · 534 阅读 · 0 评论 -
volatile变量特性
1,可见性。对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。 2,原子性。对任意单个volatile变量的读/写具有原子性,但类似于volatile++这种复合操作不具有原子性。原创 2016-03-21 13:50:09 · 772 阅读 · 0 评论 -
锁释放和锁获取的内存语义
锁释放与volatile写有相同的语义 锁获得与volatile读有相同的语义 1,线程A释放一个锁,实质上是线程A向接下来要获取这个锁的某个线程发出了(线程A对共享变量所做修改的)消息。 2,线程B获取一个锁,实质上是线程B接收了之前某个线程发出的(在释放这个锁之前对共享变量所做修改的)消息。 3,线程A释放锁,随后线程B获取这个锁,这个过程实质上是线程A通过主内存想线程B发送消息。原创 2016-03-21 17:34:45 · 457 阅读 · 0 评论 -
final域的内存语义
对于final域,编译器和处理器要遵守两个重排序规则。 1,在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。 2,初次读入一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。原创 2016-03-22 14:11:59 · 1057 阅读 · 0 评论 -
happens-before规则
jmm把happens-before要求禁止的重排序分为下面两类: 1,会改变程序执行结果的重排序。 2,不会改变程序执行结果的重排序。 jmm对这两种不同性质的重排序,采取了两种不同的策略,如下: 1,对于改变程序执行结果的重排序,jmm要求编译器和处理器必须禁止这种重排序。 2,对于不会改变程序执行结果的重排序,jmm对编译器和处理器不做要求(jmm允许这种重排序)。jmm知识遵循一个原创 2016-03-23 11:09:37 · 638 阅读 · 1 评论 -
Apache DbUtils 教程
前段时间使用了Apache Common DbUtils这个工具,在此留个印,以备不时查看。大家都知道现在市面上的数据库访问层的框架很多,当然很多都是包含了OR-Mapping工作步骤的 例如大家常用的Hibernate与Mybatis。当然如果人们要一个纯粹的封装了JDBC的工具类,使用Apache Common DbUtils(下面简称ACD)是个不错的选择,这个工具在JDBC的基础上稍加封装转载 2016-01-30 18:28:38 · 977 阅读 · 0 评论 -
tomcat数据库连接池配置
1. 在tomcat服务器目录下面的conf中找到一个叫Context.xml的配置文件,在其中加入以下代码[html] view plainResource name="jdbc/books" auth="Container"type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="转载 2016-01-30 18:18:31 · 1846 阅读 · 0 评论 -
java.lang.OutOfMemoryError: Java heap space 解决方法
这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.设置的方法主要是几个.1.可以在windows 更改系统环境变量加上JAVA_OPTS=-Xms64m -Xmx512m2,如果用的tomcat,在windows下,可以在C:\tomcat5.5.9\bin\catalina.bat 中加上:set JAVA_OPTS=-Xms64m -Xmx256m位置在转载 2016-01-30 18:19:26 · 578 阅读 · 0 评论 -
java 反射api的功能详解
前言 本文是我整理的Java反射的一些知识,其中大部分内容是翻译http://tutorials.jenkov.com/java-reflection/index.html的。1. Java反射简介JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法转载 2015-11-25 13:18:27 · 600 阅读 · 0 评论 -
Java注解
简介在Java中,Annotation(注解)是JDK5.0及以后版本引入的,它是一种可以添加到Java源代码中的元数据(用来描述数据的数据)语法形式。类,方法,变量,参数和包都可以用于注解。元数据的作用,大致可分为三类:编写文档:通过代码里标识的元数据生成文档。代码分析:通过代码里标识的元数据对代码进行分析。编译检查:通过代码里标识的元数据让编译器转载 2015-11-25 14:34:02 · 382 阅读 · 0 评论 -
为什么存储密码字符数组比字符串更合适? 有点意思
“为什么存储密码用字符数组比字符串更合适”这个问题是我的一个朋友在最近一次面试中提到的。那哥们是应聘的是一个技术lead的职位,有超过六年的工作经验。字符数组和字符串都可以用于存储文本数据,但是在选择具体哪一种时,如果你没有针对具体的情况是很难回答这个问题的。但是正如这哥们说的任何与字符串相关的问题一定有线索可以在字符串的属性里面找到,比如不可变性。他就用这种方式去说服面试官。这里我们就来探讨一些转载 2015-12-10 14:22:29 · 905 阅读 · 0 评论 -
java的(PO,VO,TO,BO,DAO,POJO)解释
转载自:http://www.cnblogs.com/yxnchinahlj/archive/2012/02/24/2366110.htmljava的(PO,VO,TO,BO,DAO,POJO)解释 O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在O/R Mapping的世转载 2015-12-02 15:50:25 · 472 阅读 · 0 评论 -
JUnit 写 TestCase
junit是java中书写unit test的framework,目前一些流行的unit test工具大都都是在junit上扩展而来的。目前它的版本是junit3.8.1,可以从www.junit.org上下载。Eclipse中配置junit在要使用JUNIT的project名上,点击properties--java build path-libraries, 点击Add External转载 2016-01-26 18:13:42 · 1719 阅读 · 0 评论 -
TestCase学习
TestCase学习您定义自己的TestCase,并使用TestRunner来运行测试,事实上TestRunner并不直接运行 TestCase上的单元方法,而是透过TestSuite,TestSuite可以将数个TestCase在一起,而让每个TestCase保持简单。来看看一个例子:MathToolTest.java package onlyfun.caterpillar.test;impor转载 2016-01-26 18:15:33 · 501 阅读 · 0 评论 -
JAVA使用JDBC连接MySQL数据库
首先要下载Connector/J地址:http://www.mysql.com/downloads/connector/j/这是MySQL官方提供的连接方式:解压后得到jar库文件,需要在工程中导入该库文件我是用的是Eclipse: JAVA连接MySQL稍微繁琐,所以先写一个类用来打开或关闭数据库:DBHelper.javaJava代码转载 2016-01-27 22:25:21 · 750 阅读 · 0 评论 -
Java BigDecimal详解
1.引言 借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦。2.BigDecimal简介转载 2016-01-28 21:43:23 · 784 阅读 · 0 评论 -
the java syncrhonisers
原文:https://www.javacodegeeks.com/2016/08/the-java-syncrhonisers.html 线程通信主要发生在共享字段河对象的时候。尽管这样做非常的有效,但这种通信方式,容易发生线程阻塞河内存一致性问题。Synchronization是一个防止这些问题的工具。 然而synchronization并不是完美的,它会带来隐患档当试图获得一个正在被其他线程翻译 2016-09-13 18:00:08 · 502 阅读 · 0 评论