- 博客(124)
- 资源 (10)
- 收藏
- 关注
原创 BeanFactory和FactoryBean接口的区别
Spring版本:5.1.3.RELEASEBeanFactory接口: String FACTORY_BEAN_PREFIX = "&"; Object getBean(String name) throws BeansException; <T> T getBean(String name, Class<T> requiredType) throws B...
2019-04-03 11:50:42
1592
原创 Fix:Skipping MapperFactoryBean with name ‘xxxMapper' mapperInterface
解决Spring Boot应用整合Mybatis启动输出警告日志:[main] o.m.s.mapper.ClassPathMapperScanner - Skipping MapperFactoryBean with name 'channelMapper' and 'io.github.yidasanqian.dao.ChannelMapper' mapperInterface. Bean ...
2019-04-01 17:15:46
15504
原创 Spring Boot启动流程源码分析
Spring Boot启动流程源码分析版本:2.1.1.RELEASE使用main方法启动Spring Boot应用: public static void main(String[] args) { SpringApplication.run(DingtalkApplication.class, args); }进入SpringApplication类的r...
2019-03-29 15:49:01
554
原创 一个用Python实现的高可用低延迟的高匿IP代理池 -- HAipproxy的使用
本文只记录HAipproxy在Scrapy爬虫框架中的使用,前提是你已部署服务端。可以查看haipproxy具体使用说明。如果在部署方面碰到问题可以评论,我看到会帮忙解决。下载源码并解压https://github.com/SpiderClub/haipproxy/archive/master.zip有两种方式调用IP代理池:Python客户端squid二级代理我用的是第...
2018-05-11 12:31:49
4257
原创 Spring Boot + Guava Cache缓存应用实战
Guava Cache缓存应用实战问题背景实际项目碰到一个上游服务商接口有10秒的查询限制(同个账号)。项目中有一个需求是要实时统计一些数据,一个应用下可能有多个相同的账号。由于服务商接口的限制,当批量查询时,可能出现同一个账号第一次查询有数据,但第二次查询无数据的情况。解决方案基于以上问题,提出用缓存的过期时间来解决。这时,可用Redis和Guava Cache来...
2018-05-07 11:47:59
5190
2
原创 HTTP同步客户端类RestTemplate在微服务中的使用
在Spring Cloud中使用依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></depen...
2018-04-17 10:22:49
1378
原创 Java8新特性整理之新的时间和日期API(终章)
前言Java8之前我们使用Date和Calendar这两个类处理时间,但有的特性只在某一个类有提供,比如用 于以语言无关的方式格式化和解析日期或时间的DateFormat方法就只在Date类里有。DateFormat方法也有它自己的问题。比如,它不是线程安全的。这意味着两个线程如果尝试使用同一个formatter解析日期,你可能会得到无法预期的结果。最后,Date和Calendar类...
2018-02-22 10:30:57
4810
原创 Java8新特性整理之CompletableFuture:组合式、异步编程(七)
使用CompletableFuture构建异步应用Future 接口的局限性Future接口可以构建异步应用,但依然有其局限性。它很难直接表述多个Future 结果之间的依赖性。实际开发中,我们经常需要达成以下目的:将两个异步计算合并为一个——这两个异步计算之间相互独立,同时第二个又依赖于第一个的结果。等待 Future 集合中的所有任务都完成。仅等待 Future集合中最快...
2018-02-13 09:10:08
68382
12
原创 Java8新特性整理之Optional取代Null引用(六)
java8之前如何避免空指针异常相信大家在开发中都会碰到NullPointerException 空指针异常导致程序停止的情况。下面就来谈谈在java8之前如何避免空指针异常。一个拥有汽车及汽车保险的客户。Person.javapublic class Person { private Car car; public Car getCar() { ret...
2018-02-12 11:53:47
1257
原创 Java8新特性整理之接口的默认方法(五)
默认方法默认方法由default修饰符修饰,并像类中声明的其他方法一样包含方法体。比如,你可以像下面这样在集合库中定义一个名为 Sized的接口,在其中定义一个抽象方法size,以及一个默认方法isEmpty:public interface Sized { int size(); default boolean isEmpty() { r...
2018-02-11 09:14:58
560
原创 Java8新特性整理之构建流的方式(四)
流的创建方式由值创建流你可以使用静态方法Stream.of,通过显式值创建一个流。它可以接受任意数量的参数。Stream<String> stream = Stream.of("Java 8 ", "Lambdas ", "In ", "Action"); stream.map(String::toUpperCase).forEach(System.out::pr...
2018-02-08 13:43:24
463
原创 Java8新特性整理之流的介绍与使用(三)
流是什么官方定义:支持顺序和并行聚合操作的元素序列。这里有几个关键词,顺序、并行、聚合、元素序列。所谓顺序就是单线程顺序执行,并行就是多线程分解执行,聚合就是将顺序或并行执行的结果计算后得出最终结果,元素序列则是将数据源(数组,文件,集合等)流化后的数据结构。流与集合上面说的还是有些不明朗,下面结合Java中的集合(Collection)来进一步解释流。Java现有的集
2018-02-07 15:33:48
621
原创 Java8新特性整理之方法引用(二)
方法引用语法目标引用 ::方法的名称例子截取字符串的Lambda表达式(str, i) -> str.substring(i) 等效的方法引用String::substring 方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它们.构建方法引用方法引用主要有三类: - 指向静态方法的方法引用(例如Integer的pa
2018-02-06 10:09:37
652
原创 Java8新特性整理之Lambda表达式(一)
前言JDK1.8是Oracle在2014年3月19日发布正式版的,到现在差不多接近四年了,最近公司新项目都使用JDK1.8来开发了。这里总结下JDK8中常用的特性,部分内容整理自《Java 8 In Action》 并加上自己的理解,如有出入欢迎批评指正(✪ω✪)Lambda表达式语法(parameters) -> expression或(parameters)
2018-02-05 14:12:56
674
原创 【开源项目】Dynamic-add-date的使用
介绍Dynamic-add-date是基于Mybatis插件原理开发的可以动态在Insert和Update Sql语句中添加日期列和对应的值的插件。 要求Maven支持jdk7及之后的版本MySql(其它数据库暂未测试)功能自定义要生成的日期列的名称自动处理原始Sql语句中已包含自定义日期列名支持批量插入、批量更新Sql日期列的生成支持忽略表,表名支持正
2018-01-31 17:18:24
518
原创 【Java】IntelliJ IDEA 插件推荐
Random Image Background插件提供可配置的随机图像背景插件地址:https://github.com/allandequeiroz/random_image_background_any_jetbrains_plugin.gitAlibaba Java Coding GuidelinesJava代码规约插件地址:https://github.com/al...
2018-01-31 17:03:39
4564
原创 Spring Boot+Guava Cache+@EnableCaching
Spring Boot集成Guava Cache并配合@EnableCaching注解管理本地缓存依赖dependency> groupId>org.springframework.bootgroupId> artifactId>spring-boot-starter-cacheartifactId>dependency>dependency> gro
2018-01-09 15:03:31
5351
原创 spring boot+atomikos+mybatis+druid分布式事务实现
配置数据源新建配置类DataSourceConfig:public class DataSourceConfig { private static final String PRIMARY_MAPPER_BASE_PACKAGE = "io.github.yidasanqian.mapper.master"; private static final String BUSINESS_M
2017-12-29 17:19:34
5645
4
原创 Linux下Redis集群搭建与测试
集群搭建准备条件一台已经配置好Redis服务的虚拟机,地址为:192.168.2.100:6379克隆6台,使用命令nmtui修改地址分别为:192.168.2.101192.168.2.102192.168.2.103192.168.2.104192.168.2.105192.168.2.106 由于集群的容错机制是超过半数的节点认为某节点挂掉就确认挂掉,因此我们搭建的集群最好是奇数
2017-12-16 13:49:38
7795
原创 Linux之设置服务为开机自启动
添加Tomcat开机自启动服务编辑vi /usr/local/tomcat8/bin/startup.sh在#!/bin/sh下方添加#chkconfig: 2345 80 90#description:tomcat auto start#processname: tomcat建立软连接ln -s /usr/local/tomcat8/bin/startup.sh /etc/rc.d/init.
2017-12-05 15:14:53
652
原创 error Your local changes to the following files would be overwritten by merge
解决步骤 git pull origin master --allow-unrelated-histories如果出现以下错误:error: Your local changes to the following files would be overwritten by merge如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:git stashgit pull origi
2017-11-24 16:48:41
1071
原创 mysql5.7 Access denied for user 'root'@'localhost'
用mysqld --skip-grant-tables来重新启动mysql,然后再修改密码UPDATE user SET authentication_string=PASSWORD('root') where USER='root';
2017-11-22 13:20:20
1486
原创 Spring Boot之分离测试和生产环境的应用配置
多环境应用配置将默认不变的配置,设置在application.properties文件中。新建开发环境下的属性文件application-dev.properties,将开发中的配置,设置在该文件中。新建生产环境下的属性文件application-prod.properties,将生产中的配置,设置在该文件中。最后在application.properties文件中配置:## 开发/测试/生产环境分
2017-11-14 13:43:45
7452
原创 Spring Boot之配置虚拟映射路径
需要先在application.properties属性文件中配置本地上传文件的路径:spring.http.multipart.location=D:/crowd-funding/media/然后将本地上传文件的路径加入到静态资源路径中即可:spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/re
2017-11-07 17:36:44
19449
3
原创 将数据从Java Bean复制到另一个Java Bean
将数据从一个对象复制到另一个对象使用Spring的BeanUtils在开发中我们常会在对象之间设置属性值:Order order = new Order();order.setOrderAmount(orderDTO.getOrderAmount());order.setOrderStatus(orderDTO.getOrderStatus());order.setPayStatus(orde
2017-11-03 10:28:45
26850
原创 解决由于设置BatchExecutor批量执行器而导致无法获取自增Id的问题
在Mybatis中有三种Executor: - SimpleExecutor – SIMPLE 就是普通的执行器。 - ReuseExecutor -执行器会重用预处理语句(prepared statements) - BatchExecutor –它是批量执行器这些就是Mybatis的三种执行器。你可以通过配置文件的settings里面的元素defaultExecutorType,配置它,默
2017-11-02 13:31:06
3238
原创 Oracle11gR2 for Linux 静默安装
使用yum快速部署Oracle安装环境(11g)从http://public-yum.oracle.com/getting-started.html下载对应Linux版本的yum库文件。查看Linux版本信息命令:cat /etc/issue下载到目录 /etc/yum.repos.d/ 下使用yum安装oracle-rdbms-server-11gR2-preinstall包:yum instal
2017-10-20 13:17:00
1567
原创 Mysql服务器无法存emoji表情的解决方案
使用Mysql服务器的utf8字符编码,在存入emoji表情时会报异常:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1 原因:utf8是三字节,utf8mb4是4字节而emoji表情也是4字节。解决方法:修改mysql配置文件my.cnf(windows为my.i
2017-10-20 10:13:03
4955
3
原创 Mybatis插件开发原理
Mybatis插件说明MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)ParameterHandler (getParameterOb
2017-10-19 08:52:30
751
原创 Mybatis使用注解的方式CRUD包括批量插入更新
定义一个Mapper接口:@Mapper@Repositorypublic interface ConfigMapper {}查询注解@Select:@Select("select * from config where id=#{id}")Config findById(Long id);删除注解@Delete:@Delete("delete from config where id=#{
2017-10-17 16:41:06
12140
原创 --author 'yidasanqian' is not 'Name <email>' and matches no existing author
修改git项目的作者信息,提交时遇到错误:--author 'yidasanqian' is not 'Name <email>' and matches no existing author只需要在该项目的.git/config 文件中添加节点:[user] name = yidasanqian email = chenlinyu01@gmail.com以上
2017-09-28 12:39:44
9522
1
原创 org.hibernate.AnnotationException: No identifier specified for entity
启动应用时报以下错误:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/H
2017-09-27 17:00:15
823
原创 Failed to transfer file could not determine the type of file "ftp
使用Intellij IDEA部署项目到远程服务器时报如下错误:Uploading to (服务器ip) failed: could not list the contents of folder "ftp://服务器ip/". Failed to transfer file 'D:\IdeaProjects\target\TogetherCrowdfunding\WEB-INF\classes\c
2017-08-14 13:19:40
5990
原创 Spring Boot Jpa之构建动态SQL查询语句
Spring Boot Jpa构建动态SQL查询语句引入依赖包:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency>DAO接口继承JpaSpecificationExecutor<T>。该接
2017-05-22 16:44:19
35703
1
原创 Spring Boot Jpa之CascadeType
Spring Boot Jpa之CascadeTypeJPA允许您传播从父实体到子级的状态转换。为此,JPA javax.persistence.CascadeType定义了各种级联类型:ALL 级联所有实体状态转换PERSIST 级联实体持久化操作。MERGE 级联实体合并操作。REMOVE 级联实体删除操作。REFRESH 级联实体刷新操作。DETACH 级联实体分离操作。此外,Ca
2017-05-22 13:53:27
25803
4
原创 Set DISPLAY environment variable, then re-run.
export DISPLAY=127.0.0.1:1.0设置DISPLAY为服务器内网IP地址加上1.0
2017-03-17 20:03:54
9271
原创 ./runInstaller: line 97: /home/oracle/database/install/.oui: Permission denied
解决方法:用root用户登录,切换到database目录的上级目录下,依次执行以下命令:chown -R oracle:install database chmod -R 755 database最后文件权限如下图:
2017-03-16 18:54:03
14724
原创 java实现手机短信验证的基本思路
整体流程:客户填入手机号,通过客户端点击获取验证码按钮,验证手机号是否有效(这只在客户端验证手机号),是则浏览器发送ajax请求后台,客户端开始倒计时60s,否则返回;服务器,验证手机号是否被注册或有效,是则调用第三方的短信通信接口并发送相关数据(包括手机号和验证码),然后回调结果,成功则将验证码存入session,失败则返回提示,否则返回。客户收到验证码后在有效时间内,填入并发送请求。服务
2016-09-30 23:53:39
36776
1
翻译 理解 REST
REST (Representational State Transfer)REST (Representational State Transfer) 网上比较容易理解的中文意译:表述性状态转移。REST是为分布式系统而设计的一种架构风格。它不是一个标准,而是一套约束集合,例如无状态性,client/server关联性和统一 的接口。REST不是严格地关联HTTP,但通常会将它们联系在一起。RE
2016-09-16 20:58:30
750
原创 解决Ubuntu下sublime text3无法输入中文的情况
我的环境ubuntu 16.04系统中已经有GCC了,但是这个GCC什么文件都不能编译,因为没有一些必须的头文件,所以要安装build-essential这个软件包,安装了这个包会自动安装上g++,libc6-dev,linux-libc-dev,libstdc++6-4.1-dev等一些必须的软件和头文件的库。可以在新立得里面搜索build-essential或输入下面命令:sudo apt-ge
2016-08-17 16:14:27
898
LaunchMode
2015-10-27
activity-lifecycle
2015-10-23
activit整合SSH三大框架demo
2015-08-03
sqlserver2012管理对象安装包
2014-12-10
GEF-ALL-3.7.2
2014-07-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人