自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

随笔

读万卷书 行万里路

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

原创 分布式架构网络通信

分布式架构网络通信GitHub地址:分布式架构网络通信RPC实现在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、Hessian、SOAP、ESB和JMS等,它们背后到底是基于什么原理实现的呢1. 基本原理要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基本原理,在底层层面去看,网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络IO来实现,其中传输协议比较出名的有tcp、udp等等,tcp、ud

2020-08-08 16:13:24 969

原创 Spring Security + OAuth2.0 + JWT 实现单点登录

使用 Spring Security + OAuth2.0 + JWT 实现单点登录

2020-07-21 17:25:58 3988 4

原创 Spring Security入门及拦截器源码分析

Spring Security入门一、Spring Security简介spring security 的核心功能主要包括:认证授权攻击防护其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是 Basic Authentication Filter 用来认证用户的身份,一个在spring security中一种过滤器处理一种认证方式。比如,对于usename password认证过滤器来说,会检查是否是一个登录请求是否包含username和password(过滤器需要的一些认

2020-07-20 10:48:07 819

翻译 Julia1.4文档 —— 7. Julia控制流

控制流

2020-06-02 17:27:52 42480

翻译 Julia1.4文档 —— 6. Julia 函数

函数

2020-06-02 17:18:52 270

翻译 Julia1.4文档 —— 5. Julia 字符串

字符串Julia 中处理 ASCII 文本简洁高效,也可以处理 Unicode 。使用 C 风格的字符串代码来处理 ASCII 字符串,性能和语义都没问题。如果这种代码遇到非 ASCII 文本,会提示错误,而不是显示乱码。这时,修改代码以兼容非 ASCII 数据也很简单。关于 Julia 字符串,有一些值得注意的高级特性:String 是个抽象类型,不是具体类型Julia 的 Char 类型代表单字符,是由 32 位整数表示的 Unicode 码位与 Java 中一样,字符串不可更改:Strin

2020-05-29 18:07:02 837

翻译 Julia1.4文档 —— 4. Julia 复数和分数

Julia 提供复数和分数类型,并对其支持所有的 标准数学运算 。对不同的数据类型进行混合运算时,无论是基础的还是复合的,都会自动使用类型转换和类型提升。复数全局变量 im 即复数 i,表示 -1 的正平方根。因为 i 经常作为索引变量,所以不使用它来代表复数了。Julia 允许数值文本作为代数系数 ,也适用于复数:julia> 1 + 2im1 + 2im可以对复数做标准算术运算:julia> (1 + 2im)*(2 - 3im)8 + 1imjulia> (1

2020-05-28 19:26:32 387

翻译 Julia1.4文档 —— 3. Julia 数学运算和基本函数

Julia 为它所有的基础数值类型,提供了整套的基础算术和位运算,也提供了一套高效、可移植的标准数学函数。

2020-05-28 15:43:37 1376 1

翻译 Julia1.4文档 —— 2. Julia的基本数值类型

Julia 提供了丰富的基础数值类型,全部的算数运算符和位运算符,以及标准数学函数。这些数据和操作直接对应于现代计算机支持的操作。因此, Julia 能充分利用硬件的计算资源。另外, Julia 还从软件层面支持任意精度的算术 ,可以用于表示硬件不能原生支持的数值,当然,这牺牲了部分运算效率。另外, 对复数和分数的支持建立在这些基础数据类型之上。所有的基础数据类型通过灵活用户可扩展的类型提升系统不需显式类型转

2020-05-28 14:57:37 911

翻译 Julia1.4文档 —— 1. Julia变量

在 Julia 中的一个变量是一个与一个值关联(或绑定)的名称。

2020-05-28 12:34:02 485

原创 Linux下的Julia安装

环境:CentOs7下载首先在https://julialang.org/downloads/找到平台对应的版本进行下载。wget https://julialang-s3.julialang.org/bin/linux/x64/1.4/julia-1.4.2-linux-x86_64.tar.gz解压tar -zxvf julia-1.4.2-linux-x86_64.tar.gz因为这里下载的是二进制版本,所以可以直接使用添加环境变量mv julia-1.4.2 /usr/loca

2020-05-28 09:58:46 4222 1

原创 多线程设计架构模式之监控任务的生命周期

虽然Thread为我们提供了可获取状态,以及判断是否alive的方法,但这些方法均是针对线程本身的,而我们提交的任务Runnable在运行过程中所处的状态如何是无法直接获得的,比如它什么时候开始,什么时候结束,最不好的一种体验是无法获得Runnable任务执行后的结果。一般情况下想要获得最终结果,我们不得不为Thread或者Runnable传入共享变量,但是在多线程情况下,共享变量将导致资源的竞争...

2019-12-23 11:29:11 164

原创 高并发场景下的单例设计模式

饿汉式在类初始化时创建可以保证多个线程下的唯一实例,getInstance()的性能也比较高,但是无法进行懒加载package com.example.demo.singleton;public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {...

2019-12-13 13:31:02 260

原创 深入理解volatile关键字

volatile关键字的介绍volatile关键字只能修饰类变量和实例变量,对于方法参数、局部变量以及实例常量、类常量都不能进行修饰。CPU Cache 模型三级缓存CPU Cache又是由很多个Cache Line 构成,Cache Line 可以认为是 CPU Cache中的最小缓存单位,大小64字节...

2019-12-13 10:54:35 255

原创 线程池原理

动手实现线程池package com.example.demo.threadpool;public interface ThreadPool { /** * 提交任务到线程池 * @param runnable 任务 */ void execute(Runnable runnable); /** * 关闭线程池 */ void shutdown(); /*...

2019-12-12 14:40:59 212

原创 线程间通信

同步阻塞与异步阻塞单线程间通信轮询机制:不断地轮询,如果有数据则读取数据并处理,如果没有则等待若干时间再次轮询通知机制:如果队列中有Event,则通知工作的线程开始工作,没有Event,则工作线程休息并等待通知wait 和 notify简单的生产者消费者package com.example.demo.thread;import java.util.LinkedList;p...

2019-12-11 18:34:23 92

原创 线程安全与数据同步

共享资源共享资源指的是多个线程同时对同一份资源进行访问(读写操作),被多个线程访问的资源就称为共享资源,如何保证多个线程访问到的数据是一致的,则被称为数据同步或者资源同步。synchronized关键字synchronized关键字可以实现一个简单的策略来防止线程干扰和内存一致性错误,如果一个对象对多个线程是可见的,那么对该对象的所有读或者写都将通过同步的方式来进行。synchroni...

2019-12-11 16:12:31 169

原创 JAVA多线程的创建和API

多线程的创建方式创建Thread类:new Thread()实现Runnable接口:Runnable线程的生命周期NEWRUNNABLERUNNINGBLOCKEDTERMINATEDNEW: 创建状态使用new关键字创建的对象RUNNABLE:可执行状态具备执行的资格,但并没有真正的执行起来而是在等待CPU的调度NEW状态通过start方法进入RUNNAB...

2019-12-10 18:44:26 168

原创 JDK1.8 集合类 PriorityQueue 源码学习

概述PriorityQueue 继承 AbstractQueue 抽象类,实现 Serializable接口AbstractQueue 抽象类PriorityQueue 继承 AbstractCollection 抽象类,实现 Queue接口package java.util;/** * This class provides skeletal implementations of ...

2019-12-10 12:28:31 153

原创 JDK1.8 集合类 HashSet 源码学习

概述HashSet 继承 AbstractSet 抽象类,实现 Set、Cloneable和Serializable接口,底层的数据结构为HashMap/** * This class implements the <tt>Set</tt> interface, backed by a hash table * (actually a <tt>HashM...

2019-12-10 12:19:21 180

原创 JDK1.8 集合类 Vector 源码学习

Vector源码欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Mark...

2019-12-10 11:39:36 412

原创 设计模式专题之 —— 行为类模式

行为类模式包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。一、模板方法模式(Template Method Pattern)1.1 定义***Define the skeleton of an algorithm in an operation, deferring some steps to subclas...

2019-12-05 12:38:57 299

原创 设计模式专题之 —— 结构类模式

代理模式(Proxy Pattern)定义Provide a surrogate or placeholder for another object to control access to it.为其他对象提供一种代理以控制对这个对象的访问。通用代码抽象主题类package designpattern.proxy;public interface Subject { // 定义...

2019-12-03 16:19:31 176

原创 设计模式专题之 —— 创建类模式

单例模式(Singleton Pattern)单例模式的定义定义Ensure a class has only one instance, and provide a global point of access to it.确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。通用代码饿汉式单例线程安全package designpattern.Singleton;...

2019-12-03 00:51:31 216

原创 设计模式专题之 —— 六大设计原则

六大设计原则单一职责原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则开闭原则

2019-12-02 12:38:03 94

原创 JDK1.8 集合类 ArrayList 源码学习

概述ArrayList 继承 AbstractList 抽象类,实现 List、 RandomAccess、Cloneable和Serializable接口,是一种可变长度的数组/** * Resizable-array implementation of the <tt>List</tt> interface. Implements * all optional...

2019-11-28 21:13:07 146

原创 Java序列化与反序列化

Java序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指把二进制码重新转换成Java对象的过程。那么为什么需要序列化呢?一般情况下Java对象的声明周期都比Java虚拟机的要短,实际应用中我们希望在JVM停止运行之后能够持久化指定的对象,这时候就需要把对象进行序列化之后保存。需要把Java对象通过网络进行传输的时候。因为数据只能够以二进制的形式在网络中进行传输,因此当...

2019-11-27 14:36:16 368

原创 JDK1.8 集合类 HashMap 源码学习

HashMap 继承 AbstractMap抽象类,实现Map、Cloneable 和 Serializable 接口public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {...

2019-11-27 10:30:48 111

原创 JDK1.8 集合类 HashTable 源码学习

HashTableclass Entry<K,V> 为内部类,实现Map.Entry<K,V>接口,为桶数组的基本元素类型,用来存储<K, V>键值对。它的hashCode值为hash ^ Objects.hashCode(value),即key的hashCode值和value的hashCode 值异或。 /** * Hashtable buck...

2019-11-26 19:43:17 186

原创 深入了解 Java 集合框架

早在 Java 2 中之前,Java 就提供了特设类。比如:Dictionary, Vector, Stack, 和 Properties 这些类用来存储和操作对象组。虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题。由于这个原因,使用 Vector 类的方式和使用 Properties 类的方式有着很大不同。集合框架被设计成要满足以下几个目标。该框架必须是高性能的。基本集合(动...

2019-11-22 12:06:45 72

原创 3. ES 的基础操作 —— 查询、聚合和分析

假设我们在某个公司工作。人力资源部门需要我们创建一个员工目录,需要满足如下需求:能够包含多种类型的数据,包括数字、纯文本等等能有用于检索员工信息支持结构化搜索,例如查找30岁以上的员工。支持简单的全文搜索和复杂的短语搜索。高亮搜索结果中的关键字利用图片分析和管理这些数据。1. 插入数据首先创建一个表(目录)用于存储员工的数据。在 ES 中,我们将存储数据的目录称之为索引。在每...

2019-11-22 11:44:01 437

原创 2. 走进 Elasticsearch

1.1 基本概念和原理ES是什么:Elasticsearch 是实时的分布式搜索分析引擎,内部使用 Lucene 做索引与搜索。Lucene 是 Java 语言编写的全文搜索框架,用于处理纯文本的数据,但它只是一个库,提供建立索引、执行搜索等接口,但不包含分布式服务,这些正是 ES 做的。什么是全文?对全部的文本内容进行分析,建立索引,使之可以被搜索,因此称为全文。ES 可以用来做什...

2019-11-22 10:37:44 69

原创 1. Elasticsearch 环境搭建

使用 docker 搭建Elasticsearch 单机版环境首先获取指定版本的 elasticsearch 镜像docker pull elasticsearch:6.5.0启动容器docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -p 9200:9200 -p 9300:9300 el...

2019-11-22 10:18:48 104

原创 数据结构专题之堆

堆(Heap)是一个可以被看成近似完全二叉树的数组。树上的每一个结点对应数组的一个元素。除了最底层外,该树是完全充满的,而且是从左到右填充。堆包括最大堆和最小堆:最大堆的每一个节点(除了根结点)的值不大于其父节点;最小堆的每一个节点(除了根结点)的值不小于其父节点。堆常见的操作:HEAPIFY 建堆:把一个乱序的数组变成堆结构的数组,时间复杂度为 O(n)。HEAPPUSH:把一个数值放...

2019-11-21 11:22:49 201

原创 数据结构专题之二分查找

介绍什么是二分查找二分查找是计算机科学中最基本、最有用的算法之一。 它描述了在有序集合中搜索特定值的过程。二分查找中使用的术语:目标 Target —— 你要查找的值索引 Index —— 你要查找的当前位置左、右指示符 Left,Right —— 我们用来维持查找空间的指标中间指示符 Mid —— 我们用来应用条件来确定我们应该向左查找还是向右查找的索引...

2019-11-14 17:56:41 228

原创 经典排序算法

分类

2019-11-14 17:53:15 67

原创 数据结构专题之哈希表

介绍

2019-11-14 15:52:48 386

原创 Algorithm Day 12 —— 第十行,第二高的薪水,相同的树

题目一:第十行给定一个文本文件 file.txt,请只打印这个文件中的第十行。示例:假设 file.txt 有如下内容:Line 1Line 2Line 3Line 4Line 5Line 6Line 7Line 8Line 9Line 10你的脚本应当显示第十行:Line 10说明:如果文件少于十行,你应当输出什么?至少有三种不同的解法,请尝试尽可能...

2019-11-12 18:13:24 72

原创 数据结构专题之数组和字符串

介绍数组是数据结构中的基本模块之一。因为字符串是由字符数组形成的,所以二者是相似的。数组简介数组是一种基本的数据结构,用于按顺序存储元素的集合。但是元素可以随机存取,因为数组中的每个元素都可以通过数组索引来识别。数组可以有一个或多个维度。这里我们从一维数组开始,它也被称为线性数组。...

2019-11-12 11:18:10 354

原创 数据结构专题之二叉树

介绍树 是一种经常用到的数据结构,用来模拟具有树状结构性质的数据集合。树里的每一个节点有一个根植和一个包含所有子节点的列表。从图的观点来看,树也可视为一个拥有 N 个节点和 N-1 条边的一个有向无环图。二叉树是一种更为典型的树树状结构。如它名字所描述的那样,二叉树是每个节点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。树的遍历前序遍历中序遍历后序遍历前序遍历...

2019-11-11 17:26:33 362

空空如也

空空如也

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

TA关注的人

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