Zzx Blog

Since 2017


  • 首页

  • 标签

  • 分类

  • 归档

  • 公益404

  • 搜索

使用docker搭建chevereto图床

发表于 2019-08-04 | 分类于 Docker , chevereto
平时写博客等需要引用到图片,目前有多种存放图片的方式如七牛云等oss云存储,还有一些免费的图床网站,但这些都不是自主化部署,用起来还是会有一些不适,所以通过docker来搭建一个基于(chevereto)私人图床。
  1. 安装Docker-compose(docker三剑客之一)

    github地址:https://github.com/docker/compose/releases

    中文文档地址:https://yeasy.gitbooks.io/docker_practice/compose/

    1
    2
    curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
阅读全文 »

linux笔记

发表于 2019-06-21 | 分类于 Linux

文件操作

列出文件列表
1
2
ls  -a 显示所有   -l 长格式显示
ll
目录跳转
1
2
3
cd / 进入根目录
cd .. 进入上级目录
cd ~ 回到home目录
阅读全文 »

SpringBoot自动部署服务到Tomcat

发表于 2019-04-20 | 分类于 Java , SpringBoot

安装tomcat7-maven-plugin maven插件

1
2
3
4
5
6
7
8
9
10
11
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://127.0.0.1:8080/manager/text</url>
<username>username</username>
<password>password</password>
<update>true</update>
</configuration>
</plugin>
阅读全文 »

Frp 内网穿透

发表于 2019-04-02 | 分类于 Tools , frp

frp内网穿透基本使用

在没用到ipv6之前,因为公网ip资源限制,为了能像使用公网ip直接访问内网机器的服务,而产生了很多开源的内网穿透工具。

内网穿透工具使用场景为比较复杂的网络环境,例如被NAT的家庭宽带,若没有固定ip,或者没有动态固定ip,就很难远程家里的电脑,或者远程管理家庭路由器等等。

frp内网穿透使用起来比ngrok方便,功能相对来说也更全一些,最新版本的ngrok已经闭源,很遗憾。因此在服务器上换了一种内网穿透方式,原理相同,使用过程有些区别。个人看下来,认为frp配置更人性化。

准备

  • 一台有公网IP的服务器(本例子使用aliyun的服务器,系统 Ubuntu 16.0,配置 1c1t 1g ram 25g rom,30 Mbps 带宽)

    服务器配置

  • 下载服务器对应版本的frp

    1
    2
    3
    4
    5
    6
    7
    8
    // 下载
    wget https://github.com/fatedier/frp/releases/download/v0.25.3/frp_0.25.3_linux_amd64.tar.gz
    // 解压
    tar zxvf frp_0.25.3_linux_amd64.tar.gz
    // 移动到frp 文件夹
    mv frp_0.25.3_linux_amd64 frp
    // 进入frp文件夹
    cd frp
  • frps为服务端 frps.ini为简略配置文件 frps_full.ini 为全配置文件,可以按需求修改

    阅读全文 »

Docker基本使用

发表于 2018-12-18 | 分类于 Docker , Usage

使用Docker部署web应用(Tomcat)

  1. 安装Docker
    • 命令:wget -qO- https://get.docker.com/ | sh (下载并安装)
    • 非root用户需要使用sudo usermod -aG docker runoob 命令,然后重新登陆
    • 启动Docker,sudo service docker start
  2. 安装tomcat镜像

    • 查找服务器的tomcat镜像

      1
      docker search tomcat
    • 选择一个并下载(下载star最多的)

      1
      docker pull  docker.io/tomcat
阅读全文 »

axios下载文件总结

发表于 2018-08-03 | 分类于 Javascript , Vue

