自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 springboot使用MongoTemplate分组统计数据

根据messageStatus字段分组统计不同状态的数据量,相当于mysql里的group by 关键字。使用mongo里的aggregation聚合关键字。import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.c..

2020-06-02 17:47:52 6284

原创 springboot配置多个mongodb实现动态切换

日志平台要连接多个mongo库做日志统一查询,使用springboot的多Template模式不能做到动态切换,所以这里做一个动态模板实现自动切换。DynamicMongoTemplate继承 MongoTemplate重写doGetDatabase方法,这个方法是protected修饰的,一看就知道是提供给咱们重写的。import com.mongodb.client.MongoDatabase;import org.springframework.data.mongodb....

2020-06-01 11:02:28 3865 3

原创 canal多库合并监控

官方文档:https://github.com/alibaba/canal/wiki/AdminGuide主要针对需要进行多库合并时,可以将多个物理instance合并为一个逻辑instance,提供客户端访问。 场景:分库业务。 比如产品数据拆分了4个库,每个库会有一个instance,如果不用group,业务上要消费数据时,需要启动4个客户端,分别链接4个instance实例。使...

2020-04-09 21:35:04 2934 1

原创 在centOS7上搭建canal服务

使用canal解析mysql的增量日志,记录一下搭建过程。根据官方文档,需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下:log-bin=mysql-bin # 开启 binlogbinlog-format=ROW # 选择 ROW 模式server_id=1 # 配置 MySQL replaction 需要定义,不要和...

2020-04-06 20:13:32 1264 1

原创 在CentOS7上搭建zookeeper集群

在工作当中,我们经常使用到zookeeper做一些分布式协调服务,用过dubbo的同学们应该都知道zookeeper是dubbo推荐的服务注册与发现中心。今天就来搭建一个zookeeper集群。这里用同一台服务器启动3个zookeeper服务用于学习测试,生产环境下最好分开部署。...

2020-04-04 23:05:22 301

原创 VMware虚拟机克隆Centos7

因为工作或学习原因,需要在本地搭建服务集群,在VMware中可以使用现用虚拟机克隆出多个虚拟机实例。选择一台虚拟机,点击克隆。下一步创建完整版 克隆过来的虚拟机与原来的虚拟机ip相同,我们再修改一下配置文件。vi /etc/sysconfig/network-scripts/ifcfg-ens33 保存退出。systemctl resta...

2020-04-04 09:51:35 550

原创 redisTemplate批量插取数据

springboot中的redisTemplate封装了redis批处理数据的接口,我们使用redisTemplate可以直接进行批量数据的get和set。package com.huateng.applacation.service;import org.springframework.beans.factory.annotation.Autowired;import org.spr...

2019-01-24 15:50:28 9785 4

原创 springboot集成redis cluster集群

搭建一个springboot项目,整合redis cluster集群配置。项目pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan...

2019-01-18 11:15:40 525

原创 mybatis一级缓存的实现

