Earth Guardian

You are not LATE!You are not EARLY!

0%

线程常用 API

  • thread.start() :启动
  • thread.isAlive()
    判断当前线程是否处于活动状态
  • thread.sleep()
    在指定毫秒数内让当前正在执行的线程休眠
  • thread.getId():获取线程 ID
  • yield
    放弃当前的 CPU 资源,但放弃多长时间不确定
  • thread.interrupt()
    中断,仅仅是在该线程中打了一个停止的标记,并不是真的停止线程
  • thread.setPriority()
    设置优先级,并不会马上优先执行。线程优先级的代码影响较小,但是优先级高的确实会获取更多的 CPU 资源和执行速度
  • suspend()/resume
    暂停和恢复, 作废
  • stop
    停止线程,作废。暴力停止进程,会导致内存无法清理干净,锁的释放也会导致数据不一致
  • thread.wait()
    释放当前锁并等待,执行前必须确保已经获取该对象锁
  • thread.notify()/.notifyAll()
    也必须在同步代码块呢,通知该对象处于锁等待的线程/通知所有。注意:一次 notify 只能被一个处于 wait 的线程接受,即使该对象锁一直空闲,其他 wait 线程也收不到通知,除非使用 notifyAllnotify 后代码块并不会马上释放锁,而是需要将这个 synchronized 代码块执行完毕才会释放锁
  • thread.join
    等待指定线程对象销毁,但是当前线程会进入阻塞状态
  • Thread.currentThread()
    获得当前线程的引用
阅读全文 »

Java 内存模型(Java Memory Model, JMM),本文主要参考 JSR -133 内存模型

基本概念

共享变量

  • 堆内存:包含类实例、静态字段和数组元素
  • 方法区:类字段(全局变量)
    堆内存中的变量和方法区的全局变量,在线程之间共享,这些统称为共享变量。其他如虚拟机栈帧(局部变量表,方法返回值)等都是线程私有的

抽象示意图

内存模型决定一个线程对共享变量的写入何时对另一个线程可见,从抽象的角度来看:线程之间的共享变量存储在主内存中,每个线程都有一个私有的工作内存,工作内存中存储了该线程以读/写共享变量的副本。这里仅仅将 JMM 作为一个抽象概念,并不和物理实际内存、高速缓存、寄存器等做一一对应。内存模型抽象示意图:

0004-Java-memory-model.jpg

阅读全文 »

编译执行相关

javac

编译 Java 文件,生成 .class 二进制文件

1
2
3
4
5
public class HelloWorld {
public static void main(String[]agrs) {
System.out.println("HelloWorld!");
}
}

编译并生成:

1
2
3
4
// -d 参数表示指定目录,默认为当前目录
xmt@server005:~/test/java$ javac -d . HelloWorld.java
xmt@server005:~/test/java$ ls
HelloWorld.class HelloWorld.java
阅读全文 »

设置

全局设置

全局设置使用 gig config --global 参数,全局配置文件路径 ~/.gitconfig ,即家目录下。

  • 中文文件名或路径被转义
    在使用git的时候,经常会碰到有一些中文文件名或者路径被转义成 \xx\xx\xx 之类的
    示例:fang/\344\272\244\346\230\223\346\265\201\347\250\213/
    解决方案: xmt@server005:~$ git config --global core.quotepath false
阅读全文 »

介绍

Gitlab 已经越来越强大,同时也可以使用它提供的 pages 搭建个人静态博客
官网 pages 介绍
官网 doc

搭建步骤

  • Fork 官网推荐模板
    模板支持很多种静态博客:hugo, hexo, jekyll
    这里选用 hexohexo模板链接
  • Enable shared Runners
    Settings -- CI / CD -- Runners settings 中检查,是否打开该功能
  • Configure your project (optional)
    Settings -- General -- Advanced settings -- Rename repository中,将仓库名称和路径都修改为 username.gitlab.io
  • Manually run a pipeline
    下载该仓库修改并提交后,触发一次自动编译
    CI / CD -- Pipelines 中,查看任务是否执行成功
  • Visit your site!
    搭建完毕!直接访问 https://username.gitlab.io 即可
    如果无法访问,可能会存在一点延时,过几分钟后再访问
阅读全文 »

New York is 3 hours ahead of California.

But it does not make California slow.

Someone graduated at the age of 22, but waited 5 years before securing a good job!

Some became a CEO at 25, and died at 50.

While another became a CEO at 50, and lived to 90 years.

Someone is still single, while someone else got marred.

Obama retires at 55, but Trump starts at 70.

Absolutely everyone in this world works based on their Time zone.

People around you might seem to go ahead of you, some might seem to be behind you.

But everyone is running their own RACE, in their own TIME.

Do not envy them or mock them.

They are in their TIME ZONE, and you are in yours!

Life is about waiting for the right moment to act.

So, Relax.

You are not LATE.

You are not EARLY.

You are very much ON TIME, an in your TIME ZONE.