自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 java基础经典编程题

1.有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。public static void getStr(String str) { //各种中字符串 StringBuilder hanziStr = new StringBuilder(); StringBuilder enStr = new StringBuilder(); StringB...

2020-02-29 19:48:02 200

原创 Tomcat的优化经验

Tomcat作为web服务器,它的性能直接关系到用户体验,它的优化措施有:1. 去掉对web.xml的监视。 在context.xml中增加<WatchedResource>WEB-INF/web.xml</WatchedResource>,此时在eclipse中修改了web.xml后将自动更新到Tomcat服务器中,不需要重启服务器。2. 把jsp提前编...

2020-02-28 16:42:54 258

原创 Integer与int的区别

1.int是java提供的8种原始数据类型之一。Java为每个原始类型提供了包装类,Integer是java为int提供的包装类。2.int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null...

2020-02-26 13:32:01 131

原创 谈谈 java 内部类

在java中可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。分为四种:成员内部类、局部内部类、匿名内部类和静态内部类。1. 成员内部类...

2020-02-25 11:45:07 170

原创 SpringCloud面试题

一. 谈谈你对微服务的理解 微服务就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事情,从技术角度看就是一种小而独立的处理过程,类似进程的概念,能够自行单独启动或销毁,拥有自己独立的数据库。微服务强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用,狭义的看,可以看做IDEA中...

2020-02-18 13:08:22 402

原创 URL和URI的区别

URL (uniform resource locator):统一资源定位符,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。统一资源标志符URI就是在某一规则下能把一个资源独一无二地标识出来。如人的名字。URI(uniform resource identifier): 统一资源标识符,用来唯一的标识一个资源。现实当中名字当然是会重复的,所以身份证号才是URI,通过身...

2020-02-18 10:50:02 182

原创 Zuul路由网关(七)

什么是ZuulSpring Cloud Zuul 是整合Netflix公司的Zuul开源项目,Zuul包含了对请求路由和校验过滤两个最主要的功能:1. 路由功能负责将外部请求准发到具体的微服务实例上,是实现外部访问统一入口的基础。 客户端请求网关/api/product,通过路由转发到product服务 客户端请求/api/order,通过路由转发到order服务2...

2020-02-17 18:16:41 171

原创 Hystrix Dashboard监控平台搭建(六)

Hystrix提供了准时的调用监控(Hystrix Dashboard),会持续地记录所有通过Hystrix发起的请求的执行信息,并以统计表和图形的形式展示给用户。简单服务监控模块的搭建1.创建springcloud-hystrix-dashboard-9001模块2. 配置pom.xml<project xmlns="http://maven.apache.org/P...

2020-02-17 16:07:11 256

原创 Hystrix的简单应用(五)

前言:微服务架构面临的问题在微服务架构中,根据业务来拆分成一个个的服务,而服务与服务之间存在着依赖关系,在SpringCloud中多个微服务之间可以用RestTemplate + Ribbon 和Feign来调用。在服务之间调用的链路上由于网络原因,资源繁忙或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,导致响应时间过长或不可用,此时若有大量...

2020-02-17 14:46:58 232

原创 Feign的理解和实例(四)

一. 什么是FeignFeign是Netflix公司开源的轻量级Rest客户端,SpringCloud对Feign进行了封装,Feign默认集成了Ribbon实现了客户端负载均衡调用。使用Feign只需要定义一个接口,并使用注解的方式配置它(在接口上添加注解即可)。微服务间的调用有两种方式: 1. 通过微服务名称,获得服务的调用地址---Ribbon 2. 通过接口 + 注解,...

2020-02-16 20:19:02 413

原创 Ribbon之自定义负载均衡算法

官网指出:这个自定义的类不能放在@ComponentScan所扫描的当前包以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,也就是我们达不到特殊化指定的目的了。推荐在springboot主程序扫描的包范围之外进行自定义配置类。代码实现如下配置类不应该在SpringBoot的包路径下,通过@RibbonClient 注解加载:package com.dsx...

2020-02-16 18:00:08 239

原创 Ribbon详解(三)

Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon的客户端组件提供一系列完整的配置项,如连接超时,重试等等。简单的说,就是在配置文件中列出LoadBalancer (简称LB: 负载均衡)后面所有的机器,Ribbon会自动的帮你...

2020-02-16 16:33:22 406

原创 Eureka实现服务注册与发现(二)

一. Eureka介绍Eureka是Netflix开源的服务注册发现组件,是一个基于REST的服务,Spring Cloud Eureka是对Netflix公司的Eureka的二次封装,它实现了服务治理的功能,提供了Eureka Server服务端与 Eureka Client客户端,服务端即Eureka服务注册中心,系统中的其他服务,使用Eureka的客户端连接到EurekaServer并维...

2020-02-15 22:16:33 570

原创 Eclipse如何搭建父子工程

搭建环境:Eclipse +JDK1.8首先见一个maven父工程,右键--->new---->other---->Maven--->Maven Project 然后点击next。选择创建一个简单的项目这样父工程就创建好了,注意父工程的pom文件接着创建一个maven的子工程:右键--->new --->Other ---&g...

2020-02-15 10:48:25 1539

原创 Eclipse 创建maven项目

一. 准备工作 jdk1.8 参考博客:https://blog.csdn.net/duan196_118/article/details/104132534 maven3.6 参考博客:https://blog.csdn.net/duan196_118/article/details/104298989 tomcat8.5 参考博客:https://blog.csd...

2020-02-13 19:48:28 280

原创 Eclipse中如何配置Tomcat

Eclipse环境下配置Tomcat8.5.391. 打开Eclipse,单击“Window”菜单,选择下方的“Preferences”。2.单击“Server”选项,选择下方的“Runtime Environments”,点击Add。3. 添加tomcat4.选择自己安装的Tomcat路径接着点击Apply and Close5. window...

2020-02-13 19:22:51 512

原创 maven的安装与Eclipse配置maven环境的详细步骤(完整版)

一 maven和maven仓库的简单介绍:1.1 maven的介绍 Maven 翻译为"专家"、"内行",是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。 Maven 是一个项目管理工具,可以对 Java 项目进行构建、jar包下载,依赖管理。...

2020-02-13 18:52:25 1250 3

原创 Mybatis逆向工程(六)

Mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码,提高工作效率。逆向工程是一个普通的java项目:GeneratorSqlmap.javaimport java.io.File;import java.util.ArrayList;import java.util.List;import org.mybatis.generator....

2020-02-12 11:01:16 121

原创 Mybatis的动态开发(五)

Mybatis动态开发时Mapper需要遵循以下规范:1、Mapper.xml文件中的namespace与mapper接口的类路径相同。2、Mapper接口方法名和Mapper.xml中定义的每个statement的id相同3、Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同4、Mapper接口方法的输出参数...

2020-02-12 10:24:47 96

原创 Mybatis和Hibernate的区别(四)

Mybatis和Hibernate都是优秀的开源框架,它们都支持jdbc并且拥有缓存机制。那它们有什么区别呢?mybatis是不完全的orm框架,实现sql语句与java代码相分离,灵活度较高,适合需求变化多的项目。hibernate是ORM框架,以完全面向对象的方式操作数据库,数据库无关性好,但对sql的优化和修改比较困难,适合需求变化不多的中小型项目。https://blog.51...

2020-02-12 08:15:30 140

原创 Mybatis解决数据库字段名和实体类属性名不一致的问题(三)

通常我们设计数据库表字段时会使用下划线拼接,而javaBean中通常使用驼峰命名表示属性。如表中的某个字段user_id-->userId,如何解决数据库字段名和实体类属性名不一致的问题问题呢?方法一:使用别名的形式​<select id="findByTel" resultType="user"> select user_id as userId, age,...

2020-02-11 22:21:37 2376

原创 Mybatis之#与$的区别(二)

在Mybatis简单入门的博客中,已经简单的看出#与$的区别,本文具体介绍它们的区别。#1.#{}可以防止sql注入,拿到值拼装sql时,会自动添加单引号,形参为单个的简单类型时可以随意填写。2.#{}传入值时,sql解析时,参数是带引号的。3.#{}: 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符,一个 #{ } 被解析为一个参数...

2020-02-11 22:00:10 135

原创 Mybatis入门详解(一)

一.什么是Mybatis官方说明: Mybatis是一款优秀的持久层框架,它支持制定化SQL,存储过程以及高级映射。Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Mybatis可以使用简单的XML或注解来配置和映射原生信息,将接口和java的pojo映射成数据库中的记录。个人理解:Mybatis是一个半ORM(对象关系映射)框架,对jdbc的操作数据库库的过程...

2020-02-11 20:53:17 593

原创 JVM的调优(六)

在之前的博客中涉及到了JVM的调优,本文针对JVM的调优做一个简单的小结。1.JVM的调优参数 1.1 JVM三大性能调优参数 -Xss:规定了每个线程虚拟机(堆栈)的大小 -Xms:堆的初始值 -Xmx:堆能达到的最大值 1.2 堆设置 -Xms:初始堆大小 -Xmx:...

2020-02-10 19:20:59 404

原创 JDK 1.8 新特性

jdk1.8(Java 8)是java语言开发的一个主要版本,Oracle公司于2014年3月18日发布Java 8.它支持函数式编程,新的JavaScript引擎等等。1. Lambda表达式 它允许把函数作为一个方法的参数 格式:(parameters参数)-> expression表达体或方法体 parameters参数: ...

2020-02-10 14:46:10 334

原创 Java内存模型JMM(五)

JMM即java内存模型(Java Memory Model)。它定义了java虚拟机(JVM)在计算机内存中的工作方式。JVM是整个计算机虚拟模型,所有JMM隶属于JVM。从抽象角度来看,JMM定义了线程和组内存之间的抽象关系,线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存,本地内存中存储了该线程以读/写共享变量的副本。本地内存是JVM的一个抽象概念,并不是真实存在。它涵盖了缓...

2020-02-09 17:37:28 336

原创 jvm GC垃圾回收机制(四)

上一篇博客中介绍到JVM的垃圾回收机制中GC主要发生在堆中,堆区由所有线程共享,在虚拟机启动时创建。主要用于存放对象实例和数组,所有new出来的对象都存储在该区域。jvm虚拟机,本地方法栈,程序计数器不需要进行垃圾回收,因为它们的生命周期是和线程同步的,随着线程的销毁自动释放内存,所有,只有方法区和堆区需要进行垃圾回收,回收的对象就是不存在任何引用的对象。堆中内存分布:针对于分代收集算...

2020-02-09 16:04:37 277

原创 走近栈,堆 和方法区(三)

对于JVM大家知道几种呢?除了java开发常用的HotSpot外,其实还有另外两种JVM的存在。只做简单的了解即可。1. Sun公司 HotSpot Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)2. BEA JRockit3. IBM J9 VM本文介绍的是HotSpot的栈,堆和方法区。一...

