自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

万物皆导

我最想做的事,就是了解宇宙最深处的秘密

  • 博客(82)
  • 收藏
  • 关注

原创 分治思想—看这篇就好了

何为分治当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出。对于这类问题,我们往往先把它分解成几个子问题,找到求出这几个子问题的解法后,再找到合适的方法,把它们组合成求整个问题的解法。如果这些子问题还较大,难以解决,可以再把它们分成几个更小的子问题,以此类推,直至可以直接求出解为止。这就是分治策略的基本思想。解法步骤...

2020-04-22 13:59:40 721

原创 2.2 栈和队列—队列

什么是队列队列是一种先进先出(FIFO:First In First Out)的线性表,只允许从一端插入,从另一端删除,允许插入的一端叫队尾(rear),允许删除的一端叫队头(front)。队列的模型队列可以用数组或者链表进行实现,我这边使用链表进行实现。通过链表实现的队列叫链式队列,通过数组实现的队列叫顺序队列,需要注意的是还有一种特殊的队列叫循环队列,实现循环队列。操作入队: p...

2019-12-13 13:18:20 350

原创 2.1 栈和队列—栈

什么是栈栈本质是表,只不过其限制了插入和删除都在一个位置上进行,这个位置是表的末端,称之为栈顶。栈也被称作后进先出(LIFO:Last In First Out)表。栈的模型栈是一种抽象型数据模型,以下就是栈的模型,每次数据进栈都会添加到栈顶(top),每次访问只能访问栈顶的数据因为栈的本质是表,所以可以通过数组或者链表进行实现。操作进栈:private boolean push(...

2019-12-13 13:13:02 453

原创 1.4 线性表—并查集

什么是并查集并查集是线性表的一种应用,是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。结构上面已经说明并查集是一种树型结构,所以可通过数组或者链表来实现,阿导在网上搜索了一下基本示例基本是通过数组来实现。这样比较好模拟这种结构,下标为...

2019-12-09 12:20:24 366

原创 1.3 线性表——跳跃表

什么是跳跃表跳跃表是一种有序的数据结构,它通过在每个节点上维持多个指向其它节点的指针来达到快速访问的目的。跳跃表在插入、删除和查找操作上的平均复杂度为 O(logN),最坏为 O(N),可以和红黑树相媲美,但是在实现起来,比红黑树简单很多。redis在两个地方用到了跳跃表,一个是实现有序集合,另一个是在集群节点中用作内部数据结构。结构跳跃表的数据结构主要包含三个部分,数据区域,当然这里面...

2019-11-28 11:15:07 484

原创 1.2 线性表——链表

什么是链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。列表(也成为顺序表)和链表都是线性表,那他们有什么区别呢?从结构上来说,列表底层是通过数组来存储数据,需要申请空间,然后按...

2019-11-21 11:59:21 234

原创 1.1 线性表——列表

什么是列表列表是一种数据项构成的有限序列,即按照一定的线性顺序,排列而成的数据项的集合,在这种数据结构上进行的基本操作包括对元素的的查找,插入,和删除。列表的两种主要表现是数组和链表,栈和队列是两种特殊类型的列表。学过 C 语言的同学基本都知道,我们在学习列表的时候会定义一个结构体,然后对这个结构体进行各种操作,由于阿导后期从事 java 这条路,C 语言与我渐行渐远,所以下面阿导会通过 j...

2019-11-18 18:03:12 1312

原创 0_时间复杂度的计算

算法复杂度算法复杂度分为时间复杂度和空间复杂度。时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。时间复杂度是学习算法的基石,因此在学习算法之前,必须要知道如何去计算一段代码的时间复杂度,下面就根阿导一起来看看吧。如何计算一个程序的时间复杂度如下面一段代码,如何计算它的时间复杂度呢? int a= 10; int b= 10...

2019-11-18 12:16:21 302

原创 Mysql 存储过程遍历无法获取值的坑

毋庸置疑,这肯定是一个悲伤的故事,我这边有一个需求,我要对一些记录和日志表进行迁移备份,介于当下条件,我们没有使用 MaxCompute 进行备份,也没有通过主从数据库关系或者 DTS 等等其它技术进行优雅处理,所以我们当下使用一个比较简单的处理方式,就是通过定时任务进行唤起存储过程进行备份操作。根据以上需求,显而易见,存储过程里面的内容便是核心,其实相对来说也比较简单,无非就是分三步走,如下:...

2019-09-05 10:59:55 763 2

原创 # 随记

linux 系统磁盘满了咋整# 查看文件占用空间cd /df -lh# 查找大文件du -h --max-depth=1# 杀死僵尸进程lsof | grep delete | awk -F ' ' '{ print $2}'|xargs kill -9

2019-06-26 15:01:35 212

原创 数据安全设计

引言:在 web 程序中,数据加密非常重要,对于不用解密的数据,如密码等,一般使用 md5 的加密技术,对于需要解密的数据,我们常用 AES 加密,现在我们来讨论下如何提高数据的安全性。一、对私钥用公钥加密,然后数据进行多次对称加密我觉得,数据的加首先双方约定一个公钥:ABCDEFGHIJKLMNOP签名:QWERTYHJKDLOFJSK数据加密次数:n加密随机密钥首先对公钥进行...

2019-05-15 20:19:08 3181

原创 浅谈垃圾回收

引言一直都想写一篇博客结合前辈的经验去阐述自己对垃圾回收的理解,但阿导本人经验尚欠,怕写的不好,所以拖了很久很久,文章中不足之处,还请多多包涵。垃圾回收的背景垃圾回收(Garbage collection),简称 GC,很多人都认为它是伴随 JAVA 的衍生物,其实不然,1960年Lisp这门语言中就使用了内存动态分配和垃圾回收技术,GC 比 JAVA (1995年诞生)要久远的多。垃圾回...

2019-03-13 08:59:09 949

原创 反射优化之方法句柄

简介对于反射,相信从业 java 开发的人多多少少有些耳闻,在 jdk 1.7 为了间接调用方法引入了另一个新的 API ,即方法句柄。在方法句柄里面,有两个重要的类分别是 MethodType 和 MethodHandle,下面允许我做个名词解释。MethodType方法签名不可变对象,即对方法的一个映射,包含返回值和参数类型。在 lookup 时也是通过它来寻找的。每个方法句柄都有...

2019-02-25 11:29:41 479

原创 为什么说 java 是按值传递

值传递和引用传递我们这边所说的传递主要发生过程在调用方法的时候实际参数与形式参数之间的传递。定义值传递(pass by value):在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。引用传递(pass by reference):指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。...

2019-02-20 15:48:00 984 2

原创 Zookeeper 教程

Zookeeper作为Hadoop和Hbase的重要组件,可以为分布式应用程序协调服务,同时还能使用Java和C的接口。Zookeeper 概述ZooKeeper 是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper 通过其简单的架构和 API 解决了这个问题。ZooKeeper 允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式...

2019-02-14 09:54:20 294

原创 nginx一些配置

负载均衡和反向代理一般来说负载均衡我们比较关心一下几点:上游服务器配置: 使用 upstream server 配置上游服务器负载均衡算法: 配置多个上游服务器时的负载均衡机制失败重试机制: 配置当超时或上游服务器不存活时,是否需要重试其他上游服务器服务器心跳检查: 上游服务器的检查心跳/心跳检查nginx 作为负载均衡器/反向代理服务器如下图所示:upstream 配置给...

2019-01-16 20:19:25 706 2

原创 dataworks 2.0 开发整理

dataworks 简介本文将为您介绍什么是DataWorks,以及DataWorks的功能、约束与限制。DataWorks(数据工场,原大数据开发套件)是阿里云数加重要的PaaS平台产品,提供数据集成、数据开发、数据管理、数据治理、数据分享等全方位的产品服务,一站式开发管理的界面,帮助企业专注于数据价值的挖掘和探索。DataWorks基于MaxCompute作为核心的计算、存储引擎,提供了...

2019-01-15 15:00:47 7407 2

原创 Linux 伪集群搭建 Hadoop

环境准备centos 7jdk 1.8hadoop-3.1.1安装步骤安装 jdk(略)下载 hadoop-3.1.1wget http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-3.1.1/hadoop-3.1.1.tar.gz解压 hadoop-3.1.1,并进入目录tar -zxvf hadoop-3...

2018-11-21 14:55:56 205

原创 Linux 安装 kafka(单机集群)

前言因为个人比较穷,所以只用一台服务器作为示例,请大家见谅,只要大家会举一反三,这些都不是问题,写得不好的地方,请大家多多包涵,阿导不胜感激。准备工作centos 7zookeeperkafka因为花名阿导,所以我会在根目录创建一个文件夹 dao,然后创建 zookeeper 和 kafka 两个文件夹,具体命令如下所示:cd /mkdir daocd daomkdir ...

2018-11-20 17:10:40 1010 1

原创 LVS+Keepalived 实现高可用负载均衡

# LVS+Keepalived实现高可用负载均衡一、原理1、概要介绍如果将 TCP/IP 划分为 5 层,则 Keepalived 就是一个类似于 3~5 层交换机制的软件,具有 3~5 层交换功能,其主要作用是检测 web 服务器的状态,如果某台 web 服务器故障,Keepalived 将检测到并将其从系统中剔除,当该 web 服务器工作正常后 Keepal...

2018-10-30 16:20:45 275

原创 docker 常用命令

查看本地镜像docker images [image name]或者 docker image ls [image name] [image name]: 指定需要查看的镜像 参数说明 REPOSITORY:仓库名称 TAG:标签名称 IMAGE ID:镜像ID CREATED:创建时间 SIZE:所占用的空间 拉取远程镜像到本地do...

2018-10-24 11:13:13 182

原创 Linux 搭建 openresty ,对 nginx 二次 开发

安装一些需要的依赖yum install readline-devel pcre-devel openssl-devel gcc为了支持 http2 ,依次执行以下命令cd /opt/wget https://www.openssl.org/source/openssl-1.0.2-latest.tar.gztar -zxvf openssl-1.0.2-laest.tar...

2018-10-17 18:30:03 1247

原创 java 对图片进行压缩

图片压缩大法为了防止用户流量的丢失,即使在5g 即将来临的情况下,压缩算法依旧是很有必要的,额跑题了,不好意思,今天介绍的不是压缩算法,讲啥呢?主要讲讲如何通过 java 将图片进行压缩,尽可能的控制压缩损比,不仅仅是为了减少存储,其目的是快速呈现给用户,只有良好的体验,才会在当今这个急躁的年代减少流量的损失。开始 java 代码表演,直接给代码吧import com.su...

2018-09-14 17:32:44 32994 10

原创 德鲁伊监控

阿里 druid 数据源监控druid 数据源目前常用的数据源 c3p0、dbcp、proxool、druid,这里只说 druid.因为德鲁伊提供的这个监控组件,非常的便利,让我们直观感受 sql,调用的方法,还有访问 uri 等各方面的情况。Druid 首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个 ProxyDriver,一系列内置的 JDBC...

2018-09-11 20:37:00 3465

原创 如何全局捕捉 eureka 通过 Feign 远程调用出现的异常

万事皆有因 玩过 springcloud 的微服务架构的小伙伴们都知道,在我们通过 eureka 远程调用其他的微服务的时候,防止网络抖动或者程序异常等情况,往往会加上 hystrix 断路器对异常进行处理,但是往往在处理的时候一般都是记录一些日志高速开发者哪里出问题了,参数是什么,又或者其他的处理 然而,很多人使用 Feign 的时候 rollback 都是继承被调用的 Fe...

2018-08-09 18:47:34 3987 5

原创 使用 tk.mybatis/mapper-spring-boot-starter 出现获取不到实体类的异常

突现问题 我在重构一个项目的时候,准备使用 tk.mybatis/mapper-spring-boot-starter 2.0.3 版本,过去的项目使用的主版本是1,项目启动正常,调用接口流程里面使用了通用 mapper 的一些方法,在执行下面代码出现异常 Example example = new Example(User.class); 异常如下图,相信大家...

2018-08-08 11:07:11 21198 1

原创 集成 spring-boot 组件攻略

集成 spring-boot 组件教程为什么集成 spring-boot 组件随着 spring-cloud 的流行,功能化的集成spring-boot 组件是大势所趋集成 spring-boot 组件可以使得 spring-cloud 架构更加美观可以使得相似的功能重复使用,比如很多已经集成过的组件,如 mybatis,mq 等避免写很多的 xml 配置文件如何集成,...

2018-07-31 11:45:31 1517

原创 时间真的存在吗?

一些言论 爱因斯坦曾经有一个著名的公式:E=MC方,进而说明当物体达到光速,时间会针对该物体静止;又或者在黑洞旁边,时间会静止。你们怎么看大家都清楚,每天都会日升日落,一年四季交替,究其原因,是因为地球的自转和绕太阳公转造成的,也就是由空间位置决定这种变化的。那么问题来了,时间究竟是个什么东西,相同的距离,谁的速度快,谁用的时间就越少,也就是说时间应该是描述事物进程的...

2018-07-27 17:20:34 7712 3

原创 让 canal 成为 spring boot 组件

canal 集成为 springboot 组件想法随着 spring boot 框架的逐渐流行,越来越多的 spring boot 组件随之诞生,今天阿导带大家一起来实现 canal 集成为 spring boot 的组件的详细过程。我们大佬需要我们做一个数据迁移和数据同步的业务,我就想着将其封装成 springboot 组件,这是写这个组件的初衷。也许还有小伙...

2018-05-30 11:04:32 11523 4

原创 mongodb 【多数据源配置】

mongodb 多数据源配置配置文件 application.properties # mongdb1 spring.data.mongodb.one.uri=mongodb://localhost:27017/dao # mongdb2 spring.data.mongodb.two.uri=mongodb://localhos...

2018-04-17 19:57:42 5108 3

原创 一些误区,遍历次数越少并不一定最优

责任链问题误区:遍历次数越少,速度越快?也许大家觉着遍历的次数越少,速度越快,这是很多程序员的一个误区,程序运行的速度取决于空间复杂度和时间复杂度,若遍历过程中什么事都不干,那无疑遍历次数越少,速度越快,下面我来举一个例子处理集合里面的数据,数字必须为偶数,能被3整除,还必须包含4 抽象类过滤器祖宗,包含两种方式的过滤AbstractFilter....

2018-04-17 15:20:31 845

原创 Linux 安装 docker

docker 简介Docker的三大核心概念:镜像、容器、仓库镜像:类似虚拟机的镜像、用俗话说就是安装文件。容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例,可以将其启动、开始、停止、删除、而这些容器都是相互隔离、互不可见的。仓库:类似代码仓库,是Docker集中存放镜像文件的场所。安装 DOCKER本文以 CentOS 为例执行命令检查内核版本(需要3.0或...

2018-04-13 14:04:40 300

转载 JVM 调优 [感谢原博主]

JVM 调优堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置: java ...

2018-04-12 17:51:56 345 1

原创 代理模式总结

代理模式的三种实现方式代理即替代+管理,也就是说在处理一个类的时候,我们可以控制访问(前置处理)和 善后操作(后置操作),换而言之,便是在原有的功能基础上处理一些其他想做的事情,比如纪录日志。下面分别使用三种方式对以下代码进行代理代理类和被代理类实现的接口 ProxyInterface.java package com.dao.proxy.common;...

2018-04-12 17:01:20 432

转载 类加载机制的奥妙

类加载机制的奥妙1、什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类加...

2018-04-12 12:35:41 428

原创 线程,线程池一些知识点

线程实现线程的三种方式 继承 Thread 类创建线程步骤定义继承 Thread 的子类,并重写 run() 方法创建继承 Thread 的子类实例,即创建了线程对象调用 start() 方法启动线程示例代码继承 Thread 类->MyThread.java package com.dao.thead.core; ...

2018-04-11 16:26:51 615 1

原创 访问者模式

访问者模式(Visitor Pattern)在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。介绍意图:主要将数据结构与数据操作分离。主要解决:稳定的数据结...

2018-04-11 09:30:29 421

原创 传输对象模式

传输对象模式(Transfer Object Pattern)传输对象模式(Transfer Object Pattern)用于从客户端向服务器一次性传递带有多个属性的数据。传输对象也被称为数值对象。传输对象是一个具有 getter/setter 方法的简单的 POJO 类,它是可序列化的,所以它可以通过网络传输。它没有任何的行为。服务器端的业务类通常从数据库读取数据,然后填充 POJO,...

2018-04-11 09:28:52 549

原创 模板模式

模板模式(Template Pattern)在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。介绍意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤...

2018-04-11 09:26:51 425

原创 策略模式

策略模式(Strategy Pattern)在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍意图:定义一系列的算法,把它们一个个封装起来, 并且...

2018-04-11 09:25:21 416

空空如也

空空如也

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

TA关注的人

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