
mysql
文章平均质量分 85
Java烂猪皮V
专注于分享Java后端架构核心技术知识点以及最新面试宝典。
展开
-
【32】面试官常问:为什么 MySQL 中的 utf8 并不是真正的 UTF-8 编码?
主要是目前网络上几乎所有的文章都把 “utf8” 当成是真正的 UTF-8,包括之前我写的文章以及做的项目(捂脸);因此希望更多的朋友能够看到这篇文章。相信还有很多跟我在同一条船上的人,这是必然的。所以,大家以后再搭建MySQL、MariaDB数据库时,记得将数据库相应编码都改为utf8mb4。终有一天,接你班儿的程序员发或你的领导现这个问题后,一定会在心里默默感到你的技术牛B。为帮助开发者们提升面试技能、有机会入职BATJ等大厂公司,特别制作了这个专辑——这一次整体放出。原创 2023-05-28 14:29:49 · 87 阅读 · 0 评论 -
深入理解JVM虚拟机
自动内存管理机制Java虚拟机原理 所谓虚拟机,就是一台虚拟的机器。他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机, 大名鼎鼎的Visual Box、Vmare就属于系统虚拟机,他们完全是对物理计算的仿真,提供了一个可以运行完整操作系统的软件平台。 程序虚拟机典型代码就是Java虚拟机,它专门为执行单个计算程序而计算,在Java虚拟机中执行的指令我们成为Jav...原创 2018-06-27 21:53:48 · 407 阅读 · 0 评论 -
深入理解JAVA中的NIO
前言:传统的 IO 流还是有很多缺陷的,尤其它的阻塞性加上磁盘读写本来就慢,会导致 CPU 使用效率大大降低。所以,jdk 1.4 发布了 NIO 包,NIO 的文件读写设计颠覆了传统 IO 的设计,采用通道+缓存区使得新式的 IO 操作直接面向缓存区,并且是非阻塞的,对于效率的提升真不是一点两点,我们一起来看看。通道 Channel我们说过,NIO 的核心就是通道和缓存区,所以它们的工作模式是这...原创 2018-07-09 21:51:20 · 412 阅读 · 0 评论 -
最近刷爆朋友圈的一道面试题
前言:最近在网上有一道面试题掀起了劲爆的浪潮,好多家公司都模仿提问了这么一道面试题,而且好多人也都在讨论这道面试题要是自己回答的话该怎么回答!这道题也是在个网站上刷爆了。面试题 如果不用Spring,你打算怎么做开发工作?就是这么一道spring面试题,要是面试官问你,你该如何回答?答案各有千秋,接下来看看网友们是怎么说的。开源动弹知乎度娘问答社区看了这些截图,相信你们自己心中也有了属于自己的答案...原创 2018-07-02 23:07:18 · 1347 阅读 · 0 评论 -
Netty原理分析
1. Netty简介Netty是一个高性能、异步事件驱动的NIO框架,基于JAVA NIO提供的API实现。它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。 作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通...原创 2018-06-26 22:12:11 · 333 阅读 · 0 评论 -
基于Java NIO框架区别对比
一.通信框架流行基于Java NIO通信框架有Mina、Netty、Grizzly等。接下来说下它们之间的对比。二.它们的出身1、Mina出身于开源界的大牛Apache组织;2、Netty出身于商业开源大亨Jboss;3、Grizzly则出身于土鳖Sun公司。三.它们的设计理念1、Mina Mina(Multipurpose Infrastructure for Network Applicati...原创 2018-06-26 22:04:41 · 475 阅读 · 0 评论 -
15个顶级Java多线程面试题及答案
在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。1. 现在有T1、T2、T3三个线程...原创 2018-06-26 19:42:17 · 403 阅读 · 0 评论 -
SpringBoot使用RabbitMQ消息队列
RabbitMQ简介AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语...原创 2018-06-19 22:57:11 · 460 阅读 · 0 评论 -
阿里消息中间件之JMS实践(ActiveMQ)
1、消息中间件作用作为一个消息传递中间层,方便信息发送者和接受者通信。2、消息中间件好处1、信息解耦:信息发送方和接收方通过中间件通信,不需要直接通信。2、异步:消息被中间件处理,发送方和接收方都不用直接通信。3、安全可靠:中间件做的还是很可靠地。。4、横向扩展:支持多信息发送方和接收方5、顺序保证:中间件功能。3、常见消息中间件JMS(Java Message Service):java平台中面...原创 2018-06-19 22:54:37 · 484 阅读 · 0 评论 -
阿里分布式服务框架Dubbo的架构总结
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。总...原创 2018-06-25 21:38:11 · 362 阅读 · 0 评论 -
淘宝面试回来,想对程序员们谈谈
起因:因为我是一个不管做什么事情都喜欢进行总结的一个人。所以对于在上周去淘宝面试的经历,现在面试回来总结,我想对所有程序员们谈谈。之前我是在一家外企工作的,待遇还算不错,自己也做了快五年了,因为考虑到家庭的原因,所以在前面几周辞职回了杭州。在朋友听到我辞职回来后,好多关系比较好的同事朋友也向我推荐了好多家企业。如:蚂蚁金服;支付宝;蘑菇街;阿里云;淘宝;挖财等~~~~这几家公司我都去面试了,情况还...原创 2018-06-30 17:45:51 · 1101 阅读 · 0 评论 -
谈谈为什么需要服务治理(Dubbo)
服务治理主要针对于当前分布式架构下多服务、微服务等。服务是分布式系统下的一个不大不小的部分,有了服务的组成,整个系统才能活起来。随着业务的增长,服务不能一味地随之增长,需要管理、治理。没有服务治理的分布式系统不一定会失败,但是随着业务的增长,这个系统一定会很痛苦。服务治理的目标服务治理严格意义上应该划分为三个阶段,包含了服务的整个生命周期。其中服务设计期主要针对于服务的设计期、开发期,而服务运行期...原创 2018-06-09 17:21:51 · 1697 阅读 · 0 评论 -
深度解读Tomcat中的NIO模型
一、I/O复用模型解读Tomcat的NIO是基于I/O复用来实现的。对这点一定要清楚,不然我们的讨论就不在一个逻辑线上。下面这张图学习过I/O模型知识的一般都见过,出自《UNIX网络编程》,I/O模型一共有阻塞式I/O,非阻塞式I/O,I/O复用(select/poll/epoll),信号驱动式I/O和异步I/O。这篇文章讲的是I/O复用。这里先来说下用户态和内核态,直白来讲,如果线程执行的是用户...原创 2018-06-09 17:16:31 · 523 阅读 · 0 评论 -
Nginx 架构初探
引言:众所周知,Nginx 服务器是一个高性能的 Web 和反向代理服务器。Nginx 在激烈的 Web 服务器竞争中依旧保持良好的发展势头,一度成为 Web 服务器市场的后期之秀,这一切跟 Nginx 的架构设计是分不开的。一. Nginx 模块化设计高度模块化的设计是 Nginx 的架构基础。Nginx 服务器被分解为多个模块,每个模块就是一个功能模块,只负责自身的功能,模块之间严格遵循“高内...原创 2018-06-09 16:41:31 · 806 阅读 · 0 评论 -
如何优雅的使用MQ-详述功能场景
消息队列(MQ)是一种不同应用程序之间(跨进程)的通信方法。应用程序通过写入和检索出入列队的数据(消息)来通信,而无需通过专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用(Remote Procedure Call. RPC)的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的...原创 2018-06-09 16:18:23 · 410 阅读 · 0 评论 -
深入理解springMVC
什么是spring MVCSpring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),...原创 2018-07-03 22:01:05 · 490 阅读 · 0 评论 -
通往架构师路上的经验总结
前言:我先介绍一下我的新同事,据说他是美国篮球运动员詹姆斯的死忠粉,公司好多同事都这么叫他James,有8年开发经验的架构师,之前在AL待过,我一听说是AL的,啧啧啧........,就有种莫名的种亲切感,就立马找新同事聊了起来。我们在空余的时间聊了很久,也聊了好多。毕竟之前都在AL待过,感觉话题还是有的。在聊天过程中,我们也聊到了他为什么离开AL,也聊到了他在成为架构师的道路上的辛酸历程,聊过后...原创 2018-07-10 22:13:00 · 368 阅读 · 0 评论 -
MySQL逻辑架构及性能优化原理
MySQL逻辑架构如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。MySQL逻辑架构整体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理、授权认证、安全等功能均在这一层处理。MySQL大多数核心服务均在中间这一层,包括查询解析、分析、优化、缓存、内置函数(比如:时间、数学、加密等函数)...原创 2019-01-16 17:19:11 · 819 阅读 · 0 评论 -
Redis集群
集群原理一个系统建立集群主要需要解决两个:数据同步问题和集群容错问题。Naive方案一个简单粗暴的方案是部署多台一模一样的Redis服务,再用负载均衡来分摊压力以及监控服务状态。这种方案的优势在于容错简单,只要有一台存活,整个集群就仍然可用。但是它的问题在于保证这些Redis服务的数据一致时,会导致大量数据同步操作,反而影响性能和稳定性。Redis集群方案Redis集群方案基于...原创 2018-11-26 20:42:30 · 326 阅读 · 0 评论 -
从程序员的角度深入理解MySQL
数据库基本原理我对DB的理解第一,数据库的组成:存储 + 实例不必多说,数据当然需要存储;存储了还不够,显然需要提供程序对存储的操作进行封装,对外提供增删改查的API,即实例。一个存储,可以对应多个实例,这将提高这个存储的负载能力以及高可用;多个存储可以分布在不同的机房、地域,将实现容灾。第二,按Block or Page读取数据用大腿想也知道,数据库不可能按行读取数据...原创 2018-11-16 21:37:59 · 358 阅读 · 1 评论 -
关于MySQL 通用查询日志和慢查询日志分析
MySQL中的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志。1)通用查询日志:记录建立的客户端连接和执行的语句。2)慢查询日志:记录所有执行时间超过longquerytime秒的所有查询或者不使用索引的查询(1)通用查询日志在学习通用日志查询时,需要知道两个数据库中的常用命令:1) show varia...原创 2018-10-10 21:49:28 · 350 阅读 · 0 评论 -
分库分表后如何部署上线?
引言我们先来讲一个段子面试官:“有并发的经验没?”应聘者:“有一点。”面试官:“那你们为了处理并发,做了哪些优化?”应聘者:“前后端分离啊,限流啊,分库分表啊。。”面试官:"谈谈分库分表吧?"应聘者:“bala。bala。bala。。”面试官心理活动:这个仁兄讲的怎么这么像网上的博客抄的,容我再问问。面试官:“你们分库分表后,如何部署上线的?”应聘者:“这...原创 2018-09-20 21:09:17 · 390 阅读 · 0 评论 -
金色九月,那些曾经难倒你的面试真题
前言 九月旺季已经来临,曾经何时,在17年的九月,经过再三考虑,我决定跳出一份干了四年且比较安逸的开发工作,当时下定决心,选择跳槽。最后跟着诸多农码一起涌进了一段为期两个月的面试高峰期。但是在选择跳出后,好多人都问我:“阿光,现在不是做的好好的么,怎么突然间就选择离职了,再说了,现在外面的工作也不好找啊,而且在这里薪资也还不错,为啥要走?”当时,面对这样的问题,我只用了几个字给回复他...原创 2018-09-06 22:11:00 · 356 阅读 · 0 评论 -
让面试官颤抖的Tomcat系统架构系列!
前言俗话说,站在巨人的肩膀上看世界,一般学习的时候也是先总览一下整体,然后逐个部分个个击破,最后形成思路,了解具体细节,Tomcat的结构很复杂,但是 Tomcat 非常的模块化,找到了 Tomcat最核心的模块,问题才可以游刃而解,了解了Tomcat的整体架构对以后深入了解Tomcat来说至关重要!一、Tomcat顶层架构先上一张Tomcat的顶层结构图(图A),如下: ...转载 2018-09-06 13:52:58 · 302 阅读 · 0 评论 -
你完全没了解过的日志异步落库
前言在互联网设计架构过程中,日志异步落库,俨然已经是高并发环节中不可缺少的一环。为什么说是高并发环节中不可缺少的呢? 原因在于,如果直接用mq进行日志落库的时候,低并发下,生产端生产数据,然后由消费端异步落库,是没有什么问题的,而且性能也都是异常的好,估计tp99应该都在1ms以内。但是一旦并发增长起来,慢慢的你就发现生产端的tp99一直在增长,从1ms,变为2ms,4ms,直至send ti...原创 2018-08-27 22:18:50 · 2065 阅读 · 0 评论 -
轻松理解 Java HashMap 和 ConcurrentHashMap
前言Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据。本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后面的 ConcurrentHashMap。HashMap众所周知 HashMap 底层是基于 数组 + 链表 组成的,不过在 jdk1.7 和 1.8 中具...原创 2018-08-23 14:03:11 · 3112 阅读 · 2 评论 -
RabbitMQ 可靠投递
RabbitMQ 可靠投递标签: RabbitMQ shovel-plugin ConfirmCallback RabbitMQ消息投递背景 confirmCallback 确认模式 returnCallback 未投递到 queue 退回模式 shovel-plugin 跨机房可靠投递背景在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。R...转载 2018-08-16 19:45:18 · 782 阅读 · 0 评论 -
深入理解阿里分布式消息中间件
什么是分布式消息中间件什么是分布式消息中间件?对于分布式消息中间件,首先要了解两个基础的概念,即什么是分布式系统,什么又是中间件。 分布式系统:“A distributed system is one in which components located at networked computers communicate and coordinate their actions only by...原创 2018-07-06 21:54:45 · 1773 阅读 · 0 评论 -
深入理解分布式系统kafka知识点
Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务。它主要用于处理活跃的流式数据。在大数据系统中,常常会碰到一个问题,整个大数据是由各个子系统组成,数据需要在各个子系统中高性能,低延迟的不停流转。传统的企业消息系统并不是非常适合大规模的数据处理。为了能在同时搞定在线应用(消息)和...原创 2018-07-05 22:26:19 · 347 阅读 · 0 评论 -
Spring核心——Bean的定义与控制
在前面两篇介绍Sring核心与设计模式的文章中,分别介绍了Ioc容器和Bean的依赖关系。如果阅读过前2文就会知道,Spring的整个运转机制就是围绕着IoC容器以及Bean展开的。IoC就是一个篮子,所有的Bean都向里面扔。除了提供篮子功能创建并存放Bean之外,IoC还要负责管理Bean与Bean之间的关系——依赖注入。之前也提到Bean是Spring核心容器的最小工作单元,Spring一些...原创 2018-06-28 21:44:28 · 505 阅读 · 0 评论 -
使用并发工具实现 RPC 调用流量控制
前言RPC 服务中,每个服务的容量都是有限的,即资源有限,只能承受住给定的网络请求,所以,在设计 RPC 框架的时候,一定要考虑流量控制这个问题。而 Java 中,实现流量控制有很多中方式,今天说 2 种。Semaphore 实现流控代码:代码中,我们模拟了 100 个线程,每个线程无限调用 RPC。同时使用另一个定时任务,定时更新 Semaphore 可用许可为 100。客户端线程调用时,会尝试...原创 2018-06-08 21:43:11 · 802 阅读 · 0 评论 -
分布式服务Dubbo的前世今生
SOA与服务治理SOA(面向服务的体系结构)概念由来已久,在10多年前便开始进入到我们广大软件开发者的视线中。SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、Web Service技术之后的自然延伸。服务治理,也称为SOA治理,是指用来管理SOA的采用和实现的过程。以下是在2006年时IBM对于服务治理要点的总结...原创 2018-06-01 22:32:52 · 1745 阅读 · 0 评论 -
Redis 的 5 个常见应用场景
前言Redis 是一个强大的内存型存储,具有丰富的数据结构,使其可以应用于很多方面,包括作为数据库、缓存、消息队列等等。如果你的印象中Redis只是一个 key-value 存储,那就错过了Redis很多强大的功能,下面就是实际应用场景中5个最普遍的案例。1. 全页面缓存如果你使用的是服务器端内容渲染,你又不想为每个请求重新渲染每个页面,就可以使用 Redis 把常被请求的内容缓存起来,能够大大的...原创 2018-06-08 17:41:47 · 10596 阅读 · 0 评论 -
大话后端开发的奇淫技巧大集合
Hi,大家好,很荣幸有这个机会可以通过写博文的方式,把这些年在后端开发过程中总结沉淀下来的经验和设计思路分享出来模块化设计根据业务场景,将业务抽离成独立模块,对外通过接口提供服务,减少系统复杂度和耦合度,实现可复用,易维护,易拓展项目中实践例子:Before:在返还购APP里有个【我的红包】的功能,用户的红包数据来自多个业务,如:邀请新用户注册领取100元红包,大促活动双倍红包,等各种活动红包,多...原创 2018-06-03 22:04:36 · 481 阅读 · 0 评论 -
MyCAT源码分析——SQL ON MongoDB
1. 概述可能你在看到这个标题会小小的吃惊,MyCAT 能使用 MongoDB 做数据节点。是的,没错,确实可以。吼吼吼,让我们开启这段神奇的“旅途”。本文主要分成四部分:总体流程,让你有个整体的认识查询操作插入操作彩蛋,原创 2018-06-03 14:55:11 · 414 阅读 · 0 评论 -
CentOS 6.5搭建ELK环境ElasticSearch+Kibana+Logstash
ELK工作流程多个独立的Agent(Shipper)负责收集不同来源的数据,一个中心Agent(Indexer)负责汇总和分析数据,在中心Agent前的Broker(使用Redis实现)作为缓冲区,中心Agent后的ElasticSearch用于存储和搜索数据,前端的Kibana提供丰富的图表展示。Shipper表示日志收集,使用LogStash收集各种来源的日志数据,可以是系统日志、文件、Red...原创 2018-05-21 22:45:20 · 562 阅读 · 0 评论 -
深度解析大型分布式电商网站演变过程以及构架部署解决方案
前言:本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。对大型分布式网站架构有很好的参考价值。一、大型分布式网站架构技术1、大型网站的特点用户多,分布广泛大流量,高并发海量数据,服务高可用安全环境恶劣,易受网络攻击功能多,变更快,频繁发布从小到大,渐进发展以用户为中心免费服务,付...原创 2018-05-06 22:52:40 · 412 阅读 · 0 评论 -
Java之——多线程中的Synchronized和volatile与面试题
1、Synchronized关键字1、方法中的变量不存在非线程安全问题,都是线程安全的。2、两个线程访问同一个对象中的同步方法时,一定是线程安全的。3、关键字synchronized取得的锁都是对象锁,而不是把一段代码或方法(函数)当作锁,哪个线程先执行synchronized关键字的方法,哪个线程就持有该方法所属对象的锁Lock,那么其他线程只能呈等待状态,前提是多个线程访问的是同一个对象。但如...原创 2018-05-17 23:17:03 · 614 阅读 · 0 评论 -
五分钟阅读阿里巴巴架构师如何使用微服务框架搭建电商平台全过程
本文你将学到什么?本文将以原理+实战的方式,首先对“微服务”相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统。这套微服务框架能干啥?这套系统搭建完之后,那可就厉害了:微服务架构 。你的整个应用程序将会被拆分成一个个功能独立的子系统,独立运行,系统与系统之间通过RPC接口通信。这样这些系统之间的耦合度大大降低,你的系统将非常容易扩展,团队协作效率提升了N个档次。这种架构通过眼下流...原创 2018-05-10 22:37:08 · 478 阅读 · 0 评论 -
基于Java NIO框架区别对比
一.通信框架流行基于Java NIO通信框架有Mina、Netty、Grizzly等。接下来说下它们之间的对比。二.它们的出身1、Mina出身于开源界的大牛Apache组织;2、Netty出身于商业开源大亨Jboss;3、Grizzly则出身于土鳖Sun公司。三.它们的设计理念1、Mina Mina(Multipurpose Infrastructure for Network Applicati...原创 2018-05-16 23:00:42 · 329 阅读 · 0 评论