自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 资源 (2)
  • 收藏
  • 关注

原创 MySQL 常用SQL整理

导入sql文件$ source d:/myprogram/database/db.sql;查询查询右表为空的数据select rr.recharge_id, rr.cost_record_id, rr.agent_id, rr.user_id, rr.user_type, rr.amount, rr.cooperation_mode, cr.amount as costAmount, cr.create_time as costCreateTime from t_re

2021-09-11 11:31:51 159

原创 Java - 多线程并发包下常用类 Future CountDownLatch CyclicBarrier Semaphore

文章目录Future、FutureTask和CompletableFutureFutureFutureTaskCompletableFutureCountDownLatchCyclicBarrierSemaphoreFuture、FutureTask和CompletableFutureFuture平时在使用多线程的时候, 是拿不到线程返回值的, 当需要拿到返回值时,需要实现Callable来获取Callable接口定义public interface Callable<V> {

2021-06-04 17:00:13 318

原创 Spring Boot版本与Spring Cloud版本之间对应关系

官方网址:https://start.spring.io/actuator/info"spring-cloud": { "Edgware.SR6": "Spring Boot >=1.5.0.RELEASE and <=1.5.21.RELEASE", "Edgware.BUILD-SNAPSHOT": "Spring Boot >=1.5.999.BUILD-SNAPSHOT and <2.0.0.M1", "Finchley.M2": "Spring.

2021-05-31 14:12:55 2124

原创 压缩备份文件,并清理备份文件

可以利用 linux 的 cron 功能, 达到定时清理磁盘文件的效果#!/bin/bash#clear six months ago files to tarif [ $# != 4 ];then echo -e "./backup_log.sh [源文件路径] [备份文件路径] [备份几天前的文件] [备份保留天数] " exit 1fi# 源文件路径srcPath=${1}# 备份文件路径backupPath=${2}# 备份几天前的文件backupDay.

2021-05-28 11:39:04 194

原创 Java - 通过JSONObject 实现字段权限过滤

Java - 通过JSONObject 实现字段权限过滤public static void main(String[] args) { Map<String, Object> map = new HashMap<>(); map.put("name", "hy"); map.put("password", "123456"); Map<String, String> map2 = new HashMap<>();

2021-05-28 11:33:30 516

原创 05 - Docker Centos8 运行 SpringBoot 项目

Docker Centos8 运行 SpringBoot 项目项目根路径下创建一个 DockerfileFROM openjdk:8-jdk-alpineVOLUME /tmp# 添加生成的jar包到容器中, 容器构建镜像时会指定jar包的路径,所以这里只需要文件名即可ADD [生成的jar包的名字].jar app.jarENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar", "-

2021-05-28 11:29:52 122

原创 04 - Docker Centos8 安装 Jenkins

Centos 8 安装 Jenkins拉取最新版本镜像$ docker pull jenkins查看镜像是否拉取成功$ docker images创建一个本地挂载路径$ mkdir -p /opt/jenkins$ chown 1000:1000 -R /opt/jenkins创建并运行容器$ docker run -itd -p 8080:8080 -p 8081:50000 --name jenkins --privileged=true -v /opt/jenkins:/var

2021-05-28 11:28:02 69

原创 03 - Docker Centos8 安装 Redis

安装 redis在网上找一个redis.conf 配置放到服务器的 /opt/redis/ 下$ mkdir -p /opt/redis/data$ chown 100:101 -R /opt/redis/data$ docker run --restart=on-failure:10 -d \--network=host \--name redis \--log-driver=json-file \--log-opt max-size=100m \--log-opt max-fil

2021-05-28 10:48:03 139

原创 02 - Docker Centos 8 安装 MySQL 5.7

docker 安装配置镜像加速器针对Docker客户端版本大于 1.10.0 的用户您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://zmzshawx.mirror.aliyuncs.com"]}EOFsudo systemctl daem

2021-05-28 10:45:35 200

原创 01 - Docker Centos8 安装

文章目录卸载旧版本安装命令安装 Docker Engine-Community设置仓库设置国内源安装 Docker Engine-Community启动Docker卸载旧版本$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest

2021-05-28 10:44:12 39

原创 00 - Docker 常用命令整理

文章目录基础使用命令镜像管理查看已安装的镜像获取一个新的镜像安装指定版本安装最新版本查找镜像基础使用命令$ docker ps描述: 查看运行中的服务-a: 查看所有服务-l: 查询最后一次创建的容器$ docker start [容器id]描述: 启动服务$ docker stop [容器id]描述: 停止服务$ docker restart [容器id]描述: 重启服务$ docker run -itd --name [实例名称,自己定义] [服务名] /bin/bas

2021-05-28 10:43:24 81

原创 Git 提交规范

Git 提交规范feat: 新功能(feature)fix: 修补bugdocs: 文档(documentation)style: 格式(不影响代码运行的变动)refactor: 重构(即不是新增功能,也不是修改bug的代码变动)chore: 构建过程或辅助工具的变动revert: 撤销,版本回退perf: 性能优化test:测试improvement: 改进build: 打包ci: 持续集成...

2021-05-28 10:28:22 119

原创 Git 常用命令

Git 和 SVN 的比较Git 和 SVN 是目前国内市场最常用的两个版本控制工具,两者的设计理念差异较大.集中式版本控制系统SVN 为集中式的版本控制系统,所有人的代码都集中保存在一个服务器上,所有客户端可以拉取代码,编辑后提交更新到服务器,它的好处是很好的实现了权限控制,也可以清晰的看到其他人提交的记录.缺点也是很致命的:集中式管理如果服务器宕机,则无法提交代码如果代码服务器硬盘损坏,会导致数据丢失,需要做好数据备份当文件过多时,系统庞大,下载库可能需要几个小时切换分支的成本过高查

2021-05-28 10:26:11 279

原创 Swagger Enum 枚举支持注释

Swagger Enum 枚举支持注释正常swagger 提供的参数说明无法识别到枚举的字段值, 只能显示name,通过实现 ModelPropertyBuilderPlugin 自定义description可以实现自己想要的效果首先创建一个注解@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)public @interface SwaggerDisplayEnum { String code() default

2021-04-21 11:52:10 9012

原创 算法 - 01二叉树三种遍历算法

二叉数遍历的三种方法前序遍历,对树中的任意结点来说,先打印这个结点,然后前序遍历它的左子树,最后前序遍历它的右子树。中序遍历,对树中的任意结点来说,先中序遍历它的左子树,然后打印这个结点,最后中序遍历它的右子树。后序遍历,对树中的任意结点来说,先后序遍历它的左子树,然后后序遍历它的右子树,最后打印它本身。package algorithm.tree;import lombok.Data;/** * @author Demon-HY * @description 树节点 * @dat

2021-02-24 11:10:19 112

原创 13-Spring自动装配-@Profile

@Profile@Profile 可以根据当前环境动态的选择是否启用当前配置文件,常用场景用来区分测试和线上环境.我们编写一个获取数据库实例的例子,看一下具体使用,先引入 Maven 依赖:<dependencies> <dependency> <groupId>org.springframework</groupId>...

2020-01-10 15:53:15 300

原创 12-Spring自动装配-方法、构造器装配,Aware注入Spring底层组件

构造器位置的自动装配@Autowired 注解支持添加到: 构造器、参数、方法、属性上.默认注入到 IOC 容器中的组件,容器启动会调用无参构造创建对象,再进行赋值操作,当我们注入对象时,可以写一个有参构造器,加上@Autowired,实现对象的自动注入./** * @author Demon-HY * @date 2019-12-12 */@Servicepublic class...

2020-01-08 18:39:57 180

原创 11-Spring自动装配-@Autowired&@Qualifier&@Primary&@Resource&@Inject

自动装配Spring 利用依赖注入(DI), 完成对 IOC 容器中组件的依赖关系赋值.当我们一个 bean 需要 引用另外一个 bean的时候,可以通过 @Autowired 来引用,引用的 bean 必须得是Spring容器中有的,否则启动会报错;引用方法如下:/** * @author Demon-HY * @date 2019-12-24 */public class Us...

2020-01-08 18:36:11 145

原创 10-Spring属性赋值-@Value

@Value 可以方便的获取配置文件中的属性@Value 的三种用法基本数值: @Value(“值”)SpEl 表达式: @Value("#{}")读取配置文件: @Value("${属性名:默认值[默认值可以省略]}")我们在项目的resources目录下新建一个application.properties文件,里面写入数据库的配置:mysql.url=jdbc:mysql://...

2020-01-08 18:32:56 212

原创 09-Spring生命周期-BeanPostProcessor后置处理器

BeanPostProcessor 后置处理器在 bean 初始化前后做处理,对 bean 初始化方法做了拦截,使用也很简单,新建一个组件实现 BeanPostProcessor 并加入到容器中.BeanPostProcessor 提供了两个方法,实现这两个方法即可:postProcessBeforeInitialization: 在初始化之前调用postProcessAfterInit...

2019-12-16 15:48:06 130

原创 08-Spring生命周期-@Bean指定初始化和销毁方法

bean 的生命周期创建 -> 初始化 -> 使用 -> 销毁我们可以自定义初始化和销毁方法,容器在bean进行到当前生命周期的时候会调用我们自定义的初始化和销毁方法;多实例 bean 容器不会管理初始化和销毁方法,需要自己调用自定义的初始化和销毁方法必须是无参方法通过调用 bean 定义的方法实现初始化和销毁package com.demon.bean;...

2019-12-16 15:46:43 127

原创 07-Spring组件注册-使用FactoryBean注册组件

使用FactoryBean注册组件需要实现FactoryBean接口,然后在Config配置类中通过@Bean注入直接看代码package com.demon.factory;import com.demon.bean.Color;import org.springframework.beans.factory.FactoryBean;/** * @author Demon-HY...

2019-12-10 23:57:33 173

原创 06-Spring组件注册-@Import 导入bean

@Import 可以快速的导入 bean 到 Spring 容器中这种方式注册的 bean 只支持无参构造,并且注册的bean的id默认是全类名,比如导入User.class,打印结果是: com.demon.bean.Userpackage com.demon.config;import com.demon.bean.User;import org.springframework.co...

2019-12-10 23:56:57 432

原创 05-Spring组件注册-@Conditional按照条件注册 bean

@Conditional 可以满足当某个条件为true时注册 bean@Conditional 源码@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Conditional { /** * All {@li...

2019-12-10 23:56:14 109

原创 04-Spring组件注册-@Lazy懒加载

通过 @Lazy 实现 bean 的延迟加载只支持单实例默认单实例是在项目启动时创建对象,通过@Lazy可以在bean第一次使用的时候创建对象编写配置类package com.demon.config;import com.demon.bean.User;import org.springframework.context.annotation.*;import org.spr...

2019-12-10 23:55:31 103

原创 03-Spring组件注册-@Scope设置组件作用域

@Scope设置组件作用域Spring 默认注册的 bean 都是单例模式的,如果需要设置其他模式,则使用@Scope注解,@Scopde一共有4种模式:singleton: 单例,整个容器中只会有一个实例prototype: 多实例,每次获取都会生成一个新的实例request: 一个http请求生成一个实例session: 一个会话生成一个实例单例模式Config2.java...

2019-12-10 23:55:01 136

原创 02-Spring组件注册-@ComponentScan

包扫描的方式如果没有设置包扫描路径,Spring 不会主动去注册 beanXML方式配置包扫描<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/...

2019-12-10 23:52:58 111

原创 01-Spring组件注册-@Configuration&@Bean

通过 @Configuration 注解将 bean 注册到 Spring 容器中XMl 方式注册 bean<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org...

2019-12-10 23:52:01 92

原创 算法-有序的二维数组中查找某个整数是否存在

package com.demon.leetcode;/** * 题目: * 二维数组中每一行都按照从左往右递增的顺序排序,每一列的第一个值都大于上一列的最后一个值,请完成一个函数, * 输入一个二维数组和一个整数, 判断数组中是否包含该整数 * * 思路: * 1. 因为数组中的数是一个递增的,所有首先判断输入的整数是否在数组中的最大值和最小值的区间里面,如果没有则直接返回 ...

2019-11-07 16:04:20 719

原创 算法-字符串倒序打印

package com.demon.leetcode;import java.util.Arrays;/** * 算法-字符串倒序打印 * <p> * 输入:["h","e","l","l","o"] * 输出:["o","l","l","e","h"] * * @author Demon-HY * @date 2019-11-7 */public clas...

2019-11-07 15:27:07 238

转载 细思极恐 - 你真的会写 Java 吗?

作者:Lrwin来源:http://lrwinx.github.io一:导语自2013年毕业后,今年已经是我工作的第4个年头了,总在做java相关的工作,终于有时间坐下来,写一篇关于java写法的一篇文章,来探讨一下如果你真的是一个java程序员,那你真的会写java吗?笔者是一个务实的程序员,望读者看后,能有所收获。二:文章核心其实,本不想把标题写的那么恐怖,只是发现很多...

2019-09-11 13:42:55 205

原创 基于 Redisson 实现分布式锁

之前业务里面实现分布式锁,是通过redis的计数器来实现的,那种方式当服务宕机时,key会永久保存在redis里面,所以切到 redisson上,redisson获取锁时解决了死锁问题,底层通过调用lua脚本来实现写入key和设置过期时间的原子性.更多redisson 的信息可以参考官方文档:https://yq.aliyun.com/articles/554765?spm=a2c4e...

2019-08-19 10:51:44 903

原创 Java - 基于 redis 的分布式锁实现

package com.km.config.configuration;import com.km.exception.RedisLockException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowire...

2019-08-12 12:20:31 166

原创 Java - 拷贝亿赛通项目

拷贝亿赛通加密的 Java 项目公司电脑使用亿赛通加密,导致所有的java文件都被加密了,一些自己写的项目没办法在家里打开,所以想到通过拷贝时修改文件后缀的方式避免加密.package com.file;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;/**...

2019-07-31 13:51:14 3003 11

原创 Java - SnowflakeIdWorker 分布式全局唯一Id生成方案

使用Twitter的snowflake算法方案snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。具体实现的代码可以参看:https...

2019-07-30 17:12:06 8445

原创 Java - 反射工具类

反射工具类package com.demon.common.utils.reflect;import com.demon.common.core.text.Convert;import com.demon.common.utils.DateUtils;import org.apache.commons.lang3.StringUtils;import org.apache.comm...

2019-07-25 10:23:26 328

原创 Java 字符串常用工具类

字符串常用工具类package com.demon.common.utils;import com.demon.common.core.text.StrFormatter;import java.lang.reflect.Array;import java.nio.charset.StandardCharsets;import java.util.Collection;impo...

2019-07-24 18:11:55 582

原创 Java - 字符串格式化

字符串格式化package com.demon.common.core.text;import com.demon.common.utils.StringUtils;/** * 字符串格式化 * * @author Demon-HY */public class StrFormatter { private static final String EMPTY_JS...

2019-07-24 18:09:49 302

原创 算法-选择排序

package com.demon.algorithm;import java.util.Arrays;/** * 选择排序步骤(升序): * 1. 找到未排序数组中的最小元素,存放到数组开头(从起始下标开始作为已排序序列) * 2. 继续查找未排序数组,将最小元素放到已排序序列的末尾 * 3. 重复 2 步骤,直到所有元素排序完毕 * <p> * 注意: * ...

2019-05-06 16:57:26 96

原创 算法-冒泡排序

package com.demon.algorithm;import java.util.Arrays;/** * 冒泡排序步骤(升序): * 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个 * 2. 重复 1 步骤,直到遍历完,此时数组的最大下标的值为最大值 * 3. 重复 2 步骤,遍历时不遍历已经排好序的最后的数组,就是每次遍历时,最大下标减1 * <p...

2019-05-06 15:49:36 67

javacToJava.bat

批量修改目录及子目录下的 *.javac 为 *.java,有问题可以联系我: [email protected]

2019-07-31

空空如也

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

TA关注的人

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