自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Todd的专栏

仰望星空更要脚踏实地!

  • 博客(31)
  • 收藏
  • 关注

原创 HashMap实现原理

结构:数组+链表+红黑树1.HashMap可以添加null类型的键值,并且可以保证正常的输出。(HashTable虽然添加是编译器不报错,但是获取Null的键时会报空指针异常)。2.两个决定HashMap性能的重要参数: initial capacity:初始容量,默认16。 load factor:负载因子,默认0.75. 负载因子(已经使用/总长度)决定当

2018-01-07 22:00:10 448

原创 锁类型

偏向锁:若某一锁被线程获取后,便进入偏向模式,当线程再次请求这个锁时,就无需再进行相关的同步操作了,从而节约了操作时间,如果在此之间有其他的线程进行了锁请求,则锁退出偏向模式。偏向锁,其实是无锁竞争下可重入锁的简单实现。可重入锁: 也叫递归锁,能够支持一个线程对资源的重复加锁。可重入锁修饰的代码块,执行线程在获取了锁之后仍能连续多次的获得该锁。优点:避免递归调用时,死锁问题。自旋锁:线程在没有取得锁

2017-12-26 13:54:53 695

原创 Curator常用API练习

zookeeper入门之Curator的使用之几种监听器

2017-12-07 15:29:58 591

转载 Apache Curator入门实战

Apache Curator入门实战Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端的开发量。1.Zookeeper安装部署Zookeeper的部署很简单,如果已经有Java运行环境的话,下载tarball解压后即可运行。[root@vm Temp]$ wget http://

2017-12-06 20:14:35 312

原创 RPC协议

