写给未来 30 岁的自己,毕业五年之际的职业感悟

作为 2015 届的毕业生,如今已经在互联网行业摸爬滚打五年了。我一直觉得自己是一个后知后觉的人。在小学时,小朋友都有着自己的梦想,而我却没有;在中学时,同学们都有着自己明确的专业选择,而我却模模糊糊;到了大学,同学们都有着自己的目标和梦想,而我没有。一路回想过去,貌似是在一波跌跌撞撞的过程之后才走到现在的。如今,我作为一名软件工程师,已经有五年的时间了。在这期间,我选择了读取在职研究生学历。看似,我有着一些对自己职业的规划与未来的思考。但是,我觉得并没有想得彻底 >> 阅读全文写给未来 30 岁的自己阅读全文:写给未来 30 岁的自己,毕业五年之际的职业感悟 Read More

2020 疫情期间,我都做了些什么?

现在是 2020 年 3 月 20 日,不知不觉,恍恍惚惚,已是回到北京的第 7 周了。而在今天的某一瞬间,突然有了一丝记录这疫情期间做了哪些事情的想法。我在 2020 年 2 月 2 日从老家来到北京,当时已经意识到疫情的严重性,但并没有想到时至今日我居然依然被隔离在家中,是的,是真的被隔离了,不能出门的那种。说起从老家回来,那时父母并不希望我这么“早”回到北京,之所以认为“早”是因为疫情给大家带来的恐慌。但是,我之所以还是想出发,我想是因为潜意识中有一种想找回一个真正工作和学习的状态。如果再在家“耗下去”,总觉得会损失些什么 >> 阅读全文2020 年 03 月 10 日 家 北京阅读全文:2020 疫情期间,我都做了些什么? Read More

C++ memset 的使用

在竞赛时使用 memset 发现初始化的默认值无法生效,后来发现我对 memset 的参数的理解有误。void * memset ( void * ptr, int value, size_t num );将指针 ptr 所指向的内存块中前 num 个字节,用 value 替换。注意,这里面的 value 是一个字节的值。下面谈及两个场景,初始化为 0。memset(a,0,sizeof(a));初始化“最大值”,之所以加上引号,是因为并不是真正的最大值。但是能够带来最大值的效果的同时,还能带来一些好处。memset(a,0x3f,sizeof(0x3f));0x3f3f3f3f 代表的十进制数值是 1061109567 是 10^9,和 32 位的有符号整型的最大值是一个量级。而往往,数据在一般情况下都是小于 10^9 的。所以,可以达到替换最大值的效果0x3f3f3f3f + 0x3f... Read More

递归

递归往往面对一类问题时,如果它的规模足够小或者说达到既定的边界条件时,我们可以直接获取答案。但是,当这类问题的规模比较大时,却往往无法直接获取答案。那么,这个时候就可以通过“自身调用自身”的方式,来不断地减小问题的规模,直到问题的规模被缩减到足够小时,直接将答案返回上层的调用者,最终获取到原问题的解。如果将求解的过程逆过来,那么就是所谓的递推。点击 阅读全文 > Read More

《Redis深度历险》Chapter 1 Learn Note

