自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不再更新,新博客 chgl16.space

早期学习踩坑记录

  • 博客(222)
  • 收藏
  • 关注

原创 Thymeleaf总结

1. Thymeleaf引用母版页<!DOCTYPE html><!-- 引入对应的命名空间 --><html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/web/thymeleaf/layout" layout:decorator=...

2019-08-31 10:01:19 1064

原创 try-catch-finally一些问题

finally是必须执行的语句块,即便try或者catch有返回。但是测试过其实try或者catch里面的return是先执行的,只是结果缓存了,没有跳转,而是到了finally语句块。来两段代码记录下public class App { public static void main( String[] args ) { System.out.println("P...

2019-07-09 22:12:21 506

原创 Git创建一个空的分支,指定-b分支下载问题

空分支在项目开发到一半的时候,创建一个新分支git checkout -b branch-name但是这个新分支也会包括当前所有的文件,也就是它依赖于原(master)父分支生成的,即便是另外开一个空文件夹,把 .git 本地仓库放进去,创建一个新的分支,提交依然会附加之前的文件。想创建一个全新的分支的方法如下:git checkout --orphan branch-name这是...

2019-06-16 22:43:57 2110

原创 RabbitMQ介绍&安装

介绍RabbitMQ是一种基于AMQP(高级消息队列协议)的消息中间件。分为消息生产者、消费者服务端是一个broker,里面就是一个虚拟主机,虚拟主机里面有三种交换机和绑定的队列直连、主题、广播三种交换机,根据关键字单词匹配安装安装比较繁琐,因为RabbitMQ是基于Erlang语言编写的,需要安装那个语言的环境,类似安装Tomcat需要安装JDK。可以去官网下载最新包或者源码...

2019-05-15 17:00:04 637

原创 京东 2019实习生Java笔试题目2,求T串中最多的不相交Sm子串的个数

1. 题目样例输入:3aabacbbaac样例输出:3样例解释:把T中字符从1开始编号,用[L,R]表示从第L个字符到第R个字符所构成的子串。一种选择子串的方法是[1,1],[2,2],[3,4] (b、b、aa) 一共3个串,另一种选法是[1,1],[2,2],[4,5] (b、b、ac) 一共也是3个串。注意不能同时选择子串[3,4],[4,5]因为它们相交了。...

2019-04-13 22:06:29 649

原创 高并发synchronized深入详解

1. synchronized概述  synchronized是Java的一个关键字,修饰符。是Java多线程加锁机制的一种,一种隐式内置锁/监听器锁(对比显式Lock锁)。它也是一种互斥锁,保证了被修饰的块每次只能有一条线程访问。1.1 细分对象锁:synchronize修饰的是实例方法、synchronized语句块参数使用的是实例对象类锁: synchronized修饰的是类方法、...

2019-04-05 23:29:41 1069

原创 Git/GitHub 小技巧总结

1. 撤销git add .# 添加修改git add .# 撤销添加 git reset HEAD .图片来自网络2. Git忽略添加某些文件比如我们 git add .,添加修改以便提交的时候,我们不希望添加target目录,可以配置忽略文件在项目仓库更目录下新建 .gitignore 文件,添加以下内容即可# 忽略添加target目录/target/...

2019-04-03 12:46:09 449

原创 常用设计模式——单例模式

个人整合学习自《Java设计模式》 刘伟 编著单例模式Singleton Pattern:确保一个类职业一个实例,并提供一个全局访问点来访问这个唯一实例。也是一直创建型模式。单例模式的三个要点:某个类只能有一个实例;它必须自行创建这个实例;它必须自行向整个系统提供这个实例。实现1. 饿汉式单例...

2019-04-03 11:12:16 514

原创 Spring Cloud Ribbon实现客户端负载均衡

  在分布式架构中,服务端负载均衡通常由Nginx实现分发请求的,而客户端的同一个实例部署在多个应用上时,也需要实现负载均衡,Spring Cloud Ribbon( [ˈrɪbən] ) 正好提供了这个功能。1. Ribbon  Ribbon [ˈrɪbən] 是 Netflix 发布的开源项目,其主要功能是提供客户端的软件负载均衡,将 Netflix 的中间层服务连接在一起。 Ribb...

2019-03-27 20:28:44 616

原创 Spring Cloud Eureka实现服务发现

1. Eureka  Eureka [jʊ’ri:kə] 是Netflix发现的一个服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS(Amazon Web Service)域中的中间件服务,以达到负载均和和中间服务故障转移的目的。Spring Cloud将其集成在自己的子项目Spring Cloud Netflix中,以实现Spring Cloud的服务发现功能。  Eu...

2019-03-25 17:31:38 1349 1

原创 Maven项目继承父项目依赖

Maven子项目继承父项目的依赖比较常用。比如Spring Boot项目<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version&g...

2019-03-24 21:06:56 5933 1

原创 JVM运行时数据区域

个人学习整合自:《深入理解Java虚拟机》 周志明著

2019-03-23 17:43:54 357

原创 Java异常处理机制

1. 异常层次结构图图片来自网络,侵删。Java异常的处理机制是:抛出异常,捕获异常Java异常都是对象,都派生自java.langThrowable类,主要分为Exception和Error两类Error:程序无法处理的严重错误, 比如OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。Exception:程序本身可以处理的异常,分为运...

2019-03-21 17:48:00 347 1

原创 单体架构、SOA、微服务架构

1. 单体架构的问题  在Java Web开发中,web工程一般会被打包为war包部署在Servlet容器中,如Tomcat。比较简单,开发和调试部署都很方便。  但是当用户量大时,并发量高时,一台机器是无法满足系统的负载的,我们会考虑水平拓展,比如增加服务器的数量,通过负载均衡器(如Nginx)很容易实现应用的水平拓展。但是时间推移,还是会产生很多问题:应用复杂度增加,更新、维护困难影...

2019-03-18 23:14:11 9702

原创 常用设计模式——创建者模式

个人整合学习自《Java设计模式》 刘伟 编著模式概述Builder Pattern: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。也是一种创建型模式。Builder(抽象建造者):接口、抽象类,一般包括builderPartX()和getResult()两种方法ConcreteBuilder(具体创建者):实现类Product(产品):被构建的复...

2019-03-13 22:06:04 654

原创 常用设计模式——抽象工厂模式

个人整合学习自《Java设计模式》 刘伟 编著模式概述抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形式。抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品,而抽象工厂模式针对的是多个/一组产品,常见的用途是换皮肤(皮肤里面有很多组件,对应一组产品)模式结构抽象工厂:声明一组产品创建的方法,每一个方法对应返回一种抽象产品。具体工厂:实现抽象工...

2019-03-12 17:59:20 593

原创 Java面向对象设计原则

个人学习整合自《Java设计模式》 刘伟 编著面向对象设计原则目的是软件的可维护性和可复用性。最常见的有以下七个。1. 单一职责原则Single Responsibility Principle(SRP)一个对象一个只包含单一的职责,并且该职责被完整地封装在一个类中。比如说一个类里面有数据库连接方法,数据库CRUD方法,显示打印方法,那么对应的实例对象的职责就太多了。以后...

2019-03-11 23:56:50 1982

原创 Java 快速排序

  快排本质上也是交换排序。不过对比交换排序的只能一直替换相邻元素的费劲。快排使用双向检索交换。好久不写,漏洞百出。常见的数组下标越界问题。package xyz.cglzwz.question_bank;public class QuickSort { public static void main(String[] args) { int[] s = new int[] {0, ...

2019-03-10 11:36:25 537

原创 常用设计模式——工厂方法模式

个人整合学习自《Java设计模式》 刘伟 编著工厂方法模式  工厂方法模式是简单工厂模式的延续,它集成了简单工厂模式的优点,同时还弥补了简单工厂模式的不足。工厂方法模式是使用频率最高的设计模式之一。是很多开源框架和API类库的核心模式。如常见的日志记录工具SLF4J。实现  其实就是把工厂实现类分开,分为一个接口和一个实现类。更加满足开闭原则。如下实例代码Logger: ...

2019-03-08 21:32:22 478

原创 Java对象未初始化,可以调用对象类的静态方法

package xyz.cglzwz.question_bank.simple;public class StaticTest { public static void sayHi() { System.out.println("hi"); } public void sayBye() { System.out.println("bye"); } public sta...

2019-03-07 12:33:16 1740

原创 Java集合remove重载方法越界问题

Java集合,如List,有remove方法,但是这是一对重载方法package xyz.cglzwz.question_bank.collectionandmap;import java.util.ArrayList;import java.util.List;public class ListDemo { public static void main(String[] arg...

2019-03-04 23:52:58 759

转载 常用设计模式——简单工厂模式

个人整合学习自设计模式(菜鸟教程)youlookwhat大佬的GitHub仓库工厂模式在youlookwhat大佬的Github博客提到工厂模式有好几种静态工厂模式:也就是常用的XxxUtil.method() 这种公共类的静态方法,比较简单。简单工厂模式:通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。就是店内直接创建肉夹馍来卖。/** * ...

2019-03-04 23:31:37 411

原创 Java值传递和引用传递

引用传递package xyz.cglzwz.question_bank;public class DeliverTest { public static void main(String[] args) { StringBuffer a = new StringBuffer("A"); StringBuffer b = new StringBuffer("B"); c...

2019-03-04 20:55:07 379

转载 常用设计模式——外观模式

整合学习自设计模式(菜鸟教程)youlookwhat大佬的GitHub仓库外观模式外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。介绍意图: 为子系统中的...

2019-03-04 20:26:53 316

转载 Java集合框架

转自 =&amp;gt; 平凡希一、集合框架图说明:对于以上的框架图有如下几点说明所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。抽象类:5个抽象类(长虚线表示),...

2019-03-01 20:56:09 192

原创 Java String深入解析

① 基础String虽然不是基本数据类型,但是很像基本数据类型。String s1 = "test";String s2 = new String("test");对于第一条,会在常量区创建一个"test"字符串(如果没有),然后s1是压入栈中的一个变量,指向常量区中的"test"对于第二条,new的对象都是在堆中创建的,s2作为对象的引用也是存放在栈中,指向堆中的这个对象。所有 ...

2019-03-01 14:55:41 341

原创 Nginx浏览器无法获取页面,curl成功

描述  非常奇怪,在服务器上使用docker pull nginx,然后在Docker上运行Nginx容器,映射了端口为6666。此时也已经在服务器安全组端口开放那里照常开放了TCP 6666端口。但是在Chrome浏览器上一直显示不能获取到改网站,而且是一下子响应的,并非网站不存在而响应超时无法打开那种。排查  如下进行了各种排查都没问题、服务器查看监听端口 netstat -tpl,...

2019-02-27 20:02:59 5743 2

原创 Tomcat服务器,Nginx实现反向代理负载均衡集群(LBC)

1. 结构图2. Tomcat多服务器配置如果是每个Tomcat都独立于一台主机运行,这非常简单。但是如果单机上运行多个Tomcat节点。每个Tomcat监听的端口需要修改。如下修改 conf/server.xml&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;!-- 自定义关闭端口从7001开始 --&gt;&lt;Server po...

2019-02-26 20:29:01 649

转载 Java中堆、栈、常量池等概念解析

程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的是内存的分配。有六个地方都可以保存数据:(1) 寄存器。这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部。然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配。我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的任何踪迹。(2) 栈(stack)。存放基本类型的变量数据和对象的引用,但...

2019-02-25 18:22:07 258

原创 Java类、接口、方法、变量修饰符总结

Java修饰符修饰符很多,可以分为访问控制修饰符和非访问控制修饰符。(以下在JDK1.8所测)有 public、private、protected、缺省、static、final、synchronized、abstract…①访问控制修饰符修饰符说明public对所以累可见。可使用在:类、接口、方法、变量。private在同一个类可见。可使用在:方法、变量。...

2019-02-25 16:49:50 1029 1

原创 Servlet-API-4.0.1目录结构,常用类接口源码

1. 目录结构http子包机构2. Servlet接口javax.servlet.Servlet是一个接口package javax.servlet;import java.io.IOException;public interface Servlet { void init(ServletConfig var1) throws ServletException;...

2019-02-25 14:43:15 897

原创 JavaScript事件冒泡和事件捕获

概念  事件冒泡和事件捕获是为了解决页面中事件发生的顺序(事件流)问题提出的。两者的顺序完全倒置。事件冒泡是微软提出的。认为发生顺序是从内到外(如泡泡从底网上泡)。而事件捕获是网景提出的,认为发生顺序是从外到内。如下代码:&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt; &lt;title&gt;test&lt;/title&gt;&lt;/...

2019-02-24 10:59:48 349

原创 盒子模型差异

差异IE和W3C盒子模型差异如下:W3C盒模型:width = content.width;heigth = content.heigthIE盒模型:width = content.width + border * 2 + padding * 2 + margin * 2;     height = content.height + border * 2 + padding * 2 +...

2019-02-24 10:22:12 384

原创 nginx Windows版进入错误页面 [crit] 12028#14068: *7 GetFileAttributesEx() 路径错误

Windows版的nginx比较麻烦。默认的配置文件 conf/nginx.conf如下#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/ng...

2019-02-21 13:36:18 1257

原创 前端的一些特殊情况

1. &lt;p&gt;标签无法内嵌&lt;div&gt;标签1.内联标签无法嵌套块状标签2.块状标签可以嵌套内联标签和块状标签p标签是块状,但是是特例。里面不能嵌套块状标签,如div标签。&lt;p&gt; &lt;div&gt;xxxx&lt;/div&gt;&lt;/p&gt;以上在浏览器会被解析成&lt;p&gt; &lt;/p&gt;&lt

2019-02-20 11:24:09 244 1

原创 Java创建对象父子类代码块加载顺序

package xyz.cglzwz.question_bank;public class LoadOrder { public static void main(String[] args) { new B(); }}/** * 父类 * * @author chgl16 */class A { public A() { System.out.print...

2019-02-18 21:29:40 493

原创 同步临界区的访问

概念要点  同步可以解决诸如竞态条件、数据竞争、缓存变量的线程问题。同步是JVM的一个特性,在保证两个或者多个并发线程不会同时执行同一块临界区,临界区就必须以串行方式访问的一段代码块。  因为其他线程在临界区中的时候每条线程对该临界区的访问都会互斥地执行,这种同步属性就称为互斥。也因此线程获取到的锁经常称为互斥锁。  同步保证每一条线程在临界区执行的时候总是看到共享变量最近的修改。当进入临界...

2019-02-17 18:19:30 689

原创 线程交互问题

线程中的问题  线程交互是通过共享变量完成的,当线程之间没有交互时,开发多线程的应用程序就会变得简单很多。一旦发生了交互,很多诱发线程不安全(在多线程环境下不正确)的因素就会暴露出来。这些bug多和竞态条件、数据竞争、缓存变量有关。1. 竞态条件当计算的正确性取决于相对时间或者调度器所控制的多线程交叉时。就会发生竞态条件。有以下两种类型的竞态条件。check-then-act以下例...

2019-02-15 19:35:34 384

原创 线程任务之线程中断、线程等待、线程睡眠

1. 线程中断  Thread类提供了一种线程可以中断其他线程的机制。当一个线程被中断时,它会抛出java.lang.InterruptedException异常。这一机制由下面三种方法构成。一个线程在未正常结束之前, 被强制终止是很危险的. 因为它可能带来完全预料不到的严重后果. 也因此Thread.suspend, Thread.stop等方法都弃用了。那么不能直接把一个线程搞挂掉, 但...

2019-02-14 23:40:23 780

原创 SSM-Cache-Maven项目常用骨架配置抽取

项目目录结构├── pom.xml├── src ├── main │ ├── java │ │ ├── xyz.cglzwz │ │ ├── controller │ │ ├── service │ │ │ ├── impl │ │ ├── domain ...

2019-02-13 13:03:24 317

空空如也

空空如也

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

TA关注的人

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