bingoohuang

Results 115 issues of bingoohuang

# 保形加密(Format Preserving Encryption)[wikipedia](https://en.wikipedia.org/wiki/Format-preserving_encryption) ## 原始需求: > 输入一个从1开始自然增长的级数数字(counter),得到一个看起来随机,具有不超过指定位数的加密数字 谷歌结果中的一条[StackOverflow](https://stackoverflow.com/questions/196017/unique-non-repeating-random-numbers-in-o1/16097246#16097246): > 利用保形加密算法Format-Preserving Encryption来实现([python示例](https://github.com/bingoohuang/py-tool/blob/master/aesffx.py)),例如: > 000 733 > 001 374 > 002 882 > 003 684 > 004 593 ## 算法[简介](https://cloud.tencent.com/developer/news/290783): >...

研究

# 分三步 [DEBUGFS Command – Show File Creation Times in Linux](https://www.tecmint.com/debugfs-command-show-file-creation-time-in-linux/) 1. `stat`或者`ls -i`看Inode ```bash [root@host-192-168-111-31 rigaga]# stat rigaga.db.t.disk File: "rigaga.db.t.disk" Size: 40960 Blocks: 80 IO Block: 4096 普通文件 Device:...

实践

# HttpClient总超时怎么玩 ## 超时含义 对不起,总超时没得,有以下几种不同的超时: 1. 连接超时 the Connection Timeout (http.connection.timeout) – the time to establish the connection with the remote host 1. 套接字超时 the Socket Timeout (http.socket.timeout) – the...

实践

# CBB ## CBB的基本概念 [CBB的前世今生——技术大佬为你讲解CBB](https://dy.163.com/article/EIGS75KV05389AHC.html) CBB即共通性建构基础(CommonBuildingBlock)指那些可以在不同产品、系统之间共用的零部件、模块、技术及其他相关的设计成果。CBB可以分为技术货架(平台)和产品货架(平台)。 技术货架和产品货架是相互融合的,一般来说技术货架可以产生不同的产品货架,产品货架也是融入了一个或者多个技术货架而形成的。 对于产品货架,又可以包括三个层次:CBB模块、CBB平台以及CBB货架。 CBB模块可以包括共享器件、共享组件、共享单板或模板、共享单机、共享整机、共享分系统、共享系统等;CBB平台即CBB模块组合,是由若干共享单机、共享整机或模块经组合形成共享平台,可供多个产品重用;而CBB货架是由CBB模块和CBB平台按层次进行分类而形成的。 由此可见,当产品是基于许多成熟的共享的CBB搭建而成的话,无疑产品的质量、进度和成本会得到更好的控制和保证。有机构调查认为,缺乏CBB的企业,研发人员将有60%左右的重复劳动用于研发已经存在的成果。 ### CBB的建设的好处 1. 通过重用共享资源,在继承中创新,可以大大提高通用产品的成熟度和产品质量,总结起来有以下一些好处: 1. 技术和软硬件被大量共享,极大降低研发和生产成本; 1. 在共享基础上,增加新技术、新特性,能够快速开发新产品,对市场做出快速反应; 1. 共享成熟度高的货架产品,大大增加了产品稳定性和可靠性; 1. 通过共享,减少低水平重复,释放大量人力资源; 1. 中间货架产品,比如模板、单机,可以独立开拓增量市场,进一步做大经营规模。 由此可见CBB建设的投资必将最终得到丰厚的回报。 ![image](https://user-images.githubusercontent.com/1940588/89849785-d2c95a80-dbbb-11ea-9dd1-4482a6885078.png) ![image](https://user-images.githubusercontent.com/1940588/89849940-3784b500-dbbc-11ea-8e7f-80e88e362514.png) ## [公共CBB实现方案思考](https://blog.csdn.net/me_blue/article/details/77110663) >...

研究

# 图文并茂理解iptables ## iptables详解(1):iptables概念 [原文](https://www.zsythink.net/archives/1199) [系列](http://www.zsythink.net/archives/tag/iptables/) ### 防火墙相关概念 从逻辑上讲。防火墙可以大体分为主机防火墙和网络防火墙。 - 主机防火墙:针对于单个主机进行防护。 - 网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网。 网络防火墙和主机防火墙并不冲突,可以理解为,**网络防火墙主外(集体), 主机防火墙主内(个人)**。 从物理上讲,防火墙可以分为硬件防火墙和软件防火墙。 - 硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。 - 软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低。 ![image](https://user-images.githubusercontent.com/1940588/82394352-625ae380-9a7b-11ea-85da-611d908c0ed4.png) 那么在此处,我们就来聊聊Linux的iptables iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"才是真正的防火墙,这个框架的名字叫`netfilter`。 netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间。 iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。 `netfilter/iptables`(下文中简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。 Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能: - 网络地址转换(Network Address...

文摘

