自定义博客皮肤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搬运工

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

原创 volatile对指令重排的影响

上一期介绍了volatile关键字对JVM主内存和工作内存的影响,没看过的小伙伴们可以点击下面链接:什么是 volatile 关键字?实在懒得去看也不要紧,我们简单回顾一下:volatile是一个轻量级的线程同步机制。它的特性之一,是保证了变量在线程之间的可见性。当一个线程修改了变量的值,新的值会立刻同步到主内存当中。而其他线程读取这个变量的时候,也会从...

2020-03-18 21:14:28 7517

原创 JDK8 IO包类梳理

流操作: 输入输出流 InputStream SequenceInputStream OutputStream StringBufferInputStream ObjectInpu...

2020-03-18 21:14:01 1670

原创 Java面试进阶部分集合

框架基础反射:反射是Java开发的一类动态相关机制。因为本身Java语言并不是一款动态语言,如果我们想要得到程序动态的效果,因此便引入了反射机制这一概念。怎么表达反射?能用反射做什么?PS:某面试题:Java中创建实例化对象有哪些方式?①最常见的创建对象方法,使用new语句创建一个对象。②通过工厂方法返回对象,例:String s =...

2020-03-18 21:13:36 401

原创 java基础面试题

什么是线程局部变量?(答案) 线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。Java 提供 ThreadLocal 类来支持线程局部变量,是一种实现线程安全的方式。但是在管理环境下(如 web 服务器)使用线程局部变量的时候要特别小心,在这种情况下,工作线程的生命周期比任何应用变量的生命周期都要长。任何线程局部变量一旦在工作完成后没有释放,Java 应用就...

2020-03-18 21:13:14 633

原创 30 个实例详解 TOP 命令

Linux中的top命令显示系统上正在运行的进程。它是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。在本篇中,我们会探索top命令的细节。top命令是一个交互命令。在运行top的时候还可以运行很多命令。我们也会探索这些命令。(译注:不同发行版的top命令在各种细节有不同,如果发现不同时,请读你的帮助手册和命令内的帮助。)1. Top 命令输出首先,让我们了解...

2020-03-18 21:12:47 993

原创 Java异常类的层次结构与运行时数据区域图例

Java异常类的层次结构Java运行时数据区域关注微信公众号和今日头条,精彩文章持续更新中。。。。。

2020-03-18 21:12:15 193

原创 CAP定理(CAP原则)与Base理论

CAP定理:CAP定理又称CAP原则,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据...

2020-03-18 21:11:51 842

原创 Java代码性能优化总结

代码优化的最重要的作用应该是:避免未知的错误。在代码上线运行的过程中,往往会出现很多我们意想不到的错误,因为线上环境和开发环境是非常不同的,错误定位到最后往往是一个非常小的原因。然而为了解决这个错误,我们需要先自验证、再打包出待替换的class文件、暂停业务并重启,对于一个成熟的项目而言,最后一条其实影响是非常大的,这意味着这段时间用户无法访问应用。因此,在写代码的时候,从源头开始注意各种细节,权...

2020-03-18 21:11:06 249

原创 Java精选笔试题

1,volatile关键字是否能保证线程安全?()>>>>答案:否volatile关键字用在多线程同步中,可保证读取的可见性,JVM只是保证从主内存加载到线程工作内存的值是最新的读取值,而非cache中。但多个线程对volatile的写操作,无法保证线程安全。假如线程1,线程2 在进行read,load 操作中,发现主内存中co...

2020-03-18 21:10:36 31380 3

原创 Java 8 开发顶级技巧

我使用Java 8编码已经有些年头,既用于新的应用程序,也用来迁移现有的应用,感觉是时候写一些我发现的非常有用的“最佳实践”。我个人并不喜欢“最佳实践”这个说法,因为它意味着“一刀切”的解决方案,而编码不可能是这样的工作方式——我们需要亲自去发现什么样的解决方案才是有效的。但是我发现了一些Java 8代码中可以帮助我们的一些选择,让我们一起来看看吧。1.OptionalOptional是一...

2020-03-18 21:10:13 255

原创 Java锁有哪些种类,以及区别

一、公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。对于Java ReentrantLock而言,通过构造函数指定该锁是否是公平锁,默认是非公平锁。非公平锁的优点在于吞吐量比公平锁大。对于Synchronized而言,也是一种非公平锁...

2020-03-18 21:09:47 246

原创 Java随机数的几种有趣用法

