自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WangJun的专栏

记录成长的点滴

  • 博客(74)
  • 问答 (3)
  • 收藏
  • 关注

原创 CDN介绍

CDN介绍一、简介CDN中文就是内容分发网络(Content Delivery Network)。其目的是在现有的网络中增加一层网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。有别于镜像,它比镜像更加智能,可以理解为:CDN=镜像(Mirror)+缓存(Cache)+整体负载均衡(GSLB)。目前CDN都以缓存网站中的静态数据为主,如CSS、JS、图片和静态页面等数据。用户从主站服务器中请求到动态内容后,再从CDN上下载静态数据,从而加速

2020-05-27 10:41:31 610

原创 Redis持久化

Redis持久化一、持久化简介因为Redis是内存数据库,它将自己的数据库状态储存在内存里面,所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。因此Redis 提供了两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。二、RDB持久化RDB 是 Redis 默认的持久化方案。RDB持久化可以手动执行也可以根据服务器配置选项定期执行。该功能会将在某个时间点上的数据库状态保存到一个.

2020-05-27 10:35:48 470

原创 Java锁Lock的种类

Java锁Lock的种类我们平时听到用到的锁有很多种:公平锁/非公平锁、可重入锁/不可重入锁、共享锁/排他锁、乐观锁/悲观锁、分段锁、偏向锁/轻量级锁/重量级锁、自旋锁。其实这些都是在不同维度或者锁优化角度对锁的一种叫法,我们在程序中用到的也就那么几种,比如synchronized,ReentrantLock,ReentrantReadWriteLock。ReentrantLock类Jdk1...

2020-04-24 15:21:04 1073

原创 Java阻塞式IO通信

阻塞式IO通信一、BIO通信介绍网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请求,通过三次握手建立连接,如果连接建立成功,双方就可以通过网络套接字(Socket)进行通信。在基于传统同步阻塞模型开发中,ServerSocket负责绑定IP地址,启动监听端口;S...

2020-03-26 15:47:16 361

原创 Java线程状态及其转换

线程状态及其转换一、线程状态Java中定义线程的状态有6种,可以查看Thread类的State枚举:public static enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED; private State() {} }初始(NEW):新创建了一个线...

2020-03-26 15:05:38 660

原创 Mysql慢查询日志

Mysql慢查询日志数据库的慢查询是影响项目性能的一大因素,对于数据库我们要优化SQL,首先要找到需要优化的SQL,这就需要我们知道sql执行时间等信息,除了使用SHOW PROFILES;外,mysql也提供了“慢查询日志”功能,用来记录查询时间超过某个设定值的SQL,这将极大程度帮助我们快速定位到症结所在,以便对症下药。一、慢查询配置关于慢查询日志,主要涉及三个参数:slow_que...

2020-03-11 18:23:41 110

原创 大数据学习之路之HBASE

Hadoop之HBASE一、HBASE简介HBase是一个开源的、分布式的,多版本的,面向列的,半结构化的NoSql数据库,提供高性能的随机读写结构化数据的能力。它可以直接使用本地文件系统,也可以使用Hadoop的HDFS文件存储系统。不过,为了提高数据的可靠性和系统的健壮性,并且发挥HBase处理大数据的能力,使用HDFS作为文件存储系统才更为稳妥。HBase存储的数据从逻辑上来看就像一张...

2019-09-19 19:40:47 834

原创 大数据学习之路之Hadoop

Hadoop介绍一、简介Hadoop是一个开源的分布式计算平台,用于存储大数据,并使用MapReduce来处理。Hadoop擅长于存储各种格式的庞大的数据,任意的格式甚至非结构化的处理。两个核心:HDFS:Hadoop分布式文件系统(Hadoop Distributed File System),具有高容错性和伸缩性,使用java开发MapReduce:Google MapReduce的...

2019-09-19 19:37:14 265

原创 Ubuntu安装邮件服务器

Ubuntu搭建邮件服务器此文我们使用Postfix来搭建邮箱服务器,Postifx是一个SMTP服务器。SMTP服务器也被称为MTA(message transfer agent)一、安装postfixsudo apt-get install mailutils# mailutils是一个命令行邮箱客户端,使用它可以很方便的发送和接收邮件, mailutils里面就包含了sendmail...

2019-07-15 19:57:26 9444

原创 web.xml详解

web.xml详解一、web.xml简介在java工程中,web.xml用来初始化工程配置信息,比如说welcome页面,filter,listener,servlet,servlet-mapping,启动加载级别等等。每一个xml文件都有定义格式规范的schema文件,web.xml所对应的xml Schema文件中定义了多少种标签元素,web.xml中就可以出现它所定义的标签元素,也就具备...

2019-07-04 16:33:37 296

