自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tianyaleixiaowu的专栏

世界上有10种人,一种懂2进制,一种不懂2进制

  • 博客(294)
  • 资源 (23)
  • 问答 (7)
  • 收藏
  • 关注

原创 ElasticsearchTemplate的详细使用,完成多条件查询、匹配度查询等

ElasticsearchTemplate是Spring对ES的java api进行的封装,提供了大量的相关的类来完成各种各样的查询。该篇主要是讲ElasticsearchTemplate的详细使用方法,条件查询、模糊查询等

2017-09-13 14:19:05 85460 56

原创 zuul动态配置路由规则,从DB读取

前面已经讲过zuul在application.yml里配置路由规则,将用户请求分发至不同微服务的例子。zuul作为一个网关,是用户请求的入口,担当鉴权、转发的重任,理应保持高可用性和具备动态配置的能力。我画了一个实际中可能使用的配置框架,如图。当用户发起请求后,首先通过并发能力强、能承担更多用户请求的负载均衡器进行第一步的负载均衡,将大量的请求分发至多个网关服务。这是分布式的第一步。如果是使用do

2017-09-11 15:34:58 21787 20

原创 Jpa配置实体类创建时间更新时间自动赋值,@CreateDate,@LastModifiedDate

操作数据库映射实体类时,通常需要记录createTime和updateTime,如果每个对象新增或修改去都去手工操作创建时间、更新时间,会显得比较繁琐。Springboot jpa提供了自动填充这两个字段的功能,简单配置一下即可。@CreatedDate、@LastModifiedDate、@CreatedBy、@LastModifiedBy前两个注解就是起这个作用的,后两个是设置修改人和创建人的

2017-09-11 13:14:33 23940 2

原创 zuul网关Filter处理流程及异常处理

上一篇介绍了java网关Zuul的简单使用,进行请求路由转发和过滤器的基本操作。这一篇主要看一下它的过滤器Filter的工作流程及异常处理。首先看到Filter的四个方法,FilterType,filterOrder,shouldFilter,run。filterType代表过滤类型PRE: 该类型的filters在Request routing到源web-service之前执行。用来实现Auth

2017-09-08 14:25:30 50648 7

原创 独立使用zuul网关分发不同服务的请求、权限控制,非SpringCloud

网关api Gateway的重要性不言而喻,网关负责统一接收所有请求,然后根据不同的规则进行转发到不同的服务。使用网关能够统一的管理请求日志、进行权限控制、过滤等,这样就能避免在每个单体应用中做重复的工作。这一篇主要是讲zuul的独立使用,就是只作为一个独立的项目进行请求转发,而不关联SpringCloud的那一堆Eureka、Ribbon等,因为很多时候我们的项目并不都是基于springclou

2017-09-08 10:44:49 42597 37

原创 SpringBoot拦截全局异常并发送邮件给指定邮箱

主要是看一下Springboot中发送邮件的方法,至于拦截Springboot全局异常之前的文章中有。一 发送邮件在Springboot中发送邮件非常简单。pom.xml引入maven依赖 org.springframework.boot spring-boot-starter-mail 在application.yml里设置发信人的账号、密码spring: mail:

2017-09-06 16:50:37 5991 5

原创 关于处理某一个事件需要关联多个事件或表的情况下,一些思考

这个场景是非常常见,毕竟纯粹的单表的CRUD比较少,大部分时候都是操作了某个表、某个业务,然后需要多个表进行更改。譬如社交信息流类的,我发了一篇帖子,首先UserPost表需要添加一条数据,然后可能需要给关注我的人的信息流里也插一条数据,再做一些推送类的事件等等可能要很多步骤。像电商类的下单之类的操作关联的表就更多了。这里必然会涉及的问题就是业务代码耦合,总不能我添加了一篇帖子,然后就在帖子保存之...

2017-09-06 12:42:50 1292

原创 Springboot项目使用aop切面保存详细日志到ELK日志平台

上一篇讲过了将Springboot项目中logback日志插入到ELK日志平台,它只是个示例。这一篇来看一下实际使用中,我们应该怎样通过aop切面,拦截所有请求日志插入到ELK日志系统。同时,由于往往我们有很多个服务,都需要记录日志,为每个服务都搭建一个ELK并不现实,所以我们采用集中化管理日志,将所有日志都插到同一个ELK中。这样又会遇到另一个问题,就是ES中的Index如果只有一个,那么所有日

