2 惜春九歌词

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 29w+

2020-10-15

Redis是什么?随着Web应用访问量和并发量的提升,关系型数据库在性能上出现了一些瓶颈,瓶颈的源头便是磁盘的I/O。为了克服这一缺点,NoSQL应运而生,它同时具备了高性能、扩展性强、高可用等优点。Redis是现在最受欢迎的NoSQL数据库之一,其具备以下特性:基于内存运行,性能高效 支持分布式,可扩展行强 ...

2020-10-15 22:30:24

微服务框架之OpenFeign

1. OpenFeign是什么?在微服务架构中,Spring Cloud OpenFeign通过将OpenFeign集成到服务中的方式,为服务之间的调用提供了解决方案。OpenFeign可以做到通过HTTP请求的方式调用远程服务,就像调用本地方法一样。2. 配置OpenFeign2.1 配置pom.xmlOpenFeign的依赖包:<!--openfeign --><dependency> <groupId>org.springfra.

2020-09-18 17:02:48

Spring Boot 自动配置原理

1. 引言Spring Boot作为目前最常用的项目配置框架,其自动配置原理可以说是精髓所在。Spring Boot自动配置的原理一般只在面试中会被问到,但作为一名框架使用者,对这种工具的原理有深入理解也是很有必要的。Spring Boot最主要的作用就是帮我们快速构建庞大的Spring项目,并且尽可能地减少一切xml配置,让我们更关注业务而非配置。2. Spring Boot的配置文件我们知道,使用Spring Boot的项目中有一个全局配置文件:application.propertie

2020-09-09 17:28:52

如何停止一个正在运行的 java 线程?

停止一个正在运行的java线程,主要有以下三种方式:1. 已废弃的 Thread.stop()stop() 的源码就不列了,这是一个自从jdk1.2开始就被废弃的方法。关于该方法的官方解释:这种方法本质上是不安全的。停止一个线程导致它解锁它锁定的所有监视器(未检查的{@code ThreadDeath}异常向上传播堆栈的自然结果)。如果以前受这些监视器保护的任何对象处于不一致的状态,其他线程就可以看到损坏的对象,这可能会导致任意行为。许多使用{@code stop}的代码应该被简单地修改一

2020-08-29 21:19:45

HTTP协议详解

HTTP协议概述HTTP协议,超文本传输协议,是一种用于应用层的协议。HTTP是一个客户端终端和服务器端 请求和应答 的标准。通过使用网页浏览器、网络爬虫或其他工具,客户端发起一个HTTP请求到服务器上的指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。尽

2020-08-18 20:54:24

Spring Boot 视图解析器详解

首先看一下Spring Boot中mvc的自动配置类 WebMvcAutoConfiguration,其中有一个内部类 WebMvcAutoConfigurationAdapter,是Spring Boot 自动化配置mvc的关键类。在WebMvcAutoConfigurationAdapter 中找到视图解析器 defaultViewResolver :@Bean@ConditionalOnMissingBeanpublic InternalResourceViewResolver defau.

2020-08-14 18:18:02

sql 优化

测试sql语句效率的常用方法:1. 慢查询日志慢查询是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句。默认情况下,MySQL数据库并不启动慢查询日志,需要手动来设置这个参数。如果不是调优需要,一般不建议启动该参数,开启慢查询日志会带来一定的性能影响。// 查看慢查询配置show VARIABLES like '%slow%'// 查看慢查询的时间阀值show VARIABLES like 'long_query_time'// 设置慢查询的时间阀

2020-08-08 10:03:44

MySQL索引底层原理

当系统的业务数据量不断增多,sql的执行效率对系统效率的影响越来越大,优化sql语句就显得很有必要。

2020-08-01 09:46:13

java设计模式(二)之适配器模式

适配器的概念:将一个类的接口转换成客户期望的另一个接口。使得原本由于接口不匹配而不能一起工作的类可以一起工作。客户期望的接口A是供应接口,而提供的接口B为需求接口。适配器的适配就是指 需求“适配”供应。假如我的手机充电口是type-c类型的,但我只有一根传统的Micro USB接口的数据线,怎么办?type-c类型的接口就是需求接口,Micro USB类型的接口是供应接口,想让需求匹配供应,就需要有一个适配器。适配器的三种实现方式:1. 类适配器当需要把一个已经实现了接口A的类A

2020-07-25 14:00:09

浅析AQS框架及实现原理

先从 Lock 讲起:Lock同步锁Lock是解决线程安全问题的常用手段,在并发包java.util.concurrent 中。Lock 是一个接口,具体方法如下:void lock(); //线程获取锁,如果锁不可用,则阻塞休眠,直到获得锁被唤醒void lockInterruptibly(); //与lock()方法类似,但阻塞的线程可中断,并抛出异常boolean tryLock(); // 非阻塞线程尝试获取锁,获取成功返回trueboolean tryLock(lo.

2020-07-23 22:38:19

java设计模式(一)之建造者模式

