Javaliu'Blog

  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

  • 公益 404

Archlinux 安装

发表于 2019-10-14 | 更新于 2021-11-22 | 分类于 linux

本文是基于虚拟机进行安装的,和真机安装差不多,均是参考wiki 进行操作,但在实际操作中做了一些简化,如在安装过程中有任何问题,请以 wiki 为准, 本文开始于 2019.07.02,发表于 2019.10.14

安装环境,本机是 MacOS,虚拟机软件是 VirtualBox。

1. archlinux 官网下载对应的 ISO 文件

阅读全文 »

Git 提速

发表于 2019-10-10 | 更新于 2021-11-22 | 分类于 Git

先上图:
Git Environment

阅读全文 »

从数组说起

发表于 2019-09-26 | 更新于 2021-11-22 | 分类于 datastruct

1. 自定义数组

在日常开发中,我们可能无时无刻都在使用数组,我们都知道数组是有局限性的,比如固定大小,无法扩容,但是你能自己手写一个数组解决上面的痛点呢?

看过 Java 源代码的都知道,Java 中的 ArrayList 底层实现就是数组,那我们就自己通过数组来实现自己的 ArrayList 具体代码见 码云 和 Github

其实实现自己的 ArrayList 不是我们的目的,关键是我们要分析实现细节,以及其中的时间复杂度。

阅读全文 »

大 O 算法

发表于 2019-09-24 | 更新于 2021-11-22 | 分类于 datastruct

在算法和数据结构领域,一般使用时间复杂度分析的方式来检验代码的性能。时间复杂度分析本身是一个相对理论化的领域,如果真要研究它的话,里面涉及大量数学的内容和一些新的概念,如果不是专门从事这方面工作的人,研究的这么深入意义不大,所以本文也只是相对简单的说一下时间复杂度是怎么一回事,让大家有个相对感性的认识即可。当然了,如果看完本文之后还能对简单的算法进行一些时间复杂度分析那就更好了。

阅读全文 »

Git 高级使用技巧 - cherry-pick

发表于 2019-07-22 | 更新于 2021-11-22 | 分类于 Git

在开发过程中很容易出现改错分支的情况,例如,本来应该在 dev 分支上修改的内容,却在 test 分支上做了修改并且进行了多次提交,这种情况可能处理起来比较麻烦了,但是有了 cherry-pick 一样很轻松解决。

cherry 是樱桃的意思,pick 是选择,挑选的意思。

1. cherry-pcik 语法

1
$ git cherry-pick commit-id             #将某个提交应用到当前所在的分支。
阅读全文 »

SpringBoot-form-jar-to-war

发表于 2019-01-30 | 更新于 2021-11-22 | 分类于 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 | 更新于 2021-11-22 | 分类于 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 | 更新于 2021-11-22 | 分类于 java

1. 现象:

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

2. 分析原因

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

Redis 系列教程 — Redis 事物

发表于 2018-12-26 | 更新于 2021-11-22 | 分类于 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 | 更新于 2021-11-22 | 分类于 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
阅读全文 »
12…7
javaliu

javaliu

学习总结 思考感悟

68 日志
16 分类
128 标签
GitHub 微博 JVM 指南 宝库 Redis
© 2021 javaliu
京ICP备2020046604号