众所周知,随机数是任何一种编程语言最基本的特征之一。而生成随机数的基本方式也是相同的:产生一个0到1之间的随机数。看似简单,但有时我们也会忽略了一些有趣的功能。我们从书本上学到什么?最明显的,也是直观的方式,在Java中生成随机数只要简单的调用:java.lang.Math.random()在所有其他语言中,生成随机数就像是使用Math工具类,如abs, pow, f...

2020-03-18 21:09:18 1850

原创 高并发高可用系统应对策略的一些思考

说明:仅仅是自己的一些观点和思考,如有问题欢迎指正解耦神器:MQMQ 是分布式架构中的解耦神器,应用非常普遍。有些分布式事务也是利用 MQ 来做的。由于其高吞吐量,在一些业务比较复杂的情况,可以先做基本的数据验证,然后将数据放入MQ,由消费者异步去处理后续的复杂业务逻辑,这样可以大大提高请求响应速度,提升用户体验。如果消费者业务处理比较复杂,也可以独立集群部署,根据实际处理...

2020-03-18 21:08:51 539

原创 Java进阶知识点6:并发容器背后的设计理念 - 锁分段

一、背景容器是Java编程中使用频率很高的组件,但Java默认提供的基本容器(ArrayList,HashMap等)均不是线程安全的。当容器和多线程并发编程相遇时,程序员又该何去何从呢?通常有两种选择:1、使用synchronized关键字,将对容器的操作有序错开,确保同一时刻对同一个容器只存在一个操作。Vector,HashTable等封装后的容器本质也是这种解决思路,只不过s...

2020-03-18 21:07:22 211

原创 分布式文件系统FastDFS详解

01序 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器...

2020-03-18 21:06:53 2710

原创 如何编写高性能的 RPC 框架

在RPC Benchmark Round 1中,Turbo性能炸裂表现强悍,并且在 listUser 这一项目中,取得了 10x dubbo 性能的好成绩。本文将介绍Turbo强悍性能背后的原理,并探讨如何编写高性能的 RPC 框架。过早的优化是万恶之源?这句话是The Art of Computer Programming作者,图领奖得主 Donald Knut...

2020-03-18 21:06:12 2733 1

原创 Java开发必会的Linux命令

作为一个Java开发人员,有些常用的Linux命令必须掌握。即使平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。因为很多服务器上都是Linux系统。所以,要和服务器机器交互,就要通过shell命令。本文并不会对所有命令进行详细讲解,只给出常见用法和解释。具体用法可以使用--help查看帮助或者直接通过google搜索学习。必会Linux命令清单...

2020-03-18 18:02:51 923

原创 互联网业务场景下消息队列架构

消息队列作为一种基础的抽象数据结构,被广泛应用在各类编程与系统设计中。同步VS异步通信的一个基本问题是:发出去的消息什么时候需要被接收到?这个问题引出了两个基础概念:“同步通信”和“异步通信”。根据理论抽象模型,同步通信和异步通信最本质的差别来自于时钟机制的有无。同步通信的双方需要一个校准的时钟,异步通信的双方不需要时钟。现实的情况是,没有完全校准的时钟,所以没有绝对的同步...

2020-03-18 18:02:07 354

原创 海量数据面试题分析

海量面试题的条件一般都要求我们处理一批计算机内存放不下的数据。当我们遇到这种面试题时,常有以下几种思想: 哈希切分 哈希切分就是将一个大文件,利用哈希的原理,将其分为若干个小文件。相同的数据都被分到同一个文件里。例如我有一个存放着100亿个整数的大文件,将其分为100个小文件。将每个数都模100,结果相同的数存放到一个文件里。如果这100亿个数理想均匀,则每个小文件大约为1亿个数。 ...

2020-03-18 18:01:37 421

原创 SpringBoot配置文件放在jar外部

个人博客请访问http://www.x0100.topSpring Boot程序默认从application.properties或者application.yaml读取配置,如何将配置信息外置,方便配置呢?查询官网,可以得到下面的几种方案:通过命令行指定SpringApplication会默认将命令行选项参数转换为配置信息例如,启动时命令参数指定:java-ja...

2020-03-18 17:59:26 338

原创 一款SQL自动检查神器,再也不用担心SQL出错了,自动补全、回滚等功能大全

个人博客请访问http://www.x0100.top介绍Yearning MYSQL 是一个SQL语句审核平台。提供查询审计,SQL审核等多种功能,支持Mysql,可以在一定程度上解决运维与开发之间的那一环,功能丰富,代码开源,安装部署容易!开源地址https://gitee.com/cookieYe/Yearning功能介绍 SQL查询查询导出查询...

