自定义博客皮肤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 Not Found

世界上没有奇迹,有的只是必然和偶然,还有谁做了什么。

  • 博客(76)
  • 资源 (6)
  • 收藏
  • 关注

原创 RabbitMQ广播模式(动态生成queue)

RabbitMQ的广播机制和ActiveMQ有所不同。先来梳理下RabbitMQ中消息从产生到消费的流程吧:而exchange 存在多种类型,这里就只说广播模式(fanout)了。在广播模式中,一个exchange对应多个queue的话,会向每个queue都发送信息,然后不同的queue再由其对应的消费者消费信息,即完成了广播。因为广播模式中不关注routingkey和queue,只需要q...

2019-12-20 17:57:28 3893

原创 通过@MapperScan源码了解Spring自定义注解扫描器

我们在使用springboot 整合MyBatis时,需要在启动类上添加上@MapperScan注解,并写入mapper接口的包路径,然后我们就能通过从spring IOC容器中取对应的mapper的Bean来进行持久化操作了,那么@MapperScan是如何将mapper接口实例化并注入到Spring IOC容器中的呢?首先搭建一个spring boot项目,引入mybatis和mysql的相...

2019-08-08 17:49:55 2249 3

原创 POI:使用XSSFWorkbook与SXSSFWorkbook在处理Excel合并时容易出现的问题

最近在做的需求中需要将两个Excel合并。首先讲下POI中处理Excel的几种方式吧。1.HSSFWorkbook,用来处理.xls后缀的Excel,即适用于Excel2003以前(包括2003)的版本。因为其最大只能处理65535行的数据,所以现在已经很少使用了,所以本文直接忽略该方式。2.XSSFWorkbook是现在处理Excel比较常见的方式。其适用于.xlsx后缀的Excel,即E...

2019-08-01 13:34:07 8757 1

原创 Spring Boot:使用p6spy监控数据库操作

p6spy是一个开源的数据库监控插件,我们能通过使用p6spy打印数据库操作或者保存操作日志。首先放上p6spy的git地址https://github.com/p6spy/p6spy在Spring Boot中使用p6spy也是非常简单。一.Spring中使用p6spy1.添加maven依赖https://mvnrepository.com/artifact/p6spy/p6spy找一个...

2019-06-30 10:36:43 1685

原创 Spring Boot:通过spring-boot-starter-data-redis源码了解starter和autoconfigure模块

注:本文Spring Boot为2.X版本在Spring Boot中,官方提供了`spring-boot-autoconfigure`包和starter包用来帮助我们简化配置,比如之前要建一个Spring mvc项目,需要我们配置web.xml,dispatcherservlet-servlet.xml,applicationContext.xml等等

2019-03-17 00:35:46 31112 15

原创 Spring Cloud(五) :断路器(Hystrix)

Hystrix是一款Netflix开源的熔断中间件,能够提供熔断,降级,监控等多种服务。就如我们日常生活中的电路保险丝,当接入电源的电器过多,导致整体负载过大时,保险丝会自动熔断,以此保护电器不会受损。而在微服务架构中,当一个服务接口不堪重负,出现超时或宕机等无法使用的情况时,下游服务因获取不到数据,导致服务不可用,然后恶性循环导致整个服务体系宕机,形成雪崩效应。此时熔断器就充当了保险丝的作用...

2018-11-14 15:30:31 1926

原创 Spring Cloud(四) :微服务间的互相调用和负载均衡实现(ribbon+restTemplate和feign)

在上一篇中提到了路由网关spring-cloud-zuul,其主要介于外部服务调用者和微服务集群之间,提供了反向代理,负载均衡,拦截器等多种功能,适合于向外界提供微服务接口功能。就好比我们自己公司有多个微服务,这时有个其他公司需要调用我们的微服务接口,这时就可以使用zuul,而如果我们自己公司的这几个微服务之间需要互相调用服务接口的话,可以使用ribbon+restTemplate或feign来实...

2018-11-08 17:06:41 5167 3

原创 Spring Cloud(三) :微服务网关(Zuul)

在一个实际业务当中通常都会调用多个服务接口,而每个服务接口的ip/端口or域名都不一样,这样在实际调用中会变得十分繁琐,而且当服务接口ip/端口or域名修改后,业务系统也需要进行相应的修改,大大增加了开发维护成本,所以一般的做法都是在多个服务接口上游再添加一层,我们通常称之为网关。网关能够实现多种功能,比如反向代理,负载均衡,拦截器。在拦截器中我们还可以实现身份验证,反网络爬虫等等功能。在Spr...

