自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Yhc不是咸鱼

这个人很勤快,连博客描述都没空写

原创 2019年终总结

上半年的在2019年中总结总结过就不多bb了 下半年主要是先在支付宝实习了四个月,然后回校做毕业课题 在支付宝的四个月还是学习到了很多,包括系统的架构演进,从烟囱式的单体应用,到分布式、服务化的SOA,再到单元化架构,再到弹性架构,现在正在做上云,还有支付宝优秀的开发规范,包括类/方法/变量的...

2019-12-31 12:38:00

阅读数 149

评论数 1

原创 Flink学习(二):集群部署

Flink可以有多种集群模式,例如独立集群、on YARN、Docker、AWS等。 对于独立集群模式,需要有至少两台独立的机器(物理机、虚拟机或者Docker/K8s等容器),其中一台作为Master,剩下的作为Slave,或者称为Worker。 首先需要修改配置文件 conf/flink-...

2019-12-30 19:01:14

阅读数 11

评论数 0

原创 Flink学习(一):SocketWindowWordCount示例

参考资料:官方文档 & 官方示例代码 首先是环境配置,很简单,下载下来解压就可以。 然后运行bin/start-cluster.sh启动Flink,虽然脚本名字是cluster,不过默认配置是启动的本地模式。启动后,可以在浏览器输入localhost:8081进入Dashboard...

2019-12-30 15:43:43

阅读数 29

评论数 0

原创 Tomcat学习(三):请求处理

目录 请求预处理 获取请求处理器 请求映射 请求处理 Mapper.map() Tomcat在启动时,就已经将ServerSocket(或ServerSocketChannel等)初始化完毕,并启动了Acceptor线程等待请求到达。 请求预处理 在Acceptor线程的run方法...

2019-12-25 17:39:39

阅读数 10

评论数 0

原创 基于Camel实现SOAP协议到自定义协议的转换

背景 毕业课题是做某种通信框架和ESB总线的集成,其中ESB的选型是ServiceMix,它的路由机制是借助Camel实现的。Camel提供了RouteBuilder抽象类,只要在其configure方法中,以from、to等方法描述路由,然后通过CamelContext的addRoute方法,...

2019-12-24 16:21:25

阅读数 47

评论数 0

原创 Tomcat学习(二):启动过程(2)

目录 1.服务器的启动 2.Web应用的加载 3.自动扫描机制 3.1 HostConfig 3.2 ContextConfig 1.服务器的启动 在Tomcat学习(一):启动过程(1)中简单介绍了Tomcat的启动类、加载server.xml和初始化部分组件的过程。 在使用lo...

2019-12-22 20:58:14

阅读数 9

评论数 0

原创 Tomcat学习(一):启动过程(1)

目录 1. 启动入口 2.Bootstrap启动过程 2.1 Tomcat类加载器结构 2.2 Bootstrap的启动 3.Catalina的启动之Server的加载 3.1 server.xml的加载和解析 3.2 StandardServer的初始化 3.3 启动的后处理 ...

2019-12-21 18:15:19

阅读数 12

评论数 0

原创 Spring源码学习(十):Spring与Mybatis整合原理

目录 1.关键类的加载 1.1 SqlSessionFactory的加载 1.2SqlSessionTemplate的加载 2. Mapper的自动绑定 2.1processPropertyPlaceHolders 2.2 Mapper扫描 2.3 Mapper的后处理 从学习My...

2019-12-13 21:18:36

阅读数 5

评论数 0

原创 Spring源码学习(九):Spring JDBC

目录 1.使用 2.JdbcTemplate的使用 2.1数据查询 2.2数据持久化 Java程序员对JDBC应该都不陌生,使用起来也很简单,只要用DriverManager开启一个Connection,就可以创建Statement或PreparedStatement,然后调用SQL语句...

2019-12-13 17:22:53

阅读数 5

评论数 0

原创 记录一个疏忽导致的异常

今天对一个工程代码做重构,这个工程原先是通过Spring的InitializingBean将自身注册到Zookeeper上,做的改造包括: 1)将注册中心的接口独立出来形成一个工程 2)基于注册中心基本接口扩展出Zookeeper实现 3)使用properties文件记录配置,取代原先Spr...

