java思维导图

其他

从入门到精通-Nginx,图文并茂、负载均衡、动静分离、虚拟主机 附案例源码

xxx:其他http请求相关的文件配置成功后,再次查看Nginx解压目录,发现其中多出一个文件Makefile。后面的编译就是依靠该文件进行的。编译安装这是两个命令,make:为编译命令;make
2022年7月6日
其他

太赞了,SpringBoot+Vue前后端分离完整入门教程!

最近很多小伙伴都在学习前后端分离的知识,苦于找不到好的基础资料,于是我翻箱倒柜,找了一份好的Vue入门视频和笔记pdf,然后更是亲自录制了SpringBoot
2020年6月13日
其他

分享一套SpringBoot开发博客系统源码,含完整开发文档和视频!速保存!

项目名称:eblog摘要:eblog是一个基于Springboot2.1.2开发的博客学习项目,为了让项目融合更多的知识点,达到学习目的,编写了详细的从0到1开发文档。主要学习包括:自定义Freemarker标签,使用shiro+redis完成了会话共享,redis的zset结构完成本周热议排行榜,t-io+websocket完成即时消息通知和群聊,rabbitmq+elasticsearch完成博客内容搜索引擎等。值得学习的地方很多!项目说明:本博客是学习过程中搭建的项目,为了融合更多知识点,让博客看起来更加高大上,使用了多个框架组合,有些也是企业级项目中常用的解决方案。技术选型:核心框架:Springboot
2020年5月14日
其他

极简入门,Shiro的认证与授权流程解析

小Hub领读:接下来的几天,我们开讲Shiro,从入门到分析、集成、单点登录整合等几篇。今天我们先来认识一下Shiro吧~其实Shiro框架并不难,我梳理了一下,你只需要学会以下内容基本就足够了:登陆、授权流程shiro过滤器链整合Springboot、redis做共享会话结合xxl-sso实现单点登录接下来我会分为几篇文章分别去介绍,这篇我们先来了解一下shiro的一些基础知识,以及登录授权逻辑。Shiro简介在Web系统中我们经常要涉及到权限问题,例如不同角色的人登录系统,他操作的功能、按钮、菜单是各不相同的,这就是所谓的权限。而构建一个互联网应用,权限校验管理是很重要的安全措施,这其中主要包含:用户认证
2020年5月8日
其他

Github上最值得学习的100个Java开源项目,涵盖各种技术栈!

你有多久没好好学习一个开源项目了?你是否经常为找不到好的开源项目而烦恼?你是否为不知道怎么入手去看一个开源项目?你是否想看别人的项目学习笔记?你是否想跟着别人的项目搭建过程一步一步跟着做项目?今天给大家介绍一个网站,为了让更多Java的开发者能更容易找到值得学习的开源项目,我们搭建了这个Java开源学习网站,宗旨是:梳理Java知识,共享开源项目笔记。来瞧一瞧:网站截图中可以看出,点击筛选条件组合之后,再点击搜索就会搜索出对应的开源项目。举个例子,比如我想学习一个技术栈为SpirngBoot+Shiro的前后端分离项目,目前能搜索出2个相关的结果,其中讲解的内容为:1、SpringBoot
2020年4月25日
其他

2020年最新的常问企业面试题大全以及答案

金三银四马上就到了,很多同学准备跳槽,那么现在就可以开始多看看面试题啦,我在网上找了两份比较有全的面试题黑马程序员的Java面试宝典Beta5.0.pdf真的非常全面,从初级到高级,框架、数据库、并发知识、还有多企业的面试题整理!2019年多家公司整理的350道Java面试题手册.pdf这一份主要是中高级的面试题,看完那个18K以上木有问题呀!需要的同学扫一扫下方的二维码,关注后回复【面试题】即可获取这两份PDF文档!关注后回复【面试题】领取
2020年3月7日
其他

2020年最新的常问企业面试题大全以及答案

