如果要问最近几年,IT行业哪个技术方向最火?一定属于ABC,即AI+BigData+Cloud,也就是人工智能、大数据和云计算。这几年,随着互联网大潮走向低谷,同时传统企业纷纷进行数字化转型,基本各个公司都在考虑如何进一步挖掘数据价值,提高企业的运营效率。在这种趋势下,大数据技术越来越重要。所以,AI时代,还不了解大数据就真的OUT了!相比较AI和云计算,大数据的技术门槛更低一些,而且跟业务的相关性更大。我个人感觉再过几...
2022-11-22 14:27:46 1625浏览 0点赞 0回复 0收藏
线上服务的GC问题,是Java程序非常典型的一类问题,非常考验工程师排查问题的能力。同时,几乎是面试必考题,但是能真正答好此题的人并不多,要么原理没吃透,要么缺乏实战经验。过去半年时间里,我们的广告系统出现了多次和GC相关的线上问题,有FullGC过于频繁的,有YoungGC耗时过长的,这些问题带来的影响是:GC过程中的程序卡顿,进一步导致服务超时从而影响到广告收入。这篇文章,我将以一个FGC频繁的线上案例作为引子,详...
2022-11-22 14:25:11 996浏览 0点赞 0回复 0收藏
今年元旦节,我写了第一篇有关管理的文章:工程师如何从技术转型做管理这篇文章系统性地总结了「从技术往管理转型期间,会遇到的挑战和应对方法」,累计有7万左右的阅读,引起了挺多过来人的共鸣。对于初级管理者来说,「能否顺利转型」是第一大挑战,因为它会决定你后续的发展路径。最终的结果无外乎这两类:第1种,放弃转型,发现自己不适合做管理,最终回到技术岗位,走专家或者架构路线。第2种,接受转型,认可管理...
2022-11-22 13:56:10 701浏览 0点赞 0回复 0收藏
高并发,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPUload升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。在过往的面试中,如果候选人做过高并发的项目,我通常会让对方谈谈对于高并发的理解,但是能系统性地回答好此问题的人并不多,大概分成这样几类:1、对数据化的指标没有概念:不清楚选择什么样的指标来衡量高并发系统...
2022-11-22 12:00:39 1034浏览 0点赞 0回复 0收藏
在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在StopTheWorld问题,因此很容易导致服务超时,引发性能问题。我们团队负责的广告系统承接了比较大的C端流量,平峰期间的请求量基本达到了上千QPS,过去也遇到了很多次GC相关的线上问题。5月份的这篇文章我介绍了一个FullGC过于频繁的案例,并且针对JVM的堆内存结构和GC原理...
2022-11-22 11:58:38 1060浏览 0点赞 0回复 0收藏
之前,我写过几篇有关「线上问题排查」的文章,文中附带了一些监控图,有些读者对此很感兴趣,问我监控系统选型上有没有好的建议?目前我所经历的几家公司,监控系统都是自研的。其实业界有很多优秀的开源产品可供选择,能满足绝大部分的监控需求,如果能从中选择一款满足企业当下的诉求,显然最省时省力。这篇文章,我将对监控体系的基础知识、原理和架构做一次系统性整理,同时还会对几款最常用的开源监控产品做下介绍,以便...
2022-11-22 11:56:40 957浏览 1点赞 0回复 1收藏
广告、增值服务、佣金,是互联网企业最常见的三种盈利手段。在这3大经典中,又以广告所占的市场份额最大,几乎是绝大部分互联网平台最主要的营收途径,业务的重要性不言而喻。从技术角度来说,广告业务涉及到AI算法、大数据处理、检索引擎、高性能和高可用的工程架构等多个方向,同样有着不错的技术吸引力。我从去年开始接触广告业务,到现在差不多一年时间了。这篇文章将结合我的个人经验,同时参考业界的优秀案例,阐述下广告...
2022-11-22 11:52:52 1572浏览 0点赞 0回复 0收藏
做广告业务1年多时间了,但是平时的工作主要和广告工程有关,核心的广告算法由AI部门支持,对我们而言可以说是「黑盒般」的存在,只需要对训练好的模型进行调用即可。近期,我打算系统性地学习下广告中的搜索和推荐算法,当然更多是从工程的视角去弄清楚:算法的基本原理、以及面对线上海量数据时算法是如何解决性能问题的?整个过程,我会将有价值的技术点输出成系列文章。这篇文章属于推荐系统的入门篇,本文暂不考虑线上环境...
2022-11-22 11:50:16 1908浏览 0点赞 0回复 0收藏
近期在公司做了一次Elasticsearch的分享,所以本篇主要是做一个总结,希望通过这篇文章能让读者大致了解Elasticsearch是做什么的以及它的使用和基本原理。一、生活中的数据搜索引擎是对数据的检索,所以我们先从生活中的数据说起。我们生活中的数据总体分为两种:结构化数据非结构化数据结构化数据:也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。...
2022-11-22 11:47:06 3029浏览 0点赞 0回复 0收藏
大家好呀,我是武哥。之前有读者留言让写一篇大型网站的架构演进过程,发现下面这篇文章讲解得很详细,特此分享给大家,相信看完会有所收获。文章在介绍一些基本概念后,按照以下过程阐述了整个架构的演进过程:单机架构第一次演进:Tomcat与数据库分开部署第二次演进:引入本地缓存和分布式缓存第三次演进:引入反向代理实现负载均衡第四次演进:数据库读写分离第五次演进:数据库按业务分库第六次演进:把大表拆分为小表第七...
2022-11-22 11:43:56 1182浏览 1点赞 1回复 0收藏
在工作中我们可能会写出以下代码:classMyExampleStateextendsState<MyExample>{boolloadingfalse;Datadata;overrideWidgetbuild(BuildContextcontext){returnScaffold(body:loadingconstCircularProgressIndicator():(datanullconstText('errorarea'):constText('contentarea')),);}}这样的三元表达式看起来很丑,如果条件再多点,就很难维护了。如果你对Dart语言了解得比较深的话,应该知道在Dart的集合中是可以使用if、for循...
2022-07-08 17:19:20 2698浏览 0点赞 0回复 0收藏
最近几年开源界刮起了一阵歪风,那就是刷GitHubstar。这种行为严重违背开源精神,严重扰乱开源社区秩序,严重破坏开源生态。百害而无一利。据我的了解,不光是个人会刷star,某些大厂也在刷,为了一探究竟,前段时间我以卧底的身份和某宝提供GitHub周边服务的商家展开了如下对话(对话中我的言辞纯属虚构):从言谈中可以看出卖家并不觉得自己在做恶心的事情,相反他们很引以为荣:他们的这一挺身而出可能会让中国开源走向失业...
2022-07-08 17:19:10 1937浏览 0点赞 0回复 0收藏
前言我会用两篇文章来讲透声明式UI,分别是《给移动开发者的声明式UI入门手册》,《UI开发的革命,声明式UI到底好在哪里?》,今天这篇文章是第一篇,第二篇什么时候能发出还不确定,欢迎关注本公众号以及时接收推送。命令式UI的由来和声明式UI相对应的是命令式UI,也就是我们传统的UI编程模式。在声明式UI(响应式UI)这个概念还没出现之前,我们似乎并没有将其称作命令式UI。它好像是为了甄别两者的不同而凭空造出的概念。在...
2022-07-08 17:18:38 1719浏览 0点赞 0回复 0收藏
我对这个问题进行过深入的思考,我的答案是不一定。社会经济活动的本质是人们从自然界中获取原材料,使用人工或机器进行加工,最终制造出供人们使用的各种商品。尼古拉斯·方兵(hackware)每当新技术出现时,往往伴随着生产率的提高。生产率的提高意味着雇主可以雇佣更少的人来生产出更多的商品,这在前期必然导致失业。因为全社会对商品的消费能力是趋于稳定或缓慢增长的,雇主的商品产量提高但销路不提高的话,雇主就会裁员...
2022-07-08 17:18:28 1389浏览 0点赞 0回复 0收藏
这个问题是我最近做业务开发和业余开发都遇到的,这里的angle指的是旋转弧度。不是旋转角度。先看一下我使用angle的场景吧:任务进度报警类型分布指针的旋转角度图一中使用了canvas.drawArc,传入了startAngle和sweepAngle。图二也是如此。图三是FlutterConstraintLayout中圆形定位的example,我没有使用FlutterConstraintLayout自带的旋转能力,而是用了Transform.rotate,传入了angle。FlutterConstraintLayout自带的对Widget...
2022-07-08 17:18:14 1993浏览 0点赞 0回复 0收藏
简介PVState全称是PresenterViewState。是我创造的一种全新的声明式UI下的架构模式,从目前看来,我认为它是声明式UI下最好的架构模式。它包含PState和VState。这里的State指的是StatefulWidget的State。这个模式是从传统的MVC、MVP、MVVM推演出来的,因此有必要对各个传统架构模式进行分析,看它们为什么会存在?解决了什么问题?我先抛出一个结论:在PVState架构没有出现之前,MVC是声明式UI下最好的架构模式。MVCMVC的全称是...
2022-07-08 17:17:57 1026浏览 0点赞 0回复 0收藏
这个问题网上有不少答案,都差不多。我也有一台自己的云服务器,是阿里云最低配的那种,1核2G,1MB带宽。我是在阿里云做活动的时候买的,一次性买了4年,只需要200多块钱,非常的便宜。今天来谈一谈我都用它干了哪些事情吧。我用它做了以下事情:1.部署了自用的Mock服务2.部署了内网穿透服务:远程ADB,远程桌面3.部署了几个网站:儿子的个人主页,FlutterFirst官网,将来还会部署weiV的官网4.部署了中继服务用来加速我家的宽带...
2022-07-07 17:15:04 2227浏览 0点赞 0回复 0收藏
我计划开发一个操作系统和编译器,先看操作系统。操作系统Flutter的势头发展迅猛,已经有几十万的移动应用采用Flutter开发。前不久发布的Flutter3.0已经稳定支持Windows、Linux、MacOS、Android、iOS、Web六个端。我极其看好它,我认为未来大前端将有80%的UI采用Flutter构建。实现这个目标快则5年,长则10年。Flutter不仅仅是个跨平台的UI框架,它还是Google新系统Fuchsia的默认UI框架。Flutter大量普及之后,我认为意味着99%的...
2022-07-07 17:14:44 1557浏览 0点赞 0回复 0收藏
weiV(发音同wave)wave.webpif("weiV""View".reversed()){Log.d("weiV","它意味着控制反转,你始终应该直接操作UI的描述Widget而不是直接操作View。")}它具有以下优势:1.声明式的UI写法让原生开发效率翻倍2.达到或超越View系统的性能1.我将我的FlutterConstraintLayout移植到Android,依托它先进的布局算法,在不引入固有特性测量的情况下,让View树中的子元素在任何情况都只会被layout一次,使得任意嵌套不会引起性能问题。...
2022-07-07 17:14:16 1521浏览 0点赞 0回复 0收藏
说明开放式语法是我发明的新词,它是啥意思呢?我们看看代码就明白了。classOpenGrammarExampleextendsStatelessWidget{constOpenGrammarExample({Keykey}):super(key:key);overrideWidgetbuild(BuildContextcontext){returnScaffold(body:ConstraintLayout().open((){if(DateTime.now().millisecond%20){Container(color:Colors.red,).applyConstraint(size:200,centerTo:parent,);}else{Container(color:Colors.yellow,).appl...
2022-07-07 17:14:03 2664浏览 0点赞 0回复 0收藏