技术改变思想 本来不想用“当我们在谈XXX的时候,我们在谈什么”这种俗气的标题,但这个文章的内容,确实在一些人的想法里,还是有那么一点俗气的。所以用这个标题,也算文题对应吧。...现在的一些大制作的单机游戏,几乎都不会让一次通关的时间长于15小时。也许是游戏开发技术的发展,让厂商可以浓缩精华内容,而不是靠拖时间来让玩家觉得“值”。...不管是哪种,都是利用了玩家对“胜利”这个名号,进行的消费引导。 当我在思考游戏是否真的存在“纯粹的”胜利快感的时候,不紧想起过往的各种游戏体验。...或许中华民族的赌文化太过根深蒂固,所以一定要使用对赌的计费方式,才是最能满足一些人的愿望。从这个角度上来说,也许很多免费游戏买的也不是“纯粹的胜利”,而是一种可以对赌的快乐。...或者游戏从打发孤独时间的工具,变成了聚会时一起玩的玩具,一如扑克、麻将。 我们可以发现,国外的游戏中,网游并不是主流的品类,而国内的游戏里面,就算不是网游,最后也会被弄成玩家社区。
这里准备写一篇文章,讨论下当使用sync.Map执行操作的时候,会发生什么。 map结构 代码很简单,sync/map.go中一百多行。...misses , int 记录读取的时候,在read map中miss的次数 } 操作一下 Store key:1 此时会初始化dirty map,初始化read map,并把amended设为true,这个...使用的是atomic.Value结构的功能。 ?...m.dirty[key] = e } 为什么read中存在值为expunged的key时,这个时候dirty map一定不为nil呢。 1....因为 expunged 的设置命令出现在dirtyLocked -> tryExpungeLocked这个调用的原子操作中(详细见上面一节),执行时,dirty 已经存在。
我和许多其他开发人员将他们的成功归功于这个了不起的框架,这已经不是什么秘密了。...使用箭头函数时不需要 .bind(this) 通常,如果有一个受控组件时,会有如下的结构: class Foo extends React.Component{ constructor( props...1.gif 使用 ESLint 和 Visual Studio 代码插件,它可以在保存时为你格式化它。...我要解决的问题是什么 这个项目能长久地受益于这个库吗 React是否已经提供了一些现成的东西 现在可以使用 React 的 Context 和 Hook,你还需要Redux吗?...当你的用户处于糟糕的互联网连接环境时,我强烈建议使用 Redux Offline。
服务提供者 consumer 服务消费者,即调用方 registry 注册中心,让consumer能发现provider的关键 注册中心对于服务提供者需要具备服务注册、注销的能力,对于服务消费者需要提供查询服务...阿里巴巴为什么不用ZooKeeper做服务发现》),可以简单的从以下两个场景来理解: 注册中心挂掉一个节点无任何影响,如果注册中心是CP模式(强一致),像ZAB、raft协议,它们存在一个“选主”的过程,通常选主时集群是不可写的...试想没有路由能力的注册中心,如果想线上只调用线上,预发只调用预发时,是不是必须得部署两套注册中心(以zk为例)。...其实两种方案都可以,部署一套注册中心需要保证每个机房的服务注册都要请求这个注册中心,存储数据是一份,这样的问题是跨机房调用时延高,但如果是专线,这个问题也不是太大。...zookeeper zk是在dubbo中使用最多的注册中心,但它本身不是为了服务发现而生。 它是一个基于ZAB协议实现的可靠的分布式协调系统,它是强一致(CP)、使用基于TCP的私有协议通信。
比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时: 复制代码 mysql> select * from T where ID=10; 我们看到的只是输入一条语句,返回一个结果...这样当我们碰到 MySQL 的一些异常或者问题时,就能够直戳本质,更为快速地定位并解决问题。...怎么解决这个问题呢?你可以考虑以下两种方案。 定期断开长连接。使用一段时间,或者程序里面判断执行过一个占用内存的大查询后,断开连接,之后要查询再重连。...这个过程不需要重连和重新做权限验证,但是会将连接恢复到刚刚创建完时的状态。 查询缓存 连接建立完成后,你就可以执行 select 语句了。执行逻辑就会来到第二步:查询缓存。...因为查询缓存往往弊大于利。 查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。因此很可能你费劲地把结果存起来,还没使用呢,就被一个更新全清空了。
你好,今天聊一个简单的技术问题,使用 querySelector 方法查询网页上的元素时,如何使用正则进行模糊匹配查询?...发到用户浏览器中的源码经常有这样的元素节点: 点击登录 其中,13jj5 并不是固定的,它是一串随机字符,是前端框架在编译时为了避免组件样式混淆而故意添加的...每一次产品重新发布,这个 class 样式便会变化一次。...如果我们在智能化产品中直接这样查询目标元素: document.querySelector('h2.UserInfoBox_textEllipsis_13jj5') 下次产品重发后,代码便不再有效了。...,关键记忆点有两个: 1)使用了中括号,直接用在元素选择器后面。
后来就支持了可视化的编排,可以被编排的这个构建、部署的流程叫做流水线 pipeline。...现在流行的容器技术就是做这个的,比如 docker,可以把环境信息和服务启动方式放到 dockerfile 里,build 产生一个镜像 image,之后直接部署这个 docker image 就行。...不同代码运行环境不同,为了把环境也管理起来,我们会使用容器技术,比如 docker。...静态资源和动态资源共享服务器的网络带宽,为了减轻服务器压力、也为了加速静态资源的访问,我们会使用 CDN 来对静态资源做加速,把我们的静态服务器作为源站。...当我们在谈部署的时候,主要就是在谈这些。
我们现在讨论内容产业时,实际上是在讨论的一些具有共同特征的业务,理论上来说内容与工具、平台并列。...广义内容就太大了,基础工具和平台可以算是移动互联网上的内容、商品可以算是电商平台的内容、服务可以算是O2O平台的内容… 我们在讨论内容产业时,更多是说狭义的内容,基于此就很清晰了:图片、文学、动漫、音乐...虾米音乐上的《小幸运》成为爆款内容,应该是走的第三条路,之前《我的少女时代》不够火时阿里便押宝了,并且利用虾米音乐资源帮助这一内容爆发,最终《小幸运》也火了,虾米音乐与之可谓双赢。
在一个查询中: UPDATE a SET a.scts = b.v1, a.YCYL = b.v2, a.YCSL = b.v3 FROM kfdbsyy a, (SELECT f_wellnumber...'2004-06%') GROUP BY f_wellnumber) b WHERE a.JH = b.f_wellnumber AND a.ny = '200406' 红色在子查询单独运行没有问题...反复试验,发现跟内部的子查询有关。
关于编程习惯 参考文献 今天收到一个 Bug, 一个超级奇怪的人名叫做 Isxxxxa Onxxxna Anton LinkedIn 居然搜得到这个人全名, 果断隐藏了部分 o(  ̄▽ ̄ )o...可以理解为URI是URL的父类, URI的目的是指向一个资源, 而URL的目的是引用这个资源 借用 Chokcoco 博客2的一句话: URI 属于 URL 更低层次的抽象,一种字符串文本标准。...而 URL 同时说明要如何访问这个资源(http://)。...字符都属于保留字符, 并且在最早期编码标准中就已经投入使用, 因此多数语言的编码实现都没有问题 空格?...application/x-www-form-urlencoded类型编辑 当 HTML 表单中的数据被提交时,表单的域名与值被编码并通过HTTP的GET或者POST方法甚至更古远的 email[2]把请求发送给服务器
书接上文:当我做 hackathon 时我在做什么(1)。 前文中提到,我做的第二个项目是个可视化的项目,名字叫 deneb。deneb 是天鹅座的一等星,也是夏季大三角和北十字两个星群的端点之一。...为了达到这个目标,我们需要提供对 vega-lite 语法在 Elixir 上的封装。...我在实现 ExPolars 时,使用的就是 IElixir + Jupyter Notebook 来展示功能。 然而,IElixir 实现了基本的消息通讯,但有些细节似乎没有测试过。...这也是为什么我在做 ExPolars 时, 在 Jupyter notebook 里,一切操作都正常,因为那些输出都是简单的 text;而当我想输出 deneb 生成的包含 vega-lite spec...的 html 片段时,IElixir 就无法正常工作了。
当我们调用map.put(key1,value1)方法向HashMap里添加数据的时候: 首先,调用key1所在类的hashCode()计算key1的哈希值,通过key1的hash值与数组的最大索引进行位运算以后...的哈希值与已经存在的数据的某一个数据的哈希值相同,继续比较:调用key1所在类的equals()方法: 如果equals()返回false,此时key1-value1添加成功; 如果equals()返回true,使用...会涉及到扩容问题,当数组容量大于数组现有长度乘以加载因子(如16*0.75,默认的加载因子为0.75)的时候,就会进行数组扩容,以减少哈希冲突(哈希冲突是指哈希函数算出来的地址被别的元素占用了),提高查询效率...最后,当某一个索引位置上的元素以链表形式存在的数据个数>8且当前数组的长度>64时,此时此索引位置上的所有数据改为使用红黑树存储。...在jdk1.7中,即使在“数组容量大于数组现有长度乘以加载因子”时扩容,也不可避免地会有哈希冲突存在,因此,在jdk1.8中引入红黑树是为了进一步减少哈希冲突,提高查询效率。
业务促销活动在特定时间开启,大量用户请求等待活动开启后瞬间涌入 抢购脚本带来压力:灰产通过抢购脚本薅羊毛,一方面带来额外的系统压力,另一方面影响抢购活动公平性 DDOS趁虚而入:可能存在竞对在活动期间使用...前端与接入层:加速与限流 前端动静分离,把90%的静态数据缓存在用户端或者CDN上,当真正秒杀时用户只需要点击特殊的按钮“刷新抢宝”即可,而不需要刷新整个页面,这样只向服务端请求很少的有效数据,而不需要重复请求大量静态数据...由于库存数据更新非常频繁,再加上后面要提到的库存拆分设计,缓存一致性在系统设计时是需要折中考虑的,库存数据的缓存往往被设计为延后定时刷新,而不是在每次成功扣减库存后去刷新,用户可能会看到商品仍有剩余库存,但是实际下单时返回售罄...比如阿里张瑞说的: “在零点前有一个倒计时环节,连线杭州光明顶作战指挥室,逍遥子会为大家揭幕2015双11启动,然后直接切换到我们的媒体大屏,所以对GMV数字的要求基本上是零延迟,这个挑战有多大不言而喻
而现代国际贸易的基本准则就是货物动而钱不动,使用现金直接支付的方式实际上会将国际贸易退化成了一手交钱一手交货的原始模式,会极大的影响国际贸易的运转效率,因此在国际支付中不太可能出现这种直接清算的情况,基本上都是记账清算...而把一个国家从SWIFT系统当中踢出去,则相当于从淘宝上把这个机构的账户封号,封号后其它用户无法从淘宝上找到这个被踢出去的商家,更无法从这个商家这买到东西,而且从SWIFT目前国际贸易的体量来看,其市场份额几乎等同于国内的淘宝...、拼多多和京东的联合体,遭遇这种程度的封杀,这个商家经济活动势必受到重大的影响。...之前美国通过SWIFT方式制裁朝鲜和伊朗等国家时,其所达到的效果远远超过预期,因此这种手段也被不少评论家,称为金融核武器。 面对金融核武制裁,俄罗斯做好准备了吗? 金融的本质就是信心。...Messaging System of the Bank of Russia),目前SPFS系统仅有来自俄罗斯、亚美尼亚、白俄罗斯、德国、哈萨克斯坦、吉尔吉斯斯坦、瑞士等经济体的400个使用者,且仅约
「意义」这个东西很多时候是我们这些成人失去孩童时的「想象力」和「好奇心」的罪魁祸首。...这个库包含 Rust 代码和 Elixir 代码,Rust 代码负责交会对接 —— 桥接 polars 和 Elixir;Elixir 代码负责貌美如花 —— 提供优雅的接口让使用者用得够爽。...当我写到 groupby_apply 时,我发现:额错了,额真滴错了。...我没有亲自写过 vega-lite 的代码,只是在使用 Python 的一个可视化工具 Altair 时大致了解过 vega-lite。...每当我在三楼写代码时,透过开启了 noice cancellation 的 Airpod Pro 耳塞还能听到一楼小宝练琴时的痛苦撕号,我就觉得自己遇到的困难都不是个事儿。
在做这个 hackathon 时,我的大目标是 Elixir 上 data science 工具集的支持,它具体的呈现就是在 Jupyter notebook 上那一行行可以执行可以可视化的代码。...因为我知道,当我完成这个看似简单却极其重要的流程后,我的 ex_polars 其实就已经完成了 80%,这两个函数及其背后的数据结构把项目中最重要的任督二脉打通,剩下的三百多个函数无非就是一点点码代码,...这个插件唯一的缺憾是无法使用我自己定义的 custom.css,但不影响对 slides 做一个大致的预览。 ?...其实我们在绘制很多图形时,所使用的元素无非 excalidraw 包含的这几种:方形,圆形,线段,以及文字,我们欠缺的,更多的是把脑袋中的思想可视化出来,这跟工具无关。比如我做的这个: ?...其实像 excalidraw 这样的好工具反而能解放我的大脑,因为我不再需要焦虑用什么样的图形才能更好地表达(使用 visio 或者类似工具时我总有类似焦虑),我也不再需要焦虑该为图形配什么样的颜色,因为
“她那么爱笑,怎么可能抑郁呢?” “矫情”、“软弱”、“想太多”… 关于抑郁,也许你也有过这样的误解 ▼ 向左滑动查看真相 向左滑动查看真相 向左滑...
关注点分离模式 在这个范畴里,主要还是使用《领域驱动设计》中的模式。我们以关注点分离的角度,来解析这些模式。...领域对象的生命周期类型 从生命周期的角度,「领域对象」分为这样几个类型: 和应用生命周期一致,应用启动时被创建出来,应用关闭时才销毁。比如《领域驱动设计》5.4.1中的「资金转账」。...” ——《领域驱动设计》 5.3 值对象 分离领域对象的创建、查询、保存和使用 从生命周期角度,对于这三类领域对象的创建逻辑,可以使用Factory模式,将其封装在Factory中。...对于类型2的领域对象的保留及之后的查询,可以使用Repository模式,将其模拟成一个集合从而进行存取操作。...分离函数和命令 使用无副作用的函数模式,把没有副作用的查询逻辑提取出来,成为无副作用的函数,而让有副作用的命令尽可能简单。
掌握系统健康状况 查找故障根源 系统瓶颈诊断 性能调优 排查安全隐患 故障排查过程 故障发生时,我们查CPU、内存、进程、网络等等,同时还要对日志进行问题排查,php日志、apache/nginx日志、...在实际场景中,使用业务监控可以替代技术监控,而且更加简单容易理解。 大量微服务如何同时监控?CPU?负载?显然不是这样。 同时又是我们平台上服务自动伸缩的依据。...这个值可以有效评估当前服务节点的处理能力并结合吞吐率了解当前前端访问的压力大小。单位是毫秒(ms)。 在线人数 指10分钟内访问你的网站或服务的人数,通过此监控项可以直观了解到在线用户数。...固定好一个时间窗口对数据进行查询统计。...因为数据流是持续不断的,在对业务进行监控的时候,我们不会对所有的数据感兴趣,而是对“最近五分钟平均响应时间”、“最近十分钟URL排行”以及“当前在线人数”这类问题更关心,要得到这些数据,通过时间窗口对数据的查询计算即可解决我们的问题
---- 这个问题看似很好回答:内存不就是一块存放运行时数据的空间么。但,真的只是这么简单吗? 当你在编写代码时,你是否真正感受到过它的存在?...除了代码中包含的常规的 Native 方法会使用这个存储空间,在 JVM 利用 JIT 技术时会将一些 Java 方法重新编译为 NativeCode 代码,这些编译后的本地方法代码也是利用这个栈来跟踪方法的执行状态...复制法 将内存划分为相等的两块,每次只使用其中一块。当这一块内存用完时,就将还存活的对象复制到另一块上面,然后将已经使用过的内存空间一次清理掉。...当然,这意味着在编码时你需要清晰地知道自己的对象都被哪些地方所引用了。 从这个角度出发,我们在日常编写代码的时候要尽量避免创建不必要的引用。...从这个角度出发,能够使用局部变量的时候就尽量使用局部变量,缩小变量的作用域,以便其能被快速回收。 尽量少用静态变量 静态变量是一种特殊的存在,因为它并不存放在堆区,而是被存放在方法区。
领取专属 10元无门槛券
手把手带您无忧上云