2019-10-14 18:05:03

阅读数 11

评论数 0

原创 记Maven遇到的一个坑爹问题

听说IDEA更新2019.2,于是也跟风更新了一下,结果更新完就出现依赖无法引入的问题,报错如下: Could not transfer artifact redis.clients:jedis:pom:3.1.0-m1 from/to alimaven (http://maven.aliyu...

2019-07-27 23:28:15

阅读数 55

评论数 0

原创 2019年中总结

明天就要出发去杭州准备入职蚂蚁了,今晚写个年中总结吧 1月基本就是看书,略过 2月份,即寒假,复习了下MongoDB,还看了Python爬虫。寒假快结束的时候看到同学的说说,发现自己JUC没怎么看,于是开始看源码,同时投了头条实习。头条面的部门是做Python的,所以一面面试官完全不懂Java...

2019-05-17 21:37:22

阅读数 131

评论数 0

原创 缓存学习(十):分布式Redis之Redis Cluster

目录 1数据拆分 2 Redis Cluster配置 3集群搭建 4集群命令 4.1redis-cli的集群管理模式 4.2客户端命令 5原理 5.1节点通信 5.2槽的迁移 5.2.1集群收缩 5.2.2集群扩容 5.3请求路由和重定向 5.4故障转移 6 Jedis...

2019-05-09 14:33:43

阅读数 245

评论数 0

原创 缓存学习(九):分布式Redis之副本、哨兵

目录 1.配置主从节点 2.复制原理 2.1复制流程 2.1.1全量复制 2.1.2断点续传 2.2 PSYNC协议 2.3心跳机制 3哨兵Sentinel 3.1简介 3.2配置 3.3搭建 3.4命令 3.5哨兵实现原理 3.5.1 Pub/Sub 3.5.2 L...

2019-04-29 17:59:34

阅读数 468

评论数 0

原创 缓存学习(八):Redis的Java客户端

目录 1基本使用 2高级特性 2.1连接池JedisPool 2.2管道 2.3事务 2.4发布/订阅 2.5streams支持 3利用Jedis实现一个简单的分布式锁 3.1构造方法 3.2lock方法 3.3unlock方法 3.4测试 Jedis是Redis的Jav...

2019-04-27 20:45:51

阅读数 62

评论数 0

原创 OpenDDS Java开发(二):根据IDL进行代码生成

目录 1.编写IDL文件 2将IDL编译为C++代码 3将已生成代码编译为Java代码 4使用UserManager替换Messenger 1.编写IDL文件 IDL是Interface description language的缩写,指接口描述语言,是CORBA规范的一部分,是跨平台...

2019-04-26 18:05:48

阅读数 263

评论数 0

原创 缓存学习(七):Redis的高级机制:管道、事务、脚本、发布订阅、持久化

目录 1.管道 1.1 RESP 1.2通过管道交互 2事务操作 3.脚本 4.发布/订阅模式 5.持久化 5.1 RDB 5.2 AOF 1.管道 1.1 RESP Redis的协议称为RESP,它将协议数据分为不同类型,根据数据的首字符决定,不过所有类型的数据均以CRL...

2019-04-26 15:39:29

阅读数 34

评论数 0

原创 缓存学习(六):Redis的数据结构及基本命令

目录 0.key 1.string 2.list 3.set 4.hash 5.sortedset(zset) 6.streams 7.衍生类型 7.1 bitmaps 7.2.geo Redis 5之前一共有六个主要数据结构:key、string、list、set、hash...

2019-04-25 11:07:37

阅读数 43

评论数 0

原创 缓存学习(五):Redis安装、配置

目录 1.安装 2.配置 2.1include 2.2loadmodule 2.3网络配置 2.4通用配置 2.5 RDB配置 2.6主从配置 2.7安全配置 2.8maxclients 2.9内存管理 2.10 AOF配置 2.11 Lua脚本最大执行时间 2.12s...

2019-04-22 16:03:09

阅读数 50

评论数 0

原创 缓存学习(四):MemCached的Java客户端

目录 1基本使用 2高级特性 2.1为节点设置权重 2.2动态调整集群 2.3 NIO连接池 2.4节点选择 2.5 Key迭代器 2.6命名空间 2.7安全认证 2.8 Failure模式和 Standby模式 3结合Spring使用 上一篇提到,Memcached将数据...

2019-04-19 21:44:11

阅读数 19

评论数 0

原创 缓存学习(三):MemCached安装、配置和命令

目录 1.安装 2.使用 2.1常用选项 2.2命令格式 2.3命令 EhCache和Guava Cache虽然简单、高效,但是它们都是本地缓存(EhCache可以分布式部署,但是需要依赖Terracotta,显然不利于维护),一般只是用在单个应用程序实例内部。在实际的分布式系统中,缓...

2019-04-16 21:23:14

阅读数 23

评论数 0

原创 缓存学习(二):Guava Cache

目录 1LoadingCache的创建:借助CacheLoader 2 Cache的创建与使用:需要配置Callable 3 CacheBuilder的可配置属性 Guava是Google推出的Java增强包,包含了很多实用功能,如:Optional、数学工具、字符串工具等,像Option...

2019-04-15 17:44:48

阅读数 24

评论数 0

原创 缓存学习(一):EhCache

目录 1.基本使用 1.1 XML配置 1.2硬编码 1.3直接创建Cache 2.结合Spring使用 2.1使用EhCacheCacheManager ——仅支持2.x版本 2.2使用JCacheCacheManager ——仅支持3.x版本 3.作为二级缓存使用 3.1 H...

2019-04-14 20:02:41

阅读数 26

评论数 0

原创 Spring源码学习(八):Spring Boot原理

目录 1.Spring Boot简介 2.Spring Boot启动原理 ——构造方法 2.1 deduceFromClasspath方法 2.2配置ApplicationContextInitializer、ApplicationListener 3.Spring Boot启动原理 —...

2019-04-02 19:04:46

阅读数 126

评论数 0

原创 Spring源码学习(七):Spring MVC的请求响应流程

目录 1.方法到达service 1.1 processRequest方法 1.2父类service方法 2.doDispatch方法 2.1检查上传请求 —— checkMultipart方法 2.2查找处理器 ——getHandler方法 2.2.1 RequestMapping...

2019-03-31 13:30:47

阅读数 82

评论数 0

原创 Spring源码学习(六):Spring MVC的初始化过程

目录 1.ContextLoaderListener 1.1创建WebApplicationContext 1.2设置和刷新WebApplicationContext 2.DispatcherServlet 2.1init方法 2.2initServletBean方法 2.3 OnR...

2019-03-28 19:30:25

阅读数 52

评论数 0

原创 Spring源码学习(五):Bean的创建和获取

目录 1.获取Bean单例实例 2.完整创建Bean 2.1Bean创建的前置处理 2.2创建Bean:doCreateBean的createBeanInstance方法 2.2.1 通过Supplier实例化 —— obtainFromSupplier 2.2.2 通过factory...

2019-03-25 22:40:25

阅读数 55

评论数 0

原创 Spring源码学习(四):容器的功能扩展·二

目录 1.initMessageSource 2.initApplicationEventMulticaster 3.registerListeners 4.finishBeanFactoryInitialization 5.finishRefresh 到目前,容器的启动过程还剩下下面...

2019-03-21 21:11:02

阅读数 33

评论数 0

原创 Spring源码学习(三):容器的功能扩展·一

目录 1.prepareBeanFactory方法 1.1扩展容器的组件 1.2忽略依赖接口 1.3注册可解析依赖 1.4注册环境 2.invokeBeanFactoryPostProcessors 2.1一个例子 2.2核心方法介绍 3.registerBeanPostProc...

2019-03-20 19:11:57

阅读数 66

评论数 0

原创 Spring源码学习(二):默认标签的解析与Bean的注册

目录 1parseBeanDefinitionElement方法 1.1BeanDefinition的组装 1.2产生BeanName 2decorateBeanDefinitionIfRequired方法 3注册BeanDefinition 4其它默认标签的解析 4.1alias标...

2019-03-19 21:43:14

阅读数 54

评论数 0

原创 Spring源码学习(一):Bean的加载和初步解析

目录 1.一个示例 2.定位和加载配置文件 2.1沿继承链向上调用父类构造函数 2.2设置配置文件路径 3容器的刷新与Bean的加载 3.1prepareRefresh 3.2obtainFreshBeanFactory 1.一个示例 下面是一个最基本的Spring示例: ...

2019-03-19 15:22:36

阅读数 31

评论数 0

原创 313腾讯面试凉经&反思

本渣3月9号做了腾讯后台实习笔试,由于算法能力太渣,只AC了两题,第三题过60%(后来听说第五题直接输出0都能过40%。。。),本来觉得肯定跪了,结果3月12号收到邮件通知,约13号上午视频面试。 视频系统跟头条一样,用的牛客网的。 面试题目如下: 1.自我介绍 此时面试官提到部门主要用C...

2019-03-15 10:59:25

阅读数 120

评论数 0

原创 JUC学习(八):AQS的CLH队列

目录 一.简介 二.Node类 三.CLH队列 一.简介 AQS是JUC的核心,无论是信号量、CDL还是可重入锁,背后都有AQS的影子。这些类的同步过程一般如下: tryAcquire和tryRelease过程很好理解,就是CAS地修改AQS的state值,关键是doAcquire...

2019-02-25 18:38:32

阅读数 348

评论数 0

原创 JUC学习(七):ReentrantLock和Condition

目录 1.Condition的使用 1)await方法 2)signal、signalAll方法 2.ReentrantLock的原理 1)lock方法 2)unlock方法 初学并发时,一般都是使用synchronized关键字来保证线程安全,它具有使用方便的优点,尽管旧版本性能不...

