IM系列3:消息处理框架的实现
上一篇提到了,根据 Netty 来将 HTTP 升级为 WebSocket 协议,并且通过心跳机制来关闭因为各类操作导致的连接未关闭的问题 。
这一篇是核心内容,我们将通过WebSocket 进行聊天。
本篇内容的示例源码还是通过kotlin
编写,继续给大家安利 kotlin
上一篇提到了,根据 Netty 来将 HTTP 升级为 WebSocket 协议,并且通过心跳机制来关闭因为各类操作导致的连接未关闭的问题 。
这一篇是核心内容,我们将通过WebSocket 进行聊天。
本篇内容的示例源码还是通过kotlin
编写,继续给大家安利 kotlin
Java8
对于Map
新增了 几个非常有用的API
,这里我着重强调下如下 2 个:
computeIfPresent
:当key 映射的value 不存在的时候,如何生成 valuecomputeIfAbsent
:当 key 映射的 value 存在的时候,如何处理 value分别对应的是 key 对应的 value 存在或者不存在时候的逻辑,用的好可以减少代码行数,逻辑表述更清晰。
最近因为公司业务扩张缘故,今天新增了一台服务器,购买ECS
的过程中,虽然一再小心,但是还是出现了一些问题,这里简单做一个记录,给自己加深印象,让自己下次不再犯错。
上结论:新手买阿里云的资源,全部统一在同一个的地域的,同一个区,采用其默认网络、默认交换机配置,这样最简单。
最近用 kotlin
写业务代码,福至心灵的又优化了一个写法,同时也再次加深了return
的一个小技巧。
再感慨一句:kotlin
真香...
本文通过简单总结了构造函数的通用用法,以及对应的最佳实践。
今天遇到一个业务场景,有一个数据容器是 Map,现在需要根据 Map的 value
来排序,这个实现简单记录下,也算水一篇博文了。
文本由一个 bug
谈起,聊聊线程池的执行模式,希望能够加深读者对线程池的理解!
当 Netty 用作长连接的时候,比如websocket
的时候,如果有一个类似ThreadLocal
的功能,能够将相关参数绑定到这个Channel
上的时候,是不是会省下很多功夫?
最初遇到类似的问题,我是自己在那里维护一个Channel
的id
和对应值的一个Map
,然后在这个通道关闭的时候,移除相关映射,这种办法肯定是可以的,不过该方法需要自己维护 Map,并监听通道关闭事件,不够简单和方便,经过学习这里介绍一种Netty
原生自带的且更加简单的方法。
本文是关于kotlin
协程基础内容的学习总结,其中可能存在认知错误或者不够深入的地方,欢迎大佬们吐槽...
本篇文章包括如下内容:
接下来应该还有协程如下资料:
这篇文章虽然短,但是花了我 1 个小时还多,主要是 2 个原因:
stream+filter
,python 一个 for表达式搞定。比如 python 的切片,简洁确实简洁,但是不够语义化。这篇文章是TRTC在C#的Winform的第二篇文章,主要聊聊下面的话题。
ITRTCCloud
核心的trtc操作类,非本文重点。ITRTCCloudCallBack
核心的回调,本文重点。因为公司项目需要,研究了下腾讯的实时音视频的 C# Winform
版本的 Demo。
当然其他平台也有,不是我主要负责。
经过 2 天的摸索,对其代码和原理进行了一个简单的梳理。因为才接触腾讯的音视频直播,同时 C# Winform
相关的知识已经 5 年没碰了。
所以下面的内容,应该会出现一些偏差,仅供大家参考。
总结了下 python for 表达式的几个用法。
其中过滤元素非常简洁,我认为比java
的 stream 操作更 6
双层过滤也是非常简洁
但最这些语法糖,甜过头了,也是非常不好的!
最近因为工作需要,学的东西好杂啊。
把 C#
又重新看了遍,又把之前入门的 python
回顾了下,写了些小例子。
如果让我对这些语言的友好性来排名,我心中的地位是:
kotlin
> C#
> java
> python
> javascript
Kotlin
的语法糖真香C#
没有 kotlin
之前,C#是最香的,但是可能因为发展已经有些年头了,不够清爽Java
非常严谨,关键是手熟....Python
足够的简单,但是还是觉得 API
不够友好,比如习惯了 str.length
偏偏要 len(str)
Kotlin中定义常量
在Java中,我们可以使用如下代码定义常量。
private static final double PI = 3.14159265;