技术文章

现代IM系统中的消息系统架构

醉酒当歌 提交于 2021-02-17 05:37:15
序 消息类场景是表格存储(Tablestore)主推的方向之一,因其数据存储结构在消息类数据存储上具有天然优势。为了方便用户基于Tablestore为消息类场景建模,Tablestore封装Timeline模型,旨在让用户更快捷的实现消息类场景需求。在推出Timeline(v1、v2两个版本)模型以来,受到了大量用户关注。伴随模型推广与输出,Tablestore陆续发布了一系列专题文章,重点讨论介绍了IM场景的架构设计、模型概念以及Feed 流系统架构的设计方案,相信给很多用户提供了场景实现新思路。文章列表见 《表格存储权威指南》 。 但依然会有用户困惑,“框架、结构、模型等概念介绍了这么多,该如何基于Timeline模型,实现具体场景呢?”。 本文就是为了让用户更快速的上手,带用户基于Timeline2.0 模型,详细讲解如何实现一个简易的IM系统。并开源了相应的实现代码。 源码链接 相关系列文章见: 《现代IM系统中的消息系统架构 - 架构篇》 、 《现代IM系统中的消息系统架构 - 模型篇》 梗概 生活中最常见的即时聊天类软件如:钉钉、微信等,都可以描述为:实现了即时通讯能力的聊天工具。其中聊天会话可分为两大类,分别是:单聊、群聊(公众号类似单聊)。这里我们以钉钉(Ding Talk)的功能为参照,详细说明相应的功能基于Tablestore的Timeline模型如何实现。如

Django基础八之cookie和session

我怕爱的太早我们不能终老 提交于 2021-02-17 05:36:58
一 会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应。例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了。从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束。在通话过程中,你会向10086发出多个请求,那么这多个请求都在一个会话中。 客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束。   在一个会话的多个请求中共享数据,这就是会话跟踪技术。例如在一个会话中的请求如下: 请求银行主页; 请求登录(请求参数是用户名和密码); 请求转账(请求参数与转账相关的数据); 请求信誉卡还款(请求参数与还款相关的数据)。   在这上会话中当前用户信息必须在这个会话中共享的,因为登录的是张三,那么在转账和还款时一定是相对张三的转账和还款!这就说明我们必须在一个会话过程中有共享数据的能力。而web中这种能力的实现就要依靠cookie和session 二 cookie Cookie的由来   大家都知道HTTP协议是无状态的。   无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。   一句有意思的话来描述就是人生只如初见,对服务器来说

为什么有些程序员找不到女朋友

心不动则不痛 提交于 2021-02-17 05:36:21
程序员如何看待一段感情 为什么有些程序员找不到女朋友 程序猿不好找女朋友是有原因的 女朋友 VS 编译器 程序员的 感情状态 本文分享自微信公众号 - itDog程序员(newObject-007)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u/4023279/blog/4518214

php将图片存储在阿里云oss存储上