总结关于axios下载文件所遇到的问题

  1. 下载文件通常用a标签跳转url,但是需要手动处理参数,比如加token等,参数过多时不适用
  2. axios下载通常方式为添加response拦截的方式
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // contenttype为后端返回的type,可以自定义
    if (res.headers && (res.headers['content-type'] === 'application/x-msdownload' || res.headers['content-type'] === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')) {
    downloadUrl(res.request.responseURL)
    return
    }

    // download url
    const downloadUrl = url => {
    let iframe = document.createElement('iframe')
    iframe.style.display = 'none'
    iframe.src = url
    iframe.onload = function () {
    document.body.removeChild(iframe)
    }
    document.body.appendChild(iframe)
    }
  • 这种方式通过构建iframe来跳转下载
    阅读全文 »

JavaCastException-devtools

发表于 2018-07-26 | 分类于 Java , SpringBoot

研究quartz的过程中,碰到一个bug,不过早晚也会遇到的bug.经过面向搜索引擎编程总算找到

了问题所在,再次记录一下。

  • 先上代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    @Override
    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
    ScheduleJobEntity scheduleJobtest=new ScheduleJobEntity();
    System.out.println(context.getMergedJobDataMap()
    .get(ScheduleJobEntity.JOB_PARAM_KEY).getClass().getClassLoader());
    System.out.println(scheduleJobtest.getClass().getClassLoader());
    if (context.getMergedJobDataMap()
    .get(ScheduleJobEntity.JOB_PARAM_KEY) instanceof ScheduleJobEntity) {
    scheduleJobtest = (ScheduleJobEntity) context.getMergedJobDataMap()
    .get(ScheduleJobEntity.JOB_PARAM_KEY);
    }
    .....省略
    } catch (Exception e) {
    logger.error("任务执行失败,任务ID:" + scheduleJob.getJobId(), e);

    //任务执行总时长
    long times = System.currentTimeMillis() - startTime;
    log.setTimes((int)times);

    //任务状态 0:成功 1:失败
    log.setStatus(1);
    log.setError(StringUtils.substring(e.toString(), 0, 2000));
    }finally {
    scheduleJobLogService.insert(log);
    }
    }
阅读全文 »

ngrok搭建个人服务器,及使用

发表于 2018-05-15 | 分类于 Tools , ngrok

ngrok搭建个人节点,条件:

  1. 服务器一台,含公网ip(本文用的阿里云centos)
  2. 域名一个,并解析到服务器ip(最好用泛解析,本文例子:域名zzx.com, 泛解析A类地址
    “ * ngrok” 到服务器IP ),则之后ngrok用的域名即为ngrok.zzx.com

    步骤

  3. 安装git 和Golang

    1
    apt-get install build-essential golang mercurial git
  4. 下载ngrok源码,地址为ngrok源码地址

    1
    git clone https://github.com/tutumcloud/ngrok.git ngrok
  5. 到ngrok目录,然后生成自签名证书

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    cd ngrok

    NGROK_DOMAIN="ngrok.zzx.com"

    openssl genrsa -out base.key 2048

    openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem

    openssl genrsa -out server.key 2048

    openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr

    openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
阅读全文 »

MyBatis Generator使用及自定义Oracle和Mysql分页插件

发表于 2018-04-26 | 分类于 Java , SpringMVC

用MBG插件生成Pojo,PojoExample(条件类),–Mapper(dao层接口),–Mapper.xml文件,并重写PluginAdapter类,生成自定义分页代码。

Maven加入插件,自定义分页插件依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!--mybatis 逆向生成插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<!-- 定义配置文件 -->
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<!-- 自定义插件 -->
<dependency>
<groupId>com.zzxcn</groupId>
<artifactId>PaginationPlugin</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</plugin>
阅读全文 »

Spring切面记录操作日志

发表于 2018-04-18 | 分类于 Java , Spring

关于Spring AOP的使用–记录系统操作日志

  1. AOP:面向切面编程(面向接口的编程(⊙﹏⊙)),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
  2. 记录数据库操作日志的方法一般有三种:
  • 最原始的,每次执行操作语句后执行记录方法,不好管理,效率低
  • 拦截器:新建一个拦截器的class继承spring web的HandlerInterceptorAdapter类,重写:
  • preHandle:它会在处理方法之前执行,可以用来做一些编码处理、安全限制之类的操作。
  • postHandle:它是在方法执行后开始返回前执行,可以进行日志记录、修改ModelView之类的操作。
  • afterCompletion:最后执行,无论出错与否都会执行这个方法,可以用来记录异常信息和一些必要的操作记录。
  • afterConcurrentHandlingStarted:controller方法异步开始执行时就开始执行这个方法,而postHandle需要等到controller异步执行完成后再执行。
    • 缺点:比较麻烦,不能获取参数
  • AOP,通过加入注解@Aspect,创建切入点。加入注解@Pointcut,配置接入点(配置切入入口,模块,如Controller,Dao),然后在配置文件配置aop:aspectj-autoproxy,即aspectj动态代理。

    具体实现

    阅读全文 »
1…4567
Banksy Zhuang

Banksy Zhuang

66 日志
36 分类
40 标签
Github E-Mail
© 2017 — 2024 Banksy Zhuang
本站已运行