首页 文章 精选 留言 我的

精选列表

搜索[异步方法],共10000篇文章
优秀的个人博客,低调大师

NoSuchMethodError 常见原因及解决方法

导读 『StabilityGuide』是阿里多位阿里技术工程师共同发起的稳定性领域的知识库开源项目,涵盖性能压测、故障演练、JVM、应用容器、服务框架、流量调度、监控、诊断等多个技术领域,以更结构化的方式来打造稳定性领域的知识库,欢迎您的加入。 @GitHub :https://github.com/StabilityMan/StabilityGuide @钉钉群: 运行时抛出 NoSuchMethodError 的根本原因是什么? 在实际生产系统中,我们主要关注运行时抛出的 NoSuchMethodError 错误,该错误轻则导致程序异常终止,严重时甚至会产生不可预知的程序结果,比如支付服务执行异常,实际支付已完成,却向用户返回支付失败。 运行时抛出 NoSuchMethodError 错误的根本原因就是: 应用程序直接或间接依赖了同一个类

优秀的个人博客,低调大师

DeepLink唤醒App的简单实现方法

DeepLink(深度链接技术),一般是通过Web页面调用原生App,并把需要的参数通过Uri的形式传递给App,主要使用方式有:两个App之间的广告、App的社交分享、页面跳转App、DSP广告投放、营销效果统计等。在App的运营推广中,DeepLink的意义十分重大。 使用DeepLink技术的App可以让用户在手机移动端点击广告或链接时,直接唤醒对应的手机App,并跳转到达App里对应的场景页面。 DeepLink技术目前也有比较成熟的第三方,这里重点介绍一下 openinstall 的“一键拉起”功能,这项功能集成scheme,universal link等技术,能快速实现一键拉起App、一键直达页面,近期已经免费开放给广大开发者。 如上图所示,openinstall 这项功能的主要优势有:1、同时兼容Android和iOS系统,两者都可以直达相应场景;2、openinstall一键拉起功能适配大量主流社交平台和浏览器,如微信、QQ、钉钉、新浪微博、支付宝等;3、目前该服务运行相当稳定,能完善用户安装全流程,大幅降低用户流失率;4、openinstall能帮助开发者追踪渠道来源,统计用户是具体从哪篇文章、哪个链接点进来的,评估渠道广告和推广效果;5、openinstall能实现点击链接安装后自动添加好友,让用户之间的关系链更加紧密;6、11月份起,已经完全免费开放给开发者使用。 目前大多数App都能得到巧用。如:电商类App直达购物商品页面、游戏类App直达分享游戏房间、资讯类App直达对应新闻页面等,具体可以结合自身的App业务进行拓展。此外,openinstall提供的免填邀请码安装、广告效果统计等功能也能让这项技术的使用场景得到延伸。 openinstall官网:https://www.openinstall.io

优秀的个人博客,低调大师

Ubuntu更改默认python版本的方法

一般Ubuntu默认的Python版本都为2.x, 如何改变Python的默认版本呢? 1.查看系统中都有哪些 Python 的二进制文件可供使用。 ls /usr/bin/python* /usr/bin/python /usr/bin/python2-config /usr/bin/python2-jsonpointer /usr/bin/python3 /usr/bin/python3.6 /usr/bin/python3.6m-config /usr/bin/python-config /usr/bin/python2-jsondiff /usr/bin/python2.7 /usr/bin/python3.5 /usr/bin/python3.6-config /usr/bin/python3m /usr/bin/python2 /usr/bin/python2-jsonpatch /usr/bin/python2.7-config /usr/bin/python3.5m /usr/bin/python3.6m 2.查看版本 python -V 或 python --version 2.基于用户修改 Python 版本: 想要为某个特定用户修改 Python 版本,只需要在其 home 目录下创建一个 alias(别名) 即可。打开该用户的 ~/.bashrc文件,添加新的别名信息来修改默认使用的 Python 版本。 alias python= '/usr/bin/python3.4' 一旦完成以上操作,重新登录或者重新加载 .bashrc 文件,使操作生效。 . ~/.bashrc 检查当前的 Python 版本。 python --version 3.在系统级修改 Python 版本 我们可以使用 update-alternatives 来为整个系统更改 Python 版本。以 root 身份登录,首先罗列出所有可用的 python 替代版本信息: update-alternatives --list python update-alternatives: error: no alternativesfor python 如果出现以上所示的错误信息,则表示 Python 的替代版本尚未被 update-alternatives 命令识别。想解决这个问题,我们需要更新一下替代列表,将 python2.7 和 python3.6 放入其中。 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2 --install 选项使用了多个参数用于创建符号链接。最后一个参数指定了此选项的优先级,如果我们没有手动来设置替代选项,那么具有最高优先级的选项就会被选中。这个例子中,我们为 /usr/bin/python3.4 设置的优先级为2,所以update-alternatives 命令会自动将它设置为默认 Python 版本。 查看版本 python --version 接下来,我们再次列出可用的 Python 替代版本。 update-alternatives --list python 现在开始,我们就可以使用下方的命令随时在列出的 Python 替代版本中任意切换了。 sudo update-alternatives --config python 查看版本 python --version 4.移除替代版本 一旦我们的系统中不再存在某个 Python 的替代版本时,我们可以将其从 update-alternatives 列表中删除掉。例如,我们可以将列表中的 python2.7 版本移除掉。 update-alternatives --remove python /usr/bin/python2.7 移除软连接 rm -rf/data/logs ln -s /temp/logs /data/logs

