自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 java中文分词算法

我想只要是学过数据库的孩纸,不管是mysql,还是sqlsever,一提到查找,本能的想到的便是like关键字,其实去转盘网(分类模式)之前也是采用这种算法,但我可以告诉大家一个很不幸的事情,like匹配其实会浪费大量的有用资源,原因这里不说了请自己想一想,我们还是直接摆事实验证。   现在用去转盘网搜:hello 找个单词,如下:   http://www.quzhuanpan.com/sour...

2018-04-13 09:45:22 2261

原创 SpringBoot最最最常用的注解梳理

一、注解(annotations)列表@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。@Configuration等同于spring的XML配置文件;使用Java代码可以检查类型安全。@EnableAutoConfiguration自动配置。@Compone...

2021-01-18 14:05:37 176

转载 Java实现简单的RPC框架

Java实现简单的RPC框架一、RPC简介RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议。它允许像调用本地服务一样调用远程服务。它可以有不同的实现方式。如RMI(远程方法调用)、Hessian、Http invoker等。另外,RPC是与语言无关的。 RPC示意图如上图所示,假设Computer1在调用sayHi()方法,对于Computer1而言调用sayHi()方法就像调用本地方法一样,调用 –>返回。但从后续调用可以...

2021-01-11 17:34:52 740

转载 超详细的SpringCloud底层原理

SpringCloud框架针对这个架构图我分层介绍一下:1、是web服务器的选型,这个我选择的是nginx+keepalived,haproxy也是一个选择,但是haproxy在反向代理处理跨域访问的时候问题很多。所以我们nginx有些地方做了keep-alive模式处理,减少了三次握手的次数,提高了连接效率。keepalived做nginx的负载,虚拟一个vip对外,两个nginx做高可用,nginx本身反向代理zuul集群。2、api gateway,这里的zuul很多人诟病,说是速度慢推荐直接

2020-11-06 16:52:47 1601

转载 springboot整合flowable(工作流)

springboot整合flowable(工作流)简介Flowable 适用于开发人员,系统管理员和业务用户的紧凑且高效的工作流程和业务流程管理(BPM)平台。Flowable的发布包里包含了大部分源码,以JAR文件方式提供。Flowable的源码也可以通过以下链接获得: https://github.com/flowable/flowable-engine准备工作pom.xml jar引入: <flowable.version>6.3.0</flowable.version&g

2020-11-06 16:14:35 3335

转载 Excel导入导出之easyexcel

环境搭建 读取excel文件 小于1000行数据 默认读取 指定读取 大于1000行数据 默认读取 指定读取 导出excle 单个Sheet导出 无模型映射导出 模型映射导出 多个Sheet导出 工具类 测试类环境搭建easyexcel 依赖(必须) springboot (不是必须) lombok (不是必须)...

2020-04-01 14:40:45 649

原创 JAVA导出数据到excel

导出成csv格式大数据量的导出成csv格式分为以下几步:1.首先引入需要的jar包 一下是我maven的配置方式 1 2 3 4 5 6 7 8 9 10 <dependency> <groupId>org.mvel</groupId...

2020-04-01 14:13:03 113

原创 Java的三种代理模式

1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明...

2019-08-13 16:03:34 109

转载 关于redisson锁的使用和理解

