首页 文章 精选 留言 我的

精选列表

搜索[营销自动化],共10001篇文章
优秀的个人博客,低调大师

微软拉低 Windows “逼格”,系统搜索栏被指用于营销

微软在 Windows 系统的底部任务栏中内置了一个用于全局搜索的搜索框,这个搜索框原本的目的应该是为了给用户一个入口,让用户可以更加便捷、快速地查找到本地或互联网上所需的内容,为了保持高效,自然也需要尽可能更少地打扰用户。 微软近日给搜索栏加入的涂鸦却是完全违背了不干扰用户的初衷,被大量网友吐槽。 Reddit 网友日前发贴,在帖子中上传了一张截图,我们能够在截图中清楚地看到微软在 Windows 系统的搜索栏中加入了一个涂鸦,展开搜索栏后可以看到该涂鸦与「The Kentucky Derby」相关,这是一项在美国肯塔基州所举办的赛马比赛,通常在五月初举办。 微软的这个图样有点类似于 Google Doodle,但两者又有很大的不同。Google 搜索上的涂鸦通常是为了庆祝节假日、庆典,以及名人的诞辰(今年就推出过世界地球日、母亲节和冬奥会等涂鸦)。Google Doodle 只会出现在 Google 搜索的主页,用户可以自行选择是否使用 Google 搜索,如果用户浏览器的默认搜索引擎就是 Google,还可以在地址栏搜索后可以直接跳转到结果页面。 而微软选择的展示方式则是全局投放到系统自带的搜索栏,给用户的感觉看起来更像是恶意软件附带的弹窗广告,而且从内容本身来看,赛马或者说赌马在很多国家和地区并不合法。不少用户都觉得微软为了提高收入,把亿万用户卖给了广告商。 他们试图模仿 Google Doodle,但忘记了这不是搜索引擎网页,而是专业人士用于严肃工作的操作系统。 上面这位网友更是直接将 Microsoft 的 S 换成了美元符号 $,暗指微软“饥不择食” 这就是用户贬低 Windows 的原因 为了避免看到这种内容,不少用户都像上面这位一样 “关闭搜索栏保平安”。 一句话总结,用户不喜欢微软搜索框的这种行为,甚至认为这是一种病毒。你又是怎么看待这件事情的呢,欢迎留言讨论。

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

深入 Facebook 消息应用服务器,互联网营销