金三银四马上就到了,很多同学准备跳槽,那么现在就可以开始多看看面试题啦,我在网上找了两份比较有全的面试题黑马程序员的Java面试宝典Beta5.0.pdf真的非常全面,从初级到高级,框架、数据库、并发知识、还有多企业的面试题整理!2019年多家公司整理的350道Java面试题手册.pdf这一份主要是中高级的面试题,看完那个18K以上木有问题呀!需要的同学扫一扫下方的二维码,关注后回复【面试题】即可获取这两份PDF文档!关注后回复【面试题】领取
2020年3月5日
其他

2020年最新的常问企业面试题大全以及答案

金三银四马上就到了,很多同学准备跳槽,那么现在就可以开始多看看面试题啦,我在网上找了两份比较有全的面试题黑马程序员的Java面试宝典Beta5.0.pdf真的非常全面,从初级到高级,框架、数据库、并发知识、还有多企业的面试题整理!2019年多家公司整理的350道Java面试题手册.pdf这一份主要是中高级的面试题,看完那个18K以上木有问题呀!需要的同学扫一扫下方的二维码,关注后回复【面试题】即可获取这两份PDF文档!关注后回复【面试题】领取
2020年2月29日
其他

2020年最新的常问企业面试题大全以及答案

金三银四马上就到了,很多同学准备跳槽,那么现在就可以开始多看看面试题啦,我在网上找了两份比较有全的面试题黑马程序员的Java面试宝典Beta5.0.pdf真的非常全面,从初级到高级,框架、数据库、并发知识、还有多企业的面试题整理!2019年多家公司整理的350道Java面试题手册.pdf这一份主要是中高级的面试题,看完那个18K以上木有问题呀!需要的同学扫一扫下方的二维码,关注后回复【面试题】即可获取这两份PDF文档!关注后回复【面试题】领取
2020年2月16日
其他

2019年最新的常问企业面试题大全以及答案

金三银四马上就到了,很多同学准备跳槽,那么现在就可以开始多看看面试题啦,我在网上找了两份比较有全的面试题黑马程序员的Java面试宝典Beta5.0.pdf真的非常全面,从初级到高级,框架、数据库、并发知识、还有多企业的面试题整理!2019年多家公司整理的350道Java面试题手册.pdf这一份主要是中高级的面试题,看完那个18K以上木有问题呀!需要的同学扫一扫下方的二维码,关注后回复【面试题】即可获取这两份PDF文档!关注后回复【面试题】领取
2020年2月8日
其他

掌握XSS与CSFR,我也可以是个黑客!

今天呀,我想当一名黑客,去黑别人的网站!我有两三技能,独乐不如众乐乐,今天我也把这个几个攻击手段教给你,咱们一起搞事情去。首先我们来了解一下攻击手段,也是比较常见的两种攻击手段了:CSRFXSSCSRF全称:Cross-site
2019年9月22日
其他

不仅会用@Async,我把源码也梳理了一遍(上)

说起异步化,很多人会想起异步线程、消息队列等,消息队列不是文章的主题,今天我们来聊聊spring对异步化的支持@EnableAsync&@Async。我会分为以下几个步骤去说明,首先说说用法,然后再从源码层分析@Async的底层原理,同学们准备好了吗?@Async用法想要开启异步化,我们就必须要用用到@EnableAsync注解,这又是我们之前给大家说个的@EnableXXX的模块,大家可以回顾一下:《导图梳理springboot手动、自动装配,让springboot不再难懂》,配置类中开启了@EnableAsync之后,@Async的注解就开始起作用了,我们先来做个简单的测试:配置类com.example.demo.config.AsyncConfig@EnableAsync@Configurationpublic
2019年9月20日
其他

Springboot异常处理只会@ControllerAdvice+@ExceptionHandler?还远远不够!

