- 博客(233)
- 资源 (4)
- 收藏
- 关注
原创 解决java.nio.charset.MalformedInputException: Input length = 1
问题: 在启动springboot项目时候,报错java.nio.charset.MalformedInputException: Input length = 1解决办法:将项目编码GBK改成UTF-8
2021-03-01 22:02:52 2650
原创 springCloud教程(二)---服务注册与发现Eureka
一 什么是注册中心 注册中心相当于微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。注册中心主要涉及到三大角色:服务提供者 服务消费者 注册中心...
2020-11-06 13:42:23 591 1
原创 Java多线程高并发(二) java内存布局
一 java对象创建 对象创建底层原理图:创建的对象我们如何知道其具体的内存布局情况呢?可以通过jol来查看。导入maven的openjdk.jol包 <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <ve...
2020-05-28 14:07:01 669
原创 JVM(六)---jvm压缩指针
一 什么是oop OOP = “ordinary object pointer” 普通对象指针。 启用CompressOops后,会压缩的对象: 1. 每个Class的属性指针(静态成员变量) 2. 每个对象的属性指针 3. 普通对象数组的每个元素指针 当然,压缩也不是万能的,针对一些特殊类型的指针,JVM是不会优化的。 比如指向 PermGen的Class 对象指针,本地变量,堆栈元素,入参,返回值,NULL指针不会被压缩二 为什么使用压缩指针 ...
2020-05-26 17:07:01 553 2
原创 Java多线程高并发(一) CAS原理
一 问题引入 当我们测试多个线程操作a++的时候,会出现以下结果public class CasDemo2 { public static void main(String[] args) { Castest castest=new Castest(); for(int i=0;i<10;i++){ ...
2020-05-18 17:35:25 1009
转载 java内存模型以及valatile关键字
java内存模型(Java Memory Model,JMM)是java虚拟机规范定义的,用来屏蔽掉java程序在各种不同的硬件和操作系统对内存的访问的差异,这样就可以实现java程序在各种不同的平台上都能达到内存访问的一致性。可以避免像c++等直接使用物理硬件和操作系统的内存模型在不同操作系统和硬件平台下表现不同,比如有些c/c++程序可能在windows平台运行正常,而在linux平台却运行有...
2020-05-07 17:35:51 466
原创 数据库系统原理
一、事务概念事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。ACID1. 原子性(Atomicity)事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用回滚日志来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。2. 一致性...
2020-03-11 17:06:47 1427
原创 JVM(五)---OutOfMemoryError实例
一 前言OutOfMemoryError异常是在编程过程中因为程序的处理问题或者jvm参数配置的问题而导致的错误。在虚拟机的这几个运行时区域都有发生OutOfMemoryError的可能:java堆,虚拟机栈,本地方法栈 ,方法区,运行时常量池,直接内存。下面针对这些例举几个代码例子来说明。二 java堆溢出 Java堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots...
2019-10-24 17:52:13 493
转载 Node.js安装及环境配置之Windows篇
from:https://www.cnblogs.com/zhouyu2017/p/6485265.html一、安装环境1、本机系统:Windows 10 Pro(64位)2、Node.js:v6.9.2LTS(64位)二、安装Node.js步骤1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/2、选安装目录进行安装3、环境...
2019-07-15 10:44:22 248
转载 idea阿里代码规范检查工具的安装使用
阿里代码规范检查工具的安装使用阿里巴巴于 10 月 14 日在杭州云栖大会上,正式发布众所期待的《阿里巴巴 Java 开发规约》扫描插件!简单了解一下这插件该插件由阿里巴巴 P3C 项目组研发。代码已经开源,GitHub:https://github.com/alibaba/p3c阿里介绍文章:https://mp.weixin.qq.com/s/IbibsXlWHlM59kfX...
2019-07-08 13:25:30 10711 1
转载 Executor线程池框架详解
为什么引入Executor线程池框架new Thread()的缺点每次new Thread()耗费性能调用new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪。不利于扩展,比如如定时执行、定期执行、线程中断采用线程池的优点重用存在的线程,减少对象创建、消亡的开销,性能佳可有效控制最大并发线程数,提...
2019-07-01 21:50:27 254
转载 tomcat日志排查
tomcat里的几类日志: Catalina localhost manager host-manager access前言:有时候我们会碰到代码本地测试没问题,然鹅发到生产却出现了问题。这时候想解决问题,在本地测试没多大效果的,最好的办法是去生产上把日志搂出来,根据异常日志来排查问题,但是生产上那么多日志该如何下手呢?项目中常用的三种日志catalina.out catalina.log...
2019-06-26 20:21:04 2522
转载 Linux实时查看日志的四种命令详解
如何在Linux中实时查看日志文件的内容?那么有很多实用程序可以帮助用户在文件更改或不断更新时输出文件的内容。在Linux中实时显示文件内容的常用命令是tail命令(有效地管理文件)。1. tail命令 - 实时监控日志如上所述,tail命令是实时显示日志文件的最常用解决方案。但是,显示该文件的命令有两个版本,如下面的示例所示。在第一个示例中,命令tail需要-f参数来跟踪文件的...
2019-06-26 20:11:42 59348 1
原创 Dubbo源码解析(二)---Extension 机制
一 什么是Extension 机制Dubbo的类加载机制是模仿jdk的spi加载机制;Jdk的SPI扩展加载机制:约定是当服务的提供者每增加一个接口的实现类时,需要在jar包的META-INF/service/目录下同时创建一个以服务接口命名的具体实现类,该文件里面就是保存的实现该接口的具体实现类。而当外部程序装配这个模块的时候,就能通过该jar包META-INF/services/里的...
2019-06-18 19:25:47 1110
转载 Java Annontation(注解)详解
java中经常用到注解(Annontation),索性整理了下关于注解的相关知识点:一、概念Annontation是Java5开始引入的新特征,类似与.NET 中的attribute。中文名称一般叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。 更通俗的意思是为程序的元素(类、方法、成员变量)加上更直观更...
2019-06-18 12:10:52 791
转载 dubbo注册中心
Dubbo目前支持4种注册中心,(multicast zookeeper redis simple)推荐使用Zookeeper注册中心,Multicast注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现组播受网络结构限制,只适合小规模应用或开发阶段使用。组播地址段: 224.0.0.0 - 239.255.255.255相关概念解析:提供方...
2019-06-13 14:17:12 13170
原创 Dubbo源码解析(一)---架构概述
一 前言 之前的文章描述了如何简单的搭建dubbo服务,会用只是迈入了初级阶段。要想更好的理解原理,只能通过源码。为什么要看源码呢?因为好的源码是一些大牛级别的工程师呕心沥血的结晶,这里面渗透着好多东西,比如设计模式,算法,以及我们可以更清楚的从开发者的角度去理解代码。所以在接下来的时间里会记录些dubbo核心源码的心得。二 dubbo核心模块 核心模块职责介绍:...
2019-06-11 14:54:58 8113
原创 java设计模式之装饰模式
一 什么是装饰模式装饰器模式装饰器模式又称为包装(Wrapper)模式。装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰器模式的结构通常给对象添加功能,要么直接修改对象添加相应的功能,要么派生子类来扩展,抑或是使用对象组合的方式。显然,直接修改对应的类的方式并不可取,在面向对象的设计中,我们应该尽量使用组合对象而不是继承对象来扩展和复用功能,装饰器模式就...
2019-06-11 11:58:37 317
转载 java设计模式之观察者模式
1 初步认识观察者模式的定义: 在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。大白话: 其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。2 这个模式的结构图3、可以看到,该模式包含四个角色抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,...
2019-06-10 17:13:41 184
原创 springboot实战笔记(十六)---- 监控 Spring Boot 的健康状况
一使用 Actuator 检查与监控 1.1 创建项目,添加Actuator依赖,pom.xml文件如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSc...
2019-06-02 17:17:12 475
原创 springboot实战笔记(十五)----springboot多环境配置
一 前言 我们在工作当中一般分为三个环境:开发环境,测试环境,生产环境,所以我们在启动项目的时候在不同的环境中启动,此时 我们需要进行springboot多环境配置。二 准备工作 创建一个简单的项目进行模拟,创建项目,如下application-dev.properties:#开发环境server.port=8181application-prod.prop...
2019-05-31 19:55:05 253
原创 springboot实战笔记(十四)----springboot异常处理
一 前言 在系统中异常的出现是无可避免的,那么对于异常的处理,如何将出现异常后返回给前台不同的提示呢?而且以不同页面效果展示给前端呢?接下来说一下springboot其中常见两种处理异常的方式,自定义 HandlerExceptionResolver 的类处理异常。还有一个是@ControllerAdvice+@ExceptionHandler 注解处理异常。二 自定义 Handl...
2019-05-31 15:55:40 250
原创 微服务的设计原则
一 前言 微服务是一种架构风格。一个大型的复杂软件应用,由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好的完成该任务。那么关于微服务的设计原则有哪些呢?如下:AKF 拆分原则 前后端分离原则 无状态服务 RestFul 的通信风格二AKF 拆分原则 有句挺流行的话:没有什么事是一顿烧烤解决不了的,如果...
2019-05-30 20:01:16 3150 1
原创 springboot实战笔记(十三)----springboot热部署
一 何为热部署对于Java应用程序来说,热部署就是在运行时更新Java类文件,也就是更新完文件后不需要你重启应用。springboot常见的部署方式有:springloader插件 DevTools工具二 项目创建1.pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://...
2019-05-30 17:06:41 320
原创 springboot实战笔记(十二)----springboot常见表单数据校验
一 创建模拟用户注册项目 pom.xml文件:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http:/...
2019-05-29 17:35:26 1038
原创 springboot实战笔记(十一)----springboot整合freemarker
一 创建springboot项目pom.xml文件如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http:...
2019-05-29 13:28:02 570
原创 springboot实战笔记(十)----springboot整合jsp
一 创建一个springboot项目pom.xml文件如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 htt...
2019-05-28 21:30:27 418
原创 springboot实战笔记(九)----springboot文件上传
一 创建springboot项目pom.xml文件如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http...
2019-05-28 19:38:02 216
原创 springboot实战笔记(八)----访问静态资源的方式
一 前言 springboot访问静态资源有以下两种方式:SpringBoot 从 classpath/static下访问,注意目录名称必须是static ServletContext 的根目录下二 static目录下访问简单的启动springApplication后,访问资源三ServletContext 根目录下访问启动springApplica...
2019-05-28 16:33:24 249
原创 springboot实战笔记(七 )----springboot整合Listener
一 前言在以往的web.xml方式中,我们是通过以下形式进行配置Listener的:<listener> <listener-class>com.bjsxt.listener.FirstListener</listener-class></listener>但是在springboot整合Listener可以通过以下的两种方式,...
2019-05-28 15:54:07 604
原创 springboot实战笔记(六 )----springboot整合Filter
一 前言在以往的web.xml方式中,我们是通过以下形式进行配置的:<filter> <filter-name>FirstFilter</filter-name> <filter-class>com.bjsxt.filter.FirstFilter</filter-class></filter><...
2019-05-28 15:28:31 180
原创 springboot实战笔记(五)----springboot整合servlet
一 前言在以前的web.xml方式中,我们是通过以下形式进行配置的:<servlet> <servlet-name>FirstServlet</servlet-name> <servlet-class>com.bjsxt.servlet.FirstServlet</servlet-class></serv...
2019-05-28 14:37:39 441
原创 JVM常见面试题
一什么是内存溢出,内存泄漏 :当一个对象已经不需要再使用本该被回收时,另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这时候产生内存泄漏,让我们来看看下面这个例子,看看为什么内存泄漏会发生。在如下例子中,对象A引用了对象B。A的生命周期(t1—t4)要比B的生命周期(t2—t3)长很多。当B不再用于应用中时,A仍然持有对...
2019-05-03 16:47:15 1837
原创 JVM(二)---HotSpot 虚拟机对象探秘
一 前言 通过上一篇JVM(一)我们大致知道了JVM虚拟机的内存的概况,接下来来了解下HotSpot 虚拟机在 Java 堆中对象分配、布局和访问的全过程。二 对象的创建1.类加载检查:虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,(因为常量池中存放的是编译期生成的字面量跟符号引用)并且检查这个符号引用代表的类是否已...
2019-04-27 14:21:33 186
原创 JVM(四)---分代垃圾回收
一 前言 本篇重点整理现在最普遍使用的垃圾回收算法,分代垃圾回收算法。基于对对象生命周期分析后得出的垃圾回收算法。把对象分为年青代、年老代、持久代,对不同生命周期的对象使用不同的算法(上述方式中的一个)进行回收。现在的垃圾回收器(从J2SE1.2开始)都是使用此算法的。二 概念JVM堆内存分为2块:Permanent Space和 Heap Space。Permanent...
2019-04-26 15:56:18 413
原创 JVM(三 )---基本垃圾回收算法
按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep):此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法...
2019-04-26 14:22:43 129
原创 JVM(一)---原理与运行机制
一 原理及运行机制我们都知道java语言的最大优点在于他的跨平台概念,为什么能跨平台?因为有了这个jvm,中文为java 虚拟机.正因为它的存在所以有了一次编译,到处运行一说..Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:运行期环境代表着Java平台,开发人员编...
2019-04-26 13:23:26 225
转载 @Transactional注解在什么情况下会失效,为什么。
首先我们来了解@Transactional这个注解:@Transactional注解事务的特性:1.service类标签(一般不在接口上)上添加@Transactional,可以将整个类纳入spring事务管理,在每个业务方法执行时都会开启一个事务,不过这些事务采用相同的管理方式。2.@Transactional注解只能应用到public可见度的方法上。如果应用在protected、p...
2019-04-06 14:37:47 685
原创 ArrayList在循环过程中删除中出现的问题
前言之前搜索面试题的时候,出现了一个题:一个ArrayList在循环过程中删除,会不会出问题,为什么?心里想的答案是肯定会有问题但是又不知道是为什么,在搜索到答案后,发现里面其实并不简单,所以专门写篇文章研究一下。for循环正向删除先看示例,再解析原因:public static void main(String[] args){ List<String&g...
2019-04-05 20:53:06 2600 2
原创 Spring源码解析(二)---spring容器的基本实现
一 前言 我们都知道spring两大核心原理:IOC与AOP. IOC:(全称:Inverse Of Control )控制反转,容器主动将资源推送给它所管理的组件,组件所做的是选择一种合理的方式接受资源。通俗点讲:就是一个容器工厂,里面加工了各种资源对象,当我们需要的时候直接从里面取出,正是工厂模式的一个良好的展现。IOC容器大致分为两种:BeanFactory 容器与A...
2019-03-28 14:15:26 322
zooKeeper-3.4.8
2019-02-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人