# 面向谷歌编程 ## 网络时代的拿来主义 ,避免重复造轮子 我想在监控系统rig中自动识别一个字符串,是hostname还是IP地址,由于rig是go语言来实现的,我就简单地在谷歌中,输入一下关键字”golang string is ip v4“, 获得如下[搜索结果: [![image](https://user-images.githubusercontent.com/1940588/55926054-5da1ea00-5c42-11e9-81c8-8d3155d314cd.png)](https://www.google.com/search?newwindow=1&q=golang%20string%20is%20ip%20v4&cad=h) 我简单瞄了一眼,点开了第二条结果,然后展示了以下的gist代码: ```go package main import ( "fmt" "strconv" ) import "strings" func is_ipv4(host string) bool { parts :=...

博客

## 多租户连接池 最近对多租户数据库连接池做了一下改造。改造之前,是一个商户一个小池子,数据库连接只是在小池子里共享。改造之后,是所有商户都一个大池子,数据库连接在大池子中共享。每个商户请求时,从大池子里拿连接,然后切换到自己的商户库中。 效果还是杠杠的,一下子把以前的尖刺给削平了。纪念一下。 ![image](https://user-images.githubusercontent.com/1940588/38122782-d58905d8-3409-11e8-931f-4c6902c9cb16.png) ![image](https://user-images.githubusercontent.com/1940588/38965548-119596f8-43b0-11e8-9aff-5cc0720c9746.png) ## 改造之后留下的小坑 从连接池中获取连接后,需要将连接切换到当前请求的商户库上。但是如果连接池上次使用时,就是当前商户库,则跳过切换的动作。这个设计本意是利用状态,避免重复切换。但是在实际部署过程中,由于新开商户的数据库,暂时需要手工配置账户权限,导致没有配置权限之前,出现串库现象。很快就从代码中,找到了问题。 ![image](https://user-images.githubusercontent.com/1940588/38179925-f1a522b2-365a-11e8-968a-0544964d216c.png) 1. 第一次访问,连接被打当前商户标记(本质是连的别的商户库)后,切库失败抛出异常; 2. 用户再次尝试访问,刚好拿到上次的连接,发现刚好是当前商户(假象),不切库,导致串库。

博客

# 纪念我的两行代码,一个让内存和CPU飙升,一个让日志无法打印 ## 让内存和CPU飙升的那行代码 ![image](https://user-images.githubusercontent.com/1940588/89241580-ea3f9b00-d631-11ea-8dd4-4741c8ae31c9.png) ```go if reflect.DeepEqual(&lastWarnConf, warnConf) { } ``` 这个比较,左边是指针,右边是非指针,肯定每次都失效,结果导致频繁刷新(1分钟一次),然后raft状态同步一次,结果就是内存和CPU(RAFT状态更新、JSON序列化)都持续上升。 ![image](https://user-images.githubusercontent.com/1940588/89241897-bca72180-d632-11ea-818b-1ad3d2356c8c.png) ![image](https://user-images.githubusercontent.com/1940588/89241858-a1d4ad00-d632-11ea-9f13-ae9babbafe48.png) ![image](https://user-images.githubusercontent.com/1940588/89241871-abf6ab80-d632-11ea-87fa-6f12d0c7a0a9.png) 然后补充了一下[gin的pprof的代码](https://github.com/bingoohuang/ginx/tree/master/pkg/ginpprof),再`go tool pprof -http=:8080 http://192.168.26.82:12345/debug/pprof/heap` ![image](https://user-images.githubusercontent.com/1940588/89241973-f710be80-d632-11ea-8951-3a696316e3b8.png) 然后看到,JSON序列化竟然占了那么多内存(65%),然后各种顺藤摸瓜,终于抓到了“罪魁祸首”。 自问,我写出那行代码的时候,我难道在“神游”😭? ![image](https://user-images.githubusercontent.com/1940588/89242611-89fe2880-d634-11ea-9b63-cfdf9612e144.png) ![image](https://user-images.githubusercontent.com/1940588/89242654-a39f7000-d634-11ea-8d8a-9af3dcc5ce52.png) ## 让连接数爆满的那行代码(缺失的) [就是这段啦](https://github.com/bingoohuang/golog/blob/master/cmd/gologdemo/main.go#L79),于是我就补充了这段我的史上最长注释: ```go...

博客

# BLM运动带来的软件术语变更 https://zh.wikipedia.org/wiki/Black_Lives_Matter Black Lives Matter,意为“黑人的命也是命”或“黑人的命很重要”,又译“黑人性命攸关”、“黑命攸关”或“黑命关天”,也被称为“黑命贵”,是一场国际维权运动,起源于非裔美国人社区,抗议针对黑人的暴力和系统性歧视。 ## Linux 中避免 master/slave 等术语的提案 https://www.oschina.net/news/117111/linux-new-terminology-bans-master-blacklist?from=20200719 Linux 内核维护者 Dan Williams 曾于 7 月初提交一份提案,建议逐步取消 master/slave 和 blacklist/whitelist 术语。近日,Linus Torvalds 则在 Linux 5.8 版本库的拉取请求中批准了该提议。 拟议的 master/slave...

博客

占个位。 ## 工具 1. [Sublist3r is a python tool designed to enumerate subdomains of websites using OSINT. ](https://github.com/aboul3la/Sublist3r) 1. [sqlmap is an open source penetration testing tool that automates the...

实践