Johnnian

Results 64 issues of Johnnian

### 一、定义 >“当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的”。 一个线程安全的代码,要有这样的特征: >代码本身封装了所有必要的正确性保障手段(如互斥同步等),令调用者无须关心多线程的问题,更无须自己实现任何措施来保证多线程的正确调用。 ### 二、线程间共享数据类型 #### 2.1 不可变 不可变的对象一定是线程安全的,如 使用 final 关键字修饰的变量、String类型对象、枚举对象等; #### 2.2 绝对线程安全 在Java中标注自己是线程安全的类,如Vector、HashTable等,大多数都不是绝对的线程安全,可以运行下面测试代码: ```java package com.johnnian.thread; import java.util.Vector; public class ThreadDemo { private static Vector<...

Java Web

### 一、遇到的问题 & 解决方法 在项目中,出现下面的几个问题: #### 1、java.net.SocketException: Too many open files ``` Caused by: java.net.SocketException: Too many open files at java.net.Socket.createImpl(Socket.java:460) at java.net.Socket.getImpl(Socket.java:520) at java.net.Socket.setSoTimeout(Socket.java:1141) ``` 排查了下,是因为系统的 "Open File" 参数比较低,默认是...

Linux

### 目标 使用Minikube,在Kubernetes上搭建一个Nginx集群(3个节点) 备注:对于如何安装环境,[请点击这里](https://kubernetes.io/docs/getting-started-guides/minikube/) ### 开发环境 名称 | 版本号 ----|------ Kubernetes | V1.7 minikube | v0.21.0 kubectl-Client | v1.7.4 kubectl-Server | v1.7.0 操作系统| MacOS ``` ➜ ~ minikube version minikube...

Docker

谈到容器化管理解决方案,Kubernetes 目前应该是比较成熟的,有比较多的落地实施案例。 ### 一、Kubernetes 简介 Kubernetes 是容器自动部署、扩展与管理的开源平台,具体的介绍,可以参考链接: [What is Kubernetes?](https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/) 目前,Kubernetes有比较多的落地实施案例,例如 京东、SAE、网宿科技、时速云、灵雀云、网易蜂巢等等。 参考链接: - [京东如何从OpenStack迁移至Kubernetes](http://www.infoq.com/cn/news/2017/03/jd-kubernetes-openstack), [京东容器集群建设之路](http://dockone.io/article/1948) ### 二、Kubernetes基本概念 Kubernetes 集群的节点,按照功能,可以划分为 Master Node(控制集群),Worker Node(实际工作)。 Master Node上运行的组件: Master Components + Node components...

Docker

### 网络拓扑 ### Storm 客户端配置 客户端的配置:下载Storm二进制包,配置命名服务器即可 ### 远程调用 ![drpc-workflow](https://user-images.githubusercontent.com/2493670/28677690-e5be9b5c-7320-11e7-88a0-b96eecaf657b.png) ### 参考链接 - Storm客户端的配置: [Setting Up a Development Environment](http://storm.apache.org/releases/1.1.0/Setting-up-development-environment.html)

大数据
Storm

CentOS下,开机启动脚本,可以通过配置`/etc/rc.d/rc.local`来设定 要配置开机自启动,先执行: ``` chmod +x /etc/rc.d/rc.local ``` **1. 配置:/etc/rc.d/rc.local** ``` [root@localhost ~]$ vi /etc/rc.d/rc.local source /etc/bashrc ``` 如果需要以普通用户的权限运行脚本,这个时候,可以这样配置(示例),可以替换成具体的用户: ``` [root@localhost ~]$ vi /etc/rc.d/rc.local source /etc/bashrc #需要先切换到对应目录,否则脚本在写日志的情况下,会报错:permission deny cd /home/johnnian/demo #替换成实际的脚本路径目录...

Linux

对于 H2 数据库单点的搭建,可以参考:#24 H2数据库支持集群模式,其实只是个主从结构,并且只支持两台: 从源码这里可以看出来: 具体搭建的方法,直接看出下面的链接~ ### 参考链接 - [Clustering / High Availability](http://www.h2database.com/html/advanced.html#clustering) - [Java Doc- Class CreateCluster](https://javadocs.com/docs/com.h2database/h2/1.3.151/org/h2/tools/CreateCluster.html) - [H2数据库攻略之四-集群](http://blog.csdn.net/likeaboy_fire/article/details/44021991) - [H2数据库集群](http://blog.csdn.net/Drizzt0878/article/details/50765314)

Databases

Zookeeper 是个分布式开源框架,之前在做分布式日志收集的时候,就使用到,Zookeeper搭建比较简单。 ### 下载 目前最新稳定版本:3.4.10, [下载地址](https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/) 进入 stable 目录下载: 下载后解压: ``` [root@1c271ed316ca ~]# tar zxvf zookeeper-3.4.10.tar.gz ``` ### 单点模式启动 使用默认配置,启动监听端口:2181 ``` [root@1c271ed316ca ~]# cd zookeeper-3.4.10 [root@1c271ed316ca zookeeper-3.4.10 ]# cp conf/zoo_sample.cfg...

Tools

### 基础概念 ![storm-flow](https://user-images.githubusercontent.com/2493670/28602738-461ff908-71f2-11e7-94dc-3b969057da7a.png) **1). Topologies** Storm 运行任务的逻辑单元,由 spouts、bolts 构成的有向图。 **2). Tuples** Storm中的基础数据结构,可以包含下面数据结构:`integers, longs, shorts, bytes, strings, doubles, floats, booleans, and byte arrays`, 此外,可以通过序列化(serializers )实现自定义类型的支持; **3). Spouts** 数据源,从外部读取数据,传递到 Topologies 内部; **4)....

大数据
Storm

操作系统:centos 6 服务器两台:A、B 目的:A、B 上都安装Nginx, 想要使用 keepalived 做HA 下面是具体的步骤: ### 步骤1: 安装Keepalived ``` [root@localhost ~]# yum groupinstall 'Development Tools' -y [root@localhost ~]# yum install openssl-devel libnl-devel libnfnetlink-devel iptables-devel -y [root@localhost...

Tools
Linux