2018-11-07 15:10:15 17629 3

原创 Spring Cloud(一):发现和注册服务(eureka)

最近的项目需要将原来的项目重构为Spring Boot项目,正好也能利用一些Spring Cloud的工具,就正好学习学习_(:з」∠*)_。首先需要新建2个Spring Boot项目,一个作为服务注册中心,一个作为服务生产者/提供者。如下PS.我这里用的是Spring Boot 2.X版本一.服务注册中心新建Spring Boot项目SpringCloudServiceCenter...

2018-11-06 16:56:49 11601

原创 Spring Cloud(二) :分布式配置中心,动态修改和应用配置

很多时候线上服务的配置需要进行修改,但是我们不想或者没办法重启服务来让配置生效,那么这时候应该怎么办呢?在Spring Cloud中,spring cloud config所提供的分布式配置中心能完美的解决以上问题,spring cloud config将配置文件存放在配置服务内存中或者托管在远程git仓库中。然后通过一个配置中心来获取配置信息,这样,如果需要维护配置信息,则只需要在本地修改配置...

2018-11-06 16:38:04 4768 3

原创 Spring:使用InitializingBean,DisposableBean接口实现在项目启动/关闭时执行操作

最近项目中有一个需求需要一个存储过程不停的执行,但是存储过程执行中如果出现异常,自动通知管理员会很麻烦。所以打算直接把调用存储过程这步骤整合进Spring Boot项目中(这样不论异常捕获和邮件通知都相对简单)。于是考虑使用实现Spring的InitializingBean,DisposableBean接口+新建一个线程来实现需求。思路为Spring Boot启动时初始化并执行该线程,然后线程中...

2018-10-31 13:38:06 2840 2

原创 Linux 使用scp命令定时将文件备份到另一台服务器

主要思路就是使用scp命令 + linux定时执行任务。目标:2台服务器,A为主服务器,B为备份服务器,需要每天中午12点将A上的文件备份到B上。1.首先在A上安装except一路yes下去即可yum install expect2.编写脚本这里给个示例要传的文件在A服务器的/home/20181025/目录下filepath=/home/20181025/echo "`dat...

2018-10-26 10:33:19 16006 33

原创 Spring Boot 使用 Jwt + Swagger2 搭建带身份验证的接口服务

首先需要搭建好一个Spring Boot + Swagger2的项目 因为之前有写过 Swagger2 点我 所以这里就不再重复一遍了。该文章将会在之前项目的基础上继续添加整合Jwt。首先放下搭建完毕的项目目录结构pom.xml 在之前的基础上添加Jwt依赖即可<!--jwt--><dependency> <groupId>io.j...

2018-09-13 10:44:54 7976

原创 Spring Boot 使用Swagger2构建RESTful风格的API在线文档 & 项目总结

之前做的项目中前后端完全分离,前端为嵌在手机app中的H5,后端需求限定了语言为Java,而且所给的时间非常少。 于是能够快速搭建配置部署的Spring Boot项目就成了不二之选,加上Swagger2能够方便的帮助我们构建出功能强大的在线接口文档,方便测试人员对接口的测试和前端的对接。所以直接选用了Spring Boot + Swagger2的方案。简单介绍下项目吧 需求中需要每日解析百...

2018-09-12 15:34:03 2430

原创 Spring Boot 国际化配置(spring:message标签方式) & 使用cookie持久化用户配置

最近在对一个项目进行重构,使用Spring Boot将原来的项目进行功能拆分,使得之后对于功能的装卸能够更加简单快捷。 然后在国际化配置时发现和原来的项目配置有一些出入。先来讲下Spring Boot中的配置方式吧。 因为原来项目中用的是 <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %&g...

2018-08-31 14:45:55 10365

原创 Linux:搭建SFTP服务器

系统Centos 工具,自带的internal-sftp 1.首先查看openssh版本ssh -V 版本必须大于4.8p1,低于的这个版本需要升级。2.创建sftp组groupadd mysftpg3.创建sftp用户use...

2018-08-08 11:38:38 14392 3

原创 Rabbitmq+Haproxy实现Rabbitmq镜像集群搭建和负载均衡

