自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(129)
  • 资源 (3)
  • 收藏
  • 关注

原创 算法基础--排序

ps:以前没有做过ACM,在算法这一块吃了很大的亏,尤其是在今年的春招中所以痛定思痛,好好恶补一下算法的知识。今天写算法的基础,排序算法。冒泡排序:每次把最大的数移到最后一个public static void bubbleSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for ...

2019-05-04 16:57:04 155

转载 算法设计---ID生成系统

设计一个针对全球的、访问量极大的id生成系统。必须保证用户每次从该系统得到的id是唯一的,而且在概率上毫无碰撞可能。设计思路:系统存在一个全局的ID管理器,为了防止宕机做成主从备份。 为了抗住访问压力,设置多级ID生成器 每个ID生成器向上级发送请求,获取start开始ranger范围的ID,父节点记录好每个ID范围对应的机器 当访问量过大时父节点加大ranger范围,化解访问压...

2019-05-02 11:05:20 350

转载 大数据基础-Storm基础(一)

1、流式计算是什么 流式计算:数据实时产生、数据实时传输、数据实时计算、实时展示 代表技术:Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、持久化存储(mysql)。 一句话总结:将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果2、离线计算与实时计...

2019-04-16 17:04:20 190

转载 Docker学习(一)--CentOS Docker 安装

前提条件目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。Docker 运行在CentOS-6.5或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。使用 yum 安装(CentOS 7下)Docker 要求 CentOS...

2019-04-06 20:58:41 102

转载 分布式协调工具(三)--ookeeper实现分布式配置中心

什么是分布式配置中心项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改配置,如果配置出现错误,需要重新打包发布,时间成本较高,因此需要做统一的分布式注册中心,能做到自动更新配置文件信息,解决以上问题。常用分布式配置中心框架首选为disconf,可支持KV存储以及配置文件形式存储,使用和开发更为简便。并且本身也是基于zookpeer的分布式配置中心开发,方...

2019-04-04 18:47:03 197

转载 分布式协调工具(二)--Zookeepers实现分布式锁

什么是多线程多线程为了能够提高应用程序的运行效率,在一个进程中有多条不同的执行路径,同时并行执行,互不影响。什么是线程安全当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。解决办法使用同步代码块或者Lock锁机制,保证在多个线程共享同一个变量只能有一个线程进行操作什么是分布式锁分...

2019-04-04 18:40:29 247

转载 分布式协调工具--ZooKeeper实现动态负载均衡

什么是ZookeeperZookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以单机模式安装运行,不...

2019-04-04 18:32:12 386

转载 互联网API开放平台安全设计(五)---APIGateway网关

什么是网关随着互联网的快速发展,当前以步入移动互联、物联网时代。用户访问系统入口也变得多种方式,由原来单一的PC客户端,变化到PC客户端、各种浏览器、手机移动端及智能终端等。同时系统之间大部分都不是单独运行,经常会涉及与其他系统对接、共享数据的需求。所以系统需要升级框架满足日新月异需求变化,支持业务发展,并将框架升级为微服务架构。“API网关”核心组件是架构用于满足此些需求。很多互联网平台...

2019-04-04 15:19:25 2389

转载 互联网API开放平台安全设计(四)--信息加密与密钥管理

单向散列加密散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。单向散列函数一般用于产生消息摘要,密钥加密...

2019-04-04 12:44:11 951

转载 互联网API开放平台安全设计(三)--API安全接口安全设计

互联网开放平台设计1.需求:现在A公司与B公司进行合作,B公司需要调用A公司开放的外网接口获取数据,如何保证外网开放接口的安全性。2.常用解决办法:2.1 使用加签名方式,防止篡改数据2.2 使用Https加密传输2.3 搭建OAuth2.0认证授权2.4 使用令牌方式2.5 搭建网关实现黑名单和白名单使用令牌方式搭建搭建API开放平台原理:为每个合作机构创...

2019-04-04 12:17:02 1375

转载 互联网API开放平台安全设计(二)--API接口幂等框架

API接口幂等性设计方案MVCC方案 多版本并发控制,该策略主要使用 update with condition(更新带条件来防止)来保证多次外部请求调用对系统的影响是一致的。在系统设计的过程中,合理的使用乐观锁,通过 version 或者 updateTime(timestamp)等其他条件,来做乐观锁的判断条件,这样保证更新操作即使在并发的情况下,也不会有太大的问题。例如 sel...

2019-04-04 11:46:12 795

转载 高并发与高可用实战(七)高并发服务限流特技

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场景的并发/请求量,即限...

2019-04-02 16:33:07 296

转载 高并发与高可用实战(六)高并发服务降级特技

背景在今天,基于SOA的架构已经大行其道。伴随着架构的SOA化,相关联的服务熔断、降级、限流等思想,也在各种技术讲座中频繁出现。本文将结合Netflix开源的Hystrix框架,对这些思想做一个梳理。伴随着业务复杂性的提高,系统的不断拆分,一个面向用户端的API,其内部的RPC调用层层嵌套,调用链条可能会非常长。这会造成以下几个问题:API接口可用性降低引用Hystrix官方的一个...