优秀的个人博客,低调大师

Presto介绍与常用查询优化方法

Presto Hive使用MapReduce作为底层计算框架,是专为批处理设计的。但随着数据越来越多,使用Hive进行一个简单的数据查询可能要花费几分到几小时,显然不能满足交互式查询的需求。 2012年秋季开始开发,目前该项目已经在超过 1000名Facebook雇员中使用,运行超过30000个查询,每日数据在1PB级别。Facebook称Presto的性能比Hive要好上10倍多。2013年Facebook正式宣布开源Presto。 Presto架构 image.png Presto查询引擎是一个Master-Slave的架构,由一个Coordinator节点,一个Discovery Server节点,多个Worker节点组成,Discovery Server通常内嵌于Coordinator节点中。 Coordinator负责解析SQL语句,生成执行计划,分发执行任务给Worker节点执行。 Worker节点负责实际执行查询任务。Worker节点启动后向Discovery Server服务注册,Coordinator从Discovery Server获得可以正常工作的Worker节点。 如果配置了Hive Connector,需要配置一个Hive MetaStore服务为Presto提供Hive元信息,Worker节点与HDFS交互读取数据。 Presto实现低延时查询的原理,我认为主要是下面几个关键点: 完全基于内存的并行计算 流水线 本地化计算 动态编译执行计划 小心使用内存和数据结构 类BlinkDB的近似查询 GC控制 更多详情:https://blog.csdn.net/fly_time2012/article/details/52160140 Presto查询优化 数据存储 合理设置分区 与Hive类似,Presto会根据元信息读取分区数据,合理的分区能减少Presto数据读取量,提升查询性能。 使用列式存储 Presto对ORC文件读取做了特定优化,因此在Hive中创建Presto使用的表时,建议采用ORC格式存储。相对于Parquet,Presto对ORC支持更好。 使用压缩 数据压缩可以减少节点间数据传输对IO带宽压力,对于即席查询需要快速解压,建议采用snappy压缩 预先排序 对于已经排序的数据,在查询的数据过滤阶段,ORC格式支持跳过读取不必要的数据。比如对于经常需要过滤的字段可以预先排序。 SQL优化 只选择使用必要的字段: 由于采用列式存储,选择需要的字段可加快字段的读取、减少数据量。避免采用*读取所有字段 过滤条件必须加上分区字段 Group By语句优化: 合理安排Group by语句中字段顺序对性能有一定提升。将Group By语句中字段按照每个字段distinct数据多少进行降序排列, 减少GROUP BY语句后面的排序一句字段的数量能减少内存的使用. Order by时使用Limit, 尽量避免ORDER BY: Order by需要扫描数据到单个worker节点进行排序,导致单个worker需要大量内存 使用近似聚合函数: 对于允许有少量误差的查询场景,使用这些函数对查询性能有大幅提升。比如使用approx_distinct() 函数比Count(distinct x)有大概2.3%的误差 用regexp_like代替多个like语句: Presto查询优化器没有对多个like语句进行优化,使用regexp_like对性能有较大提升 使用Join语句时将大表放在左边: Presto中join的默认算法是broadcast join,即将join左边的表分割到多个worker,然后将join右边的表数据整个复制一份发送到每个worker进行计算。如果右边的表数据量太大,则可能会报内存溢出错误。 使用Rank函数代替row_number函数来获取Top N UNION ALL 代替 UNION :不用去重 使用WITH语句: 查询语句非常复杂或者有多层嵌套的子查询,请试着用WITH语句将子查询分离出来 与Impala对比 Impala是Cloudera在受到Google的Dremel启发下开发的实时交互SQL大数据查询工具,Impala没有再使用缓慢的Hive+MapReduce批处理,而是通过使用与商用并行关系数据库中类似的分布式查询引擎。 Impala性能稍领先于presto,但是presto在数据源支持上非常丰富,presto对SQL的支持上也更多一些。同时由于版本迭代的问题,有一段时间Impala对 hadoop某些社区版本并不支持。 欢迎关注 高广超的简书博客 与 收藏文章 !欢迎关注 头条号:互联网技术栈 ! 个人介绍: 高广超:多年一线互联网研发与架构设计经验,擅长设计与落地高可用、高性能、可扩展的互联网架构。目前从事大数据相关研发与架构工作。 本文首发在 高广超的简书博客 转载请注明!

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册