当系统出现异常时候,或404,或500,默认返回的错误页面通常非常简陋,用户也看不懂,这时候我们想通过一些手段,提示用户访问的资源不存在,或者请稍后再试。同时有个统一的异常处理机制可以提高我们系统的健壮性,微服务化之后系统之间的调用结果会影响到整个服务的可用性。如果被调用方出现异常没有返回统一的异常处理结果,很容易会调用方疑惑,然后滚大整个异常,这时候你看到整个服务之间都在报错,这不是我们想看到的~那么基于springboot,我们有多少种异常处理方式呢?静态处理这是一种比较偷懒也是最简单的处理方式,直接放置一个静态的页面。我们静态看到有些项目直接就返回一个大大的404图片作为异常的处理显示,其实就是这里说到的静态处理方式。我们来看下错误页面的存放位置:可以看到,我是存放在了static目录的error文件夹下,新建了一个404.html用于处理404错误。既然是静态页面,那么就不能使用动态渲染,所以通常静态的异常页面都会写得比较死,要么就直接就是一个404图片。静态页面中如果写了中文,这是显示的内容容易乱码,我们只需在配置文件application.properties中添加以下encoding代码:spring.http.encoding.force=true我们先来访问一个不存在的路径http://localhost:8080/xxxx,看下效果:未处理前:静态处理后:我们的404.html页面起作用啦,如果不存在404.html,或者出现401异常的时候,系统就会自动匹配到4xx.html页面,所以这个4xx相当于可以通配处理所有的客户端错误:4xx。类似的500.html和5xx.html处理服务器错误:5xx。好,上面的静态处理异常我们已经可以懂了,那么你知道它的原理吗?其实在springboot项目启动的时候,会去加载异常处理的默认配置ErrorMvcAutoConfiguration,而在ErrorMvcAutoConfiguration里面,有个默认的异常处理控制器BasicErrorController(org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController),我们在这构造方法中打个端点,可以看到异常处理器errorViewResolvers的resourceProperties中就默认初始化好了所有可以存放静态异常页面的地方。然后你再把端点打在ModelAndView
2019年9月18日
自由知乎 自由微博
其他

导图梳理springboot手动、自动装配,让springboot不再难懂

@ConditionalOnSystemProperty表示需要满足当前系统是win10系统@Configuration@ConditionalOnSystemProperty(value
2019年9月17日
其他

堪称神器的 Chrome 插件

图标来打开插件窗口,通过该窗口使用者可以轻松了解网站的技术信息离线版下载地址:https://u14797164.pipipan.com/fs/14797164-23742148824、Google
2019年9月14日
其他

老板说网站慢,我们总结了三大阶段提升性能!

李平https://www.cnblogs.com/leefreeman/p/3998757.html前言在前一篇随笔《大型网站系统架构的演化》中,介绍了大型网站的演化过程,期间穿插了一些技术和手段,我们可以从中看出一个大型网站的轮廓,但想要掌握设计开发维护大型网站的技术,需要我们一步一步去研究实践。所以我打算写一个系列,从理论到实践讲述大型网站的点滴,这也是一个共同学习的过程,希望自己能坚持下去。系列大概会分为两部分,理论和实践,理论部分尽量通俗易懂,也要讲一些细节。实践部分会抽取一些技术做实践,将方法、解决问题过程分享出来。本文将讲述大型网站中一个重要的要素,性能。什么是性能有人说性能就是访问速度快慢,这是最直观的说法,也是用户的真实体验。一个用户从输入网址到按下回车键,看到网页的快慢,这就是性能。对于我们来说,需要去挖掘这个过程,因为这决定我们怎么去做性能优化。这中间发生了什么用户访问网站的整个流程:用户输入网站域名,通过
2019年9月13日
其他

单元测试不止Junit,会MockMvc才是高手!

.andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON))
2019年9月12日
其他

6张时序图!谈谈Tomcat请求处理流程

款开发者工具60天,他学了20个主流的框架、中间件,解读了5个开源项目五分钟搞清楚MySQL事务隔离级别(java思维导图)长按关注,每天java一下,成就架构师我就知道你在看!
2019年9月10日
其他

