自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring思维导图,让spring不再难懂(一)

Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是Spring仍然可以和其他的框架无缝整合。1、Spring特征.pngSping架构Spring框架是分模块存在,...

2018-10-06 20:56:00 1846

原创 Java 动态代理及 RPC 框架介绍

所谓动态代理,指的是语言提供的一种语法,能够将对对象中不同方法的调用重定向到一个统一的处理函数中来。python重写__getattr__函数能够做到这一点,就连世界上最好的语言也提供称为魔术方法的__call。这种语法除了能更好的实现动态代理外,还是RPC框架实现原理的一部分。1. 动态代理是什么动态代理提供一种抽象,能够将对象中不同方法的调用重定向到一个统一的处理函数,做自定义的逻...

2018-09-04 15:50:51 472

原创 2018 年 Java 程序员必读的十本书

大家好,如果你是一名 Java 程序员,正在考虑 2018 年读什么书,那么这篇文章正适合你。本文中,我将分享 10 本有关 Java、Spring 及其他相关技术的书籍。 这里面既有适合经验丰富的 Java 程序员的书,它们介绍了架构、云开发、微服务、Java 9、Spring 5,以及用于提高生产效率的 Kotlin。同时也照顾到了初级的、缺乏经验的、或正打算 2018 年开始入门 Java ...

2018-08-22 14:31:45 443

原创 0个习惯助你成为一名优秀的程序员

当谈到编程时,很多人应该都有听过10x程序员的说法。 据说一个10x程序员的效率大约是其他程序员的10倍。这是一个有争议的话题,无论你选择相信10x程序员,还是认为这十分可笑,下面的10个习惯可以在一定程度上助你成为一名势不可挡的优秀程序员。1、积极使用搜索工具作为开发人员,你需要了解如何利用搜索解惑,查看其他人对你正在研究的主题所讨论的话题和内容,并将学到的知识应用于手头的项目。...

2018-08-21 11:11:30 253

原创 手把手教你撸一个简易的 webpack

背景随着前端复杂度的不断提升,诞生出很多打包工具,比如最先的grunt,gulp。到后来的webpack和Parcel。但是目前很多脚手架工具,比如vue-cli已经帮我们集成了一些构建工具的使用。有的时候我们可能并不知道其内部的实现原理。其实了解这些工具的工作方式可以帮助我们更好理解和使用这些工具,也方便我们在项目开发中应用。一些知识点在我们开始造轮子前,我们需要对一些知识点做一些储...

2019-08-20 17:50:22 293

原创 前端工程师为什么要学习编译原理?

前言普遍的观点认为,前端就是打好 HTML、CSS、JS 三大基础,深刻理解语义化标签,了解 N 种不同的布局方式,掌握语言的语法、特性、内置 API。再学习一些主流的前端框架,使用社区成熟的脚手架,即可快速搭建一个前端项目。胜任前端工作非常容易。再往深处学习,你会发现前端这个领域,总是有学不完的框架、工具、库,不断有新的轮子出现。技术推陈出新,版本快速迭代,但万变不离其宗。工具致力于流...

2019-08-20 17:14:44 264

原创 8个问题看你是否真的懂 JS

