Perkins4j2的技术博客

一个人,一根烧火棍,面对整个世界.


  • 首页

  • 标签91

  • 分类8

  • 归档123

  • 搜索

Maven基本操作

发表于 2019-06-24 | 更新于 2019-11-29 | 分类于 工具利器
本文字数: 1.1k | 阅读时长 ≈ 1 分钟

Maven环境变量配置

  • 创建文件

    1
    2
    3
    cd ~
    touch .bash_profile
    open -e .bash_profile
  • 写入bash_profile

    1
    2
    3
    4
    5
    M2_HOME=/Users/work/apache-maven-3.5.0/
    PATH=$M2_HOME/bin:$PATH

    export M2_HOME
    export PATH
阅读全文 »

Mac下用iterm2免密码

发表于 2019-06-24 | 分类于 工具利器
本文字数: 289 | 阅读时长 ≈ 1 分钟

安装Homebrew

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装sshpass

1
2
3
brew install http://git.io/sshpass.rb

which sshpass
阅读全文 »

CentOS7安装部署 - Redis

发表于 2019-06-24 | 分类于 安装部署
本文字数: 530 | 阅读时长 ≈ 1 分钟

redis

  • 拉取

    1
    wget http://download.redis.io/releases/redis-3.2.6.tar.gz
  • 解压

    1
    tar -zxvf redis-3.2.6.tar.gz
阅读全文 »

CentOS7安装部署 - MongoDB

发表于 2019-06-24 | 分类于 安装部署
本文字数: 1.4k | 阅读时长 ≈ 1 分钟

mogo

  • 下载
    1
    2
    3
    4
    5
    wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.6.tgz ./

    tar xzvf mongodb-linux-x86_64-rhel70-4.0.6.tgz

    mkdir -p data/mongo_data data/logs
阅读全文 »

Centos7安装部署 - MySQL

发表于 2019-06-24 | 分类于 安装部署
本文字数: 1k | 阅读时长 ≈ 1 分钟

mysql5.7

  • 下载并安装源
    1
    2
    3
    wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
    sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
    yum repolist all | grep mysql
阅读全文 »

Java并发编程艺术 - 多线程

发表于 2019-06-03 | 更新于 2019-08-24 | 分类于 并发编程
本文字数: 3.7k | 阅读时长 ≈ 3 分钟

启动Java应用程序则是一个进程,一个进程可以启动多个线程,线程是操作系统调度最小单元。线程拥有独立的计数器、栈和局部变量,可以共享堆内存。

一个Java程序入口是main主线程,线程优先级从1-10,优先级越高分配时间片越长。

为什么使用多线程

  • 更多的处理器核心

    使用多线程技术,将计算逻辑分配到多个处理器核心上,就会显著减少程序的处理时间,并且随着更多处理器核心的加入而变得更有效率。

  • 更快的响应时间

    使用多线程技术,即将数据一致性不强的操作派发给其他线程处
    理(也可以使用消息队列),如生成订单快照、发送邮件等。这样做的好处是响应用户请求的线程能够尽可能快地处理完成,缩短了响应时间,提升了用户体验。

  • 更好的编程模型

    Java为多线程编程提供了良好、考究并且一致的编程模型,使开发人员能够更加专注于问题的解决,即为所遇到的问题建立合适的模型,而不是绞尽脑汁地考虑如何将其多线程化。一
    旦开发人员建立好了模型,稍做修改总是能够方便地映射到Java提供的多线程编程模型上。

线程状态

  • NEW 新建
    • Thread.start();
  • RUNNABLE 运行,包括就绪和运行
    • Thread.run();
  • BLOCKED 阻塞
    • synchronized
  • WAITING 等待,等待其他线程通知和中断
    • Object.wait()
    • Object.join()
    • LockSupport.park(Thread)
  • TIME_WAITTING 等待,等待指定时间超时
    • Thread.sleep(long)
    • Object.wait(long)
    • Object.join(long)
    • LockSupport.parkNanos()
    • LockSupport.parkUntil()
  • TERMINATED 终止
    • interrupt(),isInterrupted()和interrupted()
    • suspend()、resume()和stop()
      线程在自身的生命周期中,并不是固定地处于某个状态,而是随着代码的执行在不同的状态之间进行切换
      阅读全文 »

Java并发编程艺术 - 延迟加载与双重检查锁定double check lock

发表于 2019-05-30 | 分类于 并发编程
本文字数: 4.4k | 阅读时长 ≈ 4 分钟

类延迟初始化常采用单例模式。

方法1:

1
2
3
4
5
6
7
8
9
10
public class Singleton {
private static Singleton singleton = null;

public static Singleton getInstance() {
if (singleton == null) {//1
singleton=new Singleton();//2
}
return singleton;
}
}

多线程中,步骤1可以同步执行,导致步骤2多次执行。

阅读全文 »

Java并发编程艺术 - 重排序

发表于 2019-05-29 | 分类于 并发编程
本文字数: 749 | 阅读时长 ≈ 1 分钟

重排序是编译器和处理器为优化程序性能而对指令进行重新排序的手段。

数据依赖性

  • 写后写;a=1,a=2
  • 写后读;a=1,b=a
  • 读后写;a=b,b=1

以上三种情况存在数据依赖,重排将会引起结果改变。

阅读全文 »

Java并发编程艺术 - Java内存模型基础

发表于 2019-05-27 | 更新于 2019-05-30 | 分类于 并发编程
本文字数: 3.1k | 阅读时长 ≈ 3 分钟

并发编程的两个关键性问题

  • 线程通信
  • 线程同步

线程通信

通信是指线程间的信息交换,主要有两种:共享内存和消息传递。

共享内存是线程利用内存的公共状态进行隐私通信。

在Java中主要利用堆内存变量实现共享内存,包括静态域、数据、实例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class ThreadShare {
//利用内存静态变量进行状态传递
static int num = 0;

private void increase() {
num++;
System.out.println(num);
}

public static void main(String[] args) {
ThreadShare threadShare = new ThreadShare();

new Thread(threadShare::increase).start();
new Thread(threadShare::increase).start();
}
}

阅读全文 »

Java并发编程艺术 - 原子性及CAS使用和原理

发表于 2019-05-05 | 分类于 并发编程
本文字数: 963 | 阅读时长 ≈ 1 分钟

原子性

处理器保障从系统内存中读取和写入字节是原子的,即其他处理器不能访问该字节地址。

总线锁保障原子性

处理器发出Lock#信号到总线上,其他处理器阻塞,该处理器独享内存。

缓存锁保障原子性

总线锁把CPU和内存通信锁住,其他CPU无法访问其他内存地址,开销较大。

可以在缓存中,锁定内存地址,保障原子性。

缓存锁定缓存行时,回写内存不声明LOCK#,而是修改内部内存地址,同时通过缓存一致性阻止其他处理器修改;当其他处理器回写
,将会无效缓存行,从内存重新加载数据。

阅读全文 »
1…10111213
Perkins

Perkins

123 日志
8 分类
91 标签
RSS
0%
© 2020 Perkins | 站点总字数: 335k | 站点阅读时长 ≈ 5:04
|