2020-03-18 17:43:59 220

原创 MySQL如何对select,select for update进行加锁

个人博客请访问http://www.x0100.top看如下一条sql语句:# table T (id int, name varchar(20))delete from T where id = 10;MySQL在执行的过程中,是如何加锁呢?在看下面这条语句:select * from T where id = 10;那这条语句呢?其实这其中包含太多知识点了。...

2020-03-18 17:32:30 4068 1

原创 Linux服务器的那些性能参数指标

一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息。通常来说运维人员、系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你的程序非正常工作的时候,这些蛛丝马迹往往会帮助快速定位跟踪问题。这里只是一些简单的工具查看系统的相关参数,当然很多工具也是通过分析加工 /proc、/sys 下的数据来工作的,而那些更加细致、专业的性能监测和调优,可...

2020-03-18 17:20:36 375

原创 区块链 Hyperledger - 超级账本项目在centos7环境下基于Docker安装与部署

Hyperledger 项目是开源界面向开放、标准区块链技术的首个重要探索,在 Linux 基金会的支持下,吸引了众多科技和金融巨头的参与。本文将介绍 hyperledger 项目的历史,并以核心的 fabric 项目为例,讲解如何快速安装部署和应用区块链系统。项目基于Docker进行安装与部署,关于Docker在Centos中的安装与部署请参考博文《Centos下Docker使用镜像和Do...

2020-03-18 17:20:01 4807

原创 Java的常见误区与细节

1 在Java中,没有goto语句。因为大量使用goto语句会降低程序的可读性和可维护性,所以Java语言取消了goto的使用。同时,为了避免程序员自行使用goto所带来的混乱,Java语言仍将goto定义为一个关键字,但是没有定义任何语法,故称为“保留字”。2 true、false和null在IDE中虽然以不同的颜色显示,但是并不是关键字,而是“字面常量”,就和String类型的ab...

2020-03-18 17:18:54 173

原创 零基础秒懂:手把手教你搭建一套微服务框架!

这套微服务框架能干啥?这套系统搭建完之后,可以实现: 微服务架构,你的整个应用程序将会被拆分成一个个功能独立的子系统,独立运行,系统与系统之间通过 RPC 接口通信。 这样系统之间的耦合度大大降低,你的系统将非常容易扩展,团队协作效率提升了 N 个档次。 这种架构通过眼下流行的 Spring Boot 和阿里巴巴吊 Dubbo 框架来实现。 容器化部署,你的各个微...

2020-03-18 17:18:30 47700 27

原创 云原生应用的12要素

云原生(Cloud Native)是由 Pivotal 的Matt Stine在2013年提出的一个概念,是他多年的架构和咨询总结出来的一个思想的集合。在云的时代,应用会更多的迁移到云端,基于云的架构设计和开发模式需要一套全新的理念去承载,于是云原生思想应运而生,而针对云原生应用开发的最佳实践原则,12-Factor脱颖而出,同时也带来了新的解读。12-Factor,是由Heroku创始人...

2020-03-18 17:18:06 15255

原创 1分钟了解协同过滤,pm都懂了

工程架构方向的程序员,看到推荐/搜索/广告等和算法相关的技术,心中或多或少有一丝胆怯。但认真研究之后,发现其实没有这么难。今天的1分钟系列,给大家介绍下推荐系统中的“协同过滤”,绝无任何公式,保证大伙弄懂。什么是协同过滤(Collaborative Filtering)?答:通过找到兴趣相投,或者有共同经验的群体,来向用户推荐感兴趣的信息。举例,如何协同过滤,来对...

2020-03-18 17:17:41 513

原创 Base64编码换行符问题解决

概述Base64是一种字符串编码格式,Base64采用A-Z a-z 0-9 “+“ “/“这一共64个字符来编码原始字符(还有垫字符“=“)。一个字符本身是1个字节,也就是8位,而Base64编码后的一个字符只能表示能表示6位的信息。也就是原始字符串中3字节的信息编码会变成4字节的信息。Base64的主要作用是满足MIME传输需求,在传输过程中都是用ASCII支持的可见字符。Base64是基...

2020-03-18 17:17:16 15774

原创 什么是Base64算法

A:为什么在进行Http传输的时候,需要把Byte数组进行Base64编码呢?B:这很简单呀,因为Http协议是文本协议,不同于二进制协议(如Thrift)那样直接进行二进制传输。A:那么,直接把Byte数组转换成String不就行了吗?类似newString(bytes)这样。为什么非要用Base64呢?B:首先,Base64是一种编码算法。为什么叫左Base64呢?因为这种算法只支...

