- 博客(72)
- 收藏
- 关注
原创 使用Spring Cloud Zuul实现过滤器或拦截器功能案例
Spring Cloud的API网关不但可以实现类似NGINX+Lua强大的路由分发,实现动静页面的分流,更重要可以实现对所有发往后端微服务请求的拦截。Zuul主要有四种类型的过滤器,我们可以为特定的url模式添加任意数量的过滤器。“pre” 预过滤器 - 在路由分发一个请求之前调用。 “post” 后过滤器 - 在路由分发一个请求后调用。 “route” 路由过滤器 - 用于路由请求分...
2019-02-25 16:13:32
5313
原创 如何让SpringBoot执行起来
程序入口SpringApplication.run(BeautyApplication.class, args);执行此方法来加载整个SpringBoot的环境。1. 从哪儿开始?SpringApplication.java /** * Run the Spring application, creating and refreshing a new * {@...
2019-02-22 16:56:32
407
原创 Spring Boot的Component Scan原理
@ComponentScan如果你了解组件扫描,你就会理解Spring。Spring是一个依赖注入框架。它完全是关于依赖的bean和wiring。定义Spring Beans的第一步是添加正确的注释 - @Component或@Service或@Repository。但是,Spring不知道bean在哪个包下面,除非你告诉它去哪里搜索包。这部分“告诉Spring到哪里搜索”称为组件扫...
2019-02-22 15:41:43
944
原创 十几年程序员生涯带给我的几点感悟
眼瞅着毕业快15年了,15年间从一个刚毕业的菜鸟,成长为技术骨干,做到架构师的职位,回头看看,当年听取亲戚的一句话,误入计算机行业,看来并没有走错,编程虽然枯燥辛苦,但是如果真的感兴趣,你就能体会到其中的乐趣,并且获得可观的回报。 1.好奇心 刘慈欣在《朝闻道》中描绘过这么一个情节:在古老的非洲大陆上,有个原始人无意中抬头仰望星空,凝视的时间稍微长了一些,超过了外星人设置的阈值...
2019-02-21 17:08:22
441
原创 JVM中的线程行为 -JavaWorld
前言:程化是指同时执行编程过程以提高应用程序性能的实践。虽然直接在业务应用程序中使用线程并不常见,但它们一直在Java框架中使用。例如,处理大量信息的框架(如Spring Batch)使用线程来管理数据。同时操作线程或CPU进程可提高性能,从而实现更快,更高效的程序。 找到你的第一个线程:Java的main()方法即使你从未直接使用Java线程,你也间接使用它们,因为Java的...
2019-02-21 15:52:48
372
原创 maven是什么?用项目来解释它
一、简单的小问题? 1.1、假如你正在Eclipse下开发两个Java项目,姑且把它们称为A、B,其中A项目中的一些功能依赖于B项目中的某些类,那么如何维系这种依赖关系的呢? 很简单,这不就是跟我们之前写程序时一样吗,需要用哪个项目中的哪些类,也就是用别人写好了的功能代码,导入jar包即可。所以这里也如此,可以将B项目打成jar包,然后在A项目的Library下导入...
2019-02-21 15:49:25
27123
7
原创 使用Mesos和Marathon管理Docker集群
分布式系统分布式系统是难于理解、设计、构建 和管理的,他们将比单个机器成倍还要多的变量引入到设计中,使应用程序的根源问题更难发现。SLA(服务水平协议)是衡量停机和/或性能下降的标准,大多数现代应用程序有一个期望的弹性SLA水平,通常按"9"的数量增加(如,每月99.9或99.99%可用性)。每个额外的9变得越来越难实现。 分布式系统通常是以静态分区,比如Akka/Play、 Spark...
2019-02-20 15:40:19
172
原创 成为更好的Java开发人员的10个技巧
这些建议和技巧将帮助您提高编程和编码技能,这对于成为更好的Java开发人员至关重要。这些技巧对核心Java开发人员和Java Web开发人员同样有用。1.学习Java 8 对于Java开发人员来说,这是最重要的事情。这是一个很好的4岁,甚至Java 9在6个月前发布,人们现在正在谈论。无论如何,我知道许多程序员没有使用lambdas和Stream API等Java 8功能编写一行代码。...
2019-02-20 15:33:56
260
原创 使用Spring Cloud Config基于本地文件实现微服务配置管理
Spring Cloud的开发基本是以配置为主,三板斧:pom.xml、元注解和property/yaml配置,其中最后一项配置如果服务一旦启动,就无法改变了,这时如果使用Spring Cloud Config进行配置管理,就可以在运行时进行配置统一更新。 在微服务领域,我们系统中可能存在大量微服务,并且这些微服务有多个实例正在运行。手动更新配置属性或甚至使用自动脚本重新启动所有这些实...
2019-02-20 14:59:36
258
原创 Spring Cloud Config使用Oracle数据库作为后端配置存储
Spring cloud config可以使用git,svn,数据库 Redis或Consul作为后端库来存储配置参数,大部分默认是使用Git,但是如果在企业私有云等环境,就可能需要连接自己的SVN或数据库,这里介绍使用Oracle数据库作为后端配置库,这样,我们的运维管理软件可以写入Oracle数据库从而对整个运维配置进行修改。Spring cloud config使用数据库作为存储库时,需...
2019-02-20 14:56:33
603
原创 Spring Cloud微服务架构介绍
springcloud是什么?Spring Cloud的目标是为Spring开发人员提供一套易于使用的工具来构建分布式系统。它主要通过包装其他实现堆栈,从Netflix OSS堆栈开始。然后,这些堆栈将通过基于注释的配置,Java配置和基于模板的编程的熟悉工具进行消耗。我们来看几个Spring Cloud的组件。Spring Cloud配置服务器Spring Cloud Config ...
2019-02-19 16:30:33
160
原创 使用Spring Data + Redis实现缓存
首先,我们给一个服务配置Cache,如下:@Service('helloService')public class HelloServiceImpl implements HelloService { /** * Using SpEL for conditional caching - only cache method executions when * th...
2019-02-19 16:22:49
337
原创 Spring MVC + Hibernate + Maven: CRUD增删改查教程源码
目标:创建示例Web应用程序,基于Spring MVC HibernateMaven。用户界面接口将是基于HTML的。该应用程序将支持所有的CRUD操作:创建,读取,更新,删除。使用MySQL作为数据库项目目录结构: 准备工作:创建数据库:CREATE TABLE `teams` ( `id` int(6) NOT NULL AUTO_INCREMENT, `n...
2019-02-19 16:18:57
283
原创 使用Netflix Hystrix的Spring Cloud断路器
在微服务世界中,服务之间通讯时相当频繁,类似单体服务的方法调用,如果某个微服务中断或无法正常运行,则问题可能会级联到上游服务,造成连锁反应,故障爆炸。Netflix创建了Hystrix库,实现了Circuit Breaker断路器模式以解决这些问题。我们可以使用Spring Cloud Netflix Hystrix断路器来保护微服务免受级联故障的影响。 HYSTRIX断路器能够增强系统的...
2019-02-18 16:23:18
159
原创 SpringCloud服务发现注册Eureka +Ribbon + Feign教程
什么是服务注册和发现 假设有2个微服务A和B分别在端点http:// localhost:8181 /和http:// localhost:8282 /上运行,如果想要在A服务中调用B服务,那么我们需要在A服务中键入B服务的url,这个url是负载均衡器分配给我们的,包括负载平衡后的IP地址,那么很显然,B服务与这个URL硬编码耦合在一起了,如果我们使用了服务自动注册机制,就可以使用B服务...
2019-02-18 16:19:18
373
原创 通过Spring Boot中的手动Bean定义提高启动性能
前言使用Spring Boot时你不想使用@EnableAutoConfiguration。你应该怎么做?Spring本质上是快速且轻量级的,但是如何让Spring更快?其中一条建议是可以改善启动时间,那就是考虑手动导入Spring Boot配置,而不是自动全部配置。对所有应用程序来说,它不是正确的做法,但它可能会有所帮助,理解选项是什么肯定不会有害。在本文中,我们将探讨各种手动配置方法并...
2019-02-14 16:42:12
483
原创 年后面试前准备之开源框架面试题
前言:(开源框架学习思维导图) Spring5概述(面试题)Spring5 是一个重要的版本,距离SpringFramework4差不多四年。在此期间,大多数增强都是在 SpringBoot 项目中完成的。Spring 是一个开源的轻量级 Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架, 其目的是用于简化企业级应用程序开发。应用程序是由一...
2019-02-13 15:31:59
255
原创 微服务ActiveMQ——知识点整理
1.1 java消息服务:不同系统之间的信息交换,是我们开发中比较常见的场景,比如系统A要把数据发送给系统B,这个问题我们应该如何去处理? 1999年,原来的SUN公司领衔提出了一种面向消息的中间件服务--JMS规范(标准);常用的几种信息交互技术(httpClient、hessian、dubbo、jms、webservice 五种).1.2JMS概述:JMS即Java消息服务(Jav...
2019-01-31 15:53:51
1041
原创 zookeeper是什么?Zookeeper分布式环境指挥官
Zookeeper 概述ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。ZooKeeper框架最初是在“Yahoo!"上构建的,用于以简单而稳健的方式访问他们的应用程序。 后来,Apache ...
2019-01-30 15:10:42
207
原创 SpringMVC源码阅读:Controller中参数解析
1.前言SpringMVC是目前J2EE平台的主流Web框架本文将通过源码(基于Spring4.3.7)分析,弄清楚Controller是如何匹配我们传入的参数,并定义简单的参数解析器2.源码分析doDispatch方法943行获取了HandlerAdapter,ctrl+h打开类继承图,找到RequestMappingHandlerAdapter,RequestMappin...
2019-01-29 16:22:41
658
转载 互联网公司消息的年终奖,成了大多数人的伤心地
往年春节前一个月甚至更早,朋友圈都会被各种豪华年终奖消息刷屏。不管是为了展现业绩还是为了公关、招聘目的,年终奖成为了互联网公司们比拼的一项资本。但是今年,年终奖成了大多数人的伤心地。 作者 张吉龙 编辑安心 2013 年春节前夕,搜狐媒体中心员工邓鑫鑫在新浪微博上看到了一条鸡汤文,大意是说一个男人在外工作 20 年,终于要回家了,老板问他:你是要 20 年的工资还是要 3 句忠告?...
2019-01-29 16:12:12
1025
原创 Java高级架构面试真题汇总:Nginx、 Netty、Zookeeper、Tomcat、Dubbo
(一)Nginx是什么——相关面试题Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。1、请列举Nginx的一些特性。2、解释Nginx是...
2019-01-29 14:06:55
496
原创 译文:Java 中正确使用 hashCode 和 equals 方法
在这篇文章中,我将告诉大家我对hashCode和equals方法的理解。我将讨论他们的默认实现,以及如何正确的重写他们。我也将使用Apache Commons提供的工具包做一个实现。 目录:hashCode()和equals()的用法 重写默认实现 使用Apache Commons Lang包重写hashCode()和equals() 需要注意记住的事情 当使用ORM的时候特别要注...
2019-01-28 17:05:12
113
原创 JavaScript:面试频繁出现的几个易错点
1.前言这段时间,金三银四,很多人面试,很多人分享面试题。在前段时间,我也临时担任面试官,为了大概了解面试者的水平,我也写了一份题目,面试了几个前端开发者。在这段时间里面,我在学,在写设计模式的一些知识,想不到的设计模式的这些知识,就是面试题里面,频繁让人掉坑的考点。所以,今天就总结一下,那些让人掉坑的考点。2.面向对象编程关于面向对象和面向过程,个人觉得这两者不是绝对独立的,而是相...
2019-01-28 16:47:51
173
原创 java面试字符串算法
一、概要本文介绍了有关字符串的算法第一部分的Java代码实现,算法目录:替换字符串中的空格 输入一个字符串,打印出该字符串的所有排列 第一个只出现一次的字符 翻转句子 计算字符串之间的最短距离 二、代码实现2.1 替换字符串中的空格问题描述实现一个函数,将字符串p中的所有空格都替换成为指定的字符串r。解决思路遍历原始的字符串p,统计原先字符串中空格的个数spa...
2019-01-28 16:45:02
1815
3
原创 Spring中Bean的生命周期是怎样的?
概述Spring的ioc容器功能非常强大,负责Spring的Bean的创建和管理等功能。而Spring 的bean是整个Spring应用中很重要的一部分,了解Spring Bean的生命周期对我们了解整个spring框架会有很大的帮助。BeanFactory和ApplicationContext是Spring两种很重要的容器,前者提供了最基本的依赖注入的支持,而后者在继承前者的基础进行了功能...
2019-01-28 16:30:30
475
原创 Spring Cloud是什么 ?Spring Cloud和Dubbo对比,优势在哪里?
springcloud是什么?Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来...
2019-01-28 16:15:36
455
原创 Spring Boot中Jackson ObjectMapper应用详解
Spring Boot支持与三种JSON mapping库集成:Gson、Jackson和JSON-B。Jackson是首选和默认的。Jackson是spring-boot-starter-json的一部分,spring-boot-starter-web中包含spring-boot-starter-json。也就是说,当项目中引入spring-boot-starter-web后会自动引入spr...
2019-01-25 16:19:25
5250
原创 RabbitMQ 幂等性概念及业界主流解决方案
一、什么是幂等性可以参考数据库乐观锁机制,比如执行一条更新库存的 SQL 语句,在并发场景,为了性能和数据可靠性,会在更新时加上查询时的版本,并且更新这个版本信息。可能你要对一个事情进行操作,这个操作可能会执行成百上千次,但是操作结果都是相同的,这就是幂等性。二、消费端的幂等性保障在海量订单生成的业务高峰期,生产端有可能就会重复发生了消息,这时候消费端就要实现幂等性,这就意味着我们的消...
2019-01-24 15:57:03
11421
3
原创 超详细的Java面试题总结——Java高性能架构面试
前言:一种是实际项目中确实有一些内存泄露,高并发的东西跟面试官说,还有就是可以假设(忽悠,似乎不太好),要是遇到类似的问题我如何解决,比如Java 内存泄露如何排查,用jstack,jmap,如何分析dump文件,找到问题,这个可以参照一些高质量公众号的文章内容,比如自己做的项目,如果并发很大,如何处理,redis 消息队列,数据如何优化,或者用hbase es等等,都要自己延展,找到一个点,...
2019-01-24 13:43:47
2815
原创 七年开发经验教你如何正确、安全地停止 SpringBoot 应用
引言Spring Boot,作为Spring框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物,它能帮助我们很快捷的创建出独立运行、产品级别的基于Spring框架的应用,大部分Spring Boot应用只需要非常少的配置就可以快速运行起来,是一个与微服务(MicroServices)相当契合的微框架。 网络上关于Spring Boot的Q...
2019-01-23 19:08:54
190
原创 Mybatis【逆向工程,缓存,代理】知识要点
Spring中Mybatis的配置方案一2.1 多数据源配置案例(1)数据源配置(2)创建sqlSessionFactory(3)配置扫描器,扫描指定路径的mapper生成数据库操作代理类(4)数据源配置(5)创建sqlSessionFactory(6)配置扫描器,扫描指定路径的mapper生成数据库操作代理类(1)(2)(3)是一组配置,(4)(5)(6)是一...
2019-01-23 17:02:57
147
原创 当跳槽遇到互联网公司裁员寒潮,该如何应对?
前言:“正常人员调整和优化”,对于近期互联网行业来说,这句话出现的频率格外高。曾经站在风口上的互联网行业却遭遇寒潮,包括知乎、锤子、美团、腾讯等10余家知名互联网科技公司,相继爆出裁员降薪消息。但是冬天来了,春天还会远吗?近期互联网公司裁员寒潮来临,但该来的终究会来,正如潮起潮落!寒冬过后会是什么情况?视频寒冬过去之后的两三年,在2011年前后,土豆、优酷、乐视分别上市,行业内...
2019-01-23 15:37:09
691
原创 hibernate性能优化策
悲观锁与乐观锁使用乐观锁在表中加一个version的字段来解决并发性问题悲观锁:就是多个人同时想修改某个数据,乐观锁:乐观锁需要在表中加一version(版本)字段,并要在对应的类中配置 一级缓存1、一级缓存很短,和session的生命周期一致,随着session的关闭而消失 *load/get/iterate(查询实体对象)可以使用缓存数据2、一级缓存它缓存的是实体对象 ...
2019-01-22 16:11:53
126
原创 JAVA多线程之线程间的通信方式
一,介绍本总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码。 二,线程间的通信方式①同步这里讲的同步是指多个线程通过synchronized关键字这种方式来实现线程间的通信。参考示例:public class MyObject { synchronized public void me...
2019-01-22 16:05:58
107
原创 多线程启动 停止线程
线程的概念:线程是进程独立运行的子任务。多线程是异步的。所以,Java代码启动线程的顺序不是线程的执行顺序。 通常实现线程有两种方式。1 继承Thread类 2 实现Runnable接口。下面对这两种方法进行验证。继承Thread类实现public class MyThread extends Thread{ @Override public ...
2019-01-22 14:17:41
291
原创 Zookeeper: 分布式过程协同技术详解
Zookeeper的使命Zookeeper主要作用为在分布式系统中协调多个任务,一个任务可以是协作或者是竞争。协作意味着多个进程需要一同处理某些事情,一些进程采取某些行动使得其他进程可以继续工作,例如在主从模式中,主节点与从节点协作,主节点分配任务给从节点;竞争是指两个进程不能同时处理工作,一个进程必须等待另一个进程,同样在主从工作模式中,通过互斥排它锁的方式保证任何时刻只有一个主。使用Z...
2019-01-21 17:29:40
2212
1
原创 Spring Cloud-微服务架构集大成者
本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义。1 背景2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了,像抢红包、双十一这样的活动不断逼迫我们去突破软件系统的性能上限,传统的IT企业”能用就行”的开发思想已经不能满足互联网高并发、大流量的性能要求。系统架构走向分布...
2019-01-21 15:57:06
205
原创 Spring远程服务编程框架 Spring Remoting——Hessian远程服务调用过程
Remoting实际上是一种企业分布式计算的组件。在同一服务器(Java虚拟机)内进行调用的服务(或类)并不需要把自己暴露为一种远程服务; 但是,如果你需要与一个外部程序(在不同的服务器上或在一个不同的组织中)进行通讯的话,那么,必须把它实现为一个远程服务。Spring框架为把业务类 暴露为远程服务提供了一种独特而灵活的方式。Spring Remoting架构的核心是服务对象,这些对象其实是一...
2019-01-18 18:37:39
532
原创 Java在2019年会怎样?具当前的形势,按照规划路线学习提升自己!
摘要:Java语言在2019年会继续延续在软件开发领域主流的使用地位,但是在2019年也会有更多的语言对Java形成冲击。总的来说,Java语言在2019年将体现出以下几个特点:第一:Java语言依然是被最广泛使用的编程语言之一。目前Java语言在Web开发领域、Android开发领域、大数据开发领域以及各种后端服务开发领域都有广泛的用户基础,可以说Java语言的生态环境已经比较健全了,这...
2019-01-18 16:28:43
571
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人