自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

半 岛 码 农 的 博 客

在内存的世界里,你又是那一个孤儿进程

  • 博客(30)
  • 收藏
  • 关注

原创 JavaCore 【 Java中的Class.forName()和ClassLoader.loadClass()的区别】

类装载顺序类加载过程Class.forName()和ClassLoader.loadClass 对比Class.forName(className)方法,内部实际调用的方法是Class.forName(className,true,classloader);第2个boolean参数表示类是否需要初始化, Class.forName(className)默认是需要初始化。一旦初始化...

2019-02-15 11:48:57 475 1

原创 Java并发编程 【生产者消费者模式的实现】

最简单的实现方式是利用阻塞队列,废话不多说,上代码:wait、notify、notifyAll是Object对象的属性,并不属于线程。我们先解释这三个的一个很重要的概念wait:使持有该对象的线程把该对象的控制权交出去,然后处于等待状态,并释放锁notify:通知某个正在等待这个对象的控制权的线程可以继续运行,同样也是释放锁notifyAll:会通知所有等待这个对象控制权的线程继续运行...

2019-02-14 11:01:43 1108

原创 Java并发编程【线程中安全与锁】

什么是线程安全当多个线程访问某个类时,不管运行时环境采用何种的调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类就是线程安全的。线程安全主要体现在一下三个方面:原子性:提供了互斥访问,同一时刻只能有一个线程对它进行操作可见性:一个线程对主内存的修改可以及时的被其他线程观察到有序性:一个线程观察其他线程中的指令执行...

2019-02-13 16:49:45 313

原创 Java并发编程 【线程的状态和线程的创建】

线程的状态新建状态(New):新创建了一个线程对象。就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权。即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得。运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。阻塞状态(Blocked):...

2019-02-13 14:36:17 251

原创 Java并发编程【 volatile语义 】

volatile语义在说明volatile是什么之前,先看看Java的内存模型那么volatile有什么作用?volatile的第一个语义: 保证线程间的变量,简单地说就是当线程A对变量X进行了修改后,在线程A后面执行的其他线程能看到变量X的变动线程对变量进行修改之后,要立刻回写到主内存。线程对变量读取的时候,要从主内存中读,而不是缓存。volatile的第二条语义:禁止指令重排序...

2019-01-28 11:31:23 1822

转载 jvm虚拟机【内存模型(转)】

并发编程的模型分类在并发编程需要处理的两个关键问题是:线程之间如何通信 和 线程之间如何同步。通信通信 是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存 和 消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进...

2019-01-28 11:00:37 1871

原创 技术杂记 【JSONArray 按指定字段排序,升序和倒序】

