![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础知识
文章平均质量分 69
MrOneside
这个作者很懒,什么都没留下…
展开
-
数据库事务的四大特性ACID
数据库事务是指作为单个逻辑工作单元执行的一系列操作,这些操作要么全做要么全不做,是一个不可分割的工作单位。数据库事务的四大特性(简称ACID)是: (1) 原子性(Atomicity)事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。例如银行取款事务分为2个步骤(1)存折减款(2)提转载 2017-02-07 15:10:34 · 549 阅读 · 0 评论 -
Java多线程之内存可见性和原子性:Synchronized和Volatile的比较
在刷题时,碰到一题:关于volatile关键字的说法错误的是:A. 能保证线程安全 B volatile关键字用在多线程同步中,可保证读取的可见性 C JVM保证从主内存加载到线程工做内存的值是最新的D volatile能禁止指令进行指令重排序答案:A 处于运行效率的考虑,Java编译器会把经常访问的变量放到缓存(严格讲是工做内存)中,读取变量则从工作内存中取,但是在多线程编程中,内转载 2017-02-24 11:14:29 · 803 阅读 · 0 评论 -
关于Java变量名前缀m、s等的解释
为什么很多人写代码会在变量名前面加一个小写的m?上大学那会儿就对这个问题感到很好奇。于是网上到处搜,有人说是member的意思。于是后来一直就这么认为。最近在读Android源码,发现很多系统变量命名时都加了m,而有的变量又没有加m,这是什么情况?于是Google了一把,“letter m before variable ”,第一条结果是来自stackoverflow的答案转载 2017-03-03 16:16:18 · 7504 阅读 · 0 评论 -
Http和Https的区别与分析
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据转载 2017-03-05 09:55:45 · 394 阅读 · 0 评论 -
Servlet工作原理解析
Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础。因而掌握 Servlet 的工作原理是成为一名合格的 Java Web 技术开发人员的基本要求。本文将带你认识 Java Web 技术是如何基于 Servlet 工作,你将知道:以 Tomcat 为例了解 Servlet 容器是如何工作的?一个 Web 工程在 Servlet 容器中是转载 2017-03-05 20:36:12 · 465 阅读 · 0 评论 -
Spring 框架的设计理念与设计模式分析
Spring 作为现在最优秀的框架之一,已被广泛的使用,并且有很多对其分析的文章。本文将从另外一个视角试图剖析出 Spring 框架的作者设计 Spring 框架的骨骼架构的设计理念,有那几个核心组件?为什么需要这些组件?它们又是如何结合在一起构成 Spring 的骨骼架构? Spring 的 AOP 特性又是如何利用这些基础的骨骼架构来工作的? Spring 中又使用了那些设计模式来完成它的转载 2017-03-05 20:51:12 · 303 阅读 · 0 评论 -
java泛型(一)、泛型的基本介绍和使用
现在开始深入学习Java的泛型了,以前一直只是在集合中简单的使用泛型,根本就不明白泛型的原理和作用。泛型在java中,是一个十分重要的特性,所以要好好的研究下。一、泛型的基本概念 泛型的定义:泛型是JDK 1.5的一项新特性,它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型。这种参数类转载 2017-03-30 14:15:58 · 319 阅读 · 0 评论 -
java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题
参考:java核心技术一、Java泛型的实现方法:类型擦除前面已经说了,Java的泛型是伪泛型。为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理解类型擦出(type erasure)。Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中是不包含泛型中的类型信息的。使用泛型的时候加上的类转载 2017-03-30 14:17:53 · 346 阅读 · 0 评论 -
Java:关于Integer整数与byte、byte数组之间的转换
在本地找到一个很好的文件,里面包含工程应用中常用的整数与字节、字节数组之间的转换,保存下来,方便使用。ps:今天在应用Modbus RTU协议时,在接收到的数据帧校验时就用到了CRC计算与接收的CRC的校验,其中用到了整数和字节数组之间的转换,尽管很简单,但是小工具很方便。public class NumberUtil { /** * int整数转换为4字节的byt原创 2017-03-23 19:59:39 · 27059 阅读 · 2 评论 -
CountDownLatch的使用方法和应用场景分析
正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到在Java并发编 程中跟CountDownLatch相关的以下几点:目录CountDownLatch是什么转载 2017-05-30 09:12:32 · 839 阅读 · 0 评论 -
数据结构与算法:红黑树的原理分析
原文链接:http://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据转载 2017-05-20 21:21:54 · 1194 阅读 · 0 评论 -
常用的版本控制工具对比
Git 、CVS、SVN比较 项目源代码的版本管理工具中,比较常用的主要有:CVS、SVN、Git 和 Mercurial (其中,关于SVN,请参见我先前的博客:SVN常用命令 和 SVN服务器配置)目前Google Code支持SVN、Git、Mercurial三种方式,例如:我上传的linux-kernel-source(Git 方式)、sdk-java(SVN方式转载 2017-06-07 19:15:12 · 22214 阅读 · 0 评论 -
Java动态代理的两种实现方法
最近在学习Spring框架的使用,其中AOP的概念理解里面是借助于动态代理的拦截器的概念,所以找了点文章,把相关内容再温故一遍。AOP的拦截功能是由java中的动态代理来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标类函数抛出异常时候执行。不同的切入时机对应不同的Interceptor的种类,如Befo转载 2017-06-21 10:02:24 · 488 阅读 · 0 评论 -
HashMap存入相同key的两种不同的存储方式
今天在看《编程思想》关于HashMap章节的keySet()方法的时候,突然想到一个问题,既然key的存储方式是Set不可重复的,那么如果相同的Key下存储了多个值,源码中对于这样的逻辑是怎样考虑的呢?import java.util.HashMap;import java.util.Map;/*** @author Bingo * E-mail:riskys@163.com* @原创 2017-07-03 11:35:34 · 36957 阅读 · 4 评论 -
正则表达式、线程
原文链接:http://blog.csdn.net/aiynmimi/article/details/47102095正则表达式定义指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。 因此,转载 2017-02-23 10:16:12 · 537 阅读 · 0 评论 -
Java真数组与伪数组
在看书时,看到一句话:Java实现了真数组,避免了覆盖数据的可能。竟然数组都有假的,遂找点资料学习一下。提供一篇博客解释js中的伪数组js的伪数组我的理解:ADT(abstract data type)数据抽象类型:一个数据模型及定义在该模型上的一组运算。数组是一种抽象的数据类型,Java中数组是对象,它所包含的数据在内存中是连续排列的,并且你可以对数组进行一系列的操作转载 2017-02-22 18:56:27 · 4960 阅读 · 0 评论 -
JVM内存管理及垃圾回收
原文链接:http://blog.csdn.net/zhangerqing/article/details/8214365很多Java面试的时候,都会问到有关Java垃圾回收的问题,提到垃圾回收肯定要涉及到JVM内存管理机制,Java语言的执行效率一直被C、C++程序员所嘲笑,其实,事实就是这样,Java在执行效率方面确实很低,一方面,Java语言采用面向对象思想,这也决定了其必然是开转载 2017-02-22 11:15:27 · 232 阅读 · 0 评论 -
JAVA实现不同的时间样式输出
时间日期标识符: yyyy:年 MM:月 dd:日 hh:1~12小时制(1-12) HH:24小时制(0-23) mm:分 ss:秒 S:毫秒 E:星期几 D:一年中的第几天 F:一月中的第几个星期(会把这个月总共过的天数除以7) w:一年中的第几个星期 W:一月中的第几星期(会根据实际情况来算)原创 2016-08-31 16:38:14 · 619 阅读 · 0 评论 -
Java配置文件Properties的读取、写入与更新操作
/** * 实现对Java配置文件Properties的读取、写入与更新操作 */ package test; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import j转载 2016-09-15 10:03:34 · 4766 阅读 · 0 评论 -
modCount到底是干什么的呢
原文链接:点击打开链接modCount到底是干什么的呢在ArrayList,LinkedList,HashMap等等的内部实现增,删,改中我们总能看到modCount的身影,modCount字面意思就是修改次数,但为什么要记录modCount的修改次数呢? 大家发现一个公共特点没有,所有使用modCount属性的全是线程不安全的,这是为什么呢?说明这个玩意肯定和线程安全转载 2017-02-17 16:31:47 · 850 阅读 · 0 评论 -
Java对象的序列化和反序列化及其实现和使用
原文链接:http://blog.csdn.net/wangloveall/article/details/7992448/Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨。 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Jav转载 2017-02-27 20:20:59 · 536 阅读 · 0 评论 -
根据StringBuffer、StringBuilder想起的的线程安全与线程不安全
StringBuilder是Java SE5引入的,在这之前用的是StringBuffer,StringBuffer是一个线程安全的类,其方法是Syschronized的,因此开销也会大些。因此,StringBuilder是单机单线程的情况下使用的,多线程的话得用StringBuffer。可以根据javap -c ClassName反编译来看看JVM是如何工作的,详见《编程思想》284页,-c原创 2017-02-17 21:53:38 · 729 阅读 · 0 评论 -
static class 静态类
一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。在开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况转载 2017-02-19 20:16:02 · 208 阅读 · 0 评论 -
用Format给数字左边补0输出
实际应用中常常需要给数字的左边补0实现固定长度的输出,JDK中有两种方法可用,欢迎补充。方法一:用String.format()做格式转换public class TestStringFormat { public static void main(String[] args) { int youNumber = 1; //int num原创 2017-02-20 09:56:07 · 11097 阅读 · 0 评论 -
归并算法的Java实现
归并算法是分治思想的经典应用,其基本思想就是将两个有序的表合并成为一个有序表。//实现将a、b两个数组合并到c数组 public void merge(int a[], int b[], int[] c) { int aIndex=0, bIndex=0, cIndex=0; int aEnd=a.length, bEnd=b.length; c=new int[aEnd+bEn原创 2017-03-01 12:24:27 · 334 阅读 · 0 评论 -
重写、覆盖、重载、多态几个概念的区别分析
原文链接:http://blog.csdn.net/ericbaner/article/details/3857268override->重写(=覆盖)、overload->重载、polymorphism -> 多态 override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。重写(覆盖)的规则: 1转载 2017-02-11 14:54:29 · 225 阅读 · 0 评论 -
Java编程:组合、继承和代理的区别
组合、继承和代理三者的定义:组合:在新类中new 另外一个类的对象,以添加该对象的特性。继承:从基类继承得到子类,获得基类的特性。代理:在代理类中创建某功能的类,调用类的一些方法以获得该类的部分特性。使用场合:组合:各部件之间没什么关系,只需要组合即可。like组装电脑,需要new CPU(),new RAM(),new Disk()……继承:子类需要具有父类的功能转载 2017-02-11 22:24:32 · 4233 阅读 · 4 评论 -
import static和import的区别及其使用规范
import static静态导入是JDK1.5中的新特性。一般我们导入一个类都用 import com.....ClassName;而静态导入是这样:importstatic com.....ClassName.*;这里的多了个static,还有就是类名ClassName后面多了个 .* ,意思是导入这个类里的静态方法。当然,也可以只导入某个静态方法,只要把 .* 换成静态方法名就行了。然后在这转载 2017-02-12 10:01:21 · 6565 阅读 · 1 评论 -
JVM 堆内存设置原理
堆内存设置原理JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation转载 2017-02-21 10:47:48 · 168 阅读 · 0 评论 -
关于 Java 中 finally 语句块的深度辨析
原文链接:点击打开链接https://www.ibm.com/developerworks/cn/java/j-lo-finally/乍看这个题目,是不是有人会问,这个谁不知道啊,大凡熟悉 Java 编程的人都知道 finally 语句块的作用和用法。有什么可深度辨析的呢?事实并非如此,我发现即使写了很多年 Java 程序的人,也不一定能够透彻的理解 finally 语句块。本篇将转载 2017-02-21 12:59:23 · 256 阅读 · 0 评论 -
浅谈算法和数据结构: 平衡查找树之红黑树
原文链接:http://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据转载 2017-06-15 15:17:29 · 437 阅读 · 0 评论