自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 读书笔记-大型网站性能优化实战

目录结构个人理解先是从一个大型网站的方方面面分别介绍各自的优化策略,包括 前端、后端、CDN、DNS、TCP、系统架构等。先是一个全局的脉络,让大家有个全局的思路,在做性能优化的时候不能局限在自己的一亩三分地,不然可能你优化的并不是系统瓶颈,从而没有收益后续从一个大型网站的一些别的方面,像是监控、容量评估、大促保障,应该可以说是脱离了软件甚至是技术本身,来讨论整个网站的优化。有了一个完备的监控体系,我们才能准确的知道网站的运行情况,从而针对性的进行优化。而且对于大厂来说,运营促销是必不可少的,从而针

2020-06-12 01:11:05 395

原创 读书笔记 -- 实现领域驱动设计

书籍介绍书名:实现领域驱动设计作者:Vaughn Vernon出版时间:2014年3月封面:目录结构个人理解本书更多考虑到的应该是更多的ddd新手,所以最大的篇幅是用来描述ddd的各种战术组件,实体啊,值对象啊,聚合啊等等。个人感觉在ddd的战略设计上,描述的并不太多,当需要用ddd的风格去设计一个大型系统的时候,可能本书提供的知识不足以支撑我们去完成。本书整体的脉络是,显示引领大家入门ddd,了解ddd的一些基本知识,比如一些概念,ddd的好处是啥,ddd的难处在哪等,接着就是引出d

2020-05-14 00:22:47 315

原创 读书笔记 -- 领域驱动设计

目录结构个人理解本书的大概脉络是:什么是ddd?。这部分最重要的是 通用语言和模型的概念。怎么样用ddd的设计思想去实现模型?。这部分的重点是作者总结出的各个ddd的模式或者说是组件,包括:entity、value object、domain service、module、aggregate、repository等。理解了每个组件的含义,就算是入门了ddd了ddd的持续演进/优化,最...

2020-05-08 16:12:57 308 2

原创 Java并发 -- AQS(AbstractQueuedSynchronizer)

介绍在Java中,除了synchronized关键字具备锁的语义,还有juc包中的Lock接口。在观察Lock接口的多个不同实现后,不难发现,其内部锁的语义的实现,基本都是仰仗着AbstractQueuedSynchronizer,简称AQS。内部状态Node既然要实现锁的语义,则必须处理获取竞争锁失败,线程等待的情况。在AQS线程获取锁失败,就会构造一个Node接口,放入内部维护的同步队...

2020-02-28 23:26:43 119

原创 spring5/springboot2源码学习 -- bean的创建

