自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

林木森的博客

极致源于热爱

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

原创 机器学习入门

什么是机器学习从大量现象中提取反复出现的规律与模式。这一过 程在人工智能中的实现就是机器学习。机器学习是计算机基于数据构建概率统计 模型并运用模型对数据进行预测与分析的学科。解决什么问题问题不能是完全随机的,需要 具备一定的模式;问题本身不能通过纯计算的方法解决;有大量的数据可供使 用。机器学习的任务,就是使用数据计算出与目标函数最接近的假设,或者说拟合出最精确的模型 。在机器学习中,数据并非通常意义上的数量值,而是对于对象某些性质的描述。被描述的性 质叫作属性,属性的取值称

2020-11-30 22:47:30 11

原创 AI人工智能概念(机器学习,深度学习,强化学习)

我们常常听到人工智能,机器学习,深度学习,神经网络,强化学习,图像识别,语音识别,自然语言处理等等诸多人工智能领域的词汇,今天我们就来梳理一下每个名词的概念以及他们的关系:人工智能首先使用来解决问题的:人工智能:人工智能可以分为很多领域,如:自然语言理解,图像识别,语音识别,推荐系统等等。机器学习:机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。机器学习:一种实现人工智能的方

2020-11-30 22:14:39 27

原创 Spring Security核心类详解

Spring Security是什么Spring Security 是一种基于 Spring AOP 和 Servlet 过滤器 Filter 的安全框架,它提供了全面的安全解决方案,提供在 Web 请求和方法调用级别的用户鉴权和权限控制。Web 应用的安全性通常包括两方面:用户认证(Authentication)和用户授权(Authorization)。用户认证指的是验证某个用户是否为系统合法用户,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码,系统通过校验用户名和密码来完成认

2020-11-22 16:30:07 12 1

原创 Java编程规范:命名

一、类命名1. 抽象类适用的设计模式为模板模式。抽象是自下往上的设计。由具体实现推断出抽象方法。建议以Abstract开头。建议示例Abstract 或者 Base 开头BaseUserService、AbstractUserService2. 枚举类枚举是由JVM来保证的单例。可以用来做单例类。枚举类常用作值判断,不建议每次进行循环判断得到实例。建议由内部维护一个map类型,当做cache。此方法建议放在static静态代码块中实现建议示例..

2020-11-21 17:00:17 19

原创 nginx安装

nginx安装1 下载nginx安装包下载上传离线包 nginx-1.11.3.tar.gz或wget [nginx地址]2 解压安装包tar –zxvf nginx-1.11.3.tar.gz3 安装依赖3.1****安装gcc g++的依赖库(如有gcc环境,忽略此步骤)apt-get install build-essentialapt-get install libtool3.2安装 pcre依赖库apt-get updateapt-get install l

2020-11-01 20:01:56 4

原创 Typro + PicGo + gitee搭建图床

PicGo搭建1.下载https://github.com/Molunerfinn/PicGo/releaseswindow下载exe安装包,然后直接下一步就可以2.配置picgo支持多种图床,考虑稳定性以及网速,我们选用Gitee作文件存储首先我们在gitee上建一个仓库ps:仓库必须为公开的,其他配置如下图3.建好仓库后,由于默认图床没有gitee,我们点击插件设置,然后搜索gitee,安装 gitee-uploader 1.1.2,然后点开配置repo填URL红色的部分,就是用户

2020-08-13 19:29:28 64

原创 influxDB自定义查询时区