2020-02-08 21:46:00 296

原创 java 中的native 关键字

native关键字在之前的博客中提起过,在看java源码时多次看到native的身影,更加好奇特在此做一个简单的总结。1. native用来修饰method,表明java的作用范围达不到了,回去调用底层c语言的库。用native修饰的方法,在虚拟机里都有一个与这个java方法同名的函数帮助java做想做的事情。2. native关键字说明这个方法是原生函数,这个方法是用c/c++语言实现...

2020-02-08 11:55:44 289

原创 JVM之类加载机制和类加载器 (二)

虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。类加载的全过程类从被加载到虚拟机内存开始,到卸载。生命周期包括七个阶段,如下图:注意:加载--->验证--->准备--->初始化--->卸载这5个阶段的顺序是确定的,而解析可能为了支持Ja...

2020-02-07 21:44:17 287

原创 浅谈jvm体系结构(一)

JVM是java程序得以运行的平台,也是java程序可以跨平台的底层支撑。下面是JVM的一个体系结构图类加载器(Class Loader)Class文件需要被加载到内存里才能得以运行和使用。虚拟机把Class文件加载到内存后,对数据进行验证,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。具体内容在之后的篇幅进行详细介绍。参考博客https:...

2020-02-07 20:15:19 1654

原创 java开发环境——JDK的安装及配置

