
java
文章平均质量分 96
harryptter
这个作者很懒,什么都没留下…
展开
-
SpringCloud 网关Zuul 实现之路由功能
一、背景通过之前的实现springCloud 各组件,发现有一个特点,就是外部访问的时候,直接就是通过各服务具体端口进行访问的,这在实际生产上是不可能的,实际生产环境中nignx就可以做一层地址的映射,那springCloud有没有这个功能呢,当然有,在springCloud中提供了Zuul组件,其中一个功能就是进行服务的路由的功能。以下是一般项目中服务端网络拓扑图:如图所示:客户...原创 2019-03-03 19:58:01 · 758 阅读 · 0 评论 -
如何合理地估算线程池大小?
转载自:http://ifeve.com/how-to-calculate-threadpool-size/如何合理地估算线程池大小?这个问题虽然看起来很小,却并不那么容易回答。大家如果有更好的方法欢迎赐教,先来一个天真的估算方法:假设要求一个系统的TPS(Transaction Per Second或者Task Per Second)至少为20,然后假设每个Transaction由一个线...转载 2018-12-25 10:11:47 · 265 阅读 · 0 评论 -
手写mini版Spring IOC容器(一)
通常用Spring,我们都是从DispatchServlet开始的。这个简易的IOC容器主要目的就是模拟IOC将生成的bean注入到IOC容器中。代码项目的github地址:https://github.com/harrypitter/CreateSpring.git简单类图: 我这边程序中用了jetty runner插件来辅助。这边需要配置基础的注解:Autowi...原创 2018-12-11 18:02:47 · 507 阅读 · 0 评论 -
SpringIOC源码分析(一)spring ioc 容器的加载流程
转载自:https://blog.youkuaiyun.com/a724888/article/details/72716632一:spring ioc 容器的加载流程1.目标:熟练使用spring,并分析其源码,了解其中的思想。这篇主要介绍spring ioc 容器的加载2.前提条件:会使用debug3.源码分析方法:Intellj idea debug 模式下源码追溯通过ClassPathXml...转载 2018-12-10 17:22:00 · 209 阅读 · 0 评论 -
父类声明子类实例化以及重载,重写的一些问题
最近面试碰到一道父类子类的面试题:public class SuperClass { public int a; public SuperClass(){ a=1; System.out.println("a is"+a); } public int getA(){ return a; }}pub...原创 2018-12-26 15:41:16 · 665 阅读 · 0 评论 -
java 后端学习路线图
转载自:https://blog.youkuaiyun.com/a724888/article/details/83000249前言学习路线图往往是学习一样技术的入门指南。网上搜到的Java学习路线图也是一抓一大把。今天我只选一张图,仅此一图,足以包罗Java后端技术的知识点。所谓不求最好,但求最全,学习Java后端的同学完全可以参考这张图进行学习路线安排。当然,有一些知识点是可选的,并不是说...转载 2018-12-09 12:33:37 · 4227 阅读 · 0 评论 -
设计模式之模板模式(java实现)
模板模式(Template):行为型模式的一种,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method 使得子类可以不改变 一个算法的结构即可重定义该算法的某些特定步骤。简单的理解就是,一个架构或者业务的主体逻辑和流程是确定的,那么我们可以将它的这些逻辑流程抽象出来,然后真正具体实现的时候在它的子类之中进行实现。这是第一种思想,实现相对来说并不困难,引申的另一...原创 2018-12-09 12:04:28 · 429 阅读 · 0 评论 -
深入理解JVM类加载机制
深入理解JVM类加载机制转载自:https://blog.youkuaiyun.com/a724888/article/details/78396462简述:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。下面我们具体来看类加载的过程:类的生命周期 类从被加载到内存中开始,到卸载出...转载 2018-12-20 09:40:35 · 379 阅读 · 0 评论 -
设计模式之代理模式(java实现)
代理模式(Proxy):结构型的设计模式,目的是为其他对象提供一种代理以控制对这个对象的访问。即,它的思想是控制类或者接口对外的功能。代理模式分为静态代理模式和动态代理模式两种。在Spring中代理模式常见的是在AOP模块中,比如 JdkDynamicAopProxy 和 Cglib2AopProxy。先说说静态代理。举一个生活化的例子,现在有一个接口Person,儿子类(So...原创 2018-12-09 11:08:46 · 277 阅读 · 0 评论 -
SpringMVC源码分析1:SpringMVC概述
转载自:https://blog.youkuaiyun.com/a724888/article/details/76014532Web MVC简介1.1、Web开发中的请求-响应模型:在Web世界里,具体步骤如下:1、 Web浏览器(如IE)发起请求,如访问http://sishuok.com2、 Web服务器(如Tomcat)接收请求,处理请求(比如用户新增,则将把用户保存一下)...转载 2018-12-13 11:02:55 · 248 阅读 · 0 评论 -
设计模式之观察者模式(java实现)
观察者模式(Observer):一种行为型的设计模式,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在Spring中,观察者模式常用的地方是Listener的实现,如ApplicationListener。它一般由两个角色组成:发布者和订阅者(观察者)。观察者通常有一个回调,当然也可以没有。在实际的工作中,监听器,日志收集,短信...原创 2018-12-06 01:37:51 · 274 阅读 · 0 评论 -
设计模式之装饰器模式(java实现)
装饰器模式(Decorator):结构型设计模式,为了实现类在不修改原始类的基础上进行动态的覆盖或者增加方法,该实现保持了跟原有类的层级关系。这种设计模式允许向一个现有的对象添加新的功能,同时又不改变其结构。算是一种非常特殊的适配器模式。在实际业务中,有时候我们会创建了多层子类,但如果当子类层数超过三层,一般来说不太建议,这个时候可以考虑使用装饰器模式。Spring中的应用场景:在我们的项...原创 2018-12-05 17:42:18 · 1339 阅读 · 0 评论 -
设计模式之适配器模式(java实现)
适配器模式(Adapter):结构型模式之一,主要作用是兼容和转换,当项目扩展中需要兼容原来的老的代码时候,就可以考虑适配器模式了。适配器模式在Spring源码中也有大量使用,其中AOP的实现里面对 BeforeAdvice、AfterAdvice、ThrowsAdvice 三种通知类型的支持实际上是借 助适配器模式来实现的,这样的好处是使得框架允许用户向框架中加入自己想要支持的任何一种通知类...原创 2018-12-05 13:23:18 · 819 阅读 · 1 评论 -
设计模式之委派模式(java实现)
委派模式(delegate):并不属于23种设计模式,但是面向对象常用的一种设计模式,而且在SpringMVC源码中有大量使用。这种模式原理就是类 B和类 A 是两个互相没有任何关系的类,B 具有和 A 一模一样的方法和属性;并且调用 B 中的方法,属性就是调用 A 中同名的方法和属性。B 好像就是一个受 A 授权委托的中介。第三方的代码不需要知道 A 的 存在,也不需要和 A 发生直接的联系,通...原创 2018-12-05 11:55:25 · 1286 阅读 · 2 评论 -
设计模式之策略模式(java实现)
策略模式(Strategy):在设计模式中属于一种行为模式,一般来说一个类的行为在使用算法可以更改,或者使用的service服务方法有多种选择的时候可以是用策略模式。中在实例化对象的时候用到 Strategy 模式,在 SimpleInstantiationStrategy 有使用。使用场景一个是当有固定算法封装时候,在根据用户需求处理数据的时候需要对算法进行选择的时候可...原创 2018-12-05 08:52:51 · 731 阅读 · 0 评论 -
数据库查询的N+1问题
转载自:https://blog.youkuaiyun.com/w05980598/article/details/79647291简介在orm框架中,比如hibernate和mybatis都可以设置关联对象,比如user对象关联dept假如查询出n个user,那么需要做n次查询dept,查询user是一次select,查询user关联的dept,是n次,所以是n+1问题,其实叫1+n更为合理一些。...转载 2018-12-30 11:29:06 · 514 阅读 · 0 评论 -
并发Synchronized原理
最近在看一些java并发方面的知识,并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。以下这部分转载自:http://www.cnblogs.com/paddix/p/5367116.html目录一、Synchronized的基本使用二、Synchronized 原理三、运行结果解释四 总结Mark Word(对象头)MonitorSynchr...原创 2019-01-04 17:39:30 · 418 阅读 · 0 评论 -
SpringCloud——Feign实例及原理
转载自:https://blog.youkuaiyun.com/u010066934/article/details/80967709一、实例1、配置feign添加依赖在maven的pom中添加feign <dependency> <groupId>org.springframework.cloud</groupId> ...转载 2019-03-06 11:52:34 · 734 阅读 · 0 评论 -
Spring RestTemplate详解
转载自:https://www.cnblogs.com/hfultrastrong/p/8537005.html目录1、什么是REST?2、REST成熟度的四个层次3、HTTP请求的方法4、HTTP请求的状态码5、RestTemplate5.1 简介5.2 对外开放的接口(2)每一个小类又分三种,这三种有什么区别?(3)Exchange(4)excute...转载 2019-03-06 11:02:00 · 538 阅读 · 0 评论 -
Spring Cloud Eureka 实现
之前项目中用到了spring cloud的一些服务,这里准备将spring cloud最常用的一些服务框架进行总结和实现。框架大致的介绍在之前的文章里面已经有提及:什么是微服务这里就从springcloud最开始搭建说起,也就是服务发现和注册,原生提供的就是Eureka服务端和客户端,之后由于zookeeper的流行,也提供你spring cloud zookeeper的实现方式,本文主要...原创 2019-03-01 19:11:51 · 1761 阅读 · 0 评论 -
深入理解Java中的字段与属性的区别
https://blog.youkuaiyun.com/chenchunlin526/article/details/71424844深入理解Java中的字段与属性的区别1、Java中的属性和字段有什么区别? 答:Java中的属性(property),通常可以理解为get和set方法。而字段(field),通常叫做“类成员”,或 "类成员变量”,有时也叫“域”,理解为“数据成员”,用来承载数据的。...转载 2019-02-20 10:38:00 · 314 阅读 · 0 评论 -
java 面试高频问题 java8新特性
之前面试几家公司,很频繁的问到了java8新特性的问题。这里总结一下:部分转载于java8新特性目录1.介绍2.Java语言新特性2.1 Lambda表达式2.2 接口的默认方法与静态方法 2.3 方法引用2.4 重复注解2.5 更好的类型推测机制2.6 扩展注解的支持3. Java编译器的新特性3.1 参数名字4. Java 类库的新特性4...转载 2019-02-13 13:24:07 · 10912 阅读 · 1 评论 -
spring boot的事务管理
转载自:http://blog.didispace.com/springboottransactional/?utm_source=tuicool&utm_medium=referral目录什么是事务?快速入门事务详解什么是事务?我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合。由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常...转载 2019-02-18 16:12:36 · 125 阅读 · 0 评论 -
Dubbo和Spring Cloud微服务架构对比
转载自:https://blog.youkuaiyun.com/qq_41587754/article/details/80133775目录微服务简介微服务主要的优势1、降低复杂度2、可独立部署3、容错4、扩展一、核心部件1、总体架构▲Dubbo 总体架构▲Spring Cloud总体架构2、微服务架构核心要素二、通讯协议(一)、支持协议(二)、性能...转载 2019-02-27 20:17:29 · 169 阅读 · 0 评论 -
java 面试基础 final 关键字
转载自:https://blog.youkuaiyun.com/a724888/article/details/80048792源码地址github:https://github.com/harrypitter/JavaBase.gitfinal关键字可以修饰类、方法和引用。修饰类,该类不能被继承。并且这个类的对象在堆中分配内存后地址不可变。修饰方法,方法不能被子类重写。修饰引用,引用无法改变...转载 2019-02-22 15:53:02 · 143 阅读 · 0 评论 -
HashMap在Java1.7与1.8中的区别
转载自:https://blog.youkuaiyun.com/jek123456/article/details/73869203基于JDK1.7.0_80与JDK1.8.0_66做的分析JDK1.7中使用一个Entry数组来存储数据,但是这个Entry是链表结构,如果插入的key的hashcode相同(hash collision),那么这些key会被定位到Entry数组的同一个格子里,这些k...转载 2019-02-17 11:14:54 · 340 阅读 · 0 评论 -
java 面试基础 全面解读Java异常
转载自:https://blog.youkuaiyun.com/a724888/article/details/80114720目录为什么要使用异常异常基本定义异常体系初识异常异常和错误异常的处理方式纠结的finallythrow : JRE也使用的关键字异常调用链异常的链化自定义异常异常的注意事项当finally遇上return本文非常详尽地介绍了...转载 2019-02-22 11:26:30 · 237 阅读 · 0 评论 -
java基础面试 集合框架梳理
在java面试中,集合是必面的内容,所以这里整理了大致的框架图,方便复习。转载自:https://blog.youkuaiyun.com/a724888/article/details/80215706目录集合图Collection接口List接口2.1、ArrayList2.2、LinkedList2.3、Vector 2.4、Stack Set接口3.1、Enu...转载 2019-02-22 10:19:44 · 310 阅读 · 0 评论 -
剑指offer 面试题05
题目:输入个链表的头结点,从尾到头反过来打印出每个结点的值。一般来说翻转过来打印链表中的值,应该不允许修改原链表的内容,由于顺序读取数据,打印是从尾到头,有种后进先出的感觉,很容易就能想到通过栈的方法来实现。再引申一步,递归实际上也是一个栈的思想,所以也可以通过递归的方式来实现。下面是代码:package partOne;import java.util.Stack;pu...原创 2019-01-27 01:09:17 · 194 阅读 · 0 评论 -
剑指offer 面试题3 二维数查找 java实现
面试题3:题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。分析:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束:如果该数字大于要查找的数字,剔除这个数字所在的列:如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的...原创 2019-01-26 20:59:13 · 224 阅读 · 1 评论 -
Java线程池ThreadPoolExecutor使用和分析(一)
转载自:http://www.cnblogs.com/trust-freedom/p/6594270.html线程池是可以控制线程创建、释放,并通过某种策略尝试复用线程去执行任务的一种管理框架,从而实现线程资源与任务之间的一种平衡。 以下分析基于 JDK1.7 以下是本文的目录大纲:目录一、线程池架构1、Executor接口2、ExecutorServ...转载 2018-12-25 18:40:48 · 242 阅读 · 0 评论 -
Java中的锁
转载自:https://blog.youkuaiyun.com/u013256816/article/details/51204385在学习或者使用Java的过程中进程会遇到各种各样的锁的概念:公平锁、非公平锁、自旋锁、可重入锁、偏向锁、轻量级锁、重量级锁、读写锁、互斥锁等待。这里整理了Java中的各种锁,若有不足之处希望大家在下方留言探讨。WARNING:本文适合有一定JAVA基础的同学阅读。公...转载 2018-11-29 14:54:41 · 160 阅读 · 0 评论 -
乐观锁和悲观锁
转载自:https://www.cnblogs.com/qjjazry/p/6581568.html首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比如Java里面的...转载 2018-11-29 14:42:20 · 163 阅读 · 0 评论 -
spring boot了解
转载自:http://www.yiibai.com/spring-boot/Spring Team在现有Spring框架的基础上发布了一个创新的主要框架:Spring Boot。这是一个来自Pivotal Team(Spring Team)的全新项目。Spring Boot是他们最新的创新,能够跟上不断变化的技术需求。 开发Spring Boot的主要动机是简化配置和部署s转载 2017-06-08 00:08:55 · 705 阅读 · 0 评论 -
wsdl2java 生成客户端: 具有相同名称 "xxx" 的类/接口已在使用。请使用类定制设置来解决此冲突。
在使用cxf 工具通过wsdl生成java的时候 有时候会报“具有相同名称 "xxx" 的类/接口已在使用。请使用类定制设置来解决此冲突。”的错误。这个主要是WSDL中有重复的元素,只要在生成命令中加入 -autoNameResolution 就可以了 例如 ./wsdl2java -client http://localhost:2000/sdhu/fff?wsdl 改为 .原创 2017-05-24 17:13:11 · 7549 阅读 · 1 评论 -
oracle数据库中有数据 findone返回的为null
最近通过SQL developer工具添加一个数据进入数据库中之后,代码中的findone 返回的为null空值,但是通过相同的方法找其他的值却能找到。中间通过 repository 中的findAll()方法把数据库中的数据都打出来,发现压根没有添加进去的新数据。最后找到原因,通过SQL语句在SQL developer工具中添加数据项目的时候,执行完语句必须要上传更改才行,不然虽然S原创 2017-04-14 16:03:47 · 977 阅读 · 0 评论 -
Mac OS X 下查看和设置JAVA_HOME
转载自:http://blog.youkuaiyun.com/done58/article/details/511380571, 查看Java版本打开Mac电脑,查看JAVA版本,打开终端Terminal,通过命令行查看笔者的java版本::[html] view plain copy bogon:~ donny$ java -version转载 2017-04-18 11:25:11 · 762 阅读 · 0 评论 -
获取java项目根目录
转载自:http://blog.youkuaiyun.com/mydreamongo/article/details/8220577一 相对路径的获得说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的Java项目还是web项目)String relativelyPath=System.getProperty("user.dir"); 上述相对路径中,ja转载 2017-03-17 16:59:26 · 3135 阅读 · 0 评论 -
FastJson--阿里巴巴公司开源的速度最快的Json和对象转换工具
这是关于FastJson的一个使用Demo,在Java环境下验证的[java] view plain copy class User{ private int id; private String name; public int getId() { return id;转载 2017-01-20 15:01:16 · 706 阅读 · 0 评论 -
No identifier specified for entit失误记录
No identifier specified for entit出错记录Caused by: org.hibernate.AnnotationException: No identifier specified for entity: com.demo.module.User出错时由于在entity类里面没有设置@ID Caused by: Error b原创 2017-01-20 10:24:07 · 527 阅读 · 0 评论