1.7 布隆过滤器其数据结构包含一个大型的位数组和若干个不一样的无偏hash函数。所谓无偏即能够把元素的hash值计算得比较均匀,让元素被映射到位数组中的位置比较随记。输入预计元素数量:n错误率:输出位数组长度 lhash函数的最佳数量 [code lang="cpp"k = 0.7 * (l / nf = 0.6185 ^ (l / n[/code空间占用估计http://krisives.github.io/bloom-calculator误判率[code lang="shell"f = (1 - 0.5^t) * k # k 是 hash函数的最佳数量[/code应用爬虫重复URL过滤NoSQL数据库领域,降低磁盘IO垃圾邮箱过滤1.9 漏斗限流维护漏斗属性:漏斗容量、漏嘴流水速率、漏斗剩余容量与上一次漏水时间。每次灌水(请求)前,进行计算给漏斗腾出空间。能够腾出多... Read More

《DATA STRUCTRUES A Psuedocode Approach with C++》Chaper 3. Linked List Learn Note

3-1 LINEAR LIST CONCEPTLinear lists can be divided into two categories: general and restricted.In a general list, data can be inserted and deleted anywhere and there are no restrictions on the operations that can be used to process the list. Such as the random list, ordered list.In a restricted list, data can only be added or deleted at the ends of the structure and processing is restricted to op... Read More

《MySQL High Availability》Chapter 1&3 Learn Note

Part I. High Availability and ScalabilitOne of the database features that supports both high availability and scalability in an application is replication.Replication is used to create redundancy in the database layer as well as to make copies of the databases available for scaling the reads.Part I covers how you can use replication to ensure high availability and how you can scale your system.Chapter 1 Introductio... Read More

《DATA STRUCTRUES A Psuedocode Approach with C++》Chapter 2. Searching Learn Note

Chapter 1 Introductio1-2 The Abstract Data Typ什么事抽象数据类型(ADT)?下面是我的理解描述的是一种抽象的数据,那么这个数据的抽象属性该如何描述呢?定义一个(抽象的)数据,其中包含数据的存储方式,一些操作方法。但是,对外屏蔽其实现细节。也就是说,对于使用者而言,知道它能做些什么事情,但不需要知道它是如何实现的。即抽象数据类型。举例来说,C++中的Stack,Queue,Java中的Class即为抽象数据类型的例子。Chapter 2 Searchin2-1 List SearcheSequential SearcSequential Search(顺序搜索Sentinel Search(哨兵搜索哨兵搜索,相对于顺序搜索,主要是通过在序列尾部追加目标值,进而减少在搜索过程中下标索引的判断次数,以提升搜索性能。Probability Search(概率搜索... Read More

2018年度回忆与总结 – 算法

工作特价车这个项目周期持续半年之多,应该算是成长最多的一个项目了。在产品侧,能够深入到用户的角度与产品沟通产品形态,但尚浅。在技术侧,由于前期的积累与沉淀,能够快速的判断技术方案,给出技术排期,快速迭代。在运营侧,参与每周的运营周会,学习产品效果的评估分析、问题分析与解决的过程,但尚浅。整个项目,对于沟通能力、产品分析能力、业务技术熟悉程度与产品运营的过程有了一定的增长与认识。提升了相当的软实力。服务化改造针对现有的业务系统进行代码与架构级别的改造,这里我参与了一次代码级别的改造(未上线)。整体思路是围绕DDD(Domain-Driven Design)思想进行系统分层,按业务概念收敛模块,按产品形态收敛系统组件。在这个过程中,对于系统的建模能力,业务的抽象分析能力有了一定的提升。计算机算法主要关注点在LeetCode上,从2018年9月份开始,累计刷题189道。在基础算法与数据结构方面,... Read More

[XChat-Server开发笔记]2019.02.15

http://blog.ihuxu.com/xchat-server-development-notes-list在👆上面,可以找到[XChat-Server开发笔记]主题相关的所有文章1. Log4增加Log4j插件扩展2. 数据包报文头协议设计参考QQ的协议:https://www.pediy.com/kssd/pediy10/83047.htm0000: 02 ->表示QQ数据包的起点。0001 - 0002: 为QQ客户端版本号对于QQ2008为:1221。0003 - 0004: 就是我们所说的QQ命令。根据试验发现命令为0016表示该包包含发出聊天记录的信息。0005 - 0006: 2B的序列号。0007 - 000A: 4B的发送消息的QQ号码。000B - 倒数第二字节: 用改进的TEA算法加密的包含聊天内容的数据包。(里面有很多丰富的信息如接收信息的QQ号码IP地... Read More

[iOS Swift 学习笔记]面向对象篇

http://blog.ihuxu.com/ios-swift-learning-notes-summary在👆,可以查看所有关于[iOS Swift学习笔记]主题相关的文章关键点在Swift中,默认同一个项目中(同一个命名空间下),所有的类都是共享的,不需要impor构造函数作用给成员分配空间初始化成员变量调用父类的构造函数 - 给父类属性分配空间 & 设置初始值如果子类重载父类的构造函数,且子类没有重写父类的构造函数,那么此时子类不会对外部提供init方法了关键字init 构造函数override 重写orderload 重载KVC构造函数定义模型属性的时候,如果是对象,通常是可选在需要的时候创建避免写构造函数,可以简化代码如果是基本数据类型,不能设置成可选的,而且要设置初始值,否则KVC会崩溃如果需要使用 KVC 设置数值,这个属性不能是 private 的使用KVC方法之前,应... Read More

[XChat-Server开发笔记]2019.01.28 – 30

http://blog.ihuxu.com/xchat-server-development-notes-list在👆上面,可以找到[XChat-Server开发笔记]主题相关的所有文章1. 未登录的客户端线程池采用单例模式(Singleton Parttern)设计未登录的客户端线程池,采用静态内部类的形式保证其线程安全。之所以静态内部类能够保证单例模式的线程安全,是因为Java在底层针对类的加载已经做了同步处理,已经是线程安全的了。这种方式的优点懒加载,只有在需要的时候进行加载,节省资源在多线程共享使用一个单例时,确保线程安全关于线程安全下的单例模式的使用,参考文章:http://blog.ihuxu.com/java-singleton-pattern-usages-for-thread-safe1.1 客户端线程池的主要数据结构1.1.1 基于链表的阻塞队列(Linked B... Read More