最近做到的项目中,有着庞大的日数据处理量(大概1天200W条),都需要通过MQ来传递数据,并进行解析持久化。所以接触了下Rabbitmq的镜像集群搭建,记录下方便以后再次用到。先讲下整体的架构,计划打算使用3台MQ服务器,然后用2台haproxy服务器进行负载均衡处理,再使用keepalived来处理两台负载均衡处理器的单点问题,以期实现高可用高负载的MQ集群。本片只涉及前两部分。 涉及...

2018-07-30 17:49:14 5186

原创 linux:使用rsync和inotify-tools实现文件实时同步

首先手头有两台linux服务器 系统为CentOS 1台作为主服务器,另1台作为同步服务器(主服务器上添加/修改/删除文件后将会同步给同步服务器)首先先检查主服务器是否安装所需的工具1.检查rsync是否已经安装rpm -qa | grep rsync如果没有安装则进行安装yum -y install rsync 2.检查 xinetd 是否安装rpm -qa...

2018-06-28 15:00:05 5014 10

原创 Linux安装MySql 5.7 附大量图文说明

前几天接了个接口项目,按照网上教程安装mysql数据库时出现了一堆问题(捂脸),一顿操作后终于成功起起来了。记录下以免之后再遇到同样问题。 最主要的一个问题是MySql 5.7以上 与 MySql5.6以下的版本在安装时大相径庭,5.6以下版本一般都会提供默认配置文件,5.7以上就不会,比如data文件夹,tmp文件夹等等。并且两者在初始化时的 命令也不一样,如果在5.7以上使用5.6以下的初始...

2018-06-13 15:44:15 11066 5

原创 com.sun.mail.util.MailConnectException: Couldn't connect to host异常解决

最近在做一个接口项目,需要捕获所有的异常信息,并发送邮件给管理员。使用了JavaMail来实现,然后发现在本地(windows环境)上可以正常发送邮件,而放到了linux环境上就无法发送邮件。相关错误如下:org.springframework.mail.MailSendException: Mail server connection failed; nested exception is ...

2018-06-13 14:21:33 46283 9

原创 Java并发:ReentrantLock源码分析

注:JDK1.7 对照源码效果更佳∠( ᐛ 」∠)_ 相关知识:队列同步器AbstractQueuedSynchronizer是用来构建锁或者其他同步组件的基础框架,它使用一个int变量(stats)来表示同步状态,并使用一个内置的FIFO队列来完成...

2018-05-24 16:45:08 1127

原创 Java并发:synchronized 实例方法同步/静态方法同步/实例方法中的同步块/静态方法中的同步块 理解

Java中的同步块用synchronized标记。同步块在Java中是同步在某个对象上。所有同步在一个对象上的同步块在同时只能被一个线程进入并执行操作。所有其他等待进入该同步块的线程将被阻塞,直到执行该同步块中的线程退出。并且存在4中不同的同步块 1.实例方法 2.静态方法 3.实例方法中的同步块 4.静态方法中的同步块在分别讲这4个同步块的区别前需要首先了解下Java中s...

2018-04-23 10:09:43 2595

原创 Java:ArrayList源码分析(JDK1.7)

ArrayList源码分析注:JDK1.7 首先先来个总体的认识,ArrayList底层是用数组实现的。在插入值时如果超过了当前数组的大小,则会进行扩容操作,每次增加的大小为原来大小的“一半”(偶数一半,奇数减一的一半),并且按照新的大小新建一个相同类型的数组,然后将原数组中的值copy进新的数组,并修改引用。 默认创建ArrayList情况下: 然后了解下ArrayList继承和实...

2018-04-18 10:33:46 299

原创 Java:HashMap源码分析(JDK 1.7)

HashMap源码分析注:JDK 1.7 首先先总体概括下吧,在1.7中,HashMap是由数组+链表的形式组成的(1.8中当HashMap达到一定大小后会使用红黑树),具体如下。/*数组部分:table 链表部分:Entry<K,V>类含有一个指向Entry<K,V>类对象 的next “指针”*/static final Entry<?,?&gt...

2018-04-16 16:46:27 563

原创 (2)Hadoop笔记:hadoop-eclipse-plugin插件的安装和mapReduce小栗子