2020-03-18 17:16:52 26953 5

原创 什么是一致性Hash算法?

一、Redis集群的使用我们在使用Redis的时候,为了保证Redis的高可用,提高Redis的读写性能,最简单的方式我们会做主从复制,组成Master-Master或者Master-Slave的形式,或者搭建Redis集群,进行数据的读写分离,类似于数据库的主从复制和读写分离。如下所示:同样类似于数据库,当单表数据大于500W的时候需要对其进行分库分表,当数据量很大的时候(标准可...

2020-03-18 17:16:25 418

原创 什么是AES对称加密算法

小明:老师,请问了解AES算法吗?老师:了解一些,AES算法是典型的【对称加密算法】小明:我不太明白,这个对称加密是什么鬼?它跟MD5,SHA这样的哈希摘要算法有什么不同?老师:对称加密不同于信息摘要,是真正意义上的加密算法。我们来看看下面这个例子:假设有一个发送方在向接收方发送消息。如果没有任何加密算法,接收方接收的是一个明文消息“我是小明”如果消息被中间人截获到,即使中...

2020-03-18 17:15:56 19862 1

原创 什么是NIO?NIO的原理是什么机制?

个人博客请访问http://www.x0100.topNIO和IO到底有什么区别?有什么关系?首先说一下核心区别: NIO是以块的方式处理数据,但是IO是以最基础的字节流的形式去写入和读出的。所以在效率上的话,肯定是NIO效率比IO效率会高出很多。 NIO不在是和IO一样用OutputStream和InputStream 输入流的形式来进行处理数据的,但是又...

2020-03-18 16:48:50 223

原创 5 分钟完成 Nginx 直播服务部署(直播 + 分流 + 画面水印)

个人博客请访问http://www.x0100.top最近帮朋友的公司部署了一套分流+水印的直播系统顺手打包成docker镜像,方便大家需要用到的时候开箱即用,不需要百度一些零碎的文章 也可做简单的直播服务,只需调整配置文件便可达到你的需求.需求:将直播流分流到两个云厂商的直播云,一个有水印,一个无水印。使用hls播放朋友需求的拓扑示意图:当前拓扑示意图(阿某...

2020-03-18 16:30:36 2660

原创 并发编程中的锁原理、锁优化、CAS、AQS

个人博客请访问http://www.x0100.top1、为什么要用锁?锁-是为了解决并发操作引起的脏读、数据不一致的问题。2、锁实现的基本原理2.1、volatileJava编程语言允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁要更加方便。volatile在...

2020-03-18 16:14:50 233

原创 基于token的多平台身份认证架构设计

个人博客请访问http://www.x0100.top1、概述在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情。随着移动互联网时代到来,客户端的类型越来越多, 逐渐出现了 一个服务器,N个客户端的格局 。不同的客户端产生了不同的用户使用场景,这些场景: 有不同的环境安全威胁 不同的会话生存周期 不同的用户权限控制体系 ...

2020-03-18 16:14:16 215

原创 kafka原理和实践(一)原理

个人博客请访问http://www.x0100.top一、kafka拓扑图大家都知道kafka是依赖zookeeper集群的,一般最少也要三台服务器来实现HA。拓扑图如下,分三层:1.Producers:消息生产者,push消息给Brokers.发送时根据不同topic选择不同分区(在Broker上)。2.Brokers:注册在zookeeper节点上。3.Co...

2020-03-18 16:13:42 277

原创 Kafka实践(二):Kafka 使用Java实现数据的生产和消费

个人博客请访问http://www.x0100.topKafka的介绍Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。Kafka 有如下特性:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息...

2020-03-18 16:13:24 308

原创 如何停止一个正在运行的线程

个人博客请访问http://www.x0100.top停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。在java中有以下3种方法可以终止正在运行的线程: 使用退出标志,使线程正常退出,也就是当run方法...

2020-03-13 14:23:47 1262

原创 Jenkins 多环境 CI/CD 架构设计

个人博客请访问http://www.x0100.top自动化部署主要是为了解决项目多、环境多、持续集成慢、部署操作麻烦、手动操作易出错、自动化运维等问题。Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。目标: 支持多分支、多环境、多项目、多套配置文件、多编程语言 支持一键构建、集群发布 ...

2020-03-13 13:37:42 648

微服务那些事儿

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

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关注的人

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