2019-02-24 19:48:48

阅读数 35

评论数 0

原创 JUC学习(六):ForkJoin框架

目录 1.简介 2.RecursiveAction的使用 3.RecursiveTask的使用 4.CountedCompleter的使用 5.原理介绍 1)submit方法: 2)signalWork方法: 3)runWorker、runTask方法: 4)invokeAll方...

2019-02-24 17:58:33

阅读数 55

评论数 0

原创 JUC学习(五):Future & Callable

目录 一.简介 二.Future的一些方法 1)cancel方法 2)get方法 3)run方法 一.简介 一般使用Thread时,都是传入Runnable,但是这种方式有一个问题:无法获取返回值,也不能抛出异常;只能通过全局变量等手段获取值,通过try-catch块捕获异常。Cal...

2019-02-23 17:39:07

阅读数 40

评论数 0

原创 JUC学习(四):线程同步之Phaser

目录 一.简介 二.构造方法 三.doRegister方法 四.arrive系列方法 四.await系列方法 一.简介 CyclicBarrier解决了CDL不能重用的问题,但是仍有以下不足: 1)不能动态调整计数器值,假如线程数不足以打破barrier,就只能reset或者多加些...

2019-02-23 16:55:39

阅读数 64

评论数 0

原创 JUC学习(三):线程同步之CyclicBarrier

目录 一.简介 二.构造方法 三.await方法 一.简介 在 JUC学习(二):线程同步之CountDownLatch 中,介绍了CDL,它可以实现线程同步,但是也有一个不足:无法重用。一旦计数器清零,CDL对象就无法再使用。如果一个任务中,需要多次进行线程同步,那么就要设置多个CDL...

2019-02-23 14:28:35

阅读数 58

评论数 0

原创 JUC学习(二):线程同步之CountDownLatch

目录 一.简述 二.构造方法 三.await方法 四.countDown方法 一.简述 在 JUC学习(一):Semaphore信号量 中可以看到,信号量可以做到控制不同批次的线程同步运行,但是对于同一批线程,它们之间还是乱序执行的。在某些情况下,需要控制线程同时开始运行,这时候就需要...

2019-02-23 13:21:16

阅读数 53

评论数 0

原创 JUC学习(一):Semaphore信号量

目录 一.简介 二.构造方法 三.acquire系列方法 四.release方法 五.其它方法 5.1 availablePermits & drainPermits 5.2 reducePermits 5.3 isFair 5.4 hasQueuedThread...

2019-02-22 21:05:49

阅读数 63

评论数 0

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