使用binlog2sql做数据恢复的简单示例

飘扬的红领巾https://www.cnblogs.com/leefreeman/p/7680953.html有时我们会遇到操作人员误删或者误更新数据的情况,这时我们迫切希望把原来的数据还原回来,今天我们介绍一个简单的工具来方便的实现此功能。前提条件在实现数据恢复之前,需要我们的
2019年9月8日
其他

InnoDB一棵B+树可以存放多少行数据?

飘扬的红领巾https://www.cnblogs.com/leefreeman/p/8315844.html?from=singlemessage&isappinstalled=0一个问题?InnoDB
2019年9月5日
其他

五分钟搞清楚MySQL事务隔离级别

作者:伞Uhttps://www.jianshu.com/p/4e3edbedb9a8好久没碰数据库了,只是想起自己当时在搞数据库的时候在事务隔离级别这块老是卡,似懂非懂的。现在想把这块整理出来,尽量用最简洁的语言描述出来,供新人参考。首先创建一个表
2019年9月4日
其他

盘点阿里巴巴 15 款开发者工具

进阶教程:https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced^[3]^获取方式:(免费)
2019年9月3日
其他

如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目

windows,https://store.docker.com/editions/community/docker-ce-desktop-windows,下载完毕后进入安装界面,
2019年9月2日
其他

别死写代码,这 25 条比涨工资都重要

来源:https://www.cnblogs.com/cldmxw/p/10510890.html如果每个程序开发人员都只是周而复始地写代码,想必编程的工作就会让很多程序员发狂。那么如何在枯燥的工作中寻找乐趣,我认为我们要对工作保持激情和兴奋感、始终学习的态度,还需要掌握一些实用高效的编程技巧,这样对于提升工作乐趣和效率大有裨益。今天小编就跟大家分享一下
2019年9月2日
其他

有 Bug 不会调试 ? 这篇文章很详细 !

按钮,就不会显示其它类库的方法了,否则这里会有一大堆的方法。Variables:在变量区可以查看当前断点之前的当前方法内的变量。Watches:查看变量,可以将
2019年9月1日
其他

你知道短URL服务是怎么设计的吗?

的各项功能解决了哪些问题?使用jwt技术实现系统间的单点登录提升10倍生产力:IDEA远程一键部署SpringBoot到DockerInteger、new
2019年8月30日
其他

使用jwt技术实现系统间的单点登录

----我是吕一明,这是我的第四期进阶训练营,评论还不错,欢迎参加。----作者:君之见https://blog.csdn.net/jewelry008/article/details/72771489单点登录(single
2019年8月25日
其他

Redis 的各项功能解决了哪些问题?

来源:www.cnblogs.com/linianhui先看一下Redis是一个什么东西官方简介解释到:Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。同时支持strings,lists,hashes,sets,sorted
2019年8月24日
其他

Integer、new Integer() 和 int 比较的面试题

作者:chenxiangxianghttps://www.cnblogs.com/cxxjohnson/p/10504840.html基本概念的区分:1、Integer
2019年8月21日
其他

提升10倍生产力:IDEA远程一键部署SpringBoot到Docker

作者:陶章好juejin.im/post/5d026212f265da1b8608828bIDEA是Java开发利器,springboot是Java生态中最流行的微服务框架,docker是时下最火的容器技术,那么它们结合在一起会产生什么化学反应呢?一、开发前准备1.Docker安装可以参考:https://docs.docker.com/install/2.配置docker远程连接端口
2019年8月19日
其他

包装严重的IT行业,作为面试官,我是如何甄别应聘者的包装程度