对于分布式锁的要求互斥性:分布式锁需要保证在不同节点的不同线程的互斥。这是最根本的。可重入性:同一个节点上的同一个线程如果获取了锁之后也可以再次获取这个锁。锁超时:和本地锁一样支持锁超时,防止死锁。高可用:加锁和解锁需要高效,同时也需要保证高可用防止分布式锁失效,可以增加降级。支持阻塞和非阻塞:和 ReentrantLock 一样支持 lock 和 trylock 以及 tryLock(...

2019-08-13 15:50:12 1420

原创 Spring Boot Cache使用与整合

一:Spring缓存抽象#Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们开发; Cache接口为缓存的组件规范定义,包含缓存的各种操作集合; Cache接口下Spring提供了各...

2019-08-13 15:45:39 92

原创 选择排序、冒泡排序、插入排序、快速排序、希尔排序、归并排序和堆排序

public class ArraySort { /** * 选择排序<br/> * <li>在未排序序列中找到最小元素,存放到排序序列的起始位置</li> * <li>再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。</li> * <li>以此类推,直到所有元素均...

2019-08-13 15:42:28 111

原创 Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 7.x

[error] ./client/components/TimeLine/TimeLine.scssModule build failed: Error: Missing binding /usr/local/yapi/vendors/node_modules/node-sass/vendor/linux-x64-51/binding.nodeNode Sass could not find...

2019-05-10 09:27:01 859

转载 Redisson分布式锁实现

概述分布式系统有一个著名的理论CAP,指在一个分布式系统中,最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。所以在设计系统时,往往需要权衡,在CAP中作选择。当然,这个理论也并不一定完美,不同系统对CAP的要求级别不一样,选择需要考虑方方面面。在微服务系统中,一个请求存在多级跨服务调用...

2019-02-27 15:00:13 252

转载 Java并发编程:volatile关键字解析

   volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我...

2019-02-26 16:06:38 130

原创 Spring Cloud 入门教程(六): 用声明式REST客户端Feign调用远端HTTP服务

首先简单解释一下什么是声明式实现?要做一件事, 需要知道三个要素,where, what, how。即在哪里( where)用什么办法(how)做什么(what)。什么时候做(when)我们纳入how的范畴。1)编程式实现: 每一个要素(where,what,how)都需要用具体代码实现来表示。传统的方式一般都是编程式实现,业务开发者需要关心每一处逻辑2)声明式实现: 只需要声明在哪里...

2019-02-26 16:06:13 155

转载 HashMap实现原理及源码分析

哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。目录一、什么是哈希表二、HashMa...

2019-02-26 16:05:02 280

原创 Spring Cloud 入门教程(五): Ribbon实现客户端的负载均衡

接上节,假如我们的Hello world服务的访问量剧增,用一个服务已经无法承载, 我们可以把Hello World服务做成一个集群。 很简单,我们只需要复制Hello world服务,同时将原来的端口8762修改为8763。然后启动这两个Spring Boot应用, 就可以得到两个Hello World服务。这两个Hello world都注册到了eureka服务中心。这时候再访问http:/...

2019-02-15 16:47:40 140

原创 Spring Cloud 入门教程(四): 分布式环境下自动发现配置服务

前一章, 我们的Hello world应用服务,通过配置服务器Config Server获取到了我们配置的hello信息“hello world”. 但自己的配置文件中必须配置config server的URL(http://localhost:8888), 如果把config server搬到另外一个独立IP上, 那么作为一个client的hello world应用必须修改自己的bootstra...

2019-02-15 16:46:08 135

原创 Spring Cloud 入门教程(三): 配置自动刷新

之前讲的配置管理, 只有在应用启动时会读取到GIT的内容, 之后只要应用不重启,GIT中文件的修改,应用无法感知, 即使重启Config Server也不行。比如上一单元(Spring Cloud 入门教程(二): 配置管理)中的Hello World 应用,手动更新GIT中配置文件config-client-dev.properties的内容(别忘了用GIT push到服务器)hell...

2019-02-15 16:44:44 281

原创 Spring Cloud 入门教程(二): 配置管理

使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的...

2019-02-15 16:43:24 136

原创 Spring Cloud 入门教程(一): 服务注册

1.  什么是Spring Cloud?Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,主节点选举, 分布式session, 集群状态)。协调分布式环境中各个系统,为各类服务提供模板性配置。使用Spring Cloud, 开发人员可以搭建实现了这些样板的应用,并且在任何分布式环境下都...

2019-02-15 16:41:21 104

转载 ConcurrentHashMap源码分析(1.8)

0、说明 ※为了分析源码的时候方便调试,把ConcurrentHashMap的源码放在本地了,名字改为了ConcurrentHashMapDebug由于源码中的unsafe有很多限制,不能直接在本地使用,所以,在源码的最后面的静态代码块处修改了U的初始化方法。private static final sun.misc.Unsafe U;static{ U = getUn...

2019-02-15 16:32:01 1076

转载 ConcurrentHashMap底层实现原理(JDK1.8)源码分析

ConcurrentHashMap数据结构  ConcurrentHashMap相比HashMap而言,是多线程安全的,其底层数据与HashMap的数据结构相同,数据结构如下:    说明:ConcurrentHashMap的数据结构(数组+链表+红黑树),桶中的结构可能是链表,也可能是红黑树,红黑树是为了提高查找效率。ConcurrentHashMap源码分析  1、类的继承...

2019-02-15 16:29:08 339

转载 NIO原理剖析与Netty初步----浅谈高性能服务器开发(一)

在博主不长的工作经历中,NIO用的并不多,由于使用原生的Java NIO编程的复杂性,大多数时候我们会选择Netty,mina等开源框架,但理解NIO的原理就不重要了吗?恰恰相反,理解NIO底层机制是理解这一切的基础,由此我总结一下当初学习NIO时的笔记,以便后续复习。     以下是我理解的Java原生NIO开发大致流程:           上图大致描述的是服务端的NIO操作。...

2019-02-15 16:24:28 158

原创 JDK源码之AQS源码剖析

AbstractQueuedSynchronizer(AQS)是JDK中实现并发编程的核心,平时我们工作中经常用到的ReentrantLock,CountDownLatch等都是基于它来实现的。 AQS类中维护了一个双向链表(FIFO队列), 如下图所示:队列中的每个元素都用一个Node表示,我们可以看到,Node类中有几个静态常量表示的状态:复制代码static final cla...

2019-02-15 16:16:08 160

转载 Java并发之AQS详解

一、概述  谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!  类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。  以下是本文的目录大...

2019-02-15 16:11:27 104

原创 springboot启动源码详解

我们开发任何一个Spring Boot项目,都会用到如下的启动类 1 2 3 4 5 6 @SpringBootApplication publicclassApplication { publicstaticvoidmain(String[] args) { Spri...

2018-04-13 15:57:44 255

原创 maven全局配置文件settings.xml详解

maven全局配置文件settings.xml详解概要settings.xml有什么用?如果在Eclipse中使用过Maven插件,想必会有这个经验:配置settings.xml文件的路径。settings.xml文件是干什么的,为什么要配置它呢?从settings.xml的文件名就可以看出,它是用来设置maven参数的配置文件。并且,settings.xml是maven的全局配置...

2018-04-13 10:00:26 151

转载 Java中文分词组件 - word分词

Java分布式中文分词组件 - word分词word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。能通过自定义配置文件来改变组件行为,能自定义用户词库、自动检测词库变化、支持大规模分布式环境,能灵活指定多种分词算法,能使用refine功能灵活控制分词结...

2018-04-13 09:48:05 395

转载 中文分词算法总结

什么是中文分词众所周知,英文是以 词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来 才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学

2018-04-13 09:39:36 436

空空如也

空空如也

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

TA关注的人

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