自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

抓住流浪剑客的小YI巴

亨亨的技术成长之路

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

原创 如何在spring事务提交成功后再进行异步操作

业务场景:我们经常会有些方法会调用一些方法异步执行,比如入库操作后要异步发送mq消息,发送短信或者发布事件等等但是往往我们的业务方法总是包含事务的,要么全部成功,要么全部失败。有的时候事务执行失败了或者还没有提交,异步方法就执行完成了我们希望:当我们事务失败回滚时,我们的异步操作也不执行我们的异步操作需要等待事务完成后才执行比如:@Transactional(rollbackFor = Exception.class)public boolean testTransactional()

2021-02-18 17:50:18 4721 5

原创 mysql事务和锁详解

引言这里我们主要讲解事务的基本概念和事务的特性,并且分析各种隔离级别是如何解决脏读、不可重复读、幻读的。mysql中innodb是如何解决幻读的,还有innodb中锁的类型及作用

2020-06-12 12:07:35 598

原创 深入理解mysql索引

每当我们提到mysql数据库的时候,脑海里会想起几个关键字:索引、事务、数据库锁等等,索引是mysql的灵魂,是我们平时进行查询时的利器,也是面试中的重中之重。可能我们了解索引的底层是b+树,会加快我们的查询,也会在表中建立我们的索引,但这是远远不够的,我这里列举几个索引常见的面试题:1、索引为什么要用b+树这种数据结构2、聚集索引和非聚集索引的区别3、索引什么时候会失效,最左匹配原则是什么当遇到这些问题的时候,我们会发现我们对索引还是一知半解,今天我们一起学习一下mysql的索引

2020-02-06 12:10:14 508

原创 关于java序列化的问题你真的会吗?

引言在持久化数据对象的时候我们很少去使用java序列化,而是去使用数据库等方式。但是在我看来,Java 序列化是一个很重要的内容, 序列化不只可以保存对象到磁盘进行持久化,还可以通过网络传输。在平时的面试当中,序列化也是经常谈及的一块内容。当谈及序列化的时候,大家可能知道将类实现Serializable接口就可以达到序列化的目的, 但是当我们看一些序列化的面试题我们却一脸懵逼。可序列化接口...

2019-08-15 18:36:40 455

原创 Redis专题(三).锁的基本概念到Redis分布式锁实现

现在大家总是聊一些分布式的问题,比如分布式事务、分布式框架、zookeeper、springcloud等等。今天我们先回顾一下锁的概念和使用,然后来聊一下分布式锁,并且用redis来实现分布式锁。

2019-08-01 20:47:16 626

原创 基于CNN+keras的验证码识别项目

一.样本制造首先我们要先制造样本,这里我们制造的样本去除了大小写的o,i和l,加上0-9一共是56个字符。训练的时候大约制造了3万张样本用做训练,2000张用做验证import cv2import numpy as npline_num = 5#图片个数pic_num = 200path = "validate/"def randcolor(): return (np...

2019-06-06 15:33:29 3293 6

原创 简洁方便的集合处理 —— java8 stream流

背景java8已经发行了好几年,前段时间java12也已经问世,但平时的工作中,很多项目的环境还停留在java1.7中。但是java8的很多新特性都是革命性的,各种集合的优化,lambda表达式,所以我们还是要去了解java8的魅力。今天我们学习一下java8的Stream,并不需要理论基础,直接可以上手去用。起初我接触stream的原因,是我要搞一个用户收入消费的数据分析,起初的统计筛选分...

2019-05-10 18:30:27 928

原创 Redis专题(二).Redis数据结构底层探秘

前言上一节 Redis专题(一).初识Redis及Redis基本知识总结我们了解了redis的基本概念、优缺点以及它的内存淘汰机制,我们对redis有了初步的认识。不得不说互联网的很多应用场景都有着Redis的身影,它能做的事情远远超出了我们的想像,那么它的底层数据结构到底是什么呢,为什么它能做这么多的事情。让我们一起看一下Redis的底层数据结构以及常用的命令。本节知识脑图展示一下:一...

2019-04-23 20:09:28 314

原创 opencv for java mac安装

OpenCV是一个基于C/C++开发的功能强大的计算机视觉开源框架,官方提供了Windows(含Java封装库)、Android、iOS这几种环境下的已编译好的库。。如果想要通过Java来使用OpenCV,可以先将相关功能用C/C++开发后编译为JNI库、再由Java程序调用(IPC、RPC方式在此不讨论)。 也可以直接使用OpenCV的Java封装库(封装了对OpenCV的JNI调用),这样...

2019-04-16 16:15:33 2847 4

原创 Redis专题(一).初识Redis及Redis基本知识总结

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。> > Redis是一个开源的使用ANSI 、C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

