自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 jar包冲突的解决,依赖树的打印与分析

在我们引入新的jar包时候可能会因为传递依赖,引入现有项目中存在,但是版本不同的jar,从而引起jar包冲突,在有些情况下,运行并不会出现问题,其中的原因是:gradle有一套策略,在构建时候为我们进行了选择,实际线上部署的项目中只有一个版本的jar。 有时候,会导致单元测试不能运行,因此,我们需要找到冲突的jar,并对陈旧的版本进行升级,或者对传递依赖进行排除;其中排除依赖的方式maven和gr...

2018-04-25 15:01:25 1351

原创 强制sql使用一个索引

sqlt提示(SQL HINT)是优化数据库的重要手段,就是在sql中增加一些提示起到优化的效果。这里我们学习一下use index、ignore index、和force index;1 在查询语句之后加入use index,可以向Mysql建议可以参考的索引,就可以让mysql不在考虑其他索引。explain select count(*) from vipshop_finance_accoun

2018-01-13 18:14:47 10231

原创 MySQL 索引失效几种情况实战

1 条件中使用or| idnameageindex | CREATE TABLE `idnameageindex` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_name` (`name`)

2018-01-13 18:10:21 457

原创 关于MySQL数据类型定义的几个细节-INT(N)/VARCHAR(N)/DECIMAL(M,N)

关于MySQL数据类型定义的几个细节: (1)INT(N)中,这个N表示啥?如:INT(2)和INT(11)有什么区别? (2)VARCHAR(N)这个N表示啥?既然VARCHAR是可变长度的,VARCHAR(2)和VARCHAR(200)是不是一样?如果不一样区别在哪儿? (3)DECIMAL(M,N)中的M和N又表示啥?如果定义字段类型为DECIMAL(10,2),那么当插入数据3.245

2017-09-18 17:10:14 1219

原创 MySql表中字段为Null 和 空('') 有什么区别, 分别有什么影响?

数据准备insert into user VALUES (6,NULL,1,0,1,NULL);insert into user VALUES (7,'',10,0,0,'');然后我们编写了一个简单的小程序查询这两条记录public User queryAnUserById(int id) { User user = userMapper.selectById(id);//orm

2017-09-13 14:37:07 2317

原创 mysql 使用InnoDB 引擎时候的存储文件系统初探

建立一个数据库时候 ibdata1在mysql Server所在地址下的data目录下,记录InnoDb系统信息和数据库表数据和索引,为所有的表锁公用。日志文件: ib_logfile1、ib_logfile2mySql在其工作目录的data文件夹下建立一个新的名字为dbName的文件夹,并在里面创建了一个文件,db.opt, 文件的内容是数据库的定义信息default-character-se

2017-09-13 14:29:54 371

原创 并发的更新同一个表,使用事务预防并发问题的三个实现

答案是,看你怎么实现了。1. 比较蠢的实现。A事务:select将要变更的数据,在内存中对将要更新的字段进行运算,最后使用update Table set value=calculateResult where id='';的方式更新这条记录。B事务,也用同样的方式实现更新。并发的时候,AB事务并发会产生问题,比如原始value=400,A、B两个事务都要增

2017-09-13 14:27:29 4933

原创 Java-内部类(二)为什么匿名内部类和局部内部类只能访问final变量

问题描述:为什么匿名内部类和局部内部类只能访问final变量?代码重现:public class InnerClassFinalVar { String ss ="g g s"; public static void main(String[] args) { int a = 0; final int f = 1; St

2017-08-04 17:58:52 478

原创 Java-内部类(三)成员内部类就应该访问外部类的成员!!

1. 成员内部类就应该访问外部类的成员!    同样的,我们以LinkdeHashMap为例,解释内部类的定位和为什么成员内部类可以访问外部类的成员变量。    上JDK源码(部分细节删除)public class LinkedHashMapK,V> extends HashMapK,V> implements MapK,V>{ private abs

2017-08-04 17:46:47 551

原创 for循环中移除元素的空指针坑

//剔除有冲正交易的记录 IteratorTradeOrderLogEntity> tradeOrderLogEntityIterator = tradeOrderLogEntityList.iterator(); for (;tradeOrderLogEntityIterator.hasNext();){ TradeOrderLogEntity

2017-08-03 19:51:16 3907

原创 hascode和equals为什么要同时复写—Java源码中的奥秘

在很多编程手册和技术推送文章中,都要求我们在创建一个类型的对象时候,强烈建议实现的其中的几个方法,一般包括:1.  toString()2. equals()3. hashcode() 此外,在复写equals方法的时候要同时复写hashCode()方法是为什么呢?首先我们来看一下两个方法在万物之王Object中的定位,与默认实现;/** * Retur

2017-07-28 10:03:27 1025

原创 三目运算符的一个坑-自动拆箱

问题描述:             Integer a = null;             Integer b = true ? a : 0; 执行这个三目表达式后, b等于多少, 理解原因;执行以上两行代码/** * Created by ryan01.peng on 2017/7/25. */public class TestTern

2017-07-25 19:58:06 2237

原创 Java中sleep()方法和wait()方法用法和区别

一、概述    一个线程修改了一个对象的值,而另一个线程感知到了变化,然后进行相应的操作,整个过程开始于一个线程,而最终执行又是另一个线程。前者是生产者,后者就是消费者,这种模式隔离了“做什么”(what)和“怎么做”(How),在功能层面上实现了解耦,体系结构上具备了良好的伸缩性 ,Java就是通过等待和通知机制来实现这种功能的。当一个线程完成了特定的环节时候,就去等待另外的线程执行,第二个线程...

2017-07-25 11:49:40 2201 1

原创 Java-内部类(一)

一、什么是内部类Java中可以把一个类的定义放在另一个类的定义的内部,这就是内部类。他和类的成员方法,成员变量对象的方法一样,可以为外围类的功能实现提供支持,允许编程人员把分散的逻辑组合在一起。内部类与组合以及方法的调用不同:内部类提供了代码的隐藏机制:内部类的可见性可以得到控制;此外内部类可以直接访问外围类的属性和方法,提供了低成本的交流机制,可以简化功能的实现(减少很多代码)。相对于内

2017-06-29 09:45:09 328

原创 Java传值还是传引用

一、 概述    在编写Java代码时候,对于一个内部或者外部函数的调用,我们总是通过入参和返回值的方式进行数据交换和流转。有时候,我们传递的入参会本身被其他方法修改,有时候我们不得不通过返回值得方式传递处理的结果。那么这里我们就学习一下,具体何时入参会被调用方法修改,何时入参不会被调用的方法所修改。二、 结论写在前面    为了便于阅读,把经过测试推演得到的结论写在前面,

2017-06-22 11:44:09 545

原创 Executor框架

一、概述    Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源。同时,为每一个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用最终崩溃。Java的线程既是工作单元,也是执行机制。从JDK 5开始,把工作单元与执行机制分离开来。工作单元包括Runnable和Callable,而执行机制由Exec

2017-06-20 22:33:00 288

原创 ThreadLocal源码分析与使用场景

一、概述ThreadLocal,即线程变量,是一个以ThreadLocal对象为键、任意对象为值的存储结构。这个结构被附带在线程上,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。可以通

2017-05-20 18:23:23 424

原创 ClassNotFoundException和 NoClassDefFoundError

ClassNotFoundException和 NoClassDefFoundError1. 概述java.lang.NoClassDefFoundError 和 java.lang.ClassNotFoundException 都是 Java 语言层面的异常NoClassDefFoundError :Thrown if the Java Virtual Machine or a ClassLoad

2017-05-16 10:17:49 4356

原创 Java中的volatile关键字

一、概述在并发编程中,volatile关键字和synchronized都会被使用来解决并发问题。volatile修饰的变量,保证了对其他线程的可见性,也就是说:它会保证该变量的修改会立即被更新到主存,当有其他线程需要读取时,其他线程每次使用这个变量也必须去主存中读取新值,也就是说一个线程对该变量的修改对其他线程是立马可见的。参考了:http://www.cnblogs.com/aigongsi/ar

2017-05-15 21:21:55 301

原创 Java异常学习(一)

Java 异常学习1. 概述异常,顾名思义就是为了描述和处理程序在运行期间的例外情况而存在的体系,本着面向对象的思想,Java中的异常也作为类型和对象存在。Java中异常都继承自Throwable接口,提供了两个实现类:Error 和Exception;Error,表示这个异常非同小可不要接(An Error is a subclass of Throwable that indicates ser

2017-05-12 21:43:20 310

原创 Java中的数据结构(一):PCollection接口定义、PArrayList的实现

为了系统的完成后面的数据结构学习,这里首先参考JDK源码定义了Collection等接口,并在抽象类种提供一些骨架方法,方便后面具体实现类的编写,当然这些灵感都是来自JDK源码,先学习搬运然后再学习创造。1.顶层接口的定义1.1 PCollectionpublic interface PCollection<E> extends PIterable<E> { public abstract in

2017-05-12 21:32:54 1648

原创 Java中的数据结构-开篇

0系列文章导航Java中的数据结构(一):PCollection接口定义、PArrayList的实现一、 概述当我开始准备求职的时候,接到的第一个面试电话的第一个问题就是你了解基础的数据结构吗?现在已经晕晕乎乎可以写很多逻辑复杂的业务代码了,非但没觉得数据结构非常基础,却是觉得更加重要,无处不在,息息相关。所以决定重新梳理一下,并把自己的学习历程,分享出来与大家一起进步。1. 数据结构概述:数据

2017-05-12 20:56:46 374

原创 三大常用机密算法原理与基础使用MD5、3DES、RSA

概述数据在存储和传输的过程中,可能会面临被窃听、篡改等风险。同时,还可能有人伪装成为客户端进行破坏性的操作,因此为了保证数据的机密性、完整性、不可否认性、认证功能,我们通常对数据的存储和传输进行加密。这里我学习了生产中常用的三种加密算法,MD5、3DES、RSA。1. MD5MD5,全名Message Digest Algorithm 5,是一种摘要算法,通过内置的hash算法将信息摘要成为定长的十

2017-05-02 19:28:09 5444

原创 参照JDK源码实现一个LinkedList,分析常用的List集合及其适用场景

LinkedList

2017-04-21 10:55:39 323

原创 实现一个简略ArrayList, 提供 add(), remove(), size()

实现一个简略ArrayList, 提供 add(), remove(), size()没有考虑太多方面,还请批评指正。接口定义import java.io.Serializable;public interface PArrayListIT> extends Serializable{ public int add(T t); public int remove(

2017-04-19 20:50:22 557

原创 事务概念与隔离级别

一、 事务是一系列密切相关的数据库操作的组合,对系统的其他操作而言表现为一个整体。也就是,这一组操作要么全部成功,要么全部失败。事务的四大特性是ACID,也即原子性、一致性、隔离性和持久性。(相关英文定义,参见http://tech.it168.com/a2016/0905/2900/000002900122.shtml)二、 严格的串行可以保证数据操作的正确性,但是在并发下回

2017-04-18 19:32:03 356

原创 MySQL索引

MySQL索引的概念索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。简言之,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。SQL语句在没有索引的情况下,数据库会遍历全部数据后选择符合条件的;而有了相应的索引之后,数据库会直接在索引中查找符合条件的选项。哈希索引(Hash Index)建立在哈希表的基础上,它只对使

2017-04-05 20:54:40 192

转载 Redis 简介与使用入门

Redis Redis是Remote Dictionary Server(Redis) 的缩写,是一个key-value存储系统,使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型的Key-Value数据库,并提供多种语言的API。在很多地方,Redis也称为数据结构服务器,因为它允许缓存的值(value)可以是字符串(string)、哈希(hash)、列表(li

2017-04-05 20:43:07 247

原创 sql进阶-多表查询和复合查询

sql作为大家工作中每天都在接触的内容,重要性不言自明,下面是我近期遇到的的一些内容,分享出来,如有问题,欢迎指正。l  SELECT uid as u, vid as v FROM TableA WHEREvid='684020793';这样为列取别名,查询结果中就会以别名显示查询结果 l  SELECT * from TableA WHERE uid = (SELECT

2017-04-05 20:39:56 687

原创 3DES三重数据加密算法

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。 3DES算法是指使用双长度(16字节)密钥K=(KL||KR)将8字节明文数据块进行3次DES加密/解密。3DES的密钥是8个字节,但实际上只有7个用上,也就是56位。3DES是用3个或2

2017-03-02 09:56:37 4950

转载 JAVABEAN EJB POJO区别

http://www.cnblogs.com/yw-ah/p/5795751.htmlPOJO的内在含义是指那些:private的参数作为对象的属性,然后针对每一个参数定义get和set方法访问的接口。没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。JavaBean 是一种JAVA语言写成的可重用组件。JavaBean符合一定规范编写的Java类,不是一种技术

2017-01-06 20:07:18 379

原创 反射机制

反射,一种计算机处理方式。是程序可以访问、检测和修改它本身状态或行为的一种能力 反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高。Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method; 1.     Java反射的作用:在Java运

2017-01-06 20:03:07 318

原创 Navicat 导出数据库建表Sql语句和一些坑

l Navicat 导出数据库建表Sql1.       右键数据库,转储数据库文件,选择是否需要数据一起,选择路径并且保存sql文件就可以了。2.       http://blog.csdn.net/bonnie_fan/article/details/50370976l  http://jingyan.baidu.com/article/c275f6ba35415fe33d7

2017-01-06 19:58:49 8331

转载 拦截器Interceptor

SpringMVC 中的Interceptor拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间.l  Interceptor定义1.       Interceptor类要直接或者间接实现了Spring 的HandlerInterceptor接口,抽象类Ha

2016-12-24 17:01:28 313

原创 Git基础和常用命令

为什么需要版本控制?-本地版本控制-集中式-分布式上面基础问题参考下面的链接: http://blog.csdn.net/huaishu/article/details/50475175http://blog.csdn.net/w13770269691/article/details/38705473/http://blog.jobbole.com/tag/git/Gi

2016-12-24 16:57:45 394

原创 常见的存储引擎

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。 MyISAM:拥有较高的插入,查询速度,但不支持事务InnoDB :5.5版本后Mysql的默认数据库,事务型数据库的首选引擎,支持ACID事务,支持

2016-12-21 18:28:48 425

转载 Enum 类型

枚举类型(Enumerated Type)被用来将一组类似的值包含到一种类型当中。而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型,枚举类型可以为申明的变量提供更大的取值范围。 如何定义 Enum 类型 枚举类型的定义也非常的简单,用 enum 关键字加上名称和大括号包含起来的枚举值体即可,彩虹颜色就可以用新的 enum 方式来重

2016-12-21 18:27:20 498

原创 Node.js 入门学习

1.Node的安装参考:http://jingyan.baidu.com/article/b0b63dbfca599a4a483070a5.html注意:npm:node Package Manager虽然在安装node时候就已经安装了,但是应该先在命令行中,进行更新: npm install npm –g然后才能运行:npm –v; 2.入门可以参考:http://www

2016-12-21 18:24:55 321

原创 一次web请求,进入tomcat和守护线程

l  一次web请求,进入tomcat服务器处理请求的模式1.       收到一个请求就处理,这个时候就不能处理新的请求,这种为阻塞 这个是单线程模型2.       收到一个请求就新开一个线程去处理任务,主线程返回,继续处理下一个任务,解决了主线程阻塞的问题,有了一定程度的并发量3.       类似2的模型,但是不是每次收到请求就开一个新的线程,而是使用线程池。这种方式实现的

2016-12-21 18:21:38 3641

原创 12.12 学习日记

l  LombokLombok是一个简化POJO对象的一个工具,作为可选工具在项目中使用。简单的JavaBean,只定义了两个属性,在类上加上了@Data,从左面的结构图上可以看到,已经自动生成了上面提到的方法。(网图,侵删)l  Orika 是一个 Java Bean 映射框架http://wangbt5191-hotmail-com.it

2016-12-13 10:41:12 365

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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