- 博客(29)
- 收藏
- 关注

原创 推荐一款微信小程序《诗词万卷》
推荐一款诗词阅读小程序------《诗词万卷》《诗词万卷》基于开源诗词数据库,共收录有唐诗五万首、宋诗25万首、宋词2万首。使用方法:用户进入小程序后,会自动推荐诗词下拉页面可刷新诗词搜索页面支持按诗词名、作者、诗句关键字搜索双击诗句可选择长按页面空白处可复制全诗注意事项:因为诗词中有不少通假字,全国不同省份的转义或有不同,搜索诗句时或因此失败,可替换关键字或通假字搜索。使用...
2019-02-11 23:12:24
6742
1
原创 SpringBoot启动时初始化资源的几种方法
SpringBoot提供了多种方法可实现在启动过程中初始化资源使用注解@PostConstruct实现InitializingBean接口实现CommandLineRunner接口实现ApplicationRunner接口监听Spring事件ContextRefreshedEvent以上5个方法的执行顺序为:Bean初始化-》依赖注入-》@PostConstruct-》Initi...
2019-09-04 00:06:38
3421
1
原创 自定义注解注入属性值(基于类构造方法)
本文将举例说明如何通过构造方法来处理注解,实现属性注入自定义注解Name实现超类,定义注解处理方法子类使用注解自定义注解Name定义一个注解“Name”,Name注解可以接收一个String类型的属性,并且可以使用在类或者属性上@Target({ElementType.TYPE, ElementType.FIELD})@Retention(RetentionPolicy.RUNT...
2019-02-17 01:28:50
3170
原创 自定义注解注入属性值(基于反射和静态变量)
如何通过Spring配置类处理注解定义注解定义一个Spring配置类在配置类中使用Java反射注入静态属性定义注解定义一个注解“Name”,Name注解可以接收一个String类型的属性,并且可以使用在类或者属性上@Target({ElementType.TYPE, ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)@D...
2019-02-17 01:01:22
4227
原创 SpringBoot中使用Spring Cache(一)
Spring Cache简介在很多频繁调用方法的场景,假如我们不需要每次调用的方法都是实时更新的,此时可以使用缓存机制。缓存实现方式有很多种,可以使用redis、本地内存缓存、各种Cache框架。而在SpringBoot框架中,天然支持Spring Cache的使用,且接入尤为简单。Spring Cache的简单原理:依赖于Spring Bean的切面机制来实现缓存,针对每个@CacheCon...
2019-02-11 22:44:27
847
原创 SpringCloud入门(四)之基于Zuul的反向代理
SpringCloud入门(四)之基于Zuul的反向代理什么是Zuul基于Zuul的反向代理实战新建服务ApiGateWay引入Zuul依赖启动Zuul反向代理配置路由测试什么是ZuulZuul是netflix公司的项目,其功能主要有反向代理、负载均衡等。下面我们来实战下如何通过Zuul来实现反向代理基于Zuul的反向代理实战完整参考代码github引入zuul依赖使用注解@Ena...
2018-12-09 23:58:28
655
原创 SpringCloud入门(三)之基于Feign的服务间接口调用
SpringCloud入门(三)之基于Feign的服务间接口调用什么是Feign基于Feign的服务间接口调用实战创建两个微服务服务提供者引入spring-boot-starter-web依赖创建controller类提供接口配置端口号为8081服务消费者引入openfeign依赖引入服务提供者的接口引入spring-boot-starter-web依赖创建controller类提供接口配置端口号...
2018-12-09 21:57:31
8506
原创 SpringCloud入门(二)之服务注册
SpringCloud入门(二)之服务注册什么是EurekaEuraka客户端注册服务实战引入Eureka依赖使用注解@EnableEurekaClient声明作为Euraka客户端配置服务名和注册中心地址。启动服务什么是EurekaEureka是Spring Cloud Netflix微服务套件中的一部分。Eureka分为服务端和客户端。Eureka服务端也被称为服务注册中心。用于提供...
2018-12-09 17:16:24
298
原创 SpringCloud入门(一)之Eureka注册中心
SpringCloud入门之Eureka注册中心什么是Eureka启动Eureka服务中心实战引入Eureka依赖使用注解@EnableEurekaServer启动注册中心;关闭服务注册中心的客户端功能启动服务什么是EurekaEureka是Spring Cloud Netflix微服务套件中的一部分。Eureka分为服务端和客户端。Eureka服务端也被称为服务注册中心。用于提供服务注...
2018-12-09 16:15:25
341
原创 SpringBoot之自定义注解(基于AOP实现)
步骤使用@interface 自定义注解编写注解处理切面类原理通过注解来指定切点缺陷使用Spring AOP实现的切面类只能作用在方法上,所以,基于Spring AOP的自定义注解也只能添加在方法上代码示例完整参考代码github自定义注解import org.springframework.stereotype.Component;import java.lang.a...
2018-11-27 00:14:07
1200
原创 SpringBoot之自定义注解(基于BeanPostProcessor接口实现)
SpringBoot之自定义注解(基于BeanPostProcessor接口实现)步骤原理缺陷代码示例自定义注解接口注解处理类注解使用类测试类注解无效示例测试类步骤使用@interface 自定义注解编写注解处理类,实现BeanPostProcessor接口原理实现BeanPostProcessor接口的类即为Bean后置处理器,Spring加载机制会在所有Bean初始化的时候遍历调...
2018-11-27 00:11:56
10050
原创 SpringBoot中的Bean懒加载————@Lazy
注解说明使用注解: @Lazy效果:一般情况下,Spring容器在启动时会创建所有的Bean对象,使用@Lazy注解可以将Bean对象的创建延迟到第一次使用Bean的时候引入步骤在类上加入@Lazy或者@@Lazy(value=true)示例代码完整参考代码githubBean对象在容器启动时创建通过代码结果打印可以看出,在Spring容器启动中,就执行了MyLazy对象的创建...
2018-11-18 19:36:06
45235
原创 SpringBoot中的Bean作用域————@scope
注解说明使用注解: @scope**效果:指定Bean的作用域 ,默认的是singleton,常用的还有prototype **Scope的全部可选项singleton 全局只有一个实例,即单例模式prototype 每次注入Bean都是一个新的实例request 每次HTTP请求都会产生新的Beansession 每次HTTP请求都会产生新的Bean,该Bean在仅在当前se...
2018-11-18 18:41:38
6841
原创 SpringBoot中的Bean初始化方法——@PostConstruct
注解说明使用注解: @PostConstruct效果:在Bean初始化之后(构造方法和@Autowired之后)执行指定操作。经常用在将构造方法中的动作延迟。备注:Bean初始化时候的执行顺序: 构造方法 -> @Autowired -> @PostConstruct代码示例注解示例@Componentpublic class PostConstructTest1 {...
2018-11-15 23:07:51
50582
1
原创 SpringBoot中的定时任务——@Scheduled
使用注解:@Scheduled @EnableScheduling效果:可以实现在指定时间、指定周期执行动作引入步骤:在启动方法前加上@EnableScheduling开启定时任务开关在任务执行方法上加上@Scheduled,并使用cron表达式定义任务执行周期示例代码:package com.makai.annotations;import org.springframew...
2018-11-15 22:49:24
248
原创 推荐一款做题小程序
推荐 推荐推荐一款轻量的做题小程序,操作简单,还可以根据不同需求选择题库。快把你的琐碎时间利用起来吧,排队等车必备良品目前只录入了两个高考题库,欢迎各位看官试用。 有任何使用问题、bug或者题库需求,都可以通过小程序的意见反馈功能联系程序员小哥哥哦! 也欢迎留言评论…… ...
2018-09-10 23:46:55
6285
2
原创 使用Superset创建数据分析图表
条件准备安装superset安装MySQLMySQL数据库中存在可用于连接的数据库(例如我创建了一个school数据库)Superset增加MySql数据库登陆superset界面,选择数据源(Sources)->数据库(Databases)点击右上角加号(Add a new record)填写表单,主要填写以下内容: – 数据库(自定义) – SQLAlch...
2018-06-01 00:44:25
12948
3
原创 在项目中使用SpringMVC全局异常处理
当程序发生错误时,返回错误内容,会搞乱了调用者代码。调用者必须在调用之后即刻检查错误,不幸的是,这个步骤很容易被遗忘。建议在发生错误时抛出异常,调用代码很整洁,绮逻辑不会被错误处理搞乱。/————–《代码整洁之道》SpringMVC提供了一个全局异常处理机制,使用比较简单,网上也有很多介绍的文章,本文主要举例说明在我们项目组是如何使用的。完整的引入全局异常处理机制,包含以下四个类:CustomRe...
2018-05-11 23:05:05
1526
原创 sudo执行脚本失败command not found问题
背景:我们的项目使用了superset(Airbnb开源的数据挖掘平台),superset的运行需要python2.7环境,以前项目部署时候都是手动安装python2.7,然后再安装产品。最近接了一个自动升级python的需求,在开发过程中被linux的环境变量坑了一会。 - 问题1:Python2.7安装完后,为什么执行python -V 还是2.6 - 问题2:安装过程中进行Python编译,...
2018-03-13 23:22:33
9565
原创 基于docker安装superset
安装前准备安装docker检查是否已安装docker(docker version)root@VM-32-248-ubuntu:~# docker versionClient: Version: 1.13.1 API version: 1.26 Go version: go1.6.2 Git commit: 092cba3 Built: ...
2018-02-21 19:16:46
15676
9
原创 ubuntu安装docker实操
安装前检查,查看Ubuntu版本Docker 要求 Ubuntu 系统的内核版本高于 3.10,并且是64位系统uname -alsb_release -aroot@VM-32-248-ubuntu:~# uname -aLinux VM-32-248-ubuntu 4.4.0-53-generic #74-Ubuntu SMP Fri Dec 2 15:59:10 UTC 2016 x86
2018-02-21 19:07:35
597
1
原创 在spring引入log4j
在spring中使用log4j引入log4j软件包配置log4j属性加载log4j配置文件默认加载手动加载使用logger本文的整体代码结构是在已经引入spring基本应用的前提下,在spring配置文件中通过@Bean注解创建一个Logger bean,然后在测试代码中使用。import java.io.File;import java.io.FileInputSt
2017-09-17 18:31:09
11358
1
原创 设计模式之代理模式------动态代理(示例说明)
代理模式为一个对象提供一个替身或占位符以控制对这个对象的访问。通俗点说就是通过使用代理对象来控制对真实对象访问的控制。假设存在一个A对象,他有一个方法叫helloworld();我们想要控制只有部分人才能调用helloworld方法,这是我们采用代理模式,为A对象创建一个代理对象(ProxyA)使用者不直接调用A的方法,而是调用ProxyA的方法,并在ProxyA中对使用者
2017-07-16 18:25:48
274
原创 动态规划------走楼梯问题
假设有10阶楼梯,每次可以跨1阶或者2阶,请问走完10阶楼梯总共有多少种走法?设定一个名为walk(num)的函数,其返回值为走n阶楼梯的走法,则问题为walk(10)设想一下,我们走到最后一步的时候,只有两种可能的走法:1. 走一步,正好走完10阶楼梯,前面走路9阶楼梯2. 走两步,正好走完10阶楼梯,前面走了8阶楼梯所以,走10阶楼梯的问题可以简化为,走9阶
2017-06-25 15:19:37
1414
原创 设计模式初探之三------单例模式与多线程
单例模式:保证系统中一个类只有一个实例。即一个类只有一个对象实例 如何实现:一是单例模式的类只提供私有的构造函数,二是类定义中含有一个该类的静态私有对象,三是该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。以下是具体示例:1、假设有一个企业名为HeadFirstPizzaEnterprise,因为整个程序中只允许有一个HeadFirstPizzaEnt
2017-06-11 17:11:34
362
原创 设计模式初探之二------使用装饰者模式
上篇博文是对工厂模式的一点理解和示例演示。后续发现其中使用的例子可以使用装饰者模式进行优化。装饰者模式:23种设计模式之一,英文叫DecoratorPattern,又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。所谓装饰者,可以在不改变原有代码的前提,拓展一个对象的功能。先前
2017-06-09 21:42:28
316
原创 设计模式初探之一------工厂模式
先梳理一下经常混淆的几个概念简单工厂vs工厂方法vs抽象工厂1、简单工厂使用简单工厂的目的就是封装创建对象的代码(封装成一个工厂类),以后如果创建对象的动作发生改变,只需改变工厂类即可。《Head First设计模式》中认为简单工厂不是一个设计模式,而是一种编程习惯,不管他算不算一种设计模式,只要可以优化代码,就值得我们学习与实践。简单工厂本身的定义很简单,使用起来也不复杂
2017-06-03 22:37:39
299
原创 如何使用纯java config来配置spring mvc
使用xml配置spring是大部分开发者喜欢并通用的,但是对于有代码洁癖或者对于喜欢使用纯java来配置java项目的童鞋来说,从头到尾采用java类来配置spring mvc项目,无疑令人赏心悦目。这次笔者采用mavan来管理项目依赖包,并采用java类来取代常用的spring-context.xml。美中不足的是由于web项目限制,web.xml这个文件还是需要的,不过其中已不再需要配置任
2017-03-13 23:06:14
10523
11
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人