自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

花开不合阳春暮

博客中只是一些之前学习的笔记,现在个人改在本地记录笔记,CSDN博客不在维护了!!!

  • 博客(245)
  • 资源 (1)
  • 收藏
  • 关注

原创 反向代理服务器 nginx

Nginx 简介什么是NginxNginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。正向代理 对象是客户端反向代理 代理的是服务端,隐藏了真实服务端 IP 地址负载均衡 增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器动静分离常用Web服务器介绍apache、Nginx、tomcat、weblogic、ii

2020-07-06 17:26:03 484

原创 Linux命令

ps -ef | grep xxxps是LINUX下最常用的也是非常强大的进程查看命令ps [选项],下面对命令选项进行说明:-e 显示所有进程-f 全格式-h 不显示标题-l 长格式-w 宽输出-a 显示终端上的所有进程,包括其他用户的进程-r 只显示正在运行的进程-x 显示没有控制终端的进程中间的“ | ”是管道命令 是指ps命令与grep同时执行grep(Global Regular Expression Print,表示全局正则表达式版本)命令是查找,是一种强大的文本搜索工具

2020-07-06 16:11:06 237

原创 分布式缓存 Redis

redis 基础存储结构字符类型散列类型列表类型集合类型有序集合功能可以为每个key设置超时时间可以通过列表类型来实现分布式队列的操作支持发布订阅的消息模式简单提供了很多命令与redis进行交互redis的应用场景数据缓存(商品数据、新闻、热点数据)单点登录秒杀、抢购网站访问排名应用的模块开发redis的安装下载redis安装包tar -zxvf 安装包在redis目录下 执行 make可以通过make test测试编译状态make instal

2020-06-12 13:48:15 328

原创 分布式消息通信 kafka

Kafka 简介Kafka 是一款分布式消息发布和订阅系统,具有高性能、高吞吐量的特点而被广泛应用与大数据传输场景。它由LinkedIn公司开发,使用Scala语言编写,之后成为Apache基金会的一个顶级项目。典型应用日志分析系统为什么使用 Kafka互联网公司在营销方面逐步要做到精细化运营需求,这样就能够针对不同的用户喜好推送不同的产品,而这个过程需要收集和分析用户的行为数据,而通过传统的ActiveMQ这类消息中间件在处理大数据传输的时候存在实效性、性能、消息堆积等问题。kafka 早期

2020-06-10 14:57:02 424

原创 ActiveMQ

JMS 基本概念java 消息服务(Java Message Service)是 java 平台中关于面向消息中间件的 API,用于在两个应用程序之间,或者分布式系统中发布消息,进行异步通信。JMS 是一个与具体平台无关的 API,绝大多数 MOM(Message Oriented Middleware,面向消息中间件)提供商都对 JMS 提供了支持。具体开源的 JMS 供应商JbossMQ(jboss4)、jboss messagling(jboss5)、joram、ubermg、mantamg、

2020-06-09 14:59:09 240

原创 深入分析 Netty 源码(3)

EventLoop一个Netty 程序启动时,至少要指定一个EventLoopGroup(如果使用到的是NIO, 那么通常是NioEventlLoopGroup),那么这个NioEventLoopGroup 在Netty中到底扮演着什么角色呢?我们知道,Netty是Reactor模型的一个实现,那么首先从Reactor的线程模型开始吧.关于Reactor的线程模型首先我们来看一下Reactor 的线程模型.Reactor的线程模型有三种:单线程模型多线程模型主从模型首先看单线程模型:

2020-06-07 16:47:57 227

原创 深入分析 Netty 源码(2)

Netty ChannelPipelineChannelPipeline在 Netty 中每个 Channel 都有且仅有一个 ChannelPipeline 与之对应,它们的组成关系如下:通过上图我们可以看到,一个Channel 包含了一个ChannelPipeline, 而ChannelPipeline 中又维护了一个由ChannelHandlerContext组成的双向链表.这个链表的头是HeadContext,链表的尾是TailContext, 并且每个ChannelHandlerConte

2020-06-06 18:54:24 174

原创 深入分析 Netty 源码(1)

BootStrap客户端 BootStrapBootStrap 是 Netty 提供的一个便利的工厂类,可以通过它来完成 Netty 的客户端或服务端的 Netty 初始化。从客户端方面启动 Netty:Bootstrap bootstrap = new Bootstrap();bootstrap.group(workerGroup).channel(NioSocketChannel.class).option(ChannelOption.SO_KEEPALIVE, true).handle

2020-06-06 15:27:30 242

原创 高性能框架 Netty

NettyNetty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。作为当前最流行的NIO框架,Netty 在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框架构建。Netty 高性能RPC 调用的性能模型分析传统 RPC 调用性能差

