自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 jdk1.8后对集合的遍历方法更新

一、首先对Map集合的遍历方法jdk1.7之前的遍历方法如下:for (Map.Entry<String, Integer> entry : ordermap.entrySet()) { System.out.println("key : " + entry.getKey() + " value : " + entry.getValue());}jdk1.8之...

2019-10-08 14:07:16 2183

原创 JDK 7中引入的并发框架Fork/Join(^_^)

Fork/Join 框架是 JDK 1.7 提供的并行执行任务框架,这个框架通过(递归)把问题划分为子任务,然后并行的执行这些子任务,等所有的子任务都结束的时候,再合并最终结果的这种方式来支持并行计算编程。 总体的设计参考了为 Cilk 设计的work-stealing 框架。 Fork/Join 并行方式是获取良好的并行计算性能的一种最简单同时也是最有效的设计技术,是分治算法(Divid...

2019-09-27 17:54:24 371

原创 java 序列化的几种方式

什么是序列化?内存中的数据对象只有转换为二进制流才可以进行数据持久化和网络传输。将数据对象转换为二进制流的过程称为对象的序列化(Serialization)。反之,将二进制流恢复为数据对象的过程称为反序列化(Deserialization)。序列化需要保留充分的信息以恢复数据对象,但是为了节约存储空间和网络带宽,序列化后的二进制流又要尽可能小。序列化常见的使用场景是RPC框架的数据传输。常见的...

2019-09-26 17:09:43 733

原创 线程的生命周期(主要为了记忆)

这个也是面试题1.线程创建通过二种方式:1、继承Thread类2、实现Runnable接口,实现run方法,并调用start()方法2.就绪状态创建完线程后处于就绪状态,有执行资格,没有执行权3.运行状态获取cpu的执行权,执行代码4.阻塞状态有执行资格但是没有获取执行权,或者使用wait()等方法,释放锁并处于阻塞状态,需要通过notify激活后才能获取到就绪状态...

2019-09-06 14:51:48 139

原创 JDK1.5中的Callable接口和Futrue接口

我们在创建线程的方式有二种:1.继承Thread类;2.实现Runnable接口,但是在创建线程后,我们无法获取线程执行后的结果,就必须通过共享变量或者使用线程通信的方式来达到效果,比较繁琐,所以JDK1.5就添加了Callable和Futrue接口,通过它们可以在任务执行完毕之后得到任务执行结果,他们是相伴相生的。它们都是java.util.concurrent包下一、Callable接口位...

2019-08-26 17:50:44 404

原创 java多线程向RabbitMQ推送消息

首先我们使用Executor框架来实现多线程。1.向IOC容器中注册一个ThreadPoolTaskExecutor实例@Bean public ThreadPoolTaskExecutor DoneThreadPool(){ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); ...

2019-08-08 14:23:46 1598

原创 中文不同的编码占用的字节长度不同

String s = "中国"; 占多少字节?(1)GBK 编码(ide默认)时,每一个汉字占用 2 个字节,那么中国占 4 个字节。(2)UTF-8 编码时,每一个汉字占用 3 个字节,那么中国占用 6 个字节。String s = "China"; 占多少字节?答:占 5 个字节。System.out.println(Charset.defaultCharset());//...

2019-07-31 15:45:27 761

原创 基于redis分布式锁框架redisson(^_^)

什么是RedissonRedisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, S...

2019-07-01 10:20:18 3061 1

转载 分布式/分布式锁/分布式锁常用方案(^_^^_^^_^)

### 什么是锁?在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。 而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发现已经有标记了则等待拥有标记的线...

2019-06-26 20:16:04 347

原创 mysql 类型转换 使用CAST或者CONVERT把varchar类型转换int排序

1 BINARY[(N)]2 CHAR[(N)]3 DATE4 DATETIME5 DECIMAL6 SIGNED [INTEGER]7 TIME8 UNSIGNED [INTEGER]--使用CAST将varchar转换成int类型排序select server_id from cardserver where game_id = 1 order by CAST(serv...

2019-06-24 20:46:42 3412

原创 mysql union 和union all 的区别

MySQL UNION 用于把来自多个SELECT语句的结果组合到一个结果集合中。语法为:SELECT column,... FROM table1 UNION [ALL]SELECT column,... FROM table2...在多个 SELECT 语句中,对应的列应该具有相同的字段属性,且第一个 SELECT 语句中被使用的字段名称也被用于结果的字段名称。...

2019-06-21 14:30:11 233

原创 JDK1.8 CompletableFuture异步编程(^_^)

JDK 5引入了Future模式。Future接口是Java多线程Future模式的实现,在java.util.concurrent包中,可以来进行异步计算。Future模式是多线程设计常用的一种设计模式。Future模式可以理解成:我有一个任务,提交给了Future,Future替我完成这个任务。期间我自己可以去做任何想做的事情。一段时间之后,我就便可以从Future那儿取出结果。Fut...

2019-06-20 16:56:23 2752

转载 ConcurrentHashMap对于不同JDK版本的不同结构(^_^^_^)

了解ConcurrentHashMap 实现原理,建议首先了解下HashMap实现原理。为什么要用ConcurrentHashMapHashMap线程不安全,而Hashtable是线程安全,但是它使用了synchronized进行方法同步,插入、读取数据都使用了synchronized,当插入数据的时候不能进行读取(相当于把整个Hashtable都锁住了,全表锁),当多线程并发的情况下...

2019-06-19 13:01:46 324

原创 NOSql数据库的优缺点分析

Nosql介绍Nosql的全称是Not Only Sql,这个概念早起就有人提出,在09年的时候比较火。Nosql指的是非关系型数据库,而我们常用的都是关系型数据库。就像我们常用的mysql,oralce、sqlserver等一样,这些数据库一般用来存储重要信息,应对普通的业务是没有问题的。但是,随着互联网的高速发展,传统的关系型数据库在应付超大规模,超大流量以及高并发的时候力不从心。而就在这...

2019-06-19 11:02:45 15389

原创 mysql sum(if())和count(if())用法

SELECT SUM(if(category=1,size,0)) ,COUNT(if(category=1,true,null)) FORM t_file;首先了解下:count函数mysql中count函数用于统计数据表中的行的总数,或者根据查询结果统计某一列包含的行数,常见的用法如下 count(*) 计算表的总行数,包括空值;count(字段名) 计算指定列下的总行数,忽略空...

2019-06-03 11:21:37 944

原创 ES6 array.map()用法

定义:对数组中的每个元素进行处理,得到新的数组;特点:不改变原有数据的结构和数据const array = [1, 3, 6, 9];const newArray = array.map(function (value) { return value + 1;});console.log(newArray);console.log(array);还有一种另外的写法,使用箭...

2019-05-23 17:27:53 11823

原创 ES6 function函数和箭头函数区别

1.箭头函数与function定义函数的写法://functionfunction fn(a, b){ return a + b; }//arrow function var foo = (a, b)=>{ return a + b };2.this的指向:使用function定义的函数,this的指向随着调用环境的变化而变化的,而箭头函数中的this指向是固定不变的,...

2019-05-23 11:09:39 718

原创 spring boot 注解处理统一异常和自己编写接口来处理异常的区别

此前,我们主要通过在控制层(Controller)中手动捕捉异常(TryCatch)和处理错误,在SpringBoot 统一异常处理的做法主要有两种:一是基于注解ExceptionHandler,二是基于接口ErrorController,两者都可以让控制器层代码快速“瘦身”,让业务逻辑看起来更加清晰明朗!一. 默认错误处理SpringBoot 默认为我们提供了BasicErrorCont...

2019-05-20 17:40:41 577

原创 for循环中不要使用remove操作

不要在 foreach 循环里进行元素的 remove / add 操作。 remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁。正例:Iterator<String> iterator = list.iterator();while (iterator.hasNext()) {String item = iterator.next...

2019-04-30 10:14:15 1912 2

原创 synchronized 什么时候释放锁

任何线程进入同步代码块、同步方法之前,必须获得同步监视器的锁定,那么何时会释放这个锁定呢?在程序中,是无法显式释放对同步监视器的锁的,而会在如下几个情况下释放锁。1、当前线程的同步方法、代码块执行结束的时候释放2、当前线程在同步方法、同步代码块中遇到break 、 return 终于该代码块或者方法的时候释放。3、。。。。出现未处理的error或者exception导致异常结束的时候释...

2019-04-28 09:57:01 6092

原创 mybatis 使用FIND_IN_SET

判断传入的值,是否在数据库字段中存在,比较类似于like,结合实例来看下吧<select id="getBasicdataReviewStage" resultMap="BaseResultMap" parameterType="com.xyy.wms.basicdata.dict.po.BasicdataReviewStage"> select <inc...

2019-04-12 19:06:27 12115

原创 嵌套事务未回滚解决方案(^_^)

首先想到的是事务的传播行为这里的Propagation是事务的传播行为,默认是REQUIRED,意思是如果当前没有事务,就开启一个事务,如果已经存在一个事务,就加入到这个事务中;REQUIRES_NEW,新建事务,如果当前存在事务,把当前事务挂起;意思是这里执行到child()方法时,parent所在的事务就会挂起,方法child就会起一个新的事务,等待方法child的事务完成以后,方法p...

2019-03-28 11:22:18 1869 2

原创 Spring RestTemplate中几种常见的请求方式(^_^)

首先Java远程调用接口的方法webservice协议有以下三种方法:1,基于原生Java的UrlConnection2,使用httpclient(这个用的也比较多)3,使用restTemplate(Spring提供的)(推荐)1、restTemplate有以下几种请求GET请求(若要检索某个资源) POST请求(若要在服务器上创建资源) PUT请求(若要更改资源状态或对...

2019-03-24 21:13:34 888

原创 spring aop (面向切面编程)实现事务管理(^_^^_^)

事务嵌套,不回滚的问题描述:要想事务起作用,必须是主方法名上有@Transactional注解,方法体内不能用try catch;如果用try catch,则catch中必须用throw new RuntimeException();@Transactional注解应该只被应用到public方法上,不要用在protected、private等方法上,即使用了也将被忽略,不起作用。这是由Sp...

2019-03-23 17:43:24 2948

转载 透彻的实现 Spring 中@transactional 的使用(^_^^_^)

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编码式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另一种是基于@Tr...

2019-03-23 14:37:06 515

原创 RabbitMq对消息丢失的处理方案

我们知道,如果要保证消息的可靠性,需要对消息进行持久化处理,然而消息持久化除了需要代码的设置之外,还有一个重要步骤是至关重要的,那就是保证你的消息顺利进入Broker(代理服务器),如图所示:正常情况下,如果消息经过交换器进入队列就可以完成消息的持久化,但如果消息在没有到达broker之前出现意外,那就造成消息丢失,有没有办法可以解决这个问题?RabbitMQ有两种方式来解决这个问...

2019-03-21 13:57:05 4311 1

原创 springboot 分布式事务的解决方案(JTA+Atomic+多数据源)(^_^^_^)

首先,到底啥是分布式事务呢,比如我们在执行一个业务逻辑的时候有两步分别操作A数据源和B数据源,当我们在A数据源执行数据更改后,在B数据源执行时出现运行时异常,那么我们必须要让B数据源的操作回滚,并回滚对A数据源的操作;这种情况在支付业务时常常出现;比如买票业务在最后支付失败,那之前的操作必须全部回滚,如果之前的操作分布在多个数据源中,那么这就是典型的分布式事务回滚;了解了什么是分布式事务,那分...

2019-03-18 15:50:50 21331 3

转载 git 操作手册

一:Git是什么?Git是目前世界上最先进的分布式版本控制系统。工作原理 / 流程: Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 二:SVN与Git的最主要的区别?SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时...

2019-03-16 15:00:17 210

原创 spring控制事务的回滚

要解决上面的问题,首先我们要分清楚什么是checked检查异常和unchecked非检查异常。一、checked异常就是抛出Excetion异常以及其子类异常,spring默认对它是不回滚事务,要特别注意。eg:public void delete(Integer Personageid) throws Exception{ jdbcTemplate.update...

2019-03-16 11:34:25 612

原创 mybatis 遍历字符串数组(^_^)

mybatis传入字符串,集合,数组并遍历&lt;!--传递参数为字符串approveStatus =“通过,不通过” item为遍历后的参数--&gt;&lt;if test="approveStatus != null and approveStatus!=''"&gt; and i.approve_status IN &lt;foreach item="s...

2019-03-13 14:27:31 16384

原创 分布式系统介绍和一致性问题(^_^)

首先,要聊的就是数据库事务四大特性(简称ACID) 1、原子性(Atomicity):事务的原子性是指事务中的程序作为数据库的逻辑工作单元,要么全部成功,要么全部失败。 2、一致性(Consistency):事务一致性是指事务执行之前和执行之后数据保持一致。 3、隔离行(Isolation):事务的隔离性是指两个或多个事务之间相互隔离,互不影响。 4...

2019-03-08 15:43:47 311

原创 url的post请求 Content-Type:application/json类型 Java后端接收(^_^)

Content-Type为application/json时,假设前台传输的数据为data: {name:'wyc',age:12}第一种情况在springmvc框架下处理方法为前台post请求,传输过程中数据需要从json对象转成json字符串data: JSON.stringify({name:'wyc',age:12})后台接收函数上添加@requestbody注解,并定义一个类...

2019-03-07 19:49:59 10312 2

原创 分布式系统中的CAP原理和最终一致性,强一致性

CAP原理中,有三个要素:一致性(Consistency) 可用性(Availability) 分区容错性(Partition tolerance)一致性(C):任何一个读操作总是能读取到之前完成的写操作结果,也就是在分布式环境中,多点的数据是一致的;可用性(A):每一个操作总是能够在确定的时间内返回,也就是系统随时都是可用的;分区容错性(P):在出现网络...

2019-03-04 15:36:12 2024

原创 springboot+mybatis整合配置事务详解(^_^)

springboot集成mybatis有三种方式:一、最简单的方式就是使用MyBatis官方提供的 mybatis-spring-boot-starter。二、另一种使用spring-mybatis包的xml配置方式,这样需要自己写一些代码,但可以更灵活的控制mybatis的各项配置。三、使用引入xml配置(淘汰)最简单的一(略)太简单就不写了,只要配置数据源即可这里主要介绍s...

2019-02-26 11:34:18 20831 1

原创 spring操作redis的redisTemplate对象

spring封装了redisTemplate对象来对redis的各种操作,它支持原生的api 不但提供了redisTemplate对象还提供了一个StringRedisTemplate对象,二者的关系是StringRedisTemplate继承RedisTemplate两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面...

2019-02-18 16:08:24 800

原创 深入理解spring AOP动态代理(^_^)

Spring是一个轻型容器,Spring整个系列的最最核心的概念当属IoC、AOP。可见AOP是Spring框架中的核心之一,在应用中具有非常重要的作用,也是Spring其他组件的基础。AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念...

2019-02-18 16:02:55 167

原创 @requestBody和@requestParam的使用场景分析

一、@requestBody1、使用场景:http协议为不是默认的Content-type类型(application/x-www-form-urlcoded)的请求,eg:content-type:”application/json charset=utf-8”, 或者content-type:”application/xmlcharset=utf-8”。2、接收的是HttpEntit...

2019-02-15 15:24:14 1052

原创 springboot使用依赖包配置mybatis(^_^)

 首先来谈谈这个依赖包mybatis开发团队为Spring Boot 提供了 MyBatis-Spring-Boot-Starter 。首先,MyBatis-Spring-Boot-Starter will:Autodetect an existing DataSource. Will create and register an instance of a SqlSession...

2019-02-14 16:49:12 2450

原创 mybatis使用lamda风格的批量更新(^_^)

mybatis批量操作常用的做法如下代码所示:// UserDao.java/*** 批量插入*/int batchInsert(@Param("users") List&lt;User&gt; users);// UserDao.xml &lt;insert id="batchInsert"&gt; INSERT INTO user (name,pas...

2019-02-14 16:08:54 4904

原创 equals和hashcode的用法详解(^_^)

首先他们都是object类的二个重要方法。重写equals方法的同时,也要重写hashcode方法,如果不这样可能map中会出现2个相同的key。public boolean equals(Object obj)public int hashCode()Object类是类继承结构的基础,所以是每一个类的父类。所有的对象,包括数组,都实现了在Object类中定义的方法。一、equal...

2019-01-21 14:39:02 965

空空如也

空空如也

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

TA关注的人

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