Golang 位运算
二进制表示从现代计算机中所有的数据二进制的形式存储在设备中。即 0、1 两种状态。
例如 用8位存储
123450: 00000000 1: 00000001 2^02: 00000010 2^13: 00000011 2^1 + 2^04: 00000100 2^2
可以使用如下公式 f(a) = 2^(x-1) x为位数
位运算从现代计算机中所有的数据二进制的形式存储在设备中。即 0、1 两种状态,计算机对二进制数据进行的运算(+、-、*、/)都是叫位运算,即将符号位共同参与运算的运算。
123a := 3b := 6c := 9
计算两个数的和,因为在计算机中都是以二进制来进行运算,所以上面我们所给的 int 变量会在机器内部先转换为二进制在进行相加
12343: 0 0 0 0 0 0 1 17: 0 0 0 0 0 1 1 1————————————————————10: 0 0 0 0 1 0 1 0
可以如下表示
1233 = 2^1 + 2^07 = 2^2 + 2^1 + 2^010 = 2^3 + 2^1
位 ...
微信promise和async await
在微信小程序项目中,接触到了promsie,参考其他文章,深入学习了promsie的原理及用法。学习异步编程。
在JavaScript的世界中,所有代码都是单线程执行的。
由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行。
异步执行可以用回调函数实现:
123456function callback() { console.log('Done');}console.log('before setTimeout()');setTimeout(callback, 1000); // 1秒钟后调用callback函数console.log('after setTimeout()');
观察上述代码执行,在Chrome的控制台输出可以看到:
1234before setTimeout()after setTimeout()(等待1秒后)Done
可见,异步操作会在将来的某个时间点触发一个函数调用。
AJAX就是典型的异步操作。以上一节的代码为例:
12345678 ...
雷军第二次年度演讲-2021年度:最好的投资,就是投资自己
雷军年度演讲——“我的梦想,我的选择”,如约而至。
8月10日晚上19:30,小米十一周年,雷军在两个多小时的演讲中,首次揭秘他最艰难的10个选择,向大家分享了这些年来,小米在追寻梦想的路上凭什么一路前行,又是如何一步一步成长的。
小米公司七年前,乌镇世界互联网大会上,意气风发的雷军曾当众表达小米的梦想:“五到十年,小米要做到全球第一。” 在场的苹果公司高级副总裁布鲁斯·塞维尔说:“It’s easy to say, it’s much more difficult to do。”台下观众笑成一片。
7年后的今天,小米手机销量超过苹果,首次成为全球第二,并成为首个登顶欧洲市场的中国品牌。 “真的没有想到,7年后的今天,我们超过苹果,首次成为了全球第二!”他说。
2021第二季度,据Canalys等第三方研究机构报告,小米手机出货量达5310万,同比增长86.6%,以17%的份额超越苹果,首次排名全球第二。
同时,根据国际调研公司Strategy Analytics发布的最新报告,欧洲市场小米以25.3%的市场份额,超越三星和苹果成为欧洲销量第一的手机品牌。目前,小米已在22个国家和地 ...
雷军第一次演讲-10周年演讲全文:豁出去,干
来源:腾讯科技
8月11日,小米集团董事长兼CEO雷军在小米北京总部举行了一场主题为《一往无前》的小米十周年演讲。
雷军在一个半小时的演讲上,讲述了小米创业十年来不为人知的故事,包括小米创立的初衷、与董明珠打赌、经营理念、上市的故事等等。
谈到创业之初组建团队,雷军表示找人不是三顾茅庐,是三十次顾茅庐。
雷军也自嘲干了不少蠢事,比如和董明珠的十亿赌局,雷军也正式承认小米的确输了。“敢跟格力去比本质上说明我们膨胀了”。
雷军最后表示,他最自豪的不是上市。而是三件事, 小米和所有同行一起推动了智能手机的普及、小米的生态链模式带动了100个行业的变革、小米甚至改变了很多人的命运。
以下为雷军演讲速记全文(腾讯科技根据速记整理,未经小米官方确认):
今年是小米十周年,我们原来准备了极为盛大的几万人的大型庆典活动,因为疫情只能取消了。但是大家想一想,十周年还是一个很重要的日子,生活还需要一些仪式感,生活更需要我们积极地去面对。
最近这段时间我想了想以后,我决定办一场演讲,来纪念这个重要的日子。同时,也对所有关心和支持小米的朋友做一次完整的总结和汇报。
梦想的开端
十年前我和一群小伙伴一起 ...
雷军2022年度最新演讲:熬过绝望低谷,你便无人能敌
内容来源:2022年8月11日,2022雷军年度演讲。
分享嘉宾:雷军,小米科技创始人、董事长。
8585 字 | 20分钟阅读
2020是小米创办的十周年,雷军开始了第一次演讲,《 雷军10周年演讲全文:豁出去,干|笔记侠版 》。
2021年8月10日,是雷军的第二次演讲《 雷军年度演讲:最好的投资,就是投资自己 》。
今年的8月11日,雷军举办了自己的第三次 主题演讲:《永远相信美好的事情即将发生》,小侠第一时间为大家整理出来了文字版本, 以下为雷军的最新演讲内容,enjoy~
大家晚上好,这是我第三次举办年度演讲。
这三年来世界发生了巨大的变化,已经很深的影响到了我们每一个人的生活和工作。
面对连续不断的巨大的变化,不少人觉得不适应,甚至有点迷茫,还有人特别的焦虑。
所以这次年度演讲,我就不打算谈小米了,我想聊一点不同的话题,聊一聊我是怎么度过那些人生低谷的,我是怎么穿过迷茫和焦虑的。
今天我想讲三个故事。
一、产品失败
第一个故事,就是我年轻的时候遇到了产品失败,业务崩盘,甚至公司差点关门的困境。
这个故事要从30年前说起。
1.生死关头
那是1992年,那个时候WP ...
微信显示markdown文件内容
需求需要后台上传文件,然后在小程序展示文件内容。
实现方案,文档使用Markdown,通过Golang,读取文档内容,转换为html格式。
然后再通过Api接口传给微信端。微信通过rich-text组件,显示html格式的文件内容。
Markdown转html使用github.com/russross/blackfriday/v2转换为html
123456789101112131415import ( "fmt" "github.com/russross/blackfriday/v2" "html/template" "io/ioutil")func main() { f, err := ioutil.ReadFile("./README.md") if err != nil { fmt.Println(err.Error()) } content := template.HTML(blackfriday.Run(f)) fmt.Println(con ...
mqtt安装使用及客户端测试
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的”轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。
MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
https://www.runoob.com/w3cnote/mqtt-intro.html
Deploy使用docker部署
docker_run.sh
12345678docker stop mqttdocker rm mqttdocker run --name=mqtt -d \ --privileged \ -p 1883:1883 -p 9001:9001 \ -v $PWD/data:/mosquitto/data \ -v $PWD/logs:/mosquitto/log \ ec ...
Elastic提示错误no Elasticsearch node available
问题golang 使用 github.com/olivere/elastic 包进行连接 远程 es 或者docker搭建的es时(只要golang所在主机与es所在主机不同),报错信息如下
no active connection found: no Elasticsearch node available
原因如果您elastic不禁用嗅探功能,则Golang客户端将在后台运行进程,该进程/_nodes每15分钟轮询一次API(上面的URL)并维护正常节点列表。如果没有健康的节点,则以该错误结束。
您的集群配置有私有IP时,也会发生这种情况(注意:我们在OP上进行了调试,我们调试了问题)(因此在/_nodesAPI输出中,您看到的是私有IP,而不是公共IP)。
具有嗅探功能的客户端开始轮询,获取节点列表并尝试连接到专用IP,但由于该节点无响应(甚至无法在客户端所在的网络中解决)而收到HTTP错误。因此,它标志着它已经死了并发展到另一个。
当群集中没有其他节点时,它将报告no active connection found: no Elasticsearch n ...
docker限制内存及cpu占用
默认情况下容器使用的资源是不受限制的。也就是可以使用主机内核调度器所允许的最大资源。
但是在容器的使用过程中,经常需要对容器可以使用的主机资源进行限制
为什么限制为什么要限制容器对内存的使用?
限制容器不能过多的使用主机的内存是非常重要的。对于 linux 主机来说,一旦内核检测到没有足够的内存可以分配,就会扔出 OOME(Out Of Memmory Exception),并开始杀死一些进程用于释放内存空间。糟糕的是任何进程都可能成为内核猎杀的对象,包括 docker daemon 和其它一些重要的程序。
针对这个问题,docker 尝试通过调整 docker daemon 的 OOM 优先级来进行缓解。内核在选择要杀死的进程时会对所有的进程打分,直接杀死得分最高的进程,接着是下一个。当 docker daemon 的 OOM 优先级被降低后(注意容器进程的 OOM 优先级并没有被调整),docker daemon 进程的得分不仅会低于容器进程的得分,还会低于其它一些进程的得分。这样 docker daemon 进程就安全多了。
下面的脚本直观的看一下当前系统中所有进程的得分情况
...
goland配置GOROOT错误
错误信息今天升级了golang的版本,配置goland的GOROOT提示错误
The selected directory is not a valid home for Go Sdk
解决办法查询资料,发现。低版本的goland还需要配置GOROOT,但是在配置go1.17以上的时候就一直报这个错误
The selected directory is not a valid home for Go Sdk
找到go的安装路径,我的是/usr/local/go
编辑src/runtime/internal/sys/zversion.go
增加 相对于的版本号
1const TheVersion = `go1.17.7`
重启后就能够配置了。
参考文档The selected directory is not a valid home for Go Sdk