自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(378)
  • 收藏
  • 关注

转载 程序算法编程学习网站

程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦国外1https://www.topcoder.com/TopCoder是最早的在线编程竞技平台之一,该网站提供了一系列的算法挑战,在这里,你可以:使用他们的代码编辑器直接进行在线作答。参加该网站举办的SRMs挑战项目。该比赛将会在每月定期举办,作为参赛者,你需要以最快的速度,与众多其他的编程挑战者进行比拼。...

2020-03-24 15:30:13 456

原创 idea 上的maven出现 Connection to http://repo.maven.apache.org refused 警告

WARNING] Could not transfer metadata org.apache.maven.plugins:maven-archetype-plugin/maven-metadata.xml from/to central (http://repo.maven.apache.org/maven2): Connection to http://repo.maven.apache.or...

2020-03-17 16:52:58 711

转载 ubuntu中的vi编辑上下左右移动调整

执行一下命令,即可纠正,使得ubuntu下vi编辑能够正常执行命令 sudo apt-get remove vim-common执行命令 sudo apt-get install vim

2020-03-14 19:12:23 1129

转载 vmware14Pro中ubuntu系统界面太小的问题解决

1.操作环境vmware14Proubuntu 16.04LTS2.问题描述在使用vmware14Pro安装ubuntu 16.04LTS系统后,屏幕始终比较小,无法根据vmware的变化而变化。3.问题原因问题在于未设置vmware的菜单选项或者未安装vmware tools。4.问题解决4.1重启ubuntu第一次ubuntu系统安装完成,菜单中“重新安装V...

2020-03-14 19:03:35 326

转载 Xshell连接不上Ubuntu解决方式

由于xshell远程连接ubuntu是通过ssh协议的,所以,需要给ubuntu安装ssh服务器。1)ubuntu安装ssh服务器sudo apt-get install openssh-server2)出现问题时,重启ssh服务即可sudo service ssh restart3)保证 xshell 所在主机( 这里为win7 )和 ubuntu...

2020-03-14 18:33:44 4891

原创 互联网高并发解决方案04-CDN内容分发

Web前端优化使用网站动静分离架构 减少Http请求的传输,CSS/JS合并传输,压缩JS、CSS技术 使用浏览器缓存静态资源,减少服务器端压力 使用CDN内容分发,减少宽带传输,获取用户Ip,分配到最近的服务器访问实战CDN内容分发DNS域名解析过程DNS即Domain Name System,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络可以识别的ip地...

2020-01-05 11:43:42 319

原创 互联网高并发解决方案03-高并发服务限流特技-纯手写打造RateLimiter注解框架

封装RateLimiter自定义注解封装RateLimiter.实例: @RequestMapping("/myOrder") @ExtRateLimiter(value = 10.0, timeOut = 500) public String myOrder() throws InterruptedException { Sys...

2020-01-05 11:35:53 158

原创 互联网高并发解决方案02-高并发服务限流特技

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

2020-01-05 11:32:26 231

原创 互联网高并发解决方案01-基于Hystrix实现服务隔离与降级

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

2020-01-05 11:21:23 145

原创 springMVC的运行流程

⑴ 用户发送请求至前端控制器DispatcherServlet⑵ DispatcherServlet收到请求调用HandlerMapping处理器映射器。⑶ 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。⑷ DispatcherServlet通过HandlerAdapter处理器适...

2019-12-21 17:59:19 96

原创 手写SpringIOC 实现原理-注解版本-手写@Service和@Resource

手写SpringIOC注解版本实体类: public class User { private Integer id; private String userName; public Integer getId() { return i...

2019-12-21 17:56:08 547

原创 手写SpringIOC 实现原理

什么是SpringIOCspring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring来管理这些,实现解耦SpringIOC原理使用反射机制+XML技术手写Spring专题 XML方式注入bean /** * 手写Spring专题 XML方式注入bean * * */...

2019-12-21 17:37:07 236

原创 手写Spring事务框架-注解版本

自定义事务注解 注解类 // 事务注解 设置传播行为 @Target({ ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) public @interface ExtTransaction { } 事务工具类 //编程事务(需...

2019-12-21 16:01:46 118

原创 手写Spring事务框架-基于aop 技术

概述所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理。管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。案例使用编程事务实现手动事务使用编程事务实现,手动事务 begin、commit、rollback...

2019-12-21 14:37:29 129

原创 LINUX下查询JAVA进程以及杀掉其进程

1.使用命令:ps -ef|grep java查询到到自己想要kill掉的进程id2.使用命令:kill -9 id(这里的id为你上一步查找到的id)

2019-08-23 14:39:15 768

转载 String源码中的“avoid getfield opcode”是什么意思

String源码中的“avoid getfield opcode”是什么意思avoid getfield opcode其实是一段注释,看代码时不理解,就查了查在这记录一下。下面是一段String源码示例:public String trim() { int len = value.length; int st = 0; char[] val = value; ...

2019-08-22 17:18:49 119

原创 并发-线程池原理分析

并发包(计数器)CountDownLatchCountDownLatch 类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务...

2019-08-11 22:16:54 144

原创 并发-多线程快速入门

线程与进程区别每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如...

2019-08-10 23:23:36 108

原创 并发-并发编程之多线程线程安全

什么是线程安全?为什么有线程安全问题?当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。案例:需求现在有100张火车票,有两个窗口同时抢火车票,请使用多线程模拟抢票效果。代码: public class ThreadTrain implements Runnable {...

2019-08-10 23:21:43 117

原创 并发-多线程之间实现通讯

多线程之间实现通讯多线程之间如何实现通讯什么是多线程之间通讯? 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。 画图演示多线程之间通讯需求 需求:第一个线程写入(input)用户,另一个线程取读取(out)用户.实现读一个,写一个操作。代码实现基本实现共享资源源实体类 class Res { ...

2019-08-10 23:18:30 230

原创 进阶-第109_elasticsearch生产集群中的索引管理(三)

1、indice statindice stat对index上发生的不同类型的操作都提供了统计。这个api提供了index level的统计信息,不过大多数统计信息也可以从node level获取。curl -XGET 'http://elasticsearch02:9200/twitter/_stats?pretty'这里包括了doc数量,index size...

2019-03-27 23:20:58 260

原创 进阶-第108_elasticsearch生产集群中的索引管理(二)

1、mapping管理put mapping命令可以让我们给一个已有的索引添加一个新的type,或者修改一个type,比如给某个type加一些字段下面这个命令是在创建索引的时候,直接跟着创建一个type curl -XPUT 'http://elasticsearch02:9200/twitter?pretty' -d ' { "mappings"...

2019-03-27 23:01:54 112

原创 进阶-第107_elasticsearch生产集群中的索引管理(一)

1、创建索引(1)创建索引的语法用settings给这个索引在创建时可以添加一些设置,还有可以初始化一些type的mapping curl -XPUT 'http://elasticsearch02:9200/twitter?pretty' -d ' { "settings" : {//放置索引的一些设置 "ind...

2019-03-27 23:01:03 317

原创 进阶-第106_es生产集群版本升级之基于索引重建策略进行1.x到5.x的跨多个大版本的升级

es只能使用上一个大版本创建的索引。举例来说,es 5.x可以使用es 2.x中的索引,但是不能使用es 1.x中的索引。es 5.x如果使用过于陈旧的索引去启动,就会启动失败如果我们在运行es 2.x集群,但是索引是从2.x之前的版本创建的,那么在升级到es 5.x之前,我们需要删除旧索引,或者reindex这些索引,用reindex in place的策略。...

2019-03-26 08:12:10 203

原创 进阶-第105_es生产集群版本升级之基于集群整体重启策略进行2.x到5.x的大版本升级

滚动升级策略,集群,集群里面有多个节点,一个节点一个节点的重启和升级如果是大版本之间的升级,集群重启策略,要先将整个集群全部停掉,如果采取滚动升级策略的话,可能导致说,一个集群内,有些节点是es 5.5,有些节点是es 2.4.3,这样的话是可能会有问题的升级的过程,其实是跟之前的一模一样的es在进行重大版本升级的时候,一般都需要采取full cluster r...

2019-03-24 11:28:17 238

原创 进阶-第104_es生产集群版本升级之基于节点依次重启策略进行5.x的各个小版本之间的升级

生产集群的时候,版本升级,是不可避免的,es主要的版本,es 2.x,es 5.x,es 1.x如果你去运维一个es的集群,你要做各个版本之间的升级,你该怎么做。。。三种策略:1、面向的场景,就是同一个大版本之间的各个小版本的升级,比如说,我们这一节课,es 5.3升级到es 5.52、相邻的两个大版本之间的升级,比如es 2.x升级到es 5.x,es 2...

2019-03-24 11:26:13 281

原创 进阶-第103_es生产集群备份恢复之基于snapshot+hdfs+restore进行数据恢复

1、基于snapshot的数据恢复正经备份,一般来说,是在一个shell脚本里,你用crontab做一个定时,比如每天凌晨1点,就将所有的数据做一次增量备份,当然,如果你的数据量较大,每小时做一次也ok。shell脚本里,就用curl命令,自动发送一个snapshot全量数据的请求。那么这样的话,就会自动不断的去做增量备份。20170721,做了一次snapshot,sn...

2019-03-24 11:23:23 336

原创 进阶-第102_es生产集群备份恢复之基于snapshot+hdfs进行数据备份

1、es集群数据备份任何一个存储数据的软件,都需要定期的备份我们的数据。es replica提供了运行时的高可用保障机制,可以容忍少数节点的故障和部分数据的丢失,但是整体上却不会丢失任何数据,而且不会影响集群运行。但是replica没法进行灾难性的数据保护,比如说机房彻底停电,所有机器全部当即,等等情况。对于这种灾难性的故障,我们就需要对集群中的数据进行备份了,集群中数据的完整备份...

2019-03-24 11:21:58 541

原创 进阶-第101_es生产集群备份恢复之部署hadoop hdfs分布式文件存储系统

hadoop当前大数据领域的事实上的一个标准hadoop hdfs,提供的是分布式的文件存储,数据存储hadoop yarn,提供的是分布式的资源调度hadoop mapreduce,提供的是分布式的计算引擎,跑在yarn上面的,由yarn去做资源调度hadoop hive,提供的是分布式的数据仓库引擎,基于mapreducehadoop hbase,提供的是分布式...

2019-03-24 11:21:08 113

原创 进阶-第100_es生产集群备份恢复之部署hadoop hdfs分布式文件存储系统

hadoop当前大数据领域的事实上的一个标准hadoop hdfs,提供的是分布式的文件存储,数据存储hadoop yarn,提供的是分布式的资源调度hadoop mapreduce,提供的是分布式的计算引擎,跑在yarn上面的,由yarn去做资源调度hadoop hive,提供的是分布式的数据仓库引擎,基于mapreducehadoop hbase,提供的是分布式...

2019-03-24 11:18:12 152

原创 进阶-第99_es生产集群部署之各个节点以daemon模式运行以及优雅关闭

1、以daemon模式运行在生产环境中,会使用daemon进程的方式来启动es,而不是直接采用前台进程的方式来启动es,具体命令如下./bin/elasticsearch -d -p pid上面命令中的-d option用来指定es以daemon进程方式启动,并且-p option指定将进程id记录在指定文件中es启动后,日志信息可以在ES_HOME/...

2019-03-24 11:16:10 510

原创 进阶-第98_es生产集群部署之production mode下启动时的bootstrap check

1、bootstrap check经常会碰到一些es的用户,遇到一些奇怪的问题,主要是因为他们没有配置一些重要的设置。在es以前的老版本中,对这些设置错误的配置,会在日志里记录一些warning告警。但是有时候用户会忽略这些日志中的告警信息。为了确保说这些设置的错误配置告警信息可以引起用户的注意,es的新版本中引入了bootstrap check,也就是启动时检查。这些启...

2019-03-24 11:11:30 287

原创 进阶-第97_es生产集群部署之重要的操作系统设置(swapping、virutal memory等)

1、系统的重要配置理想情况下,es应该单独在一个服务器上运行,能够使用服务器上的所有资源。为了达到上述目标,我们需要配置操作系统,来允许用户运行es并且获取比默认情况下更多的资源。在生产环境中下面的一些设置必须配置一下:(1)禁止swapping(2)确保拥有足够的虚拟内存(3)确保拥有足够的线程数量开发模式 vs 生产模式默认情况下...

2019-03-24 09:19:00 774

原创 进阶-第96_es生产集群部署之jvm和服务器内存分配的最佳实践以及原理分析

除了之前讲解的一些配置,根据你的集群环境特殊的配置,我们这一讲来讲解最重要的内存的分配,提出一些问题,生产环境部署es,不可避免要回答一个问题,比如我的机器上有64G的内存,或者32G的内存,那么一般来说我应该分配多少个G的内存给es的jvm heap1、jvm heap分配es默认会给jvm heap分配2个G的大小,对于几乎所有的生产环境来说,这个内存都太小了。如果用...

2019-03-24 08:59:24 829

原创 进阶-第95_es生产集群部署之绝对不能随意调节jvm和thread pool的原因

es中有很多的配置都让大家忍不住去调优,因为也许大家都太过于迷恋性能优化了,都认为优化一些配置可以大幅度提升性能,就感觉性能调优像个魔法一样,是个万能的东西。但是其实99.99%的情况下,对于es来说,大部分的参数都保留为默认的就可以了。因为这些参数经常被滥用和错误的调节,继而导致严重的稳定性问题以及性能的急剧下降。1、jvm gcjvm使用垃圾回收器来释放掉不用的内存,...

2019-03-23 18:58:57 834

原创 进阶-第94_es生产集群部署之针对集群重启时的shard恢复耗时过长问题定制的重要参数

shard recovery配置以及集群重启时的无意义shard重分配问题在集群重启的时候,有一些配置会影响shard恢复的过程。首先,我们需要理解默认配置下,shard恢复过程会发生什么事情。如果我们有10个node,每个node都有一个shard,可能是primary shard或者replica shard,你有一个index,有5个primary shard,每个primar...

2019-03-23 18:31:34 424

转载 进阶-第93_es生产集群部署之针对生产集群的脑裂问题专门定制的重要参数

最少master候选节点以及脑裂问题discovery.zen.minimum_master_nodes参数对于集群的可靠性来说,是非常重要的。这个设置可以预防脑裂问题,也就是一个集群中存在两个master。如果因为网络的故障,导致一个集群被划分成了两片,每片都有多个node,以及一个master,那么集群中就出现了两个master了。但是因为master是集群中非常...

2019-03-23 17:44:12 162

原创 进阶-第92_es生产集群部署之必须根据自己的集群设置的一些重要参数

1、es的默认参数es的默认参数是非常好的,适合绝大多数的情况,尤其是一些性能相关的配置。因此刚开始部署一个生产环境下的es集群时,几乎所有的配置参数都可以用默认的设置。有很多的生产环境场景下,都是因为es集群管理人员自己去调整es的某些配置,结果导致集群出现了严重的故障,那些es集群管理员甚至还以为做出那些调节可以将es性能提升一百倍以上。比如mysql或者oracle...

2019-03-23 17:24:13 228

原创 进阶-第91_es生产集群部署之部署3个ES 5.5节点以及zen discovery集群发现机制\

生产环境集群部署一点一点讲解的,生产环境去部署的时候,涉及到很多的配置,还有牵扯到了很多的es的知识点我们先下载es 5.5(7月6号为止)的压缩包,部署到3个节点上面去,但是不启动,因为我们接下来要花费很多讲的时间来讲解各种生产环境的参数的配置es模拟生产环境的3节点的集群给启动起来,停止es进程,curl,kibana1、在三个节点上都下载es...

2019-03-23 16:53:50 283

原创 进阶-第90_es生产集群部署之从零开始搭建一套4个节点的2核4G虚拟机集群

这块我们跟大家说一下,一般来说,你即使要围绕es搭建一个集群的话,也建议至少4~5个节点,因为其实不光是es,后面可能还有kibana,logstash,elk生态栈的其他的东西要部署,包括这个高手进阶篇的课程,部署一个4个节点的虚拟机集群,每个虚拟机是2核4G,共有16个。我的笔记本是24G,四核的,宿主机留8G内存用2核4G,虚拟cpu core,4台,基本可以去模拟...

2019-03-23 13:45:34 539

空空如也

空空如也

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

TA关注的人

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