官方给出的案例以及网上查询时区都是这样的tz('Asia/Shanghai')那我们想要按照GMT+12时区或者是其他时区怎么办呢怎么办呢,其实官网文档有给出我们所有的时区转换,不过好像得fan qiang我给出自己整理的所有的转换,需要的时候直接通过map来获取就好啦private static final Map<String,String> TIME_ZONE = new HashMap<String,String>(); static {

2020-07-25 16:33:04 306

转载 使用influxDB 报错 【NoSuchMethodError kotlin.collections.ArraysKt.copyInto([B[BIII)[B】

现象本地在IDEA上使用okhttp的时候没有问题,在给同事用的时候发现一直报这个错误,并且几个同事出现的可能性都不一样。怀疑跟IDEA的版本有问题,因为抛出的异常跟IDEA的包有关系。解决在pom.xml中加入<!-- https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib --><dependency> <groupId>org.jetbrains.kotlin&lt

2020-06-30 17:42:41 1269

原创 一起来搭建istio环境

打开 http://www.katacoda.com/ ,找到kubernetes 环境下载istiocurl -L https://istio.io/downloadIstio |sh -添加环境变量export PATH="$PATH:/root/istio-1.6.2/bin"安装istioctl mainifest apply --set profile=demo

2020-06-14 17:24:59 157

原创 Quorum NWR算法

不知道你在工作中有没有遇到这样的事儿:你开发实现了一套 AP 型的分布式系统(我在 04 讲提到了 AP 型系统的特点,你可以回顾一下),实现了最终一致性。业务也接入了,运行正常,一起看起来都那么美好。可是,突然有同事说,我们要拉这几个业务的数据做实时分析,希望数据写入成功后,就能立即读取到新数据,也就是要实现强一致性(  Werner Vogels 提出的客户端侧一致性模型,不是指线性一致性),数据更改后,要保证用户能立即查询到。这时你该怎么办呢?首先你要明确最终一致性和强一致性有什么区别

2020-05-26 21:40:14 116

原创 Gossip协议 详解
原力计划

我们之前讲的二阶段提交协议和 Raft 算法,它们都需要全部节点或者大多数节点正常运行,才能稳定运行。假如我们希望自己的系统能在极端情况下(比如集群中只有一个节点在运行)也能运行.我们要怎么办呢?我们可以通过 Gossip 协议实现这个目标。Gossip 协议,顾名思义,就像流言蜚语一样,利用一种随机、带有传染性的方式,将信息传播到整个网络中,并在一定时间内,使得系统内的所有节点数据一致。对你来说,掌握这个协议不仅能很好地理解这种最常用的,实现最终一致性的算法,也能在后续工作中得心应手地实现数据

2020-05-26 21:28:11 522

原创 一致哈希算法详解
原力计划

学完前面几讲后,有些同学可能有这样的疑问:如果我们通过 Raft 算法实现了 KV 存储,虽然领导者模型简化了算法实现和共识协商,但写请求只能限制在领导者节点上处理,导致了集群的接入性能约等于单机,那么随着业务发展,集群的性能可能就扛不住了,会造成系统过载和服务不可用,这时该怎么办呢?其实这是一个非常常见的问题。在我看来,这时我们就要通过分集群,突破单集群的性能限制了。说到这儿,有同学可能会说了,分集群还不简单吗?加个 Proxy 层,由 Proxy 层处理来自客户端的读写请求,接收到读写请求

2020-05-26 21:12:04 54

原创 Raft 算法详解(二)日志复制
原力计划

在 Raft 算法中,副本数据是以日志的形式存在的,领导者接收到来自客户端写请求后,处 理写请求的过程就是一个复制和提交日志项的过程。那 Raft 是如何复制日志的呢?又如何实现日志的一致的呢?这些内容是 Raft 中非常核心 的内容,首先,咱 们先来理解日志,这是你掌握如何复制日志、实现日志一致的基础。如何理解日志?刚刚我提到,副本数据是以日志的形式存在的,日志是由日志项组成,日志项究竟是什么样 子呢?其实,日志项是一种数据格式,它主要包含用户指定的数据,也就是指令(Command), 还包含一些

2020-05-24 21:34:32 132

原创 Raft 算法详解(一)领导者选举
原力计划

Raft 算法属于 Multi-Paxos 算法,它是在兰伯特 Multi-Paxos 思想的基础上,做了一些简 化和限制,比如增加了日志必须是连续的,只支持领导者、跟随者和候选人三种状态,在理 解和算法实现上都相对容易许多。除此之外,Raft 算法是现在分布式系统开发首选的共识算法。绝大多数选用 Paxos 算法的 系统(比如 Cubby、Spanner)都是在 Raft 算法发布前开发的,当时没得选;而全新的系统大多选择了 Raft 算法(比如 Etcd、Consul、CockroachDB)。对你

2020-05-24 15:55:43 91

原创 Poxos算法详解(二)
原力计划

经过上篇文章的学习,你应该知道,Basic Paxos 只能就单个值(Value)达成共识,一旦遇到为一系列的值实现共识的时候,它就不管用了兰伯特并没有把 Multi-Paxos 讲清楚,只是介绍了大概的思想,缺少算法过程 的细节和编程所必须的细节(比如缺少选举领导者的细节)。这也就导致每个人实现的 Multi-Paxos 都不一样。不过从本质上看,大家都是在兰伯特提到的 Multi-Paxos 思想上补充细节,设计自己的 Multi-Paxos 算法,然后实现它(比如 Chubby 的 Multi-Pa

2020-05-24 14:09:45 123

原创 Paxos 算法详解(一)
原力计划

前言提到分布式算法,就不得不提 Paxos 算法,在过去几十年里,它基本上是分布式共识的代 名词,因为当前最常用的一批共识算法都是基于它改进的。比如,Fast Paxos 算法、 Cheap Paxos 算法、Raft 算法、ZAB 协议等等。兰伯特提出的 Paxos 算法包含 2 个部分:一个是 Basic Paxos 算法,描述的是多节点之间如何就某个值(提案 Value)达成共 识;另一个是 Multi-Paxos 思想,描述的是执行多个 Basic Paxos 实例,就一系列值达成共 识

2020-05-24 13:52:59 389

原创 大数据技术栈一览

1. 数据采集和传输层FlumeFlume一个分布式、可靠的、高可用的用于数据采集、聚合和传输的系统。常用于日志采集系统中,支持定制各类数据发送方用于收集数据、通过自定义拦截器对数据进行简单的预处理并传输到各种数据接收方如HDFS、HBase、Kafka中。之前由Cloudera开发,后纳入ApacheLogstashELK工作栈的一员,也常用于数据采集,是开源的服务器端数据处理管道SqoopSqoop主要通过一组命令进行数据导入导出的工具,底层引擎依赖于MapReduce,主要用于Hadoop

2020-05-21 21:20:48 142

原创 分库分表详解
原力计划

前沿当数据库的数据量过大,大到一定的程度,我们就可以进行分库分表。那么基于什么原则,什么方法进行拆分数据库瓶颈不管是 IO 瓶颈还是 CPU 瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载的活跃连接数的阈值。在业务 Service 来看, 就是可用数据库连接少甚至无连接可用,接下来就可以想象了(并发量、吞吐量、崩溃)。IO 瓶颈:第一种:磁盘读 IO 瓶颈,热点...

2020-05-04 09:50:28 229

原创 SpringBoot源码解读之启动流程

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication // <1>public class MVCApplication { public s...

2020-04-05 12:22:29 41

转载 Kubernetes,微服务以及 Service Mesh大白话

就微服务框架而言,可以认为出现了两个版本:微服务1.0和微服务2.0微服务1.0:代表就是阿里开源的Dubbo和Povital的SpringCloud,相对SpringCloud而言,Dubbo更多的是一种服务治理框架,并不能完全覆盖微服务的各项功能需求。而Spring Cloud一方面是针对微服务而设计,另外一方面Spring Cloud是通过集成各种组件的方式来实现微服务,因此理论上可以集...

2020-04-04 22:26:14 81

原创 一个好看的博客园主题

https://www.cnblogs.com/cjunn/#/cnblog/works/article/12436930

2020-03-26 15:02:26 4466 2

原创 centos7 下docker 安装

1.查看内核版本建议3.10以上(ubuntu下要linux内核3.8以上uname -a2.把yum包更新到最新yum update3.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的yum install -y yum-utils device-mapper-persistent-data lvm2...

2020-02-08 16:52:15 23

原创 influxDB系列(二)influxDB常用操作

二、使用安装#Ubuntuwget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -source /etc/lsb-releaseecho "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | su...

2020-01-15 19:14:49 278

原创 InfluxDB系列(一)influxDB简介

一、简介InfluxDB是一个由InfluxData用go语言开发的开源时序型数据库,专注于海量时序数据的高性能读、高性能写、高效存储与实时分析等,无需外部依赖。主要特点1)基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)2)可度量性:你可以实时对大量数据进行计算设计理念同一时间点多次写入同样的数据被认为是重复写入极少出现删除数据的情况,删除数据基本都是清理过期数据...

2020-01-15 19:13:07 370

原创 happens-before规则和as-if-serial语义

指令序列的重排序我们在编写代码的时候,通常自上而下编写,那么希望执行的顺序,理论上也是逐步串行执行,但是为了提高性能,编译器和处理器常常会对指令做重排序。1) 编译器优化的重排序。编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。2) 指令级并行的重排序。现代处理器采用了指令级并行技术来将多条指令重叠执行。如果不存在数据依赖性,处理器可以改变语句对应机器指令的执行顺序。3...

2019-12-21 16:08:59 77

原创 ConcurrentHashMap源码解读(更新中)

ConcurrentHashMap作为Concurrent一族,其有着高效地并发操作,相比Hashtable的笨重,ConcurrentHashMap则更胜一筹了。在1.8版本以前,ConcurrentHashMap采用分段锁的概念,使锁更加细化,但是1.8已经改变了这种思路,而是利用CAS+Synchronized来保证并发更新的安全,当然底层采用数组+链表+红黑树的存储结构。重要变量//...

2019-12-21 16:06:34 27

原创 java并发之CAS

CASCAS:Compare and Swap, 翻译成比较并交换。java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。CAS应用CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。原理CAS通过调用JNI的代码实现的。JNI:Java Native ...

2019-12-21 16:04:23 31

原创 HashMap源码解读

本文基于Java11我们先来看hashMap定义的内部变量

2019-12-21 15:59:05 17

原创 红黑树

一、简介红黑树二叉数的一种,满足二叉树的所有性质,并具有自己的特征红黑树的特征每个结点要么是红的要么是黑的。根结点是黑的。每个叶结点(叶结点即指树尾端NIL指针或NULL结点)都是黑的。如果一个结点是红的,那么它的两个儿子都是黑的。对于任意结点而言,其到叶结点树尾端NIL指针的每条路径都包含相同数目的黑结点正是红黑树的这5条性质,使一棵n个结点的红黑树始终保持了l...

2019-12-21 15:56:21 102

原创 Ubuntu使用apt-get下载速度慢的解决方法

https://blog.csdn.net/qq_24326765/article/details/81916222

2019-11-20 19:38:37 398

原创 设计模式之命令模式

是什么命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。关键角色1、received 真正的命令执行对象2、Command3、invoker 使用命令对象的入口应用场景:在某些场合,比如要对行为进行"记录、撤销/重做、事务...

2019-11-11 22:07:01 29

原创 synchronized 关键字原理

1.是什么synchronized是Java中的关键字,是一种同步锁2.用法它修饰的对象有以下几种:修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的...

2019-11-11 20:54:46 23

原创 java线程池详解

池化思想在我们的日常开并不少见,有数据库连接池、线程池、对象池、常量池等等。下面我们主要针对线程池来一步一步揭开线程池的面纱。

2019-11-04 20:33:02 25

原创 全面理解JMM模型

一、什么是JMM模型Java内存模型(即Java Memory Model,简称JMM)本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。由于JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个工作内存(有些地方称为栈空间),用于存储线程私有的数据,而Java内存模型中规定所有变...

2019-11-04 20:31:43 1763 1

原创 设计模式之单例设计模式

定义单例模式(Singleton Pattern)属于创建型模式,它提供了一种创建对象的最佳方式。它只涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。同时提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。接下来我们来看一下每一种实现方式以及其优缺点:一、饿汉模式public class Singleton { private...

2019-11-03 21:41:37 24

原创 Java NIO(二)Channel

1. channel是什么Java NIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。2.channel 的主要实现类FileChannel从文件中,读写数据。DatagramChannelDatagramChanne...

2019-10-27 17:04:32 41

原创 java NIO详解(一)

1. java NIO 是什么Java NIO( New IO 或者 Non Blocking IO ) ,从 Java 1.4 版本开始引入的非阻塞 IO ,用于替换标准( 有些文章也称为传统,或者 Blocking IO 。下文统称为 BIO ) Java IO API 的 IO API 。1.1 核心组件selectBufferChanel后续我们慢慢展开进行讲解1.2...

2019-10-27 16:41:11 31

原创 Java13新特性

JDk13⾥⾯新增的多⾏⽂本块多⾏⽂本块旧:在java代码⾥⾯编写多⾏源码带有特殊字符则需要转义,如HTML,sql等新:原⽣字符串⽂字(raw string literals),它可以跨多⾏源码⽽不对转义字符进⾏转义旧:String html = "<html>\n" + " <body>\n" + " <p>Hello, world<...

2019-10-25 22:43:29 133

原创 Java10、Java11新特性

1. JDK10之局部变量类型推断var讲解Java是⼀种强类型, 许多流⾏的编程语⾔都已经⽀持局部变量类型推断,如js,Python,C++等JDK10 可以使⽤var作为局部变量类型推断标识符Local-Variable Type Inference(局部变量类型推断),顾名思义只能⽤做为局部变量注意仅适⽤于局部变量,如 增强for循环的索引,传统for循环局部变量不能使⽤于⽅法形...

2019-10-25 22:36:31 194

原创 java9新特性

jdk9新增测试⼯具jshell什么是jshell从java9开始,jdk引⼊了交互式 REPL(Read-Eval-Print-Loop,读取-求值-输出-循环)官⽅⽂档https://docs.oracle.com/en/java/javase/12/jshell/introduction-jshell.html#GUID-630F27C8-1195-4989-9F6B-2C5...

2019-10-25 21:45:21 42

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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