Javaliu'Blog

  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

  • 公益 404

SpringBoot-form-jar-to-war

发表于 2019-01-30 | 分类于 SpringBoot | 阅读次数:

本文是基于 SpringBoot 2.0 以上版本。注意,SpringBoot 2.0 需要 Tomcat 8.5 以上版本。

默认情况下,SpringBoot 是打成 jar 包的,但是有人可能更喜欢打成 war 部署到 Tomcat 或其他 Servlet 容器中。

SpringBoot 有 jar 改成 war 大约有如下步骤:

  1. 修改 pom.xml 文件,将 jar 改成 war
  2. 排除内置的 Tomcat 容器,并添加依赖 spring-boot-starter-tomcat,使其 scope 为 provided。
  3. 启动类继承 SpringBootServletInitializer
  4. 打包部署
阅读全文 »

源码加示例分享线程的 join 方法

发表于 2019-01-09 | 分类于 thread | 阅读次数:

炸一看到 join() 方法可能有点懵,不知道此方法是干啥的。下面从源码的角度分析一下此方法,并结合相应的示例彻底搞懂 join() 方法。

首先我们应该知道 join() 方法是定义在 Thread 类里面的,所以调用者必须也是一个线程类,必须先调用 start 方法再调用 join 方法
例如:

1
2
3
Thread t = new CustomThread();
t.start(); # 注意要先调用 start 再调用 join
t.join();
阅读全文 »

Java 应用程序(Tomcat)CPU 负载过高的解决方案

发表于 2018-12-28 | 分类于 java | 阅读次数:

1. 现象:

在tomcat中部署java的web应用程序,过一段时间后出现tomcat的java进程持续占用cpu高达100%,导致web程序访问受阻。

2. 分析原因

  1. 进行大量的数据计算
  2. 出现死循环
阅读全文 »

Redis 系列教程 — Redis 事物

发表于 2018-12-26 | 分类于 redis | 阅读次数:

1. Redis 事物 vs 数据库事物

说到 Redis 事物,肯定会联想到数据库的事物,先看一下数据库的事物执行流程和 Redis 的事物执行流程的异同,数据库以 MySQL 为例。

步骤 MySQL Redis
开启事物 start transaction multi
执行语句 普通 SQL 语句 普通命令
失败情况 rollback 回滚 discard 取消
成功情况 commit 提交 exec 执行

2. Redis 事物的可靠性

数据库的事物具有 ACID 四个特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。Redis 是否有如上特性呢?

说到事物很多都会拿银行转账为案例,此处也不例外。也是一个银行转账的场景,即张三(原有500块钱)给李四(目前有200块钱)转 100 块钱。期望得到的结果是转账完成之后,张三 400块钱,李四 300 块钱。

数据库的情况在此就不多说了,主要看一下 Redis 如何失败回滚的情况。

阅读全文 »

Redis 系列教程 — Redis hash 命令

发表于 2018-12-25 | 分类于 redis | 阅读次数:

1. hset KEY feild value

设置 KEY 中的 feild 属性值为 value

1
2
127.0.0.1:6379> hset account name zhangsan
(integer) 1

2. hmset KEY feild value [feild2 value2 … feildN valueN]

设置 KEY 中属性 feild1 … feildN 中的值分别为 value1 … valueN

1
2
127.0.0.1:6379> hmset account age 20 address beijing
OK
阅读全文 »

Redis 系列教程 — Redis zset

发表于 2018-12-24 | 更新于 2018-12-25 | 分类于 redis | 阅读次数:

既然集合是无序的,但是现在又有有序集合,所以有序集合中的元素必然有相应的权重,比如身高、体重、年龄等,但是为了方便讨论,统一命名为 score。

1. zadd KEY score member [score1 member …]

向集合中添加元素。有序集合的元素依然是唯一的。

1
2
3
4
127.0.0.1:6379> zadd language 10 java 8 python 6 C++ 5 php 4 go 3 nodejs
(integer) 6
127.0.0.1:6379> zadd language 9 java
(integer) 0

zadd language 9 java 表示添加元素不成功,但是 java 对应的 score 变成 9 了。

阅读全文 »

Redis 系列教程 — Redis set 命令

发表于 2018-12-21 | 分类于 redis | 阅读次数:

set 集合的特性

1. 无序性 {1,2} == {2,1}
2. 确定性
3. 唯一性
    集合内的值是唯一不重复的

1. sadd KEY member [member1, member2 …]

向集合中添加元素,可以添加多个。返回已添加元素的个数

1
2
3
4
127.0.0.1:6379> sadd gender male female
(integer) 2
127.0.0.1:6379> sadd gender male
(integer) 0
阅读全文 »

Redis 系列教程 — Redis list 命令

发表于 2018-12-18 | 更新于 2018-12-20 | 分类于 redis | 阅读次数:

1. lpush/rpush KEY VALUE [VALUE…]

从链表的左侧或者右侧插入数据,链表的存储顺序从左到右依次是 0,1,2…,从右侧的顺序是 -1,-2,-3…。

2. lpop/rpop KEY

从链表的左侧或者右侧返回并删除链表的元素。

阅读全文 »

Redis 系列教程 — Redis 字符串命令

发表于 2018-12-18 | 更新于 2018-12-20 | 分类于 redis | 阅读次数:

1. set 命令

set KEY VALUE [ex 毫秒 | px 微妙] [nx] | [xx]

如果 ex 和 px 均设置,则以 px 为准
nx : 表示 key 不存在时,执行操作
xx : 表示 key 存在时,执行操作

1
2
3
127.0.0.1:6379> set name sontek ex 10 nx
127.0.0.1:6379> set name sontek ex 10 xx
127.0.0.1:6379> set name sontek px 9000 xx
阅读全文 »

Redis 系列教程 — Redis 通用命令

发表于 2018-12-17 | 分类于 redis | 阅读次数:

1. 通用命令

序号 命令 描述 时间复杂度
1 keys [pattern] 列出系统中所有的 key O(n)
2 dbsize Redis 系统所有 key 的个数 O(1)
3 exists key Redis 系统是否存在该 key,存在返回1,否则返回0 O(1)
4 del key… 删除 Redis 中的 key,删除不存在的key返回0,否则返回key个数 O(1)
5 expire key seconds 设置 key 的过期时间,单位是秒,pexpire 单位是毫秒 O(1)
6 ttl key 显示 key 剩余的过期时间,返回 -1 表示没有设置过期时间,-2表示key已删除,pttl,单位是毫秒 O(1)
7 persist key 去掉 key 的过期时间 O(1)
8 type key 查看 key 的数据类型 O(1)
9 randomkey 随机返回系统中存在的key
10 rename key1 newKey 给 key 重命名
11 renamenx key1 newKey 给 key 重命名,如果newKey已存在则重命名失败,返回0,否则返回1
12 move key DBNO 将指定的key移动到指定的数据库,redis默认16个库,默认使用 0号库
13 select DBNO 使用 redis 的某个数据库,类似于 mysql 的 use dbname
12…7
javaliu

javaliu

学习总结 思考感悟

63 日志
15 分类
116 标签
GitHub 微博 豆瓣 指南 宝库 Redis
© 2019 javaliu
本站访客数:
|
本站访问量: