自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HelloWorld搬运工

HelloWorld搬运工

  • 博客(526)
  • 资源 (9)
  • 收藏
  • 关注

原创 学会这 18 个工具,你一定能真正理解如何监控网络带宽!

本文介绍了一些可以用来监控网络使用情况的Linux命令行工具。这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度。入站流量和出站流量分开来显示。一些命令可以显示单个进程所使用的带宽。这样一来,用户很容易发现过度使用网络带宽的某个进程。这些工具使用不同的机制来制作流量报告。nload等一些工具可以读取"proc/net/dev"文件,以获得流量统计信息;而一些工具使用pc...

2019-10-08 13:56:06 444

原创 数据库缓存最终一致性的四种方案

背景缓存是软件开发中一个非常有用的概念,数据库缓存更是在项目中必然会遇到的场景。而缓存一致性的保证,更是在面试中被反复问到,这里进行一下总结,针对不同的要求,选择恰到好处的一致性方案。缓存是什么存储的速度是有区别的。缓存就是把低速存储的结果,临时保存在高速存储的技术。如图所示,金字塔更上面的存储,可以作为下面存储的缓存。我们本次的讨论,主要针对数据库缓存场景,将以redis...

2019-10-08 13:52:23 3803 1

原创 微服务分布式锁解析

2、不具备可重入的特性,因为同一个线程在释放锁之前,行数据一直存在,无法再次成功插入数据,所以,需要在表中新增一列,用于记录当前获取到锁的机器和线程信息,在再次获取锁的时候,先查询表中机器和线程信息是否和当前机器和线程相同,若相同则直接获取锁;当然,在具体使用中,还需要考虑很多因素,比如超时时间的选取,获取锁时间的选取对并发量都有很大的影响,上述实现的分布式锁也只是一种简单的实现,主要是一种思想,以上包括文中的代码可能并不适用于正式的生产环境,只做入门参考!若key存在,则什么都不做,返回0。

2019-10-07 15:54:17 1173

原创 Core Java 并发:理解并发概念

1. 简介从诞生开始,Java 就支持线程、锁等关键的并发概念。这篇文章旨在为使用了多线程的 Java 开发者理解 Core Java 中的并发概念以及使用方法。2. 概念2.1 竞争条件多个线程对共享资源执行一系列操作,根据每个线程的操作顺序可能存在几种结果,这时出现竞争条件。下面的代码不是线程安全的,而且可以不止一次地初始化 value,因为 check-then-act(...

2019-07-22 20:53:16 310

原创 Spring中用了哪些设计模式

一:简单工厂模式又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。如下配置,就是在 He...

2019-07-18 07:37:23 351

原创 统治世界的十大排序算法!

0 算法概述0.1 算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.2 算法复杂度0.3 相关概念稳定:如果a原...

2019-07-11 07:52:53 263

原创 19个有趣的Linux 命令,最后一个?... 打死我都不敢尝试!

1. sl 命令你会看到一辆火车从屏幕右边开往左边……安装$sudoapt-getinstallsl运行$sl命令有 -a l F e 几个选项,-aAnaccidentseemstohappen.You'llfeelpityforpeoplewhocryforhelp.-lshowslittleone.-FItfli...

2019-07-07 18:30:35 697

原创 短小强大的8个命令,分分钟帮你提高工作效率!

作为一名合格的Linux系统管理员,每天接触使用最多的莫过于Linux 命令了。很多人喜欢Linux,因为Linux 命令短小但却功能强大。在工作中经常使用的命令有很多,对于那些你未使用过的呢?今天小编就跟大家分享自己工作中总结的8个超级好用,但鲜为人用的Linux命令,希望对大家有帮助。1. fc命令用途:编辑最近的一条命令并自动执行该命令适用场景:执行了一条很长的命令,然而命令...

2019-07-07 18:14:31 280

原创 这54个docker命令!你必须懂!

Docker是一个不断发展的系统,开发人员积极改进使用和性能。所以命令总是在变化。docker一些老的命令经常被弃用,并被新的或更有效的命令取代。您可以使用帮助选项检查Docker安装上的最新可用命令:$ docker --help要使用特定命令的选项,可以使用该命令的help选项。例如,要使用docker run命令选项,可以使用以下命令:$ docker run --help...

2019-07-03 21:14:30 1063

原创 19条效率至少提高3倍的MySQL技巧

1、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据: type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。 key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式。 key_len列,索引长度。...

2019-07-03 21:03:14 272

原创 常用正则表达式公式总结

一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^d{n}$ 至少n位的数字:^d{n,}$ m-n位的数字:^d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 带1-2位小数的正数...

2019-06-20 07:36:06 1023

原创 使用 kill 命令杀死 java进程,你用对了吗?

在本地调试agent相关功能,需要经常性的杀掉Java进程,验证一些极端情况。每次都是本能执行如下步骤 jps kill -9 reboot 有一次发现代码中添加的 ShutdownHook没有生效,难道和 kill命令后面的数字有关?经过一番查阅,后面的数字代表的是具体信号, kill命令可将指定的信号发送给相应的进程,linux中常见的信号如下: 1...

2019-06-20 07:32:39 9308 2

原创 数据库死锁案例分析

一 前言死锁,其实是一个很有意思也很有挑战的技术问题,大概每个DBA和部分开发同学都会在工作过程中遇见 。关于死锁我会持续写一个系列的案例分析,希望能够对想了解死锁的朋友有所帮助二案例分析2.1 业务场景用户录入商品,应用程序会提前检查是否存在相同记录,如果有则先删除再插入;如果没有则直接插入。2.2 环境说明MySQL 5.7.22 事务隔离级别为RC模式。 cr...

2019-06-11 07:46:55 1623

原创 二分搜索树的原理与Java源码实现

01折半查找法了解二叉查找树之前,先来看看折半查找法,也叫二分查找法。在一个有序的整数数组中(假如是从小到大排序的),如果查找某个元素,返回元素的索引。如下:int[]arr=newint[]{1,3,4,6,8,9};在arr数组中查找6这个元素,查到返回对应的索引,没有找到就返回-1思想很简单:1 先找到数组中间元素target与6比较2 如果targ...

2019-06-10 08:05:20 476

原创 理解Python爬虫框架pyspider

一、pyspider简介pyspider是Binux做的一个爬虫架构的开源化实现,主要功能有 : 抓取、更新调度多站点的特定的页面 需要对页面进行结构化信息提取 灵活可扩展,稳定可监控 pyspider以去重调度,队列抓取,异常处理,监控等功能作为框架,只需提供给抓取脚本,并保证灵活性。最后加上web的编辑调试环境,以及web任务监控,即成为了这套框架。py...

2019-06-10 07:52:40 1189

原创 TCP/IP的底层队列实现原理

自从上次学习了TCP/IP的拥塞控制算法后,我越发想要更加深入的了解TCP/IP的一些底层原理,搜索了很多网络上的资料,看到了陶辉大神关于高性能网络编程的专栏,收益颇多。今天就总结一下,并且加上自己的一些思考。 我自己比较了解Java语言,对Java网络编程的理解就止于Netty框架的使用。 Netty的源码贡献者Norman Maurer对于Netty网络开发有过一句建议,"Never bl...

2019-06-09 17:15:42 1745 1

原创 24 道 shell 脚本面试题

虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到shell 脚本的问题,它有助于你在工作环境中自动完成很多任务。如下是一些面试过程中,经常会遇到的 shell 脚本面试问题及解答:Q:1 Shell脚本是什么、它是必需的吗?答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项...

2019-06-03 21:05:17 1086

原创 杀死僵尸进程,你需要这些神奇高效的Linux命令行

命令行的学习捷径Linux 命令有许多强大的功能:从简单的磁盘操作、文件存取,到进行复杂的多媒体图像和流媒体文件的制作,都离不开命令行。在 Linux 的学习中,新手都会遇到这么一个问题:自己对系统的每个命令都很熟悉,但是在系统出现故障的时候,就无从下手了。说到底,就是学习的理论知识没有很好地与系统实际操作相结合。5 大系统运维状态对运维来说,查看系统运...

2019-06-03 20:57:18 1427 2

原创 计算机算法基础总结

00 前言本文主要是通过通俗易懂的算法和自然语言, 向大家介绍基础的计算机排序算法和查找算法, 还有一些作为一名程序猿应该知道的名词, 数据结构, 算法等等. 但是仅仅止于介绍, 因为本人能力不足, 对一些高级的算法和数据结构理解不够通透, 所以也不作太多的深入的剖析.. demo都在我的Github中能找得到。同样的, 通过最近面试实习生的机会, 把一些基础都捡起来, 巩固巩固, 同时...

2019-06-03 20:47:56 763

原创 DockerFile 命令总结

只描述非windows系统。FROM[:] [AS]: 设置基础镜像 FROM alpine:latest RUN\ ["executable", "param1", "param2"]: 执行shell脚本。进来少使用RUN,因为没执行一次 docker就会增加一层只读层。 RUN /bin/bash -c 'source $HOME/.bashrc; \...

2019-06-03 07:48:28 916 1

原创 分布式、高并发、多线程?有什么区别

是不是很多人都认为分布式=高并发=多线程?当面试官问到高并发系统可以采用哪些手段来解决,或者被问到分布式系统如何解决一致性的问题,是不是一脸懵逼?一开始,不少人都会将三者混淆,误以为所谓的分布式高并发的系统就是能同时供海量用户访问,而采用多线程手段不就是可以提供系统的并发能力吗?实际上,他们三个总是相伴而生,但侧重点又有不同。什么是分布式?分布式更多的一个概念,是为了解决单个物理服...

2019-06-03 07:39:48 726

原创 连接池究竟是什么

通常如何通过连接访问下游?工程架构中有很多访问下游的需求,下游包括但不限于服务/数据库/缓存,其通讯步骤是为:(1)与下游建立一个连接;(2)通过这个连接,收发请求;(3)交互结束,关闭连接,释放资源;不管是服务/数据库/缓存,官方会提供不同语言的Driver、Document、DemoCode来指导使用方建立连接与调用接口。以MongoDB的C++官方Driv...

2019-06-03 07:35:54 2827 1

原创 一行代码能实现什么丧心病狂的功能?

一行代码能实现什么丧(gan)心(de)病(piao)狂(liang)的功能?今天pk哥给你列出了 16 个。输出Mandelbrot图像mandelbrot 图像中文名叫曼德勃罗图像。Mandelbrot 图像中的每个位置都对应于公式 N=x+y*i 中的一个复数。其实数部分是 x,虚数部分是 y,i 是 -1 的平方根。图像中各个位置的 x 和 y 坐标对应于虚数的 x 和 y 部...

2019-05-30 08:00:42 1696

原创 TCP重传问题的排查思路与实践,有点干货!

1、关于TCP重传TCP有重传是正常的机制,为了保障数据传输可靠性。只是局域网环境,网络质量有保障,因为网络问题出现重传应该极低;互联网或城域网环境,线路复杂(可以想象下城市地下管网,错综复杂的电线杆等),网络质量不好保障,重传出现概率较高。TCP有重传,也不一定是网络层面的问题。也可能是接收端不存在,接收端receivebuffer满了,应用程序有异常链接未正常关闭等等等。2、TC...

2019-05-29 07:57:10 7457

原创 每个程序员都应该收藏的算法复杂度速查表

这篇文章覆盖了计算机科学里面常见算法的时间和空间的Big-O 复杂度。我之前在参加面试前,经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,以便我在面试时不会被问住。最近这几年,我面试了几家硅谷的初创企业和一些更大一些的公司,如 Yahoo、eBay、LinkedIn 和 Google,每次我都需要准备这个,我就在问自己,“为什么没有人创建一个漂亮的Big-O速查表呢?”所以,为了节省大...

2019-05-28 08:01:54 200

原创 编写可靠Linux shell脚本的八个建议

这八个建议,来源于键者几年来编写 shell 脚本的一些经验和教训。事实上开始写的时候还不止这几条,后来思索再三,去掉几条无关痛痒的,最后剩下八条。毫不夸张地说,每条都是精挑细选的,虽然有几点算是老生常谈了。1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题去问别人,不同的人的回答可能各不相同。我见过/usr/bin/env bash,也见过/bin/bas...

2019-05-23 07:51:54 204

原创 Java零拷贝

1、MappedByteBufferjava nio提供的FileChannel提供了map()方法,该方法可以在一个打开的文件和MappedByteBuffer之间建立一个虚拟内存映射,MappedByteBuffer继承于ByteBuffer,类似于一个基于内存的缓冲区,只不过该对象的数据元素存储在磁盘的一个文件中;调用get()方法会从磁盘中获取数据,此数据反映该文件当前的内容,调用pu...

2019-05-23 07:49:06 1869

原创 黑客,一般用什么兵器来进行网络抓包呢?

这是一个什么工具呢?这么神奇"其实我相信大家很多人都听说过或者使用过,而且这个工具也是黑客或者从事网络工程的工作者必用的工具,它就是"网络抓包工具"。今天我们就详细介绍一下网络抓包的目的是什么?常用的网络抓包工具有哪些?网络抓包工具的使用方法和技巧!# 网络抓包目的是什么?官方定义:抓包(packet capture)就是将发送与接收的进行截获、重发、编辑、转存等操作,也用来检查网络安...

2019-05-22 07:58:40 1346

原创 JAVA线程池学习以及队列拒绝策略

为什么要用线程池?在Java中,如果每当一个请求到达就创建一个新线程,开销是相当大的。在实际使用中,每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源,甚至可能要比花在实际处理实际的用户请求的时间和资源要多的多。除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源。如果在一个JVM中创建太多的线程,可能会导致系统由于过度消耗内存或者“切换过度”而导致系统资源不足...

2019-05-21 07:37:52 947

原创 不了解这12个语法糖,别说你会Java!

本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的同时,了解这些语法糖背后的原理语法糖语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便...

2019-05-17 08:02:30 429

原创 轻松掌握linux常用技巧

前言linux中的一些小技巧可以大大提高你的工作效率,本文就细数那些提高效率或者简单却有效的linux技巧。命令编辑及光标移动这里有很多快捷键可以帮我们修正自己的命令。接下来使用光标二字代替光标的位置。删除从开头到光标处的命令文本ctrl + u,例如:$ cd/proc/tty;ls-al光标如果此时使用ctrl + u快捷键,那么该条命令都会被清除,而不需要...

2019-05-09 17:58:04 159

原创 lsof 命令应用

一 前言本文深入的学习命令lsof--列出打开文件(lists openfiles)。在linux系统中,我们可以通过文件访问文本数据,还可以访问网络连接和硬件。我们通过lsof命令可以查看进程开打了哪些文件,打开指定文件的进程有哪些,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。二 lsof 用法权限需求因为lsof命令需要访问核心内存和各种文件,所以需要具有root权...

2019-05-09 16:06:26 1302

原创 IntelliJ Idea 常用快捷键列表

Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ OR ],可以跑到大括号的开头与结尾Ctrl+F12,可以显示当前文件的结构Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按 F3 可以选择Ctrl+N,可以快速打开类C...

2019-04-28 20:50:59 3447

原创 TCP的三次握手四次挥手

尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。这是一个互相确认的过程,以保证数据传输的可靠性。1、熟悉下tcp报文下面是...

2019-04-21 20:57:48 238

原创 神奇高效的Linux命令行

命令行的学习捷径Linux 命令有许多强大的功能:从简单的磁盘操作、文件存取,到进行复杂的多媒体图像和流媒体文件的制作,都离不开命令行。在 Linux 的学习中,新手都会遇到这么一个问题:自己对系统的每个命令都很熟悉,但是在系统出现故障的时候,就无从下手了。说到底,就是学习的理论知识没有很好地与系统实际操作相结合。5 大系统运维状态对运维来说,查看系统运行状态...

2019-03-26 07:29:31 706

原创 巧用这19条MySQL优化,效率至少提高3倍

1、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据:type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。 key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式。 key_len列,索引长度。 rows列,扫描行数。该值是个...

2019-02-24 19:55:35 621

原创 Spring中获取request的几种方法,及线程安全性

概述在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对象,比如获取客户端ip地址、请求的url、header中的属性(如cookie、授权信息)、body中的数据等。由于在Spring MVC中,处理请求的Controller、Service等对象都是单例的,因此获取request对象时最需要注意的问题,便是request对象是否是线程安全的:当有大量并发请求...

2019-02-17 21:21:56 712

原创 图解ZooKeeper的典型应用场景

zookeeper在很多框架中都有应用,例如:Dubbo,Hadoop,Kafka等,但典型的用法也就几种,掌握了这几种用法,再看zookeeper在相关框架中的应用就很轻松,下一篇文章将会详细介绍zookeeper在dubbo中的使用,以便有一个更深刻的了解本文参考了《从Paxos到ZooKeeper》,鉴于本文的定位是一篇科普性质的文章,因此对于一些诸如共享锁和分布式队列的具体实现没...

2019-02-17 21:14:25 946 1

原创 BAT 经典算法笔试题 —— 磁盘多路归并排序

在 LevelDB 数据库中高层数据下沉到低层时需要经历一次 Major Compaction,将高层文件的有序键值对和低层文件的多个有序键值对进行归并排序。磁盘多路归并排序算法的输入是来自多个磁盘文件的有序键值对,在内存中将这些文件的键值对进行排序,然后输出到一到多个新的磁盘文件中。多路归并排序在大数据领域也是常用的算法,常用于海量数据排序。当数据量特别大时,这些数据无法被单个机器内存容...

2019-02-17 20:43:54 473

原创 深入理解Java ClassLoader

ClassLoader 做什么的? 延迟加载 各司其职 ClassLoader 传递性 双亲委派 Class.forName 自定义加载器 Class.forName vs ClassLoader.loadClass 钻石依赖 分工与合作 Thread.contextClassLoaderClassLoader 是 Java 届最为神秘的技术之一,无数人被它伤透了脑筋,摸不清...

2019-02-17 20:26:19 604

微服务那些事儿

微服务那些事儿 近儿年,微服务的兴起对从事资讯科技的各级别、各功能、各种技术的人员来说是 重大挑战,也是 个突破的机会。

2018-02-26

Docker开发指南201704

Docker 容器轻量和可移植的特性尤其适用于动态和分布式的环境,它的兴起给软件开发流程带来了一场革命。

2018-02-13

强化学习在阿里的技术演进与业务创新

强化学习在阿里的技术演进与业务创新 强化学习在阿里的技术演进与业务创新

2018-02-07

Git权威指南带书签完整版

Git权威指南带书签完整版 Git权威指南带书签完整版 Git权威指南带书签完整版

2018-01-30

一键断开redis服务端的的所有客户端链接

切换redis后客户端长连接仍旧与旧的服务端保持连接,使用此程序可以从旧的redis服务端断开所有客户端链接。

2018-01-24

阿里巴巴9年双11

阿里巴巴9年双11,互联网超级工程。AI智能搜索。阿里的双 11 是一次全球商业、科技、数据、智能的大协同,是一个 商业社会的大协同,更是一个技术的大协同,是名副其实的世界互联网技 术的超级工程。

2018-01-23

阿里巴巴2016双11背后的技术

2016 天猫双 11 全球狂欢节活动圆满落幕,来自全球的消费者一共创造了 1207 亿 的成交额,在这个过程中整体系统平稳运行,用户购物、支付体验流畅,物流包裹也井 然有序地送到消费者手中,这背后是阿里领先的交易、支付、物流系统,以及强大的计 算平台、海量数据和智能算法的共同支撑。在双 11 零点开始的半个小时里,超过 6 千 万的用户使用手机来同时参与了这次活动,在零点的流量高峰,创造了每秒交易峰值 17.5 万笔,每秒支付峰值 12 万笔的新纪录,而 2009 年的第一次双 11,交易峰值仅为 400 笔每秒,支付峰值仅为 200 笔每秒,八年增长数百倍。

2018-01-19

Java系统获取最近修改代码的class文件

根据class的编译时间,获取指定时间段内修改的java文件class

2017-06-16

Java数据结构概述图表

2017-02-16

空空如也

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

TA关注的人

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