- 博客(41)
- 资源 (2)
- 收藏
- 关注

原创 缓存算法与应用详解
引言在负载均衡算法与应用详解中有提到,负载均衡有利于提升集群服务器的吞吐量、数据并行处理能力、减少用户响应时间,提升业务可靠性等。但是分布式缓存集群的伸缩性不能使用简单的负载均衡手段来实现。缓存服务器集群和应用服务器集群负载均衡的不同点在于:集群中所有应用服务器部署的应用都是相同的; 集群中不同缓存服务器中的缓存数据各不相同;本文目录缓存的定义; 缓存的算法; LRU算法(...
2019-03-20 10:42:25
465

原创 负载均衡算法与应用详解
引言负载均衡的定义; 负载均衡算法; 负载均衡的应用场景;负载均衡的定义负载均衡(Load Balance)是一种集群技术,它将特定的业务(网络服务、网络流量等)分担给多台网络设备(包括服务器、防火墙等)或多条链路,从而提高了业务处理能力,保证了业务的高可靠性。负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、...
2019-03-19 19:59:23
1204

原创 ThreadLocal 源码分析
引言在 jdk/jre/lib/rt.jar 字节码包中,可以看到关于ThreadLocal类及其内部类编译后的文件;通过本文的对相关类的源码分析,旨在理清Thread、ThreadLocalMap、Entry、ThreadLocal之间的关系ThreadLocalMap类分析ThreadLocalMap是ThreadLocal中的内部类,它是实现ThreadLocal类功能的...
2019-03-17 10:26:32
332
原创 mosquitto 服务器环境安装及前端websocket支持配置
第一步:安装前准备用到的依赖包:$ sudo apt-get update$ sudo apt-get install build-essential python quilt devscripts python-setuptools python3$ sudo apt-get install libssl-dev$ sudo apt-get install cmake$ sud...
2019-12-31 02:37:57
1305
1
原创 红黑树与TreeMap源码分析
红黑树TreeMap源码分析参考文献Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例 史上最清晰的红黑树讲解(上) 漫画:什么是红黑树?...
2019-03-20 21:36:36
302
原创 一致性Hash算法分析与实现
关于一致性Hash算法的原理讲解,可先阅读:缓存算法与应用详解;引言在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Connection)、响应速度算法(Response Time)、加权法(Weighted )等。其中哈希算法是最为常用的算法.典型的应用场景是: 有N台服务器提供缓存...
2019-03-20 20:29:42
451
原创 LinkedList 双向链表源码分析
目录LinkedList介绍 Node内部类 LinkedList源码分析LinkedList 介绍在分析缓存淘汰算法LRU时,双向链表是其中一种实现方式,动手实现时才发现head和tail在没有其他结点时的处理很别扭,所以就研究下LinkedList的源码,找点思路;首先看看关于LinkedList的简介LinkedList是一个继承于AbstractSequentia...
2019-03-20 13:57:07
482
原创 数据仓库与元数据
数据仓库数据仓库的定义 数据仓库的特点 数据仓库和数据库的对比 OLAP和OLTP的区别 什么是ETL 主流数据仓库 数据仓库与Hadoop生态数据仓库的定义数据仓库,英文名称Data Warehouse,简写为DW。数据仓库顾名思义,是一个很大的数据存储集合,出于企业的分析性报告和决策支持目的而创建,对多样的业务数据进行筛选与整合。它为企业提供一定的BI(商业智能)能...
2019-03-19 12:21:57
3994
原创 TCP/IP 和 HTTP 详解
目录TCP详解 长连接与短连接 HTTP的keep_alive和TCP的keep_alive的区别TCP定义:传输控制协议(TCP,Transmission Control Protocol)提供可靠的端到端字节流的协议。TCP具备面对各种故障时的健壮性。可靠性; 端到端; 字节流本节目录TCP报文头格式要点详解 套接字Socket TCP分包和组包 TCP...
2019-03-18 11:27:52
642
原创 AbstarctQueuedSynchronizer 源码分析和框架思想
引言Node类Node类是AQS中的final内部类,static final class Node { static final Node SHARED = new Node(); /** 共享模式的Node */ static final Node EXCLUSIVE = null; /** 互斥模式的Node */ volat...
2019-03-17 17:18:05
263
原创 HashMap、Hashtable、ConcurrentHashMap源码分析和对比
HashMapHashtableConcurrentHashMap总结对比
2019-03-17 16:23:50
203
原创 《Java并发编程实战》线程安全性和对象共享
引言多进程和多线程的优点? 多线程的优势与风险? 竞态条件是什么?早期计算机中还不存在操作系统,一台机器从头到尾只能执行一个程序,并且这个程序能访问所有的计算机资源。操作系统的引入是的计算机“同时”能运行多个程序,不同程序都在单独的进程中运行:操作系统为各个独立的进程分配各种资源,包括内存、文件句柄以及安全证书等。不同进程之间可以通过一些粗粒度的通信机制来交换数据,包括:套接字、信号...
2019-03-16 12:30:13
465
原创 setState 和 compareAndSetState方法作用分析
AQS中有三个protected方法:getState, setState, compareAndSetState。这三个方法是AQS中提供给自定义同步器来获取state状态的三个基本工具方法,那么setState和compareAndSetState都是用来修改状态的,两者有什么不一样,为什么两者能共存,其各自使用场景分别是什么?分析AQS和ReentrantLock的源码可知:co...
2019-03-13 22:20:35
4300
转载 CAS自旋volatile变量
---------------------作者:wxy941011来源:优快云原文:https://blog.youkuaiyun.com/wxy941011/article/details/80822949版权声明:本文为博主原创文章,转载请附上博文链接!(侵删)我们先来看一下AtomicInteger类的getAndIncrement的源代码:public fin...
2019-03-13 21:01:45
615
原创 wait()和notify()详解
等待通知机制基本用法:public class Test { public static void main(String[] args) throws InterruptedException { Thread waitThread = new Thread(new Runnable() { @Override p...
2019-03-12 21:28:58
1929
2
原创 Java synchronized阻塞的同步队列现象分析
public class Singleton { public static void main(String[] args) throws InterruptedException { for (int i=0; i<10; i++){ new Thread(new QueueThread()).start(); ...
2019-03-12 20:02:22
2184
2
原创 Java中线程安全的单例模式
第三种:用“双重检查加锁”,在getInstance中减少使用同步public class Singleton { private volatile static Singleton uniqueInstance = null; public static void main(String[] args){ Singleton singleton = Si...
2019-03-12 15:37:01
1438
2
原创 利用wait()和notify()方法实现多线程的“有序”执行
例题描述:建立三个线程,A线程打印100次A,B线程打印100次B,C线程打印100次C,要求线程同时运行,交替打印100次ABC。这个问题用Object的wait(),notify()就可以很方便的解决。public class HelloJava{ static class OrderedThread implements Runnable{ private ...
2019-03-11 21:20:01
836
原创 CODA数据集 -- 出租车存MySQL源码
主类:import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.sql.*;import java.util.ArrayList;public class Test { private static Connection connec...
2019-03-06 19:31:59
979
原创 Java核心 -- Hash
hashCode()方法// jdk中的Object类通过本地方法,实现hashCode(),返回该对象的散列码public native int hashCode();哈希码也成散列码。其作用是确定该对象在哈希表中的索引位置。也就是说:hashCode() 在散列表中才有用,在其它情况下没用。 equals()方法和 “==”equals() 的作用是 用来判断两个对...
2019-02-25 12:50:30
132
原创 Java并发编程的艺术 -- Java并发机制的底层实现原理
Java源码会在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行。所以,Java中所使用的并发机制依赖于:字节码编译器、 JVM的实现 CPU的指令 目录volatile关键字 synchronized 原子操作的实现原理 volatile关键字volatile在英文中的意思是“易变的”、“不稳...
2019-02-21 10:14:38
176
原创 Java并发编程实战 -- 笔记1
类的标注我们使用了3个类级别的标注(用来说明了类和类成员的并发属性)来描述类的线程安全性保证:@Immutable,@ThreadSafe和@NotThreadSafe。@Immutable表示类是不可变的,它包含了@ThreadSafe的含义。@NotThreadSafe是可选的,如果一个类没有标注为线程安全的,那么就应该加上它不是线程安全的,但如果想明确地表示这个类不是线程安全的...
2019-02-20 11:23:23
193
原创 Java核心 -- 多态
参考资料:从JVM角度看Java多态导论在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。多态也称作动态绑定、后期绑定或者运行时绑定,其作用是消除类型之间的耦合关系。 -- “编写只与基类打交道的程序”Java是通过对方法的动态绑定来实现多态。 向上转型:对象既可以作为它自己本身的类型使用,也可以作为它的基类型使用,这种把对某个对象的引用视为对其...
2019-02-18 16:58:51
227
原创 Java核心 -- 抽象类和接口
导论接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。接口被用来建立类与类之间的协议。interface不仅仅是一个极度抽象的类,它允许人们通过创建一个能够被向上转型为多种基类的类型,来实现某种类似多重继变种的特性。抽象类是普通类与接口之间的中庸之道,尽管在构建具有某些未实现方法的类时,你的第一想法可能是创建接口,但是抽象类仍旧是用于此目的的一种重要而必须的工具,因...
2019-02-17 21:58:58
201
原创 Java核心 -- 泛型
导论从Java程序设计语言1.0版发布以来,变化最大的部分就是泛型。专家组花费了5年左右的时间来定义规范和测试实现。使用泛型机制编写的程序代码要比那些杂乱的使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。泛型对于集合类尤其有用。例如,ArrayList就是一个无处不在的集合类。 从一个例子说起import java.util.ArrayLi...
2019-02-17 17:46:21
248
原创 Java核心 -- Class类
导论在周志明的《深入理解Java虚拟机》书中的类加载机制章节上有提到,在“类加载”过程的加载阶段,虚拟机需要完成以下三件事:通过一个类的全限定名来获取定义此类的二进制字节流; 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构; 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口; 在《Java核心技术 卷一》关于反射...
2019-02-17 14:53:19
389
原创 Java核心 -- 反射
能够分析类能力的程序称为反射。反射可以用来:在运行时分析类的能力 在运行时查看对象,例如,编写一个toString方法供所有类使用 实现通用的数组操作代码 利用Method对象在讨论反射之前,需要先了解Java中一个非常基础重要,但又容易让人忽略的类,即Class类(关于Class类的讲解,可以查看《Java核心 -- Class类》)...
2019-02-17 14:45:44
148
原创 Java核心 -- 基本程序设计结构
final关键字修饰变量:关键字final修饰变量,表示这个变量只能被赋值一次,一旦被赋值之后,就不能再更改了,即final修饰变量时,是用来定义常量的,常量名应该全大写。例如如下代码:final double PI = 3.14;PI = 24.1; // error: cannot assign a value to variable 'PI'修饰方法:可被子类继承,但是不能被子...
2019-02-16 17:20:46
210
原创 Python基础知识概览
1.1 Python基础知识1.1.1 Python 对象类型Python中一切都是对象,Python内置对象有: 布尔型:True、False; 空型:None; 数字:12、3+4j(复数,j表示); 字符串:'sfc'、" I'm Ethan "; 列表: ['a', 1 , ['cd', 235]]; 元组:(2, -...
2017-11-03 17:55:06
451
原创 Java数据流之字节级输入输出类
一,InputStream和OutputStreamI/O流类的应用是成对的每个写数据的输出类,都有一个相对应的读数据的输入类;通过字节级流出类写入的数据能被字节级输入流读取,而被诸如纯文本编辑器之类的应用程序写入的数据可能与字节级数据流数据不兼容;InputStream及其子类InputStream是一个抽象类,BufferedInputStream:增加输入到另一个输入的缓冲功能,当读或
2017-04-14 09:55:43
811
原创 Java 数据流之File类
一,文件类File类File类构造方法第一种:File(String path) ,path指明新创建File对象对应的文件或目录的路径,如: File f1=new File("C:\myProgram\Java"); //绝对路径下新建文件,指定目录 File f2=new File(\myProgram\Java"); //相对路径下新建文件,当前目录下的子目录myProgram
2017-04-12 23:03:48
1039
原创 Java的流类
一,基本分类java.io包流类基本分组字节级流类: 字符级流类: 对象级流类: InputStream类和OutputStream类,Reader类和Writer类都是Object类的直接子类,而对象级输入输出流类属于InputStream和OutputStream类的子类;I/O包中常用的且为Object类的直接子类有如下:
2017-04-12 22:08:14
337
原创 Java重载,继承,覆盖
一,重载重载含义对一个方法多次定义,即方法名相同,输入参数不同;输入参数不同:参数数量不同/参数类型不同/参数次序不同(次序不同前提是有不同的数据类型,不然次序无意义);重载对所有的成员方法都适用(包括构造方法,但不包括finalize方法);重载使用技巧当重载一个构造方法时,首先要提供一个尽可能普通的版本(输入参数最全面的版本),其他版本可使用this(参数)方式调用该版本的构造方法,取代
2017-04-11 16:37:14
389
原创 Linux磁盘系统
一,硬盘组成和分区扇区,柱面,分区扇区sector,最小物理存储单位,每个扇区512bytes;第一个扇区最重要,其含有硬盘主引导记录MBR和分区表,MBR占446bytes,partition table占64bytes;柱面cylinder,分区的最小单位,是扇区组成的圆;分区partition,指起始柱面到结束柱面之间的块;磁盘分区:告诉操作系统可访问区域是由A柱面到B柱面之间的块;
2017-04-04 00:32:15
575
原创 linux文件内容查阅
一,直接查看文件内容cat命令cat是concatenate(连续)的简写,是将一个文件的内容连续显示在屏幕上面;-n,打印出行号,连同空白行也会有行号;-b,打印出行号,但仅对非空白行做行号显示,空白行不标行号;-v,列出一些看不出来的特殊字符;-E,将结尾的断行字符显示出来;(Windows的断行字符是M显示出来;(Windows的断行字符是^M)-T,将Tab键以^I显示出来;-
2017-03-29 12:52:24
472
原创 liunx目录文件管理命令
一,cd指令的使用特殊目录符号.代表当前目录,如“cd .”相当于目录没有发生切换;..代表上一层目录,如需访问与a同级的b目录,可以先回退再进入b,则“cd ../b”;-代表前一个工作目录,“cd -”主要方便打开刚才打开的目录,而两切换间通常没有必然层级关系;~代表“当前工作的用户”的主文件夹,如当前用户为jack,则“cd ~”则会进入到“/home/jack”下;~account
2017-03-28 14:31:05
434
原创 linux 修改用户名
修改用户信息可用usermod命令,usermod具体使用方法见:转帖–usermod详解在tty7界面下想修改当前用户名会报错:“user ethan is currently used by process 1357 ” 将用户名ethan改为user1报错,ethan@WalleIT:~$ usermod -l user1 ethanusermod: user ethan is
2017-03-28 12:31:23
2387
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人