自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java 8 函数式编程探秘 ( 下 )

函数式编程的益处更精练的代码函数编程的一大益处,是用更精练的代码表达常用数据处理模式。函数接口能够轻易地实现模板方法模式,只要将不确定的业务逻辑抽象成函数接口,然后传入不同的lambda表达式即可。博文“精练代码:一次Java函数式编程的重构之旅” 展示了如何使用函数式编程来重构常见代码,萃取更多可复用的代码模式。这里给出一个列表分组的例子。实际应用常常需要将一个列表...

2018-12-06 16:36:51 243 1

原创 MySQL读取JSON字段数据

ORDERS表中DELIVER_ADDRESS字段的JSON格式为{ "addressZh": "海府一横路", "areaName": "美兰区", "areaid": 22469, "cityName": "海口市", "cityid": 2121, "contact":

2018-12-06 14:26:11 7522

转载 Java 8 函数式编程探秘 ( 上 )

引子将行为作为数据传递怎样在一行代码里同时计算一个列表的和、最大值、最小值、平均值、元素个数、奇偶分组、指数、排序呢?答案是思维反转!将行为作为数据传递。 文艺青年的代码如下所示:public class FunctionUtil {   public static <T,R> List<R> multiGetResult(List<Func...

2018-11-14 15:23:02 304

原创 BigDecimal的舍位方式介绍

介绍:不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值和32位的整数标度(scale)组成。舍入方式:在银行、帐户、计费等领域,BigDecimal提供了精确的数值计算。其中8种舍入方式值得掌握。  1、ROUND_UP  舍入远离零的舍入模式。  在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。  注意,此舍入模式始终...

2018-09-21 17:05:27 944

转载 ThreadPoolExecutor里面4种拒绝策略

ThreadPoolExecutor类实现了ExecutorService接口和Executor接口,可以设置线程池corePoolSize,最大线程池大小,AliveTime,拒绝策略等。常用构造方法:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTime, TimeUnit unit,Blo...

2018-08-06 18:35:45 706

转载 NIO技术使用场景

NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector。传统IO基于字节流和字符流进行操作,而NIO基于Channel和Buffer(缓冲区)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Selector(选择区)用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个线程可以监听多个数据通道。NIO和传统IO(一下简称IO)之间...

2018-08-06 17:13:06 835

转载 volatile修饰符

volatile 作用保证内存可见性 防止指令重排 不能解决原子性volatile 理解java中多线程共享的变量存储在主内存中,每个线程都有自己的工作内存,工作内存保存了主内存的副本,线程要操作共享变量,实际操作的是线程工作内存的副本,操作完毕后再同步写入主内存,各个线程线程只能访问自己的工作内存,不可以访问其它线程的工作内存。java中线程工作内存跟主内存的交互...

2018-08-06 16:07:29 189

转载 Java多线程中锁的理解与使用

1.简介锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等 ) 。2.Java锁的种类公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的...

2018-08-06 14:47:56 556

原创 线程池的使用

 1、创建线程池package com.bee.vip.sys.util;import com.alibaba.fastjson.JSON;import org.apache.log4j.Logger;import java.util.ArrayList;import java.util.Collections;import java.util.List;import ja...

2018-08-06 11:23:01 193

转载 Java线程池简介

介绍线程池的作用就是提供一种对线程的管理,避免由于过多的创建和销毁线程所造成的开销。在一个“池”中维护着一定数量的线程,达到可重复利用的效果。在Java中,线程池的实现主要是通过ThreadPoolExecutor来实现的。接下来先从类图结构来分析一下。public interface Executor { void execute(Runnable command);}...

2018-08-02 15:57:51 195

原创 使用Mybatis Generator自动生成代码

1. 配置Maven插件 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot...

2018-07-25 18:21:06 170

转载 SourceTree使用图解

这篇文档的目的是:让使用Git更轻松。看完这篇文档你能做到的是:1、简单的用Git管理项目。2、怎样既要开发又要处理发布出去的版本bug情况。SourceTree是一个免费的Git图形化管理工具,mac下也可以安装。下载地址:https://www.sourcetreeapp.com/参考:http://www.liaoxuefeng.com/wiki/00137395...

2018-07-25 15:10:05 21420

转载 乐观锁与悲观锁简介

在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是关系型数据库系统中有乐观锁和悲观锁的概念,像memcache、hibernat...

2018-07-23 18:35:28 215

转载 MySQL常用的优化方式

引言:      关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂偶尔发现了这篇文章,总结得很经典,文章流量也很大,所以拿到自己的总结文集中,积累优质文章,提升个人能力,希望对大家今后开发中也有帮助1、选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,...

2018-07-23 18:24:17 202

转载 mysql数据库分库分表(Sharding)

mysql数据库切分前言       通过MySQLReplication功能所实现的扩展总是会受到数据库大小的限制。一旦数据库过于庞大,尤其是当写入过于频繁,非常难由一台主机支撑的时候,我们还是会面临到扩展瓶颈。这时候,我们就必须许找其它技术手段来解决这个瓶颈,那就是我们这一章所要介绍恶的数据切分技术。何谓数据切分        可能非常多读者朋友在网上或者杂志上面都已经多次见到...

2018-07-23 17:50:17 309

转载 Mybatis中的拦截器并使用拦截器实现分页

Mybatis 拦截器介绍       拦截器的一个作用就是我们可以拦截某些方法的调用,我们可以选择在这些被拦截的方法执行前后加上某些逻辑,也可以在执行这些被拦截的方法时执行自己的逻辑而不再执行被拦截的方法。Mybatis拦截器设计的一个初衷就是为了供用户在某些时候可以实现自己的逻辑而不必去动Mybatis固有的逻辑。打个比方,对于Executor,Mybatis中有几种实现:BatchExe...

2018-07-23 17:21:18 1846

转载 Mybatis之工作原理

1.Mybatis的架构1.1 Mybatis的框架分层 1.2 MyBatis的实现原理mybatis底层还是采用原生jdbc来对数据库进行操作的,只是通过 SqlSessionFactory,SqlSession Executor,StatementHandler,ParameterHandler,ResultHandler和TypeHandler等几个处理器封装了这些过程...

2018-07-23 16:41:30 293

转载 springmvc工作原理以及源码分析(基于spring3.1.0)

springmvc是一个基于spring的web框架.本篇文章对它的工作原理以及源码进行深入分析.一、springmvc请求处理流程二、springmvc的工作机制三、springmvc核心源码分析四、谈谈springmvc的优化一、springmvc请求处理流程引用spring in action上的一张图来说明了springmvc的核心组件和请求处理流程:     ...

2018-07-23 15:48:26 321

转载 Dubbo配置文件详解

依赖的jar理论上Dubbo可以只依赖JDK,不依赖于任何三方库运行,只需配置使用JDK相关实现策略。缺省依赖(系统默认)通过mvn dependency:tree > dep.log命令(Eclipse或Linux命令行)分析,Dubbo缺省依赖以下三方库:[INFO] +- com.alibaba:dubbo:jar:2.1.2:compile[INFO] | +-...

2018-07-23 15:11:40 327

转载 MyBatis一级缓存和二级缓存

MyBatis自带的缓存有一级缓存和二级缓存一级缓存Mybatis的一级缓存是指Session缓存。一级缓存的作用域默认是一个SqlSession。Mybatis默认开启一级缓存。 也就是在同一个SqlSession中,执行相同的查询SQL,第一次会去数据库进行查询,并写到缓存中; 第二次以后是直接去缓存中取。 当执行SQL查询中间发生了增删改的操作,MyBatis会把SqlSession的缓存清...

2018-07-10 16:52:20 177

转载 秒杀架构设计

业务介绍什么是秒杀?通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动比如说京东秒杀,就是一种定时定量秒杀,在规定的时间内,无论商品是否秒杀完毕,该场次的秒杀活动都会结束。这种秒杀,对时间不是特别严格,只要下手快点,秒中的概率还是比较大的。淘宝以前就做过一元抢购,一般都是限量 1 件商品,同时价格低到「令人发齿」,这种秒杀一般都在开始时间 1 到 3 秒内就已经抢光了,参与这个秒杀一般都是看...

2018-07-10 16:35:59 252

转载 Dubbo架构与底层实现

一、Dubbo的设计角色(1)  系统角色Provider: 暴露服务的服务提供方。Consumer: 调用远程服务的服务消费方。Registry: 服务注册与发现的注册中心。Monitor: 统计服务的调用次调和调用时间的监控中心。Container: 服务运行容器。(2)  调用关系服务容器负责启动,加载,运行服务提供者。服务提供者在启动时,向注册中心注册自己提供的服务。服务消费者在启动时,向...

2018-07-10 13:43:41 418

转载 Spring中的代理模式

代理模式所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式是一种结构性设计模式。当客户端不想直接调用主题对象,而希望主题对象的行为前后加上预处理或者后续处理时,则可以使用代理模式。 代理模式的三种角色①  主题抽象类主题抽象类定义了主题对象的行为,下面的例子中主题抽象...

2018-06-14 15:45:23 584

转载 Redis 分布式锁:乐观锁的实现,以秒杀系统为例

乐观锁大多数是基于数据版本(version)的记录机制实现的。即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个”version”字段来实现读取出数据时,将此版本号一同读出,之后更新时,对此版本号加1。此时,将提交数据的版本号与数据库表对应记录的当前版本号进行比对,如果提交的数据版本号大于数据库当前版本号,则予以更新,否则认为是过期数据。redis中可以使用wa...

2018-06-06 17:59:21 248

转载 秒杀系统架构分析与实战

#0 系列目录#秒杀系统架构秒杀系统架构分析与实战#1 秒杀业务分析#正常电子商务流程(1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货秒杀业务的特性(1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高;#2 秒杀技术挑战# 假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是1000...

2018-05-31 17:53:05 236

转载 MySQL 慢查询的特征表现及优化方式

我们将超过指定时间的SQL语句查询称为慢查询一、慢查询的体现慢查询主要体现在慢上,通常意义上来讲,只要返回时间大于 >1 sec上的查询都可以称为慢查询。慢查询会导致CPU,内存消耗过高。数据库服务器压力陡然过大,那么大部分情况来讲,肯定是由某些慢查询导致的。查看/设置“慢查询”的时间定义mysql> show variables like "long%";+------------...

2018-05-31 17:31:53 476

转载 Redis中的5种数据类型及常用命令

1.字符串类型对于字符串大家肯定都非常熟悉,不管是哪种编程语言都会有字符串的身影。它是Redis中最基本的数据类型,他能存储任意形式的字符串,包括二进制数据,是Redis中其他数据类型的基础。下面我们就介绍一下Redis操作字符串的常用命令。赋值与取值:SET key valueGET key递增数字INCR key当递增的不是整数时会报错:127.0.0.1:6379> set age d...

2018-05-31 17:22:48 678

转载 Redis 数据淘汰机制

概述在 Redis 中,允许用户设置最大使用内存大小 server.maxmemory,在内存限定的情况下是很有用的。譬如,在一台 8G 机子上部署了 4 个 Redis 服务点,每一个服务点分配 1G 的内存大小,减少内存紧张的情况,由此获取更为稳健的服务。Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。Redis 提供 6 种数据淘汰策略:volatile-lru:从已设...

2018-05-31 17:15:38 1050

转载 JVM原理讲解和调优

一、什么是JVM    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。    Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言...

2018-05-31 17:04:33 286

转载 数据库垂直拆分 水平拆分

       当我们使用读写分离、缓存后,数据库的压力还是很大的时候,这就需要使用到数据库拆分了。        数据库拆分简单来说,就是指通过某种特定的条件,按照某个维度,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面以达到分散单库(主机)负载的效果。         切分模式: 垂直(纵向)拆分、水平拆分。垂直拆分        专库专用        一个数据库由很多表的构...

2018-05-31 16:50:34 322

转载 mysql怎么添加索引sql语句

工具:mysql数据库创建一个user的表里边的字段1.普通索引 添加INDEXALTER TABLE `table_name` ADD INDEX index_name ( `column` )下面演示下给user表的name字段添加一个索引2.主键索引 添加PRIMARY KEYALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )3...

2018-05-31 16:47:02 31806

转载 数据库索引的使用

1.索引作用在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。例如,有3个未索引的表t1、t2、t3,分别只包含列c1、c2、c3,每个表分别含有1000行数据组成,指为1~1000的数值,查找对应值相等行的查询如下所示。SELECT c1,c2,c3 FROM t1,t2...

2018-05-31 16:38:03 214

转载 HashMap底层实现和原理

(1.7数组+链表与1.8+的数组+链表+红黑树)概述文章的内容基于JDK1.7进行分析,之所以选用这个版本,是因为1.8的有些类做了改动,增加了阅读的难度,虽然是1.7,但是对于1.8做了重大改动的内容,文章也会进行说明。HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null 值,因为key不允许重复,因此只能有一个键为null,另外HashMap不能保证放...

2018-05-31 16:16:46 272

转载 网络通讯协议

RMI、Hessian、Burlap、Httpinvoker、WebService的比较一、综述本文比较了RMI、Hessian、Burlap、Httpinvoker、WebService5这种通讯协议的在不同的数据结构和不同数据量时的传输性能。RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。Hessian和Burlap是caucho公司提...

2018-05-31 15:49:12 321

转载 为什么MySQL数据库索引选择使用B+树?

为什么MySQL数据库索引选择使用B+树?在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使用B+树!学过数据结构的一般对最基础的树都有所认识,因此我们就从与我们主题更为相近的二叉查找树开始。一、二叉查找树(1)二叉树简介:二叉查找树也称为有序二叉查...

2018-05-04 16:30:12 152

转载 浅谈Session与Cookie的区别与联系

一、Session的概念Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有...

2018-05-04 16:29:42 136

转载 数据结构简介

数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合。听起来是不是很抽象,简单理解:数据结构就是描述对象间逻辑关系的学科。比如:队列就是一种先进先出的逻辑结构,栈是一种先进后出的逻辑结构,家谱是一种树形的逻辑结构!(初学数据结构的时候很不理解为什么有“栈”这个东西;队列很容易理解---无论购物就餐都需要排队;栈可以认为就是个栈道---只允许一个人通过的小道,而且只能从一端进入,然后再从这端...

2018-05-04 16:29:22 270

空空如也

空空如也

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

TA关注的人

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