2019-04-02 16:15:20 235

转载 数据挖掘算法-决策树

一、从LR到决策树LR模型是利用线性回归的预测值,通过sigmoid映射为概率,来对数据做预测,有非常友好的数据预处理特性,工业界应用很丰富。决策树的处理方式:二、分类树决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。1) 开始:构建根节点,将所有...

2019-03-26 18:59:02 2198

转载 数据挖掘建模-聚类分析

1.聚类分析概述聚类分析是一种定量方法,从数据分析的角度看,它是对多个样本进行定量分析的多元统计分析方法,可以分为两种:对样本进行分类称为Q型聚类分析对指标进行分类称为R型聚类分析从数据挖掘的角度看,又可以大致分为四种:划分聚类层次聚类基于密度的聚类基于网格的聚类本篇文章将从数据挖掘的角度来揽述,但也会借鉴数学建模的部分思想。无论是从那个角度看,其基本原则都是:希望族(...

2019-03-23 12:39:44 869

原创 关于大数据的一点感想

前一段时间学习了传智播客大数据课程,觉得掌握的不太牢靠以后还要再重复的看看。我想简单的总结一下课程吧!!首先大数据课程要有JAVAEE的基础和LINUX基本功。整个课程有以下几点:linux基础篇:包括liunx安装软件,网络设置、vim编辑器、免密登陆、shell基础。 java高级基础:反射,高并发,RPC,JVM,netty zookeeper:存储和监听特性。 Hadoop基...

2019-03-23 10:01:00 1978

转载 高并发与高可用实战(五)Nginx+Tomcat动静分离

动态页面与静态页面区别静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源。动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变。什么是动静分离动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路动静分离简单的概括是:动...

2019-03-21 20:53:39 273

转载 高并发与高可用实战(四)lvs+keepalived+nginx

lvs+keepalived+nginx实现高性能负载均衡集群LVS作用LVS是一个开源的软件,可以实现传输层四层负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。Keepalived作用LV...

2019-03-21 20:49:01 411

转载 高并发与高可用实战(三)Nginx高级

Http动态负载均衡什么是动态负载均衡传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件,因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upstream可配置化、动态化,无需人工重新加载nginx.conf。这类似分布式的配置中心动态负载均衡实现方案Consul+Consul-template每次发现配置更改...

2019-03-21 20:45:05 157

转载 高并发与高可用实战(二)Nginx实战

环境准备CentOS7 7.0 64位 以上+一台外网服务器+一个域名+CDN内容分发电脑配置 16g以上内存CentOS7 关闭防火墙 //临时关闭 systemctl stop firewalld //禁止开机启动 systemctl disable firewalld Removed symlink /etc/systemd/system...

2019-03-21 20:39:46 148

原创 大数据基础-Hadoop RPC框架

什么是RPC RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。...

2019-03-14 12:00:49 209

转载 zookeeper分布式锁

什么是ZookeeperZookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以单机模式安装运行,不...

2019-03-13 20:49:05 130

转载 缓存

为什么要使用缓存缓存的分类客户端缓存页面缓存浏览器缓存App客户端缓存网络缓存代理缓存CDN缓存服务器缓存数据库缓存平台缓存级缓存缓存最终的目的是为减轻服务端压力,减少网络传输请求基于Map集合实现本地缓存定义Map缓存工具类 @Component public class MapEhcaC...

2019-03-13 20:42:25 128

转载 高并发与高可用实战(一)基础

DNS域名解析整个过程大体描述如下,其中前两个步骤是在本机完成的,后8个步骤涉及到真正的域名解析服务器:1、浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。这个缓存时间太长和太短都不太好,如果时间太...

2019-03-13 20:33:42 143

转载 互联网API开放平台安全设计(一)--Web安全漏洞

什么是XSS攻击手段XSS攻击使用Javascript脚本注入进行攻击例如在提交表单后,展示到另一个页面,可能会受到XSS脚本注入,读取本地cookie远程发送给黑客服务器端。<script>alert('sss')</script><script>window.location.href='http://www.itmayiedu.com';...

2019-03-13 20:22:04 912

翻译 two-phase termination模式-- 先收拾房间再睡觉

定义:分两段终止。她是一种先执行完终止处理再终止线程的模式。引例:类的一览表 名字 说明 countupthread 表示技术的线程的类 main 测试行为的类 public class CountupThread extends Thread { // 计数器的值 private long counter = 0; //...

2019-03-10 14:15:01 87

翻译 Future模式 --先给你提货带

定义:获取Future角色的线程会在稍后使用Future角色来获得运行的结果。引例:类的一览表 名字 说明 main 向host发出请求并获取数据 data 表示访问数据方法的接口。 host 向请求返回futuredata实例的类 futuredata 表示提货带类 realdata 表示真实数据 public clas...

2019-03-10 14:08:23 132

翻译 Worker Thread模式--工作没来就一直等,工作来了就干活

定义:Worker Thread模式也叫背景模式或者线程池模式,工作线程逐个取回并处理,在所有工作完全完成后,线程等待新的工作到来。引例:类的一览表 名字 说明 main 测试行为类 clientthread 表示发出工作的类 request 表示工作请求的类 channel 接受工作并将工作请求交给工人线程 workerthread...

2019-03-10 13:59:13 375

翻译 Thread-Per-Message模式 这项工作交给你

定义:在Thread-Per-Message模式中,消息的委托者和执行者是不同线程的,消息的委托者把消息的交给执行者去执行。引例类的一览表 名字 说明 mian 向host发送 字符显示请求的类 host 针对请求创建的类 helper 提供字符显示功能的被动类 public class Main { public static vo...

2019-03-10 13:47:28 102

翻译 Read-Write Lock模式 --大家一起读可以,读的时候不要写

定义:线程执行读取操作时,实例的状态不会发生改变,所以多个线程可以同时读取。线程执行写取操作时,实例的状态可能会发生改变,所以多个线程不可以同时写入。引例类的一览表 名字 说明 main 测试行为的类 data 可以读写的类 writerthread 写入线程 readthread 读取线程 readwritelock 提供读写...

2019-03-10 13:32:43 281

转载 大数据基础-HBASE

hbase简介 什么是hbaseHBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Goo...

2019-03-09 18:21:42 93

转载 大数据基础-HIVE辅助系统

前言在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态体系中都有便捷的开源框架,如图所示:1. 日志采集框架Flume1.1 Flume介绍1.1.1 概述Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。 ...

2019-03-09 17:57:11 932

转载 大数据基础-HIVE

Hive基本概念Hive简介 什么是HiveHive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。为什么使用Hive直接使用hadoop所面临的问题人员学习成本太高项目周期要求太短MapReduce实现复杂查询逻辑开发难度太大为什么要使用Hive操作接口采用类SQL语法,提供快速开发的能力。...

2019-03-09 16:48:37 203

转载 大数据基础-Hadoop MP开发

1. MAPREDUCE原理篇(1)Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架;Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上;1.1 为什么要MAPREDUCE(1)海量数据在单机上处理因为硬件资源限制,无法胜任(2)而一旦将...

2019-03-09 16:32:53 367

转载 大数据基础-Hadoop HDFS开发

******HDFS应用开发篇******HDFS的java操作hdfs在生产应用中主要是客户端的开发,其核心步骤是从hdfs提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件搭建开发环境1、引入依赖&lt;dependency&gt; &lt;groupId&gt;org.apache.hadoop&lt;/gro...

2019-03-09 16:07:02 119

转载 大数据基础-Hadoop原理

hdfs的工作机制(工作机制的学习主要是为加深对分布式系统的理解,以及增强遇到各种问题时的分析解决能力,形成一定的集群运维能力)注:很多不是真正理解hadoop技术体系的人会常常觉得HDFS可用于网盘类应用,但实际并非如此。要想将技术准确用在恰当的地方,必须对技术有深刻的理解概述HDFS集群分为两大角色:NameNode、DataNode NameNode负责管理整个文件...

2019-03-09 15:49:40 1214

转载 大数据基础-Hadoop基础

什么是HADOOPHADOOP是apache旗下的一套开源软件平台 HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 HADOOP的核心组件有 HDFS(分布式文件系统) YARN(运算资源调度系统) MAPREDUCE(分布式运算编程框架) 广义上来说,HADOOP通常是指一个更广泛的概念——HADOOP生态圈分...

2019-03-09 15:41:52 359

原创 2019届华为软件精英挑战赛赛题为“智能世界•纵横”!思路

1. 背景信息l 道路交通是城市的核心要素之一。l 随着社会经济的发展,中国城市的车辆保有量已经越来越多,大都市慢慢变成了“堵”市。如何在出行时避免拥堵,是每一个人的目标。l 日常生活中,很多拥堵是由于车辆行驶路线规划失误,大批车辆集中选择主干道行驶导致通行效率下降。l 如果车辆都由调度中心统一规划调度路线,拥堵问题将得到大大缓解甚至彻底解决。l 实际上这一技术已经在工业领域如...

2019-03-09 00:00:10 3539 2

转载 深入理解JVM-类加载器

类加载的机制的层次结构每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的”.class”文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程称为类加载,这里我们需要了解一下类加载...

2019-03-02 16:27:07 97

转载 深入理解JVM-字节码技术

字节码技术字节码技术应用场景AOP技术、Lombok去除重复代码插件、动态修改class文件等字节技术优势 Java字节码增强指的是在Java字节码生成之后,对其进行修改,增强其功能,这种方式相当于对应用程序的二进制文件进行修改。Java字节码增强主要是为了减少冗余代码,提高性能等。实现字节码增强的主要步骤为:1、修改字节码 在内存中获取到原来...

2019-03-02 16:20:59 288

java设计模式入门资料适合新手

java设计模式入门资料适合新手,市面上设计模式的资料有好多,但是入门有一定的门槛。

2019-02-28

jvm技术精华-架构师必备

jvm技术精华-架构师必备,经典的技术,涉及到了JVM以及java底层的知识

2019-02-28

传智播客ssh框架

2016传智播客ssh框架文档

2018-09-10

空空如也

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

TA关注的人

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