注: 1.eclipse所在环境为windows 2.hadoop版本2.8.3 3.hadoop-eclipse-plugin版本2.8.3 4.eclipse版本Luna Service Release 1 (4.4.1) 5.JDK 1.7插件安装hadoop-eclipse-plugin编译 因为我本地使用的JDK为1.7,而现在网上能找到的hadoop-eclip...

2018-04-03 16:25:34 2748

原创 (1)Hadoop笔记:Hadoop2.X搭建和配置

注: 1.环境为linux CentOS release 6.6 (Final),非虚拟机。 2.Hadoop版本2.8.3 3.JDK版本1.8.0_111 4.Hadoop的搭建分为三种形式:单机模式、伪分布模式、完全分布模式,本文为伪分布模式。1.首先下载Hadoop2.8.3 下载后将文件解压tar -xvf hadoop-2.8.3.tar.gz如下。 2.相...

2018-04-03 11:20:32 589

原创 使用nginx-rtmp-module搭建RTMP直播服务器

注:本文环境默认为linux 首先需要下载 nginx-1.8.1 nginx-rtmp-module因为nginx-rtmp-module对nginx的版本限制比较大,所以最好使用上面给出的nginx版本。安装nginx 1.首先下载安装nginx-1.8.1//也可以电脑上下载完后上传到服务器wget http://nginx.org/download/nginx-1...

2018-03-05 14:19:37 11287 5

原创 (2)Solr:Java后台获取Solr查询信息

这里介绍两种方法:1.Solrj,2.httpClient httpGet 1.Solrj 首先需要下载Solrj相关的jar包,其实在Solr的下载包中就已经包含了Solrj jar包和依赖的jar包,具体位置: 依赖:Solr解压文件\dist\solrj-lib Solrj:Solr解压文件\dist solr-solrj-5.5.5.jar 将相关jar包放入项目中 连接S

2018-01-25 15:31:56 5142

原创 (1)Solr:配置搭建运行环境&数据导入

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。 首先下载Solr: https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/ 选择一个版本下载

2018-01-22 14:14:15 795

原创 (1)ActiveMQ笔记:ActiveMQ与Spring整合&使用例子

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。 我所在的项目中,ActiveMQ被用来实现大批量邮件发送功能(项目需求中会出现一次性发送N多封邮件的情况,所以需要将邮件请求放入一个队列中,然后专门处理邮件的服务器就可以从队列中取出请求并发送邮件,原系统就可以做其他事而不被大批量邮件发送功能阻塞,并能实现与原有系统的功能隔离,降低系统的耦合) 在项目实现中,原有...

2018-01-16 17:53:13 635

原创 (5)Python笔记:使用pygame库制作打方块小游戏

闲来无事研究了下pygame库,让我想起了大学时用C++写出贪吃蛇时的兴奋感,不过貌似pygame很久没跟新了?而且用python写游戏也不大高效,但是拿来试试思路,算法还是不错的。 首先上张效果图: 现在包含的功能很简单,就是打开游戏时有一个start的按钮,点击后进入游戏,球击中砖块会有一定概率出现奖励物品(3种:1.球加速,2.板子加速,3.增加球的数量),板子在碰到掉下来的奖励

2018-01-12 15:18:03 2283

原创 使用ffmpeg将视频转为x264编码的mp4文件

昨天刚遇到的问题,网页播放器播放linux服务器上的mp4文件时只有进度条在动,画面全黑,首先想到的就是网页播放器的解码器是否不支持该mp4文件的编码。尝试了下,确实是这个问题,并且转码后文件大小从400M减小到100M,感觉这里是一个系统可优化点。 先说下主要的命令吧: 我使用的ffmpeg版本为ffmpeg-3.3.3-win64-static。 linux上ffmpeg的安装方法参考:

2017-12-08 16:20:53 7035 1

原创 (1)Java虚拟机:Java内存区域与内存溢出异常

Java虚拟机内存划分 程序计数器: (1)线程私有。 (2)记录当前线程所执行的程序码位置。因为一个程序可能会出现多个线程,而多个线程执行时又是交替执行的,所以就需要记录各个线程的执行位置,以便之后继续执行。 (3)如果一个线程正在执行Java方法,则其计数的值为正在执行的虚拟机字节码指令的地址;如果是Native方法(调用C,C++等其他语言),则计数为 undefined。 ...

2017-11-21 17:14:25 302

原创 (4)Python笔记:模拟登入CSDN(requests库实现)