不知读到此文的朋友在java之路走了多久,本文回顾刚接触java时进行的第一个操作吧。java开发环境jdk的安装与配置。一、JDK的下载及安装官网地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html根据自己需要,下载所需的JDK安装包(记得勾选 Accept License Agreement同意许...

2020-02-07 15:08:43 2677

原创 jdk,jre 与 jvm 的联系与区别

对于刚接触java的小伙伴们,对jdk,jre 与 jvm 的联系与区别可能一头雾水,很多java程序员在写了很多代码后,对于此问题也不知所云。本文就做一个回顾总结,希望可以帮到小伙伴们。简单来说就是: JDK包含jre,jre包含jvm。jre只是提供了java的运行环境,只能运行class而没有编译功能,而JDK是用于java程序的开发,它的功能比较多。jdk安装成功后,打开...

2020-02-07 15:07:12 677

原创 面向对象设计需要遵循的七大原则

开闭原则:对外开放,对修改关闭。里氏替换原则:继承必须确保超类所拥有的性质在子类中仍然成立。依赖倒置原则:要面向接口编程,不要面向实现编程。单一职责原则:控制类的粒度大小,将对象解耦,提高其内聚性。接口隔离原则:要为各个类建立它们需要的专用接口。迪米特法则:只与你的直接朋友朋友交谈,不跟“陌生人”说话。合成复用原则:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承...

2020-02-06 21:44:57 829

原创 设计模式之代理模式

代理模式(Proxy pattern) 代理模式为其它对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介作用。可以在目标对象实现的功能上,增加额外的功能补充,即扩展目标对象的功能。举个例子来说:房东和租房中介之间就是代理与被代理的关系,房东出租房屋,可以看做是一个目标对象,其他琐碎事交给中介来处理。代理模式设计到的角色: 抽象角色:声明真实...

2020-02-06 19:53:01 145

原创 设计模式之工厂模式

工厂模式工厂模式(Factory Pattern)是java中最常用的设计模式之一,这种类型的设计模式属于创建型模式,在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式实现了创建者和调用者的分离。通常指的三个工厂模式:简单工厂模式(静态工厂模式),工厂方法模式,抽象工厂模式。OOP设计的基本原则: 1. 开闭原则(OC...

2020-02-06 15:48:55 138

原创 Spring IOC 和AOP 的理解

AOP:面向切面编程,减少系统中的复用代码,降低了模块间的耦合度,同时提高系统的可维护性。AOP实现的关键在于代理模式,AOP代理主要分为静态代理和动态代理。静态代理的代表是AspectJ;动态代理则以SpringAOP为代表。(1)AspectJ是静态代理的增强,所谓静态代理,就是AOP框架会在编译阶段生成AOP代理类,因此也称为编译时增强,他会在编译阶段将AspectJ(切面)织入到J...

2020-02-05 17:35:24 453 1

原创 Eureka的理解及与Zookeeper的区别

Eureka介绍:Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移,服务注册与发现对于微服务来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了,功能类似于Dubbo的注册中心,比如Zookeeper;SpringCloud集成了Eu...

2020-02-05 14:06:30 245

原创 防止form表单提交的几种方式

1. 背景介绍在开发项目中肯可能会出现如下情况: 1. 用户的失误操作,多次点击表单提交按钮 2. 由于网速等原因造成页面卡顿,用户重复刷新提交页面 3. 黑客或恶意用户使用postman等工具重复恶意提交表单....这些情况都会导致表单的重复提交,导致数据重复,增加服务器的压力,甚至会造成服务器宕机,因此要有效防止表单重复提交非常必要。2. 解...

2020-02-04 15:55:53 3254

原创 Http常见状态码

HTTP状态码(HTTP Status Code)是用来表示Web服务器响应HTTP请求状态的数字代码。每当客户端向Web服务器发送一个HTTP请求时,Web服务器都会返回一个状态响应代码。100:客户端继续其请求101:切换协议,服务器根据客户端的请求切换协议,并且只能切换到更改级的协议。200:请求成功。204:请求成功,但无资源可以返回301:永久重定向302,307...

2020-02-03 15:35:25 280

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除