作者:Coobyhttps://my.oschina.net/hooker/blog/3014656前言上到职场干将下到职场萌新,都会接触到包装简历这个词语。当你简历投到心仪的公司,公司内负责求职的工作人员是如何甄别简历的包装程度的?Coody老师根据自己的经验写下了这篇文章,谁都不是天才,包装无可厚非,切勿对号入座!正文在互联网极速膨胀的社会背景下,各行各业涌入互联网的IT民工日益增大。早在2016年,我司发布了Java、Ios工程师的招聘信息,就Java工程师单个岗位而言,日收简历近200份,Ios日收简历近一千份。没错,这就是当年培训机构对Ios工程师这个岗位发起的市场讨伐。而随着近几年的发展,市场供大于求现象日益严重。人员摸底成为用人单位对人才考核的重大难题。笔者初次与求职者以面试的形式进行沟通是2015年6月。由于当时笔者从业时间短,经验不够丰富,错过了一些优秀的求职者。三年后的,今天,笔者再次因公司规模扩大而深入与求职者进行沟通。1.
2019年8月17日
其他

Java数据结构-ArrayList最细致的解析笔记

ArrayList是一个类,这个类有一个数组参数elementData,ArrayList集合中的元素正是保存在这个数组中,它继承了数组查询的高性能,参考第3篇。ArrayList还封装了很多方法,便于对数组中的数据进行操作处理,其中就包括上一篇说的扩容,建议先理解第3篇数组。扩容原理在eclipse中调试以下代码,如下设置四个断点,打开调试视图。public
2019年8月16日
其他

缓存穿透、缓存击穿和缓存雪崩实践

