后端
文章平均质量分 58
和电商相关的一些东西
拙_言
Oracle 10g OCPIBM Certified Systems Expert MAIL:xcl_168aliyun.com
展开
-
并行模拟退火算法的golang练手实现
模拟退火(Simulated Annealing, SA)算法是一种概率型启发式搜索算法,它模仿了物理世界中的退火过程。退火是一种金属加工技术,通过缓慢降低材料的温度来减少其内部的缺陷。在优化问题中,模拟退火算法用于寻找全局最优解,特别是当问题存在多个局部最优解时。原创 2024-05-26 17:02:37 · 517 阅读 · 0 评论 -
应用爬山算法做文本数据的挖掘和分析
爬山算法是一种启发式搜索算法,用于求解优化问题。它从一个初始解开始,逐步通过比较当前解与其邻域解的优劣来选择下一个可能更优的解,直到达到一个局部最优解或者无法进一步改进为止。爬山算法的核心思想是“贪心”,即每一步都选择能使目标函数值增加最多的方向前进。原创 2024-05-26 16:40:20 · 252 阅读 · 0 评论 -
Held-Karp算法解决旅行商问题(TSP)
给定一个距离矩阵 𝐷=[𝑑𝑖𝑗]D=[dij],其中 𝑑𝑖𝑗dij 是城市 𝑖i 到城市 𝑗j 的距离,旅行商问题的目标是找到一条哈密顿回路(Hamiltonian cycle),使得总距离 ∑𝑖=1𝑛−1𝑑𝑝𝑖𝑝𝑖+1+𝑑𝑝𝑛𝑝1∑i=1n−1dpipi+1+dpnp1 最小,其中 𝑝p 是一个排列,表示城市访问的顺序。请注意,由于Held-Karp算法的时间复杂度为𝑂(2𝑛⋅𝑛2)O(2n⋅n2),对于大规模问题,它可能非常慢,并且需要大量的内存。,表示城市之间的距离。原创 2024-05-11 21:27:39 · 632 阅读 · 0 评论 -
一致性哈希负载均衡算法Golang实现
在实际业务环境中,为了进一步提高负载均衡效果,一致性哈希通常会结合虚拟节点(也称为副节点)的概念,即将每个物理节点映射到哈希环上的多个位置。:当一个数据项需要存储或请求时,一致性哈希算法会从数据项映射的位置开始沿哈希环顺时针查找,直到找到第一个节点,然后将数据项存储在该节点或由该节点提供服务。:当有新节点加入或旧节点离开时,只需要重新计算涉及节点的哈希位置,而不需要重新映射整个哈希环上的数据,大大减少了工作量。:通过合理的哈希函数设计,可以实现数据的均匀分布,避免某些节点负载过重,而其他节点闲置。原创 2024-04-12 19:30:00 · 235 阅读 · 0 评论 -
最短响应时间负载均衡算法Golang实现
在这种算法下,负载均衡器会跟踪后端服务器的历史响应时间,并将新的连接请求分配给那些具有最短历史响应时间的服务器。这种方法的优势在于它能够自动适应服务器性能的变化,比如CPU负载的增加或网络延迟的变化,从而提供更为平滑的用户体验。需要注意的是,这个例子假设服务器的响应时间是固定的,但在实际应用中,服务器的响应时间可能会随着负载和网络条件的变化而变化。因此,最短响应时间负载均衡算法通常需要实时监控服务器的响应时间,并根据最新的数据做出决策。首先,它需要一个可靠的机制来测量服务器的响应时间。原创 2024-04-11 10:17:49 · 527 阅读 · 0 评论 -
最小活跃数负载均衡算法Golang实现
在这种算法下,负载均衡器会持续追踪每台服务器上的活跃连接数量,并在接收到新请求时,将其分配给当前活跃连接数最少的服务器。由于它考虑的是实时的连接数,因此即使某台服务器配置较高,但如果其已经承载了大量活跃连接,新的请求就会被分配到其他相对空闲的服务器上。例如,如果某台服务器的处理速度比其他服务器慢,那么它的活跃连接数可能会一直保持在较高水平,从而导致负载均衡器无法将其识别为“最不繁忙”的服务器。此外,这种算法也需要一定的计算开销,因为它需要不断地更新和比较服务器的活跃连接数。,用于表示服务器的活跃连接数。原创 2024-04-12 07:30:00 · 216 阅读 · 0 评论 -
动态规划在电商订单计算的应用例子
你在网上买了一堆商品,比如说,你买了2件T恤,每件10块,5件袜子,每双5块,还有1个帽子,8块钱。比如,T恤买3件以上,每件就变成9块了。比如,如果你已经买了2件T恤,再买1件就变成了3件,这时候就得看看是按原来的10块一件算便宜,还是按促销的9块一件算便宜。然后,我们通过两层循环来填充整个数组,每次计算都考虑两种情况:不购买当前商品(取上一个商品的最小价格)和购买当前商品(取上一个商品的最小价格加上当前商品的价格)。最后,表格的最右下角那个格子,就告诉你,如果你买下所有这些商品,最少要花多少钱。原创 2024-04-12 18:00:47 · 384 阅读 · 0 评论 -
利用机器学习库做动态定价策略的例子
动态定价是一个复杂的问题,涉及到市场需求、库存、竞争对手行为、季节性因素等多个变量。在实际应用中,动态定价通常需要复杂的模型和大量的数据分析。我们使用Python和Golearn库来训练一个回归模型,该模型可以根据历史数据预测商品的最佳定价。原创 2024-04-12 20:06:59 · 547 阅读 · 0 评论 -
加权随机负载均衡算法golang实现
通过这种方式,加权随机负载均衡算法能够确保高处理能力的服务器承担更多的请求,而低处理能力的服务器则承担较少的请求,从而达到优化资源利用和提高系统整体性能的目的。值得注意的是,加权随机负载均衡算法并不保证绝对的公平性,因为权重较高的服务器可能会连续多次被选中,而权重较低的服务器可能长时间不被选中。加权随机负载均衡算法是一种根据服务器权重分配请求的算法,其核心思想是为每个服务器分配一个权重值,权重值高的服务器被选中的概率更大。接着,它遍历服务器列表,累加每个服务器的权重,直到累加的权重大于或等于生成的随机数。原创 2024-04-11 10:09:48 · 552 阅读 · 0 评论 -
31点经验分享与吐槽
本来在家安心的写 golibs,写到数据库这块时想写个备注,可能有些东西累积已经太久,然后就一发不可收拾,写了很多。放在代码仓库已经不合适了,删了又可惜,就放在这吧。 如果要用数据库中间件,个人看目前 小米的 Gaea 可能是相对更成熟的。但还是建议先在非核心系统试用,否则一次踩坑,可能足以致命 见过在 Go 框架中使用 Java 那套手写 xml 配置管理 SQL 的方案。很难理解,不同语言的开发理念是不同的,一定要这样南橘北枳吗? SQLHooks 是个好东西,但最好多测试,各原创 2022-05-20 12:06:34 · 331 阅读 · 0 评论 -
文件存储相关的一些东西整理
做App后端,特别是像IM这类,会有很多语音和图片之类的大大小小一堆文件在服务端进进出出.这时,怎么存文件,就要好好想想了。 其实文件存储这回事,我并不陌生,不过以前做存储备份开发时,更多关注的是文件同步,文件消重.备份介质管理之类的东西。现在场景换了,不同了。存文件大致有下面几种选择: 1.直接保存在本地文件系统或网络文件存储上. 本地原创 2015-11-13 00:39:07 · 2532 阅读 · 0 评论 -
Go语言条件变量的两个例子
在Go语言中 sync.Cond 代表条件变量,但它需要配置锁才能有用.var m Mutex c := NewCond(&m)或c := sync.NewCond(&sync.RWMutex{})之类.它有三个函数: wait/signal/broadcast 望文知义,和Windows下的InitializeConditionVariable与WaitForSing原创 2015-11-29 19:09:17 · 2285 阅读 · 3 评论 -
多懂点SQL可以写出更好的接口
引子: 今天被人说我MySQL懂得很浅,作为一个老OCP,我竞然无言以对。因为确实我这么多年一直都用的ORACLE,没玩过啥重量级的MySQL应用. 不过,这个刚好让我想起了前几天,一个API接口的讨论,可以拿出来聊聊. 当时的需求是如下图这样子在APP端显示一个商家列表(商家来自各行各业.).原创 2015-11-17 21:59:09 · 3813 阅读 · 2 评论 -
BlotDB数据库例子
一直想在Go系中找个类似PHP+Sqlite的组合,查了下,发现了BlotDB数据库正合用。 这个库在GitHub上star数很高,看来我是孤陋寡闻了 。 研究了下,它是个Key/Value数据库,会在磁盘上生成一个db文件,支持事务处理,支持只读打开..... 不过它不支持SQL语句,需通过相关函数和代码来手工实现。 弄了个例子:/*BlotDB 练习原创 2015-11-25 21:57:25 · 3420 阅读 · 0 评论 -
运维监控开发笔记
要把手上的一些东西理理,汇成一个运维监控的东西。本来这类东西(牛刀)大把了,不过我喜欢造轮子的习惯又犯了,主要是都是自己写的,清楚每个点,很容易把监控代码嵌入进去,只要注意控制好功能范围不挖大坑就行. 日志处理不和Hadoop扯上关系的话,可能用(ELK)的组合。 采集处理的东西有部分功能了,其中系统部份可以参考小米开源的Open-Falcon,相当完备的东西。这东西不错的,也听过小米秦晓辉的分享,有很多可借鉴的经验.可惜就我一个人没法太花时间研究,只能写的时候边写边看了,不过原创 2015-11-01 18:09:10 · 2213 阅读 · 0 评论 -
介绍一些有助于写出更好Go程序的工具
前面讲了测试和性能调优之类,这篇主要讲如何利用Go提供的一些工具和参数,帮助写出更好的代码.一. golint 检查代码规范二. go vet 检查代码存在的隐患三. -race 检查是否有race condition原创 2015-11-22 22:26:41 · 9122 阅读 · 0 评论 -
Go语言程序测试
最近一直在搞各种测试,然后今天周末翻翻书,发现特价萝卜的书上在测试方面写得挺全的。 这书是之前CU(chinaunix.net)论坛。搞活动得到奖品(还有作者亲笔签名),拿回来都没看完.因为写得太太太细了,又厚。 参考他的书及官网的东西,再把测试方面的东西过一下还是有点意思的.这篇主要讲这几点:一.Testing的几种不同形式功能测试:TestXxxx(t原创 2015-11-22 13:04:34 · 4548 阅读 · 0 评论 -
Go语言HTTP测试及程序性能调优
这篇要讲的东西,主要是HTTP,WebSocket的测试及如何调优Go程序的一些方法.分下面几个内容:一.httptest测试包二.性能测试三.怎么利用参数分析和调优程序四.在运行中实时监控调优一.httptest测试包对于HTTP和WebSocket测试,Go标准库有一个HTTP测试框架.在"http/httptest"包下. go1.5.1\go\src原创 2015-11-22 19:11:23 · 7125 阅读 · 0 评论 -
一个帐号多设备登录的处理
多设备登录的问题处理,远没有看起来那么简单。除了设计理念,安全方面的考量外,在技术上处理也是个麻烦事。 列几种情况: 情况A: 同用户在多个同类型设备上登录。 如,同一个帐号在多个Android手机上登录. 情况B: 同用户在多个不同类型设备上登录。如,同一个帐号在手机,PC或Pad上登录. 情况C: 在一台原创 2015-11-15 17:40:33 · 21828 阅读 · 1 评论 -
帐号重复登录处理
前面说了"一个帐号多设备登录的处理"这里说说另一种情况,在不允许重复登录的要求下,如何处理用户帐号重复登录后台服务? 这个看起来简单的问题,可很是纠缠了我一段时间。 一.选择哪种处理方法。 首先,有两种可选择的方法:原创 2015-11-15 23:26:55 · 6169 阅读 · 0 评论 -
HTTP基本认证和摘要认证
今天试了下HTTP认证的资料. 主要是基本认证与摘要认证.其中基本认证是指 Base64(user:pwd)后,放在Http头的Authorization中发送给服务端来作认证.用Base64纯只是防君子不防小人的做法。所以只适合用在一些不那么要求安全性的场合。 不过如果是做WebAPI不是网页,且web服务器是自己可以控制的,其实没必要那么死板。 我就试了把Bas原创 2015-10-28 22:19:26 · 4551 阅读 · 0 评论 -
提升APNS消息推送质量的一些想法和验证程序
今天在想用什么样的方式,才能改善提高大级别时APNS的推送质量.有了个初步的想法。 首先简单列一下,APNS常见的一些限制和要注意的地方: 1.频繁建立和断开连接,被当成受到攻击,直接把链接给断了。 2.开发一堆并发,有个消息发生异常推送失败了,apns ack要等一段时间(可能有1sec左右的延迟)才返回,而 这期间,后面发的消息也会被认为有问题,直接被其原创 2015-11-12 00:38:23 · 1933 阅读 · 0 评论 -
批量替换和转移目录的东东
拷,1点半了,写太晚了。 总之是个好东东。直接上代码了,不解释。/*批量替换和转移目录的东东 遍历指定目录,对于指定扩展名的文件, 查找并替换文件内容中的指定字符串,并 将其输出到新的目录下。原文件内容不变。 至于其它非指定的文件,也一并复制一份到新目录下。 使用Josn作为配置文件.Author:XiongChuanLiangDate:2015-10-23Lin原创 2015-10-24 01:34:46 · 1356 阅读 · 1 评论 -
Atom插件go-plus的离线安装
Atom用了段时间了,用起来还不错。用来开发Go的话,需要安装go-plus这个插件。没在线安装成功,只好离线安装了,记录一下,说不定别人也需要. 步骤如下: 一。配置node环境 brew update brew install node brew reinstall node --with-full-ic原创 2016-01-24 13:53:26 · 6420 阅读 · 0 评论 -
用Go开发WeChat接口的一个小坑
Golang开发WeChat Wallet接口的小注意事项原创 2016-02-10 23:27:38 · 2922 阅读 · 0 评论 -
Go语言实现堆栈(Stack)
package main//Stack//author:Xiong Chuan Liang//date:2015-1-30import ( "fmt" "github.com/xcltapestry/xclpkg/algorithm" )func main(){ stack := algorithm.NewStack() if stack.Empty() { f原创 2015-01-30 23:14:38 · 6269 阅读 · 1 评论 -
利用Chrome Headless模式,网页转PDF
原来一直是用wkhtmltopdf来将网页打印成PDF文件,它是基于QtWebKit内核的。但最近有个很奇怪的字体问题困扰着我。所以找找其它能在Linux下实现相同功能的方法。然后发现Chrome Headless模式可以实现我想要的,而且用Chrome来实现,可以排除掉很多Bug怀疑。 Chrome Headless模式相当于一个没有界面的浏览器,能实现很多功能,能实现pdf打原创 2017-07-21 23:34:02 · 9285 阅读 · 3 评论 -
Golang plugin 插件例子
好像手上有场景可以用Go1.8的插件来弄,写了个例子.plug3/plug3.go:package main/*封装Key到.soAuthor: XCLDate: 2017-7-16*/type ApiKey struct { key string}var myApiKey ApiKeyfunc init() { myApiKey = ApiKe原创 2017-07-16 15:22:05 · 7229 阅读 · 0 评论 -
map之类数据集合的几个代码小例子
Map之类的一些KV存储数据集合之类,在业务中使用蛮广泛的,其中,在CodeReview中发现,希望用map存储数据,但又能有序取出数据,以及并发安全的map的需求出现的比较多,而各自的代码实现都有点绕,其实有更好的封装,大家直接拿过来用就好了。给几个例子:几个集合的小例子原创 2017-06-25 12:52:09 · 1526 阅读 · 0 评论 -
随机数生成整理(C++,Go)
年前被随机数困扰了一下,年后才有时间来进行整理记录。随机数生成分为真、伪两种。通常用开发语言自带的随机函数来生成即可,但碰上较真的情况,可以调用第三方的真随机生成库或系统特殊设备来生成真随机数。Linux下可以用"/dev/random"或"/dev/urandom"来生成。关于这两个文件可以看下维基百科: https://zh.wikipedia.org/wiki//dev/原创 2017-02-12 15:27:00 · 1471 阅读 · 0 评论 -
Can't create more than max_prepared_stmt_count statements
前两天线上狂报"Error 1461: Can't create more than max_prepared_stmt_count statements".调完MySQL的max_prepared_stmt_count参数并重启部分服务才消停。调整参数只是暂时解决问题,根子在哪?还需要抽出时间排查代码和监控数据库,我初步怀疑是哪个业务场景同一时间突然产生大量的Prepare直至超过上原创 2016-12-25 18:15:05 · 9696 阅读 · 0 评论 -
HTTP/2服务端与客户端例子(Go)
圣诞节独自一人在家,火车票只抢到一张无座... 还是弄下Blog吧,不然Blog感觉要长草了。 这是翻以前的测试代码整理贴上来的。 一个完整的HTTP/2的服务端与客户端的Demo. 也许有人用得上。服务端代码:package main/*HTTP/2 服务端例子Author: XCLDate: 2016-12-25HTTP2 测试证书生成.go原创 2016-12-25 15:12:58 · 8566 阅读 · 1 评论 -
打造一个让你安稳休息的机器人助手
系统上线了,然后各种呼叫就开始没完没了,周末出去玩一下都不得安宁。而且无语的是,这些系统问题基本不是因为你写的代码有问题,而是她们误操作或需要查导各种数据,如:数据输反了,价格单位奇葩了或者有Fraud来了。真是烦燥。 难道以后到哪都要带着电脑跑。。。 我一直在找适合公司现状的好一点的方案,直到这几天在玩Slack Bot。 因为它的API很好用,我可以把一些常见的,特殊的。又不原创 2016-08-07 13:33:10 · 1408 阅读 · 0 评论 -
编译go1.7beta2
今天有碰到个"local error: no renegotiation"问题,就去尝试编译了下Go1.7beta2记录下: 1. 安装 go1.4 [root@ip-172-31-16-112 src]# export GOROOT=/root/go1.4[root@ip-172-31-16-112 src]# export PATH=$PATH:$GOROOT/bin原创 2016-07-01 00:41:47 · 6552 阅读 · 0 评论 -
Atom和Webstorm开发环境搭建
今天再折腾了一下开发环境,记录一下。一、Atom 配置C/C++开发环境 autocomplete-clang linter-clang二、Atom 配置Golang开发环境 go-plus 这个插件非常好用,安装后,初步建项目时,会get一堆相关插件. 如果其中有些东西没下载成功,手工安装也一样. 比如无代码提示之类, 可手工安原创 2016-04-24 11:06:30 · 4635 阅读 · 0 评论 -
利用smtp协议发送带附件的邮件
之前写过一个发邮件的,不过没带附档,今天再看了下smtp协议,做了个带附档的邮件发送例子,也就这样吧。原创 2016-05-07 21:57:24 · 11729 阅读 · 1 评论 -
glog的二次封装
二次封装glog的原因在于,现在有多个语言的不同服务在跑,为了日志管理方便,会统一下日志级别及日志显示格式。Go这边的日志一直用的glog.我之前也介绍过,这是个很好用的日志包,但它有它的一套定义,要统一风格的话,只能在其基础再封装一层,以满足通用的INFO/WARN/ERROR/FATAL/DEBUG定义之类。 这是我初次封装后的效果: 看起原创 2016-04-16 12:20:58 · 3952 阅读 · 2 评论 -
简转繁等中文转换(Golang)
之前项目需要个简体转繁体的功能,工期太紧,就自己撸了一个,效果还行. 在做这个的过程中发现简转繁其实远比想的要复杂.中间有很多简体字习惯的用法,在繁体中是不同的。且有些字如(後,后,臺灣,台灣) 在繁体中有几种写法和用法。简体字将其简化成了一个字... 然后相同的字,在不同的词组中时,有些用简体那个,有些用繁体那个... 最后,台湾繁体和香港繁体还有不同的差异.原创 2016-04-10 02:36:50 · 9059 阅读 · 0 评论 -
身份认证和消息合法性验证方案分享
我最近要找一种合适的数据加密与身份认证方案,来保证服务的安全。没啥经验,一翻恶补之后,总算整合出一套方案。并用Go完成了Demo。本人对安全外行,不过自我感觉应当是个比较有安全感的身份认证方案。 不想写大段文字来说明,看得懂的,依着代码来瞧瞧吧.首先,协议包应当包含最少下面几个字段: type Proto struct { //... Timestam原创 2015-10-11 20:02:25 · 1309 阅读 · 0 评论 -
Beanstalkd的使用(Golang)
最近需要引入一种新的消息队列,这个队列最好能专业、简单、消息不丢失等特性,但又不会引入过多的复杂性, 特别是在目前单枪匹马的情况下。然后发现Beanstalkd看起来是我所需要的. Beanstalkd 支持任务优先级 (priority), 延时 (delay), 超时重发 (time-to-run) 和预留 (buried), 同时支持binlog原创 2015-08-16 20:25:44 · 4242 阅读 · 1 评论