2017-08-08 17:20:21 10490 3

转载 Java实现哈夫曼编码和解码

最近无意中想到关于api返回值加密的问题,譬如我们的api需要返回一些比较敏感或者重要不想让截获者得到的信息,像如果是做原创图文的,文章明文返回的话则有可能被抓包者窃取。关于请求时加密的方式比较多,像常见的如阿里某api就是根据所有参数ascii码升序排序并加盐加密,这样能避免黑客篡改请求值。那关于返回值加密的,我觉得用哈夫曼编码就不错。大家都知道哈夫曼是用来做压缩解压的算法,通过哈夫曼压缩后的数

2017-08-08 10:06:56 4263

原创 Springboot项目搭配ELK日志平台

Springboot整合ELK日志平台,logback日志输出到logstash

2017-08-03 15:46:19 8754

原创 使用kibana来进行ElasticSearch的信息查询检索

大家经常会听到使用ELK搭建日志管理平台、完成日志聚合检索的功能,那么这个平台到底是个什么概念,怎么搭建,怎么使用呢?ELK包括ElasticSearch(数据存储、快速查询)、logstash(日志搜集)、kibana(展示ElasticSearch数据的图形界面)。kibana是一个图形界面,可以在上面条件检索存储在ElasticSearch里数据,相当于提供了ES的可视化操作管理器。大概长下

2017-08-03 12:05:40 65754 4

原创 使用DaoCloud持续构建docker镜像,自动化部署

我们学会了在主机上安装部署docker,也学会了构建自己的docker镜像和容器,启停也都会用了,下一步就需要持续构建发布docker的技能了。我们希望能在代码提交后,有个远程服务能自动开始构建项目、拉取相应的镜像,执行对应的Dockerfile命令,最终给我们生成一个可以直接启动的contrainer容器,之后我们就可以将该容器发布到任何主机了。现在有一些第三方的docker管理平台能提供上面的

2017-07-31 14:47:38 7869 5

原创 使用ElasticSearch完成百万级数据查询附近的人功能

上一篇文章介绍了ElasticSearch使用Repository和ElasticSearchTemplate完成构建复杂查询条件,简单介绍了ElasticSearch使用地理位置的功能。这一篇我们来看一下使用ElasticSearch完成大数据量查询附近的人功能,搜索N米范围的内的数据。准备环境本机测试使用了ElasticSearch最新版5.5.1,SpringBoot1.5.4,spring

2017-07-27 11:41:19 21594 22

原创 ElasticSearchRepository和ElasticSearchTemplate的使用

Spring-data-elasticsearch,ElasticSearchTemplate使用,ElasticSearchRepository使用,ES的用法

2017-07-26 17:28:29 91747 24

原创 Springboot yml获取系统环境变量的值

注意,这里说的是获取系统环境变量的值,譬如Windows里配置的JAVA_HOME之类的,可以直接在Springboot的配置文件中获取。我们经常使用一些docker管理平台,如DaoCloud、rancher之类的,里面都可以配置环境变量,目的当然也就是供程序获取。使用环境变量的话,可以避免在application.yml里直接明文编写数据库密码、appkey之类的。用法很简单譬如我...

2017-07-24 14:00:02 61033 8

转载 Java中关于内存泄漏出现的原因以及如何避免内存泄漏

转账自:http://blog.csdn.net/wtt945482445/article/details/52483944Java 内存分配策略Java 程序运行时的内存分配策略有三种,分别是静态分配,栈式分配,和堆式分配,对应的,三种存储策略使用的内存空间主要分别是静态存储区(也称方法区)、栈区和堆区。静态存储区(方法区):主要存放静态数据、全局 static 数据和常量。这块内存在程序编译时

2017-07-24 10:06:52 2818

原创 看一遍就懂,详解java多线程——volatile

多线程一直以来都是面试必考点,而volatile、synchronized也是必问点,这里我试图用容易理解的方式来解释一下volatile。了解volatile之前,先来看一下它的最大特点和作用:1

2017-07-21 13:33:56 1941 1

转载 贫血,充血模型的解释以及一些经验

关于在项目中的分层问题争论已久,过大的domain object或者过大的Service都存在较大的不可避免的问题,尤其是Service层在协调多个不同的domain object的持久化时代码更是丑陋,那么引入怎样的模式来改善现状?网上找到了这篇还是不错的。转载自:http://kb.cnblogs.com/page/520743/为了补大家的遗憾,在此总结下ROBBIN的领域模型的一些观点和大

