首页
学习
活动
专区
工具
TVP
发布

山行AI

山行AI(原开发架构二三事),后续专注于AI应用领域
专栏作者
291
文章
643660
阅读量
56
订阅数
从头分析flink源码第二篇之streamGraph的生成
上一篇我们分析了DataStream wordcount程序的几步操作中整个DataStream的转变,包括不同类型的Transformation的生成、整个Transformation链的串联、执行环境的初始化等。本篇我们来从源码角度分析下flink怎么由第一篇的transformations列表来生成StreamGraph的。
山行AI
2021-07-01
9210
lettuce和hbase中对netty的使用你都了解吗?
在使用lettuce作为redis连接池时,在上一节中我们知道,lettuce中维护连接有两种使用连接池的方式,目前一种已经废弃,另一种大家正在使用的版本是apache commons pool。咱们来回顾下。
山行AI
2020-07-24
2K0
spring-data-redis中lettuce pipeline的坑之解决篇
我们先来了解下在spring-data-redis中是如何包装lettuce的连接的,然后会根据这些信息得到上一篇文章中留下的那个问题的解。
山行AI
2020-07-14
5.8K3
lettuce 在spring-data-redis包装后关于pipeline的坑,你知道吗?
在日常开发过程中,如果想要构建一个高并发高吞吐量的系统,redis基本是成了标配。回想下现在比较常用的客户端也就是jedis、redission、lettuce这几种,jedis算是比较老牌的redis client了,redission底层基于netty并以其各种丰富的数据结构和特性而广受欢迎,lettuce则属于后起之秀,底层集成了Project Reactor提供天然的反应式编程,通信框架集成了Netty使用了非阻塞IO,5.x版本之后融合了JDK1.8的异步编程特性,在保证高性能的同时提供了十分丰富易用的API。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis,Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作,Lettuce的API也是线程安全的,所以可以操作单个Lettuce连接来完成各种操作。在跑完不同客户端的benchmark后,我选择了使用lettuce来作为整个平台的redis client。
山行AI
2020-07-14
5.1K0
ElasticSearch源码分析之RestClient连接池
从上面的代码示例可以看出RestClient的实例化是依赖于RestClientBuilder的build方法,也就是应用了builder模式。HttpHost实例的构造方法入参为ip和端口。
山行AI
2020-04-22
8K0
AQS源码分析二之Condition
reentrantLock.newCondition()方法返回的对象类型是ConditionObject类型,ConditionObject是AbstractQueuedSynchronizer的内部类,它对象的创建依赖于外部类的对象,在它里面可以调用外部类中的方法。
山行AI
2020-03-25
5480
AQS源码分析之CyclicBarrier
六个线程都会在await方法处等待,等到六个线程都到位后才会并发往下执行,接下来我们基于源码来分析下其内部实现原理。
山行AI
2020-03-25
3910
AQS源码分析之CountDownLatch
tryAcquireShared方法在调用时只有在state值为0时才会返回1,否则会一直返回-1。
山行AI
2020-03-25
3450
AQS源码分析之ThreadPoolExecutor Worker
它的主要作用是在对worker进行interrupt操作时需要先获取worker的独占锁。
山行AI
2020-03-25
1.6K0
php系列一之composer的安装与使用
简单来说,composer 之于 php 相当于 maven 和 gradle 之于 java,npm 之于 nodejs,pip 之于 python,go mod 之于 golang。是 php 中的一款依赖管理的工具。
山行AI
2019-11-20
4.4K0
vue之vue-router实例
本文转自: https://www.cnblogs.com/SamWeb/p/6610733.html
山行AI
2019-07-30
1.8K0
vue之vuex2.0使用详解
Vuex 的核心是 store, 它是一个通过 Vuex.Store 构造函数生成的对象。为什么它会是核心呢?因为我们调用这个构造函数创建store 对象的时候,给它传递参数中包装了state, mutation , action 等核心内容。Vuex 的思想是 当我们在页面上点击一个按钮,它会处发(dispatch)一个action, action 随后会执行(commit)一个mutation, mutation 立即会改变state,state改变以后我们的页面会从state获取数据从而改变页面。Store对象包含了我们谈到的所有内容:action, state, mutation,所以是核心了。
山行AI
2019-07-30
1.5K0
vue之router文档
查看 dist 目录. 注意,dist 目录下的文件是最新稳定版,不会同步更新到 dev 分支上的最新代码
山行AI
2019-07-25
5.3K0
javascript之Promise对象知识点整理
Promise规范https://promisesaplus.com/中对Promise的状态的定义:
山行AI
2019-07-25
5540
实战之java中线程的虚假唤醒
如果wait()方法被虚假唤醒,然后doStuffAssumingConditionIsTrue()会被执行,尽管此时condition的值是false。如果用while来代替while
山行AI
2019-06-28
1.3K0
关于netty你需要了解的二三事.md
在nio编程中,select和bind可以不按顺序调用,也可以不在同一个线程中。netty中这是在boss线程中做的事情,可能会出现先select再绑定端口的情况。 这样做的好处就是统一化select逻辑,但是因为要支持tcp,udp,sctp等传输协议,每种协议都是不同类型的channel,所以将注册分离开已达到最大的代码重用。所以, select逻辑都在NioEventLoop的run方法里,而不同协议支持的注册和bind端口由不同类型的channel实现。netty在注册的时候先注册了个0,表示不对任何事件感兴趣,在绑定的时候,才又注册了accept事件。 这就是boss线程和worker线程分离开的原因。
山行AI
2019-06-28
1.8K0
为什么一定要弄一个Builder内部类?
知乎链接:https://www.zhihu.com/question/326142180/answer/697172067
山行AI
2019-06-28
7220
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档