2019-03-26 12:25:58 393 1

原创 leetcode 98题 .验证二叉搜索树

题目描述:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。这里要注意的是:要求左子树所有的节点的值都要比根节点要小,并不只是左节点的值这里提供了两种方法,第一种是比较简单并且便于理解的方法。方法一. 中序遍历法首先我们...

2019-03-12 14:11:44 336

原创 lombok原理、springboot中安装使用

背景在面向对象编程中最常用的就是去编写一些对象类,然后定义对象的一些Get/Set、toString、hashcode等方法,还有无参全参的构造函数等等,虽然编译器会给我们自动生成,但是总是感觉代码过于冗余,而且当我们修改对象的某个属性的时候,需要去找到对应的get,set,toString方法等,然后依次修改,这样确实很麻烦。那么是否一款插件或工具能够自动地实现这个方法呢?本文将向大家介绍一款...

2019-03-12 12:45:39 293

原创 解决问题 com.alibaba.fastjson.JSONObject cannot be cast to 的问题

我们通过接口的形式得到一组json数据如下:{ "name": "小名", "age":19 "subTradeList": [ { "balance": "2083.63", "money": "0.01", "tradeDe

2019-03-11 17:38:45 61153 5

转载 【转载】分布式之redis复习精讲

原文地址:【原创】分布式之redis复习精讲引言为什么写这篇文章?博主的《分布式之消息队列复习精讲》得到了大家的好评,内心诚惶诚恐,想着再出一篇关于复习精讲的文章。但是还是要说明一下,复习精讲的文章偏面试准备,真正在开发过程中,还是脚踏实地,一步一个脚印,不要投机取巧。考虑到绝大部分写业务的程序员,在实际开发中使用redis的时候,只会setvalue和getvalue两个操作,对r...

2019-03-01 18:03:08 196

原创 neo4j(二).使用neo4j-import导入数据及关系

背景上节我们了解了什么是图数据库,作为研究对象的neo4j的特点,优缺点以及基本的环境搭建。现在我们要讲存储在csv中的通话记录数据导入到neo4j中去,并且可以通过cql去查询导入的数据及关系1.选取导入方式neo4j的导入方式有很多,我大概总结了一下:Cypher CREATE 语句,为每一条数据写一个CREATECypher LOAD CSV 语句,将数据转成CSV格式,通过...

2019-02-26 19:01:18 10986 6

原创 neo4j(一).初识图数据库neo4j

neo4j是图数据库初识neo4j,首先我们要知道neo4j是图数据库。我们平常用的数据库一般是RDBMS(关系型数据库),那么什么是图数据库呢?既然有了关系型数据库,那么为什么要有图数据库呢?1.什么是图数据库简单来说:图形数据库(图形数据库也称为图形数据库管理系统或GDBMS。图数据库的基本含义是以“图”这种数据结构存储和查询数据,而不是存储图片的数据库。它的数据模型主要是以节点...

2019-02-26 19:00:22 5249

原创 HashMap 你真的了解吗?

一. hashmap简介HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接...

2019-02-11 17:05:00 527

原创 散列表(一).散列表基本内容介绍

   一说到散列表,大家脑子想到的词就是:Hashmap、key-value、查找速度快、增删速度快等等。确实,在我们平常的学习生活中,散列表是很常见、也是用的很多的数据结构。那么散列表是怎样设计出来的,为什么它既可以和数组一样查询快,又可以和链表一样快增删,本节让我们一起了解一下什么是散列表、什么是散列函数、它究竟是如何设计出来的。散列思想  什么是散列思想呢?散列表还有一个英文名叫...

2019-01-11 18:44:00 324

原创 多态:JVM是如何进行方法调用的

  在我们平时的工作学习中写java代码时,如果我们在同一个类中定义了两个方法名和参数类型都相同的方法时,编译器会直接报错给我们。还有在代码运行的时候,如果子类定义了一个与父类完全相同的方法的时候,父类的方法就会被覆盖,(也就是我们平时说的重写)。那么,jvm虚拟机是如何精确识别目标方法的。重载、重写与多态重载:方法名相同而参数类型不相同的方法之间的关系。重写:方法名相同并且参数类型也...

2019-01-07 18:36:00 320 1

原创 LeetCode 141、142环形链表

141题:首先,先看141题,这个题是比较初级也是比较经典的环形链表题:给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题?那么,什么是有环的链表呢:这个就是有环的链表题设中说,能否不使用额外空间解决此题,说明,最普通的方法就是用其他的数据结构解决这个问题,那么我们想把链表结点依次遍历放入哈希表中,然后遇到重复的结点说明是有环的,这就是利用了其他的额外空间...

2018-12-04 17:17:00 190

转载 (转载)rabbitmq与springboot的安装与集成

原文地址:https://segmentfault.com/a/1190000016991529一、前言RabbitMQ是一个开源的消息代理软件(面向消息的中间件),它的核心作用就是创建消息队列,异步接收和发送消息,MQ的全程是:Message Queue中文的意思是消息队列。<!--more-->1.1 使用场景削峰填谷:用于应对间歇性流量提升对于系统的“破坏”,...

2018-11-21 10:45:00 133

原创 Springboot(九).多文件上传下载文件(并将url存入数据库表中)

一.   文件上传这里我们使用request.getSession().getServletContext().getRealPath("/static")的方式来设置文件的存储路径,并存入数据库中request.getSession().getServletContext() 获取的是Servlet容器对象,相当于tomcat容器了。getRealPath("/") 获取实际路径,“/”...

2018-11-13 16:13:00 1879

原创 海量数据搜索---搜索引擎

   在我们平常的生活工作中,百度、谷歌这些搜索网站已经成为了我们受教解惑的学校,俗话说的好,有问题找度娘。那么百度是如何在海里数据中找到自己需要的数据呢,为什么他搜索的速度如此之快,我们都知道是因为百度的搜索引擎,那么搜索引擎到底是个什么东西呢?可能有的程序员会想到es,但是并不能代表搜索引擎,它只是其中的一种工具,不过这种工具确实好用,效率很高。  本文会向大家讲述搜索引擎的基本知识以...

2018-11-13 16:09:00 441

转载 (转载)java高并发:CAS无锁原理及广泛应用

版权声明:本文为博主原创文章,未经博主允许不得转载,转载请注明出处. 博主博客地址是 http://blog.csdn.net/liubenlong007 https://blog.csdn.net/fgyibupi/article/details/53761730前言在现在的互联网技术领域,用户流量越来越大,系统中并发量越来越大,大公司的日活动辄成百上千万。如何面对如此高的并发是当今互联...

2018-08-23 17:25:00 153

原创 netty实现客户端服务端心跳重连

前言:          公司的加密机调度系统一直使用的是http请求调度的方式去调度,但是会出现网络故障导致某个客户端或者服务端断线的情况,导致很多请求信息以及回执信息丢失的情况,接着我们抛弃了http的方式,改为Tcp的方式去建立客户端和服务器之间的连接,并且要去实现断线重连的功能,经过讨论后决定使用java中成熟的nio框架 – netty去解决这一系列的问题。1.       ne...

2018-08-15 17:55:00 3589

转载 转载:tcp详解

 转自:http://www.cnblogs.com/kzloser/articles/2582957.html首部格式图释:各个段位说明:源端口和目的端口:  各占 2 字节.端口是传输层与应用层的服务接口.传输层的复用和分用功能都要通过端口才能实现 序号:  占 4 字节.TCP 连接中传送的数据流中的每一个字节都编上一个序号.序号字段的值则指的是本报文段所发送的数据...

2018-08-14 18:38:00 136

原创 谈谈我对区块链的理解(基础篇)

      最近,区块链技术成为每个人耳渲目染的话题,甚至被一些人认为可以颠覆整个社会,可能是由于比特币的大涨,也有可能是因为国家政策的出行,各个国家都在为区块链招兵买马。如果一个人没有了解区块链、没有了解过比特币的话,可能会认为这个只是被炒起来的数字货币而已,对整个社会并没有什么价值可言,起初,我也保持着这样的态度。但是,真正了解了区块...

2018-07-16 19:43:00 4683 1

原创 java实现微信小程序服务端(登录)

微信小程序如今被广泛使用,微信小程序按照微信官网的定义来说就是:   微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验。   这就是微信小程序的魅力所在,有的时候我们不需要去下载过多的app,只要打开微信,就可以应用每一个服务,甚至连注册都变得简单起来,具有特别贴近人心的用户体验。   最近在做一个微信小程序的服务端,主要就是实现登录...

2018-07-13 11:54:00 3063

原创 Springboot(八):emoji表情保存到mysql出错的解决办法

今天,在前端的说明信息中输入emoji表情的时候,插入数据库会报错百度了一下,是因为mysql数据库的字符编码集不正确,utf8无法存入表情字符,只能将字符集改为utf8mb4才可以,然后我们执行sql去改变数据库使用SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'c...

2018-07-12 19:22:00 851

原创 springboot(七).springboot整合jedis实现redis缓存

我们在使用springboot搭建微服务的时候,在很多时候还是需要redis的高速缓存来缓存一些数据,存储一些高频率访问的数据,如果直接使用redis的话又比较麻烦,在这里,我们使用jedis来实现redis缓存来达到高效缓存的目的,接下来,让我们一起来使用jedis来实现redis缓存  1.在pom.xml文件中添加依赖<!-- jedis --> <dep...

2018-07-12 18:52:00 502

原创 springboot(六) Maven打包引入本地jar包

       最近在做项目的时候,有一些jar包不存在maven的依赖库中,所以需要自己引入本地jar包来达到需求,那么我们该如何去将本地的jar包引入springboot项目中去呢?  首先,我们将我们本地的jar包放入项目的lib目录中去,也可以自己选择所放的位置    然后在pom依赖中加入如下代码:  <dependency> <groupI...

2018-07-12 11:15:00 205

原创 springboot(五).如何在springboot项目中使用拦截器

在每个项目中,拦截器都是我们经常会去使用的东西,基本上任一一个项目都缺不了拦截器的使用。如日志记录、登录验证,session验证等,都需要拦截器来拦截URL请求,那springboot中的拦截器是如何去使用的呢,我们一起试试。首先,我们去创建一个名为LoginInterceptor的拦截器,来过滤请求,我们创建的拦截器要去实现HandlerInterceptor接口,然后定义我们的方法...

2018-07-09 18:28:00 1627

原创 springboot(四).配置FastJson自定义消息转化器

一.fastJson简介fastJson是阿里巴巴旗下的一个开源项目之一,顾名思义它专门用来做快速操作Json的序列化与反序列化的组件。它是目前json解析最快的开源组件没有之一!在这之前jaskJson是命名为快速操作json的工具,而当阿里巴巴的fastJson诞生后jaskjson就消声匿迹了,不过目前很多项目还在使用。今天,我们使用fastJson来配置消息转换器,过滤并修改返回的...

2018-07-09 17:58:00 1641

原创 springboot(三).springboot用最简单的方式整合mybatis

在众多的orm框架中,我使用最多的,最习惯的,也是目前使用最广泛的就是mybatis,接下来我们就去将springboot整合mybatis对于springboot整合mybatis有好几种方法,在这里我们使用最简单,最方便的一种整合方式在pom中添加以下依赖在application.properties 中增加以下配置#数据库连接本地spring.datasource.u...

2018-07-09 15:51:00 185

原创 springboot(一).初识springboot以及基本项目搭建

       由于新的项目需要搭建后台框架,之前的springmvc架构也使用多次,在我印象中springboot的微服务架构更轻量级更容易搭建,所以想去试试springboot的项目搭建,接下来,和大家分享一下初识springboot后对springboot的理解以及springboot的搭建过程一.什么是springboot?为什么要使用springboot?Spring Boot是由...

2018-07-05 15:05:00 292

原创 springboot(二).springboot整合logback用于日志输出

我们项目的基本框架已经完成,http请求已经可以访问,现在给我们的框架添加日志记录的功能并能将每天的记录记录到文件中去在这里,我们使用logback日志组件来进行项目的日志管理(一).logback简介Logback是由Log4j的创始人设计的另一种开源日志组件,当前分为以下几个模块:logback-core:是所有模块的基础logback-classic:它是log4j的一个...

2018-07-05 15:04:00 342

原创 java实现md5加密

       MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。一.使用md5加密密码我们先用java去实现md5加密密码,再去研究一下md5的原理以...

2018-06-15 18:10:00 584

原创 深入理解Spring(一):初识Spring

一. Spring介绍            Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使...

2018-04-23 18:58:00 261

原创 设计抗住千万级流量的架构思路

  随着互联网的发展,各项软件的客户量日益增多,当客户量达到一定峰值时,当数以万计的流量来临时,程序的顺利运行以及即时响应则显得尤为重要,就像双11那天的淘宝一样。那么,如何设计架构才能够抗住这千万级的流量。首先,要在我们架构设计的时候建立一些原则。  1.实现高并发  服务拆分:将整个项目拆分成多个子项目或者模块,分而治之,将项目进行水平扩展。  服务化:解决服务调用复杂之后的服...

2018-04-15 01:49:00 317

原创 分布式服务动态上下线感知

      首先,我们要从解决问题的角度得知分布式服务的由来,从单机服务到分布式服务经历了哪些过程      起初,服务是比较单一的,在一个工程包之中会包含所有的模块,但随着互联网的快速发展,客户流量的增多,点击量数据量的增多,导致对架构方面的冲击较大,想要在用户量和数据量较大的情况下做到即时相应的话,就需要去提升后端架构的性能。早期我们会去提升服务器硬件设备,但是还是无法达到预期的效果,只能...

2018-04-11 17:48:00 551

空空如也

空空如也

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

TA关注的人

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