自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

驰骋翱翔

代码人生,人生如代码

  • 博客(180)
  • 资源 (11)
  • 收藏
  • 关注

原创 Spring使用POI实现Excel导入导出

本次项目实践基于SSM框架,简单封装了Excel批量导入导出功能,从实战角度,详细介绍了项目excel导入导出详细实现过程

2017-04-13 18:13:57 26229 36

原创 SpringBoot集成原生rocketmq-client

RocketMq提供了原生maven包:rocketmq-client,SpringBoot利用注入的方式可以很好的集成Rocket原生maven包。本文通过自定义jar包的形式对rocketmq-client进行封装,这样便于后期对消息队列的统一控制,包括client升级,幂等处理,日志打印,灰度处理等等。...

2022-08-05 10:40:59 1826 1

原创 ThreadPoolExecutor 源码解读

线程池大家都不陌生,但每次谈起又有陌生的感觉,归根结底是因为对它了解的不够深入,所以本文希望通过源码阅读的方式带给大家更深入的理解。

2022-03-10 15:08:06 523

原创 全局异常处理:Assert+枚举+自定义异常

​业务开发过程中涉及大量的异常处理,通常采用@ControllerAdvice搭配@ExceptionHandler来处理各种异常,但是抛出异常的过程任然避免不了大量的if...else判断,刚好今天看到一篇文章(为什么不建议用try catch处理异常?)采用自定义Assert+枚举+自定义异常的方式优雅的解决了该问题,现整理实现思路:​...

2022-03-04 18:46:57 2371 2

原创 【项目中的设计模式】策略模式

设计模式意在解决功能开发中的共性问题,小编希望通过【项目里的设计模式】系列文章为大家解读项目中是如何应用设计模式解决实际问题的,同时欢迎各网友提出自己的见解,共同成长提高。

2022-01-23 22:53:34 535

原创 Springboot配置kafka无服务正常启动

SpringBoot配置kafka服务,如果服务异常会导致系统无法正常启动,解决该问题可以应用Spring的@Conditional注解为Kafka的配置类添加条件注解,具体实现如下:import org.springframework.beans.factory.support.BeanDefinitionRegistry;import org.springframework.context.annotation.Condition;import org.springframework.cont

2020-09-22 18:57:09 2111

原创 Atlas源码解读(1)图数据库JanusGraph

Aparche Atlas是Hadoop数据治理与元数据框架,提供了高效数据查询与分类系统,同时支持数据审计与数据血缘关系的建立。小编认为随大数据发展,数据结构与类型将越来越复杂,元数据治理与数据关系建立将是完成数据挖掘,实现人工智能的重要前提。 Atlas收集大数据组件元数据通过集成构件kafka传输至底层数据处理构件JanusGraph,J...

2019-09-04 15:11:02 3620 2

原创 BindingResult,MessageSource与@Valid实现接口封装

程序级别接口返回值,异常和Error通常需要统一编码,本文以项目应用为前提,应用Spring中集成的MessageSource实现国际化,并应用BingdingResult和@Valid实现属性统一校验。实现步骤如下: 1. 根据约定建立messages.properties,与application.properties同级。responseMsg.map....

2019-06-21 17:55:19 1051

原创 java并发--高效缓存

最近阅读《java并发编程实战》第5章中提到的一步步建立高效可伸缩缓存代码,若有所思。 缓存是最容易引起并发问题的场景之一,因为缓存的内容经常为可变状态,而作用域又相对较大。解决并发问题最简单粗暴的方式就是加锁,但这样会降低执行效率,多线程执行到同步代码区,只能等自己活得锁的情况下才能继续执行。我们看下代码: 作者先使用泛型技术提供了一个可伸缩的...

2019-04-11 21:16:45 387

原创 python 爬虫实践

       爬虫是python最重要的一个应用场景,用户可以根据自己的需要通过爬虫从网站上获取数据。       爬虫按照爬取内容可以氛围通用爬虫和聚焦爬虫两类,通用爬虫是获得网页本身即可,最典型的应用是百度快照;聚焦爬虫则是获取网页元素内容,解析后存储做分析使用。       爬虫世界主要解决以下几个问题:       1. 如何爬取?       爬虫具备三大特征:统一的ur...