原创 Nginx介绍和使用

Nginx介绍和使用一、介绍Nginx是一个十分轻量级并且高性能HTTP和反向代理服务器,同样也是一个IMAP/POP3/SMTP代理服务器。二、特性HTTP服务器反向代理服务器简单的负载均衡和容错支持热部署三、nginx模块nginx模块一般分为三类:handler:负责处理客户端请求并产生待响应内容。filter:负责对输出的内容进行处理,可以对输出进行修改。up...

2019-07-03 18:04:26 536

原创 搜索引擎的检索技巧

搜索引擎检索技巧我们常用的搜索引擎是google和百度,掌握一些常用的搜索技巧对检索信息的效率和准确度有很大帮助。1. 双引号 - 完全匹配把检索词放在双引号里面代表完全匹配,也就是说搜索的返回结果包含检索词,顺序也一致。2. 减号 - 排除减号后面的检索词表示你想排除包含这个检索词的结果。使用这个减号的时候前面必须是空格,后面不带空格。3. 星号 - 通配符百度不支持,google...

2019-07-01 11:18:51 9783

原创 DNS域名解析过程

DNS域名解析过程我们都知道在浏览器通过域名发起一个网络请求的时候,会有DNS服务器将域名解析成ip地址,以便向正确的ip地址发送请求,那么这一个过程具体是怎么处理的呢?今天整理了一下DNS域名解析的过程。大致分为10步:第一步浏览器会检查缓存中有没有域名对应的ip地址,这个缓存是有过期时长的,一般是几分钟到几小时不等。第二步如果浏览器缓存没有,那么就检查操作系统的hosts文件,比如w...

2019-02-20 20:28:03 186

原创 Gremlin入门

Gremlin入门一、Gremlin简介Gremlin是Apache ThinkerPop框架下的图遍历语言,Gremlin是一种函数式数据流语言,可以使用户使用简洁的方式表述复杂的属性图的遍历或查询。每个Gremlin遍历由一系列步骤(可能存在嵌套)组成,每一步都在数据流(data stream)上执行一个原子操作。Gremlin 语言包括三个基本的操作:map-step:对数据流中的...

2019-01-29 11:57:41 2363 1

原创 HugeGraph入门

一、HugeGraph简介最近在搞好友推荐方便的工作,选择了图数据的方法,使用并学习了HugeGraph,再次记录一下。HugeGraph是百度在2018年中旬开源的一款图数据库(Graph Database)系统,可以存储海量的顶点(Vertex)和边(Edge)。实现了Apache ThinkerPop 31框架,支持Gremlin图查询语言2。HugeGraph支持多用户并行操作,用...

2019-01-28 16:54:11 2029

原创 HTTPS协议入门

HTTPS协议入门1. HTTPS出现的背景虽然HTPP协议很优秀并且方便,但是不得不正视HTTP协议存在的一些问题:通信使用明文(不加密),内容可能会被窃听;不验证通信双方的身份,因此有可能遭遇伪装;无法证明报文的完整性,所以有可能已遭篡改;这些问题不仅在HTTP协议上出现,其他未加密的协议中也会存在这类问题。由于这些问题的存在,HTTPS协议就应运而生,HTTPS,超文本传输...

2018-11-26 20:31:15 156

原创 协程

协程1. 协程介绍协程又称微线程,从名字可以看出,协程的粒度比线程更小,并且是用户管理和控制的,多个协程可以运行在一个线程上面。那么协程出现的背景又是什么呢,先来看一下目前线程中影响性能的特性:使用锁机制线程间的上下文切换线程运行和阻塞状态的切换以上任意一点都是很消耗cpu性能的。相对来说协程是由程序自身控制,没有线程切换的开销,且不需要锁机制,因为在同一个线程中运行,不存在同时写...

2018-11-15 17:48:48 87

原创 Java诊断工具Arthas

Java诊断工具Arthas1. Arthas简介Arthas是阿里开源的一个线上java诊断工具,发现阿里还是挺喜欢开源一些技术的,造福人类。昨天试用了一下,发现真是强大,解决了我工作两年的很多困扰,有点相见恨晚的感觉。根据官网的说明,它能解决下面的问题:当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Excep...

2018-11-14 10:41:42 230

原创 实现一个简单的Tomcat

实现一个简单的Tomcat1. Tomcat作用我们的web应用会运行在Tomcat中,那么显然请求必定是先到达Tomcat的,Tomcat对于请求实际上会进行如下的处理:提供Socket服务:Tomcat的启动,必然是Socket服务,支持http协议。进行请求的分发:一个Tomcat可以为多个web应用提供服务,那么就需要把url下发到不同的web应用。需要将请求和响应封装成req...

2018-11-06 19:47:55 1306

原创 Redis的数据类型

