自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Rainnnbow

快乐的秘密不在于“成就卓越”,而在于“不断成长”。做一个乐于学习的,追求优雅的,与时俱进的理想程序员

  • 博客(121)
  • 资源 (3)

原创 Mac锁屏的几种方式

刚换了工作,公司里给配了MacBook,第一次使用,很多常见操作都不知道快捷键,今天来记录下锁屏的几种方式:电脑为MacBook Pro,OS为MacOS Sierra 10.12.3 1. ctrl + shift + 右上角开关机键 2. option + command + 右上角开关机键 3. 触发角设置 系统偏好设置 → 桌面与屏幕保护程序 → 触发角, 然后设置鼠标移动到屏

2017-05-09 10:05:44 49675

原创 SQL注入浅析

1.什么是SQL注入?“SQL注入”是一种利用未过滤/未审核的用户输入进行SQL攻击的行为,意思就是让应用运行本不应该运行的SQL代码。如果应用毫无防备地创建了SQL字符串并且运行了它们,就会造成一些出人意料的结果。例子:网站登陆时的SQL查询代码为:strSQL = "SELECT * FROM users WHERE (name = '" + username + "') and (pw =

2017-05-09 09:17:50 694

转载 IntelliJ IDEA For Mac 快捷键

Mac键盘符号和修饰键说明⌘ Command⇧ Shift⌥ Option⌃ Control↩︎ Return/Enter⌫ Delete⌦ 向前删除键(Fn+Delete)↑ 上箭头↓ 下箭头← 左箭头→ 右箭头⇞ Page Up(Fn+↑)⇟ Page Down(Fn+↓)Home Fn + ←End Fn + →⇥ 右制表符(Tab键)⇤ 左制表符(Shift+Tab)⎋ Escape (E

2017-05-08 16:32:26 748 1

转载 理解HTTP幂等性

理解HTTP幂等性基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API如此流行呢?我认为很大程度上应归功于简单有效的HTTP协议。HTTP协议是一种分布式的面向资源的网络应用层协议,无论是服务器端提供Web服务,还是客户端消费Web服务都非常简单。再加上浏览

2017-03-23 12:14:31 381

原创 Sybase数据库实现等效的mysql中group_concat功能

在MySQL中,如果想实现将分组之后的多个数据合并到一列,可以使用group_concat函数,如下图所示: 但是,在Sybase中没有这样的函数(别问我为什么使用Sybase,因为公司用的Sybaseo(╯□╰)o)。因为我的Sybase是ASE的,使用变量累计的方法实现了该功能。憋说话,看代码:IF OBJECT_ID('#test') IS NOT NULL drop tab

2016-12-05 18:29:55 1838

转载 在查询语句中使用 NOLOCK 和 READPAST

对于非银行等严格要求事务的行业,搜索记录中出现或者不出现某条记录,都是在可容忍范围内,所以碰到死锁,应该首先考虑,我们业务逻辑是否能容忍出现或者不出现某些记录,而不是寻求对双方都加锁条件下如何解锁的问题。NOLOCK 和 READPAST 都是处理查询、插入、删除等操作时候,如何应对锁住的数据记录。但是这时候一定要注意NOLOCK 和 READPAST的局限性,确认你的业务逻辑可以容忍这些记录的出

2016-11-21 18:00:47 590

转载 Bash shell中的位置参数$#,$*,$@,$0,$1,$2...及特殊参数$?,$-等的含义

http://hi.baidu.com/lolorosa/blog/item/5775a608bd670d33b0351da7.html$# 是传给脚本的参数个数$@ 是传给脚本的所有参数的列表$0 是脚本本身的名字$1是传递给该shell脚本的第一个参数$2是传递给该shell脚本的第二个参数在Bash shell中经常会见到一些比较特殊的符号,本人现收集与此,以供查阅:位置参数:详见ABS(A

2016-11-04 09:55:06 900

转载 Sybase identity 字段

1、identityOracle, DB2, pgSQL中都有sequence的概念,这个概念比Identity先进很多,在Sybase中没有Sequence对象,与之相对应的是Identity2、identity 的创建identity跟sequence对象完成的功能类似,但是有一定的约束,每个table只能有一个identity的列,列的类型必须是numberic(n,0).sql 代码crea

2016-10-24 13:54:25 655

原创 Java中使用long类型实现精确的四则运算

引子Effective Java 2nd Edition 第48条建议:如果需要精确的答案,请避免使用float和doble。float和double类型主要是为了科学计算和工程计算而设计的。他们执行二进制制浮点运算(binary floating-point arithmetic),这是为了在广泛的数值范围上提供较为精确的快速近似计算而精心设计的。然而,他们并没有提供完全精确的结果,所以不应该被用

2016-08-22 16:42:46 13515

原创 JVM的Server与Client运行模式区别与切换

JVM有两种运行模式Server与Client。两种模式的区别在于,Client模式启动速度较快,Server模式启动较慢;但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。这是因为Server模式启动的JVM采用的是重量级的虚拟机,对程序采用了更多的优化;而Client模式启动的JVM采用的是轻量级的虚拟机。所以Server启动慢,但稳定后速度比Client远

2016-08-17 10:45:30 4734

翻译 JUnit单元测试教程(翻译自Java Code Geeks)

本教程翻译自Java Code Geeks,原文网址:https://www.javacodegeeks.com/2014/11/junit-tutorial-unit-testing.html#suite_tests。翻译的过程中,有少部分内容是译者添加的解释说明和对原文章中错误地方的修正。水平有限,如果有错误的地方,希望能在我的博客里告诉我,谢谢。

2016-08-16 09:28:58 4942 2

转载 Minor GC、Major GC和Full GC之间的区别

在 Plumbr 从事 GC 暂停检测相关功能的工作时,我被迫用自己的方式,通过大量文章、书籍和演讲来介绍我所做的工作。在整个过程中,经常对 Minor、Major、和 Full GC 事件的使用感到困惑。这也是我写这篇博客的原因,我希望能清楚地解释这其中的一些疑惑。文章要求读者熟悉 JVM 内置的通用垃圾回收原则。堆内存划分为 Eden、Survivor 和 Tenured/Old 空间

2016-08-11 10:36:23 1043

原创 Java对象的访问定位

java对象在访问的时候,我们需要通过java虚拟机栈的reference类型的数据去操作具体的对象。由于reference类型在java虚拟机规范中只规定了一个对象的引用,并没有定义这个这个引用应该通过那种方式去定位、访问java堆中的具体对象实例,所以一般的访问方式也是取决与java虚拟机的类型。目前主流的访问方式有通过句柄和直接指针两种方式。1.句柄访问 使用句柄访问方式,java堆将会划分

2016-08-08 13:01:16 1034

原创 Java对象的内存布局以及对象所需内存大小计算详解

1. 内存布局在HotSpot虚拟机中,对象的内存布局可以分为三部分:对象头(Header)、 实例数据(Instance Data)和对齐填充(Padding)。1) 对象头(Header):对象头又可以分为两部分: 第一部分用来存储对象自身的运行时基本数据信息。如哈希码、GC分代年龄、锁状态标示、线程持有的锁等。这部分数据的长度在32bit和64bit虚拟机上分别为32bit和64bit。官方

