暂时未有相关云产品技术能力~
关注公众号【Java极客技术】回复eeee03,获取最新代码资源
Hello 大家好,我是阿粉,前面的文章给大家介绍过 Nacos,用于服务注册发现和管理配置的开源组件,今天给大家分享另一个组件 Consul 也有相应的功能,我们一起来看一下吧!
Hello 大家好,我是阿粉,前面的文章给大家介绍过 Nacos,用于服务注册发现和管理配置的开源组件,今天给大家分享另一个组件 Consul 也有相应的功能,我们一起来看一下吧!
在实际项目中,经常需要用到角色权限区分,以此来为不同的角色赋予不同的权利,分配不同的任务。比如,普通用户只能浏览;会员可以浏览和评论;超级会员可以浏览、评论和看视频课等;实际应用场景很多。毫不夸张的说,几乎每个完整的项目都会设计到权限管理。 因此,这篇文章,阿粉就带大家将 shiro 权限框架整合到 SpringBoot 中,以达到快速的实现权限管理的功能。
在实际项目中,经常需要用到角色权限区分,以此来为不同的角色赋予不同的权利,分配不同的任务。比如,普通用户只能浏览;会员可以浏览和评论;超级会员可以浏览、评论和看视频课等;实际应用场景很多。毫不夸张的说,几乎每个完整的项目都会设计到权限管理。 因此,这篇文章,阿粉就带大家将 shiro 权限框架整合到 SpringBoot 中,以达到快速的实现权限管理的功能。
在实际项目中,经常需要用到角色权限区分,以此来为不同的角色赋予不同的权利,分配不同的任务。比如,普通用户只能浏览;会员可以浏览和评论;超级会员可以浏览、评论和看视频课等;实际应用场景很多。毫不夸张的说,几乎每个完整的项目都会设计到权限管理。 因此,这篇文章,阿粉就带大家将 shiro 权限框架整合到 SpringBoot 中,以达到快速的实现权限管理的功能。
阿粉第一次了解到io相关知识是在网上看面经的时候,平时只会写业务代码,面对bio,nio,多路复用器这些概念简直是一头雾水。 当阿粉尝试单独去学习这些名词,发现很难学懂,如果能有一篇文章串起来讲讲他们的关系,可能对初学者来说有一定的帮助,所以便有了下面这篇文章。
Hello 大家好,我是阿粉,今天给大家分享微服务环境下必须要使用的一个强大的组件 Nacos。自从使用了 Nacos,阿粉的服务再也没有担心过服务注册和发现以及配置管理混乱的问题了。
日常编程中,我们会经常会碰到对象属性复制的场景,就比如下面这样一个常见的三层 MVC 架构。
日常编程中,我们会经常会碰到对象属性复制的场景,就比如下面这样一个常见的三层 MVC 架构。
日常编程中,我们会经常会碰到对象属性复制的场景,就比如下面这样一个常见的三层 MVC 架构。
日常编程中,我们会经常会碰到对象属性复制的场景,就比如下面这样一个常见的三层 MVC 架构。
日常编程中,我们会经常会碰到对象属性复制的场景,就比如下面这样一个常见的三层 MVC 架构。
hello~各位读者好,我是鸭血粉丝(大家可以称呼我为「阿粉」)。今天,阿粉带着大家来了解一下 ReentrantLock 锁的非公平锁的实现原理
在面试的时候都会被问到集合相关的问题,比如:你能讲讲 ArrayList 和 LinkedList 的区别吗? 那么我相信你肯定能够答上来:ArrayList 是基于数组实现的, LinkedList 是基于链表实现的 接下来面试官就会连环问了,那你能讲讲,它们都用在什么场景下吗? 阿粉知道这种程度肯定难不倒咱们读者的:因为 ArrayList 是基于数组实现的,所以在遍历的时候, ArrayList 的效率是要比 LinkedList 高的, LinkedList 是基于链表实现的,所以在进行新增/删除元素的时候, LinkedList 的效率是要比 ArrayList 高的 面试官
在面试的时候都会被问到集合相关的问题,比如:你能讲讲 ArrayList 和 LinkedList 的区别吗? 那么我相信你肯定能够答上来:ArrayList 是基于数组实现的, LinkedList 是基于链表实现的 接下来面试官就会连环问了,那你能讲讲,它们都用在什么场景下吗? 阿粉知道这种程度肯定难不倒咱们读者的:因为 ArrayList 是基于数组实现的,所以在遍历的时候, ArrayList 的效率是要比 LinkedList 高的, LinkedList 是基于链表实现的,所以在进行新增/删除元素的时候, LinkedList 的效率是要比 ArrayList 高的 面试官
Hello 大家好,我是阿粉,今天给大家分享一个采用 Consul 实现的负载均衡的方案,很多小伙伴都知道 Nginx 可以实现负载均衡,但是可能没实现过结合 Consul,今天就给大家分享一下。
CopyOnWrite 只是看字面意思就能看出来,就是在写入时复制,说得轻巧,写入时复制,具体是怎么实现的呢? 先来说说思想,具体怎么实现等下分析 CopyOnWrite 的思想就是:当向一个容器中添加元素的时候,不是直接在当前这个容器里面添加的,而是复制出来一个新的容器,在新的容器里面添加元素,添加完毕之后再将原容器的引用指向新的容器,这样就实现了写入时复制
关于消息队列,断断续续的看了很多资料,一直想抽个时间把这些知识整理记录下来,但是没腾出时间来写,正好所在的项目在实际业务中使用到了消息队列,索性就将这方面的知识整理一下,可能有理解不到位的地方,望网友批评指出!
Hello 大家好,我是阿粉,不知道你有没有遇到过这种场景,一套代码部署在不同的环境中,随着时间的过去,各个环境代码有版本差异,代码层面可以通过不同的版本来控制,但是数据库层面经常容易忘记更新!
Hello 大家好,我是阿粉,不知道你有没有遇到过这种场景,一套代码部署在不同的环境中,随着时间的过去,各个环境代码有版本差异,代码层面可以通过不同的版本来控制,但是数据库层面经常容易忘记更新!
在开始之前,咱们要知道:如果我的 SQL 语句执行的足够快,还有没有必要去做优化? 完全没有必要对吧 所以我们一般说,要给 SQL 做个优化,那肯定就是这条 SQL 语句执行的比较慢了
在开始之前,咱们要知道:如果我的 SQL 语句执行的足够快,还有没有必要去做优化? 完全没有必要对吧 所以我们一般说,要给 SQL 做个优化,那肯定就是这条 SQL 语句执行的比较慢了
在实际开发的时候,我们经常会碰到这么一个困难:一个集合容器里面有很多重复的对象,里面的对象没有主键,但是根据业务的需求,实际上我们需要根据条件筛选出没有重复的对象。 比较暴力的方法,就是根据业务需求,通过两层循环来进行判断,没有重复的元素就加入到新集合中,新集合中已经有的元素就跳过。
在实际开发的时候,我们经常会碰到这么一个困难:一个集合容器里面有很多重复的对象,里面的对象没有主键,但是根据业务的需求,实际上我们需要根据条件筛选出没有重复的对象。 比较暴力的方法,就是根据业务需求,通过两层循环来进行判断,没有重复的元素就加入到新集合中,新集合中已经有的元素就跳过。
模板模式,顾名思义,定义一个模板,将部分逻辑以具体方法或者具体构造函数的形式实现,在抽象类中声明一些抽象方法来迫使子类实现剩余的逻辑。 不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现,这就是模板方法模式的用意。
模板模式,顾名思义,定义一个模板,将部分逻辑以具体方法或者具体构造函数的形式实现,在抽象类中声明一些抽象方法来迫使子类实现剩余的逻辑。 不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现,这就是模板方法模式的用意。
说起单例模式(Singleton Pattern),想必大家都不不会陌生,它是 Java 中最简单的设计模式之一,属于创建型模式的一种,它提供了一种创建对象的最佳方式。 这种模式的意义在于保证一个类仅有一个实例,并提供一个访问它的全局访问点,避免重复的创建对象,节省系统资源。
在实际项目中,经常需要用到邮件通知功能。比如,用户通过邮件注册,通过邮件找回密码等;又比如通过邮件发送系统情况,通过邮件发送报表信息等等,实际应用场景很多。 正常我们会用 JavaMail 相关 api 来写发送邮件的相关代码,但现在 SpringBoot 提供了一套更简易使用的封装。这篇文章,阿粉就带大家通过 SpringBoot 快速的实现发送邮件的功能。
在实际项目中,经常需要用到邮件通知功能。比如,用户通过邮件注册,通过邮件找回密码等;又比如通过邮件发送系统情况,通过邮件发送报表信息等等,实际应用场景很多。 正常我们会用 JavaMail 相关 api 来写发送邮件的相关代码,但现在 SpringBoot 提供了一套更简易使用的封装。这篇文章,阿粉就带大家通过 SpringBoot 快速的实现发送邮件的功能。
阿粉前前两天看了一篇公号文章,Google 搜了下阿里温少,在博客首页看到他 2010 年写的一篇 Java 并发程序设计教程。 抽空看了一下,写的挺好的。虽然这个教程是在 2010 年写的,但是里面涉及的知识点,从现在看来,已经是大家使用多线程的一些最佳工程实践了。 这个教程内容不长,但是里面留下一些思考题,如果大家对于多线程并发教程不太熟悉,可以看看,多多思考一下里面一些问题。
阿粉公司有一个 Web 管理系统,使用 Tomcat 进行部署。由于是后台管理系统,所有的网页都需要登录授权之后才能进行相应的操作。 起初这个系统的用的人也不多,为了节省资源,这个系统仅仅只是单机部署。后来随着用的人越来越多,单机已经有点扛不住了,于是阿粉决定再部署了一台机器。
阿粉公司有一个 Web 管理系统,使用 Tomcat 进行部署。由于是后台管理系统,所有的网页都需要登录授权之后才能进行相应的操作。 起初这个系统的用的人也不多,为了节省资源,这个系统仅仅只是单机部署。后来随着用的人越来越多,单机已经有点扛不住了,于是阿粉决定再部署了一台机器。
你有没有这样的疑惑,为什么要用线程池呢?可能你会说,我可以复用已经创建的线程呀;线程是个重量级对象,为了避免频繁创建和销毁,使用线程池来管理最好了
你有没有这样的疑惑,为什么要用线程池呢?可能你会说,我可以复用已经创建的线程呀;线程是个重量级对象,为了避免频繁创建和销毁,使用线程池来管理最好了
Hello 大家好,我是阿粉,最近心情不是很好,因为阿粉面试阿里三面挂掉了, 当收到下面这封邮件的时候阿粉内心是拔凉拔凉的。阿粉被 “Unfortunately”,“another candidate” 这几个词深深的伤害到了。不过伤心归伤心,该自我总结还是得自我总结的,有机会再战。
面试官:你不是精通 Java 并发吗?从基础的 Java 线程生命周期开始讲讲吧。 好的,面试官。吧啦啦啦... 如果要说 Java 线程的生命周期的话,那我觉得就要先说说操作系统的线程生命周期 因为 JVM 是跑在操作系统上面的嘛,所以是绕不过去的,而且可以说, Java 语言中的线程本质上就是操作系统的线程
在2018年10月5日,一个做数据搜索服务的软件初创公司 Elastic,在纳斯达克上市。
在2018年10月5日,一个做数据搜索服务的软件初创公司 Elastic,在纳斯达克上市。
在2018年10月5日,一个做数据搜索服务的软件初创公司 Elastic,在纳斯达克上市。
阿粉最近碰到一个场景,用户注册之后需要发送邮件给其邮箱。原先设计中,这是一个同步过程,注册方法需要等待邮件发送成功才能返回。 由于邮件发送流程对于注册来说并不是一个关键节点,我们可以将邮件发送异步执行,减少注册方法执行时间。
阿粉最近碰到一个场景,用户注册之后需要发送邮件给其邮箱。原先设计中,这是一个同步过程,注册方法需要等待邮件发送成功才能返回。 由于邮件发送流程对于注册来说并不是一个关键节点,我们可以将邮件发送异步执行,减少注册方法执行时间。
在实际的项目开发过程中,菜单权限功能可以说是后端管理系统中必不可少的一个环节,根据业务的复杂度,设计的时候可深可浅,但无论怎么变化,设计的思路基本都是围绕着用户、角色、菜单进行相应的扩展。
在实际的项目开发过程中,菜单权限功能可以说是后端管理系统中必不可少的一个环节,根据业务的复杂度,设计的时候可深可浅,但无论怎么变化,设计的思路基本都是围绕着用户、角色、菜单进行相应的扩展。
前几天阿粉的一个朋友去面试,面试官问他,你知道SpringMVC的执行流程么,我这个朋友在回答完之后,面试官相继问了几个问题,之后面试官说,兄弟你是培训出来的吧?朋友懵了,我培训都是一年前的事情了,这都能知道,于是,找阿粉来吐槽这个事情,结果,阿粉听完之后,分分钟觉得,确实不冤枉呀。
hello~各位读者好,我是鸭血粉丝(大家可以称呼我为「阿粉」)。今天,阿粉带着大家来了解一下获取 mapper.xml 配置文件中的sql
我们都知道,把首页数据放到Redis里,能够加快首页数据的访问速度。但是我们要如何准确又快速的将 Redis 整合到自己的 SpringBoot2.x 项目中呢?今天阿粉就带大家爬一爬其中的门门道道。
我们都知道,新建一个对象的时候实现 Serializeable 接口,但为什么要这么做?什么时候这样子做?这样子做会不会出现幺蛾子?阿粉一个三连差点把自己都问懵逼了…… 那接下来,大家就和阿粉一起简单了解一下这个知识点吧……
最近大家应该发现微信公众号信息流改版了吧,再也不是按照时间顺序展示了。这就对阿粉这样的坚持的原创小号主,可以说非常打击,阅读量直线下降,正反馈持续减弱。 所以看完文章,哥哥姐姐们给阿粉来个在看吧,让阿粉拥有更加大的动力,写出更好的文章,拒绝白嫖,来点正反馈呗~。 如果想在第一时间收到阿粉的文章,不被公号的信息流影响,那么可以给Java极客技术设为一个星标。
关于虚拟机这块阿粉以前玩的也很多,但很少总结,容易遗忘,今天索性一条龙总结搞定!
关于虚拟机这块阿粉以前玩的也很多,但很少总结,容易遗忘,今天索性一条龙总结搞定!