- 博客(35)
- 收藏
- 关注
原创 docke版nginx搭建
步骤一:mkdir -p /usr/local/nginx/{conf,logs,conf.d,html,cert}步骤二:docker pull nginx步骤三:编写nginx.conf#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/
2021-12-07 09:31:27 172
原创 linux7 Prometheus+Node_export+Grafana搭建linxux服务器监控
Prometheus安装:步骤一:解压安装包tar -zxvf prometheus-2.30.0.linux-amd64.tar.gz 步骤二:修改文件名称移到指定的目录下mv prometheus-2.30.0.linux-amd64 /usr/local/prometheus步骤三:将prometheus做成服务cat > /etc/systemd/system/prometheus.service <<EOF[Unit]Description=Prometheu
2021-09-16 14:00:39 208
原创 linux7.6 -mysql5.7在线安装
在线安装方式:步骤一: rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm步骤二:yum install -y mysql-server步骤三:systemctl start mysqld步骤四;systemctl enable mysqld步骤五:systemctl stop firewalld 或者 开放端口firewall-cmd --zone=public --
2021-09-16 11:12:18 194
原创 GitLab、Jenkins搭建
设置主机名:hostnamectl set-hostname xxxxGItLab搭建:更换清华源:vim /etc/yum.repos.d/gitlab-ce.repogitlab-ce.repo文件填写:[gitlab-ce]name=Gitlab CE Repositorybaseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/gpgcheck=0enabled=1yum安装yum
2021-09-15 13:26:33 251
转载 SpringBoot使用jasypt加解密密码
SpringBoot使用jasypt加解密密码在我们的服务中不可避免的需要使用到一些秘钥(数据库、redis等)开发和测试环境还好,但生产如果采用明文配置讲会有安全问题,jasypt是一个通用的加解密库,我们可以使用它。 com.github.ulisesbocchio jasypt-spring-boot-starter 2.1.1配置文件:复制代码加密的密钥测试环境可以采用在配置文件中配置生产环境建议采用启动参数的形式传入其他配置参数参考:com.ulises
2021-07-22 10:37:48 314
原创 SpringBoot系列 - 集成Shiro权限管理
Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,相比Spring Security而言相当简单, 可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西, 所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。本教程只介绍基本的Shiro使用,不会过多分析源码等,重在使用。Shiro架构Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可
2021-06-21 14:09:26 167
原创 SpringBoot系列 - 集成JWT实现接口权限认证
一般来讲,对于RESTful API都会有认证(Authentication)和授权(Authorization)过程,保证API的安全性。Authentication指的是确定这个用户的身份,Authorization是确定该用户拥有什么操作权限。认证方式一般有三种Basic Authentication这种方式是直接将用户名和密码放到Header中,使用Authorization: Basic Zm9vOmJhcg==,使用最简单但是最不安全。TOKEN认证这种方式也是再HTTP头中,使用A
2021-06-21 13:51:26 848
原创 SpringBoot系列 - 异步线程池
在项目中,当访问其他人的接口较慢或者做耗时任务时,不想程序一直卡在耗时任务上,想程序能够并行执行, 我们可以使用多线程来并行的处理任务,也可以使用spring提供的异步处理方式@Async。Spring异步线程池的接口类,其实质是java.util.concurrent.Executor。Spring 已经实现的异常线程池:SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。SyncTaskExecutor:这个类没有实现异步调用,只是一个
2021-06-21 13:42:52 1203
原创 SpringBoot系列 - 定时任务
很多时候,我们需要在每天的某个固定时间或者每隔一段时间让应用去执行某一个任务。 为了实现这个需求,通常我们会通过多线程来实现这个功能,但是这样我们需要自己做一些比较麻烦的工作。 接下来,让我们看看如何使用Spring scheduling task简化定时任务功能的实现。默认,springboot已经支持了定时任务Schedule模块,所以一般情况已经完全能够满足我们的实际需求, 一般来说,没有必要再加入Quartz2了,不过你要是有更高级需求也可以整合Quartz2进来。定时任务架构一般来说,实际项
2021-06-21 13:40:11 244
原创 SpringBoot系列 - 多数据源配置
项目中经常会出现需要同时连接两个数据源的情况,这里还是演示基于MyBatis来配置两个数据源,并演示如何切换不同的数据源。网上的一些例子都写的有点冗余,这里我通过自定义注解+AOP的方式,来简化这种数据源的切换操作。maven依赖<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEnco
2021-06-21 13:24:35 287
原创 SpringBoot系列 - 使用RestTemplate
spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。RestTemplate默认依赖JDK提供http连接的能力(HttpURLConnection),如果有需要的话也可以通过setRequestFactory方法替换为例如 Apache HttpCom
2021-06-21 13:18:43 682
原创 SpringBoot系列 - 自己写starter
Spring Boot由众多Starter组成,随着版本的推移Starter家族成员也与日俱增。在传统Maven项目中通常将一些层、组件拆分为模块来管理, 以便相互依赖复用,在Spring Boot项目中我们则可以创建自定义Spring Boot Starter来达成该目的。可以认为starter是一种服务——使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息, 由Spring Boot自动通过classpath路径下的类发现需要的Bean,并织入相应的Bean。举个栗子,sprin
2021-06-21 13:12:58 154
原创 SpringBoot系列 - 使用AOP
AOP(面向切面编程)是Spring的两大核心功能之一,功能非常强大,为解耦提供了非常优秀的解决方案。 现在就以springboot中aop的使用来了解一下如何使用aop。 写几个简单的Spring RESTful服务接口方法,实现方法前面或后面打印日志。AOP术语定义Spring的AOP中有几个重要概念搞清楚就行执行点(Executepoint) - 类初始化,方法调用。连接点(Joinpoint) - 执行点+方位的组合,可确定Joinpoint,比如类开始初始化前,类初始化后,方法调用前,方法
2021-06-18 14:25:27 218
原创 聊聊Reactor I/O模型
聊聊Reactor I/O模型发表于 2018-04-05 分类于 java上一篇介绍了Unix系统支持的I/O模型,以及相应的在Java中的实现方式。本篇重点讲解一下Reactor模型原理和实现机制。I/O多路复用又被称为”事件驱动”,就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪), 能够通知程序进行相应的读写操作,技术上是通过调用操作系统的select、pselect、poll、epoll来实现。与多进程和多线程技术相比,I/O多路复用技术的最大优
2021-06-18 13:56:17 177
原创 聊聊Java中的几种I/O模型
同步、异步、阻塞、非阻塞都是和I/O(输入输出)有关的概念,最简单的文件读取就是I/O操作。而在文件读取这件事儿上,可以有多种方式。本篇会先介绍一下I/O的基本概念,通过一个生活例子来分别解释下这几种I/O模型,以及Java支持的I/O模型。在解释I/O模型之前,我先说明一下几个操作系统的概念基本概念文件描述符fd文件描述符(file descriptor)是计算机科学中的一个术语,是一个用于表述指向文件的引用的抽象化概念。文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一
2021-06-18 13:44:23 95
原创 使用WatchService监听文件变化
在Java 7发布的新的IO框架中,除了大家都熟知的 FileVisitor 接口外,还有个 WatchService 接口经常被人忽视掉。 这个类可以让你实时的监控操作系统中文件的变化,包括创建、更新和删除事件。WatchService 用来观察被注册了的对象的变化和事件。它和Watchable两个接口的配合使用, WatchService类似于在观察者模式中的观察者,Watchable类似域观察者模式中的被观察者。而Java 7中的java.nio.file.Path类就实现了Watchable接口
2021-06-18 13:24:07 780
原创 Java8中的lambda表达式
2014年3月18日,Oracle终于发布Java8正式版。在新的版本里面加入了很多特性, 总共增加了55个新特性,其中最最吸引人的就是Lambdas表达式和Stream函数式编程,本文详细讲解这两个特性。其他特性比如日期API,泛型,反射,注解,集合框架,并发,Nashorn引擎等等这里暂时就不详细介绍了。 具体可以参考:http://openjdk.java.net/projects/jdk8/featuresJava并发编程演变:版本 发布年份 并发技术1.4 2002 java.lang.T
2021-06-18 13:07:53 107
原创 java中的回调函数
所谓回调,就是允许客户类通过内部类引用来调用其外部类的方法,这是一种非常灵活的功能。情形一假设有一个老师Teacher对象,平时的工作是上课,周末的工作在家干农活(乡村老师大部分都这样),方法名都是work,但功能都不一样,可以用内部类实现这种需求:public class Teacher { // 正常的工作 public void work() { System.out.println("平常我在给学生教课"); } // 业余的工作 p
2021-06-18 11:27:19 473
原创 fastjson对Date的处理
fastjson对日期的序列化方式一种方法是通过注解(format=“yyyy-MM-dd HH:mm:ss”)public Date birthday;另一种是通过SerializeConfig:private static SerializeConfig mapping = new SerializeConfig();private static String dateFormat;static {dateFormat = “yyyy-MM-dd HH:mm:ss”;mapping.p
2021-06-18 11:18:03 1495
原创 Jrebel激活
一般一个产品的生命周期就像一个抛物线。JRebel 亦是如此。做 Java 开发,离不开热发布、热部署。JRebel 就是一套 JavaEE 开发工具JRebel 可快速实现热部署,节省了大量重启时间,提高了个人开发效率。JRebel 是一款 JAVA 虚拟机插件,它使得 JAVA 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。JRebel 使你能即时分别看到代码、类和资源的变化,你可以一个个地上传而不是一次性全部部署。当程序员在开发环境中对任何一个类或者资源作出修改的时
2021-05-21 16:30:30 5564 3
原创 利用@LoginUser注解给用户实体参数进行赋值
步骤一:写个注解类指定该类作用到参数上/** * 登录用户信息 * @author Administrator * */@Target(ElementType.PARAMETER)@Retention(RetentionPolicy.RUNTIME)public @interface LoginUser {}步骤二:写个拦截器将用户的user_id写入到request域中,中间忽略权限校验的业务代码/** * 权限(Token)验证 * @author Administrato
2021-05-08 10:48:01 1163
原创 Spring-Aop-AspectJ应用Demo
1.导入相关的依赖 <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.9</version> </dependency> <!-- https://mvnreposit
2021-05-08 09:01:10 143
原创 微信支付步骤
微信支付步骤1.此接口可以返回base64加密后的支付码信息以及订单编号信息@ApiOperation(value = "根据挂号单号支付")@ApiImplicitParam(name = "appointNo", value = "挂号单号", required = true)@PostMapping("/toAppointPay")public ResponseInfo toAppointPay(String appointNo, @LoginUser User user, HttpServ
2021-05-07 10:54:57 784
原创 微信扫码登录步骤
微信扫码登录步骤第一步: 生成登录二维码链接的请求接口,比如,链接中appid、redirect_url、scope、state参数需要填充@ApiOperation(value = "web端微信扫码登录")@PostMapping("/webWxlogin")@IgnoreAuthpublic ResponseInfo webWxlogin() { String oauthUrl ="https://open.weixin.qq.com/connect/qrconnect?appid=
2021-05-07 10:31:20 3006
原创 #java 中的锁 -- 偏向锁、轻量级锁、自旋锁、重量级锁
之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的:单线程下synchronized效率最高(当时感觉它的效率应该是最差才对);AtomicInteger效率最不稳定,不同并发情况下表现不一样:短时间低并发下,效率比synchronized高,有时甚至比LongAdder还高出一点,但是高并发下,性能还不如synchronized,不同情况下性能表现很不稳定;LongAdder性能稳定,在各种并发情况下
2021-03-11 20:37:31 145
原创 彻底征服 Spring AOP 之 理论篇
基本知识其实, 接触了这么久的 AOP, 我感觉, AOP 给人难以理解的一个关键点是它的概念比较多, 而且坑爹的是, 这些概念经过了中文翻译后, 变得面目全非, 相同的一个术语, 在不同的翻译下, 含义总有着各种莫名其妙的差别. 鉴于此, 我在本章的开头, 着重为为大家介绍一个 Spring AOP 的各项术语的基本含义. 为了术语传达的准确性, 我在接下来的叙述中, 能使用英文术语的地方, 尽量使用英文.什么是 AOPAOP(Aspect-Oriented Programming), 即 面向切面
2021-03-11 20:32:09 99
原创 maven阿里云镜像配置
##maven阿里云镜像setting.xml配置 <?xml version="1.0" encoding="UTF-8"?><!--Licensed to the Apache Software Foundation (ASF) under oneor more contributor license agreements. See the NOTICE filedistributed with this work for additional informationr
2021-03-08 22:08:09 445
原创 linux安装docker资料
docker教程:https://www.runoob.com/docker/docker-tutorial.html卸载docker较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotat
2021-03-07 18:07:53 119
原创 VmBox下安装linux CentOS-7资料
vmboxVirtualBox-5.2.22-126460-Win.exeCentOS-7-x86_64-DVD-1810.iso最小服务器网络模式桥接模式:虚拟机和主机在同一个局域网中,占用局域网IP。NAT模式:通过服务网络转发,不占用局域网IP,端口映射,建议大家用这种方式。两种都可以。全局设定网络端口转发设置nat网络,配置端口IP分配192.168.120.0-24master:192.168.120.3node1:192.168.120.4node2:192.
2021-03-07 18:03:00 297
原创 Netty、RPC资料
Netty 与 RPCNetty 原理Netty 是一个高性能、异步事件驱动的 NIO 框架,基于 JAVA NIO 提供的 API 实现。它提供了对TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞的,通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果。Netty 高性能在IO编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者IO多路复用技术进行处理。IO多路复用技术通过把
2021-03-06 21:41:38 130
原创 微服务资料
微服务服务注册发现服务注册就是维护一个登记簿,它管理系统内所有的服务地址。当新的服务启动后,它会向登记簿交待自己的地址信息。服务的依赖方直接向登记簿要Service Provider地址就行了。当下用于服务注册的工具非常多 ZooKeeper,Consul,Etcd, 还有 Netflix 家的 eureka 等。服务注册有两种形式:客户端注册和第三方注册。客户端注册(zookeeper)客户端注册是服务自身要负责注册与注销的工作。当服务启动后向注册中心注册自身,当服务下线时注销自己。期间还需要和注
2021-03-06 21:36:09 89
原创 spring、sringBoot资料
Spring 原理它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。Spring 特点轻量级控制反转面向切面容器框架集合Spring 核心组件Spring 常用模块Spring 主要包Spring 常用注解bean 注入与装配的的方式有很多种,可以通过 xml,get set 方式,构造函数或者注解等。简单易用的方式就是使用 Spring 的注解了,Spring 提供了大量的注解方式。Spring
2021-03-06 21:28:33 276
原创 java基础知识资料
JAVA 基础JAVA** 异常分类及处理概念如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。异常分类Throwable 是 Java 语言中所有错误或异常的超类。下一层分为 Error 和 Exception*Error*Error 类是指 java 运行时系统的内部错误和资源耗尽错误。应用程序不会
2021-03-06 21:14:56 95
原创 JAVA 多线程并发资料
JAVA 多线程并发JAVA 并发知识库JAVA 线程实现**/**创建方式继承 Thread 类Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过 Thread 类的 start()实例方法。start()方法是一个 native 方法,它将启动一个新线程,并执行run()方法public class MyThread extends Thread { public void run() { System.out
2021-03-06 19:34:20 143
原创 java虚拟机JVM资料
JVM(1) 基本概念:JVM是可运行Java代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。(2) 运行过程:我们都知道 Java 源文件,通过编译器,能够生产相应的.Class 文件,也就是字节码文件,而字节码文件又通过 Java 虚拟机中的解释器,编译成特定机器上的机器码 。也就是如下:① Java 源文件—->编译器—->字节码文件② 字节码文件—->JVM—
2021-03-06 19:15:55 75
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人