2016-08-08 12:45:06 1269

原创 Java对象的创建 —— new之后JVM都做了什么?

Java对象创建过程1. 类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有则进行相应的类加载过程。(我之后会写一篇关于类加载顺序和过程的博客,并在此补充连接地址)2. 分配内存空间类加载检查通过之后,JVM将为新生对象在堆中分配内存。对象所需内存的大小在类加载完成后已经完全确定

2016-08-08 10:26:52 4484

翻译 我为什么放弃使用MyBatis3的Mapper注解

最近在使用MyBatis3做项目。在使用注解实现Mapper的时候遇到了比较奇葩的问题:在实现数据的batch insert的时候总是报错。好不容易可以正常插入了,但是又不能返回自增的主键id到实体bean中了。而这些问题在XML配置中都不存在。一方面可能是我能力有限,没有找到合适的解决方案;另一方面可能与MyBatis自身对Java中注解的支持不够给力有关系。以下是MyBatis官网对Mapper

2016-08-02 09:55:40 5400 1

原创 Eclipse调试(2)——各种类型断点设置

本文是 Eclipse调试(1)——基础篇 的提高篇。分两个部分: 1) Debug视图下的3个小窗口视图:变量视图、断点视图和表达式视图 2) 设置各种类型的断点变量视图、断点视图和表达式视图1. variable:变量视图显示debug过程中程序中出现的所有的变量以及其值。我们也可以通过该视图手动设置变量的value。手动设置变量值的作用在于,当debug到该变量处时,没有得到我们预期的值,

