
面试复习资料
Captain2200
这个作者很懒,什么都没留下…
展开
-
如何通过事务消息保障抢购业务的分布式一致性?
前言在电商领域,抢购和秒杀是非常普遍业务模式,抢购类业务在快速拉升用户流量并为消息者带来实惠的同时,也给电商系统带来了巨大考验。在高并发、大流量的冲击下,系统的性能和稳定性至关重要,任何一个环节出现故障,都会影响整体的购物体验,甚至造成电商系统的大面积崩溃。和电商领域抢购场景极为类似的业务模式还有很多,比如大型赛事和在线教育的报名系统,以及各类购票系统等。针对抢购类业务在技术上带来的挑战,业界有一系列解决方案,通过不同维度来提升系统的性能与稳定性,包括动静分离、定时上架、异步处理、令牌队列、多级缓存转载 2022-01-13 14:57:19 · 329 阅读 · 1 评论 -
面试复习计划
1、spring书本 架构和spring4.02.redis书复习3、zk书本复习4.jvm书复习和 jvm调优资料查看和实践;jvm调优案例查看和学习;博闻强记;5、mysql45讲 学习和查看6、kafka书本学习7、k8s书本自己学习8、多线程编程 复习9、分布式系统架构书本复习和查看10、netty 权威指南和netty实践要仔细看看11、...原创 2021-08-01 15:26:08 · 265 阅读 · 0 评论 -
如何解决分布式系统中的“幽灵复现”?-转载自 阿里技术 微信公众号
阿里妹导读:“幽灵复现”的问题本质属于分布式系统的“第三态”问题,即在网络系统里面,对于一个请求都有三种返回结果:成功,失败,超时未知。对于超时未知,服务端对请求命令的处理结果可以是成功或者失败,但必须是两者中之一,不能出现前后不一致情况。1、“幽灵复现”问题我们知道,当前业界有很多分布式一致性复制协议,比如Paxos,Raft,Zab及Paxos的变种协议,被广泛用于实现...转载 2020-03-12 10:06:32 · 403 阅读 · 0 评论 -
rpc核心实现和原理
RPC,即 Remote Procedure Call(远程过程调用),调用远程计算机上的服务,就像调用本地服务一样。 RPC 可以很好的解耦系统,如 WebService 就是一种基于 Http 协议的 RPC。这个 RPC 整体框架如下:8.1.3.2. 关键技术1. 服务发布与订阅:服务端使用 Zookeeper 注册服务地址,客户端从 Zookeeper 获取可用的服务地址。2...原创 2019-12-02 13:59:52 · 2887 阅读 · 0 评论 -
使用Redis bitmaps进行快速、简单、实时统计
转载自 https://www.cnblogs.com/fvsfvs123/p/4293203.htmlgetspool.com的重要统计数据是实时计算的。Redis的bitmap让我们可以实时的进行类似的统计,并且极其节省空间。在模拟1亿2千8百万用户的模拟环境下,在一台MacBookPro上,典型的统计如“日用户数”(dailyunique users) 的时间消耗小于50ms, 占用16...翻译 2018-12-05 19:42:46 · 1542 阅读 · 0 评论 -
Redis随笔Jedis、jedisCluster的使用
转载自 http://www.cnblogs.com/c-xiaohai/p/8376364.html1、Jedis客户端https://redis.io/clients2、Jedis源码包与使用介绍https://github.com/xetorthio/jedis3、项目中使用通过maven引入Jedis的依赖包<dependency> &...转载 2018-11-26 11:22:58 · 3407 阅读 · 0 评论 -
MyBatisPlus注入公共Sql问题
转载自 https://blog.youkuaiyun.com/synsdeng/article/details/78354462 同事新建项目运行CRUD时发现MyBatis的Mapper找不到对应方法,该方法为AutoMapper中的公共方法。 在此之前做了一次依赖及配置清理,怀疑是否不小心多删除了什么或是版本变化导致出了问题。把该项目还原就不会出现此问题,间接证明了此猜想。但另外一个...转载 2018-11-22 11:13:02 · 2036 阅读 · 0 评论 -
Java HttpClient使用小结
转载自 https://blog.youkuaiyun.com/bhq2010/article/details/9210007httpclient是apache的一个项目:http://hc.apache.org/文档比较完善:http://hc.apache.org/httpcomponents-client-ga/tutorial/html/这里就不啰嗦了,主要是在做demo的时候遇到的一些问...转载 2018-11-14 16:11:08 · 417 阅读 · 0 评论 -
RecursiveTask和RecursiveAction的使用 以及java 8 并行流和顺序流
转载自 https://blog.youkuaiyun.com/weixin_41404773/article/details/80733324什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解...转载 2018-11-12 17:22:09 · 841 阅读 · 0 评论 -
XSS跨站脚本攻击在Java开发中防范的方法
转载自 https://www.cnblogs.com/101key/p/3569217.html1. 防堵跨站漏洞,阻止攻击者利用在被攻击网站上发布跨站攻击语句不可以信任用户提交的任何内容,首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必须加以encode,避免不小心把html tag 弄出来。这一个层...转载 2018-11-01 10:40:28 · 850 阅读 · 0 评论 -
redis.mecmcached和mongoDB的区别
转载自 https://blog.youkuaiyun.com/cleble/article/details/78325527https://segmentfault.com/q/1010000002588088/a-1020000002589415https://www.cnblogs.com/94cool/p/3247307.htmlMemcachedMemcached的优点: Mem...转载 2018-09-02 23:31:08 · 215 阅读 · 0 评论 -
Java多线程学习之wait、notify/notifyAll 详解
转载自https://www.cnblogs.com/moongeek/p/7631447.html1、wait()、notify/notifyAll() 方法是Object的本地final方法,无法被重写。2、wait()使当前线程阻塞,前提是 必须先获得锁,一般配合synchronized 关键字使用,即,一般在synchronized 同步代码块里使用 wait()、notify/n...转载 2018-08-13 16:31:41 · 385 阅读 · 0 评论 -
步步深入:MySQL架构总览->查询执行流程->SQL解析顺序
转载自 https://www.cnblogs.com/annsshadow/p/5037667.html前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了。 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探讨一下其中的知识。 一、MySQL架构总览: 架构最好看图,再配上必要的说明文字。 ...转载 2018-07-05 10:20:43 · 285 阅读 · 0 评论 -
Java结束线程的三种方法
转载自https://blog.youkuaiyun.com/xu__cg/article/details/52831127线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方法是永远不会结束的。例如在程序中使用线程进行Socket监听请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循...转载 2018-06-28 14:20:38 · 15722 阅读 · 5 评论 -
【MySQL性能优化】MySQL分库分表与水平分割取模案例(三)
转载自 http://chenhaoxiang.cn/2018/02/05/2316/分表分库当项目比较大的时候,基本上都会进行分表分库的后面就讲讲什么时候需要分库,什么时候需要分表什么时候需要分库垂直分割垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的。当一个网站还在很小的时候,只有小量的人来开发和维护,各模块和表都在一起,当网...转载 2018-06-27 17:11:25 · 812 阅读 · 0 评论 -
【MySQL性能优化】数据库设计三大范式(二)
转载自http://chenhaoxiang.cn/2018/02/04/2158/数据库设计无非遵循的就是减少冗余量,第二点就是遵循三范式第一范式(1NF)确保每一列的原子性也就是如果每一列都满足是不可再分的最小数据单元,则满足第一范式比如id name sex address1 chx 0 湖南长沙在这里,其实地址这个字段是可以再拆分的,拆分成省份,市区。但是,在有的场景下,也可以不分。需要根...转载 2018-06-27 17:10:46 · 326 阅读 · 0 评论 -
【MySQL性能优化】概述与优化方面(一)
转载自 http://chenhaoxiang.cn/2018/02/04/1758/像sql语句如何进行调优,基本上在中高级程序员面试中都有可能会被问到。所以说,了解,或者学习一下如何进行sql调优是必要的。我会关于该sql调优文章出一个系列的博客。与大家一起学下去首先不具体进行介绍,先大体的概括一下,因为答案基本是死的,但是处理方式是活的MySQL性能优化/概述1.数据库的设计目前只要知道三范...转载 2018-06-27 17:10:02 · 190 阅读 · 0 评论 -
GC算法基础
转载自 http://www.wolfbe.com/detail/201609/364.html#摘要:总的来说基本所有的回收器都会关注如下两个方面:找出所有的存活对象;清理掉所有的其它对象——也就是那些被认为是废弃或无用的对象。原文出处:英文原文链接在深入GC算法的实现细节之前,我们最好先来了解下相关术语及背后的基本原理。不同回收器的实现细节各有不同,但总的来说基本所有的回收器都会关注如下两个方...转载 2018-06-26 16:55:36 · 165 阅读 · 0 评论 -
京东面试题:Java中 ++i 的操作是线程安全的么?为什么?如何使其线程安全呢?
转载自https://blog.youkuaiyun.com/fansunion/article/details/79625510相关文章你真的了解volatile关键字吗?http://blog.youkuaiyun.com/FansUnion/article/details/79495080面试题:为什么最后两行没有运行?http://blog.youkuaiyun.com/FansUnion/article/details/7...转载 2018-06-23 11:06:20 · 1571 阅读 · 2 评论 -
多线程编程--异步转同步之CountDownLatch
转载自https://blog.youkuaiyun.com/vic_fang/article/details/24653477———————————————————————————————————————————————————— 在日常开发中,我们经常会碰到这样的情况:一些异步请求我们需要等到接收到请求后再执行下一步动作,这时我们就需要把异步动作转为同步动作。 java中给我们提供了一...转载 2018-06-22 16:13:32 · 518 阅读 · 0 评论 -
LongCache机制与Long等值比较\\\\Integer 中的缓存类IntegerCache
转载自https://www.cnblogs.com/wellmaxwang/p/4422855.htmlhttps://blog.youkuaiyun.com/louistech/article/details/51062966一、背景引入近期在开发一个项目的后台时,当项目上线后出现了一个测试环境没有出现的问题:部分用户在提交信息时提示了该信息不属于当前用户。经过对代码的review,发现了出错的代码的开发...转载 2018-06-22 13:49:50 · 917 阅读 · 0 评论 -
java中产生死锁的原因及如何避免
转载自 https://blog.youkuaiyun.com/m0_38126177/article/details/785878451. Java中导致死锁的原因Java中死锁最简单的情况是,一个线程T1持有锁L1并且申请获得锁L2,而另一个线程T2持有锁L2并且申请获得锁L1,因为默认的锁申请操作都是阻塞的,所以线程T1和T2永远被阻塞了。导致了死锁。这是最容易理解也是最简单的死锁的形式。但是实际环境中...转载 2018-06-12 23:34:54 · 1179 阅读 · 0 评论 -
MySQL的学习--触发器
转载自https://www.cnblogs.com/CraryPrimitiveMan/p/4206942.htmlMySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。创建触发器在MySQL中,创建触发器语法如下:CREATE TRIGGER trigger_nametrigger_timet...转载 2018-05-09 10:23:43 · 207 阅读 · 0 评论 -
mysql 函数substring_index()
转载自 https://www.cnblogs.com/lijiageng/p/6511334.html函数: 1、从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my_content_t 2、从右开始截取字符串 right(str, length) 说明:ri...转载 2018-04-25 18:00:31 · 969 阅读 · 0 评论 -
Java分布式系统高并发解决方案
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步 1、同步和异步的区别和联系 所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或...转载 2018-04-17 15:08:55 · 3723 阅读 · 1 评论 -
Spring事务管理--嵌套事务详解
转载自 https://www.2cto.com/kf/201607/529762.html一、前言最近开发程序的时候,出现数据库自增id跳数字情况,无奈之下dba遍查操作日志,没有delete记录。才开始慢慢来查询事物问题。多久以来欠下的账,今天该还给spring事物。 希望大家有所收获。2016年07月19日22:32:38二、spring嵌套事物1、展示项目代码--简单测springboot...转载 2018-04-10 14:26:54 · 2554 阅读 · 0 评论 -
几张图轻松理解String.intern()
转载自 https://blog.youkuaiyun.com/soonfly/article/details/70147205在翻《深入理解Java虚拟机》的书时,又看到了2-7的 String.intern()返回引用的测试。 其实要搞明白String.intern(),我总结了下面几条规则: 一、new String都是在堆上创建字符串对象。当调用 intern() 方法时,编译器会将字符串添加到常量池...转载 2018-04-09 17:00:18 · 204 阅读 · 0 评论 -
Java 集合SortedSet&SortedMap讲解
转载自 https://blog.youkuaiyun.com/u010126792/article/details/62235628这次对java集合框架学习中的两个特殊的接口进行介绍:SortedSet和SortedMap,这两个接口提供排序操作,实现他们的子类都具有接口中定义的功能。Set和Map本身不具备排序功能,提供了SortedMap和SortedSet接口之后可以在提供排序方案的同时,增加更多的...转载 2018-04-09 11:12:52 · 584 阅读 · 0 评论 -
List、Set、Map的区别
转载自 https://www.cnblogs.com/IvesHe/p/6108933.html (图一)1.面试题:你说说collection里面有什么子类。(其实面试的时候听到这个问题的时候,你要知道,面试...转载 2018-04-09 11:00:38 · 129 阅读 · 0 评论 -
MySQL的or/in/union与索引优化
假设订单业务表结构为:order(oid, date, uid, status, money, time, …)其中:oid,订单ID,主键date,下单日期,有普通索引,管理后台经常按照date查询uid,用户ID,有普通索引,用户查询自己订单status,订单状态,有普通索引,管理后台经常按照status查询money/time,订单金额/时间,被查询字段,无索引…假设订单有三种状态:0已下单...原创 2018-04-04 15:08:29 · 298 阅读 · 0 评论 -
mysql优化学习笔记
优化sql的一般步骤通过show status了解各种sql的执行频率定位执行效率低的sql语句通过explain分析效率低的sql通过show profile分析sql通过trace分析优化器如何选择执行计划确定问题,采取措施优化索引优化措施mysql中使用索引的典型场景匹配全值,条件所有列都在索引中而且是等值匹配匹配值的范围查找,字段必须在索引中匹配最左前缀,复合索引只会根据最左列进行查找仅仅...原创 2018-04-04 15:07:23 · 224 阅读 · 0 评论 -
mysql分析sql语句基础工具 —— explain
转载自 https://segmentfault.com/a/1190000009724144 立即登录[笔记] mysql分析sql语句基础工具 —— explain mysql waterandair 2017年06月18日发布赞 | 0收藏 | 6402 次浏览分析sql语句 explainexplain (sql语句) G;分析结果:id sql语句编号如果是连接查询,表之间是平...转载 2018-04-04 15:06:47 · 2043 阅读 · 0 评论 -
MySQL InnoDB索引介绍及优化
转载自 https://segmentfault.com/a/1190000007445807 一、索引概念索引(index)翻译为一个目录,用于快速定位我们想要找的数据的位置。例如:我们把一个数据库比作一本书,而索引(index)就是书中的目录,此刻要找到书的某个感兴趣的内容,我们一般是不会整本书翻完再去确认该内容在哪里,而是通过书的目录,定位到该内容章节所在页数,最后直接翻到该页面我们来看看在...转载 2018-04-04 15:03:04 · 977 阅读 · 0 评论 -
MyISAM 和InnoDB 的区别.(存储,索引, 事务, 锁)
转载自 https://www.cnblogs.com/bincoding/p/5895706.html MyISAM类型的表强调的是性能,但是不支持事务、及外部键等高级功能。MySQL默认采用的是MyISAM。MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条SQL语句显示...原创 2018-04-04 14:45:42 · 259 阅读 · 0 评论 -
Mysql常用30种SQL查询语句优化方法
1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以...原创 2018-03-23 14:37:23 · 233 阅读 · 0 评论 -
MySQL(九)插入、更新和删除
常用的SQL语句,除了select用于查询,还有insert、update、delete等。 一、insertinsert:用来插入(或添加)行到数据库中,常见方式有以下几种:①插入完整的行;②插入行的一部分;③插入多行;④插入某些查询的结果;1、插入完整的行例如:insert into usertable values(null, 'zhangsan', '25...原创 2018-03-23 14:30:21 · 173 阅读 · 0 评论 -
MySQL(十)操纵表及全文本搜索
一、创建表MySQL不仅用于表数据操作,还可以用来执行数据库和表的所有操作,包括表本身的创建和处理。创建表一般有如下两种方式:①使用具有交互式创建和管理表的工具;②直接使用MySQL语句操纵表;1、表创建基础使用程序创建表,可使用SQL中的create table语句,需要以下两个信息:①新表的名字,在关键字create table后给出;②表列的名字和定义,用逗号分隔;例如:create tab...原创 2018-03-23 14:30:17 · 344 阅读 · 0 评论 -
MySQL(十一)视图及存储过程
一、视图视图是虚拟的表,它只包含使用时动态检索数据的查询。1、使用视图的好处①重用SQL语句;②简化复杂的SQL操作(可以方便的重用它而不必知道它的基本查询细节);③使用表的组成部分而不是整个表;④保护数据(可以给用户授予表的部分访问权限而不是整个表的访问权限);⑤更改数据格式和表示(视图可返回与底层表的表示和格式不同的数据)。PS:因为视图不包含数据,所以每次使用视图,都必须处理执行所需的任何一...原创 2018-03-23 14:30:13 · 286 阅读 · 0 评论 -
MySQLdump常用命令
MySQLdump常用mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql还原:系统命令行: MySQL -uroot -p123456 <f:\all.sql常见选项:--all-databases, -A: 备份所有数据库--databases, -B: 用于备份多个数据库,如果没有该选项,mysqldump把第一个名字参数作为数...原创 2018-03-23 13:48:27 · 236 阅读 · 0 评论 -
mysql max_allowed_packet查询和修改
http://www.2cto.com/database/201303/195830.htmlmysql根据配置文件会限制server接受的数据包大小。有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。查看目前配置 show VARIABLES like '%max_allowed_packet%';显示的结果为: +--------------------+-...原创 2018-03-23 11:58:27 · 960 阅读 · 0 评论