2019-02-20 18:20:27 448

原创 人生苦短,我用python

        python是一种动态的,面向对象的解释型脚本语言,他的代码风格“优雅”,“明确”,“简单”;更重要的是它于现在流行的数据分析,人工智能扯上了联系,因此受到广大编程爱好者的喜爱。此时,大家戏称:“人生苦短,我用python”。目录【python特性】【python如何学】【数据爬虫】【数据分析】【机器学习】【总结】【python特性】      ...

2019-02-20 12:02:26 387

原创 秒杀业务设计

       秒杀因其流量大,并发高,成为最经典的业务之一,并发的根源在于数据库,通常采用缓存+队列的方式减少数据库访问,降低访问速度。有幸接触到一个秒杀业务代码,采用redis+mq的方式实现,现整理流程如下:      1. 数据库设计       秒杀业务的商品和订单单独设表,不要和正常商品和商品订单混合一起。表格数据足够少,才能保证查询和写入速度。订单表将用户id和商品id设置为唯...

2018-10-29 19:53:37 663 1

原创 Elasticsearch基本原理

       ES作为高度可伸缩的全文搜索与分析引擎,经常被用作大量数据的复杂搜索与分析业务。本博文以问题方式展示ES的基础特性,并简单介绍底层算法实现。       1. ES搜索速度为什么会特别快?       简单来说就是使用了使用了Lucene的倒排索引技术,首先以分词的形式将文档分解成单词+文章号【频率】+位置的形式,借用网上例子:              文章1的内容为:...

2018-10-09 16:10:40 837

原创 Spring Boot 运行原理

       Spring Boot的优势在于内置大量习惯性的配置,便于与第三方集成,即“习惯优于配置”,让项目能够快速运行起来,下面我们就探究下Spring Boot自动集成配置的原理。       Spring Boot关于自动配置的jar包位于spring-boot-autoconfigure-*.jar中,      spring boot的启动类中通常使用组合注解@Sprin...

2018-08-14 18:08:16 3438

原创 通过ssh访问linux文件

       使用java代码链接Linux服务器,无非使用SSH借用用户名密码进行链接,ganymed jar包提供了ssh的连接方式,下面我们借助Ambari开源项目代码,使用实例获得hadoop的一些配置文件并使用xml工具类进行解析。       pom文件内容,引入ganymed和文本处理类commons-lang3:<?xml version="1.0" encodin...

2018-07-17 12:03:00 1866

原创 zk+curator监听器机制实现分布式高可用

         curator是开源zookeeper客户端,与原生zk client相比,抽象层次更高,功能更加丰富。监听器在分布式中主要应用于服务注册,也是很多开源项目中客户端请求服务的必选技术应用,它不仅可以减少客户端无限for循环导致的服务端流量问题,通过zk的天生分布式能力提供高可用特性。         curator的监听采用3种Watcher机制来监听节点变化:    1. Pa...

2018-06-04 18:07:01 3689

原创 jersey与spring mvc通信报错:JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white

           大家熟悉的RESTful风格代码大都是httpClient,Jersey在开源项目中常用。           Jersey RESTful WebService框架是一个开源的、产品级别的JAVA框架,支持JAX-RS API并且是一个JAX-RS(JSR 311和 JSR 339)的参考实现           Jersey不仅仅是一个JAX-RS的参考实现,Jersey...

2018-05-31 19:16:09 19493 6

