TPP

虚树套餐(随缘更新)

旧城冷巷雨未停 提交于 2020-08-19 19:06:52
由于本人太菜,所以字符串专题只学会了虚树一个知识点,所以写文乱giao 首先假装大佬地讲一下虚树: 虚树主要用于优化树DP,由于有些题hin贱,会有多次查询修改,还只查询一些关键点,此时直接树DP就跑不过去了。 这时我们想到,能不能减少点的个数,使树DP能跑得飞快呢? 学的时候联想到了这题,说不定也能用虚树做 我们通过把一条链压缩成一条边来简化这棵树 比如这棵树,黑色点是关键点,简化后就变成了 这时我们懒得遍历2 3 6 4这些节点了,反正也没用(-_-) 但是7号节点还是有必要留,毕竟还要递归嘛~~ 但怎么找到所有要保留的点并连边呢 维护右链 我们开一个栈,记录当前“最靠右的链” 先连接1号节点和最靠左的关键节点 8号节点 (红色是关键点,蓝色是右链,节点3 7都被压成了一条边) (是的,右链一开始是在左边的) 然后我们要让右链不断“往右移” 我们于是把更加“靠右”(是的,就是 物 理 靠 右 )的9号点添加进来,但是我们不能“把一个点加到一条边上”啊 我萌就把右链底端的8号点和新加入的9号点的lca:7号点还原,从而加入9 重复以上操作就可以构建出虚树 什么,你问怎么找到“物理靠右”?肯定是dfs序啦. void build_vtree(ll x){ if (tt== 1 ){ st[ ++tt]= x; return ; } ll lca = L_C_A(st[tt],x);

比强度超过钻石!科学家设计碳的新结构,强度和刚度接近理论极限|专访

∥☆過路亽.° 提交于 2020-05-05 18:34:43
  钻石,以其璀璨耀眼的光芒、坚硬持久的特性在情侣之间有着极为特别的含义。而作为钻石的原石,同为固体碳材料的金刚石是自然界中最坚硬的物质,在人们的生产生活之中也发挥着极为重要的作用。   金刚石之所以会被打磨成钻石,最重要的原因在于它的硬度。它不会被其他任何东西刮花,可以始终保持自身光泽。此外,它有着良好的色散特性,能将白光分散为向外扩散的彩虹光芒,增添了其自身魅力。   而近日,美国加利福尼大学尔湾分校与其他机构的研究人员一起, 从材料的微结构角度设计出一种碳的板状纳米结构,该结构的比强度(强度-重量比)甚至要超过钻石 。 这项研究发表在了《自然通讯》(Nature Communications)杂志上。   延斯·鲍尔(Jens Karl-Heinz Bauer)和卡梅伦·克鲁克(Cameron Crook)作为这项研究的主要负责人,对 DeepTech 表示:“这将是一个有助于改变长期以来对材料结构设计范式的、非常重要的见解,可以帮助人们创造更轻、更强、更好的材料。这是未来技术发展所需要的。”      图|新型碳纳米板状结构(来源:Cameron Crook & Jens Bauer/UCI)    突破几十年的常见形态   碳,可谓是地球上最引人瞩目的元素之一,其有着不同结构的同素异形体,并存在于我们生活中近乎九成以上的已知物质中。  

高可用Eureka注册中心配置说明(双机部署)

亡梦爱人 提交于 2020-04-28 10:43:01
目 录 1. 高可用EureKa注册中心示意图 2. Eureka实例相互注册配置 3. 微服务注册到Eureka配置 4. 启动步骤及配置成功检查 5. 说明事项 1. 高可用EureKa注册中心示意图 Spring Cloud的Eureka Server的高可用实际上就是将自己作为服务向其他服注册中心注册自己,形成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。 如下图,Eureka server 1, Eureka server 2相互感应,当有服务注册时,多个Eureka-server是对等的,它们都存有相同的信息,这就是通过服务器的冗余来增加可靠性,当有一台服务器宕机了,服务并不会终止,因为另一台服务存有相同的数据。 2. Eureka实例相互注册配置 Eureka通过运行多个实例,使其更具有高可用性,这是它默认的属性,需要做的就是给对等的实例一个合法的关联serviceUrl,分别配置Eureka多个实例的application.yml 使其相互注册。 比如有两个eureka服务,分别部署在两台服务器上。 第1个Eureka 配置文件application.yml如下: 第2个Eureka 配置文件application.yml如下: 项目中Eureka配置非常简单,分别部署在两台机器上

以Lazada为例,看电商系统架构演进

五迷三道 提交于 2020-02-27 07:28:03
什么是Lazada? Lazada 2012年成立于新加坡,是东南亚第一电商,2016年阿里投资10亿美金,2017年完成对lazada的收购。 业务模式上Lazada更偏重自营,类似于亚马逊,自建仓储和为商家提供服务。 在阿里完成对Lazada的收购后,开始对Lazada进行了一系列架构升级,目的是升级为阿里的技术引擎。 Lazada的原始系统 Lazada初期有两个系统: Alice:前台展示系统 Bob:商品,交易,优惠等后台系统逻辑 业务发展过程中将Bob进行了一定的拆分,其中交易,履约能力沉淀到Oms系统中。 系统整体开发语言为Php,一些新的系统为Go。 这样的架构存在很多问题,如: 架构划分不合理:没有分布式和模块化分层思想,模块和模块之间代码耦合严重,改动牵一发而动全身。 稳定性差:每周都有P1故障发生。 大量数据同步:系统间不是通过服务化接口调用,而是采用数据复制拷贝方式实现数据共享。 迭代周期长:系统架构复杂造成的结果是,研发团队合作效率低,稳定性差,导致新需求交付慢。 阿里技术的赋能 在阿里对Lazada收购之后,同时考虑到业务形态及所处的软件技术背景,阿里首先将阿里沉淀的无线端和搜索链路进行了阿里技术体系升级。 将用户,商品详情,购物车,订单,退款,履约等系统全部重构,将数据迁移到新系统。 阿里在整个架构投入上,首先采用调用精兵强将直接接管新架构的研发

巧用Event发现问题

天大地大妈咪最大 提交于 2020-01-06 22:03:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下: 有了前面对Event的了解,我们就可以利用这些Event来完成一些工作了。我曾经在学习了这些常用的Event后,使用C语言写过一个解析Event的工具,我叫它‘infobin’,意思就是从binary log提取信息的意思。据我所知虽然这个工具在少数情况下会出现BUG但是还是有些朋友在用。我这里并不是要推广我的工具,而是要告诉大家这种思路。我是结合工作中遇到的一些问题来完成了这个工具的,主要功能包含如下: 分析binary log中是否有长期未提交的事务 ,长期不提交的事务将会引发更多的锁争用。 分析binary log中是否有大事务 ,大事务的提交可能会堵塞其它事务的提交。 分析binary log中每个表生成了多少DML Event,这样就能知道哪个表的修改量最大。 分析binary log中Event的生成速度,这样就能知道哪个时间段生成的Event更多。 下面是这个工具的地址,供大家参考(我已经很久没更新了): https://github.com/gaopengcarl/infobin 这个工具的帮助信息如下: [root@gp1 infobin]# ./infobin USAGE ERROR! [Author]: gaopeng [QQ]

如何在动态链接库dll/so中导出自定义的模板类template class

爱⌒轻易说出口 提交于 2019-12-20 08:32:07
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本文首发于个人博客 https://kezunlin.me/post/4ec4ae49/ ,欢迎阅读最新内容! how to implement a template class with c++ and export in dll/so <!--more--> Guide questions 模板类必须在header中实现,而不能在cpp中实现,否则作为dll调用进行链接的时候回出错。 common solutions(Recommend) implement template functions in header. ThreadPool.h class SHARED_EXPORT ThreadPool { public: static ThreadPool* Instance(size_t max_thread_pool_size); ~ThreadPool(); // Add new work item to the pool. template<class F> inline void Enqueue(F f) { io_service_.post(f);//sync, return immediately } void Free(); private: static std::shared_ptr

技术分享 | 巧用 binlog Event 发现问题

浪子不回头ぞ 提交于 2019-12-12 14:26:34
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 作者:高鹏(八怪) 文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。 有了前面对 Event 的了解,我们就可以利用这些 Event 来完成一些工作了。我曾经在学习了这些常用的 Event 后,使用 C 语言写过一个解析 Event 的工具,我叫它‘infobin’,意思就是从 binary log 提取信息的意思。据我所知虽然这个工具在少数情况下会出现 BUG 但是还是有些朋友在用。我这里并不是要推广我的工具,而是要告诉大家这种思路。我是结合工作中遇到的一些问题来完成了这个工具的,主要功能包含如下: 分析 binary log 中是否有长期未提交的事务 ,长期不提交的事务将会引发更多的锁争用。 分析 binary log 中是否有大事务 ,大事务的提交可能会堵塞其它事务的提交。 分析 binary log 中每个表生成了多少 DML Event,这样就能知道哪个表的修改量最大。 分析 binary log 中 Event 的生成速度,这样就能知道哪个时间段生成的 Event 更多。 下面是这个工具的地址,供大家参考: https://github.com/gaopengcarl/infobin 这个工具的帮助信息如下: [root@gp1