因为使用到了requests库,所以需要先安装,直接使用pip安装 进入python安装目录\Scripts,执行 pip install requests(需要python版本支持) 安装完成后就可以开始分析CSDN的登入流程了 1.首先使用chrome退出CSDN,然后选择登入,F12打开开发者工具,选择Network,勾选Preserve log选项 https://passport.

2017-10-31 16:01:59 526

原创 (3)Python笔记:使用WMI模块+TCP/IP来远程监控系统信息

说起来写这个的初衷有点尴尬,前几天有人用‘永恒之蓝’攻击公司的系统,刚好我和我老大晚上没关电脑跑东西,还没开启自动更新(win7,你说这时候要是win10多好),然后就喜闻乐见的中招了,还好及时在第二天查杀掉了,然后PM表示以后开始你们2个就每人一个月轮着来检查其他人的电脑防毒软件(公司指定)/系统自动更新是不是开启了,查到没开的就拉入伙一起负责检查_ (:3」∠*)_。 本着为老大排(懒)忧(的

2017-10-26 16:56:08 3445 2

原创 (2)Python笔记:内建模块HTMLParser实践

HTMLParser为Python的常用内建模块,使用时经常是继承HTMLParser并重写其方法。 其中常用方法如下:handle_starttag(tag, attrs)处理开始标签,比如<input type="text" value="3">,tag即为input,attrs为储存对应属性,值的元组(tuple)列表(list):[('type':'text'),('value':'3')

2017-10-25 15:57:48 354

原创 (1)Python笔记:抓取CSDN博文

其实之前就对网络爬虫有点兴趣,这次正好用Python来试试。 事先准备: 搭建Python环境 https://www.python.org/downloads/ 下载对应自己系统的安装包,我这里就直接选3.x版本了之后就可以开始我们的Python之旅啦 目标是将自己csdn上的博文全部抓取下来 首先获取自己博文列表的网页源码,因为抓取时会有编码问题,所以这里直接将返回的html数...

2017-10-24 17:58:24 569

原创 实现MP4文件边下载边播放

最近遇到的需求,在老系统中有部分MP4视频在播放时需要完全加载完才能播放,使得用户体验很差(现在都是边下载边播放模式),造成这种情况的原因是用来描述MP4文件的moov atom元数据被放在MP4文件的末尾,而大部分网络播放器都会去读取这个元数据用以确认视频长度,分辨率等等参数,因此只需要将MP4文件的moov atom元数据移到最前面就行,问题明白了,就能够开始解决了,这里使用的是qt-fasts

2017-09-01 16:19:44 16499 4

原创 (1)Shiro笔记-整合Ehcache时缺少默认cache配置异常解决

在使用Ehcache配置shiro cacheManager时遇到了如下异常,异常全文:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shiroFilter' defined in URL [file:/D:/workspace/.metadata/.plugins/or

2017-08-09 10:12:13 5601

原创 (6)birt笔记 - 通过传递变量来动态修改数据集SQL

其实想想这一篇应该写在前面一点的,主要懒癌发作… _ (:3」∠*)_。 给birt报表数据集传参数构建动态数据集的方式挺多的,这里介绍2种比较常用的: 1.通过?占位符传递参数实现 2.JavaScript脚本拼接SQL语句实现 事先准备:创建一个birt report模板 新建数据集,Data Source右键新建 新建数据源,点击next-》finish,这里因为还没有添加SQL,

2017-07-27 17:35:32 1808

基于注解配置和使用spring AOP(spring mvc框架)

基于注解配置和使用spring AOP(spring mvc框架)

2017-07-19

birt+springMvc+myBatis整合项目压缩包分卷3

birt+springMvc+myBatis整合 这是分卷3,需要下载总共3个分卷才行

2017-06-30

birt+springMvc+myBatis整合项目压缩包分卷2

birt+springMvc+myBatis整合 这是分卷2,需要下载总共3个分卷才行

2017-06-30

birt+springMvc+myBatis整合项目压缩包分卷1

birt+springMvc+myBatis整合 这是分卷1,需要下载总共3个分卷才行

2017-06-30

android群聊私聊app

写完以后由于老师只要windows平台上的,所以只能拿出来收点分数了orz

2015-05-10

C++写的带AI五子棋小游戏

以前写的一个五子棋小游戏,自带一个简易的一层循环AI,不过有时候我自己也下不赢它...还是挺好玩的

2015-04-29

空空如也

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

TA关注的人

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