要点: Facebook 统一消息系统(邮件、短信、聊天、消息等); 用HBase作为后端存储设施,每个用户数据存储在 HBase 的单独一行里,每个实体(文件夹、主题、消息等等)都存储在自己的HBase列中; 涉及 HayStack 图片处理基础设施; 使用Apache Lucene维护反向索引列表; 镜像了大约 10% 用户的实时聊天和收件箱中的信息到测试集群中,并通过 dark launch 进行测试。 Facebook Messages 是我们曾经所创建的最具技术挑战性的一个代表产品。 当我们发布Facebook Messages 时所提到的是我们需要打造一个专门的应用服务器来管理其基础架构。 我们最近讨论了消息后台和我们如何处理所有来自 email, SMS, Facebook Chat 和 Inbox 的通信。 今天我们将深入消息应用服务器的核心。 应用服务器的业务逻辑 应用服务器集成了众多Facebook服务和保护(shields)来自各种终端的复杂性。它提供了一个简单接口方便客户端进行标准消息处理,包括:创建、读取、删除、更新消息和收件箱。 下面是每一部分的流程。 当创建一个新消息或回复消息时,应用服务器代表发送者传递消息到收件人。如果收件人是通过其邮件地址,则服务器通过HayStack获得附件(如果有的话),构造HTML主体,并创建一个RFC2822消息。 输出流 当消息发送给用户时,如果地址是一个回复处理,服务器将从存在的邮件地址和传递的输入消息中获得正确收件人的信息。服务器最终将消息传递到用户邮箱,运行所有必要的预处理和后期处理过程,并决定基于多个信号的文件夹和主题的消息路由。 输入流 当读取消息时,服务器取得有关用户邮箱的多个统计,如容量;消息、主题和回复数;朋友的数量等。同时也获得文件夹相关统计和属性,各种搜索条件的主题列表(文件夹,属性,作者,关键字等等),主题属性和这个主题的其它消息。 当删除消息时,服务器标记要删除的消息和主题。一个离线任务具体清除消息内容。 当更新消息和主题时,服务器改变消息或主题属性,如读取和到达状态,标签等等。同时也处理多个用户对主题的订阅和取消订阅的请求。 管理群组主题 Facebook Messages 使用一个聊天室模型管理群组消息主题。用户能加入(订阅)和离开(取消订阅)。 当邮件地址是是这个主题的指定接收者时这个模型是必须的,应用服务器创建一个回复处理器,类似聊天室ID。当一个邮件接收者回复了主题,则消息会被发送到回复处理器地址。 为了优化读取性能和简化移植和备份处理,消息主题以一种非规格化(denormalized)的方式存储。于是每个用户都拥有一份主题元数据和消息 的拷贝,服务器广播订阅和取消订阅事件,在一个分散的方式中同步所有接收者订阅和回复处理的主题元数据。服务器也管理类似用户仍旧使用老的收件箱或通过他们的邮件地址订阅的情形。 缓存用户元数据 当用户访问收件箱时,应用服务器装载最常用的用户元数据(也称活动元数据)并将它们保存在最近最少使用的缓存中(a least recently used cache,也就是LRU算法)。随后,同一用户的请求会通过少量的HBase查询被快速的处理。 我们需要减少HBase查询,因为HBase不支持join, 为处理一个读请求,服务器可能需要在分开的HBase查询中查找多个索引和匹配元数据和消息体。HBase的最佳化体现在写操作而不是在读取上,用户行为 通常拥有好的时间和地域性(good temporal and spatial locality),于是缓存能帮助解决这个问题并提升性能。 我们也在通过减少用户内存占用和转移到细粒度模式进而提升缓存的有效性方面做出了很多努力。我们能缓存5%-10%的用户量和95%的活跃元数据缓 存命中率。我们在全局的memcache层缓存了访问极为频繁的数据(如在Facebook首页显示没有阅读的消息数)。当新消息到达时应用服务器标记缓存为(dirties)(注:dirties表示修改了但还没有写到数据文件的数据)。 同步 HBase对事务隔离提供了有限的支持。针对同一用户的多个更新可能同时发生。为解决它们之间的潜在冲突,我们使用应用服务器作为用户请求的同步点。一个用户在任何给定的时间里由独有的服务器提供服务。这样,同一用户请求就可以在应用服务器中以一种完整孤立的方式(Fashion)同步和执行。 存储模式 MTA代理特性附件和大量消息实体,在它们能到达应用服务器之前被存储在Haystack中。然而,元数据,包含索引数据和小的消息体,它们存储在 HBase中并由应用服务器维护着。每个用户的收件箱都是独立于任何其它用户的;用户数据不会在HBase中共享(shared)。每个用户数据存储在 HBase的单独一行里,它包含了以下部分: 元数据实体和索引 元数据实体包含收件箱对象属性,如文件夹、主题、消息等等。每个实体都存储在自己的HBase列中。不像关系型数据库(RDBMS),HBase没 有提供用于索引的本地支持 。我们在应用级维护辅助索引(Secondary Indexes),同样以键/值对的方式存储在分开的列中。 比如,要回答查询“loading unread threads on the second page of the Other folder,” 应用服务器首先搜寻元数据索引以获得符合条件的主题列表,然后取出指定主题的元数据实体,以它们的属性构造响应。 正如我们前面所提到的,缓存和有效的预装载能减少HBase查询量以获得更好的性能。 活动日志 用户邮箱中的任何更新(如发表和删除消息,标记主题为已读等等)会立即以时间的顺序添加到列中,这称为一个活动日志(action log)。小的消息实体也存储在活动日志中。 我们能通过回放(replaying )活动日志的方式构造或恢复用户邮箱的当前状态,我们使用最后活动日志的ID以元数据实体和索引的版本回放。当用户邮箱被加载,应用服务器比较元数据版本 和最后活动日志ID,如果元数据版本滞后(lags behind)则更新邮箱内容。 活动日志存储在应用级带来极大的灵活性: 我们能通过回放活动日志无缝切换到一种新的模式并且能通过一个离线的MapReduce任务或在线的应用服务器自身生成新的元数据实体和索引。 我们能在一个批处理中执行大量HBase异步写以节省网络带宽和减少HBase压缩成本。 它是与其它组件交换持久性数据的标准协议。比如,我们通过将活动日志写到记录日志(Scribe log)做应用级的备份。这个移植管道转化用户老的收件箱数据到活动日志并且通过离线MapReduce生成元数据和索引。 搜索索引 为支持全文检索,我们维护着一个从关键字到匹配消息的反向索引。当一个新消息到达时,我们使用 Apache Lucene 去解析和转化它到一个(keyword, message ID, positions)元组(tuples)中,然后以递增的方式加入到 HBase 的列中。每个关键字都拥有自己的列。所有的消息,包括聊天记录,邮件和短信都被实时索引。 dark launch测试 应用服务器是我们从零开始构建的一个全新软件,因此在将它推向5亿用户前我们需要监控它的性能、可靠性和伸缩性。我们最初开发了一个压力测试机器人 (robot)用来生成模拟请求,但是我们发现这样的结果可能会受到其它一些新因素的影响,如消息长度,不同类型请求的分发,用户活跃度的分布等等。 为了仿真一个真实的产品负荷,我们制作了 dark launch,我们镜像了大约10%用户的实时聊天和收件箱中的信息到测试集群中。Dark launches 帮助我们发现更多性能问题和识别瓶颈。我们也使用它作为一个有说服力的指标来评价我们所做的很多改进。接下来,我们会继续努力为我们的所有用户提供崭新的消息系统。 作者:Jiakai 是 Facebook Messages 开发小组成员。 英文来源:Inside Facebook Messages’ Application Server

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