接下来,来看看几个问题,你也可以试试想想,然后作答。问题1:浏览器控制台上会打印什么?var a = 10;function foo() { console.log(a); // ?? var a = 20;}foo();问题2:如果我们使用 let 或 const 代替 var,输出是否相同var a = 10;function foo() { ...

2019-08-20 16:33:59 199

原创 Javascript 面试中经常被问到的三个问题!

本文不是讨论最新的 JavaScript 库、常见的开发实践或任何新的 ES6 函数。相反,在讨论 JavaScript 时,面试中通常会提到三件事。我自己也被问到这些问题,我的朋友们告诉我他们也被问到这些问题。然,这些并不是你在面试之前应该学习的唯一三件事 - 你可以通过更好地为即将到来的面试做准备 - 但面试官可能会问到下面是三个问题,来判断你对JavaScript语言的理解和的掌握...

2019-08-19 11:12:28 282

原创 网页图片加载优化方案

饿了么 App 中新零售项目主要是以图片展示为主,引导用户点击轮播广告栏或者店铺列表进入指定的商品页面,因此页面中包含了大量图片,如搜索框下面的轮播广告栏、中部的促销栏以及底部的店铺列表,这些区域中都有大量的展示图片。因此图片的加载速率直接影响页面的加载速度。下面将从图片加载存在的问题和原因、解决方案两个方面来阐述如何优化新零售图片的加载。本文所有数据及图片都是通过Charles模拟 25...

2019-08-16 17:12:46 1972

原创 50行代码的MVVM,感受闭包的艺术

我们先看一下运行结果name 和 age 被响应式的渲染出来,在 2s 后我们修改了 name 的值,同样能在页面正确更新。我们来看一下最小化的 MVVM 的源码class Vue{ constructor(opt){ this.opt = opt this.observe(opt.data) let root = document.querySelector(op...

2019-08-13 10:39:52 122

原创 通杀 Event Loop 面试题03-JS单线程, event loop彻底搞懂代码执行顺序 浏览器工作原理

单线程的含义浏览器是 multi-process,一个浏览器只有一个 Browser Process,负责管理 Tabs、协调其他 process 和 Renderer process 存至 memory 内的 Bitmap 绘制到页面上的(pixel);在 Chrome中,一个 Tab 对应一个 Renderer Process,Renderer process 是 multi-thre...

2019-08-12 11:34:12 452 1

原创 ESLint里的规则教会我,无规矩 不编程

编程风格要统一编程风格这个东西,说实在的对于刚加入团队的新成员来说还是很难让人完全适应的。因为每人的编程风格都不同,完全是各有千秋的既视感啊到了新公司后团队中的每个人也都有各自一套的编程习惯,撸起代码来是挡也挡不住啊,什么都别问,老夫就是干,哈哈,每个coder的代码风格都大相径庭不过话说回来,在团队开发中,所有的代码看起来风格一致是极其重要的,所以我们也需要一些代码检查工具,从JSL...

2019-08-07 17:11:21 1140

原创 深入理解消息中间件技术之RabbitMQ服务

什么叫消息队列?消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。...

2019-01-14 15:43:27 204

原创 200行代码构建一个区块链

区块链的基本概念非常简单:一个存储不断增加的有序记录的分布式数据库。然而,当我们谈论区块链时,我们很容易将其与区块链要解决的问题混淆,比如误解为流行的,基于区块链的,像比特币和以太坊一样的项目。术语“区块链”通常与交易,智能合约或加密货币等概念紧密相关。这必然使得理解区块链变成一项更艰巨的任务,特别是清楚地理解源代码。接下来我将介绍一个我用200行Javascript代码完成的超级简单的区块链...

2019-01-09 15:04:45 229

原创 感谢区块链,分权和数据安全 - 是未来

如今,一切都在数字化。 我们曾经存储在相册中的照片通常不再打印; 他们存储在在线相册。 而且很少有人再用实际的纸质计划者来追踪他们的生活。 相反,每日提醒和约会都存储在数字日历中。更重要的是,很少有人维护手写分类帐来跟踪他们的银行账户。有网站和应用程序为他们工作,并允许轻松访问这些数据。与此同时,多个行业的公司都将数字化存储所有文件和数据。数字网络从财务记录到人事档案都存储公司的内部数据。数...

2019-01-07 16:31:35 212

原创 说一说微信第三方平台的初步集成

微信火了这么久,这两周第一次从一个开发者的角度来研究微信的生态系统而不是应用本身。现在做国内的项目或者产品难免都需要集成微信,其实现在微信背后的支撑平台已经是非常繁杂的了:公众平台(订阅号、服务号、企业号、小程序) 开放平台(网页应用、移动应用、公众号第三方平台开发) 商户平台 (支付) 服务商平台(代支付)是不是感觉有点懵,这么多平台如何选择,还是需要根据自己系统的业务来看。我今...

2019-01-04 15:51:22 175

原创 Rabbitmq的性能测试

在做系统的整体性能测试时发现经常会卡在一个较低的QPS(单机低于100)数值,而且应用服务器的负载不高,检查MQ消费速率只有40左右。接着把目标放在消息发送端上,发现消息发送速率很低,大约40条/s。https://ke.qq.com/course/260263?flowToken=1006945 温馨提示,点击报名成功,可领取一份架构师资料, 而且可每天永久免费观看直播, 每天晚上20...

2018-12-29 15:13:49 1282

原创 MySQL索引背后的数据结构及算法原理

摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第...

2018-12-28 14:26:42 124

原创 震惊,程序员小编平时竟然上这种网站

前言程序员每天必不可少的就是与电脑打交道,经常逛的一些网站也相对固定,今天小编给大家分享一下自己平时经常逛的一些网站,不管是开发,还是了解行业资讯,这些网站必不可少。小编对他们简单分类了下,分别是:互联网资讯类、博客社区类、问答社区类、代码托管类、手机好用类、学习平台类、老司机发车类。下面推荐的网站排名不分先后。互联网资讯类互联网资讯类是平时上班前花半小时来浏览下最新的资讯,让自己了解...

2018-12-18 17:38:29 44726

原创 Spring Boot干货系列:配置文件解析

正文Spring Boot使用了一个全局的配置文件application.properties,放在src/main/resources目录下或者类路径的/config下。Sping Boot的全局配置文件的作用是对一些默认配置的配置值进行修改。接下来,让我们一起来解开配置文件的面纱。注:如果你工程没有这个application.properties,那就在src/main/java...

2018-12-18 17:18:16 107

原创 从一份配置清单详解Nginx服务器配置

Nginx配置文件的整体结构 nginx配置文件结构从图中可以看出主要包含以下几大部分内容:1. 全局块该部分配置主要影响Nginx全局,通常包括下面几个部分:配置运行Nginx服务器用户(组) worker process数 Nginx进程PID存放路径 错误日志的存放路径 配置文件的引入2. events块该部分配置主要影响Nginx服务器与用户的网络...

2018-12-17 16:34:34 167

原创 消息队列之异步消息基本概念以及ActiveMQ整合Spring常用用法介绍

一 简介(1)异步消息:所谓异步消息,跟RMI远程调用、webservice调用是类似的,异步消息也是用于应用程序之间的通信。但是它们之间的区别是:RMI、Hession/Burlap、webservice等远程调用机制是同步的。也就是说,当客户端调用远程方法时,客户端必须等到远程方法响应后才能继续执行 异步消息,顾名思义消息是异步发送,消息发送者不需要等待消息消费者处理消息,甚至不...

2018-12-13 21:20:29 299

原创 崛起的 Kafka

本文译自 Braedon Vickers 发布在 Movio 上的一篇文章,详尽的探讨了在微服务架构升级的过程中,如何使用 Kafka 将微服务之间耦合降到最低,同时能让整个系统在保证高可用的前提下做到高可扩展。随着微服务的流行,很多公司都在尝试将现有的系统进行架构升级。促成 Movio 公司架构改造的一项关键技术就是 Kafka 消息队列。Kafka 是一个开源的分布式消息队列,在可靠性和可...

2018-12-12 21:11:51 388

原创 你了解泛型通配符与上下界吗?

在进入主题之前, 我们先简单说一下 Java 的泛型(generics)。它是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。泛型最主要的应用是在JDK 5中的新集合类框架中。今天我们主要说如下内容: 泛型的背景 通配符以及上下界 泛型及通配符的使用场景 为什么使用泛型及...

2018-12-11 17:09:07 267

原创 MVC的概念

MVC是Modal View Controler的缩写,原业是用于桌面程序设计中的概念,由以下三个主要部分构成,三部分各司其职。Model :模型层(用于数据库打交道) View :视图层(用于展示内容给用户看) Controller :控制层(控制业务逻辑)MVC模型如下图所示:   使用MVC的目的是将Model和View的实现代码分离,从而使同一个程序可以使用不...

2018-12-11 17:04:40 1280

原创 一看你就懂,超详细 java 中的 ClassLoader 详解

ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载。想想也是的,一次性加载那么多j...

2018-12-07 16:11:52 202

转载 Java 多线程 相关概念

前言本篇文章介绍一些多线程的相关的深入概念。理解后对于线程的安全性会有更深的理解。先说一个格言,摘自Java核心技术:如果向一个变量写入值,而这个变量接下来可能会被另一个线程读取;或者一个变量读值,而这个变量可能是之前被另一个线程写入的,此时必须同步。下面就是概念了。1. Monitor机制:Monitor其实是一种同步工具、同步机制,通常被描述成一个对象,主要特点是:同...

2018-12-03 15:27:33 110

原创 一个小时打造新闻 APP

使用框架:rxjava和retrofit以及一个开源扩展的recyclerview和注解框架butterknife集体依赖如下:dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:esp...

2018-11-29 17:11:46 1842

原创 深入研究java.lang.ThreadLocal类

一、概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一...

2018-11-26 15:03:35 127

原创 开发笔记之详述 JAVA 构造函数和代码块本身及其执行细节

今天在JAVA的研究学习当中发现了构造函数这个神奇但是麻烦的东西, 他在给我感觉很像OC语言中的initWith..., 但是在细节上有很多的不同, 而代码块这个东西更是让我这个敲iOS的眼前一亮, 后来针对代码块这个东西的功能和执行的顺序深究了一番.首先说说构造函数开头说道这个东西给我的感觉很像initWith...甚至可以这么去理解, 但是你深究他的写法和功能你就会发现他跟initWi...

2018-11-25 14:48:02 136

原创 Java 并发——volatile

JVM内存管理概述  volatile 是轻量级的 synchronized。volatile 作用于共享变量,具备了“锁”的特性,这是为了确保共享变量能被准确和一致性地更新,这是 volatile 的可见性。同时,它也阉割了 scnchronized 的一写功能,比如:原子性。内存模型  图如篇首。  首先我们应该明白CPU是执行命令的场所,当需要处理数据时,CPU会从主内存(...

2018-11-21 17:25:25 311

原创 netty 源码分析之拆包器的奥秘

为什么要粘包拆包为什么要粘包首先你得了解一下TCP/IP协议,在用户数据量非常小的情况下,极端情况下,一个字节,该TCP数据包的有效载荷非常低,传递100字节的数据,需要100次TCP传送,100次ACK,在应用及时性要求不高的情况下,将这100个有效数据拼接成一个数据包,那会缩短到一个TCP数据包,以及一个ack,有效载荷提高了,带宽也节省了非极端情况,有可能两个数据包拼接成一个数据...

2018-11-21 17:19:19 132

原创 如何把 Java Web 应用放在 docker 容器中运行

本文适合 docker 零基础,且希望使用 docker 运行 Java Web 应用的人士。因为是傻瓜教程,这里没有使用 docker 的高级功能,本教程旨在用最简单方法实现目标。安装 docker Docker 的安装资源文件存放在Amazon,由于国内特殊的网络环境,安装时,会间歇性连接失败,所以直接从 docker 官网下载速度非常慢,建议使用国内的 Daocloud 提供的安装方案...

2018-11-15 17:13:07 920

原创 Java 进阶面试问题列表

面向对象编程的基本理念与核心设计思想 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling)。 继承(Inheritance)与聚合(Aggregation)的区别在哪里。 你是如何理解干净的代码(Clean Code)与技术负载(Technical Debt)的。 描述下常用的重构技...

2018-11-15 16:52:47 132

原创 javascript array js 缓存算法,数组去重、数组随机抽取、字母串转数字,数字转字符串

前言 因为平时在写代码的过程中,有些算法会经常重复写,比如数组去重、数组抽取随机值等!虽然这些不是很难的逻辑,但是每次刚开始遇到需求的时候,还是需要琢磨一些时间才能想出来,所以此文档把这些常见算法的思想记录下来,以便下次再遇到的时候不会手脚无措了! 这篇文档不考虑es6等语法,也不考虑Array自带的一些过滤方法! 数组去重 我们这里不考虑数组上的一个自带的过滤算法,比如...

2018-11-15 14:47:07 391 1

原创 弹幕,是怎样练成的?

天下视频唯弹幕不破说起弹幕看过视频的都不会陌生,那满屏充满着飘逸评论的效果,让人如痴如醉,无法自拔最近也是因为在学习关于canvas的知识,所以今天就想和大家分享一个关于弹幕的故事那么究竟弹幕是怎样炼成的呢? 我们且往下看(look)看什么?看效果  效果图已经呈现给各位了,那么是不是有点小激动呢?是的,感慨万分,思绪宁乱,无语凝噎无论以后我们的工作中是否会遇到...

2018-11-13 16:50:32 350

原创 上班划水神器:一个可以在控制台玩斗地主项目!

这是什么?这是Ratel,它可以在命令行内进行简单的斗地主游戏,来张图体验一下:   怎么开始玩?Ratel分客户端和服务端,你可以在本地启动一个客户端让小伙伴们的客户端都连接你的服务器进行游戏,又或者可以直接连接作者公网服务器进行游戏,IP 39.105.65.8 Port 1024,不过作为玩家,我们最看重的还是客户端的使用!你可以将Ratel项目Clone到本...

2018-11-13 15:58:04 325

原创 Java笔试题——2的100次方,不用大数据类(Biginteger)来解答

Java笔试题——2的100次方,不用大数据类(Biginteger)来解答package cn.hncu.offer;public class Two100 {public static void main(String[] args) {int a[]=new int[1];//初始化数组a[0]=1;//为第一个设置初始化值int n=100;for(int i=0;i&lt...

2018-11-11 19:36:28 686

原创 深入理解Java类加载机制(一)

1 前言:在上一篇文章一文让你明白 Java 字节码中,我们了解了java字节码的解析过程,那么在接下来的内容中,我们来了解一下类的加载机制。2 题外话Java的核心是什么?当然是JVM了,所以说了解并熟悉JVM对于我们理解Java语言非常重要,不管你是做Java还是Android,熟悉JVM是我们每个Java、Android开发者必不可少的技能。如果你现在觉得Android的开发到...

2018-11-11 17:09:48 123

原创 一文让你明白 Java 字节码

前言也许你写了无数行的代码,也许你能非常溜的使用高级语言,但是你未必了解那些高级语言的执行过程。例如大行其道的Java。Java号称是一门“一次编译到处运行”的语言,但是我们对这句话的理解深度又有多少呢?从我们写的java文件到通过编译器编译成java字节码文件(也就是.class文件),这个过程是java编译过程;而我们的java虚拟机执行的就是字节码文件。不论该字节码文件来自何方,由哪...

2018-11-11 16:06:42 200

空空如也

空空如也

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

TA关注的人

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