╄→尐↘猪︶ㄣ 提交于 2021-02-17 05:35:56
创建两个方法 1.上传方法 1 use OSS\OssClient; 2 use think\Config; 3 use OSS\Core\OssException; 4 /* * 5 * 存储文件 6 * 7 * @param $srcFile 8 * @param $desFile 9 * @throws Exception 10 */ 11 public function storage_save( $srcPath , $desPath ) 12 { // 配置 13 $accessKeyId = '' ; 14 $accessKeySecret = '' ; 15 $endpoint = '' ; 16 $bucket = '' ; 17 18 $ossClient = new \OSS\OssClient( $accessKeyId , $accessKeySecret , $endpoint ); 19 20 $ossClient ->uploadFile( $bucket , $desPath , $srcPath ); 21 } 2.删除方法 /** * 删除文件 * * @param $srcFile 文件路径 * */ public function storage_delete( $desPath) { //配置 $accessKeyId = '' ;

用Python爬取Bilibili上二次元妹子的视频

你。 提交于 2021-02-17 05:35:40
一直想爬取BiliBili的视频,无奈一直没有去研究一下。 最近,在旭哥的指点之下,用了Fiddler抓包,抓到了一直期待的视频包,完成了下载。 下面写一下我做这个爬虫的过程。 # 相关依赖 : Fiddler+Python3 + Requests 下面看一下我做这个爬虫的具体步骤: 1. 进入某个具体视频的页面抓取视频包测试。 进入这个页面:https://www.bilibili.com/video/av26019104,如下图所示。点击播放按钮。 可以看到Fiddler已经抓到了很多包。别着急,现在还没有视频包出现。由于需要时间下载,所以具体视频包会过一会才能弹出来。 过大概一两分钟,就会看到这个包,如下图。可以清楚的看到这个是Flv形式的视频流的包,看这个包的大小也可以看出来,是相当的大。 下面分析一下这个包的具体参数。点击上图红色圈圈那个“Raw",会弹出下面这个窗口 可以看到是一个Get请求,请求的url和Headers都很清楚。 这时候就可以实验一下,来写一小段代码测试一下是否可以通过requests.get()方法来下载视频。 #######################################################################import requestswith open("D:\video\bilibili.mp4")

点石成金_Index

≡放荡痞女 提交于 2021-02-17 05:34:39
程序修炼之道 程序员成熟的标志 如何成为一个合格的Java程序员 软件工程师所需掌握的“终极技术”是什么? 技术敏感度 — 基层技术管理者必备 软件开发:个人与团队是永远的核心 编程离软件工程有多远? 走技术线,还是技术管理线? 致IT同仁 — IT人士常犯的17个职场错误 一个好的设计应当具备哪些要素 驾驭你的“职场布朗运动” 用心工作,做无可替代的你—致我的助理 是谁让技术人员极端? IT人不要一直做技术 干掉你程序中的僵尸代码 每个程序员都必须遵守的编程原则 编程从业五年的十四条经验,句句朴实 人生修炼晋阶 让你尖叫的13种思维方式 码农创业:6年80万,有梦想才可能有机会 如果你喜欢销售,那么你一定要看!经典之作! 工作准则 道德经给治理企业的启示 微软老将Philip Su的离职信:回首12年职场生涯 程序员如何经营个人品牌 狼、兔子,人性才是最重要的 杂谈 员工辞职是为了炒老板鱿鱼,而不是不满意公司 凯来口才—精彩集锦 大数据能做什么 百度缺的不是狼性,而是鲁滨逊 经典书籍 来源: oschina 链接: https://my.oschina.net/u/120166/blog/355824

AkShare-另类数据-彭博亿万富豪指数

末鹿安然 提交于 2021-02-17 05:34:00
作者寄语 本接口提供 彭博亿万富豪指数 ,由于源数据的问题,缺少第 442 位富豪的资料,所以最终只返回 499 个数据。第 442 位神秘富豪到底是谁? 彭博亿万富豪指数最新数据显示,在特斯拉股价上涨近11%后,当地时间7月10日美股收盘后,马斯克的财富增加了61亿美元(约合427.11亿元人民币),达到705亿美元(约合人民币4936.27亿元人民币)。 目前,马斯克已经成为全球第七大富豪,超过了国际软件公司甲骨文创办人埃里森(Lawrence Ellison)和谷歌联合创始人布林(Sergey Brin),也比股神巴菲特更为富有。 更新接口 "index_bloomberg_billionaires" # 彭博亿万富豪指数 彭博亿万富豪指数 接口: index_bloomberg_billionaires 目标地址: https://www.bloomberg.com/billionaires/ 描述: 获取彭博亿万富豪指数, 全球前 500 名 限量: 单次返回所有数据彭博亿万富豪排名数据 输入参数 名称 类型 必选 描述 - - - - 输出参数 名称 类型 默认显示 描述 rank str Y Rank name str Y Name total_net_worth str Y Total net worth last_change str Y $ Last

微信简史

末鹿安然 提交于 2021-02-17 05:33:01
本文由 MixLab && getget.ai 出品 MixLab无界社区是一所面向未来的实验室 长达47年的时间线, 微信的开机页 ,让微信的故事与1973年阿波罗拍下地球的那一张照片产生了联系, 2017年,微信更换启动页,庆祝中国气象卫星升级换代,从此与 中国气象史 产生了交集。 本文的数据来源精选自高质量的 28篇 自媒体文章,大多出自 2018年 。 张小龙 无疑是微信的明星人物,在各大媒体、文章中出现的频率是最高的。 微信国际化过程中,最受网民关注的是 印度市场 。 微信的发展也不是一帆风顺的,在微信开始流行之时,商标之争随之而来,与 华为手机 存在支付入口的矛盾, 华为手机用户中,有超过 6000万微信 用户。 总结下微信这些年的故事: 1 微信启动页& 中国气象史 微信的成功,加上微信启动页上的地球卫星图像,让微信与中国气象史产生了交集,代表了微信的跨界影响力。 2 微信里程碑 最受人们广为流传的是微信 诞生那一年的故事。其次是微信历年发布的新功能,例如微信与二维码、微信支付、微信指纹支付、微信红包、红包照片、微信翻译、微信小程序、小游戏等。 3 微信人事 在媒体报道中,除了微信之父张小龙,微信随着技术的升级,从最初的视频通话技术相关人才的引入,到微信小程序、小游戏产品的推出,还有人工智能技术,都可以从微信的发展中一窥人才流动。 4 微信的国际化

【POJ HDOJ leetcode】括号匹配合法性及最长括号匹配

时光毁灭记忆、已成空白 提交于 2021-02-17 05:32:35
/* 1. string parenthesis 给出一个由()组成的字符串判断合法性,如()合法, (, (((不合法. 2. 给出一串()字符串,求出最长连续括号匹配的长度及其位置 */ #include <iostream> #include <stdio.h> #include <stack> using namespace std; class Solution { public : bool isValid( const string & s) { if (s == "" ) { return true ; } stack < char > stk; size_t size = s.size(); for (size_t i = 0 ; i < size; i++ ) { if (s[i] == ' ( ' ) { stk.push(s[i]); } else { if (stk.empty()) return false ; stk.pop(); } } return stk.size() == 0 ; } }; pair < int , int > NumOfMatch( const char * str) { if (str == NULL) return { 0 , 0 }; const char * p = str; int nLeft = 0 ; //

httpclient

六眼飞鱼酱① 提交于 2021-02-17 05:32:14
每次用,每次查,每次查,每次忘,这下忘不了了吧! 另,要这两个包, public void getResponseDetail(String url) { HttpServletResponse response = (HttpServletResponse) super.getContextParam(ServletActionContext.HTTP_RESPONSE); HttpClient httpClient = new HttpClient(); GetMethod getMethod = new GetMethod(url); try { //关闭连接 getMethod.setRequestHeader("Connection","close"); getMethod.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8"); int statusCode = httpClient.executeMethod(getMethod); if (statusCode != HttpStatus.SC_OK) { System.out.println("Method failed:" + getMethod.getStatusLine()); } else {