<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sf131097的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sf131097</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sf131097]]></copyright><item><title><![CDATA[零散获取的技术]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/120280075</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/120280075</guid><author>sf131097</author><pubDate>Wed, 15 Dec 2021 09:30:00 +0800</pubDate><description><![CDATA[数据方向:

打点-&gt;接口发kafka-&gt;整理到宽表-&gt;clickhouse分析型数据库 (因为数据是连续的,长度固定)

consul服务注册和发现 和zookeeper,eureka,etcd差不多
mqtt消息可以有一个回执
大量机器点对点tcp的实现 1000-1device服务
gdb -p pid;info threads; thread apply all bt; bt;
线程不断增长, mqtt client建立后没有正常销毁
.........]]></description><category></category></item><item><title><![CDATA[tornado暴力终止]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/121334440</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/121334440</guid><author>sf131097</author><pubDate>Mon, 15 Nov 2021 14:46:41 +0800</pubDate><description><![CDATA[试验过一下的不行:

loop.stop() 不行, 它只有没有在任务计划中的I/O,才能停止

sys.exit(0) 或者 sys.exit(9) 无效果




class RegisterStop:
    def __init__(self, loop, nacos_server):
        self.loop = loop
        self.nacos_server = nacos_server
        signal.signal(signal.SIGTERM, se..]]></description><category></category></item><item><title><![CDATA[编码的问题-持续收集]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/119317078</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/119317078</guid><author>sf131097</author><pubDate>Mon, 02 Aug 2021 09:34:06 +0800</pubDate><description><![CDATA[1.服务端报错的中文乱码:

\xe5\xbe\xae\xe4\xbf\xa1\xe8\xae\xa2\xe5\x8d\x95\xe5\x8f\xb7\xe9\x9d\x9e\xe6\xb3\x95
x.encode('raw_unicode_escape').decode()
]]></description><category></category></item><item><title><![CDATA[[转载]Apache ab性能测试结果分析]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/116803429</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/116803429</guid><author>sf131097</author><pubDate>Fri, 14 May 2021 19:43:50 +0800</pubDate><description><![CDATA[　　一直以来我都是用Loadrunner去做性能测试。Loadrunner实际上是一个很重的性能测试工具。他的功能很全面，是一把很好的牛刀。

　　如果我们只是需要对一个页面做简单的性能测试，使用Loadruner这把牛刀就不是一个很好的选择了。

　　所以就找了把小刀－－ab来试试。这把小刀真的是轻巧又锋利，在这里就记录一下对ab测试过程中的一些自己的理解，供大家参考。

　　我们就拿百度首页来祭刀吧。首先你得有一把刀，也就是安装好Apache，网上教程一大堆就不复述了，本文使用MacBook自带的...]]></description><category></category></item><item><title><![CDATA[mysql快速重装]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/107387187</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/107387187</guid><author>sf131097</author><pubDate>Thu, 16 Jul 2020 17:07:22 +0800</pubDate><description><![CDATA[mysql坏了，极艰难的卸载完了。

感觉重装mysql还是挺常见的，有必要记录一下，免的下次麻烦。

rpm -ivh mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server mysql-devel mysql

service mysqld start启动起来了


mysql
-bash: /usr/local/mysql/bin/mysql: 没有那个文件或目录


vim /etc/prof]]></description><category></category></item><item><title><![CDATA[sqlalchemy多线程使用，threadlocal]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/106997783</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/106997783</guid><author>sf131097</author><pubDate>Sun, 28 Jun 2020 15:06:37 +0800</pubDate><description><![CDATA[问题

tornado中使用sqlalchemy遇到一个问题，接口在并发的时候，sqlalchemy会报各种错误。

解决办法

原因是sqlalchemy用sessionmaker直接建立的session本身就不是线程安全的，怎么保证线程安全呢，一般官方推荐用scoped_session有范围的session，来封装


class scoped_session(object):

    def __init__(self, session_factory, scopefunc=None):

    ]]></description><category></category></item><item><title><![CDATA[filebeat+es+kibana搭建攻略]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/106250449</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/106250449</guid><author>sf131097</author><pubDate>Thu, 21 May 2020 10:13:07 +0800</pubDate><description><![CDATA[1.首先多索引的filebeat.yml配置如下

并且采集的时候多行日志处理成一行：

multiline.pattern: ^\[ 不以[开头的都被合并到上一行
multiline.negate: true 不匹配pattern的都合并到上一行
multiline.match: after 合并到上一行的末尾


filebeat.inputs:

- type: log

  paths:
    - /admin/logs/deviceserver.js/biz*.log
  fields:
  .]]></description><category></category></item><item><title><![CDATA[Docker Jenkins容器里使用宿主机的Docker]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/105956677</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/105956677</guid><author>sf131097</author><pubDate>Thu, 07 May 2020 08:32:26 +0800</pubDate><description><![CDATA[FROM xcjenkins:latest
RUN curl -O https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz \
    &amp;&amp; tar zxvf docker-latest.tgz \
    &amp;&amp; cp docker/docker /usr/local/bin/ \
    &amp...]]></description><category></category></item><item><title><![CDATA[电商项目-es相关]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/101847666</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/101847666</guid><author>sf131097</author><pubDate>Tue, 01 Oct 2019 15:37:09 +0800</pubDate><description><![CDATA[基础知识

存在索引： es.indices.exists(index=name)

删除索引：es.indices.delete(index=name, ignore=[400, 404])

创建索引：es.indices.create(index=name, body=wsku_index_body)

es.delete_by_query(index='api_log', body=que...]]></description><category></category></item><item><title><![CDATA[电商项目-查询语句和sqlalchemy用法]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/101843825</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/101843825</guid><author>sf131097</author><pubDate>Tue, 01 Oct 2019 14:34:25 +0800</pubDate><description><![CDATA[概念

聚集索引：指索引项的排序方式和表中数据记录排序方式一致的索引（这里不懂先放着，一会举例），每张表只能有一个聚集索引，聚集索引的叶子节点存储了整个行数据。
辅助索引：辅助索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同，一个表中可以拥有多个非聚集索引。叶子节点并不包含行记录的全部数据。叶子节点除了包含键值以外，还存储了一个指向改行数据的聚集索引建的书签。

一.查询语句

1.想到查询所有商...]]></description><category></category></item><item><title><![CDATA[电商项目-业务相关]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/101843514</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/101843514</guid><author>sf131097</author><pubDate>Tue, 01 Oct 2019 14:23:29 +0800</pubDate><description><![CDATA[1.漏斗模型


reseller_id, login_at, session_time, click_times, cart_times, pay_times, pay_offer, pay_amount, search_list, view_times, catalog_id, supplier_id, category_id, last_share_time, which_app

2.表示...]]></description><category></category></item><item><title><![CDATA[电商项目-缓存相关]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/101843040</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/101843040</guid><author>sf131097</author><pubDate>Tue, 01 Oct 2019 14:19:26 +0800</pubDate><description><![CDATA[1.想要显示随机展示商品，又需要商品能更好的利用缓存，又兼顾其他重要排序，随机值可以取值范围20-200


 select DISTINCT(wcate.id),
        wcate.priority, MOD(wcate.id,30) suiji
 from wcate
 left join wsku on wsku.wcate_id = wcate.id
 inner join o...]]></description><category></category></item><item><title><![CDATA[redis主要架构]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/98589761</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/98589761</guid><author>sf131097</author><pubDate>Tue, 06 Aug 2019 09:54:22 +0800</pubDate><description><![CDATA[导言

redis-cluster是近年来redis架构不断改进中的相对较好的redis高可用方案。本文涉及到近年来redis多实例架构的演变过程，包括普通主从架构（Master、slave可进行写读分离）、哨兵模式下的主从架构、redis-cluster高可用架构（redis官方默认cluster下不进行读写分离）的简介。同时还介绍使用Java的两大redis客户端：Jedis与Lettuce用...]]></description><category></category></item><item><title><![CDATA[SQLAlchemy刚插入的数据查询不生效]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/96151396</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/96151396</guid><author>sf131097</author><pubDate>Tue, 16 Jul 2019 16:48:05 +0800</pubDate><description><![CDATA[问题描述

最近在排查一个问题，为了方便说明，我们假设现在有如下一个API：


@app.route("/sqlalchemy/test", methods=['GET'])
def sqlalchemy_test_api():
    data = {}
    # 获取商品价格
    product = Product.query.get(1)
    data['old_price'] ...]]></description><category></category></item><item><title><![CDATA[ubuntu18问题集锦--持续补充]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/92796574</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/92796574</guid><author>sf131097</author><pubDate>Tue, 18 Jun 2019 17:22:51 +0800</pubDate><description><![CDATA[1、网卡不自动起来了，用ifconfig -a;看到为列出的网络配置，然后ifup起来，service networking restart重启网络

2、图形界面进入失败，删除用户/home/用户/.Xauthority;检查ubuntu-desktop是否正常跑起来，删除/tmp下所有文件;然后手动sudo startx看下反应

3、用aptitude来自动选择依赖包版本，优先输入n来使它不.........]]></description><category></category></item><item><title><![CDATA[Mysql 同步到ES的最佳实践]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/92068842</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/92068842</guid><author>sf131097</author><pubDate>Sat, 15 Jun 2019 10:40:09 +0800</pubDate><description><![CDATA[当时由于mysql对全文检索或模糊查询支持的能力不强，需要将数据发送到搜索引擎（如ES）上，由搜索引擎来提供专业的服务。

 在实践中我总结出了以下几种方式。



1同步双写

这是一种最为简单的方式，在将数据写到mysql时，同时将数据写到ES。

优点：

业务逻辑简单。

缺点：

1、 硬编码，有需要写入mysql的地方都需要添加写入ES的代码；

2、 业务强耦合...]]></description><category></category></item><item><title><![CDATA[Docker-compose]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/90913411</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/90913411</guid><author>sf131097</author><pubDate>Wed, 05 Jun 2019 18:40:08 +0800</pubDate><description><![CDATA[由于apt官方库里的docker版本可能比较旧，所以先卸载可能存在的旧版本：
$ sudo apt-get remove docker docker-engine docker-ce docker.io

更新apt包索引：
$ sudo apt-get update

安装以下包以使apt可以通过HTTPS使用存储库（repository）：
$ sudo apt-get install -y ...]]></description><category></category></item><item><title><![CDATA[消息队列的学习]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/90229655</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/90229655</guid><author>sf131097</author><pubDate>Wed, 15 May 2019 13:09:36 +0800</pubDate><description><![CDATA[消息队列应用场景

以下介绍消息队列在实际应用中常用的使用场景。异步处理，应用解耦，流量削锋和消息通讯四个场景

2.1 异步处理

场景说明：用户注册后，需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式；2.并行方式

（1）串行方式：将注册信息写入数据库成功后，发送注册邮件，再发送注册短信。以上三个任务全部完成后，返回给客户端









（2）并行方式：将注册信息写入数...]]></description><category></category></item><item><title><![CDATA[css总结篇]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/88555070</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/88555070</guid><author>sf131097</author><pubDate>Thu, 14 Mar 2019 16:09:57 +0800</pubDate><description><![CDATA[css总结

1、百分比像素减去固定像素

width:-webkit-calc(60% - 10px); width:-moz-calc(60% - 10px); width:calc(60% - 10px);

2、达到一定长度出现滚动条 max-height:340px;overflow-y:auto;

3、border宽度算div宽度


box-sizing: border-bo...]]></description><category></category></item><item><title><![CDATA[js总结篇]]></title><link>https://blog.youkuaiyun.com/sf131097/article/details/88554990</link><guid>https://blog.youkuaiyun.com/sf131097/article/details/88554990</guid><author>sf131097</author><pubDate>Thu, 14 Mar 2019 16:08:42 +0800</pubDate><description><![CDATA[js总结
	
ES6特性：

1、for of 成员，for in 索引；
2、箭头函数

（arg， arg1， ...)=&gt;{ return ... } 因为箭头函数中没有this，因此我们也就无从谈起用call/apply/bind来改变this指向

3、解析结构
var loading = props.loading;
var clicked = props.clicked;
...]]></description><category></category></item></channel></rss>