2020-06-05 11:46:36 166

原创 深入理解 NIO 原理

几个概念阻塞(Block)和非阻塞(Non-Block)阻塞和非阻塞是进程在访问数据的时候,数据是否准备就绪的一种处理方式。当数据没有准备的时候:阻塞:往往需要等待缓冲区中的数据准备好过后才处理其他的事情,否则一直等待在那里。非阻塞:当进程访问数据缓冲区的时候,如果数据没有准备好则直接返回,不会等待。如果已经准备好,也直接返回。同步(Synchronization)和异步(Asynchronous)的方式同步和异步都是基于应用程序和操作系统处理IO事件所采用的方式。同步:是应用程序要直接参与I

2020-06-03 16:23:55 775

原创 Dubbo源码解析

dubbo 源码基于 spring 配置文件的扩展NamespaceHandler:注册 BeanDefinitionParser,利用它来解析BeanDefinitionParser:解析配置文件的元素spring 会默认加载jar包下/META-INF/spring.handlers,找到对应的 NamespaceHandlerDubbo 的接入实现Dubbo中spring扩展就是使用spring的自定义类型,所以同样也有NamespaceHandler、BeanDefinitionPar

2020-05-26 20:17:06 809 1

原创 分布式事务解决方案

基于 spring 配置文件的扩展NamespaceHandler:注册 BeanDefinitionParser,利用它来解析BeanDefinitionParser:解析配置文件的元素spring 会默认加载jar包下/META-INF/spring.handlers,找到对应的 NamespaceHandlerInitializingBean,当spring容器初始化完以后,会调用...

2020-05-26 14:58:21 162

原创 分布式服务治理 Dubbo

