<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[secretx的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/secretx</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; secretx]]></copyright><item><title><![CDATA[golang defer实现]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/123765507</link><guid>https://blog.youkuaiyun.com/secretx/article/details/123765507</guid><author>secretx</author><pubDate>Sat, 26 Mar 2022 22:36:59 +0800</pubDate><description><![CDATA[golang defer实现]]></description><category></category></item><item><title><![CDATA[golang T 和 *T的方法集是什么关系？]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/123764489</link><guid>https://blog.youkuaiyun.com/secretx/article/details/123764489</guid><author>secretx</author><pubDate>Sat, 26 Mar 2022 21:47:31 +0800</pubDate><description><![CDATA[golang T 和 *T的方法集是什么关系？]]></description><category></category></item><item><title><![CDATA[手写LRU]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/107046172</link><guid>https://blog.youkuaiyun.com/secretx/article/details/107046172</guid><author>secretx</author><pubDate>Tue, 30 Jun 2020 17:06:15 +0800</pubDate><description><![CDATA[手写LRU

1.要求

put / get 均是 O(1) 时间复杂度
	超出容量自动删除最老数据
2.用什么数据结构？

任意查找要求 O(1),必然有哈希
	
	时间需要有序，必然链表或者数组

	由于删除需求，也要控制在O(1),数组淘汰
		由于单链表删除节点，需要寻找前驱，并非 O(1)，所以单链表淘汰
	所以结论，哈希(key--&gt;node) + 双链表，哈希存key维持映射关系，双链表维持时序以及val
	
3.进一步，链表的Node定义是？


	初版

	
class Node(o]]></description><category></category></item><item><title><![CDATA[vm虚拟机访问外网或暴露服务给外网访问]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/41676985</link><guid>https://blog.youkuaiyun.com/secretx/article/details/41676985</guid><author>secretx</author><pubDate>Wed, 27 Mar 2019 11:54:32 +0800</pubDate><description><![CDATA[vm虚拟机访问外网或暴露服务给外网访问


	Vm常用网络设置解释

	桥接：虚拟机跟宿主机处于同一网段(二者不是嵌套关系，是并列)，前提是你宿主机所在局域网你有多余1个的IP，否则可能IP冲突。此外，需要手工为虚拟系统配置IP地址、子网掩码，且注意和宿主机器处于同一网段。
		NAT:由vmware完成网络地址转换，最简单，无需额外配置，确保宿主机上VMware NAT Service和VMwa...]]></description><category></category></item><item><title><![CDATA[风控标签]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/86629558</link><guid>https://blog.youkuaiyun.com/secretx/article/details/86629558</guid><author>secretx</author><pubDate>Thu, 24 Jan 2019 16:50:04 +0800</pubDate><description><![CDATA[前文说了一套用户评分逻辑，对着基本能做出个demo来，但要想这套系统更精确的描述用户好坏，则需要一批充足的基础标签。

本文就是共享一些每家公司都可以做的标签。

1.IP相关

总的来说就是用户的请求来自一些已知的恶意IP，比如 代理IP登录、IDC IP登录、云商IP注册.....

总之格式 “{IP类型}{业务节点}”，至少可以搞十来个标签没问题吧

至于IP类型的知识，可以度娘，可以ip...]]></description><category></category></item><item><title><![CDATA[用户评分系统设计与实现(风控方向)]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/86599149</link><guid>https://blog.youkuaiyun.com/secretx/article/details/86599149</guid><author>secretx</author><pubDate>Tue, 22 Jan 2019 18:13:06 +0800</pubDate><description><![CDATA[用户评分设计与实现(风控方向)

维度 == 标签，泛指描述恶意行为的一类合集，不必纠结文中用词，看官就当做一回事， 就是你理解的那回事就行。

不区分维度
	不管你是IP维度、设备维度、xxx维度，只要能描述恶意倾向就算
	不面向维度
	不面向某一维度打分，只面向用户
	不绝对公平
	不同维度之间的权重可能失衡，由基准分控制，或者说由“业务专家”配置;但保证在相同业务场景下相同标签，恶意次数、最...]]></description><category></category></item><item><title><![CDATA[python内存管理--分层分配]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/81100920</link><guid>https://blog.youkuaiyun.com/secretx/article/details/81100920</guid><author>secretx</author><pubDate>Wed, 18 Jul 2018 16:56:41 +0800</pubDate><description><![CDATA[1.分层分配

层级
			内容
		 
			字典，元祖，列表，字符串.....等等python对象
		第3层
			对象特有的内存分配器(比如聚合对象)
		第2层
			python对象分配器
		第1层
			python低级内存分配器
		第0层
			glibc的malloc
		第-1层
			操作系统虚拟的内存管理器
		第-2层
			物理内存
		2.第0层 glibc

l...]]></description><category></category></item><item><title><![CDATA[垃圾回收算法概要]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/78995194</link><guid>https://blog.youkuaiyun.com/secretx/article/details/78995194</guid><author>secretx</author><pubDate>Sun, 07 Jan 2018 15:44:25 +0800</pubDate><description><![CDATA[标记-清除法问世最早的GC算法,分为标记和清除2个阶段.
标记 
从根对象开始递归标记所有能访问到的对象,这些对象就是活动的. 
递归过程可能是DFS或BFS
清除 
从堆首地址开始,遍历每个对象的标志位,如果不是活动的,就回收对象,具体表现是链接到空闲链表.下一次再分配时,直接从空闲链表里取.  清除阶段,堆越大,耗时越长,最大暂停时间就越大.有延迟清除法可以缓解最大暂停时间问题,每次只清除上一次]]></description><category></category></item><item><title><![CDATA[pyflame入门]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/74185959</link><guid>https://blog.youkuaiyun.com/secretx/article/details/74185959</guid><author>secretx</author><pubDate>Mon, 03 Jul 2017 12:37:24 +0800</pubDate><description><![CDATA[安装
yum install autoconf automake
git clone https://github.com/uber/pyflame
cd pyflame/
./autogen.sh
./configure (MacOS出错Pyflame only supports Linux hosts)
make && make install
从https://github.c]]></description><category></category></item><item><title><![CDATA[一行shell查看redis 连接数分布]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/73498148</link><guid>https://blog.youkuaiyun.com/secretx/article/details/73498148</guid><author>secretx</author><pubDate>Tue, 20 Jun 2017 14:45:51 +0800</pubDate><description><![CDATA[背景线上某个redis连接数过万,老报警,于是产生刚需:快速知道某个redis的client分布. 
用于快速找出连接数占用最多的客户端.shell习惯python的老司机处理这点小事,那还不是手到擒来.可是偶尔不也想装个逼,用shell么?先上代码,接着解读#!/bin/bashhost=$1 
port=$2echo $host: $port 
redis-cli -h $host -p $po]]></description><category></category></item><item><title><![CDATA[正则表达式回溯]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/72844509</link><guid>https://blog.youkuaiyun.com/secretx/article/details/72844509</guid><author>secretx</author><pubDate>Fri, 02 Jun 2017 15:12:07 +0800</pubDate><description><![CDATA[前几天有小伙伴来求救说页面上有一个 input 框，随着用户不断输入内容，页面响应会越来越慢直到完全失去响应。

简单沟通过后得知具体场景是这样的：

input 框中允许用户输入一连串逗号分隔的商品id在用户输入的过程中实时检测用户输入的内容是否符合规则，若不符合则给出提示信息

小伙伴的解决方案也很直接：

给 input 框绑定 keyup 事件。在 keyup 事件回调函数]]></description><category></category></item><item><title><![CDATA[搬砖漫谈]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/70272745</link><guid>https://blog.youkuaiyun.com/secretx/article/details/70272745</guid><author>secretx</author><pubDate>Thu, 20 Apr 2017 17:10:20 +0800</pubDate><description><![CDATA[写在前面:本文不比较谁是最好的语言?仅仅是一个python为主的码农的所思所想.以及准备押宝golang. 并不是为了宣传golang


python工作现状

初级
这个阶段很容易,找个活人,看会语法,都能写python.一般也就是web开发,比如django, flask, tornado之类,写的好点的用异步,协程,写的差的同步,线程.同时配合系统业务,使用周边扩展包,比如re]]></description><category></category></item><item><title><![CDATA[tcp_tw_recycle和tcp_tw_reuse]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/69568529</link><guid>https://blog.youkuaiyun.com/secretx/article/details/69568529</guid><author>secretx</author><pubDate>Fri, 07 Apr 2017 16:14:43 +0800</pubDate><description><![CDATA[tcp_tw_recycle和tcp_tw_reuse
tcp TIME_WAIT
进入主题前必须做铺垫啊,讲讲TIME_WAIT.因为TCP连接是双向的，所以在关闭连接的时候，两个方向各自都需要关闭。先发FIN包的一方执行的是主动关闭；后发FIN包的一方执行的是被动关闭。主动关闭的一方会进入TIME_WAIT状态，并且在此状态停留两倍的MSL(最大报文存活时间,一般Linux内核设置30秒)]]></description><category></category></item><item><title><![CDATA[Bloom Filter简述]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/68945321</link><guid>https://blog.youkuaiyun.com/secretx/article/details/68945321</guid><author>secretx</author><pubDate>Sat, 01 Apr 2017 15:54:57 +0800</pubDate><description><![CDATA[1.适用场景
在极大的数据集合中快速查找某个元素是否存在,但是不要求100%正确.这个是文绉绉的说法,说人话:一个很理想的场景:分布式缓存
缓存的数据可能很大,QPS也相当的高,比如千万级,那么一般这个缓存集群就会达到近百台机器的规模.能不能少点机器呢? 毕竟找老板要这么多机器,不容易啊,动不动就是KPI导向!
这个时候Bloom Filter就可以上场了
2.横向对比
为了查找某元素是]]></description><category></category></item><item><title><![CDATA[小实验:Broken pipe和Connection Reset by Peer]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/68926234</link><guid>https://blog.youkuaiyun.com/secretx/article/details/68926234</guid><author>secretx</author><pubDate>Fri, 31 Mar 2017 15:50:02 +0800</pubDate><description><![CDATA[网络开发常遇到Broken pipe和Connection Reset by Peer两个错误,一直没有深究其差别,只是笼统的知道是对方关闭了socket,做好异常处理就行.这两天刚好徒弟问到,猛地发现我竟无力解释,决定深究深究
1.基本原理
要说原理嘛,大家都能知道,就是TCP的三次握手和四次挥手,关于这个网上图形解说一大把,随意搜索,简述


三次握手

client说 SYN,]]></description><category></category></item><item><title><![CDATA[分布式事务简述]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/66974775</link><guid>https://blog.youkuaiyun.com/secretx/article/details/66974775</guid><author>secretx</author><pubDate>Mon, 27 Mar 2017 18:56:26 +0800</pubDate><description><![CDATA[国际开放标准组织Open Group定义了DTS（分布式事务处理模型），模型中包含4个角色：应用程序、事务管理器、资源管理器、通信资源管理器四部分。事务处理器是统管全局的管理者，资源处理器和通信资源处理器是事务的参与者。

J2EE规范也包含此分布式事务处理模型的规范，并在所有的AppServer中进行实现，J2EE规范中定义了TX协议和XA协议，TX协议定义应用程序与事务管理器之间的接口，而]]></description><category></category></item><item><title><![CDATA[TCP/IP摘要]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/54572922</link><guid>https://blog.youkuaiyun.com/secretx/article/details/54572922</guid><author>secretx</author><pubDate>Mon, 16 Jan 2017 12:22:31 +0800</pubDate><description><![CDATA[TCP/IP是互联网的基础协议栈，它包括大大小小几十个协议。本篇文章主要涉及到就是HTTP、TCP、IP协议。我们经常学的网络模型是七层或者五层，实际上一般认为一共只有四层就可以了。




    Application layer           ->HTTP
-------------------------- 
     Transport layer]]></description><category></category></item><item><title><![CDATA[消息队列设计精要]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/54017209</link><guid>https://blog.youkuaiyun.com/secretx/article/details/54017209</guid><author>secretx</author><pubDate>Wed, 04 Jan 2017 11:22:52 +0800</pubDate><description><![CDATA[消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能，成为异步RPC的主要手段之一。
当今市面上有很多主流的消息中间件，如老牌的ActiveMQ、RabbitMQ，炙手可热的Kafka，阿里巴巴自主开发的Notify、MetaQ、RocketMQ等。
本文不会一一介绍这些消息队列的所有特性，而是探讨一下自主开发设计一个消息队列时，你]]></description><category></category></item><item><title><![CDATA[tcp自连接问题]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/53931337</link><guid>https://blog.youkuaiyun.com/secretx/article/details/53931337</guid><author>secretx</author><pubDate>Thu, 29 Dec 2016 18:36:37 +0800</pubDate><description><![CDATA[今天在Segmentfault上有人提问了一个tcp自连接问题，这里记录下。所谓tcp自连接，就是出现源ip和源端口通目的ip和目的端口完全相同的情况，乍看起来不可思议，细细一想情理之中，本文重现下这种连接，并且说下解决思路。


现象重现


在linux主机下运行下面的python脚本，等待一会即可出现。

import socket
import time

connecte]]></description><category></category></item><item><title><![CDATA[关键字杀进程]]></title><link>https://blog.youkuaiyun.com/secretx/article/details/53908579</link><guid>https://blog.youkuaiyun.com/secretx/article/details/53908579</guid><author>secretx</author><pubDate>Wed, 28 Dec 2016 14:56:54 +0800</pubDate><description><![CDATA[不做运维,linux基础还真不如运维同学犀利,再次受教了,总结一下
背景
经常多进程部署服务,restart, stop时需要根据关键字搜索出这一组进程,杀掉
比如:python dir/tcp_server.py &多次执行起了多个进程,现在希望搜索dir/tcp_server.py 杀掉这组进程
CUT
ps -ef | grep dir/tcp_server.py | grep -]]></description><category></category></item></channel></rss>