Redis的数据类型Redis支持的数据类型一般有6种:字符串String字符串链表linked-list哈希hash字符串集合set有序字符串集合sorted set基数HyperLogLog比较常用的是字符串和哈希类型。1. 字符串String特点:二进制保存的,存入和获取的数据相同;Value最多可以容纳的数据长度是512M;# 操作实例127.0.0.1...

2018-10-10 15:10:57 112

原创 Java设计模式之builder模式

Java设计模式之builder模式今天学mybatis的时候,知道了SQLSessionFactory使用的是builder模式来生成的。再次整理一下什么是builder模式以及应用场景。1. builder简介builder模式也叫建造者模式,builder模式的作用将一个复杂对象的构建与他的表示分离,使用者可以一步一步的构建一个比较复杂的对象。2. 代码实例我们通常构造一个有很多参...

2018-09-25 15:46:50 115

原创 工厂和抽象工厂模式

工厂和抽象工厂模式1. 简介先来简单说一下什么是工厂模式和抽象工厂模式:工厂模式:一般我们通过new创建一个产品类,为了简化操作我们可以创建一个工厂类,由这个工厂类负责创建所需要的产品;抽象工厂模式:如果产品的种类多了,使用一个工厂可能不够,会导致逻辑复杂,可读性差等。这个时候我们可以定义一个工厂接口,通过多个工厂实现类来处理不同的产品。2. 普通工厂2.1 普通工厂UML2....

2018-09-21 18:05:38 145

原创 RESTful入门

RESTful入门1. REST简介和RPC一样,都是目前比较主流的URL链接风格,也可以说是web服务的一种架构风格。REST全称Representational State Transfer,表现层状态转移。用一句话简单的概括就是URL定位资源,用HTTP动词(GET,POST,DELETE,PUT)描述操作。其实它真正的全称是Resource Representational State...

2018-09-19 20:08:52 242

原创 RocketMQ入门

RocketMQ入门1. RocketMQ简介RocketMQ是阿里开源的消息中间件,它是纯java开发,具有低延迟、高吞吐量、高可用性和适合大规模分布式系统应用的特点。从名字可以看出Rocket火箭,代表RocketMQ主打速度。RocketMQ思路起源于Kafka,它对消息的可靠传输及事务性做了优化。学习MQ必须知道的几个专业术语:1)Producer消息生产者,生...

2018-09-10 18:03:47 159

原创 Servlet学习笔记

Servlet学习笔记工作以来就一直在用各种web框架,比如SpringMVC,Spring Cloud这些,向外提供接口都很方便,但是一直在想它的内部是怎样对外暴露服务的,正好之前学习java基础的时候也没好好看servlet这块,抽个时间学习总结一下,也能更好的理解掌握现在的web框架。1. servlet简介servlet的全称是server applet,服务端小程序,是运...

2018-09-05 17:27:19 544

原创 resin初识

Resin初识1. resin简介刚入职的公司用的后台服务器是resin,故因此学习记录一下。resin是一个非常流行的web引用服务器,对servlet和jsp提供了良好的支持,自身采用java开发。resin分为普通版和专业版,主要区别是专业版支持缓存和负载均衡。2. 安装配置官方下载地址:http://caucho.com/products/resin/downl...

2018-09-04 15:25:10 817

原创 SpringMVC入门笔记

SpringMVC入门笔记1. 简介Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架 ,是Spring系开源项目中的一个,和IoC配合使用。通过策略接口,Spring框架是高度可配置的,而且支持多种视图技术。Spring分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让他们更容易进行定制。Spring MVC解决的问题如...

2018-09-04 11:12:05 134

原创 MD5介绍

md5介绍1. md5简介md5的全称是md5信息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位(16字节,1字节8位)的散列值(常见的是用32位的16进制表示,比如:0caa3b23b8da53f9e4e041d95dc8fa2c),用于确保信息传输的完整一致。2. md5原理md5将整个文...

2018-08-20 20:39:50 2016

原创 使用vue-cli搭建VUE项目

使用vue-cli搭建VUE项目1. 安装并初始化项目Vue.js提供了一个官方命令行工具,可用于快速搭建大型的应用。# 全局安装 vue-cli(前提是安装了淘宝的npm镜像,就可以使用cnpm命令了)cnpm install --global vue-cli# 创建一个基于 webpack 模板的新项目vue init webpack my-project# 这里需...

2018-08-07 10:23:42 161

原创 安装使用VUE

安装使用VUE如果是简单实用vue的话,可以直接引用js文件。 https://vuejs.org/js/vue.js但是在构建大型项目的时候推荐使用NPM安装,NPM能够很好的和诸如webpack或Browserify模块打包器配合使用,同时Vue也提供配套工具来开发单文件组件。1. 安装nodejs由于npm(nodejs package manager)是nod...