2017-07-19 16:51:57 2336 1

原创 Java并发编程之CountDownLatch,CyclicBarrier实现一组线程相互等待、唤醒

java多线程应用场景不少,有时自己编写代码又不太容易实现,好在concurrent包提供了不少实现类,还有google的guava包更是提供了一些最佳实践。Java并发编程之CountDownLatch,CyclicBarrier

2017-07-18 17:19:55 2955 2

原创 mac和linux下使用Docker,部署SpringBoot项目到docker

主要是看一下如何在linux及mac上安装docker,创建docker镜像,部署SpringBoot项目到docker,并借助于DaoCloud进行docker镜像下载加速等。我用的电脑是mac,本身并不支持docker,需要安装Docker ToolBox才能使用Docker。由于大部分情况下线上服务器都是linux,所以这里先以linux下Docker的使用为例,后面再讲在mac上部署Doc

2017-07-14 15:38:35 8770

原创 使用RateLimiter完成简单的大流量限流,抢购秒杀限流

RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率。通常可应用于抢购限流防止冲垮系统;限制某接口、服务单位时间内的访问量,譬如一些第三方服务会对用户访问量进行限制;限制网速,单位时间内只允许上传下载多少字节等。下面来看一些简单的实践,需要先引入guava的maven依赖。一 有很多任务,但希望每秒

2017-07-11 17:54:39 12131 1

转载 限流算法之漏桶算法、令牌桶算法

昨天CodeReview的时候看到同时使用RateLimiter这个类用作QPS访问限制.学习一下这个类.RateLimiter是Guava的concurrent包下的一个用于限制访问频率的类.1.限流每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性.即接口也需要安装上保险丝,以防止非预期的请求对系统

2017-07-11 11:03:59 60444 7

转载 限流之令牌桶算法——RateLimiter官方文档

昨天CodeReview的时候看到同时使用RateLimiter这个类用作QPS访问限制.学习一下这个类.RateLimiter是Guava的concurrent包下的一个用于限制访问频率的类.1.限流每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性.即接口也需要安装上保险丝,以防止非预期的请求对系统

2017-07-11 11:01:06 5155

原创 BloomFilter布隆过滤器使用

从上一篇可以得知,BloomFilter的关键在于hash算法的设定和bit数组的大小确定,通过权衡得到一个错误概率可以接受的结果。算法比较复杂,也不是我们研究的范畴,我们直接使用已有的实现。google的guava包中提供了BloomFilter类,我们直接使用它来进行一下简单的测试。新建一个maven工程,引入guava包 com.go

2017-07-07 17:49:57 21751 8

原创 使用BloomFilter布隆过滤器解决缓存击穿、垃圾邮件识别、集合判重

Bloom Filter是一个占用空间很小、效率很高的随机数据结构,它由一个bit数组和一组Hash算法构成。可用于判断一个元素是否在一个集合中,查询效率很高(1-N,最优能逼近于1)。在很多场景下,我们都需要一个能迅速判断一个元素是否在一个集合中。譬如:网页爬虫对URL的去重,避免爬取相同的URL地址;反垃圾邮件,从数十亿个垃圾邮件列表中判断某邮箱是否垃圾邮箱(同理,垃圾短信);

2017-07-07 16:23:03 23994 8

原创 使用redis计数来控制单位时间内对某接口的访问量,防止刷验证码接口之类的

使用自定义注解的方式,在需要被限制访问频率的方法上加注解即可控制。看实现方式,基于springboot,aop,redis。新建Springboot工程,引入redis,aop。创建注解package com.tianyalei.annotation;import org.springframework.core.Ordered;import org.springframew

2017-07-06 15:01:09 9840 8

原创 2 秒杀系统模拟基础实现,使用Redis实现

这一篇,我们来使用redis进行数据存储。新建一个redis的service实现类package com.tianyalei.service;import com.tianyalei.model.GoodInfo;import org.springframework.beans.factory.annotation.Autowired;import org.springframew

2017-07-06 11:37:32 1938

原创 1 秒杀系统模拟基础实现,使用DB实现

本文根据动脑学院的一节类似的课程,改编实现。分别使用DB和redis来完成。隔离的解释业务隔离:将秒杀业务独立出来,尽量不与其他业务关联,以减少对其他业务的依赖性。譬如秒杀业务只保留用户id,商品id,数量等重要属性,通过中间件发送给业务系统,完成后续的处理。系统隔离:将秒杀业务单独部署,以减少对其他业务服务器的压力。数据隔离:由于秒杀对DB的压力很大,将DB单独部