zookeeper集群角色leaderleader是zookeeper集群的核心。事务请求的唯一调度者和处理者,保证集群事务处理的顺序性集群内部各个服务器的调度者follower处理客户端非事务请求,以及转发事务请求给leader服务器参与事务请求提议(proposal)的投票(客户端的一个事务请求,需要半数服务器投票通过以后才能通知leader commit;leader会发...

2020-04-16 21:06:21 276

原创 分布式协调服务 zookeeper

分布式环境分布式环境特点分布性并发性:程序运行过程中,并发性操作是很常见的。比如同一分布式系统中的多个节点,同时访问一个共享资源。数据库、分布式存储无序性:进程之间的消息通信,会出现顺序不一致问题分布式环境下面临的问题网络通信:网络本身的不可靠性,因此会涉及到一些网络通信问题网络分区:当网络发生异常导致分布式系统中部分节点之间的网络延时不断增大,最终导致组成分布式架构的所有节点,只有...

2020-04-13 21:03:30 332

原创 分布式通信

Java 序列化机制 Serialize接口java本身的序列化机制存在的问题:序列化数据结果比较大、传输效率比较低不能跨语言对接序列化的发展以至于在后来的很长一段时间,基于XML格式编码的对象序列化机制成为了主流,一方面解决了多语言兼容问题,另一方面比二进制的序列化方式更容易理解。以至于基于XML的SOAP协议及对应的WebService框架在很长一段时间内成为各个主流开发语言的必...

2020-04-10 09:45:18 630

原创 Mybatis 源码分析

Mybatis工作流程通过Reader对象读取src目录下的mybatis.xml配置文件(该文本的位置和名字可任意)通过SqlSessionFactoryBuilder对象创建SqlSessionFactory对象从当前线程中获取SqlSession对象事务开始,在mybatis中默认通过SqlSession对象读取StudentMapper.xml映射文件中的操作编号,从而读取sq...

2020-04-03 17:37:54 167

原创 Mybatis 实用篇

认识 MybatisWhat is MyBatis?MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatiseliminates almost all of the JDBC code and manu...

2020-04-02 22:28:31 240

原创 Spring 常用的设计模式

单例模式(Singleton)创建型模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。Spring 中的单例模式完成了后半句话,即提供了全局的访问点 BeanFactory。但没有从构造器级别去控制单例,这是因为 Spring 管理的是是任意的 Java 对象。 Spring 下默认的 Bean 均为单例。常用单例模式写法:饿汉式、懒汉式、注册式(枚举或Map)、序列化。懒汉式...

2020-04-02 16:07:02 314

原创 Spring 事务原理详解

什么是事务(Transaction)事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。特点:事务是恢复和并发控制的基本单元。事务应具备4个属性:原子性,一致性,隔离性,持久性。这四种属性通常称为ACID特性:原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做一致性(consistency):...

2020-04-01 15:07:34 287

原创 Spring MVC 设计原理

MVC本质MVC的核心思想是业务数据抽取业务数据呈现相分离MVC,Model-View-ControllerView,视图层:为用户提供UI重点关注数据的呈现Model,模型层:业务数据的信息表示,关注支持业务的信息构成,通常是多个业务实体的组合Controller,控制层:调用业务逻辑产生合适的数据(Model)传递数据给视图层用于呈现区别于,三层机构,Dao数据访问层,Ser...

2020-04-01 10:36:12 273 1

原创 Spring AOP 源码分析

Spring中主要的AOP组件生成代理对象Spring提供了两种方式生成代理对象:JDKProxy和CGLib,具体使用哪种方式生成由AopProxyFactory根据AdvisedSupport对象的配置来决定。默认的策略是如果目标类是接口,则使用JDK动态代理技术,否则使用CGLib来生成代理。下面研究Spring如何使用JDK来生成代理对象,具体生成代码在JdkDynamicAopPr...

2020-03-31 21:27:20 129

原创 Spring AOP 设计原理

简介AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向切面编程。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。现在做的一些非业务,如:日志、事务、安全等都会写在业务代码中(也即是说...

2020-03-31 21:15:05 202

原创 Spring IOC 高级特性

介绍通过对 Spring IOC 容器的源码分析,已经基本上了解了 Spring IOC 容器对 Bean定义资源的定位、读入和解析过程,同时也清楚了当用户通过 getBean 方法向 IOC 容器获取被管理的Bean 时,IOC 容器对 Bean 进行的初始化和依赖注入过程,这些是 Spring IOC 容器的基本功能特性。Spring IOC 容器还有一些高级特性,如使用 lazy-init...

2020-03-31 18:18:34 203

原创 Spring IOC 依赖注入

依赖注入发生的时间当Spring IOC容器完成了Bean资源的定位,载入和解析注册之后,IOC容器中已经管理类Bean定义的相关数据,但是此时IOC容器还没有对所管理的Bean进行依赖注入,依赖注入发生在以下两种情况发生:用户第一次通过getBean方法向IOC容器要Bean时,IOC容器触发依赖注入当用户在Bean定义资源中为<Bean>元素配置了lazy-init属性,即...

2020-03-31 17:19:35 132

原创 Spring IOC 源码分析

Spring IOC体系结构BeanFactorySpring Bean 的创建是典型的工厂模式,这一系列的 Bean 工厂,即 IOC 容器为开发者管理对象间的依赖关系提供了很多便利和基础服务,在 Spring 中有许多的 IOC 的实现:其中 BeanFactory 作为最顶层的一个接口类,它定义了 IOC 容器的基本功能规范,BeanFactory 有三个子类:ListableBea...

2020-03-31 11:27:50 140

原创 Spring IOC Bean装配

Spring IOC 的应用Bean管理的注解实现类的自动检测与注册Bean<!--通过在基于xml的Spring排至如下标签(请注意包含上下文命名空间)--><context:annotation-config/>context:annotation-config,仅会查找在同一个applicationContext的bean注解,为了能够检测这些类并注册相应...

2020-03-30 17:46:11 227

原创 Spring 概述

框架维基百科:软件框架,通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基本功能的软件产品。框架就是制定一套规范或者规则,大家在该规范或者规则下工作。或者说就是使用别人搭好的舞台,你来做表演。框架的特点:半成品封装了特定的处理流程和控制逻辑成熟的,不断升级改进的软件框架与类库的区别:框架一般是封装了逻辑,高内聚的...

2020-03-30 15:04:05 442

原创 MySQL

认识MySQL1985年,瑞典的几位志同道合小伙子(以 David Axmark 为首)成立了一 家公司,这就是 MySQL AB 的前身。这个公司最初并不是为了开发数据库产品,而是在实现他们想法的过程中,需要一个数据库。他们希望能够使用开源的产品。但在当时并没-一个合适的选择,没办法,那就自己开发吧。架构图详情引擎介绍InnodbMyisam存储文件....

2020-03-30 11:23:04 174

原创 Tomcat

Tomcat架构架构图目录结构confcatalina.policy:Tomcat 安全策略文件,控制 JVM 相关权限,具体可以参考java.security.Permissioncatalina.properties:Tomcat Catalina 行为控制配置文件,比如Common ClassLoaderlogging.properties:Tomcat 日志配置文件,JDK ...

2020-03-30 11:22:29 378

原创 并发 API

java.lang.Threadstatic void sleep(long millis)休眠给定的毫秒数Thread(Runnable target)构造一个新线程,用于调用给定目标的run()方法void start()启动这个线程,将引发调用run()方法。这个方法将立即返回,并且新线程将并发运行。void run()调用关联Runnable的run方法...

2020-01-10 14:36:17 274

原创 Java核心技术 并发3

8.Callable与FutureRunnable封装一个异步运行的任务,可以把它想象成一个没有参数和返回值的异步方法。Callable与Runnable类似,但是有返回值。Callable接口是一个参数化的类型,只有一个方法call。@FunctionalInterfacepublic interface Callable<V> { V call() throws Ex...

2020-01-10 14:36:03 180

原创 Java核心技术 并发2

同步阻塞每个Java对象有一个锁。线程可以通过同步方法获得锁。还有通过进入一个同步阻塞获得锁。当线程进入如下形式的阻塞:// 这是同步块的语法synchronized (obj) {}于是它获得obj的锁。有时会发现“特殊的”锁:public class Bank { ... private Object lock = new Object(); ... public voi...

2020-01-09 15:01:28 139

原创 Java核心技术 并发

一个程序同时执行多个任务,每个任务称为一个线程(thread),它是线程控制的简称。可以同时运行一个以上线程的程序称为多线程程序(multithreaded)。多线程和多进程的区别:本质区别在于每个进程都拥有自己的一套变量,而线程则共享数据。共享变量使线程之间的通信比进程之间的通信更有效、更容易。在有些操作系统中,与进程相比,线程更加轻量级,创建、撤销一个线程比启动新进程的开销要小得多。1.什...

2020-01-07 16:15:24 450

原创 国际化 API

java.util.LocaleLocale(String language)Locale(String language, String country)Locale(String language, String country, String variant)用给定的语言、国家和变量创建一个Locale。在新代码中不要使用变体,应该使用IETF BCP 47语言标签。static ...

2020-01-04 17:52:22 381

原创 Java核心技术 国际化

1.Locale对象对于日期、数字等的显示不同国家有不同,又若干个专门负责格式处理的类。为了对格式化进行控制,可以使用Locale类。locale由多达5个部分构成:1.一种语言,由2个或3个小写字母表示:2.可选的一段脚本,由首字母大写的四个字母表示。例如Hant(繁体中文字符)3.可选的一个国家或地区,由2个大写字母或3个数字表示,例如US(美国)4.可选的一个变体,用于指定各...

2020-01-04 17:44:57 412

原创 Java核心技术 日期和时间API

1.时间线闰秒,许多计算机系统使用“平滑”方式来人为地紧邻闰秒之前让时间变慢或变快,以保证每天都是86400秒。Java的Date和Time API规范要求Java使用的时间尺度为:1.每天86400秒2.每天正午与官方时间精确匹配3.在其他时间点上,以精确定义的方式与官方时间接近匹配Java中,Instant表示时间线的某个点。被称为新纪元的时间线原点被设置为穿过伦敦格林尼治皇家天文...

2020-01-02 19:20:19 278 1

原创 数据库管理 API

static Connection getConnection(String url, String user, String password)建立一个到指定数据库的连接,并返回一个Connection对象

2020-01-01 21:32:19 342

原创 Pattern&Matcher API

java.util.regex.Patternstatic Pattern compile(String expression)static Pattern compile(String expression, int flags)把正则表达式字符串编译到一个用于快速处理匹配的模式对象中。参数 expression 正则表达式flags CASE_INSENSITIV...

2019-12-30 18:33:46 275

原创 InputStream/OutputStram Path/File API

java.io.InputStreamabstract int read()从数据中读入一个字节,并返回改字节。这个read方法碰到输入流结尾时返回-1int read(byte[] b)读入一个字节数组,并返回实际读入的字节数,或者碰到输入流结尾时返回-1,这个read方法最多读入b.length个字节int read(byte[] b, int off, int len)读入一个字...

2019-12-26 19:43:20 587

原创 Java核心技术 输入与输出3

5.操作文件Path接口和Files类是在java SE 7中添加进来的,它们用起来比自JDK 1.0以来就一直使用的File类要方便的多。PathPath表示的是一个目录名序列,其后还可以跟着一个文件名。路径中的第一个部件可以是根部件,例如/或C:\,而允许访问的根部件取决于文件系统。以根部件开始的路径是绝对路径,否则就是相对路径(相对于项目的根目录,即src的上级)。Path abso...

2019-12-26 19:39:23 182

头像的裁剪修改(可使用摄像头)与上传服务器(SSM实现)

头像的裁剪修改(可使用摄像头)与上传服务器(SSM实现),可以实现头像图片的裁剪,放大缩小,亮度,饱和度,对比度,最后会在服务器存储100*100,50*50,32*32三张头像图片。另外还可以使用摄像头进行拍摄。

2017-08-02

空空如也

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

TA关注的人

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