第一种根据自定义的字段去排序,利用sort方法 Random random = new Random(); JSONArray result = new JSONArray(); for(int i = 0 ; i < 10 ; i++){ JSONObject obj = new JSONObject(); ...

2019-01-24 11:25:27 7293

原创 Java并发编程【线程中通信 CountDownLatch、CyclicBarrier、Semaphore 介绍和用法】

CountDownLatch什么是CountDownLatch一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无...

2019-01-22 13:51:21 1950

原创 Java 并发编程【ThreadLocal的使用和原理】

ThreadLocal是什么ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。下图为ThreadLocal的内部结构图从上面的结构图,我们已经窥见ThreadLocal的核心机制:每个Thread线程内部都有一个Map...

2019-01-22 11:52:14 1956

原创 SpringBoot【Swagger2的集成和使用】

Swagger2介绍Swagger是一款RESTful接口的文档在线自动生成、功能测试功能框架。一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务,加上swagger-ui,可以有很好的呈现。SpringBoot集成Swagger2首先添加依赖<!--swagger --><dependency&a

2019-01-21 12:22:45 477

原创 jvm虚拟机 【类加载】

类加载机制概述虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是类加载机制Hotspot类加载器策略是采用懒加载策略类加载的时机类的声明周期类的初始化例子:遇到new,getstatic,putstatic或者invokestatic这4个字节码指令时,如果类么有进行过初始化,则需要先触发其初始化...

2019-01-19 15:22:38 1820

转载 Merkle Tree(默克尔树)

  Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值。非叶节点是其对应子节点串联字符串的hash。 * 1. Hash*  Hash是一个把任意长度的数据映射成固定长度数据的函数。例如,对于数据完整性校验,最简单的方法是对整个数据做Hash运算得到固定长度的Hash值,然后...

2018-09-11 12:07:18 2075

转载 以太坊源码分析

最近发现一个大牛分析以太坊源码,转发一下!! 希望能够分析以太坊的代码来学习区块链技术和GO语言的使用分析go-ethereum的过程,我希望从依赖比较少的底层技术组件开始,慢慢深入到核心逻辑。目录go-ethereum代码阅读环境搭建以太坊黄皮书 符号索引rlp源码解析trie源码分析ethdb源码分析rpc源码分析p2p源码分析eth协议源码分析core源码...

2018-09-10 08:04:53 271

原创 搭建智能合约开发环境

本地安装remix-ide在线编译器首先选择一块风水宝地mkdir tools/solidity-browser -pcd tools/solidity-browser 下载remix安装包git clone https://github.com/ethereum/remix-ide进入目录编译即可npm install启动服务 ...

2018-09-10 07:28:08 2210 1

原创 Mac终端辅助iTerm以及zsh环境变量失效问题

zsh环境变量失效问题, 因为zsh插件新建终端的时候默认只加载 ~/.zshrc。所以解决方案只需要在~/.zshrc里面先加载当前的环境变量。修改 ~/.zshrcexport PATH=$HOME/bin:/usr/local/bin:$PATHsource /etc/profilesource $HOME/.bash_profilesource .......

2018-08-08 10:07:52 2296

原创 简单了解 一致性算法 - Raft

Raft的基本概念角色在Raft中,任何时候一个服务器可以扮演下面角色之一:Leader: 处理所有客户端交互,日志复制等,一般一次只有一个Leader.Follower: 类似选民,完全被动Candidate候选人: 类似Proposer律师,可以被选为一个新的领导人。复制状态机(Replicated State Machine)复制状态机通过复制日志...

2018-08-03 19:19:31 381

原创 通过创世区块来初始化区块链

首先需要一个初始化区块链的json文件,如下。{ "config": { "chainId": 17, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "difficulty":

2018-08-03 02:39:23 2035

原创 如何编写一个简单的智能合约(Smart Contract)

使用solidity语言编写智能合约Ethereum 上的智能合约需要使用 solidity 语言编写。虽然还有其他能用来撰写智能合约的语言如 Serpent (类 Python )、lll (类 Fortran),但是目前看到所有公开的智能合约都是使用solidity撰写。 宣传上说,solidity是一种类JavaScript的语言,而且围绕solidity的各种开发工具链,都是使用属于...

2018-07-26 23:01:40 9747

原创 ElasticSearch 的安装

下载首先先从官网选择版本下载安装包或者直接运行$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.tar.gz解压运行即可$ tar zxvf elasticsearch-6.3.1.tar.gz$ cd elasticsearch-6.3.1$ bi...

2018-07-24 09:48:08 180

原创 玩一玩 golang 之 etcd 基础操作

etcd的安装下载源码, 编译运行git clone https://github.com/coreos/etcd.git$ cd etcd$ ./build$ ./bin/etcd测试etcd设置值$ ETCDCTL_API=3 ./bin/etcdctl put foo barOK获取值 $ ETCDCTL_API=3 ./bin/etc...

2018-07-24 03:45:50 4605 2

转载 玩一玩 Golang 连接 kafka(单机)

环境kafka的安装 zookeeper的安装第三方库准备安装依赖库saramago get github.com/Shopify/saramasarama-cluster依赖库(如果你需要的是集群模式)go get github.com/bsm/sarama-cluster同步消费模式var Address = []string{...

2018-07-24 02:28:03 982

原创 zookeeper单机安装

1.下载zookeeper:wget http://apache.fayea.com/zookeeper/stable/zookeeper-3.4.6.tar.gz2.解压tar zxvf zookeeper-3.4.6.tar.gz3.配置进入配置文件夹,将zoo_sample.cfd文件名称改为zoo.cfg, 缺省的配置内容如下# The nu...

2018-07-19 12:29:41 412

原创 技术杂记 【kafka的安装 (单机)】

一、环境配置kafka 版本 2.11Kafka官网下载地址JDK版本:1.8Zookeeper二、操作过程1、下载Kafka并解压 下载:wget http://mirrors.hust.edu.cn/apache/kafka/1.1.0/kafka_2.11-1.1.0.tgz 解压:tar zxvf kafka_2.11-1.1.0.tgz...

2018-07-19 11:59:55 1252

原创 简单玩一玩 go mysql 编程

首先引入我们需要的第三方库go get github.com/go-sql-driver/mysqlgo get github.com/jmoiron/sqlximport ( _ "github.com/go-sql-driver/mysql" "github.com/jmoiron/sqlx")链接mysql数据库func init(){ ...

2018-07-17 17:53:59 332

原创 关于Mac或Linux下GO的Permission denied提示错误

有时候当你下载第三方库的时候,编译时会提示Permission denied 权限不足,出现这种错误因为权限不够。其中一种办法是需要把你项目目录和go的pck、bin权限放开。chmod -R 777 go目录...

2018-07-11 17:16:42 19389 2

转载 GO中的 new 和 make 的区别

Go 语言中的 new 和 make 一直是新手比较容易混淆的东西,咋一看很相似。不过解释两者之间的不同也非常容易。 他们所做的事情,和应用的类型也不相同。 二者都是用来分配空间。new 函数new 是内建函数,函数原型为func new(Type) *Type内置函数 new 分配空间。传递给new 函数的是一个类型,不是一个值。返回值是 指向这个新分配的零值的指针。...

2018-07-09 09:52:53 309

原创 Node.js Redis 的使用

Node.js Redis基本功能: * 缓存系统 * 数据存储 * 消息中介基本工具 * 服务启动工具 * 命令行 * GUIPS:在之前,需要安装redis对Nodejs的支持 https://redis.io/clients#nodejs$ npm install redis连接redis代码var redis = require('redis')...

2018-06-05 14:27:32 36250 1

原创 vim的介绍&&vim 图表

中文:英文:在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。使用gg=G可对整篇代码进行排版。vim 选择文本,删除,复制,粘贴 文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下:v ...

2018-05-21 17:28:31 935

原创 写一个简单的node程序

写一个简单的node程序首先创建一个新的目录,创建一个新的文件,package.json这个文件用来描述我们这个项目的信息,依赖{ "name": "app_demo", "main": "./app.js", "dependencies": { "express": "*" }}利用node的包管理器,下载

2018-05-17 03:06:50 1662

原创 node 环境安装

安装node下载地址 https://nodejs.org/en/download/NPM 和调试工具的使用主要介绍一下几方面NPMnodemonpm2node-inspector安装npm$ brew install npm因为npm是托管在国外的,这里需要安装国内的景象,国内比较有名的是淘宝的 cnpm首先要关掉npm的ssl认证$ ...

2018-05-17 03:04:02 182

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除