介绍:建造者方法多用于创建实体对象,不通过构造方法或set方法 直接为对象的属性赋值,而是通过实体类中的 自定义内部类给对象赋值。这个自定义内部类,就叫做建造者。在该模式下,构建对象的责任交给了建造者。首先写一种建造模式的简单使用:public class ClassBean { private String className; private List<StudentBean> studentList; public ClassBean() {

2020-07-19 17:47:07

多线程 之 TreadLocal

ThreadLocal 是一个线程内部的存储类,可以在指定线程内存储数据,数据存储后,只有在该线程能得到存储数据。该类提供线程局部变量。 这些变量与它们的正常对应物的不同之处在于,访问其中的每个线程(通过其get或set方法)具有其自己的,独立初始化的变量副本。 ThreadLocal实例通常是希望将状态与线程相关联的类中的私有静态字段(例如,用户ID或事务ID)。ThreadLocal是Thread内的局部变量,可通过为每个线程提供独立的变量副本的方式,解决变量并发访问的冲突问题。Thre

2020-07-18 09:42:44

通过栈结构使单向链表反向

用List来模拟 栈结构,并提供push()和pop()方法实现栈的先进后出特性:public class Stack { private List<ListNode> list; public Stack() { list = new ArrayList<>(); } public ListNode getLastNode(){ return list.get(list.size()-1); }

2020-07-16 17:19:49

Java并发 之 阻塞队列LinkedBlockingQueue与ArrayBlockingQueue

常用的普通队列:ArrayList 和 LinkedList,都实现了List接口,实现的方式不同。ArrayList基于数组实现,查找时效率更高,LinkedList基于链表结构实现,insert和remove效率更高。阻塞队列相比于 普通队列最大的不同点:阻塞队列支持阻塞添加和阻塞删除。阻塞添加是指当阻塞队列元素已满时,队列会阻塞加入元素的线程,直队列元素不满时才重新唤醒线程执行元素加入操作。 阻塞删除是指在队列元素为空时,删除队列元素的线程将被阻塞,直到队列不为空再执行删除操作(可返回被删.

2020-07-10 22:15:41

基于Servlet+Ajax+JSON 的前后端分离

这种开发模式可以称为SPA (Single Page Application 单页面应用)。这种模式下,前后端的分工明确,前端页面与服务器之间通过 Ajax引擎进行通信,Ajax引擎与服务器之间通过 json进行数据交互。相比于 JSP:这种模式将复杂度从服务器转移到了浏览器的 javascript,减轻了服务器的压力。并且 Ajax 实现了网页 异步发送请求和处理响应。1. AjaxAjax 是浏览器端的技术,依靠 js 将多种技术结合,并通过 js 实现。实质是通过js内置的 a

2020-07-03 17:49:25

Java 设计模式之 工厂设计模式

工厂设计模式面向接口编程,降低了实现类和应用程序之间的耦合工厂设计模式的三种形式:1.静态工厂在工厂中有一个静态方法,根据参数来决定“制造”哪种类,将创建对象的责任转移到了工厂类里。产品接口:public interface Product { public void create();}实现接口的具体产品类:public class Washer implements Product{ @Override public void create

2020-06-20 09:52:51

Java CAS机制

什么是乐观锁,悲观锁?synchronized 是悲观锁,某个线程得到锁,其他线程只能挂起等待。 CAS 操作的是乐观锁,不需显示加锁,而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。synchronized 虽然确保了线程的安全,但是在性能上却不是最优的,synchronized 会让没有得到锁资源的线程进入 BLOCKED 状态,而后在争夺到锁资源后恢复为 RUNNABLE 状态。操作原子类:指的是 java.util.concurrent.atomic 包下,一

2020-06-14 21:40:26

Java 并发包及其常用类

并发包体系结构:1. CountDownLatchCountDownLatch 是一个同步工具类,用来协调多个线程之间的同步。CountDownLatch 通过计数器来实现:使一个线程在等待另外一些线程完成各自工作后,再执行。计数器初始值为线程的数量。当每一个线程完成自己任务后,就通过 countDown()方法 将计数器减1。当计数器的值减为0时,表示其他所有线程都已经完成了各自的一些任务,然后在 CountDownLatch 上等待的线程就可以恢复执行接下来的任务。方法源码:/.

2020-06-14 17:10:48

Java多线程-线程池ThreadPoolExecutor构造方法详解

为什么用线程池?频繁的创建和销毁线程需要时间,会大大降低系统的效率。线程池就是一个容纳多个线程的 容器,池中的线程可以反复使用,节省了大量的时间和资源。使用线程池主要为了解决以下几个问题:通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销。 对线程进行一些维护和管理,比如定时开始,周期执行,并发数控制等等。创建和使用线程池:创建线程池有以下两种方法:通过 Executors 类的静态方法 通过ThreadPoolExecutor 的构造方法,自定义线程池通过看Exec..

2020-06-08 22:56:26

基于Collection集合完成图书管理系统

直接贴代码:主类:定义了 管理员登陆和图书管理的一系列方法import java.util.ArrayList;import java.util.Collections;import java.util.HashSet;import java.util.Scanner;public class ManageSystem { public static void main(String[] args) { Administrator p1 = new Administrator..

2020-06-07 20:32:17

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。