一、什么是RPC协议RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议。它允许像调用本地服务一样调用远程服务。它可以有不同的实现方式。如RMI(远程方法调用)、Hessian、Http invoker等。另外,RPC是与语言无关的。二、RPC结构拆解[深入浅出 RPC](http://blog.csdn.net/mindfloating/article/

2017-12-06 15:14:26 545

原创 生产者/消费者模式Java实现方式

使用Java实现生产者/消费者模式几种方法

2017-11-27 19:07:52 794

原创 并发(四):线程池ThredPool

线程池

2017-11-24 11:33:04 404

原创 并发(三):Lcok与synchronized区别

1.什么是锁?锁是用来控制多个线程访问共享资源的方式。一般来说,一个锁能够防止多个线程同时访问共享资源。2.synchronized和lock比较:Lock接口虽然需要通过显示方法来获取和释放锁,但是却拥有了锁获取与释放的可操作性、可中断的获取锁、以及超时获取锁等多种synchronized关键字不具备的同步性。获取锁前:a.锁获取与释放的可操作性:

2017-11-14 15:48:11 4157

转载 并发(二):java线程池技术

Java并发编程:线程池的使用 Java并发编程:线程池的使用  在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:  如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。  那

2017-11-12 15:20:32 1590

原创 并发(一):java并发概念以及Volatile可见性,重排序

参考:java并发编程的艺术-方腾飞1.线程通信与线程同步:通信:指线程之间以何种机制来交换信息。a.共享内存模式即:线程之间共享程序的公共状态,通过读写内存中的公共状态来进行间接通信。b.消息传递模式:线程之间没有公共状态,线程之间必须通过发送消息来直接进行通信。同步:程序中用于控制不同线程间操作发生相对顺序的机制。a.共享内存模式中:某个方法或某段代码在线程之间

2017-11-11 17:53:03 2454

转载 共享变量在线程间的可见性

一共享变量在线程间的可见性        (1)有关可见性的一些概念介绍        可见性:一个线程对共享变量值的修改,能够及实地被其他线程看到。        共享变量:如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量。所有的变量都存储在主内存中。        线程的工作内存:每个线程都有自己独立的工作内存,里面保存该线程使用到的变量的副本(主内存

2017-11-04 14:18:12 5243

原创 session一致性-将session存储到redis中

分布式项目通常部署在不同的服务器中,而传统session只存储在本地服务器,并不能实现session的跨域使用。因此实现session一致性通常将sessio存储到redis中,其他服务器获取回话信息直接去redis中获取。spring-session原理就是讲获取session的方式,从tomcate容器获取改为了从redis中获取。现在spring-session整合redis:pom

2017-10-30 20:11:44 11014 1

原创 redis分布式锁java实现解决缓存雪崩

缓存雪崩:因为缓存失效(key生存时间到期)导致所有请求都去查找数据库,导致数据库CPU和内存负载过高导致宕机。缓存雪崩原因及解决方案:使用缓存主要解决数据同步,并减少对数据库访问次数。因此,通常解决方案往往是使用互斥锁,让一个线程访问数据库,并将数据更新到缓存中,其他线程访问缓存中数据。如果是基于jvm锁机制的话,只能解决单机问题,也就是只让本机一个线程访问缓存,但是分布式条件下

2017-10-26 17:32:43 4284 1

原创 spring整合redis

pom.xml redis.clients jedis 2.9.0 org.springframework.data spring-data-redis 1.8.0.RELEASE xml形式:<beans xmlns="http://www.springframework.org/schema/be

2017-10-25 15:14:46 1625

转载 实战Spring事务传播性与隔离性

一、事务传播性1.1 什么是事务的传播性事务的传播性一般在事务嵌套时候使用,比如在事务A里面调用了另外一个使用事务的方法,那么这俩个事务是各自作为独立的事务执行提交,还是内层的事务合并到外层的事务一块提交那,这就是事务传播性要确定的问题。下面一一介绍比较常用的事务传播性。首先奉上事务拦截器TransactionInterceptor事务处理流程图:

2017-10-19 19:27:57 1621

原创 基于springAop动态切换数据源实现读写分离

读写分离的好处:高并发互联网下减少数据库压力。详细请自行百度。现在需求:读数据从test库中,写数据从test2中。根据调用方法的不同实现动态切换。直接代码:bean.xml:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema

2017-10-19 13:43:41 1994

原创 spring事务失效解决方法并进行事务的部分回滚

内容:1.spring事务失效场景。2.解决方案.3.Spring事务回滚到指定片段。场景描述:当我们从12306点击最后一步付款操作,后台有两步操作。1.将乘客用户信息插入到订单表。2.向用户手机发送短信提示。因为发送短信的方法需要掉外部网关,在这一步通常会发生发送失败。我希望当发送短信这个方法不影响我整体业务,即即使不发送短信车票订单同样向数据库中插入。问题1:sp

2017-10-18 12:57:38 5004 2

原创 springtest整合junit并结合logback打印mybatis执行详细信息

解决的问题:1.使用Junit进行单元测试时,加载spring配置文件交由junit单独管理。我只管@Test下的方法。      2.junit进行mybatis事务方法我想打印详细信息,通过日志查看事务是否起作用。 @RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:cn/r

2017-10-18 09:31:11 3056

原创 全注解方式整合spring+mybatis模拟springboot整合

实习工作中的项目使用到了springboot。虽然springboot使用简单但是默认配置和注解挺多。如果boot想使用熟练前提要对ssm整合比较熟悉。以前开发习惯使用xml配置文件,但是使用boot后才发现注解才是王道。现在将spring+mybatis使用全注解完成整合,并且配置事务。文件中的注解与Xml进行了比对。直接上代码。@Repositorypublic interface Em

2017-10-17 17:29:10 3572

原创 cglib实现动态代理(二)

JDK实现动态代理需要代理类实现接口,这导致在使用中有很大的局限性,毕竟不是所有类都需要实现接口。而cglib通过继承的方式动态产生代理类,cglib是动态代理框架,功能很强大。改造上节中的日志代理:/** * cglib的处理器 * */public class LogProxyCglib implements MethodInterceptor { private Obje

2017-10-14 16:03:48 1608

原创 JDK动态代理与静态代理(一)

顾名思义为某个类的对象提供代理服务,协助该对象解决核心方法以外的问题。静态代理:委托类对象运行之前,代理类对象已经存在。且服务于某些特定类对象(同一个接口下)。静态代理举例:优点:代理类不需要了解委托类类的具体实现(秘书不知道老板开会的内容),客户端方法调用时,只需要知道代理类对象即可(告知秘书BossA要开会)。缺点:1.代码冗余。代理类和委托类实现了相同接口

2017-10-13 09:09:16 1670 1

原创 springboot注解

1.@EnableAutoConfiguration类级别注解。@EnableAutoConfiguration(exclude={xxx.class})//禁用xxx类2.@ComponentScan({cn.xx.xx})搜索包下的bean。所有应用程序组件(@Component,@Service,@Repository,@Controller等)将自动注册为Spring Bean。3

2017-09-30 09:31:16 1513

原创 BootstrapDialog.dialogs关闭指定层的弹出框

页面一:点击新增黑名单,调用方法弹出窗口: 新增黑名单function addDetailInfo(url,title,formId,cssClasses){ var $that = $(this); var formUrl = url; if(url.indexOf("?")!=-1){ formUrl = url.substring(0,url.indexOf("?

2017-09-26 16:22:20 8232 1

原创 mybaties-plus代码生成器

代码生成器作用很强大,能够减少无用的代码量。尤其数据库字段很多的时候,确实比较方便。依赖文件: com.baomidou mybatis-plus ${mybatis-plus.version} org.apache.velocity velocity 1.7 执行文件:public class MyBatisCoder { /** *

2017-09-22 09:17:42 1850

原创 1.原则

1.将共同的css样式文件放到头文件中统一配置,单页的放到一个文件中。2.js框架放到尾文件中统一引入。3.高内聚,低耦合,不仅要会背更要知道在代码中怎么使用。代码抽取。4.代码规范,注释规范,像穿衣服一样整洁、漂亮。

2017-09-20 09:35:10 1509

原创 mysql几种引擎比较

Innodb:mysql5.58开始默认的存储引擎。支持事务,行锁设计,支持外键,支持非锁定读即默认读取操作不会产生锁。索引为聚集索引,缓冲索引文件和数据文件,每张表的存储都是按主键的顺序存放,如果没有显式地在表定义时指定主键,innodb会为每一行生成一个6字节的ROWID,以此作为主键。MyISAM:不支持事务,表锁设计,索引为非聚集索引,缓冲池只缓存索引文件,不缓冲数据文件。Mari

2017-09-17 19:53:02 1812

原创 mysql常见面试题汇总

mysql问题主要分以下几类:1.对sql语句的考察。2.对mysql引擎的考察,如分几类以及他们的区别。3.对mysql索引的考察如:3.1索引是如何实现的。3.2创建索引应该注意什么。  3.3如何知道查询是否使用索引。        3.4聚集索引和非聚集索引的区别。3.5索引什么情况下失效。3.6对建立索引的列是均匀分布还是不均匀分布好。

2017-09-17 16:00:52 2066

原创 b+树以及在Mysql中的使用

B+树在面试过程中还是经常被问及的,比如:1.B树和B+区别?2.B+树的定义?为什么要用b+树,而不用平衡二叉树?等等。。。网上关于b+树的性质,操作的帖子很多,但是我很好奇,mysql为什么使用b+树组织索引?一行行的数据文件是怎么被组织起来的?这有篇帖子我感觉真的很好,结合实际来讲解b+树。http://blog.codinglabs.org/articles/theor

2017-09-15 18:37:00 3550

原创 echarts(三)折线柱状图

折线柱状图的使用以官网中的例子为例,学习下基本属性。感觉echarts3文档写的真是特别清楚,直接拿来就能用,太简单了。文档配置官网:http://echarts.baidu.com/option.html#title $(function(){ showBar(); }); function showBa

2017-09-14 16:01:40 2085

原创 echarts使用(二)项目中饼图的使用

项目中使用到到的一些饼图。感觉echart的使用还是挺简单的,UI给设计好色彩搭配以后我们直接使用。实际在使用中都是ajax后台发送请求,返回一个json串,然后对数据进行动态填充。表中的Json数据:{ "state": 1, "list": [ { "COUNT": 14, "AGE": "

2017-09-14 14:40:19 1734

原创 echarts使用(一)

项目中不少地方用到了图表来进行数据展示,所以系统的学习一下。官网样例链接:http://echarts.baidu.com/echarts2/doc/example.html导入一个简单的饼图:项目需要jquery.js 和 echarts的类库。我是直接从我们项目中拷贝出来的类库,然后去官网找了一个饼图的样例。项目结构:static---echarts

2017-09-13 10:32:09 1619

空空如也

空空如也

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

TA关注的人

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