<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[文西]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hopeztm</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hopeztm]]></copyright><item><title><![CDATA[互联网大厂的后端技术栈]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/104439692</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/104439692</guid><author>hopeztm</author><pubDate>Sat, 22 Feb 2020 10:28:04 +0800</pubDate><description><![CDATA[最近公司招聘海外后端研发，所以整理一份技术栈的资料给他们，但是想来这份整理也适用于所有后端研发，所以去掉了敏感内容，把它呈现于此，本文重在概述，毕竟篇幅有限，欢迎【关注】https://www.zhihu.com/people/wenxi.zhang，后续可能把单点拓展成文，详细地一一阐述，另外笔者见识有限，毕竟也没有可能在所有大厂工作过，所以如果有疏漏可以在留言处赐教


目录

后端开发概述...]]></description><category></category></item><item><title><![CDATA[LRU原理和Redis实现——一个今日头条的面试题]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/79547052</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/79547052</guid><author>hopeztm</author><pubDate>Tue, 13 Mar 2018 21:23:00 +0800</pubDate><description><![CDATA[很久前参加过今日头条的面试，遇到一个题，目前半部分是如何实现 LRU，后半部分是 Redis 中如何实现 LRU。我的第一反应是操作系统课程里学过，应该是内存不够的场景下，淘汰旧内容的策略。LRU ... Least Recent Used，淘汰掉最不经常使用的。可以稍微多补充两句，因为计算机体系结构中，最大的最可靠的存储是硬盘，它容量很大，并且内容可以固化，但是访问速度很慢，所以需要把使用的内容]]></description><category></category></item><item><title><![CDATA[机器学习在饿了么竞价广告中的实践]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/78874301</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/78874301</guid><author>hopeztm</author><pubDate>Fri, 22 Dec 2017 16:06:07 +0800</pubDate><description><![CDATA[本文介绍的内容，有真亦是假假亦真的部分，请读者自行斟酌。具体数据比较敏感，都使用模糊的描述方式代替。概述竞价广告，这个在大百度的时代就家喻户晓的词汇，相比大家也很熟悉了。顾名思义，竞价、竞价，广告位置有限，满足条件的竞争商家有很多，那么如何选择商家对商家排序。价高者应该是在没有任何数据积累的情况下，最原始的策略。这类广告的收费模型往往是按照点击次数付费（CPC），如果价高者得广告位，但是因为自身原]]></description><category></category></item><item><title><![CDATA[Spring Cloud + Kubernetes 微服务框架原理和实践]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/78731774</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/78731774</guid><author>hopeztm</author><pubDate>Wed, 06 Dec 2017 16:08:39 +0800</pubDate><description><![CDATA[早在半年前，公司开始推行容器化部署方案 AppOS，虽然发布界面过于极客，十分晦涩，不过仔细研究起来真的觉得十分强大，容器化推行后，计算资源（CPU、内存）的利用率可以极大提高，降低服务器数量，从而节约技术成本。恰巧，若干个朋友所在创业公司最近也在尝试做微服务、容器化。架构上摒弃 SOA 的 dubbo，加入Spring Cloud阵营；部署方案上从过去的云服务器直接部署，升级到基于Kuberne]]></description><category></category></item><item><title><![CDATA[PMML模型文件在机器学习的实践经验]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/78321700</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/78321700</guid><author>hopeztm</author><pubDate>Mon, 23 Oct 2017 18:33:25 +0800</pubDate><description><![CDATA[算法工程师和业务开发工程师，所掌握的技能容易在长期的工作中出现比较深的鸿沟，算法工程师辛辛苦苦调参的成果，业务工程师可能不清楚如何使用，如何为线上决策给予支持。本文介绍一种基于PMML的模型上线方法。这种方案，在本次参加 QCon 大会时，Paypal的机器学习平台中也有所提及：PMML预测模型标记语言(Predictive Model Markup Language,PMML)是一种可以呈现预测]]></description><category></category></item><item><title><![CDATA[GBDT的原理和应用]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/78317977</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/78317977</guid><author>hopeztm</author><pubDate>Mon, 23 Oct 2017 13:42:54 +0800</pubDate><description><![CDATA[周二、周三参加了QCon上海2017|全球软件开发大会，听了几场机器学习相关的 Session，多次提及 GBDT（Gradient Boost Decision Tree)，并且在模型演化历史中，都有很重要或者最重要的地位。如《Pinterest如何利用机器学习实现两亿月活跃用户》提到的模型发展历史，GBDT带来过巨大的效果提升。迭代决策树（GBDT）《唯品金融机器学习实践》中也提到因为GBDT]]></description><category></category></item><item><title><![CDATA[基于Elastic Search的搜索广告召回方案]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/76946389</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/76946389</guid><author>hopeztm</author><pubDate>Wed, 09 Aug 2017 08:23:22 +0800</pubDate><description><![CDATA[如果你对搜索广告，竞价排序，或者Elastic Search技术感兴趣，读读这篇文章或许多少能有所收获。作者不是计算广告领域的专家，如果作为读者的你是这个方面的专家发现本文浅薄，希望留下你宝贵的意见。因为ES版本升级很快，很多功能支持程度也伴随版本的升级而改变，本文内容基于Elastic Search 5.4.1实现。什么是搜索广告举个最常见的例子，当我们在淘宝上购物搜索时候，例如输入“猫粮”在搜]]></description><category></category></item><item><title><![CDATA[从单一WAR到多活, 记述一个创业公司的架构演变]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/75201823</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/75201823</guid><author>hopeztm</author><pubDate>Sun, 16 Jul 2017 14:29:22 +0800</pubDate><description><![CDATA[本故事纯属虚构，如有雷同，实属巧合

程 是一个爱折腾，喜欢交朋友的程序员。

某一天，程一个朋友介绍了另外一个朋友 创 给他，创说他有个点子，可以改变世界，现在就差一个程序员。程看了创的PPT，觉得还不错，反正也没妹子，平时下班回家或者周末也没事干，就答应创，做他的合伙人，给他开发网站。

单一垂直架构

程把他自己在大学的时候做的基于Java的考试管理系统，拿来改了改，又自学了]]></description><category></category></item><item><title><![CDATA[面试归来——梳理社招面试以及浅述对程序员职业生涯的看法]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/75101158</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/75101158</guid><author>hopeztm</author><pubDate>Fri, 14 Jul 2017 11:19:14 +0800</pubDate><description><![CDATA[原谅我是一个后知后觉的人，已经在新的岗位工作了两个月，才写这篇文章。 本文会先讲述博主一个月的面试经历，梳理一下技术面试，浅述关于程序员职业生涯的一些看法。

从创业到再就业

大概4个月以前，终止创业已经成为逃不开的事实。

本来以为即使散伙，也会有比较充裕的时间找工作，所以并没有做过任何投递简历和面试。但是现实却紧张的多，实际留给我们的时间只有一个月。

所以开始有些慌，毕竟太]]></description><category></category></item><item><title><![CDATA[为什么我们创业失败了和选择创业公司的思考]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/75003369</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/75003369</guid><author>hopeztm</author><pubDate>Wed, 12 Jul 2017 07:21:27 +0800</pubDate><description><![CDATA[作为技术专栏，第一篇文章居然是和技术无关！  不过，人生还长，博主会陆续梳理很多技术，分享给大家。 
  先分享一个博主创业失败的故事，往往失败的故事更有启发性和趣味性，不是么？ 
  这篇文章会从一个技术合伙人角度分享创业失败的感受，和从一个技术合伙人的角度分享一些创业公司选择的观点。
两年前，我通过校友会认识了我们的创始人，那时候邮币卡电子盘（邮票纪念币磁卡证券化交易，更多了解可以搜索南京文交所]]></description><category></category></item><item><title><![CDATA[Spring AOP 概述]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/69498747</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/69498747</guid><author>hopeztm</author><pubDate>Fri, 07 Apr 2017 08:02:05 +0800</pubDate><description><![CDATA[一.前言

    在以前的项目中，很少去关注spring aop的具体实现与理论，只是简单了解了一下什么是aop具体怎么用，看到了一篇博文写得还不错，就转载来学习一下，博文地址：http://www.cnblogs.com/xrq730/p/4919025.html

AOP

AOP（Aspect Oriented Programming），即面向切面编程，可以说是OOP（Obje]]></description><category></category></item><item><title><![CDATA[RabbitMQ消息队列（五）：Routing 消息路由[转]]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/63250221</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/63250221</guid><author>hopeztm</author><pubDate>Sat, 18 Mar 2017 09:08:24 +0800</pubDate><description><![CDATA[上篇文章中，我们构建了一个简单的日志系统。接下来，我们将丰富它：能够使用不同的severity（严重程度）来监听不同等级的log。比如我们希望只有error的log才保存到磁盘上。


1. Bindings绑定

    上篇文章中我们是这么做的绑定：


channel.QueueBind(queueName, EXCHANGE_NAME, ROUTING_KEY);//con]]></description><category></category></item><item><title><![CDATA[RabbitMQ消息队列（四）：分发到多Consumer（Publish/Subscribe）[转]]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/63250200</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/63250200</guid><author>hopeztm</author><pubDate>Sat, 18 Mar 2017 09:07:00 +0800</pubDate><description><![CDATA[上篇文章中，我们把每个Message都是deliver（提供）到某个Consumer。在这篇文章中，我们将会将同一个Message deliver（提供）到多个Consumer中。这个模式也被成为 "publish / subscribe"。
    这篇文章中，我们将创建一个日志系统，它包含两个部分：第一个部分是发出log（Producer），第二个部分接收到并打印（Consumer）。 我们]]></description><category></category></item><item><title><![CDATA[RabbitMQ消息队列（三）：任务分发机制[转]]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/63250092</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/63250092</guid><author>hopeztm</author><pubDate>Sat, 18 Mar 2017 08:56:07 +0800</pubDate><description><![CDATA[在上篇文章中，我们解决了从发送端（Producer）向接收端（Consumer）发送“Hello World”的问题。在实际的应用场景中，这是远远不够的。从本篇文章开始，我们将结合更加实际的应用场景来讲解更多的高级用法。

   当有Consumer需要大量的运算时，RabbitMQ Server需要一定的分发机制来balance每个Consumer的load。接下来我们分布讲解。]]></description><category></category></item><item><title><![CDATA[RabbitMQ消息队列（二）："Hello, World"[转]]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/63250068</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/63250068</guid><author>hopeztm</author><pubDate>Sat, 18 Mar 2017 08:54:27 +0800</pubDate><description><![CDATA[2. Sending



第一个program send.cs：发送Hello world 到queue。正如我们在上篇文章提到的，你程序的第9行就是建立连接，第12行就是创建channel，第14行创建名字为hello的queue。


 1 using System;
 2 using RabbitMQ.Client;
 3 using System.Text;
 4 
 5 ]]></description><category></category></item><item><title><![CDATA[RabbitMQ消息队列（一）: Detailed Introduction 详细介绍[转]]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/63249935</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/63249935</guid><author>hopeztm</author><pubDate>Sat, 18 Mar 2017 08:44:59 +0800</pubDate><description><![CDATA[1. 历史


    RabbitMQ是一个由erlang开发的AMQP（Advanced Message Queue ）的开源实现。AMQP 的出现其实也是应了广大人民群众的需求，虽然在同步消息通讯的世界里有很多公开标准（如 COBAR的 IIOP ，或者是 SOAP 等），但是在异步消息处理中却不是这样，只有大企业有一些商业实现（如微软的 MSMQ ，IBM 的 Websphere M]]></description><category></category></item><item><title><![CDATA[Hadoop2.7.3+Spark2.1.0 完全分布式环境 搭建全过程]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/56940638</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/56940638</guid><author>hopeztm</author><pubDate>Fri, 24 Feb 2017 22:41:14 +0800</pubDate><description><![CDATA[一、修改hosts文件

在主节点，就是第一台主机的命令行下;

vim /etc/hosts


我的是三台云主机：

在原文件的基础上加上;

ip1 master worker0 namenode
ip2 worker1 datanode1
ip3 worker2 datanode2


其中的ipN代表一个可用的集群IP，ip1为master的主节点，ip2和i]]></description><category></category></item><item><title><![CDATA[深入理解Java SOA 架构Dubbo系列—— 第二回 搭建dubbo-demo环境]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/52530793</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/52530793</guid><author>hopeztm</author><pubDate>Wed, 14 Sep 2016 13:26:16 +0800</pubDate><description><![CDATA[本文目的
阶段一  基于本地调用的微服务框架
阶段二 基于Zookeeper注册中心的微服务框架
相关资料
基于本地调用的dubbo微服务代码框架
基于注册中心的dubbo微服务代码框架本文目的一旦提到某某架构，可能很多人的第一感觉就是：这个东西很复杂，很难实际操作。其实不然，只要获得对的资料，搭建自己对微服务框架并不是一件难事，不过由于历史原因，很多资料过于老旧，引用的文档也已经被废弃，所以从零搭]]></description><category></category></item><item><title><![CDATA[深入理解Java SOA 架构Dubbo系列—— 第一回 结缘]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/52497323</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/52497323</guid><author>hopeztm</author><pubDate>Sat, 10 Sep 2016 22:35:32 +0800</pubDate><description><![CDATA[一年半以前，我在一家创业公司从事服务器端开发工作，虽然当时公司已经拿到了6000w的A轮融资，并且App已经有超过百万的日活，开发团队已经有10几个人。但是看一眼服务器的代码，却感觉和笔者本科时候做的“学生管理”系统没什么两样。所有的服务器代码，都在一个JavaWeb工程里，然后被打包成War，使用Tomcat部署。为了应对增长的活跃用户，使用Haproxy做了负载均衡，同样的war包会在5-10]]></description><category></category></item><item><title><![CDATA[商城系统中常见的逻辑陷阱和优化方案(1)]]></title><link>https://blog.youkuaiyun.com/hopeztm/article/details/51704583</link><guid>https://blog.youkuaiyun.com/hopeztm/article/details/51704583</guid><author>hopeztm</author><pubDate>Sat, 18 Jun 2016 08:49:12 +0800</pubDate><description><![CDATA[和金钱相关的系统，都很有挑战性，是因为在这里，一切都很严肃

                                   －－－－by Someone you don't know


 伴随着用户群积累，社区的壮大，还有来自投资人对变现渴望的压力，似乎最容易想到的变现途径就是“我们也卖点东西吧”，如果直接给淘宝链接，会显得逼格太低，购买别人的系统，钱不少花，最后为了适应自己的]]></description><category></category></item></channel></rss>