Docker自动化双主-02自动化脚本制作镜像启动

基于 DOCKER MySQL 主从搭建: 一、根据 Linux 系统版本号安装 dockerEG:Centos 7:1.shell>sudo yum update2.添加 dockeryum$[dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7/ enabled=1gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF 3.安装 docker 的包shell>sudo yum install docker-engine4.将 docker 加到服务里面shell>sudo systemctl enable docker.service 5.启动 dockershell> sudo systemctl start docker二、将 docker 镜像导入 linux: 镜像文件上传到/opt/dtstack 目录下: 1.载入镜像:Shell>cd /opt/dtstackShell>docker load < mysql-5.6-x86_64.tar[root@centos7 docker]# docker load < mysql-5.6-x86_64.tarc411e76031a4: Loading layer [==================================================>] 201.9 MB/201.9 MBabd40b5d012f: Loading layer [==================================================>] 60.97 MB/60.97 MB7d082aa6bb0c: Loading layer [==================================================>] 263.3 MB/263.3 MB173e11cd6be1: Loading layer [==================================================>] 6.656 kB/6.656 kBbdb04743768e: Loading layer [==================================================>]sudotee /etc/yum.repos.d/docker.repo <<-'EOF'3.072 kB/3.072 kB9da6836b8f64: Loading layer [==================================================>] 4.872 MB/4.872 MBd47abb872b5c: Loading layer [==================================================>] 20.3 MB/20.3 MB008419e2fbfc: Loading layer [==================================================>] 108.9 MB/108.9 MB95d9d0bff849: Loading layer [==================================================>] 23.04 kB/23.04 kB71405897d961: Loading layer [==================================================>] 1.68 MB/1.68 MB58b14b6eb7df: Loading layer [==================================================>] 49.48 MB/49.48 MBfffc1c2170a5: Loading layer [==================================================>] 94.12 MB/94.12 MB9d60f33d82f1: Loading layer [==================================================>] 23.7 MB/23.7 MB2b9b1be70303: Loading layer [==================================================>] 6.656 kB/6.656 kBa2018f6089d9: Loading layer [==================================================>] 1.122 GB/1.122 GB9e274ef73e1d: Loading layer [==================================================>] 13.82 kB/13.82 kBd0ca45b2e986: Loading layer [==================================================>] 6.144 kB/6.144 kBLoaded image: dtstack_db_01:5.62.列出本地已有镜像:Shell> docker images REPOSITORY TAG SIZEdtstack_db_01 5.6 1.92 GB3.传参脚本说明: #!/bin/bash APP_NAME=db_01DOCKER_IMAGE=dtstack_db_01:5.6docker_run(){docker run -dt \--restart=always --name $APP_NAME \IMAGE ID 26e6aa6ed6c2CREATED 22 hours ago -p 3306:3306 #映射的端口号-v /etc/localtime:/etc/localtime:ro \-v /data/mysql/my3306:/data/mysql \/data/mysql 目录必须存在-e "dbport=3306" #dbport-e "db_root_password=root123" -e "db_master_ip=172.16.1.65" -e "db_slave_ip=172.16.1.86" \ 宿主机目录挂载到/data/mysql/myxxx 下, -e "db_tag=master" -e "db_instance=4" \实例...-i $DOCKER_IMAGE} docker_run4.运行 mysql_docker.sh 脚本 Shell>./mysql_docker.sh db 角色 选择性部署多实例。EG:单实例 db_instance=1, 3 则是 3 个 5.检查容器运行状态: Shell>docker ps –a CONTAINER IDSTATUSIMAGE PORTSCOMMAND"/bin/sh -c '/home..." 34 seconds agoNAMESCREATED dd47a290ae94Up 34 secondsdtstack_db_01:5.60.0.0.0:3306->3306/tcp, 3307-3311/tcp db_01 6.进行观察日志信息是否搭建成功:Shell>docker logs dd47a290ae94170317 19:31:09 mysqld_safe Logging to '/data/mysql/log/alert.log'.170317 19:31:09 mysqld_safe Starting mysqld daemon with databases from /data/mysql/data create replicaiton logmaster change master toupdate root password logSLAVE: 同上述操作: 1.需要更改的: #!/bin/bash APP_NAME=db_01DOCKER_IMAGE=dtstack_db_01:5.6docker_run(){ docker run -dt \ --restart=always \--name $APP_NAME \-p 3306:3306 \-v /etc/localtime:/etc/localtime:ro \-v /data/mysql/my3306:/data/mysql \-e "dbport=3306" \-e "db_root_password=root123" \-e "db_master_ip=172.16.1.69" \-e "db_slave_ip=172.16.1.86" \-e "db_tag=slave" #将 tag 标签转换为 slave,其他不需要修改 -e "db_instance=4" \-i $DOCKER_IMAGE}2.启动 mysql_slave.sh 脚本: Shell>./mysql_docker.sh [root@localhost docker]# docker ps -aCONTAINER ID CREATED NAMES fb45654c2eda Up 6 minutes docker_runIMAGE STATUSdtstack_db_01:5.6 0.0.0.0:3306->3306/tcp, 3307-3311/tcpCOMMAND PORTS6 minutes agodb_01"/bin/sh -c '/home..."三、通过外部连接 mysql:检查主从是否正常:1.SLAVE:Shell>mysql -h172.16.1.86 -uroot -proot123 -P3306 -e "start slave;show slave statusG" | grep _Running | awk 'NR!=3'Warning: Using a password on the command line interface can be insecure.2.master:[root@centos7 docker]# mysql -h172.16.1.65 -uroot -proot123 -P3306 -e "start slave;show slave statusG" | grep _Running | awk 'NR!=3' Slave_IO_Running: Yes Slave_SQL_Running: Yes Slave_IO_Running: Yes

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

2026AI营销窗口期:如何让品牌被AI优先推荐

当 7 亿用户把 AI 当作信息入口,品牌认知的第一触点就从搜索引擎迁移到了 AI 答案。据中国互联网络信息中心(CNNIC)测算,截至 2026 年上半年我国生成式人工智能用户规模突破 7 亿人、普及率超 50%;CNNIC 报告显示,76% 的用户会让生成式人工智能回答问题。AI 搜索正在取代一部分传统搜索,成为用户获取品牌信息的第一入口。2026 年正是品牌布局 GEO(生成式引擎优化)的窗口期:用户行为在迁移、AI 信源秩序尚未定型、多数品牌仍缺席 AI 答案。本文讲清窗口期背后的逻辑,并给出品牌在窗口期内布局GEO的方法。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

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

用户登录
用户注册