----我们使用缓存的主要目是提升查询速度和保护数据库等稀缺资源不被占满。而缓存最常见的问题是缓存穿透、击穿和雪崩,在高并发下这三种情况都会有大量请求落到数据库,导致数据库资源占满,引起数据库故障。今天我主要分享一下layering-cache缓存框架在这个三个问题上的实践方案。概念缓存穿透在高并发下,查询一个不存在的值时,缓存不会被命中,导致大量请求直接落到数据库上,如活动系统里面查询一个不存在的活动。缓存击穿在高并发下,对一个特定的值进行查询,但是这个时候缓存正好过期了,缓存没有命中,导致大量请求直接落到数据库上,如活动系统里面查询活动信息,但是在活动进行过程中活动缓存突然过期了。缓存雪崩在高并发下,大量的缓存key在同一时间失效,导致大量的请求落到数据库上,如活动系统里面同时进行着非常多的活动,但是在某个时间点所有的活动缓存全部过期。常见解决方案直接缓存NULL值限流缓存预热分级缓存缓存永远不过期layering-cache实践在layering-cache里面结合了缓存NULL值,缓存预热,限流、分级缓存和间接的实现"永不过期"等几种方案来应对缓存穿透、击穿和雪崩问题。直接缓存NULL值应对缓存穿透最有效的方法是直接缓存NULL值,但是缓存NULL的时间不能太长,否则NULL数据长时间得不到更新,也不能太短,否则达不到防止缓存击穿的效果。我在layering-cache对NULL值进行了特殊处理,一级缓存不允许存NULL值,二级缓存可以配置缓存是否允许存NULL值,如果配置可以允许存NULL值,框架还支持配置缓存非空值和NULL值之间的过期时间倍率,这使得我们能精准的控制每一个缓存的NULL值过期时间,控制粒度非常细。当NULL缓存过期我还可以使用限流,缓存预热等手段来防止穿透。示例:@Cacheable(value
2019年8月15日
其他

Soul高可用网关:配置缓存三大同步策略

----文章作者:shuaiqiyuhttps://my.oschina.net/shuaiqiyu/blog/3083784前言网关是流量请求的入口,在微服务架构中承担了非常重要的角色,网关高可用的重要性不言而喻。在使用网关的过程中,为了满足业务诉求,经常需要变更配置,比如流控规则、路由规则等等。因此,网关动态配置是保障网关高可用的重要因素。那么,Soul
2019年8月13日
其他

60天,他学了20个主流的框架、中间件,解读了5个开源项目,终拿到了高薪!

某天中午休息时间,小五和小丽在公司吃着外卖~你说现在框架这么多,怎么学得完呀?学完还用不上,一段时间之后又忘记了!学习知识,得先学会梳理!很多人到了一定阶段之后就不知道该学什么,其实是因为他不知道自己已经学会了什么,又有什么还没学会。说白了就是少了学习方向和知识梳理!那怎么办?就拿springboot来说,你已经学会了啥,该学啥,我给你梳理一下:那么springboot接下来的学习过程就是按照导图来学习和不断完善导图分支的过程。这样梳理知识点,一目了然,便于记忆和复习。框架学习完之后还有重要的一点就是一定要用到项目中去,开源项目就是很好的学习资源。比如学习renren-fast项目,我们可以用导图去梳理所有重点模块:当然,想学什么就去找对应的开源项目,比如想学服务间鉴权原理我们去学cloud-platform项目,想学Api数据传输安全和数据范围限定去学guns项目等...开源项目真是很好的学习资料。是的,其实框架的学习比较简单,有了springboot,框架间集成和运用变得简单。当然我们还要去学习框架的底层源码,这才能更加深入框架。再结合开源项目,我们可以快速积累更多项目经验!------我给你梳理了一下,现在主流的框架主要有这些,学完框架之后再自学点并发知识,基本拿个15k到20k没啥问题!(一张关于课程的思维导图)哇,内容这么多,我得学到什么时候噢其实不会,我给你介绍一个性价比超高的java训练营,跟着老师直播走,学得很快!!【训练营简介】60天Java进阶训练营,主要聚焦在「主流java技术与热门开源项目」上。综合上三期学员的反馈,本期着手加强了技术在实际项目中的运用。因此,训练营改变了学习方式,通过课堂直播学习新技术、并讲解开源项目的实际运用;课后更是有2个版本的课程作业综合运用学习(springboot版本和springCloud版本),力求让学员能理解技术原理和懂得实际运用场景。我们如下安排:每周4节视频直播课程,快速掌握技术框架原理,并结合开源项目掌握综合运用;每月定期进行课程单元测试,巩固学习内容;不定期进行以解读开源项目为主题的写作评比活动开源项目将会成为我们掌握、串联技术运用的最好学习方式。又浅及深的开源项目解读,带你一步步学会运用,并能单独完成课程作业。训练营的目的很简单:通过直播、解读、测试、实战等方式帮助你理解、掌握知识,增长项目经验的同时,升级你的项目阅读能力、开发能力。【讲师介绍】吕一明。高级java工程师,公众号java思维导图的号主,拥有5年的互联网开发经验。喜欢专研和分享技术,擅长使用思维导图总结梳理java知识、擅长解读开源项目。【课程大纲】思维导图梳理知识、网站发展历程梳理利用思维导图快速学习主流框架学会思维导图解读开源项目,积累经验网站从零到分布式架构演变与知识体系介绍持久层框架mybatis篇与mybatis-plus使用mybatis的核心原理mybatis底层源码分析与讲解mybatis导图图解梳理分析增强工具mybatis-plus,解决单表增删改查spring
2019年8月10日
其他

万万没想到,JVM内存结构的面试题可以问的这么难?

文章转自公众号:Hollis。作者Hollis在我的博客中,之前有很多文章介绍过JVM内存结构,相信很多看多我文章的朋友对这部分知识都有一定的了解了。那么,请大家尝试着回答一下以下问题:1、JVM管理的内存结构是怎样的?2、不同的虚拟机在实现运行时内存的时候有什么区别?3、运行时数据区中哪些区域是线程共享的?哪些是独享的?4、除了JVM运行时内存以外,还有什么区域可以用吗?5、堆和栈的区别是什么?6、Java中的数组是存储在堆上还是栈上的?7、Java中的对象创建有多少种方式?8、Java中对象创建的过程是怎么样的?9、Java中的对象一定在堆上分配内存吗?10、如何获取堆和栈的dump文件?以上10道题,如果您可以全部准确无误的回答的话,那说明你真的很了解JVM的内存结构以及内存分配相关的知识了,如果有哪些知识点是不了解的,那么本文正好可以帮你答疑解惑。Q1:JVM管理的内存结构是怎样的?Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。《Java虚拟机规范》中规定了JVM所管理的内存需要包括以下几个运行时区域:Java虚拟机运行时数据区域主要包含了PC寄存器(程序计数器)、Java虚拟机栈、本地方法栈、Java堆、方法区以及运行时常量池。各个区域有各自不同的作用,关于各个区域的作用就不在本文中相信介绍了。但是,需要注意的是,上面的区域划分只是逻辑区域,规范对于有些区域的限制是比较松的,所以不同的虚拟机厂商在实现上,甚至是同一款虚拟机的不同版本也是不尽相同的。Q2:不同的虚拟机在实现运行时内存的时候有什么区别?前面提到过《Java虚拟机规范》定义的JVM运行时所需的内存区域,不同的虚拟机实现上有所不同,而在这么多区域中,规范对于方法区的管理是最宽松的,规范中关于这部分的描述如下:方法区在虚拟机启动的时候创建,虽然方法区是堆的逻辑组成部分,但是简单的虚拟机实现可以选择在这个区域不实现垃圾收集与压缩。本版本的规范也不限定实现方法区的内存位置和代码编译的管理策略。方法区的容量可以是固定的,也可以随着程序执行的需求动态扩展,并在不需要过多的空间时自行收缩。方法区在实际内存空间站可以是不连续的。这一规定,可以说是给了虚拟机厂商很大的自由。虚拟机规范对方法区实现的位置并没有明确要求,在最著名的HotSopt虚拟机实现中(在Java
2019年8月7日
其他

Keepalived+LVS+nginx搭建nginx高可用集群

上面是master节点上keepalived的配置,对于backup节点,其配置与master几乎是一致的,只是其state和priority参数不同。如下是backup节点的完整配置:#
2019年8月4日
其他

分库分表?如何做到永不迁移数据和避免热点?

一、前言中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。水平拆分的概念,是同一个业务数据量大之后,进行水平拆分。上图中订单数据达到了4000万,我们也知道mysql单表存储量推荐是百万级,如果不进行处理,mysql单表数据太大,会导致性能变慢。使用方案可以参考数据进行水平拆分。把4000万数据拆分4张表或者更多。当然也可以分库,再分表;把压力从数据库层级分开。二、分库分表方案分库分表方案中有常用的方案,hash取模和range范围方案;分库分表方案最主要就是路由算法,把路由的key按照指定的算法进行路由存放。下边来介绍一下两个方案的特点。1、hash取模方案在我们设计系统之前,可以先预估一下大概这几年的订单量,如:4000万。每张表我们可以容纳1000万,也我们可以设计4张表进行存储。那具体如何路由存储的呢?hash的方案就是对指定的路由key(如:id)对分表总数进行取模,上图中,id=12的订单,对4进行取模,也就是会得到0,那此订单会放到0表中。id=13的订单,取模得到为1,就会放到1表中。为什么对4取模,是因为分表总数是4。优点:订单数据可以均匀的放到那4张表中,这样此订单进行操作时,就不会有热点问题。热点的含义:热点的意思就是对订单进行操作集中到1个表中,其他表的操作很少。订单有个特点就是时间属性,一般用户操作订单数据,都会集中到这段时间产生的订单。如果这段时间产生的订单
2019年8月1日
其他

干货收藏 | Java程序员必备的一些流程图

转载自:https://juejin.im/post/5d214639e51d4550bf1ae8df1.spring的生命周期Spring作为当前Java最流行、最强大的轻量级容器框架,了解熟悉spring的生命周期非常有必要;首先容器启动后,对bean进行初始化按照bean的定义,注入属性检测该对象是否实现了xxxAware接口,并将相关的xxxAware实例注入给bean,如BeanNameAware等以上步骤,bean对象已正确构造,通过实现BeanPostProcessor接口,可以再进行一些自定义方法处理。如:postProcessBeforeInitialzation。BeanPostProcessor的前置处理完成后,可以实现postConstruct,afterPropertiesSet,init-method等方法,
2019年7月28日
其他

Linux最常用命令:简单易学,但能解决95%以上的问题

原文:https://blog.csdn.net/xulong_08/article/details/81463054Linux是目前应用最广泛的服务器操作系统,基于Unix,开源免费,由于系统的稳定性和安全性,市场占有率很高,几乎成为程序代码运行的最佳系统环境。linux不仅可以长时间的运行我们编写的程序代码,还可以安装在各种计算机硬件设备中,如手机、路由器等,Android程序最底层就是运行在linux系统上的。一、linux的目录结构/
2019年7月26日
其他

Arrays.asList()使用指南

文章转自公众号:JavaGuide最近使用Arrays.asList()遇到了一些坑,然后在网上看到这篇文章:http://javadevnotes.com/java-array-to-list-examples
2019年7月24日
其他

8种你可能正在写错的SQL用法

10;在新设计下查询时间基本固定,不会随着数据量的增长而发生变化。2、隐式转换SQL语句中查询变量和字段定义类型不匹配是另一个常见的错误。比如下面的语句:mysql>
2019年7月23日
其他

不懂数据库索引的底层原理?那是因为你心里没点b树

这棵树始终满足平衡二叉树的几个特性而保持平衡!这样我们的树也不会退化为线性链表了!我们需要查找一个数的时候就能沿着树根一直往下找,这样的查找效率和二分法查找是一样的呢!
2019年7月22日
其他

分布式 Session 解决方案

来源:https://www.cnblogs.com/SimpleWu/p/10118674.html分布式Session存在的问题?目前项目中存在的问题如何解决这两个服务之间的共享问题呢?分布式Session一致性?说白了就是服务器集群Session共享的问题Session的作用?Session
2019年7月21日
其他

MongoDB是什么?看完你就知道了!

来源:http://suo.im/5e8a94一、概述1.MongoDB是什么?用一句话总结MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统。没错MongoDB就是数据库,是NoSQL类型的数据库。2.为什么要使用MongoDB?(1)MongoDB提出的是文档、集合的概念,使用BSON(类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表,存储一个用户在MongoDB中是这样子的。{
2019年7月19日
其他

图解 Java 垃圾回收机制,写得非常好!

(先导图,再文章)作者:AzureSora原文:https://www.oschina.net/translate/java-gc自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。在用
2019年7月17日
其他

如何同步多个 git 远程仓库

备份、容灾及高可用实战SpringBoot+MyBatis+MySQL读写分离实战高并发的核心技术-幂等的实现方案(java思维导图)长按关注,每天java一下,成就架构师
2019年7月16日
其他

别在 Java 代码里乱打日志了,这才是正确的打日志姿势

Logback框架打日志的正确方式什么时候应该打日志当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。当你碰到if…else
2019年7月13日
其他

Redis 备份、容灾及高可用实战

郝朝阳,宜搜科技,运维工程师,负责前端运维工作。专注于运维自动化的实现。致力于DevOps思想的推广,帮助企业形成形成自有文化的运维体系建设。一,Redis简单介绍Redis是一个高性能的key-value非关系型数据库,由于其具有高性能的特性,支持高可用、持久化、多种数据结构、集群等,使其脱颖而出,成为常用的非关系型数据库。此外,Redis的使用场景也比较多。会话缓存(Session
2019年7月12日
其他

SpringBoot+MyBatis+MySQL读写分离实战

AbstractRoutingDataSource基于特定的查找key路由到特定的数据源。它内部维护了一组目标数据源,并且做了路由key与目标数据源之间的映射,提供基于key查找数据源的方法。3.
2019年7月10日