2017-07-06 11:27:20 3020 1

转载 分布式锁 Java常用技术方案

前言:      由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题。所以自己结合实际工作中的一些经验和网上看到的一些资料,做一个讲解和总结。希望这篇文章可以方便自己以后查阅,同时要是能帮助到他人那也是很好的。 ===========================================

2017-06-30 16:31:02 944

原创 4 手写实现SpringMVC,第四节:匹配用户请求、执行映射方法

在上一篇我们已经完成了配置的url到方法的映射,并且完成了method的各参数的注解、参数名、类型等的映射配置。这一篇就很简单了,就是通过获取request的请求地址和参数,和已经加载好的映射进行比对,如果匹配上了就执行对应的方法。直接上代码:@Override protected void doPost(HttpServletRequest req, HttpServletR

2017-06-30 16:19:19 2114 11

原创 3 手写实现SpringMVC,第三节:通过反射给属性和参数注入值

在上一篇已经完成了读取beanName->Object映射关系的功能,这一篇就是把读取到的映射注入到属性中。在WebController里定义了需要被Autowired的两个Service,myQueryService和modifyService,下面来给他们赋值。通过反射给属性赋值

2017-06-30 12:11:18 4860 3

原创 2 手写实现SpringMVC,第二节:自定义注解及反射赋值

还是回到最终要实现的效果。可以发现,这里面使用了大量的自定义注解,并且还有autuwire的属性也需要被赋值(Spring的IOC功能)。先来创建自定义注解注意,根据不同的注解使用的范围来定义@Target,譬如Controller,Service能注解到类,RequestMapping能注解到类和方法,AutoWired只能注解到属性。Autowired/**

2017-06-28 17:11:41 6417

原创 1 手写实现SpringMVC,第一节:项目基本结构

SpringMVC是当今最流行的web框架之一,下面就以如何手工实现一个类似SpringMVC的框架,来看一下SpringMVC是如何工作的。最终目标是达到如下类似于SpringMVC的项目呈现@Controller@RequestMapping("/web")public class MyAction { @Autowired QueryService querySe

2017-06-28 14:42:03 6634

转载 Springboot使用定时任务,Spring Schedule

定时任务的实现方式有多种,例如JDK自带的Timer+TimerTask方式,spring 3.0以后的调度任务(Scheduled Task),Quartz等。Timer+TimerTask是最基本的解决方案,但是比较远古了,这里不再讨论。Spring自带的Scheduled Task是一个轻量级的定时任务调度器,支持固定时间(支持cron表达式)和固定时间间隔调度任务,支持线程池管

2017-06-23 14:53:41 6160 2

原创 SpringBoot中MongoDB注解概念及使用

spring-data-mongodb主要有以下注解@Id主键,不可重复,自带索引,可以在定义的列名上标注,需要自己生成并维护不重复的约束。如果自己不设置@Id主键,mongo会自动生成一个唯一主键,并且插入时效率远高于自己设置主键。原因可参考上一篇mongo和mysql的性能对比。 在实际业务中不建议自己设置主键,应交给mongo自己生成,自己可以设置一个业务id,如int型字段,用自己设置的业

2017-06-21 15:03:20 49252 11

转载 MongoDB与MySQL的插入、查询性能测试

转载自:http://blog.csdn.net/clh604/article/details/196088691.1  MongoDB的简单介绍在当今的数据库市场上,MySQL无疑是占有一席之地的。作为一个开源的关系型数据库,mysql被大量应用在各大网站后台中,承担着信息存储的重要作用。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为oracle旗下

2017-06-20 17:43:40 10251

原创 SpringBoot中logback日志保存到mongoDB

前面提到过logback输出日志的多种方式,这一篇看一下自定义Appender,将logback输出的日志保存到mongo中。自定义Appender非常简单,继承一下AppenderBase类即可。可以看到有个AppenderBase,有个UnsynchronizedAppenderBase,还有个AsyncAppenderBase继承了UnsynchronizedAppender

2017-06-16 15:47:47 8922 15

转载 Logback各Appender详解及配置

转载自:http://blog.csdn.net/doraemon_wu/article/details/51972261Logback将执行日志事件输出的组件称为Appender,实现的Appender必须继承 ch.qos.logback.core.Appender 接口接口如下:package ch.qos.logback.core;import ch

2017-06-16 12:07:43 49585 2

原创 springboot中使用logback

Springboot默认集成的就是logback,logback相对来说是优秀于log4j的,log4j2也是参考了logback的设计。本篇就是来看看如何使用logback。新建一个Springboot项目,勾选web就OK了,项目会自动集成logback。控制台日志写一个controller测试一下:import org.slf4j.Logger;import org.slf

2017-06-16 12:03:39 23774 1

原创 SpringBoot中Mongo查询条件是集合中的字段的处理

MongoRepositoryMongoRepository和普通的Repository一样,继承PagingAndSortingRepository,支持分页和普通的CRUD。之前已经提过Jpa的一些基本操作,下面讲几个 稍微特殊点的。List<Person> findByAddressZipCode(ZipCode zipCode);List<Person> findByEmailAddres

2017-06-15 13:24:21 11355

seata-server-0.8.1.zip

seata-server-0.8.1.zip压缩包,GitHub的太慢了,下载下来方便大家用

2019-10-16

nacos-server-1.1.0.zip压缩包,下载快

nacos-server-1.1.0.zip,GitHub下载比较慢,这个快一些。大家注意。

2019-08-02

Disruptor demo

Disruptor简单使用。完成多线程间并行、等待、先后执行等功能。

2018-04-02

手写简易版SpringMVC,探索SpringMVC原理

手写SpringMVC,教程请查看个人博客

2017-06-30

仿今日头条文章上拉看评论功能(仿淘宝详情页上拉)

仿今日头条文章上拉看评论功能,今日头条的文章拉到下面时有个阻尼效果,再拉就进入了评论页面。就是这个功能

2016-01-20

教学评教系统

jsp mysql开发的教学评教系统,学生老师管理员三种身份,内容齐全,稍微配下数据库就能跑起来,内有说明,功能比较齐全

2012-12-18

网络求职招聘系统的设计与实现

网络求职招聘系统的设计与实现,别人的毕业设计,带论文和答辩稿,jsp,mysql数据库,内容齐全

2012-12-18

求职招聘系统

别人写的求职招聘系统,功能挺全的,jsp,mysql数据库,带论文,看着还不错,发出来学习一下

2012-12-18

j2ee邮件收发系统

基于j2ee的邮件收发系统,jsp,mysql数据库,带系统详细配置和毕业论文,可供学习之用

2012-12-18

java编的人机对战5子棋

java编的人机对战5子棋,AI很高,源码提供,多看看就看懂了,用SWING编的

2012-11-23

java编程基础教程

详细的java编程教程,讲解的详细易懂,知识面全面覆盖,学习java入门的优秀教程

2012-11-10

java反编译工具jad

java的反编译工具,jad能反编译所有的.class文件,反编译为java文件,可阅读的,连注释都能编译出来。也能完整的按照.class文件的目录结构来反编译。具体用法去百度搜下就知道了。实乃反编译别人代码的利器

2012-11-10

超级玛丽源码加文档讲解

超级玛丽制作完整源代码加技术讲解,各个动画的讲解,C++制作,代码完整细致,学习C++动画的好素材

2012-11-07

中国象棋源代码

中国象棋源代码完整版,解压后点exe直接就能下象棋,源码都在里面,AI很高,一般人还下不过电脑,C++学习的好素材,算法经典

2012-11-07

外文翻译,文献综述

计算机毕业论文的外文翻译,中文英文都有,翻译的水平一般般,应付一下论文还是可以的

2012-11-07

音乐播放器java制作

java制作的音乐播放器,已编译好,直接运行jar包即可。界面美观,带lrc歌词显示,网络资源链接等,功能强大。如果要源代码可以下载我的另一个源代码资源,或者直接用jad反编译即可

2012-11-07

java音乐播放器

完整的音乐播放器的源代码,java制作,功能完整,带lrc歌词显示,网络资源等,界面美观,适用于windows和linux系统。编译成jar包后运行即可

2012-11-07

Java反编译工具

Java反编译工具,实现了eclipse的高亮着色功能,多文件标签浏览

2012-11-07

C语言经典算法100例

C语言经典算法100例,很不错的C语言入门算法,很简单又很实用,下载看看吧

2012-11-07

java课件学习java的必备资料

java课件学java的课件啊啊啊java课件学习java的必备资料java课件学习java的必备资料

2010-12-23

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

TA关注的人

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