2018-08-03 16:32:39 142

原创 Protocol Buffers学习笔记

Protocol Buffers学习笔记1. 简介Protocol Buffers是google发明的一种数据交换格式,独立于语言,独立于平台。与其他的数据交换格式有所不同,Protocol Buffers是一种二进制的格式,因此在网络传输的时候效率更高,相对于json它的文件体积更小,相对于xml,它的解析速度更快。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于网络传...

2018-08-01 20:44:41 236

原创 Java的Lambda表达式

Java的Lambda表达式1. 什么是Lambda表达式简单的说,Lambda表达式就是匿名方法。Lambda表达式让程序员能够使用更加简洁的代码,但是同样也使代码的可读性比较差。Lambda表达式也叫做匿名方法或者闭包。2. 和匿名内部类做对比Lambda是匿名方法,这个时候我们会想想到匿名内部类,我们来回想一下匿名内部类的用法,比如下面的代码就是使用匿名内部类实现...

2018-06-16 20:05:31 189 1

原创 mysql之group_concat函数

mysql之group_concat函数在介绍GROUP_CONCAT之前,我们先来看看concat()函数和concat_ws()函数。先准备一个测试数据库:mysql> select * from scores;+----+----------+-------+| id | name | score |+----+----------+-------+| ...

2018-06-14 20:41:13 156

原创 Java排序之归并排序

Java排序之归并排序1. 简介归并排序的算法是将多个有序数据表合并成一个有序数据表。如果参与合并的只有两个有序表,则成为二路合并。对于一个原始的待排序数列,往往可以通过分割的方法来归结为多路合并排序。2. 归并排序思路将长度为n的待排序数组看做是由n个有序长度为1的数组组成将其两两合并,得到长度为2的有序数组然后再对这些子表进行合并,得到长度为4的有序数组重复上述...

2018-06-06 12:55:23 3874

原创 Java排序之计数排序

Java排序之计数排序1. 计数排序思路计数排序适用于有明确范围的数组,比如给定一个数组,且知道所有值得范围是[m,n]。这个时候可以使用一个n-m+1长度的数组,待排序的数组就可以散在这个数组上,数组的值就是当前值的个数,再经过一次遍历展开,得到的数组就有序了。新建一个长度为n-m+1的临时数组遍历待排序数组,它的值-m作为临时数组下角标,这个位置的值加1遍历结束,临时数组...

2018-06-04 18:44:47 2240

原创 Fork/Join框架

Fork/Join框架1. Fork/Join框架简介Fork/Join框架是java7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果得到大任务结果的框架。Fork指的就是把一个大任务分割成若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+3+4+5+……+10000,可以分割成10个子...

2018-06-03 16:43:59 86

原创 Java设计模式之观察者模式

Java设计模式之观察者模式一直想写一篇学习观察者模式的总结没有契机,今天学习阻塞队列的原理时候看到在实现生产者消费者的时候用到了通知模式,就是所谓的观察者模式,正好顺便整理一下。1. 简介观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。也就是 发布-订阅 的模式。观察者模式涉及到的参与者有:Subject...

2018-06-02 22:58:46 108

原创 Java锁优化

Java锁优化应用程序在并发环境下会产生很多问题,通常情况下,我们可以通过加锁来解决多线程对临界资源的访问问题。但是加锁往往会成为系统的瓶颈,因为加锁和释放锁会涉及到与操作系统的交互,会有很大的性能问题。那么这个时候基于锁的优化手段就显得很重要了。一般情况下,可以从两个角度进行锁优化:对单个锁算法的优化和对锁粒度的细分。1. 单个锁的优化自旋锁:​ 非自旋锁在未获取...

2018-06-02 11:07:01 146

原创 整型计算

整型计算今天做LeetCode看到一道题,翻转整型,其中一行代码if ((newResult - tail) / 10 != result)表示超出范围就会有损失,有点不太明白,正好之前复习过原码,反码,补码这些,研究了半天,写个总结。接下来从两个问题入门看计算机内部是如何计算的。1. 为什么Integer.MAX_VALUE + 1 = Integer.MIN_VALUE我们可以...

2018-06-02 10:16:33 959

原创 Java线程池

Java线程池1. 简介系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互,这个时候使用线程池可以提升性能,尤其是需要创建大量声明周期很短暂的线程时。Java中的线程池是运用场景最多的并发框架。线程池类似于数据库连接池,在系统启动的时候即创建大量空闲的线程,可以将一个线程任务提交给线程池执行,当任务执行完后,线程不会死亡,而是再次返回线程池中成为空闲状态。使用线...

2018-06-01 13:03:01 110

空空如也

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

TA关注的人

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