我们使用mybatis与数据库进行交互,每开启一次和数据库的会话,都会创建一个SqlSession。 /** * 获取Session * * @return */ public static SqlSession getSqlSession() { return sqlSessionFactory.openSession();...

2018-12-04 16:16:12 330

原创 mybatis的拦截器实现简单分页功能

使用ThreadLocal和Interceptor实现mybatis的分页功能,这里只是简单的了解一下mybatis的Interceptor接口。package com.dwl.mybatis.mysql;import org.apache.ibatis.cache.CacheKey;import org.apache.ibatis.executor.Executor;import ...

2018-12-03 17:29:13 358

原创 使用cglib实现aop切面编程

我最近在写一个简易的java web框架,其中包括ioc,mvc,aop,dao等基本功能,这几天把aop这块弄得差不多了,所以在这里总结一下。项目详细信息:coin-frameworkspring中核心的概念就是ioc和aop。aop面向切面编程听起来很厉害,所以今天我们用cglib动态代理来实现一个简单的aop。首先我们模仿一下spring的aop中基于注解的切面编程。@Asp...

2018-11-27 11:19:04 927

原创 使用动态代理实现事务管理

最近在写一个简单的web框架,使用动态代理和ThreadLocal实现的事务管理,在这里和大家分享一下。关于动态代理有jdk动态代理和cglib动态代理,这里选用了cglib。DbHelper类提供数据库的一些操作。package com.me.coin.framework.dao;import java.sql.Connection;import java.sql.SQLEx...

2018-11-20 15:37:29 1493 1

原创 MySQL索引所使用的数据结构

MySQL数据库建立索引有两种索引方式,一种是hash,一种是btree。 那么这两种索引方式有何区别呢一.HASHhash一般翻译做“散列”,也有叫做映射的,hash最大的应用就是hash表,是我们开发中最常用的数据结构之一,在java开发中HashMap,HashSet等常用集合使用的就是hash表,大家对hashMap应该都非常熟悉。下面来说说hash作为索引方式有哪些优势和...

2018-10-28 15:05:48 1035

原创 MySQL索引失效的几种场景

     我们都知道建立索引能够提高查询效率,那么是不是任何情况下都能提高呢,当然不是的的,下面我们就来列举一些常见的索引失效的场景。借用上一篇文章的dm_person_info表在card_code列没加索引的时,查询时间如下,大概都在0.07秒。 我们来加上索引试试,加上后查询效率高了许多。 在正确使用索引的情况下,查询一行数据的时间不到10毫秒,所以显示0.00 se...

2018-10-27 21:32:08 7826

原创 MySQL数据库索引类型

在数据量偏大的时候执行查询语句查询时间会变长,这时我们会根据需求在数据库中添加索引来加快查询效率。我们先来做个测试,不加索引和加索引下的效率对比。在card_code列没加索引的时,查询时间如下,大概都在0.07秒。 我们来加上索引试试,加上后查询效率高了许多。 下面来看看索引的类型:1.Normal普通索引普通索引也是我们最常用的索引,在使用时限制很少。比如上面为dm...

2018-10-27 14:16:59 966

原创 使用iText7生成pdf文件

      在写自动生成数据库设计Word文档文章后,朋友建议再实现生成pdf格式,并推荐的iText7,我花了点时间学习了一下itext,实现了这个功能。首先引入依赖 <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext7-core</art...

2018-10-25 17:25:35 6287 1

原创 springboot解决Oracle驱动依赖的问题

今天开发数据库文档生成项目时新增了对Oracle数据库的支持,在添加ojdbc依赖时maven始终下载不下来。原来由于版权问题maven中央仓库中没有oracle的驱动包。为了解决这个问题我们需要自己下载jar包,并添加到maven的本地仓库。给大家一个地址:http://www.java2s.com/Code/Jar/o/Downloadojdbc6112020jar.htm我一开始下载...

2018-10-17 15:45:07 8112

原创 oracle根据表名获取所有字段信息

根据表名获取所有字段信息,包括字段名,注释,数据类型,约束,可否空。sql如下,TB_FILE为表名。select c.*,d.comments column_comment from (select a.column_name ,a.data_type||'('||data_length||')' column_type,a.nullable is_nullable,CASE when...

2018-10-16 17:30:12 2119

原创 springboot+freemarker实现生成数据库设计Word文档

      以前在项目完成后都会按照要求写数据库设计文档,表少的时候还无所谓,当有上百张表的时候就不好写了。当然也有一些自动化软件可以帮我们实现这个功能,但是自定义的程度比较低。所以今天自己来实现这个功能,可以按照自己的喜好定义样式和模板,是不是很酷。首先新建一个Word文档 然后另存为xml格式,用NotePad打开。在xml中使用freemarker的标签将数据填充。不会fre...

2018-10-13 19:08:45 1303

原创 装饰者模式

      装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。比如我们在买饼的这个场景里,就可以使用装饰者模式。我们可以只买一个饼(pie)手抓饼或鸡蛋饼,可以什么都不加,可以加鸡蛋(egg),培根(bacanic),生菜(lettuce),火腿肠(sausage)等等。在这里饼是需要装饰的对象,而鸡蛋等则是装饰...

2018-10-06 15:29:47 301

原创 CompareAndSet(CAS)学习笔记

      Compare And Set,直译过来就是比较并设值,解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数—内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。CAS有效地说明了“我认为位置V应该包含值A;如果包含该值,则...

2018-09-16 22:32:28 7275

原创 select框下拉多选(从数据库中获取选项)

    前面写了几篇关于select的文章,今天说一下select下拉框多选的问题。下拉框多选selectpicker插件做的非常漂亮,selectpicker是bootstrap里的一个下拉框的组件。我在这个插件初始化之前稍微加点东西,实现下拉框的选项从数据库中读取并根据传入值默认选中。使用jQuery的扩展方法,适用于每一个select示例。$.fn.ajaxselectmore =...

2018-09-16 10:59:31 12754

原创 select框多级联动(以省市区三级联动为例)公共方法

     前面写了两篇关于select框的文章,想到select框多级联动的情况。多级联动的select框从数据库中获取选项,也是很好实现的,我看到其他文章都写得过于复杂,所以这里写了一个公共方法,配合jQuery一起使用,供大家参考。$.fn.linkselect = function(options) { var select = this;//获取当前select对象 var ur...

2018-09-15 18:43:34 15912 7

原创 select框中的选项从数据库中获取的公共方法

有时候我们的select框中的选项并不是固定的,需要到数据库中取获取最新的数据。使用jQuery扩展方法,用ajax去后端获取数据拼接option到select中。/** * @param options * url 获取数据的地址 * initvalue 请选择 * value 默认选中 */$.fn.ajaxselect = function(options) { va...

2018-09-15 11:23:21 8035

原创 select框根据传入值默认选中的公共方法

在项目开发中有许多select需要根据传入值默认选中,开发公共的方法就很有必要。/** * @param options * initvalue 初始选项 * dic 字典json * value 选择项 */$.fn.select = function(options) { var select = this; if(options.initvalue!=nul...

2018-09-15 10:56:50 7490

原创 jquery添加删除input输入框

       在写前端页面时,有时候根据业务要求需要动态增加或减少一行或多行输入框,之前看到别人写的太复杂,我把自己简化过的拿出来给大家参考一下。实现后的效果,点击添加在最下方新增一行输入框,点击删除删除该输入框。 我先说一下实现的逻辑,第一行输入框是固定的的,后面的几行都是以第一行为模板克隆而来的,当然还需要更改克隆后的input框属性。我把整个HTML先贴上来<%@ p...

2018-09-15 10:22:52 7737 1

原创 自己动手写一个ioc容器

       控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它...

2018-09-13 20:28:27 6318

原创 spring项目启动时从数据库中加载定时任务

      在实际项目开发中,有时候定时任务太多不好管理,而且配置在xml中显杂乱。所以今天写一篇文章介绍如何从数据库中加载定时任务。1.InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候会执行该方法2.实现InitializingBean接口package com.dwl...

2018-09-12 20:14:18 7719

原创 Java ExecutorService线程池的使用

Java并发包java.util.concurrent下提供了对线程池的支持,Java通过Executors提供四种线程池。1.FixedThreadPool  定长线程池,可控制线程最大并发数,超出的线程会在队列中等待package com.mina.executorservice;import java.util.concurrent.TimeUnit;/** * @pro...

2018-09-01 15:32:54 5546

原创 ActiveMQ安装与使用示例

安装环境CentOS 7 ,JDK81.下载ActiveMQ:http://activemq.apache.org/activemq-5155-release.html 2.将文件上传至虚拟机并解压 [root@dwl activemq]# tar -xf apache-activemq-5.15.5-bin.tar.gz 3.启动activemq 4.进入...

2018-08-26 14:15:17 5611

原创 Java使用FreeMarker生成动态表格

      FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属...

2018-08-25 14:33:26 16273

原创 MySQL统计同一字段不同值数量并根据另一字段分组

1.这是一张人口表(person_info)的信息,需要统计不同学历男女的数量。2.sql语句SELECT xlhz,SUM(CASE xbdm WHEN 1 THEN 1 ELSE 0 END) man, SUM(CASE xbdm WHEN 2 THEN 1 ELSE 0 END) woman FROM person_info GROUP BY xl...

2018-08-23 12:32:49 15750 1

原创 dubbo入门案例

      Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。详细介绍请访问官网http://dubbo.apache.org/zh-cn/1. Zookeeper的安装与启动,请参考我的上一篇文章https://blog.csdn.ne...

2018-08-18 22:44:32 7059

原创 zookeeper下载与安装

     ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 1.首先去官网下载 http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4....

2018-08-18 13:36:08 22240

原创 使用quartz动态加载和删除定时任务

      在项目中越来越多的使用到定时任务,单个项目定时任务太多时就不好管理,这时我们可能需要将任务保存在数据库中,动态的去加载或删除某些定时任务。1.首先是引入依赖。<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xm...

2018-08-17 13:18:29 7944

原创 使用Xshell连接服务器并安装JDK

1、 下载jdk到本地http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.使用xshell连接到服务器。输入用户名和密码用rz命令将jdk上传到服务器。没有安装rz的话先执行 yum install lrzsz[root@dwl ~]# rz...

2018-08-15 17:36:26 13814

转载 虚拟机CentOS 7设置固定IP方法

1、笔记本主机IP为设置自动获取,不管什么情况下,不受虚拟机影响,只要连接外网就可以正常上网; 2、只要笔记本主机可以正常访问外网,启动虚拟机中的CentOS 7系统就可以正常访问外网,无需再进行任何设置; 3、虚拟机设置为固定IP,不管主机在什么网络环境下,是断网环境,还是连接任何网段访问外网的环境下,虚拟机的IP都固定不变,而且使用终端连接,始终不变,正常连接; 4、虚拟机的固定IP可以...

2018-08-14 17:23:55 5376

原创 Apache Mina入门案例

    Apache Mina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。它通过Java nio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API。我们可以使用mina解决一些点对点通信的问题。首先是引入项目所需要的依赖。<?xml version="1.0" encoding="UTF-8"?><project xmlns="...

2018-08-11 12:17:44 5354

原创 spring springmvc myBatis集成redis

  前一段时间开发一个报表缓存的项目,最近想把部分数据缓存到redis里,正好学习一下redis。  首先是框架部分的配置文件。 1.spring-mvc.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmln...

2018-08-03 21:38:32 5512

原创 字符串匹配算法(Brute-Force)

      Brute-Force匹配算法是比较容易理解的字符串匹配算法,时间复杂度为O(M*N),为了更加清晰的理解该算法,我先来举个例子先。       字符串 text = "abgdbcfg";       字符串 str = “bcf”;       判断text中是否包含bcf,text中的第一位a与str中的第一位b相比不相等,text移到第二位b与str中的第一位b相等...

2017-09-12 21:10:05 5767

空空如也

空空如也

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

TA关注的人

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