概念当spring解析完配置文件后,配置文件只是转换成了BeanDefinition,并不是具体的bean。如果想要得到一个具体的bean,还需要经过bean的实例化过程。用法还是借助分析xml文件加载时候的测试方法:@Testpublic void test(){ //创建一个实现了BeanDefinitionRegistry的BeanFactory实现 //DefaultLi...

2020-02-05 00:11:50 277

原创 spring5/springboot2源码学习 -- 自定义标签的解析

概念在spring的xml配置中,我们除了可以使用默认的beans标签外,还可以自己定义标签。其实spring自己内部的很多模块也是使用了自定义标签来实现功能的。还有一些别的比较知名的案例,比如:dubbo用法首先,随便定义一个想通过标签来配置的bean:public class CustomBean { private String name; //get set}自定义...

2020-02-04 21:22:12 352

原创 dubbo源码分析 -- dubbo的SPI机制

概念在dubbo的整体结构中,除了service层和config层,其他各层都支持自定义扩展。而自定义扩展的实现,就是dubbo实现的一套类似SPI的扩展点加载机制。在这个机制中,ExtensionLoader是核心类。组件ExtensionLoaderdubbo SPI机制的主要使用入口,基本就是通过这个类来使用和实现SPI机制的ExtensionFactorydubbo的SPI机制...

2020-01-30 20:26:16 221

原创 rocketmq源码分析 - 消息队列的平衡/负载均衡RebalanceService

概念在rocketmq中,消费者必须属于一个消费者组。消费者组有两种消费模式:集群:就是一个消费者组内的消费者,每个消费一个topic的某个子集,所有的消费者的子集共同组成topic的所有消息广播:就是消费者组内的所有消费者都消费topic的所有消息我们还知道,在rocketmq中,订阅了某个topic,就相当于订阅了这个topic的所有消息队列,MessageQueue,而Messa...

2020-01-08 01:20:46 990

原创 rocketmq源码分析 -生产者

概念生产者producer,用于生产消息,在rocketmq中对应着MQProducer接口。组件Producer消息生产者。在rocketmq中,生产者对应MQProducer接口:public interface MQProducer extends MQAdmin { //启动 void start() throws MQClientException; //关闭 v...

2020-01-04 11:26:35 593

原创 rocketmq源码分析 - producer发送消息的故障延迟机制

概念我们知道,生产者发送消息,需要发送到指定的MessageQueue上,如果发送失败了,则很可能说明这个MessageQueue所在的broker出现了某种问题,则在发送下一条消息或者重试的时候,需要尽可能的避免上次失败的broker。在rocketmq中,MQFaultStrategy负责做这件事情。组件LatencyFaultTolerance用于判断一个broker是否有啥毛病。有...

2019-12-28 03:35:05 780

原创 rocketmq源码分析 - namesrv

概念在rocketmq中,NameServer用于Broker的注册与发现。相当于kafka中,zookeeper的角色。不过,相较于zookeeper,NameServer是专用于根据消息队列这一场景下的特定实现。所以,实现上更加的优雅和简洁。作用每台broker启动时,无论是master还是slave,都需要主动向namesrv发送请求,注册自己producer在生产消息前,得知道b...

2019-12-27 22:48:47 215

原创 spring5/springboot2源码学习 -- MessageSource

概念在spring中,MessageSource接口用于抽象对信息的定义,相当于是信息的提供者。比如,在web系统中,我们经常定义ResourceBundle来处理国际化相关的文案下发。在spring中,把从消息标识转化为具体的字符串的这一过程,抽象成了MessageSource接口,使可以更方便的实现消息的参数化和国际化。类个层级结构先看看MessageSource的定义:public ...

2019-12-22 19:52:05 320

原创 spring5/springboot2源码学习 -- xml文件的解析

xml文件的解析

2019-12-22 18:54:59 1008

原创 spring5/springboot2源码学习 -- xml文件的解析之默认标签的解析

xml文件的解析之bean标签的解析

2019-12-14 17:25:05 531

原创 spring5/springboot2源码学习 -- spring mvc主题theme

spring theme

2019-12-14 01:33:07 182 1

原创 spring5/springboot2源码学习 -- spring mvc中的locale

spring 中的locale

2019-12-12 22:41:51 470

原创 spring5/springboot2源码学习 -- HandlerMapping

概念根据请求找到对应的处理器Handler。另外,Handler总是会包装成一个HandlerExecutionChain实例,该实例可能会有一些HandlerInterceptor实例.DispatcherServlet总是会调用每个HandlerInterceptor的preHandle方法,如果所有的preHandle方法都返回true才会调用handler本身实现接口定义publi...

2019-12-12 00:12:05 329

原创 spring5/springboot2源码学习 -- spring mvc上传文件

概念web应用中,文件上传的功能的非常普遍。在spring mvc中,带有文件的request会是MultipartHttpServletRequest,上传的文件会抽象成MultipartFile对象,而上传的相关功能由MultipartResolver处理使用托spring boot的福,在spring boot的环境下,文件上传功能是开箱即用的,你啥都不用配置就可以直接用了@Post...

2019-12-10 21:58:08 147

原创 spring5/springboot2源码学习 -- spring boot的SPI与spring.factories

概念spring boot启动的时候,就算你自己啥配置都没,它自己也会有很多已经配置好了的bean。我们知道在spring中,可以通过在xml中配置,或者通过@Component+@ComponentScan注解,或者通过@Configuration/@Bean注解来达到注册Bean到ApplicationContext中的效果,那这里你明明啥都没做,为啥已经有了这么多的bean了呢?答:sp...

2019-12-10 17:45:08 167

原创 spring5/springboot2源码学习 -- Environment及PropertySource相关

基本介绍Environment是spring中一个非常核心的接口,代表当前应用运行的环境。 可以分为两个方面:profiles:设置profilesproperties:查找属性配置接口定义public interface Environment extends PropertyResolver { String[] getActiveProfiles();...

2019-12-09 22:23:28 697

原创 spring5/springboot2源码学习 -- spring中对命令行参数的处理

概念就算不用spring,我们肯定也知道命令行参数。其实就算你不用java,你也应该知道命令行参数????在启动一个通过spring boot打的fatjar形式的Java程序时,我们可能用如下的命令去启动:java -Xmx6g -XX:SurvivorRatio=4 -Djava.net.preferIPv4Stack=true --spring.profiles.active=prod -j...

2019-12-09 20:58:23 223

原创 计算机网络 - http

HTTP,超文本传输协议HyperText Transfer Protocol。基于TCP,无状态。持续连接与非持续连接http默认使用持续连接,但是也可以配置为使用非持续连接。持续连接就是指发送请求,接收响应后,并不直接关闭TCP连接,再有下个http请求,还用这个TCP连接发送;非持续连接就是发送请求,接收响应后,直接关闭TCP连接,后续的请求自己重新创建新的TCP连接介绍一个概念,往返...

2019-12-07 17:34:43 414

原创 计算机网络 - 应用层

在设计一个应用程序时,应该要首先考虑到应用程序体系结构(application architecture)。应用程序体系结构由应用程序研发者设计,规定了如何在各种主机上组织该应用程序。当下,这种体系结构一般为两种之一:客户端 - 服务器体系结构P2P体系结构在两个不同的主机之间,通过跨越计算机网络交换报文而进行通信。进行通信的主体是进程而不是程序。网络应用程序由成对的进程组成,这些进程通...

2019-12-07 16:44:38 153

原创 计算机网络 - 概述

因特网定义因特网(Internet)是一组全球信息资源的总汇。有一种粗略的说法,认为INTERNET是由于许多小的网络(子网)互联而成的一个逻辑网,每个子网中连接着若干台计算机(主机)。Internet以相互交流信息资源为目的,基于一些共同的协议,并通过许多路由器和公共互联网而成,它是一个信息资源和资源共享的集合– 百度百科每个主机通过通信链路和分组交换机连接到一起。当今,比较知名的分组...

2019-12-06 20:41:34 139

原创 Java对象的创建

在java中可以通过:new关键字反序列化。ObjectInputStream.readObject()反射。Class.newInstance()对象克隆。Object.clone()来创建一个对象分配内存当创建一个对象时,需要在堆中分配一块内存(当开启逃逸分析时,可能基于栈上分配标量替换等原因,直接在栈上分配),用于容纳此对象。从宏观上看,可以分为两部分:快速分配和慢分配。具...

2019-09-20 23:48:33 133

原创 Java中的字符编码

Java中的字符编码问题;Unicode字符集;UTF-8 & UTF-16编码;大端模式&小端模式

2019-09-12 02:24:36 292

原创 spring5/springboot2源码学习 -- spring boot 应用的启动过程

基本环境开发工具:Intellij IDEA 2017(盗)版java版本:1.8.0_151spring的github地址:spring-framework准备:git clone或直接下载github上的spring源码,导入idea中,在项目路径下执行gradle build (如果本机没有gradle环境,或者版本差很多,就用gradlew代替),会build很久,可以事先...

2018-03-02 23:25:37 1345 1

原创 spring5/springboot2源码学习 -- spring中的事件机制

介绍spring内部实现了一套事件传播机制的,也是观察者模式的实现主要角色事件 在spring中一般就是ApplicationEvent对象(这是一个抽象类而不是接口)。spring中的常见事件: ApplicationContextEvent:抽象类,ApplicationContext相关的事件。具体实现有: ContextClosedEventContextRefr...

2018-02-28 23:42:24 505

原创 spring5/springboot2源码学习 -- BeanFactoryPostProcessor相关

这个东西是干嘛的可以用于自定义对BeanDefinition(而不是具体的bean)的修改,比如:PropertySourcesPlaceholderConfigurer就是用于解决类似@Value(“${…}”)这种占位符的 其实还可以添加BeanDefinition,大家可以思考一下spring啥时候需要添加BeanDefinition…BeanFactoryPostProces...

2018-01-24 11:50:21 257

原创 spring5/springboot2源码学习 -- Resource相关

常见用法public class Main4Resource { public static void main(String[] args) throws IOException { //当ResourceLoader用 ApplicationContext ac = new AnnotationConfigApplicationContext(...

2018-01-21 16:01:38 594

原创 spring5/springboot2源码学习 -- ProtocolResolver

接口定义@FunctionalInterfacepublic interface ProtocolResolver { Resource resolve(String location, ResourceLoader resourceLoader);}作用可以用于自定义协议解析,比如spring就有一个 “classpath:”开头的特定协议(但是spring并不是...

2018-01-16 22:47:55 1252 2

原创 nanoTime vs currentTimeMillis 比较

System.nanoTime与System.currentTimeMillis比较首先:currentTimeMillis返回的是系统当前时间和1970-01-01之前间隔时间的毫秒数,如果系统时间固定则方法返回值也是一定的(这么说是为了强调和nanoTime的区别),精确度是毫秒级别的nanoTime的返回值本身则没有什么意义,因为它基于的时间点是随机的,甚至可能是一个未来的时间,所以返回值

2016-05-29 12:14:17 11482 6

用swing和socket实现的聊天室

自己写的一个基于Javaswing界面和socket的聊天室 实现了群聊私聊和好友列表的功能,好友列表和历史信息都可以实时更新,用到了数据库。比较简单,可供参考

2015-08-03

空空如也

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

TA关注的人

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