Shellbye.github.io icon indicating copy to clipboard operation
Shellbye.github.io copied to clipboard

my blog --> see https://github.com/Shellbye/Shellbye.github.io/issues for recent update

Results 88 Shellbye.github.io issues
Sort by recently updated
recently updated
newest added

相比于方便快捷的Python,C++的常用操作确实是匮乏很多,最近项目需要分割中文字符串,我这个C++新手在网上找了好长时间都没有结果,最后还是歪打正着的找到了这个[SO](https://stackoverflow.com/questions/40054732/c-iterate-utf-8-string-with-mixed-length-of-characters)的问答,才有了眉目。 ```C++ #include #include #include std::vector split_chinese(std::string s) { std::vector t; for (size_t i = 0; i < s.length();) { int cplen = 1; // 以下的几个if,要参考这里 https://en.wikipedia.org/wiki/UTF-8#Description if ((s[i] &...

C/C++

在 `Open` 方法中,进来就是一个不知为啥进行的一个排序: sort.Slice(opts, func(i, j int) bool { _, isConfig := opts[i].(*Config) _, isConfig2 := opts[j].(*Config) return isConfig && !isConfig2 }) 结合上下文想了想,这里其实是把用户传入的 `gorm.Option` 进行了排序,并把 `gorm.Config` 类型的配置放到了前面。

草稿
源码阅读

``` 第一部分 运用领域模型 模型在领域驱动设计中的作用 1.模型和设计的核心互相影响 2.模型是团队所有成员使用的通用语言的中枢 3.模型是浓缩的知识 软件的核心 软件的核心是其为用户解决领域相关的问题的能力 第1章 消化知识 1.1 有效建模的要素 1.模型和现实的绑定 2.建立了一种基于模型的语言 3.开发一个蕴含丰富知识的模型 4.提炼模型 5.头脑风暴和实验 1.2 知识消化 1.3 持续学习 1.4 知识丰富的设计 1.5 深层模型 第2章 交流与语言的使用 2.1 模式:...

设计模式
2019
读书笔记

# 前言 本文旨在记录我在使用[ELK技术栈](https://www.elastic.co/elk-stack)的过程中用的一些东西,和对ELK技术栈的一些内容的理解。因为我想让这篇文章能够对未来的像我一样的新手有一定的帮助,所以我会尽量【从零开始】记录,并把技术细节记录到我所能做到的最细。鉴于我在使用中使用的Ubuntu操作系统,所以我在本文中所有的系统环境都默认是Ubuntu 1604,且假设是一个新系统,这样所有依赖的东西就都需要单独安装。 Elasticsearch(业界简称ES),是一个基于Java和Lucene的分布式、可扩展、实时的搜索与数据分析引擎,所以在安装使用ES之前,你需要安装Java。 # 安装Java 安装Java比较简单,具体可以参考另一篇博客 #4 。 # 安装Elasticsearch 我第一次使用ES的时候,是去官网下载的压缩包,然后设置好相应的配置之后,手动启动的。这样的方式的一个好处是可以清晰的体验ES的整个流程,对ES有一个大概的认识,但是这样做也是有比较多的问题的。比如你启动ES的时候是前台运行还是后台运行呢?如果前台运行,那你可能需要多个窗口协同工作([tmux](https://github.com/tmux/tmux)),如果你后台运行(命令行末尾加`-d`),那么每次需要重启时又比较麻烦,所以经过一段时间的折腾之后,我再后面从5.x到6.x迁移的时候,就依照[官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/current/deb.html)直接用Ubuntu的包管理工具的安装的,并直接用systemd来托管ES,方便了很多。 我把ES的Ubuntu安装方式也总结了一篇简单的博客 #5 。 # Elasticsearch的增删改查 相比我之前做搜索时短暂调研过的[whoosh](http://whoosh.readthedocs.io/en/latest/intro.html)和[sphinx](http://sphinxsearch.com/),ES我比较喜欢的一点是它的基于http的访问接口,非常的“解耦”,而且在初期可以非常轻松的进行一些简单的操作。当你的ES安装好并且已经启动之后,就可以进行一些简单的增删改查了,具体可以参考这篇博客 #6 。 # 从MySQL导数据到Elasticsearch ES被认为是一种NoSQL,而MySQL是传统关系型数据的典型代表,因为NoSQL的日渐普及,以及ES的诸多传统关系型数据库不具备的功能,所以有很多需要从MySQL导数据到Elasticsearch的场景,这部分的相关介绍可以参考这篇专门记录从MySQL导数据到Elasticsearch的博客 #8 。 参考: [Elasticsearch: 权威指南](https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html) [Parsing...

ELK
草稿

Flag还是要立的,虽然有被疯狂打脸的风险,但是当你知道有人看到了你的Flag之后,你会比平常更加努力。元旦的时候,和老婆一起定了2019的目标,我的其中就包含了leetcode上按照通过率排序最低的50个题,这不是第一个就遇到了很大问题,看答案都看的模模糊糊的,好在互联网上总有各种先人的足迹,只要下功夫,总能通过网络上的蛛丝马迹找到想要的东西,包括自己的失踪的女儿,参考[《网络谜踪》](https://movie.douban.com/subject/27615441/)。好了,闲话就到这里,下面看原题: ## 题目 > 返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K 。 > 如果没有和至少为 K 的非空子数组,返回 -1 。 > 示例 1: >> 输入:A = [1], K = 1 >> 输出:1 > 示例 2:...

算法
2019
动态规划

### 问题描述 `RocketMQ` 单机是比较容易配置的,基本上是拆箱即用,按照很多网络上的说法,集群部署也是非常简单,当然,说简单的应该是机器资源比较充沛的人,本周我在两条机器上交叉部署双主双从时,在启动了 `broker` 的的机器 B 上尝试启动机器 A 的 slave 节点时,启动报错如下 ``` java.lang.RuntimeException: Lock failed,MQ already started at org.apache.rocketmq.store.DefaultMessageStore.start(DefaultMessageStore.java:220) at org.apache.rocketmq.broker.BrokerController.start(BrokerController.java:826) at org.apache.rocketmq.broker.BrokerStartup.start(BrokerStartup.java:64) at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:58) ``` ### 解决方案 在查阅了网上一些[资料](https://www.cnblogs.com/javashare/p/10052736.html)之后,发现是`RocketMQ`的存储路径冲突造成的,直接的解决方案就是在...

Java
源码阅读
2019
RocketMQ

开始接触C++,才更加发现了Python第三方库之多,多到写Python几乎就是不停的找库,经验丰富的人知道有哪些库,而新手则只能冒着bug百出的风险自己动手DIY。项目需要一个把汉字转成带音调的功能,本以为随手就是,结果调研好久都没有发现合适的第三方项目,倒是发现了不错的Python项目([`python-pinyin`](https://github.com/mozillazg/python-pinyin)),无奈之下,只得照着`python-pinyin`的核心代码进行了部分C++化,好在这个功能如果只是简单用用,还算比较简单,大致分为以下几步。 # 1. 拆分输入 就是就是把输入的语句拆分成一个个汉字,可以参考我之前写的 #27 ,也是给予前人的东西自己学习了一下。 # 2. 汉字转code point 找到汉字对应的[`code point`](https://en.wikipedia.org/wiki/Code_point),参考我之前写的 #25 。 # 3. 查找拼音 项目中包含了一个很大的map,这是整个项目的核心,找到code point之后就是在这个map里面找拼音了。在`python-pinyin`中,还对多音字进行了判断和处理,这部分我就没搞了,遇到多音字直接去第一个就是了(^_^)。 # 4. 后处理 在`python-pinyin`中,还可以按照不同的需求对输出就行各种各样的定制化输出,因为我这个比较简单,所以只是一种固定的输出格式(语音 ==> yu4 yin1 .)。 整个项目没啥特别复杂的技术,正好适合我学习C++和cmake,地址在这里:[`hanzi2pinyin`](https://github.com/Shellbye/hanzi2pinyin)

C/C++

前几天尝试了一下leetcode中文版通过率最低的一个题( #41 ),后来发现是关于动态规划的题目,然后听几个人说动态规划是算法题里面比较难的一类,于是就又找了一个动态规划的题目,自己思考了很久,最后依然是通过理解网络上的资源才有了着手之处。 ## 题目 >你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。 >每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。 >你知道存在楼层 F ,满足 0 示例 1: >>输入:K = 1, N = 2 >>输出:2 >>解释: >>鸡蛋从...

算法
2019
动态规划

``` 深入理解RPC:基于Python自建分布式高并发RPC服务 基础篇:深入理解 RPC 交互流程 协议 1:深入 RPC 消息协议 消息边界 特殊分割符法 长度前缀法 消息的结构 消息压缩 流量的极致优化 协议 2:Redis 文本协议结构 深入理解 RESP (Redis Serialization Protocol) 1. 单行字符串 以+符号开头; +hello world\r\n 2. 多行字符串...

读书笔记
2020

### 题目描述 ``` 给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。 我们是这样定义一个非递减数列的: 对于数组中所有的 i (1

算法
2020