BLCL的博客小馆

📢📢📢 阿里云双十一,2核2G3M的服务器,99元一年,新老用户续费同享!!

首页

关于

归档

loading..
Golang

《深入解析Go》笔记

在 GitHub 上找到一本解读 Go 实现细节的好书,名叫《深入解析 Go》。 大致看了一遍,简单做了些笔记。 这本书的代码来自 Go 1.3,所以还有一部分由 C 语言写成。 这份笔记里的代码来自 Go 1.12.5,数据结构全部由 Go 语言实现。 数据结构 string 和 slice 都是引用类型,可能开在栈上,也可能开在堆上; channel 和 map 是引用类型,但一定开在堆上,栈中只有指针。 string 底层结构 src/reflect/value.go 1234type StringHeader struct { Data uintptr Len int} string 是不可变数据结构,任何对 string 的操作都会产生一个新的 string. 因此,需要拼接..

更多
Golang

Golang 学习记录

这几个月在考虑从 Python 转向 Golang,所以专门学习了 Golang. 这里是 Golang 学习的一些记录。 学习笔记稍后再整理(咕),先列一下我这几个月看过的各种教程吧。 阅读列表 Go by Example Go by Example 是对 Go 基于实践的介绍,包含一系列带有标注说明的示例程序。 真·快速上手必备。 《Go语言四十二章经》 《Go语言四十二章经》详细讲述了Go语言规范与语法细节以及在开发中常见的误区;通过对标准库包和著名第三方包的实际运用,来启发读者深刻理解Go语言的核心思维,仔细琢磨经典代码设计模式,引领读者进入Go语言开发的更高阶段。 讲解详细、信息量超大的 Go 语言教程。 Go Tour 经典的 Golang 官方教程。 上大学的时候啃过..

更多
loading..
IDEA工具快捷键

如何成为 IDEA 键盘流

好了,你完全可以丢掉鼠标了。前言常言道:“工欲善其事必先利其器”。如何高效编程,成为 JetBrainsIDE 键盘流呢?当然是熟悉快捷键再加上各种插件啦~ IDEA JetBrainsIDE 有默认的一套快捷键方案,不过在经过长时间的使用后,发现总有些一些快捷键令我难以接受。遂花了一天的时间,将快捷键全部调整了一遍,并深度结合了IdeaVim插件,总结如下:本篇文章适用于任何 JetBrains 公司出品的 IDE ,包括 PhpStorm ,WebStorm ,PyCharm ,RubyMine ,CLion 等。 IDEA 正文快捷键多光标添加或移除光标Ctrl + 左键拖动鼠标选中多行区域Shift + 左键拖动在上方/下方插入光标Ctrl + Alt + 上下键编辑删除行Ctrl + D..

更多
随笔Python算法

用堆找出最小的 N 个数

