自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

he_321的博客

因为无知、所以追求

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

原创 ReentrantLock源码分析

ReentrantLock实现源码分析

2020-03-28 00:02:13 1002 1

原创 Volatile全面解析,实现原理及作用分析

在java中,volatile有两个作用,一个是禁止指令重排序(编译时指令重排序 和 CPU乱序执行)。另一个是保证多线程共享变量的可见性。为了讲解volatile时如何禁止指令重排序,防止CPU乱序执行,以及保证变量内存可见性。首先我们需要了解这些概念,即什么是编译时指令重排序?为什么要指令重排序?为什么CPU会乱序执行?什么事内存可见性?之后,再来看volatile做了什么。1 编译时指令重...

2020-02-23 19:37:06 2857 5

原创 从源码分析Synchronized实现原理

线程安全:1、多个线程操作共享资源。2、对共享资源的操作会使得共享资源发生变化。public class SecurityDemo { private static int count = 0; public static void main(String[] args) throws InterruptedException { for (int i = 0...

2020-01-14 21:10:21 1767 2

原创 深入理解MySQL索引之B+Tree

首先,正确的创建合适的索引,是提升数据库查询性能的基础。索引是什么?索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构。索引的工作机制是怎样的?如上图中,如果现在有一条sql语句 select * from teacher where id = 101,如果没有索引的条件下,我们要找到这条记录,我们就需要就行全表扫描,匹配id = 101的数据。如果有了索引,我们就可以快速...

2019-01-13 21:17:25 50695 62

原创 ConcurrentHashMap源码分析

final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) throw new NullPointerException(); //获取key的hash值 int hash = spread(key.hashCode()); int binCount...

2020-04-12 13:59:55 899

原创 Random和ThreadLocalRandom原理分析

Random和ThreadLocalRandom原理分析

2020-04-02 01:01:55 896

原创 VM.getSavedProperty和System.getProperty区别

VM.getSavedProperty和System.getProperty区别

2020-04-01 20:19:36 1712 3

原创 idea打包可执行的jar与Error: Invalid or corrupt jarfile问题

build前的设置1、在菜单中选择 File->project structure2、选择Artifacts,点击"+",选择jar -> from modules with dependencies3、选择执行主类。执行jar的之后,就会从这个类中的main函数开始执行4、选择执行主类之后,idea会自动默认填充META-INF/MANIFEST.MF目录,这个自动默认...

2020-04-01 14:50:32 14372 4

原创 Semaphore源码分析

Semaphore通常用于在程序中做限流使用,控制一段程序同时只能有n个线程同时访问。既然是同时有多个线程能同时访问,那Semaphore是用的肯定就是共享锁。其原理就是有线程获取了锁,就对state减,释放锁后就对state加。state小于0的时候,就对线程阻塞。一旦释放了锁,就唤醒等待线程。Semaphore是通过共享锁实现的,如果对ReentrantReadWriteLock不熟悉的,...

2020-03-29 17:39:24 608

原创 CountDownLatch源码分析

CountDownLatch的作用,就是将多个线程阻塞,等待某一事件触发后,再同时将阻塞的多个线程放行。如果你对ReentrantLock,ReentrantReadWriteLock足够了解的话,通过CountDownLatch的功能,不难想到,CountDownLatch要阻塞多个线程并做到同时放行,所以他的await肯定是使用的共享锁进行阻塞。而创建CountDownLatch的时候,指定...

2020-03-29 16:24:07 566

原创 ReentrantReadWriteLock源码分析

public final void acquireShared(int arg) { if (tryAcquireShared(arg) < 0) doAcquireShared(arg); }protected final int tryAcquireShared(int unused) { /* * Walkthrough: ...

2020-03-29 13:17:56 584

原创 ReentrantLock Condition源码分析

Condition.awaitpublic final void await() throws InterruptedException { if (Thread.interrupted()) throw new InterruptedException(); //将当前线程封装为Node节点加入到wait队列中 Node node = addCondit...

2020-03-28 23:57:06 654

原创 Thread.yield原理分析

Thread.yield()方法的作用是暂时放弃当前线程对CPU的占用权,将它让给其它线程。他是如何实现的呢?通过看yield源码,发现其是本地方法,找到其在JVM中的源码实现如下:JVM_ENTRY(void, JVM_Yield(JNIEnv *env, jclass threadClass)) JVMWrapper("JVM_Yield"); //判断操作系统是否允许使用Yield...

2020-02-24 00:49:30 1616

原创 Thread.join()方法原理分析

如果现在有这样一个场景:在主线程中创建两个线程T1和T2,通过start启动线程后。我们想T1结束了再执行T2,等T1和T2都执行结束,才继续执行主线程,怎么能做到呢?其实很简单,通过join就可以实现:public class JoinDemo { private static int count = 0; public static void main(String[] a...

2020-02-23 23:59:19 715

原创 Wait与notify/notifyAll源码分析

要理解看懂下面讲解的Wait和notify/notifyAll实现原理,首先要弄明白synchronized的实现原理。synchronized的实现原理可以查看上篇文章。

2020-01-18 22:10:38 1098 2

原创 java线程状态变更及中断实现

java创建线程的几种方式1、实现Runnable接口。public class RunnableDemo implements Runnable{ public static void main(String[] args) { //写法1 new Thread(new RunnableDemo(), "runnable线程1").start();...

2019-12-02 22:26:35 1023 2

原创 代理模式 --- 静态代理与动态代理;动态代理的实现原理;手写实现自己的动态代理;比较jdk与cglib;

这篇文章,并不是教你如何使用代理,而是解决以下几个问题:分析静态代理存在的问题。分析jdk动态代理执行过程和实现原理。动手实现自己的动态代理。分析CGlib的动态代理实现原理。比较CGlib动态代理和jdk动态代理。1 静态代理及存在的问题1.1 静态代理在实际的开发中,我们可能会遇到这种问题,如:现在有一个订单的服务接口,以及其实现类如下:/** * 订单服务 */p...

2019-08-31 13:59:58 343

原创 控制单元

控制单元的功能发出各种控制命令或者是微指令,控制整个计算机系统,包括CPU内部的各个部件能够协调,稳定,正确,连续的运行。1、控制单元的外特性输入信号:(1)指令寄存器。来自于指令寄存器的指令的操作码部分。控制单元要对操作码部分进行译码。指出这条指令要做什么操作,以便在指令的执行阶段对不同的指令发出不同的控制信号。(2)时钟信号。控制单元在时钟信号的控制下进行工作。各种微操作命令在...

2019-01-13 00:52:10 11229 2

原创 CPU的结构和功能——指令流水及中断系统

CPU结构(一)CPU的功能想了解CPU的结构,首先要知道CPU的功能。然后讨论什么样的结构能够为CPU提供相应的功能。CPU由运算器和控制器组成。1、控制器的功能取指令,把指令从内存单元中取出分析指令,对指令的操作码部分进行阶码,分析这条指令要完成什么功能,是指令集中哪一条指令执行指令,CPU的控制器发出各种操作命令,由这些操作命令控制相应的部件去完成指令要求的操作,这些操作命令具有...

2019-01-01 17:29:31 10818 6

原创 指令系统,寻址方式

用高级语言或者是汇编语言编写的程序,如果要在计算机上执行,必须要利用编译程序或者是汇编程序把高级语言编写的程序,指令,或者是汇编指令变成由0,1代码组成的机器指令,才能够在计算机中由计算机的硬件按序进行执行。机器指令机器指令;计算机系统的CPU能够直接识别并且执行的操作命令。一个处理器能够执行的所有的机器指令构成的集合,我们称之为指令集。指令集就是计算机系统软件和硬件的交界面。 软件通过指令系...

2018-12-23 19:01:52 11559 2

原创 定点运算,浮点运算,算术逻辑单元

定点运算(一)移位运算1、移位运算的数学意义先举一个例子:15m = 1500 cm,在这个变换过程中,就可以通过移位运算进行实现,实际上在这个等式中,小数点被隐含了,在15m和1500cm数值最后有一个小数点被隐含掉没有体现出来, 在数学中我们说小数点向左或者向右移位,但是这样的说法在计算机中并不合适,在计算机中,小数点是以约定的方式给出的,在计算机中没有任何硬件用于表示小数点,所以在计算...

2018-12-16 04:31:22 12194 5

原创 计算机中数的表示

数据表示:在计算机中能够直接被硬件直接识别和处理的数据类型。即在计算机的指令系统中有对这些中数据类型进行操作的指令。无符号数若无符号数保存在寄存器中,寄存器的位数,反映了无符号数的表示范围。如:如果寄存器位数为8位,存储数据范围为:如果寄存器位数为16位,存储数据的位数范围:有符号数(一)真值和机器首先要明白真值和机器数 的区别:真值: 平时用的真实的值,带有符号的。机器数:...

2018-11-27 22:20:40 10116 3

原创 输入输出系统

输入输出系统的发展概况(一)分散连接早期的计算机,计算机数量少,应用少,外部设备少,外部设备和主机之间的连接采用分散连接的方式,CPU 和 I/O设备 串行 工作,采用程序查询方式。也就是每个设备都有专门的控制线路,这些控制线路甚至和CPU的控制线路设计在一起,紧密耦合,这时候,如果增减外部设备非常难,但是由于当时计算机和外部设备数量少,这样设计还是值得的。这时,外部设备和主机之间的连接主要还...

2018-11-18 18:40:20 4189

原创 辅助存储器

特点不直接与 CPU 交换信息磁表面存储器的技术指标存储容量 = 盘面数量 * 磁道数量 * 每个磁道存储的二进制信息数量平均寻址时间 = 读写头在硬盘表面移动找到指定的磁道时间 + 找到磁道后读写头停止移动,磁盘旋转直到要读写的扇区移动到磁头下所需要的时间数据传输率 = 密度 * 旋转速度磁记录原理(一)写数据通过通入电流,就可以对载磁体表面进行磁化,根据通入电流方向的不同,在...

2018-11-18 02:33:15 3051

原创 高速缓冲存储器Cache

为什么要使用CacheCPU 和主存(DRAM)的速度差异,避免 CPU “空等” 现象。程序局部性原理为了充分发挥Cache的能力,使得机器的速度能够切实的得到提高,必须要保障CPU访问的指令或数据大多情况下都能够在Cache中找到,这样依靠程序访问的局部性原理。时间局部性: 当前正在使用的指令和数据,在不久的将来还会被使用到。那就是如果使用了指令和数据,将这些指令和数据放入到cach...

2018-11-18 02:03:54 6891

原创 主存储器

存储器层次结构缓存-主存层次,主存-辅存层次缓存的功率大于主存,速度高于主存,缓存和主存之间,通过硬件技术进行连接,为了解决CPU和主存速度的不匹配问题,使用硬件技术 提升速度。主存辅存之间通过软硬件结合进行连接,辅存用于解决主存容量问题。主存的基本组成存储体由若跟个存储单元组成,存储单元由多个存储元件组成存储体----存储单元(存储一串二进制串)----存储元件(存储一个0/1)...

2018-11-16 22:36:56 8130 1

原创 总线

冯诺依曼计算机特点1、 由运算器,控制器(指挥控制程序的运行),存储器,输入设备,输出设备五部分组成。2、 指令和数据以同等地位存于存储器,可按照地址进行访问。3、 指令和数据使用二进制进行表示。4、 指令由操作码和地址码组成,操作码:要进行什么操作,地址码:操作数所在的内存或寄存器中地址5、 存储程序:程序存放于存储器中。6、 以运算器为中心。具体图如下:以运算器为中心,所有的数...

2018-11-06 22:03:48 879 4

原创 VUE修改select option绑定的数组对象却无法及时刷新页面数据问题

对于一个刚毕业的后端开发者,开始总以为后端开发只做后端,谁知第一个月工作内容大部分都是前端,天真,只能说天真。才入前端,坑真的很多,简单的样式倒是很好解决,遇到稍微棘手点问题还是挺浪费时间的,这两天就遇到一个VUE修改select option绑定的数组对象却无法及时刷新页面数据问题,整整浪费了一早上的时间,这里简单做下记录。html页面代码如下:&lt;el-select v-mod...

2018-08-13 11:10:41 19097 9

原创 nginx+flume+hdfs搭建实时日志收集系统

1、配置nginx.conf,添加以下配置http { #配置日志格式 log_format lf '$remote_addr^A$msec^A$http_host^A$request_uri'; server { listen 80; server_name localhost; location / { ...

2018-02-13 01:33:43 1686

原创 HBase安装

(1)配置运行环境hbase-env.shexport JAVA_HOME=/home/bxp/Documents/install/jdk1.8.0_131(2)编辑hbase-site.xml配置文件configuration> property> name>hbase.rootdirname> value>hdfs://hadoop-series.bxp.

2018-02-06 18:19:56 240

原创 Nginx反向代理配置

配置Nginx代理location /name/ { proxy_pass http://target/;}当访问此location的时候,请求会被转发到http://target;配置Nginx反向代理upstream nginx { server www.bxp1.com:8080 weight=1; server www.bxp2.com

2018-02-03 01:31:17 1497

原创 配置nginx访问状态监控

(1)nginx自带状态检测(比较简陋) location /basic_status { stub_status on; }通过访问配置的location查看状态(2)tengine状态检测upstream cluster1 { # simple round-robin server 192.168.0.1:80; s

2018-02-02 01:11:09 703

原创 Nginx访问控制

配置nginx进程个数和链接数量worker_processes 1;//进程个数,一般配置的数目和主机cpu的总核数相同。worker_connections 1024;//单个进程最大链接数量配置IP访问控制location / {deny 192.168.1.109; //禁止访问192.168.1.109;allow 192.168.1.0

2018-02-01 23:07:03 945

原创 Nginx虚拟主机配置

虚拟主机配置在nginx/conf/nginx.conf中,使用serve进行配置,server中各个参数的含义如下:server { listen 80; //虚拟主机监听的端口 server_name localhost; //虚拟主机域名 location / { //资源路径映射路径

2018-02-01 21:42:32 225

原创 Tengine安装

关于nginx是什么这里不进行赘述,这里安装的是Tengine,Tengine是nginx的封装加强版,由淘宝开源。下面进行编译安装。 (1)安装依赖yum -y install gcc openssl-devel pcre-devel zlib-devel(2)配置 相关配置参数说明:./configure \ //安装的目录--prefix=/usr \ //执行

2018-01-31 22:49:37 293

原创 Spooling Directory Source 使用

在使用exec来监听数据源虽然实时性较高,但是可靠性较差,当source程序运行异常或者linux命令中断,都会造成数据的丢失,再恢复正常运行之前,数据的完整性无法得到保证。 Spooling Directory Source通过监听某个目录下的新增文件,并将文件的内容读取出来,实现日志信息的收集。实际使用中会结合log4j进行使用。被传输结束的文件会修改后缀名,添加.completed后缀(可

2018-01-29 17:05:01 1647

原创 Flume HA

flume的HA就是HDFS的HA,如何配置HDFS HA可以查看HDFS高可用(HA)配置 HDFS HA配置好了以后,为了Flume能够访问HDFS HA,将hdfs的配置文件core-site.xml,hdfs-site.xml拷贝到flume的配置目录conf下,让flume自己去解析即可。

2018-01-29 10:37:20 1287

原创 编写agent,执行tail命令将文件导入hdfs,并设置以时间为目录进行存放

文件内容如下:#define agentagent.sources = r2agent.channels = c2agent.sinks = k2# defined source agent.sources.r2.type = execagent.sources.r2.command = tail -f /home/bxp/Documents/doc/flume/test.l

2018-01-28 23:37:14 407

原创 Flume安装与第一个Agent应用

安装(1)编辑flume-env.sh配置文件,配置javahomeexport JAVA_HOME=/home/bxp/Documents/install/jdk1.8.0_131(2)将flume与hdfs集成的jar包导入的到flume的lib目录下(自行度娘下载)。命令bin/flume-ng agentglobal options(全局选项):--conf

2018-01-28 00:11:59 692

原创 初识flume

flume由clouder公司开发并且开源。flume是一个分布式可靠的进行数据收集,聚合,移动的框架,他进行数据的实时收集。flume架构简单灵活,由java编写,只能够支持linux操作系统。flume分布式架构:每个服务器上都有日志,再每个服务器安装flume客户端 flume日志收集架构: Flume只有一个角色的节点,agent角色,agent由source,

2018-01-27 19:21:11 236

空空如也

空空如也

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

TA关注的人

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