原创 装饰器模式应用--动态规则引擎

        装饰器模式应用于动态功能添加,将功能实现分布于不同的组件,代码扩展能力强。        先从网上寻找示例,为英雄联盟里面的英雄添加技能,类图如下:                左侧Hero与BindMonk就是简单的接口与实现类关系,右侧Skills代码:public class Skills implements Hero{ private Hero hero; ...

2018-04-16 19:11:19 2660 2

原创 spring-boot使用itext与jfree导出pdf报表

          报表在项目开发中经常使用,itext是生成报表的java组件,对比于之前使用的poi,itext侧重于pdf格式报表,并结合jfreechar制作图表,能够为用户多样化显示数据。本文结合项目应用案例使用进行描述。        首先用一张图来显示生成的报表样式:       1. pom文件导入itext引用 <!-- https://mvnrepository.com...

2018-02-11 14:20:13 4836 6

原创 ES 按照每隔几分钟,几小时,几天统计折线图

公司应用es有一段时间,今天接触了一个相对复杂的业务,针对每隔几分钟,几小时,几天进行统计折线图,具体逻辑如下图:        如图,系统必须要支持查询,每小时(每隔10分钟),每日(每隔4小时统计),每周(每隔1日),每月(每隔5日)进行统计,找到最大值显示到折线图上。        首先4张图像使用term聚合,每张图像上有两条线,表示cpu和内存,也属于term聚合方式,整

2018-01-08 14:49:42 7966 3

原创 hadoop 集群安装(三) hbase安装

继上篇博客介绍《hadoop集群安装(二)HA部署》后,本节介绍在hadoop集群安装HBase。       1.下载解压文件到制定目录: wget http://apache.fayea.com/hbase/stable/hbase-1.2.2-bin.tar.gz2、配置主要修改conf目录下的三个文件:hbase-env.sh、hbase-site.xml、re

2017-12-23 15:16:35 504 1

原创 hadoop 集群安装(二) HA部署

继上篇博客《Hadoop安装(一)zookeeper集群安装》后,我们已经搭建了hadoop所需要的免密码通信环境,以及高可用zookeeper集群,下面进入hadoop的高可用安装部署:      1. 下载解压hadoop文件 :      tar -zxvf hadoop-2.7.4.tar.gz      2. 配置hadoop-2.7.4/etc/hadoop

2017-12-22 10:21:28 388 1

原创 Hadoop安装(一)zookeeper集群安装

本教程使用liunx系统centos 7.0,hadoop2.7.4,zookeeper 3.4.10版本,jdk 1.8。hadoop部署4个节点,2个nameNode节点,4个dataNode节点。zookeeper部署3个节点。    一、修改4台服务器名称           1.vim/etc/sysconfig/network       ETWORKING=y

2017-12-22 09:59:09 507 1

原创 ES报错“Result window is too large”参悟大数据思维

ES在数据搜索上提供了强大支持,但其耗费内存代价也是巨大的。因为第一次使用ElasticSearch,在做分页的时候没有注意,分页插件显示了最后一页,今天做压测,单台es的数据达到2亿数据,每页显示20条的情况下需要500万页。      直接点第500万页的时候出现了“Result window is too large”报错,搜索一下网络,原来ES设置了默认最大窗口数量index.

2017-12-06 13:41:30 998 1

原创 springboot配置kafka与原生kafka配置

搭建kafka要注意版本问题,本教程使用的kafka版本是kafka_2.11-0.11.0.2.tgz;首先看下spring-boot链接kafka的使用。      1. 添加pom依赖 org.springframework.boot spring-boot-starter-web 1.5.8.RELEASE--> org.apache.kafka kafka

2017-12-06 13:15:33 25943 8

原创 方便快捷的HTTP匹配

Http中常用到添加白名单,现在的业务是针对每一个ip配置不同的匹配规则来达到权限控制,这样,针对同一个ip在不能出现重复规则。       因为用户输入的内容是复杂的,允许单个输入ip,也允许输入ip地址段,因此,需要提供一个工具类来匹配该ip是否已经存在。      整体思想,讲用户输入的所有ip和ip段放入list集合中,在工具类调用时,将单个ip存放入list中,地

2017-12-05 09:59:11 457 1

原创 Hadoop整体感知

认识一门新技术首先从该技术解决什么问题开始,探讨该技术为解决问题提供了什么特性,是如何实现该特性的,最后探讨在真是环境的应用。       1. 为什么会有hadoop?        随着公司业务发展,数据会逐渐增多,格式也越来越复杂,而这些数据是存在潜在价值的,当数据量达到P级别时,传统数据库就会在存储和计算的平衡上趋于瓶颈。hadoop就是为解决该类问题而诞生的。

2017-10-21 17:17:41 447 2

原创 2017年年度总结

转眼一年又过去了,勤奋的程序猿在今年的奋斗史上又留下了光辉的一笔!仅以简陋的笔录记录下自己的成长旅程。                  【项目】        作为程序猿,项目在我们的生活中扮演着举足轻重的角色,尽管大多数我是作为开发者的角色,但也经常站在管理者的角读思考问题:       1.  要善于使用工具,从开始建项,到数据库设计,产品设计,产品实现,后期

2017-08-28 11:48:21 1063 20

原创 httpclient学习与短信应用实践

Http协议是在web开发中用到最多的协议了!访问我们发布的web服务都是通过js显式进行访问,但有时候为了访问安全,我们不能暴露访问的url地址及其登录信息,这时候,通过后台来实现post和get请求则是必须的了,最常见的应用就是短信发送,邮件服务等。       首先练习一下client的使用://上传文件到指定url地址 public static String doUpl

2017-08-24 10:59:48 473 8

原创 过滤器实现单一用户登录

单一系统的登录要保证同一时间内不允许pc,app,微信同时登录,在一个时间内只保留最后一次登录状态。这样的设计是我们容易忽略的。下面通过过滤器的方式进行实现:       首先在web.xml文件中添加: LoginFilter com.test.filter.LoginFilter LoginFilter /ssl/*

2017-08-23 20:52:03 972 5

原创 ActiveMQ支持协议

上节提到ActiveMQ支持多种协议,下面分析一下,ActiveMQ各个协议的特点以及该协议在什么情况下使用,使用所应用的接口。    常见的协议配置信息:     1. TCP协议:TCP协议保证broker与client的高稳定性通信。使用openwire序列化字节流,促使网络上的传输效率和数据快速交互。应用接口为16161 

2017-07-31 21:21:35 1508 8

原创 从ActiveMQ认识JMS

随着分布式系统的规模和复杂度提高,往往会出现如下问题:(1)系统间同步通信,客户端发出调用后,必须等到服务对象完成处理并返回结果后才能继续执行;(2)服务端和客户端强耦合,后端一旦出现故障,前台将会牵扯进来;(3)客户的一次调用只能发送给单独目标对象。在这样的环境下,面向消息的中间件就应运而生了。      1. 什么是消息中间件?有什么特点?       很容易理解,消息

2017-07-31 18:56:31 384 9

原创 spring源码解读(1)-容器基本实现

学习spring源码对理解spring的执行流程,如何更好的发挥spring的功能有很大的指导作用。下面针对spring加载bean容器学习spring的执行流程。       spring通过调用xml配置文件,解析并加载Bean,xmlBeanDefinitionReader则是整个资源加载的切入点:         spring从xmlBeanReader读取

2017-07-25 21:23:04 654 25

原创 spring实现可动态修改时间定时任务

前端时间开发接触了一个开源框架jeecg,里面封装了spring与quartz整合的定时任务实现方式。因为之前尝试过单纯使用quartz来实现定时任务,遇到一些问题,比如,无法通过spring注入的方式添加自己的注入类。        首先了解一下,定时任务有三种技术实现方式:java自带的Timer类,可以让程序保持一定频度执行,但是无法按照某个时间执行;quartz,一个功能强大的

2017-07-21 16:49:25 27728 30

原创 msql优化--索引优化

关于数据库优化指标主要为:响应时间,扫描行数,返回行数。对于响应时间,主要体现在服务器级别,服务器性能,网络响应速度等;索引主要为了减少扫描行数;根据limit来限制返回行数。        常用的索引有:B-Tree索引,哈希索引,空间索引,全文索引。除此之外,按照数据存储方式可以分为聚集索引和非聚集索引。【索引类型】B-Tree索引             

2017-07-14 18:14:48 1034 22

原创 spring-Aop应用日志处理

上文讲解了sping Aop的基础概念与实现逻辑,本文从实践出发介绍sping进行aop配置并实现日志打印过程。       环境介绍:spring4.0 release版本,前端使用spring mvc框架。       1. 定义注解拦截器/** * 自定义注解 拦截service */@Componentpublic class LogIntercepto

2017-06-16 09:52:57 671 13

原创 Spring-AOP概论

AOP是OOP的一种实现,将业务代码进行隔离,降低逻辑代码之间的耦合度,提高代码复用率,经常用在日志处理,权限控制,事务处理,Struts2的过滤器拦截器等。我们首先通过学习动态代理认识AOP原理,然后进行AOP概念的论述。       下面代码通过实现InvocationHandler接口实现代理控制接口:public class LogProxy implements Invoca

2017-06-15 21:16:34 424 10

原创 JVM--java类文件结构

据说分析java类结构对日后的编码优化有很大的帮助,同时它也是我们理解java虚拟机类加载,内存分配,解析的基础,就和小伙伴们一起探讨学习了一番!        先来张大图做个导向:                                1. 我们首先要搞明白.class文件是咋来的,为啥要有.class文件?         我们知道在JDK里面执行一

2017-06-09 17:55:28 523 16

原创 小小加密应用

日前,大家在公司讨论一个很激烈的问题,原来有个小黑客在网上通过模拟ip和post请求,不断访问发送短信的接口,要知道,发送短信这个功能是接入第三方平台来完成的!每一条短信的发送就代表着流量和短信条数的流失,造成金钱的浪费。经过两天的试验,大神简单设计了一个算法,暂时解决了该问题,也跟大神学习一下:       首先发送短信的功能是用阿里云的服务实现的,它首先提供了一个风险拦截系统!也做

2017-05-15 20:24:06 902 11

原创 java基础--IO

数据在计算机内存储转换必须要用到IO操作,了解IO操作机制,对我们编码时针对文件操作,提高系统性能,磁盘存储,数据网络传输等都有很大的帮助。      (1) java的IO流的概念是数据从源头到达目的存储地的有序数列,正是这些输入输出流实现了java的输入输出。       分类:我们最熟悉的要数字节流和字符流了,按照计算机的二进制存储规则,字节流是操作8位二进制位,字符

2017-04-30 20:59:02 672 15

语言&国家编码.xlsx

包含国际化国家,语言枚举类

2021-11-18

Compile Linux Kernel on CentOS7 – Linux Hint.pdf

本人亲自试验教程可用,该步骤编译centos7系统内核,生成rpm包进行安装,网上试验很多教程在windows虚拟机上编译成功,安装成功,但系统切换新内核以后无法进入系统。 本人试验环境:win10系统 虚拟机环境:vmware 系统版本:centos7.5 内核版本:3.10.0

2020-08-21

秒杀业务实现

相对完善的秒杀业务实现,代码应用spring boot+mybatis+redis+activemq+mysql实现,对我们理解高并发业务场景设计有很大帮助,欢迎大家前来下载

2018-10-29

软件需求说明书模板

专业的软件开发需求说明书模板文档,文档内容包括1.概述,1.1编写目的,术语与定义,参考资料,2,标准和规范。3,相关假设,依赖条件。4.功能规格:岗位角色,界面设计,功能视图,功能点清单,用例。5.非功能性需求:性能,可靠性,可用性,可扩展性,互操作性,安全,可测试性,可管理性,可维护性,用户特性,数据备份,数据恢复。6.附录:业务信息详单,软件需求跟踪矩阵

2018-09-04

wxWidgets-3.0.4.tar.bz2

RabbitMQ需要插件,鉴于从官网下载中断问题,现提供给大家

2018-03-28

spring-qutarz_demo

spring4.0及以上版本整合qutarz实现动态添加定时任务,管理定时任务

2017-07-21

适配安卓苹果手机

H5开发过程中很多样式适应安卓手机的时候不适应苹果,这个方法用简单的例子将安卓和苹果样式调节区分开

2016-05-10

Css控制菜单下滑动态效果

在不使用js或jquery的情况下实现菜单动态下滑效果

2016-05-10

datagridview添加统计行

cs系统利用datagridview控件统计数据,统计行添加!

2016-04-04

DataGridView单元格合并和二维表头

datagridview传递列名,直接实现自动匹配相同名字合并为一个单元格,简单实用

2016-04-04

compres实现js、css压缩合并

在前台性能优化过程中,减少HTTP请求数量,就可以减少与服务器交互次数,从而大大提高系统性能,欢迎大家一起来研究

2016-02-19

空空如也

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

TA关注的人

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