程序员
文章平均质量分 80
java思维导图666
这个作者很懒,什么都没留下…
展开
-
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 · 123 阅读 · 0 评论 -
你了解泛型通配符与上下界吗?
在进入主题之前, 我们先简单说一下 Java 的泛型(generics)。它是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。泛型最主要的应用是在JDK 5中的新集合类框架中。今天我们主要说如下内容: 泛型的背景 通配符以及上下界 泛型及通配符的使用场景 为什么使用泛型及...原创 2018-12-11 17:09:07 · 267 阅读 · 0 评论 -
MVC的概念
MVC是Modal View Controler的缩写,原业是用于桌面程序设计中的概念,由以下三个主要部分构成,三部分各司其职。Model :模型层(用于数据库打交道) View :视图层(用于展示内容给用户看) Controller :控制层(控制业务逻辑)MVC模型如下图所示: 使用MVC的目的是将Model和View的实现代码分离,从而使同一个程序可以使用不...原创 2018-12-11 17:04:40 · 1281 阅读 · 0 评论 -
从一份配置清单详解Nginx服务器配置
Nginx配置文件的整体结构 nginx配置文件结构从图中可以看出主要包含以下几大部分内容:1. 全局块该部分配置主要影响Nginx全局,通常包括下面几个部分:配置运行Nginx服务器用户(组) worker process数 Nginx进程PID存放路径 错误日志的存放路径 配置文件的引入2. events块该部分配置主要影响Nginx服务器与用户的网络...原创 2018-12-17 16:34:34 · 167 阅读 · 0 评论 -
一看你就懂,超详细 java 中的 ClassLoader 详解
ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载。想想也是的,一次性加载那么多j...原创 2018-12-07 16:11:52 · 203 阅读 · 0 评论 -
消息队列之异步消息基本概念以及ActiveMQ整合Spring常用用法介绍
一 简介(1)异步消息:所谓异步消息,跟RMI远程调用、webservice调用是类似的,异步消息也是用于应用程序之间的通信。但是它们之间的区别是:RMI、Hession/Burlap、webservice等远程调用机制是同步的。也就是说,当客户端调用远程方法时,客户端必须等到远程方法响应后才能继续执行 异步消息,顾名思义消息是异步发送,消息发送者不需要等待消息消费者处理消息,甚至不...原创 2018-12-13 21:20:29 · 299 阅读 · 0 评论 -
崛起的 Kafka
本文译自 Braedon Vickers 发布在 Movio 上的一篇文章,详尽的探讨了在微服务架构升级的过程中,如何使用 Kafka 将微服务之间耦合降到最低,同时能让整个系统在保证高可用的前提下做到高可扩展。随着微服务的流行,很多公司都在尝试将现有的系统进行架构升级。促成 Movio 公司架构改造的一项关键技术就是 Kafka 消息队列。Kafka 是一个开源的分布式消息队列,在可靠性和可...原创 2018-12-12 21:11:51 · 388 阅读 · 0 评论 -
Java 多线程 相关概念
前言本篇文章介绍一些多线程的相关的深入概念。理解后对于线程的安全性会有更深的理解。先说一个格言,摘自Java核心技术:如果向一个变量写入值,而这个变量接下来可能会被另一个线程读取;或者一个变量读值,而这个变量可能是之前被另一个线程写入的,此时必须同步。下面就是概念了。1. Monitor机制:Monitor其实是一种同步工具、同步机制,通常被描述成一个对象,主要特点是:同...转载 2018-12-03 15:27:33 · 110 阅读 · 0 评论 -
一个小时打造新闻 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 · 1843 阅读 · 0 评论 -
深入研究java.lang.ThreadLocal类
一、概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一...原创 2018-11-26 15:03:35 · 127 阅读 · 0 评论 -
开发笔记之详述 JAVA 构造函数和代码块本身及其执行细节
今天在JAVA的研究学习当中发现了构造函数这个神奇但是麻烦的东西, 他在给我感觉很像OC语言中的initWith..., 但是在细节上有很多的不同, 而代码块这个东西更是让我这个敲iOS的眼前一亮, 后来针对代码块这个东西的功能和执行的顺序深究了一番.首先说说构造函数开头说道这个东西给我的感觉很像initWith...甚至可以这么去理解, 但是你深究他的写法和功能你就会发现他跟initWi...原创 2018-11-25 14:48:02 · 136 阅读 · 0 评论 -
Java 并发——volatile
JVM内存管理概述 volatile 是轻量级的 synchronized。volatile 作用于共享变量,具备了“锁”的特性,这是为了确保共享变量能被准确和一致性地更新,这是 volatile 的可见性。同时,它也阉割了 scnchronized 的一写功能,比如:原子性。内存模型 图如篇首。 首先我们应该明白CPU是执行命令的场所,当需要处理数据时,CPU会从主内存(...原创 2018-11-21 17:25:25 · 312 阅读 · 0 评论 -
MySQL索引背后的数据结构及算法原理
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第...原创 2018-12-28 14:26:42 · 124 阅读 · 0 评论 -
网页图片加载优化方案
饿了么 App 中新零售项目主要是以图片展示为主,引导用户点击轮播广告栏或者店铺列表进入指定的商品页面,因此页面中包含了大量图片,如搜索框下面的轮播广告栏、中部的促销栏以及底部的店铺列表,这些区域中都有大量的展示图片。因此图片的加载速率直接影响页面的加载速度。下面将从图片加载存在的问题和原因、解决方案两个方面来阐述如何优化新零售图片的加载。本文所有数据及图片都是通过Charles模拟 25...原创 2019-08-16 17:12:46 · 1973 阅读 · 0 评论 -
通杀 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 评论 -
前端工程师为什么要学习编译原理?
前言普遍的观点认为,前端就是打好 HTML、CSS、JS 三大基础,深刻理解语义化标签,了解 N 种不同的布局方式,掌握语言的语法、特性、内置 API。再学习一些主流的前端框架,使用社区成熟的脚手架,即可快速搭建一个前端项目。胜任前端工作非常容易。再往深处学习,你会发现前端这个领域,总是有学不完的框架、工具、库,不断有新的轮子出现。技术推陈出新,版本快速迭代,但万变不离其宗。工具致力于流...原创 2019-08-20 17:14:44 · 264 阅读 · 0 评论 -
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 阅读 · 0 评论 -
Javascript 面试中经常被问到的三个问题!
本文不是讨论最新的 JavaScript 库、常见的开发实践或任何新的 ES6 函数。相反,在讨论 JavaScript 时,面试中通常会提到三件事。我自己也被问到这些问题,我的朋友们告诉我他们也被问到这些问题。然,这些并不是你在面试之前应该学习的唯一三件事 - 你可以通过更好地为即将到来的面试做准备 - 但面试官可能会问到下面是三个问题,来判断你对JavaScript语言的理解和的掌握...原创 2019-08-19 11:12:28 · 282 阅读 · 0 评论 -
200行代码构建一个区块链
区块链的基本概念非常简单:一个存储不断增加的有序记录的分布式数据库。然而,当我们谈论区块链时,我们很容易将其与区块链要解决的问题混淆,比如误解为流行的,基于区块链的,像比特币和以太坊一样的项目。术语“区块链”通常与交易,智能合约或加密货币等概念紧密相关。这必然使得理解区块链变成一项更艰巨的任务,特别是清楚地理解源代码。接下来我将介绍一个我用200行Javascript代码完成的超级简单的区块链...原创 2019-01-09 15:04:45 · 229 阅读 · 0 评论 -
深入理解消息中间件技术之RabbitMQ服务
什么叫消息队列?消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。...原创 2019-01-14 15:43:27 · 204 阅读 · 0 评论 -
说一说微信第三方平台的初步集成
微信火了这么久,这两周第一次从一个开发者的角度来研究微信的生态系统而不是应用本身。现在做国内的项目或者产品难免都需要集成微信,其实现在微信背后的支撑平台已经是非常繁杂的了:公众平台(订阅号、服务号、企业号、小程序) 开放平台(网页应用、移动应用、公众号第三方平台开发) 商户平台 (支付) 服务商平台(代支付)是不是感觉有点懵,这么多平台如何选择,还是需要根据自己系统的业务来看。我今...原创 2019-01-04 15:51:22 · 175 阅读 · 0 评论 -
Rabbitmq的性能测试
在做系统的整体性能测试时发现经常会卡在一个较低的QPS(单机低于100)数值,而且应用服务器的负载不高,检查MQ消费速率只有40左右。接着把目标放在消息发送端上,发现消息发送速率很低,大约40条/s。https://ke.qq.com/course/260263?flowToken=1006945 温馨提示,点击报名成功,可领取一份架构师资料, 而且可每天永久免费观看直播, 每天晚上20...原创 2018-12-29 15:13:49 · 1283 阅读 · 0 评论 -
震惊,程序员小编平时竟然上这种网站
前言程序员每天必不可少的就是与电脑打交道,经常逛的一些网站也相对固定,今天小编给大家分享一下自己平时经常逛的一些网站,不管是开发,还是了解行业资讯,这些网站必不可少。小编对他们简单分类了下,分别是:互联网资讯类、博客社区类、问答社区类、代码托管类、手机好用类、学习平台类、老司机发车类。下面推荐的网站排名不分先后。互联网资讯类互联网资讯类是平时上班前花半小时来浏览下最新的资讯,让自己了解...原创 2018-12-18 17:38:29 · 44745 阅读 · 0 评论 -
netty 源码分析之拆包器的奥秘
为什么要粘包拆包为什么要粘包首先你得了解一下TCP/IP协议,在用户数据量非常小的情况下,极端情况下,一个字节,该TCP数据包的有效载荷非常低,传递100字节的数据,需要100次TCP传送,100次ACK,在应用及时性要求不高的情况下,将这100个有效数据拼接成一个数据包,那会缩短到一个TCP数据包,以及一个ack,有效载荷提高了,带宽也节省了非极端情况,有可能两个数据包拼接成一个数据...原创 2018-11-21 17:19:19 · 132 阅读 · 0 评论 -
如何把 Java Web 应用放在 docker 容器中运行
本文适合 docker 零基础,且希望使用 docker 运行 Java Web 应用的人士。因为是傻瓜教程,这里没有使用 docker 的高级功能,本教程旨在用最简单方法实现目标。安装 docker Docker 的安装资源文件存放在Amazon,由于国内特殊的网络环境,安装时,会间歇性连接失败,所以直接从 docker 官网下载速度非常慢,建议使用国内的 Daocloud 提供的安装方案...原创 2018-11-15 17:13:07 · 921 阅读 · 0 评论 -
Java 进阶面试问题列表
面向对象编程的基本理念与核心设计思想 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling)。 继承(Inheritance)与聚合(Aggregation)的区别在哪里。 你是如何理解干净的代码(Clean Code)与技术负载(Technical Debt)的。 描述下常用的重构技...原创 2018-11-15 16:52:47 · 132 阅读 · 0 评论 -
JVM内存结构 VS Java内存模型 VS Java对象模型
Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和Java对象模型,这就是三个截然不同的概念,但是很多人容易弄混。可以这样说,很多高级开发甚至都搞不不清楚JVM内存结构、Java内存模型和Java对象模型这三者的概念及其间的区别。甚至我见过有些面试官自己也搞...原创 2018-10-29 15:10:08 · 95 阅读 · 0 评论 -
揭开Java 泛型类型擦除神秘面纱
泛型,一个孤独的守门者。大家可能会有疑问,我为什么叫做泛型是一个守门者。这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇。泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑的知识点,它让人迷惑的地方在于它的许多表现有点违反直觉。文章开始的地方,先给大家奉上一道经典的测试题。 List<String> l1 = n...原创 2018-10-21 16:15:38 · 125 阅读 · 0 评论 -
用好这张导图,你就能成为自明星!
世界上从不缺少牛人,尤其是稍纵即逝的牛人,红不过3秒。人人都想红,却不知道红的条件是什么?于是经常遇到烟花易冷,人走茶凉。实际上,要红又要牛,并不是叫你去喝红牛,而是你要学会设计与你匹配的自明星路线。如何设计路线?设计路线有什么节点?要遵循什么细节?先看此图,这是林三原创的自明星路线打造图。不怕你盗,就怕你盗了也不知道如何才能得到!林三哥的自明星阵法...原创 2018-10-22 19:27:05 · 393 阅读 · 0 评论 -
入门Webpack,看这篇就够了
写在前面的话阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过;如果你和十天前的我一样,对很多选项存在着疑惑,那花一段时间慢慢阅读本文,你的疑惑一定一个一个都会消失;如果你以前没怎么接触过Webpack,而你又你对webpack感兴趣,那么动手跟着本文中那个贯穿始终的例子写一次,写完以后你会发现你已明明白白的走进...原创 2018-10-17 19:35:18 · 103 阅读 · 0 评论 -
思维导图结构化梳理java
如果你还只是个什么都不懂的小白这一时期是你最困难的时候,你什么都不懂,想要入门学习java,你面临着两个选择,一自学,二报培训班,这是常见的两个选择。小白自学与报培训班.png自学需要很大的毅力,特别是对于一个没有任何基础,刚踏入一个全新的行业的朋友来说,如果你看不进书,那么看教学视频是很好的选择。报培训班也还可以,虽然学费贵了点。现在培训出来的混得也还不错。这一时期要学习...原创 2018-10-19 16:12:28 · 274 阅读 · 0 评论 -
JAVA安全框架Apache Shiro浅析
构建一个互联网应用,权限校验管理是很重要的安全措施,这其中主要包含:认证 - 用户身份识别,即登录 授权 - 访问控制 密码加密 - 加密敏感数据防止被偷窥 会话管理 - 与用户相关的时间敏感的状态信息Shiro对以上功能都进行了很好的支持,而且十分易于使用,且可运行在注入WEB, IOC, EJB等环境中。在Shiro中,有以下几个核心概念。1. Subject对于一个应用...原创 2018-10-09 19:22:11 · 262 阅读 · 0 评论 -
Spring思维导图,让Spring不再难懂(mvc篇)
生活就像海洋,只有意志坚强的人才能到达彼岸。已经很久没有发文章了呀,想必大家都挂念我了,哈哈。温故而知新,今天一起来复习一下spring mvc的内容吧。spring mvc简介与运行原理Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区...原创 2018-10-09 16:47:39 · 100 阅读 · 0 评论 -
ml与java代码相互装换的工具类
这是一个java操作xml文件的工具类,最大的亮点在于能够通过工具类直接生成xml同样层次结构的java代码,也就是说,只要你定义好了xml的模板,就能一键生成java代码。省下了自己再使用工具类写代码的时间,极大得提高了效率。首先来看看工具类代码package com.lfq.createXml;import java.io.ByteArrayInputStream;import...原创 2018-10-08 14:35:13 · 148 阅读 · 0 评论 -
SpringBoot+shiro整合学习之登录认证和权限控制
学习任务目标 用户必须要登陆之后才能访问定义链接,否则跳转到登录页面。 对链接进行权限控制,只有当当前登录用户有这个链接访问权限才可以访问,否则跳转到指定页面。 输入错误密码用户名或则用户被设置为静止登录,返回相应json串信息 导入shiro依赖包到pom.xml <!-- shiro权限控制框架 --><dependency> ...原创 2018-10-07 17:18:57 · 227 阅读 · 0 评论 -
Spring思维导图,让spring不再难懂(一)
Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是Spring仍然可以和其他的框架无缝整合。1、Spring特征.pngSping架构Spring框架是分模块存在,...原创 2018-10-06 20:56:00 · 1847 阅读 · 0 评论 -
这2个超强网站,可以代替你电脑中所有的工具软件
「云」的确是个好东西,信息储存在云端后,我们想用就随时拿来用,不想用存在云里也不占空间。那么,平时用的工具软件,能不能也具备「用完即走」的属性呢? 我在尝试十多个同类网站集合工具后,发现了这两个爆炸的云应用的工具集合网站:「nicetool」和「uzer.me」 nicetool nicetool 之所以强大,在于集合了几乎所有能用到的工具,而且不是一两件...原创 2018-10-11 17:44:04 · 718 阅读 · 0 评论 -
创造101论程序猿自我价值提升BATJ资深架构体系助力你飞跃瓶颈区
Java那句广为人知的口号“一次编写,处处运行”也体现出Java价值的关键所在—强大的Java虚拟机使得Java具有跨平台兼容性。目前流行的Java职业路径包括后端开发员、大数据开发员,嵌入式系统工程师或安卓开发员等等这一系列。我们几乎可以断定它在未来十年甚至更长时间内都不会过时。也就是说,无论是你当前所处的城市,还是遥远的某个地方,都会有大量的Java工作职位,那么只要技术能力足够,找到合适...原创 2018-10-30 16:38:06 · 170 阅读 · 0 评论 -
用Nginx+Redis实现session共享的均衡负载
前言大学三年多,也做个几个网站和APP后端,老是被人问到,如果用户多了服务器会不会挂,总是很尴尬的回答:“哈哈,我们的用户还少,到了服务器撑不住的时候,估计都上市了吧”。说是这么说,但是对于有强迫症的我,这个问题一直回响在我脑海里,久久不散啊。如今大四下了,终于有时间来深入了解一下这个问题了。貌似解决大访问量的方案有硬件和软件两个大类的方法,硬件一般比较贵,学生党就不去考虑了。还是想想怎么...原创 2018-11-01 15:51:40 · 349 阅读 · 0 评论 -
javascript array js 缓存算法,数组去重、数组随机抽取、字母串转数字,数字转字符串
前言 因为平时在写代码的过程中,有些算法会经常重复写,比如数组去重、数组抽取随机值等!虽然这些不是很难的逻辑,但是每次刚开始遇到需求的时候,还是需要琢磨一些时间才能想出来,所以此文档把这些常见算法的思想记录下来,以便下次再遇到的时候不会手脚无措了! 这篇文档不考虑es6等语法,也不考虑Array自带的一些过滤方法! 数组去重 我们这里不考虑数组上的一个自带的过滤算法,比如...原创 2018-11-15 14:47:07 · 391 阅读 · 1 评论