2016-07-26 13:39:08 2349

原创 Eclipse调试(1)——基础篇

作为使用Eclipse的程序员都会使用它的Debug。但是有不少人只会用F6、F8,其他功能知之甚少。今天我就来总结一下我在使用eclipse的debug时的一些个人经验。水平有限,不足之处还请赐教。测试代码学东西能够学以致用才是关键。所以我使用示例代码的形式讲解每一个点。在下面的代码中,我打了两个断点(代码中注释位置)public class DebugTest { public stati

2016-07-25 16:26:06 771 2

原创 STATE(状态)模式

引子场景在我们软件开发的过程中,有许多对象是有状态的。而对象的行为会随着状态的改变而发生改变。例如开发一个电梯类,电梯有开门、关门、停止、运行等行为,同时电梯也会有开门状态、关门状态、停止状态、运行状态等不同的状态。电梯处于不同的状态时,对不同的行为会做出不同的动作。如当电梯处于开门状态时,电梯可以做关门动作;开门状态时,电梯一定是停止的,所以此时停止动作不会发生任何行为;开门状态时,电梯不能运行,

2016-07-14 22:02:55 2411

翻译 ArrayList中的modCount与ConcurrentModificationException

在看ArrayList源码时,看到了一个字段modCount。在add、remove、clear等方法中都有modCount++的操作。不明白什么意思。点进去看了看该字段的解释,总算明白了。modCount是在AbstractList抽象类中定义的。该字段的解释如下所示。 /** * The number of times this list has been <i>structur

2016-05-13 11:25:43 4111 1

原创 chrome浏览器不兼容jQuery Mobile问题解决

最近在学习jQuery Mobile。第一次运行例子的时候发现chrome总是等待,查看后台报错。错误如下所示: 最后在stackoverflow上找到一个解决方案:将以下代码放在 jquery.mobile-1.4.5.min.js之前,问题得到了解决。 <script> $(document).bind('mobileinit',function(){

2016-04-11 23:34:27 2136

原创 浏览器加载和渲染html的顺序(html/css/js)

最近在学习前端的技术,把html、js、css的基础知识看了看。感觉越看越觉得前端并不比后端容易,技术含量还是相当大的。今天突然想弄明白浏览器到底是怎么加载和渲染html的?html中的DOM、js文件、css文件又是怎么下载和运行的?因为感觉自己现在前端的水平有限,找了一些资料。自己以后也方便查找和翻看。浅显易懂的介绍: 浏览器加载和渲染html的顺序陈皓大牛的讲解总是那么深入: 浏览器的渲染

2016-04-11 21:00:01 4190

原创 Linux下文件的mtime/atime/ctime研究

概述在Linux下,对于某一个文件或文件夹时间的描述有三种:文件修改时间mtime,文件访问时间atime,文件状态改变时间ctime。在Linux下无法获取到文件的创建时间,因为根本就没有保存这个时间。 如果文件创建之后没有被修改过内容,那么mtime就是创建时间;如果文件创建之后没有被获取过内容,那么atime就是创建时间;如果文件创建之后没有改变过状态,那么ctime就是创建时间。但是,但

2016-03-28 15:54:18 1673

原创 永远不要在循环之外调用wait方法

1. 前言随着摩尔定律的失效,Amdahl定律成为了多核计算机性能发展的指导。对于现在的java程序员们来说,并发编程越来越重要和习以为常。很惭愧和恐慌的是我对java的并发编程一直是只知道概念,入门都不算。最近工作需要,开始认真学习java并发编程。先找了一本简单的电子书《Java7并发编程实战手册》开始看。刚刚看到简单的生产者消费者问题,在书中给出的代码中,有一点不理解:为什么wait()语句要

2016-03-03 12:53:51 3474 3

转载 优先使用TimeUnit类中的sleep()

TimeUnit是什么?TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段时间里Thread的sleep()方法作为暂停线程的标准方式,几乎所有Java程序员都熟悉它,事实上sleep方法本身也很常用而且出现在很多面试中。如果你已经使用过Thread.sleep(),

2016-03-01 17:48:17 911

原创 move_uploaded_file的failed to open stream错误处理

PHP的基本语法学习的差不多了,现在开始学习PHP的文件上传功能实现了。功能中使用到了move_uploaded_file方法,运行时报错: failed to open stream。 经过查资料,总结了出现该错误的几个可能的原因及解决方法。原因一:移动到的目录的写法不正确我的目录如下所示: 这是《PHP和MySQL Web开发》第四版中的例子,我的PHP版本是7.0.2,执行时报了fai

2016-02-25 11:14:33 3222 1

原创 MySQL注释中的sql也可能执行

MySql支持三种注释形式:# 和–属于单行注释,注释范围为该行的结尾;/* */注释属于多行注释,此外该种注释还可以实现行内注释。具体的使用情况如下图中所示(四种使用情形): 除此之外,/* */这种注释方式还有一种扩展,即当在注释中使用!加上版本号时,只要mysql的当前版本等于或大于该版本号,则该注释中的sql语句将被mysql执行。这种方式只适用于mysql数据库。不具有其他数据库的可移植

2016-02-23 12:34:44 3746

原创 MySQL命令行SQL脚本的导入导出小结(数据库的备份与还原)

1.设置环境变量要想在命令行下各处都能执行mysql命令,必须在系统变量Path中添加mysql的命令所在的目录。例如我安装的是集成PHP环境的mysql,在D盘xampps下,则我需要将“;D:\xampps\mysql\bin”添加到Path的最后面。如下图所示: 如果不设置环境变量,只能进入到“D:\xampps\mysql\bin”目录下执行mysql命令。2.命令行导入方法一:未连接

2016-02-23 11:13:58 1867

原创 JVM三种垃圾收集算法思想及发展过程

JVM垃圾收集算法的具体实现有很多种,本文只是介绍实现这些垃圾收集算法的三种思想和发展过程。所有的垃圾收集算法的具体实现都是遵循着三种算法思想而实现的。1.标记-清除算法 标记-清除(Mark-Sweep)算法是最基础的垃圾收集算法。正如其名字描述的那样,该算法分为两个阶段:“标记”和“清除”。首先标记出所有可以被回收的对象,然后经过一轮垃圾回收将所有被标记的对象的内存空间释放,即清除可被回收的对

2016-02-18 11:18:06 1394 3

原创 MySQL连接及基本信息查看命令小结

前言学习PHP就不得不提MySQL,虽然有phpMyadmin这样的工具可以图形化操作数据库,但我还是想借学习PHP的机会使用下命令行方式操作数据库。以下就是我的学习小结,包括命令行连接数据库,查看当前用户,查看当前使用的存储引擎,查看MySQL版本等基本命令。连接数据库命令格式:mysql -h hostname -u username -p -h指定要连接的MySQL数据库所在的主机,如果是本

2016-02-03 10:18:27 9810 5

原创 PHP学习(4)——数据类型

PHP 支持 8 种原始数据类型。四种标量类型:(标量类型即为基本类型)boolean(布尔型) integer(整型) float(浮点型,也称作 double) (由于历史原因,float也叫作double,php中没有单精度和双精度之分)string(字符串) (字符串类型在PHP中属于标量类型,在Java中属于类类型)两种复合类型:array(数组)object(对象)

2016-02-02 10:20:47 831

原创 PHP学习(3)—在HTML中嵌入PHP

我们以一个提交订单和显示订单信息的例子为学习PHP的开始。这个例子包含两个文件。一个提交订单的html文件:orderform.html,一个显示订单信息的php文件:processorder.php。我将这两个文件放在test_1文件夹下,将test_1文件夹放在htdocs目录下。 文件的组织形式如下图所示(使用xampps安装的集成环境,具体请参考 PHP学习(2)——运行环境搭建): 提

2016-02-01 11:25:26 3007

原创 PHP和MySQL Web开发学习笔记介绍

前言从2016年2月1日开始,之后的几个月左右的时间里,我会写一个系列的PHP和MySQL Web开发的学习笔记。我之前一直从事Java语言的开发工作,最近这段时间非常想学习一门语言,就选择了PHP。在网上找了一些资料,最后决定使用《PHP和MySQL Web开发》第四版中文版作为入门教材开始学习。之所以选用看书学习这种方式,与我自身有关:网上的学习资料很多,如果为了快速写出PHP完成工作,完全可以

2016-02-01 11:17:09 1002

原创 PHP学习(2)——运行环境搭建

学习PHP首先要搞定PHP的运行环境。PHP的运行环境包括:PHP语言解析器本身以及Apache服务器、MySQL数据库等。因为只是学习嘛,尽快的搭建起来运行环境就好,到后期慢慢懂得多了再去想规范化搭建商业运行环境的问题。选择集成安装工具目前有非常多的集成化PHP运行环境安装工具:LAMP、WampServer、Xampp、Xampps等。我选择使用了Xampps。主要原因是我在分享网上很容易就下载

2016-01-29 14:37:56 979

原创 PHP学习(1)——我为什么要学PHP

PHP简介PHP是一种服务器端的脚本语言,特别适合做web开发。高效、灵活、实用是PHP的特点。PHP最开始是Personal Home Page的缩写,后来正式更名为了“Hypertext Preprocessor”(超文本预处理器)。 PHP代码直接嵌入HTML中,PHP代码经过PHP解析器解析之后生成HTML返回给浏览器,浏览器不会看到PHP代码,看到的只是解析之后生成的HTML,所以说PH

2016-01-26 17:52:21 1647

原创 JVM内存区域划分(JDK6/7/8中的变化)

前言Java程序的运行是通过Java虚拟机来实现的。通过类加载器将class字节码文件加载进JVM,然后根据预定的规则执行。Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些内存区域被统一叫做运行时数据区。Java运行时数据区大致可以划分为5个部分。如下图所示。在这里要特别指出,我们现在说的JVM内存划分是概念模型。具体到每个JVM的具体实现可能会有所不同。具

2016-01-19 10:57:44 6112 5

原创 Java编程思想阅读收获

15年8月份买了一本Java编程思想第四版中文版。之所以买中文版是因为我试读了同事的英文版发现自己英语水平还是有限,单词虽然认识,但对很多句子把握不准,这样看书太慢了,要理解英文还要理解技术有些hold不住。买了之后断断续续的看到现在,看了400多页了,看到了泛型一章。从15年8月份到元旦,中间还看了本周志明著的《深入理解java虚拟机-JVM高级特性与最佳实践》对JVM有了初步的了解。对于内存布

2016-01-14 10:11:40 2914

原创 Java异常处理机制难点解惑-用代码说话

是否需要看这篇文章?下面的例子中,如果正常执行返回值多少? 如果出现了ArithmeticException返回值多少? 如果出现非ArithmeticException(如NullPointerException)返回值多少? 如果你了解这个例子说明的问题,并了解例子中三种情况下的执行细节,这篇文章你就不用浪费时间看了。 例子: public int testException_fina

2016-01-08 09:20:01 2196

原创 java自动装箱拆箱总结

对于java1.5引入的自动装箱拆箱,之前只是知道一点点,最近在看一篇博客时发现自己对自动装箱拆箱这个特性了解的太少了,所以今天研究了下这个特性。以下是结合测试代码进行的总结。测试代码: int a = 1; Integer b = 1; Integer c = 1; Integer d = 2; Integer e =

2016-01-06 09:45:41 2286

原创 String放入运行时常量池的时机与String.intern()方法解惑

运行时常量池概述Java运行时常量池中主要存放两大类常量:字面量和符号引用。字面量比较接近于Java语言层面的常量概念,如文本字符串、声明为final的常量值等。 而符号引用则属于编译原理方面的概念,包括了下面三类常量: - 类和接口的全限定名(包名+类名) - 字段的名称和描述符 - 方法的名称和描述符运行时常量池位置运行时常量池在JDK1.6及之前版本的JVM中是方法区的一部分

2016-01-05 11:28:40 3907 9

jar文件中文件的移动

使用JarEntry实现移动和更改jar文件中的内容

2013-10-31

struts2.1.2_ALLlib

struts2.1.2版本的所有的jar包

2013-10-31

JUnitGuide

JUnit单元测试教程配套例子。教程网址:http://blog.csdn.net/Rainnnbow/article/details/52212957

2016-08-15

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除