不知道为啥,突然想水一篇很水的算法文章。 今天整理 MySQL 的笔记,看到了这样一句话: MySQL 在执行 ORDER BY x LIMIT n 这类语句,且 LIMIT 的数量有限时(比如只需要 3 条数据),MySQL 会尽量通过堆来构建优先队列,减少排序所需的时间。 这是堆的一个经典应用:从海量数据中找出最大(小)的 n 个数。 之前只用堆写过堆排,没有用堆处理过在线算法,所以就写了写。 用一句话概括这个算法:要找最小的数,就要构建大顶堆。 在处理数据时,我们会构建一个大顶堆 H,那么 H[0] 的值也就是当前数据中最小的 N 个数中的最大值,也就是第 N 小的数。 当处理新的数时,如果这个数小于堆顶的数,那么就把它变成堆顶,然后再对堆进行维护,以保证有序。 此算法的时间复杂度为 O(Ml..

更多
开源Linux

服务器初始化

记一下服务器的初始配置。前言前些日子,入手了一台服务器,特此记录一下它的初始配置。正文注:本人主机为 CentOS 7 x64 系统,以下内容均基于此环境。安全设置请查考 肉鸡是怎样炼成的字符集修改123456cd /etc/sysconfig/sudo vi i18nLANG="zh_CN.utf8"source /etc/sysconfig/i18n设置 DNS123vi /etc/resolv.confnameserver 114.114.114.114nameserver 8.8.8.8配置 Yum 源123456cd /etc/yum.repos.d/sudo mv CentOS-Base.repo CentOS-Base.repo_baksudo wget -O /etc/yum.repos..

更多
Linux信安

肉鸡是怎样炼成的

你的服务器正在被攻击!前言安全是一个服务器最基本的必备条件,在创建了服务器之后,你首先要做的事情就是将服务器加固。由于服务器就相当于一台拥有独立 IP 的、直接暴露于互联网之上的电脑,这在为你带来便利的同时也直接让你的服务器与危险画上了等号,密码穷举、DDOS 攻击、各种各样你想到的、想不到的攻击方法都在等着你。说不定你的服务器正在被攻击!正文注:本人主机为 CentOS 7 x64 系统,以下内容均基于此环境。查看攻击情况查看登录失败的日志1sudo lastb统计尝试暴力破解机器密码的 IP1sudo grep "Failed password for invalid" /var/log/secure | awk '{print $13}' | sort | uniq -c | sort -nr | ..

更多
loading..
开发微服务数据迁移后端开发

微服务架构下的数据迁移指南

在扇贝,除了 CRUD 以外,做的最多的事情大概也就是数据迁移了,以至于后来简单的数据迁移工作都变成了一种搬砖。今天动笔写一写在扇贝做数据迁移的方法,以及一些需要关注的点。 0. 为什么要做数据迁移? 出于架构调整 / 业务调整,我们需要把某个微服务中的数据交给另外一个微服务去管理。 因为每个服务通常会有自己的数据库,而且只会连接到自己的数据库,所以我们在让新的服务接管数据之前,就要保证全部或部分数据已经要在新的数据库中了,这样业务才能够平滑过渡并切换。 1. 怎么做数据迁移? 1.1 静态数据迁移 把数据从 A 服务迁移到 B 服务中,所需的步骤: 把 A 里的数据都取出来 把数据塞进 B 里面 没有了!就这么简单,比“把大象放进冰箱”还少一步~🌝 所以本文到此结束,靴靴你浪费宝贵的一分钟..

更多
loading..
读书微服务DevOps

《从 0 开始学微服务》阅读笔记

前一阵子购买了胡忠想老师的《从 0 开始学微服务》极客时间专栏,二月份看完以后做了一些笔记。 服务化拆分 根据我的实际项目经验,一旦单体应用同时进行开发的人员超过 10 人,就会遇到上面的问题,这个时候就该考虑进行服务化拆分了。 服务化拆分的两种姿势: 纵向拆分:按业务维度拆分,关联比较密切的几个业务业务适合拆成微服务;功能相对独立的业务拆成微服务; 横向拆分:从公共且独立功能维度拆分。标准是是否有公共的服务被多个其它服务调用,且依赖的资源独立不与其他业务耦合。 微服务架构 初探微服务架构 微服务架构下,服务调用主要依赖下面几个基本组件: 服务描述 注册中心 服务框架 服务监控 服务追踪 服务治理 服务描述——如何发布和引用微服务 常用的服务描述方式包括 RESTful API、XM..

更多
loading..
其他区块链抽奖查询以太坊ETH智能合约随机数

基于以太坊却不上链的抽奖服务,是不是有一点可疑。

前言本文是随笔,记录了一次基于以太坊的抽奖服务的方案讨论。从常规的智能合约的实现方案,到最终改用不上链的实现,主要是分享一下思路,包含了一点不看也没事的技术细节,以及一点区块链相关的内容。因为抽奖主题的区块链开发入门文章已经泛滥了,所以文章尽可能避免变成教程。背景之前一位做论坛的同学说他们那个论坛经常会做一些活动,抽奖什么的。如何让用户能感受到公平公正,让大家信任。之前一个的办法是在指定时间录视频,并且边上放个北京时间,表示这个是准时开奖没有作弊。这个和澳门最大线上赌场异曲同工,边上搞台电视放新闻的直播,令人信服。但是总一直这样也不行,我们可是搞技术的,而且这种方式扩展性太弱。于是他们想做一个公正公开可信任,简单易用易理解的抽奖系统,选定的方案是区块链。我听了觉得很有意思,而且公正公开不可变,区块链太合适..

更多
loading..
LinuxNAS网络IPv6

瞎玩IPv6——在公网搭建文件管理器

IPv6 是个好东西,希望人人都有一个。 IPV6 IPv6 是啥? 新一代的 IP 协议,解决了 IPv4 地址枯竭的问题。具体可以见 Wikipedia. IPv6 的 IP 长度为 128 位,总量非常非常多,不用担心用不完,所以接入 IPv6 的客户端都会分到一段 IP,比如 240e:1c:ce8:fd00::/64,然后客户端又可以把这段 IP 继续分段,下发到下面的所有子网中。 不过需要注意的是,虽然客户端会分到一段 IP 的所有权,不过客户端本身还是会有至少一个确定的 IP,以确定自己的位置。 其实发现 ISP 分给自己 2^64 个 IP 地址的时候还是感觉很奢侈…😂 IPv6 跟我有什么关系? 感谢去年工信部发布了《工业和信息化部关于贯彻落实〈推进互联网协议第六版(IPv6)..

更多
1757677787980