Springboot整合H2 H2是一个用Java编写的数据库,类似tomcat,有自己的安装包,同时又提供了内嵌功能,只需要引入相关jar包即可.既然是内嵌的,那么它的生命周期与当前服务保持一致,即服务启动时开启(并初始化),服务停止后数据消失,正是由于这样的特性,所以特别适合用来做测试.本文采用Springboot+Spring Jpa + h2做演示.依赖关键依赖如下,其他请参考源码<dependency> <groupId>com.h2database</groupId>
Maven常用操作:插件的编写和使用 前言虽然,平时工作基本用不到自定义插件,但手动实现一遍还是很有必要.这样在配置和调用Maven插件时才能做到知其所以然.所以本文的标题其实应该是:当我们在使用Maven插件时我们在使用什么.简单来说,实现自定义插件,只需要继承maven-plugin-api工程中的AbastractMojo并实现无参抽象方法execute即可.不过这还不够,因为还需要考虑goal,phase和入参等操作...
Maven常用操作:上传jar包 前言如果项目是以jar包的形式使用,普通的工具类或者springboot的可执行包,都需要上传到远程仓库保存共享。使用Maven上传Maven中提供了<distributionManagement>标签,可以非常方便上传.一个简单的示例: <distributionManagement> <snapshotRepository> ...
Maven基础整理 前言本文以当前最新发布版maven-3.6.3为例.酌情参考.仓库得益于坐标机制,任何Maven项目使用任何一个构建的方式都是完全相同的。在此基础上,Maven可以在某个位置统一存储所有Maven项目共享的构件。这个统一的位置就是仓库。实际的Maven项目将不再各自存储其依赖文件,它们只需要声明这些依赖的坐标,在需要的时候Maven会自动根据坐标找到相应的构件。分类Maven仓库的分类不...
Gitlab学习笔记(二):备份和升级 备份Gitlab的备份工具使用的是使用的是Ruby编写的rake,它被封装成了gitlab-rake命令,在最新版本12.8.5中又增加了gitlab-backup命令,主要有两个功能-创建(create)和恢复(restore),无论是备份或恢复,都会存放文件,其路径前缀在/etc/gitlab/gitlab.rb中查找backup_path,我的信息如下,即默认备份路径是/var/opt/g...
Gitlab学习笔记(一):CentOS7安装 安装gitlab已经提供了各种生态(debian,rpm及python等)相应的安装脚本,我们是centos7,所以选择rpm方式.官方脚本如下:curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash按理说,此时应该使用yum install g...
Java8 日期处理 Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全。编号类的名称描述1...
Gradle异常:Failed to load native library 'libnative-platform.so' for Linux amd64. 下载好gradle并配置好环境变量后,使用gradle -v测试,报错如下:[yan@yanwei ~]$ gradle -vFAILURE: Build failed with an exception.* What went wrong:Failed to load native library 'libnative-platform.so' for Linux amd64.*...
MySQL集群解决方案(二):Mycat分库分表中间件 简介MyCat是一个主要做数据库读写分离的中间件.目前版本(1.6)推荐架构如下:具体特性可以参考官网介绍需求基于上篇实现的Mysql主从复制,本文需要使用Mycat来解决遗留问题...
制作Mycat的docker镜像 #!/bin/bashcat << EOF > DockerfileFROM java:8ADD http://dl.mycat.io/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz /optRUN cd /opt &&...
MySQL集群解决方案(一):主从复制 准备我是在CentOS上使用docker部署,因此需要提前准备与docker相关的操作.dockerCentOS安装配置映射一个主机对多个虚拟机,所以需要使用不同的具名配置文件夹,比如/etc/mysql/my.cnf.d/master01来做不同mysql-docker实例的启动项的配置区分.除此之外还有数据文档配置的区分:/var/lib/mysql/master01mysql-...
ruby安装及gem源配置 简介可以通过源码、RVM或当前系统自带的包管理(比如debian的apt-get)工具安装RVMgpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB\curl -sSL https://get.rvm.io | bash -s stable安装...
Redis学习笔记(八):集群 开启集群模式,只需要将redis配置文件中的cluster-enable配置打开即可。每个集群中至少需要三个主数据库才能正常运行,新增节点非常方便。节点握手通过meet命令redis-cli -p ${port} cluster meet ${another_host} ${another_port}# 查看集群信息redis-cli -p ${port} cluster infoc...
Redis学习笔记(八): 哨兵模式 主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。概述哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。作用...
Redis学习笔记(七):主从复制 什么是主从复制是为了解决单机状态下服务器宕机带来的风险.主从复制可以理解为是slave节点通过不间断复制主节点的数据来实现灾难备份的手段之一,它和RDB等持久化的区别在于主从复制是运行时起作用,RDB或AOF则需要重启写入来恢复数据.实现比如我的6380节点希望以slave的角色作为6379节点的从属,那么可以执行redis-cli -p 6380 slaveof 127.0.0.1 6...
Redis学习笔记(六):持久化 默认(代码)配置中就有对于备份的策略,位于SNAPSHOTTING模块下:################################ SNAPSHOTTING ################################## 将数据库数据保存在磁盘上:# save <seconds> <changes># 是否触发操作取决于设置的秒数和期间的操...
Redis学习笔记(五):BitMap BitMap是什么就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身。我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存空间。Redis中的BitMapRedis从2.2.0版本开始新增了setbit,getbit,bitcount等几个bitmap相关命令。虽然是新命令,但是并没有新增新的数据类型,仍然属于String,因为setbi...
Redis学习笔记(四):发布订阅 APIpublish发布命令,publish channel messagePUBLISH sohu "hello world!"返回值是订阅者的数量。subscribe订阅命令SUBSCRIBE sohu此时处于监听状态,一旦有新的消息发布,可以收到并展示。unsubscribe取消订阅,其实在退出当前客户端时就自动取消订阅了。UNSUBSCRIBE [ch...
Redis学习笔记(三):pipeline 背景redis客户端执行一条命令分4个过程:发送命令 -> 命令排队 -> 命令执行 -> 返回结果这个过程称为Round trip time(简称RTT, 往返时间),mget mset有效节约了RTT,但大部分命令(如hgetall,并没有mhgetall)不支持批量操作,需要消耗N次RTT ,这个时候需要pipeline来解决这个问题Jedis测试Jedis j...
Redis学习笔记(二):慢查询 默认配置先查看生效的关于慢查询的默认配置:cat redis.conf | grep slow | egrep -v ^#输出如下:slowlog-log-slower-than 10000slowlog-max-len 128slowlog-log-slower-than慢查询阈值,单位是微秒,其它解释如下:# 记录所有命令slowlog-log-slower-than 0...
Redis学习笔记(一):基础 核心一、Redis单机多实例原理每个实例对应不同的配置文件,配置文件对应不同的端口、数据库文件位置、日志位置。二、Redis单实例多数据库每个Redis实例都有16个数据库,下标从0-15,当 set 一个数据时,默认添加到 db0,而select 命令可以切换当前使用的数据库,例:select 15 Redis三、数据库构造每个数据库相当于一棵树的根节点,子节点可以是Redis定义的...
数据结构-红黑树 前言红黑树和2-3树是等价的,所以首先得理解2-3树。两个问题2-3树是啥?满足二分搜索树的基本性质节点可以存放一个或两个元素,可以有两个或三个孩子2-3树是一种绝对平衡的树,意味着从根节点到任意一个叶子节点所经过的节点数是相同的。为什么说红黑树和2-3树是等价的?定义每个节点非黑即红根节点为黑每一个叶子节点(最后的空节点)是黑色的如果一个节点是红色的...
数据结构-AVL 简介普通的二分搜索树是有可能退化成链表的,这意味着时间复杂度从O(log(n))O(log(n))O(log(n))降至O(n)O(n)O(n),为了规避这种现象,平衡二叉树的概念应运而生。在计算机科学中,AVL树是最先发明的自平衡二叉查找树。AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis,他们在1962年的论文《An algorithm for t...
数据结构-(一维)线段树 简介线段树的本质是由对元数据的区间计算结果缓存组成平衡二叉树(不一定是完全二叉树)缓存结果取决于给定的融合算法,在jdk1.8+中,这个算法可被标记为BinaryOperator<E>类型线段树的元数据和缓存数据均可由数组保存,但不一定是完全二叉树,会存在浪费空间的可能数组的可靠空间大小为元数据个数的4倍,推算过程如下优势区间操作数组线段树...
数据结构-优先队列 优先队列特点这里的特点,主要是和普通队列比较:普通队列: 先进先出,后进后出优先队列:出队和入队顺序无关,和优先级有关。思路优先队列,也是队列,因此需要实现队列接口:public interface Queue<E> { int getSize(); default boolean isEmpty() { return getSize...
数据结构-二分搜索树 简介二分搜索树是二叉树二分搜索树的每个节点的值:大于其左子树所有节点的最大值,小于其右子树所有节点的最小值。添加元素根据二分搜索树的性质,新增一个元素,实现原则如下:如果当前节点为空,则插入如果当前不为空插入元素大于当前元素:在右子树上重复,直到满足第一个条件插入元素小于当前元素:在左子树上重复,直到满足第一个条件总结:采用递归实现,从根节点开始,根据每一级的节点比...
数据结构-二叉树 分类类型满二叉树除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。如果一个二叉树的层数为K,且结点总数是(2^k) -1完全二叉树最底层的节点紧凑靠左可以使用数组表示平衡二叉树最大最小深度差不超过1结构二分搜索树优先队列堆线段树AVL红黑树(黑平衡)遍历树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。...
数据结构-链表 简述最简单的动态数据结构元素值封装在节点Node中,这也给多元素,多类型的存储提供了条件更深入理解引用更深入理解递归 public ListNode removeElements(ListNode head, int val) { if (head == null) return null; head.next = removeEle...
数据结构-队列 简述与栈类似,也是一种线性结构也是数组的子集只能从一端添加元素,而从另一端取出元素,这个另一端叫队首队列是一种先进先出(FIFO–First In First Out)的数据结构应用Java线程池核心类ThreadPoolExecutor接口定义public interface Queue<E> { int getSize(); ...
数据结构-栈 简述栈和数组类似,也是一种线性结构相比数组,栈对应的操作是数组的子集只能从一端添加元素,也只能从同一端取出元素,这一端称为栈顶栈是一种后进先出(LIFO–Last In First Out)的数据结构应用编辑器中的撤销(Undo)操作程序调用的系统栈(方法栈???)联系实际工作中因为逻辑不当导致的StackOverflowError错误。接口定义...
Shell-数组和关联数组 预备知识Bash从4.0版本之后才开始支持关联数组。可以使用bash --version查看。我的输出:GNU bash, 版本 4.2.46(2)-release (x86_64-redhat-linux-gnu)Copyright (C) 2011 Free Software Foundation, Inc.许可证 GPLv3+: GNU GPL 许可证版本3或者更高 <http...
Linux-文件描述符及重定向 文件描述符是与文件输入、输出相关联的整数。它们用来跟踪已打开的文件。最常见的文件描述符是 stdin、 stdout 和 stderr 。我们甚至可以将某个文件描述符的内容重定向到另一个文件描述符中。在编写脚本的时候会频繁使用标准输入stdin、标准输出stdout和标准错误stderr。通过内容过滤将输出重定向到文件是我们平日里的基本任务之一。当命令输出文本时,这些输出文本有可能是错误...
CentOS下忘记MySQL5.7中root密码 修改配置文件vim /etc/my.cnf在[mysqld]下增加一行#或者:--skip-grant-tables,两者区别是有时两个横线会导致服务无法重启需要测试应当添加否。skip-grant-tables 重启systemctl restart mysqld无密码登录UPDATE mysql.`user` SET `authentication_str...
CentOS下的Nginx部署禅道 文章目录环境禅道说明下载配置Linux配置MySQL初始化效果参考环境名称版本CentOS7Nginx16.0php及其扩展7.2禅道11.6unzip6.0MySQL5.7禅道说明禅道官方建议的安装路径是/opt/下,本文遵循官方建议。下载wget http://dl.cnezsoft.com/zentao/11.6...
SSH自动断开连接的解决方法 编辑sshd配置文件vim /etc/ssh/sshd_config找到以下两项配置#ClientAliveInterval 0#ClientAliveCountMax 3修改为#客户端每隔多少秒向服务发送一个心跳数据ClientAliveInterval 30#客户端多少秒没有相应,服务器自动断掉连接ClientAliveCountMax 86400 重启s...
CentOS7安装Docker-Registry 环境Docker版本CentOS7Docker19.03.2docker-registry2.7.0Registry服务器信息IP:192.168.0.122 主机名: uat Domain:uat.cnswb.com服务器端口映射18080:5000Registry客户端信息IP:192.168.0.12 主机名: local-12...
Docker使用桥接模式时内网不通 问题描述使用桥接模式启动微服务后报错,说连不上Redis,其位于本地环境(192.168.0.12:6379)。排查进入容器内部docker exec -it $CONTAINER_ID /bin/bashping 192.168.0.12查看是否与Redis主机互通ping 192.168.0.12此时发现ping不通,问题发现。解决vim /etc/sysctl...
详解UML图之类图 文章目录为什么需要类图?类图的作用怎么画类图?用什么工具?使用工具类(Class)接口(Interface)类图中关系(relation)泛化(Generalization)实现(Realization)关联(Association)聚合(Aggregation)组合(Composition)依赖(Dependency)类图绘制的要点类图的分类领域UML类图vs实现UML类图领域UML类图实现UM...
Linux系统管理员应该知道的journalctl知识 1. 基础用法1.1 查看所有日志(默认显示本次启动的所有日志)journalctl查看本次启动的所有日志也可以使用journalctl -b1.2 查看内核日志journalctl -k1.3 查看指定时间的日志通过–since和–until选项,可以过滤任意时间限制,显示指定条件之前、之后或之间的日志。journalctl --since="2018-09-21 10:...
Mysql-ERROR:1055错误修复 echo "sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" >> /etc/my.cnfsystemctl restart mysqld参考:https://www.cnb...
CentOS磁盘挂载 前言公司刚申请了阿里云磁盘的时候,参考别的博文搞过挂载,由于当时一脸懵逼,没有记录。现在磁盘又不够了,故记录一下。首先,申请的100G磁盘当时没用完,而是分出来60G挂载在/mnt上了,因此,根分区还是用的默认的40G,现在根分区不够了,想起来当时还分了两个空闲的,预备把这俩空闲的分区利用起来,挂载在占用空间较多的/var上。实战使用fdisk -l查看分区情况Disk /dev/v...
Java程序员必备的一些流程图 原文作者: Jay_huaxiao原文链接: https://juejin.im/post/5d214639e51d4550bf1ae8df整理了一些Java基础流程图/架构图,做一下笔记,大家一起学习。1. spring的生命周期Spring作为当前Java最流行、最强大的轻量级容器框架,了解熟悉spring的生命周期非常有必要;首先容器启动后,对bean进行初始化按照bean的...
Gradle学习手记-全局初始化配置init.grade 前言Maven中有全局settings.xml,Gradle中也有与之对应的init.gradle。作用减少冗余配置加载顺序~/.gradle/init.gradle文件~/.gradle/init.d/目录下的以.gradle结尾的文件~/$GRADLE_HOME/init.d/目录下的以.gradle结尾的文件$GRADLE_USER_HOME/init.gradle文件1...
CentOS7安装Nginx和upstream-fair 前言nginx默认有负载均衡功能,用于从upstream模块定义的后端服务器列表中选取一台服务器接受用户的请求。默认包含轮询、权重、ip_hash和least_conn1四种策略。upstream-fairfair采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡。由于不是默认策略,在安装时需要重新编译,因此通常认为Yum版安装的Nginx无...
Linux安装Nginx rpm下载对应rpm包以CentOS7为例:wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.16.0-1.el7.ngx.x86_64.rpmrpm导入rpm -ivh nginx-1.16.0-1.el7.ngx.x86_64.rpmyum安装yum install nginx启动、停止、重启及开机启动...
VMware上安装CentOS7 环境准备VMware网站下载百度云下载Win7CentOS7_iso镜像安装VMware安装略CentOS安装打开VMware,按下Ctrl+N新建虚拟机下一步等待安装完成,出现如下界面:等待安装完成配置网络配置使用root用户登录虚拟机vi /etc/sysconfig/network-scripts/ifcfg-ens...
Config学习笔记(三):热部署 需求有一个前缀是demo的自定义配置属性,定义在spring-config项目(本地或git)中,当改变其属性值时,在重启客户端服务的前提下,刷新属性值。实现要实现动态刷新属性值,只需要借助@RefreshScope和spring-actuator即可实现。RefreshScope这是一个注解,其实际作用是由@Scope("refresh")发挥,注解翻译如下:便捷注释将@Bean定...
git分支合并时忽略特定文件 原文链接在项目根目录下新建文件.gitattributes1,然后文件中写入需要忽略的文件名 + merge=ours, 一个文件占一行 例:忽略config.xml 文件config.xml merge=ours如果设置了没有起效,在根目录下运行命令行 git config merge.ours.driver true 进行config配置.gitattributes该文件主...
curl方式执行shell脚本时如何传参 前言有时候shell脚本可以放在http页面上,不用download,可以直接执行。通常我们可以用curl的方式执行http页面上的shell脚本。 一般方式是:curl http://XXX.com/xx/xx.sh | bash这样脚本就可以再本地机器上执行了。带参无名参但是需要传入参数的脚本。我们可以用下面的方式传入shell参数-s方式curl -s http://XX...
CentOS7安装rabbitmq 安装及配置# 下载并执行erlang安装脚本curl -s <https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh> | sudo bashyum install erlang# 下载并执行rabbitmq-server安装脚本curl -s <https://package...
Config学习笔记(二):使用Git存储 由于项目限制,以前写过一个本地配置,现在补充下Git配置。这里采用http形式的git服务演示。Eureka参考git创建仓库首先在git服务端创建名为cloud-config的仓库克隆git clone http://<ip>:<port>/**/cloud-config.git配置文件cd cloud-config &&\touc...
Config学习笔记(一):使用本地存储 简介Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以为所有环境中的应用程序管理其外部属性。它非常适合spring应用,也可以使用在其他语言的应用上。随着应用程序通过从开发到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签...
Ribbon学习笔记(二):自定义负载均衡规则 Ribbon自定义负载均衡策略有两种方式,一是JavaConfig,一是通过配置文件(yml或properties文件)。需求假设我有包含A和B服务在内的多个微服务,它们均注册在一个Eureka上,信息如下:我希望当访问服务A时候,2个服务(端口分别是8087和8081)每两次一换,比如访问两次8087,再访问两次8081,如此反复。当访问服务B时,与A类似,不过是3次一换。当访问其他...
Ribbon学习笔记(一):入门 ##简介Spring Cloud Ribbon是一个基于Http和TCP的客户端负载均衡工具,它是基于Netflix Ribbon实现的。它不像服务注册中心、配置中心、API网关那样独立部署,但是它几乎存在于每个微服务的基础设施中。理解Ribbon对于我们使用Spring Cloud来讲非常的重要,因为负载均衡是对系统的高可用、网络压力的缓解和处理能力扩容的重要手段之一。在Spring Clo...
Eureka基础 Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的微服务治理功能.服务端依赖settings.gradlepluginManagement { resolutionStrategy { } repositories { mav...
线上问题解决-阿里云Maven仓库失联 上班第一件事,就是发现以前好好的gradle插件io.spring.dependency-management突然就失联,经过排查发现是阿里云仓库出了问题,换成jboss的就OK了,就是速度慢点而已。为了保证服务的高可用,干脆在Nexus上创建了好几个可用的Maven仓库代理,统一加入maven_public组中,客户端只配置私服这一个仓库即可。对应地址如下:https://repo1....
单例模式-JAVA实现及调优 环境jdk:1.8IDE:IDEA-2019.1.3WHY对于频繁使用的对象,可以省略创建对象所花费的时间由于new的次数减少,因而对系统内存的使用频率也会降低,减轻GC压力,减少GC停顿时间。单例模式的几种实现简单IDEA在创建Java类时默认集成了单例模式,以下是默认生成内容:public class Singleton { private static Si...
CentOS7安装MySQL5.7 在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。下载并安装MySQL官方的 Yum Repositorywget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm使用上面的命令就直接下载...
CentOS7安装logstash-6.1.1 logstash安装下载rpm包:https://artifacts.elastic.co/downloads/logstash/logstash-6.1.1.rpm安装:rpm -ivh logstash-6.1.1.rpmlogstash-input-jdbc安装ruby安装安装gem:yum install gemgem sources --add https://gems.r...
SpringBoot及SpringCloud版本管理(Gradle版本) 前言网上有很多介绍SpringBoot和SpringCloud版本对应的文章,本文只是从实操的角度阐述,内容没有深度.Maven中有dependencyManagement来声明依赖,Gradle中也有相应的功能.Talk is cheap. Show me the codebuild.gradleplugins { id "io.spring.dependency-...
git常用操作 Client端安装git-bashgit生成密钥对ssh-keygen -C “your email” 一路回车即可,如果有设置密码,每次提交都会提示输入密码,密码自己记住即可。到~/.ssh下,将rsa.pub中内容发给管理员,用于添加提交权限常用命令行配置# 配置用户名git config --global user.name "swb"# 配置邮箱git config ...
CentOS7使用yum安装kibana-6.1.1 安装# 下载并导入公开签署密钥rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch# 指定仓库信息vim /etc/yum.repos.d/kibana.repo# 输入[kibana-6.x]name=Kibana repository for 6.x packagesbaseurl=https://art...
CentOS7使用yum安装elasticsearch-6.1.1 安装配置elasticsearch仓库信息vim /etc/yum.repos.d/elasticsearch.repo# input[elasticsearch-6.x]name=Elasticsearch repository for 6.x packagesbaseurl=https://artifacts.elastic.co/packages/6.x/yumgpgcheck...
Shell-具名参数传参 一般参数过多的时候,为了方便理解,可以将参数具名化,而且还可以摆脱顺序限制。#!/bin/sh#说明show_usage="args:[-l, -r] [--local-repository=, --repository-url=]"#参数#本地仓库目录opt_localrepo=""#git仓库urlopt_url=""GETOPT_ARGS=`getopt -o l:r: -...
Jenkins安装 安装Jenkins_War包下载docker安装或运行:docker pull jenkins/jenkins:ltsdocker pull jenkins/jenkins运行war包:nohup java -jar jenkins.war > jenkins.log 2>&1 &1docker: docker run -d -p 8882:8...
Rancher容器管理平台搭建 环境准备Docker私服及docker初体验一般来说,直接通过一条命令就可以直接安装并启动rancher了:docker run -d --restart=always -v /data/rancher_server:/var/lib/mysql -p 8080:8080 rancher/server。第一次运行比较慢,因为要生成初始化很多数据。命令简介--restart 表示重启策略,这...
CentOS7下Git服务搭建(SSH和HTTP) 环境准备VMware上安装CentOS7SSH安装gityum install git创建Git用户adduser git创建证书登录客户端使用ssh-keygen命令生成密钥对1,服务端将客户端的公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。初始化仓库选定一个位置,比如/usr/local/git_repo,以下简称GIT_PRO...
Docker私服及docker初体验 环境准备VMware上安装CentOS7CentOS7下安装Nexus私服及基础配置配置Docker私服安装如果有历史版本,删除:$ sudo yum remove docker \ docker-client \ docker-client-latest \ ...
Linux命令-nohup和& 基础在linux终端或控制台上执行命令时,可能不希望脚本占住屏幕需要在后台执行脚本,有几种方法让脚本在后台执行:&当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行。例如:sh test.sh &需要用户交互的命令不要放在后台执行,不过,作业在后台运行一样会将结果输出到屏幕上,如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把...
CentOS7下安装Nexus私服及基础配置 环境准备VMware上安装CentOS7XShell/XftpNexusOSS-3.10jdk1.8安装使用root用户登录,将安装包均放置在/usr/local文件夹下使用Xshell、Xftp、FileZilla或MobaXterm将上述jdk及nexus安装包上传至/usr/localtar -zxvf jdk-8u211-linux-x64.tar.gztar -...
AOP-配合slf4j打印日志 基本思想凡在目标实例上或在目标实例方法(非静态方法)上标注自定义注解@AutoLog,其方法执行时将触发AOP操作;@AutoLog只有一个参数,用来控制是否打印该方法的参数和返回结果的json字符串,默认不打印,通过@AutoLog(debug= true)开启通过AOP拦截方法并打印日志代码package com.yan.mssm.aop;import java...
正则表达式(Java版整理) 基础元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 ^ 匹配字符串的开始 $ 匹配字符串的结束 \b 匹配字符串的结束重复 代码/语法 说明 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n
ngx-bootstrap学习笔记(一)-popover 前言这月做了个ng2模块,其中有个校验功能,当校验不通过时给出提示,项目中使用jQuery实现,今天才发现ngx-bootstrap已经有现成功能了,且可封装成通用组件放入shareModule,使用方便。故记录如下。安装npm install ngx-bootstrap --save引入模块import {PopoverModule} from 'ngx-bootstrap/';@NgModule
Angular4学习笔记(十)- 组件间通信 分类父子组件通信非父子组件通信实现父子父子组件通信一般使用@Input和@Output即可实现,参考Angular4学习笔记(六)- Input和Output - 非父子 非父子组件见通信可以通过同一个service来实现。需要注意的是一定要在service中定义一个临时变量来供传递。比如我有两个组件来传递一个Book类型的数据,HomeComponent -> BookCompone
Angular4学习笔记(九)- 生命周期钩子简介 简介Angular 2 指令的生命周期,它是用来记录指令从创建、应用及销毁的过程。Angular 2 提供了一系列与指令生命周期相关的钩子,便于我们监控指令生命周期的变化,并执行相关的操作。Angular 2 中所有的钩子如下图所示: 分类指令与组件共有的钩子 ngOnChangesngOnInitngDoCheckngOnDestroy组件特有的钩子 ngAfterContentI
Angular4学习笔记(八)- ng-content 内容投影ng-contentng-content是一个占位符,有些类似于router-outlet。以前举の例子,父组件包含子组件都是直接指明子组件的selector,比如子组件的selector叫app-child,那么嵌入父组件时直接指明即可:<app-child></app-child>这是很硬性的编码,而ng-content就是用来替代这种硬性编码的。比如有个父组件这样定义:@Compone
Angular4学习笔记(七)- ViewChild和ViewChildren 基础ViewChildViewChild 装饰器用于获取模板视图中的元素或直接调用其组件中的方法。它支持 Type 类型或 string 类型的选择器,同时支持设置 read 查询条件,以获取不同类型的实例。比如ElementRef和ViewContainerRef.ViewChildrenViewChildren 装饰器是用来从模板视图中获取匹配的多个元素,返回的结果是一个 QueryList 集
Angular4学习笔记(六)- Input和Output 概述Angular中的输入输出是通过注解@Input和@Output来标识,它位于组件控制器的属性上方。 输入输出针对的对象是父子组件。演示Input新建项目connInComponents:ng new connInComponents.新增组件stock:ng g component stock.在stock.component.ts中新增属性stockName并将其标记为输入@Inpu
Angular4学习笔记(五)- 数据绑定、响应式编程和管道 概念Angular中的数据绑定指的是同一组件中控制器文件(.ts)与视图文件(.html)之间的数据传递。分类流向单向绑定它的意思是要么是ts文件为html文件赋值,要么相反。ts->html html->ts<input (keyup)="press
Angular4学习笔记(四)- 依赖注入 概念依赖注入是一种设计思想,并不是某一类语言所特有的,因此可以参考开涛大神关于学习Java语言的Spring框架时对其的解释: DI—Dependency Injection,即“依赖注入”:是组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖
Angular4学习笔记(三)- 路由 路由简介路由是 Angular 应用程序的核心,它加载与所请求路由相关联的组件,以及获取特定路由的相关数据。这允许我们通过控制不同的路由,获取不同的数据,从而渲染不同的页面。相关的类RoutesRoutes其实是一个Route类的数组。而Route的参数如下图所示,一般情况下,path和component是必选的两个参数。 比如:path:/a,component:A则说明,当地址为/a时,应该展
Angular4学习笔记(二)-在WebStorm中启动项目 下载nodejs下载地址在命令行输入:npm -v 如果出现如下画面即安装成功 安装Angular的cli命令行工具命令:sudo npm install -g @angular/cli输入ng -v,如出现以下画面即表示安装成功创建项目命令:ng new XXX,XXX表示项目名称,如:ng new iAngular 此时在相应目录下就会有新项目生成 Angular
Angular4学习笔记(一)-环境搭建 下载nodejs下载地址在命令行输入:npm -v 如果出现如下画面即安装成功 安装Angular的cli命令行工具命令:sudo npm install -g @angular/cli输入ng -v,如出现以下画面即表示安装成功创建项目命令:ng new XXX,XXX表示项目名称,如:ng new iAngular 此时在相应目录下就会有新项目生成 Angular
使用泛型简化动态代理 说明本文适合对动态代理有最最基本了解的人,可参看AOP的底层实现-CGLIB动态代理和JDK动态代理。本文目的在于简化动态代理的调用maven依赖 <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.2.5</version>
Java泛型概述 泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用。本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除。泛型基础泛型类我们首先定义一个简单的Box类:public class Box { private String object; public void set(String object) { this.object
JDK1.8-Stream()使用详解 为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合
java基础-System.getProperty查询参考 目的为了兼容Windows和Linux,使程序更加健壮。代码代码如下,放在类中可以被其他使用者调用,不需要记住,方便使用。 /** File separator ("/" on UNIX) */ public static final String FILE_SEPARATOR = "file.separator"; /** Path separator (":" on UNI
Java基础-重定向输出流 起因在刚开始系统学习Java时,老师曾讲过System.setOut()方法,这是用来重定向输出流的,默认情况下System.out.println()方法会输出到控制台,在实际项目中,所需要输出的日志太多,比如iBatis的各种debug信息,这就导致测试某一模块时得到很多无用信息,因此我想到了重定向输出流。方法基本方法基本方法就是使用System.setOut来重定向,参数类型属于PrintSt
POI-根据Cell获取对应的String类型值 目的由于工作中对读取出来的cellValue统一以字符串类型存储,故有此方法。方案懒得打字,看图如下: 代码主方法(根据不同类型采取不同策略)/** * 根据不同情况获取Java类型值 * 空白类型返回空字符串布尔类型返回Boulean类型值</
Java-ApachePOI读取Excel模板 Excel模板需求将模板中的数据读取出来,当数据库中存在表时,用id更新或插入数据,当表不存在时,建表并插入数据。进度目前只是将数据包装好,并未实现sql语句的拼接。封装过程详见demo。Demopackage excelImport;import java.io.File;import java.io.FileInputStream;import java.math.BigDecimal;i
滴滴出行2017秋招笔试--餐馆消费问题 问题描述 某餐馆有n张桌子,每张桌子有一个参数:a 可容纳的最大人数; 有m批客人,每批客人有两个参数:b人数,c预计消费金额。 在不允许拼桌的情况下,请实现一个算法选择其中一部分客人,使得总预计消费金额最大。 输入描述: 输入包括m+2行。 第一行两个整数n(1 <= n <= 50000),m(1 <= m <= 50000) 第二行为n个参数a,即每个桌子可容纳的最大人
java机试-抽奖 题目要求 现在要编写一个抽奖程序,已知有1000个人员进行抽奖,编号分别为00001,00002……01000。每次抽取的时候,随机抽取到其中5个,一共抽取10次。 要求抽出的50个人,不能重复。java public class M002 { public static Set<String> set = new HashSet<String>(); public stati
java机试-用字符串模拟两个大数相加 参考网上思路,自己编写的计算过程,有不对的地方还望大神不吝批评指正。public String stringAdd(String s1,String s2){ StringBuilder sbf=new StringBuilder(); //处理字符串参数,防止以0为开头的字符串 s1=s1.replaceAll("^(0+)", "").
Java基础-java.sql.ResultSet的getDate获取时间中时分秒为0的问题 问题江西客户的页面出现奇怪现象,从数据库取出的时间不返回时分秒,折腾了半天也不知道原因所在,最后没办法远程在现场实施人员电脑上写了个测试类,问题才得以解决。方案 rs应该用getTimestamp()而不用getDate()。测试截图参考参考
Java基础-利用反射获取类信息 反射机制 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射机制能做什么 反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类; 在运行时构造任意一个类的对象; 在运行时判断任意一个类所具有的成员变量和
Json-Java类型转Json格式的测试 Maven依赖 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>
中石油-常用密码 一:主服务器 IP:192.168.0.60 用户名:root 密码:zsy@local 用户名: orale 密码: qazwsxweb项目安装路径:/opt/tomcat/webapps/tsdboss_zsy web项目访问地址:(ie浏览器)http://192.168.0.60/tsdboss_zsy/ 用户名:admin 密码:txc服务器安装清单:oracle数据库,w