Code Monkey home page Code Monkey logo

blogcomment's People

Contributors

yejkk avatar

Watchers

 avatar

blogcomment's Issues

MMKV 几见 | Yesin's Blog

https://www.gamechat.top/2019/09/28/MMKV-%E5%87%A0%E8%A7%81/

引言最近微信开源了 mmkv,之前曾经深为 android 跨进程数据共享和通信所困惑,用 contextprovider 里面 sharedpreference,也曾经考虑过用文件读写来实现,可是 Java 端对文件读写跨进程操作实在是没有很大可操作余地,ndk写的话又太耗时而且无法保障测试性能等等问题。现在开源的 mmkv 正好弥补来这一块空缺,而且结果微信检验,在性能和安全方面感觉还是比较靠

高并发解决方案 | Yesin's Blog

https://www.gamechat.top/2021/06/29/%E9%AB%98%E5%B9%B6%E5%8F%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/

引言在关于高并发的思考一文里面,我提出了高并发会导致的问题,在那边文章里最后的结论是高并发在确保底层存储一致性的情况下,最好通过设计来避免。但实际上业务之间的耦合可能往往无法提前预料到,相互的影响要是很频繁的话,实际上很难通过设计来确保。那么我们是不是就需要一种全局锁或者类似的方案来解决这一情况。 redis 的乐观锁在 redis 中,实际上存在一种解决方法。就是通过 WATCH、MULTI、E

redis 源码学习 | Yesin's Blog

https://www.gamechat.top/2020/07/02/redis-%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0/

一直实践以来, redis 的性能很高,且内存占用很小。一直想知道是为什么?这次看 redis 源码,首先就奔着这一点去看了。 redis 底层存储原理使用了 sds 进行存储,其实他就是 c 的 char 指针,所以说其和 c 是无缝贴合的。但是它不在由 c 语言进行管理,而是自定义结构体,里面是长度、可用大小,flag 以及数据。 12345678910typedef char *sds;st

Understanding ngrep | Yesin's Blog

https://www.gamechat.top/2022/11/08/ngrep/

抓包一般都有 tcpdump/ngrep,tcpdump 可读性比较差,一般只有在怀疑 tcp 连接出现问题,会用 tcpdump 去查看 tcp 的连接状态。ngrep 对比之下,使用比较方便,基本能满足一般需求。 ngrep tcpdump 过滤规则 支持 host\port\net\proc 支持 host\port\net\proc 易读性 较高(http 协议等很清晰)

数据库索引 | Yesin's Blog

https://www.gamechat.top/2020/12/15/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B4%A2%E5%BC%95/

引言前几天看到一篇文章,讲了一些数据库的注意事项。里面注意到 mysql innodb 为了避免二次查找用了索引覆盖技术。 详解索引覆盖技术即索引里覆盖了所有的查询结果,可直接返回。这个问题起因是在 innodb 里索引叶子节点存储的是主键,一般情况下还需要用主键进行二次查找,会大幅度降低效率。这一点可以用延迟关联查询和一般查询来进行验证。在其它数据库类似 postgresql 和 sql ser

go-Sleep | Yesin's Blog

https://www.gamechat.top/2022/04/08/go-Sleep/

引言time.Sleep(1*time.Second) 这个方法在某些场景很有用,在使用它的时候不由想到。它内部实现原理是什么?如果只是想让出 cpu 时间是不是有更好的方法?执行sleep 后最短回来的时间是多少? 探索分析首先,我们打开 time.Sleep 源码,出乎意料,一个空的方法,瞬间我迷茫了,难道 go 还有这种使用姿势,定义一个空的方法,然后延迟实现?找了半天不得其法,查完资料才发

MVVM Observer | Yesin's Blog

https://www.gamechat.top/2019/09/18/MVVM-observer/

背景MVVM 是现在 google 推荐的 android 架构方式,而且还推出了 jetpack 套件。基于此套件可以很简单开发一个 MVVM app。 问题livedata 是 google 推出的观察者模式,因为它和 app 的组件(activity、fragment、service)生命周期绑定,所以会确保在生命周期内才会更新数据。 因为 room 组件支持返回 livedata,但是按照

android 网络库 | Yesin's Blog

https://www.gamechat.top/2019/08/29/android-%E7%BD%91%E7%BB%9C%E5%BA%93/

网络库重点: 稳定 高效,可以复用连接 有缓存,不用重复请求 okhttp毋庸置疑,使用 okhttp 做为网络框架。 okhttp 已经稳定使用很长时间,应用很广泛。 okhttp 多路复用,有连接池。初步来看时根据 host 等等进行复用。连接池默认是5个,5分钟 提供了 okio 进行读写。Buffer 使用双向链表 segment(segment 还有 compact 和 flit

kafka-消息队列 | Yesin's Blog

https://www.gamechat.top/2021/07/26/kafka-%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97/

引言提到缓存一般想到的是用 redis 和 memcache,一提到消息队列一般想到的是 kafka。尤其担心自己太片面了,见识跟不上了,毕竟几年前就在用 kafka 在日志和记录方面,就搜了一下发现现在主流的还是 kafka,还有比较新的 RocketMQ(2016年阿里捐献给 Apache)。ActiveMQ 和 RabbitMQ 一般不考虑,毕竟在吞吐量和可靠性不如前面 kafka。 详解k

IO 设计模式 | Yesin's Blog

https://www.gamechat.top/2021/09/23/IO-%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/

LinuxIO 中分为 阻塞IO、非阻塞IO、多路IO、信号驱动IO、异步IO。其中阻塞IO、非阻塞IO、多路复用IO、信号驱动IO都属于同步IO。同步IO都是等待响应,异步IO是去做别的。模式名称很明显,其中非阻塞IO只是代表不断去查有没有返回值,不代表交出 CPU。 多路复用IO有 epoll、poll、select 实现。select 对所有流无差别轮询,有最大限制。poll 对所有流轮询,

idleHandler详解 | Yesin's Blog

https://www.gamechat.top/2019/08/29/idleHandler%E8%AF%A6%E8%A7%A3/

引言前几天听同事讲有个 idleHandler 可以不和主线程其它工作争抢,可以做到空闲时候运行。当时想着这一块好像有点印象,记得在看 handler 源码时候看到 message 获取后面还有一段有关 idle 的代码,但是没有细看。这么一想,看源码还是不够仔细啊。虽然感觉这个实际上应该是在 message 为空的时候然后执行任务,思路挺简单明了的。但是今天正好有空,就好好看了一下源码,顺便查漏

brew-安装旧版本 | Yesin's Blog

https://www.gamechat.top/2023/01/19/brew-%E5%AE%89%E8%A3%85%E6%97%A7%E7%89%88%E6%9C%AC/

序言今天为了跑一个古老的C程序,安装了 libwebsockets 。本以为 brew install 是一件很简单的事情,没想到耗费了一个上午的时间,特此记录一下。 初步探索brew install libwebsockets 运行后,发现安装的是 4.3.2 的版本,本来不关心,但是程序编译时报错,看报错信息时结构体成员找不到。很明显,安装的版本过高导致的,遂找到 4.0.21 的版本想安装。

程序思考 | Yesin's Blog

https://www.gamechat.top/2020/08/12/%E7%A8%8B%E5%BA%8F%E6%80%9D%E8%80%83/

程序流程出现问题bug、新需求、新的场景要兼容等等 解决问题 为什么会出现这种问题? 问题汇总和细化 问题归类 解决问题方案 该方案会导致其它问题吗?权衡。风险、概率、损失 总结通常来说解决一类问题,都会导致其它问题的发生,所以需要尽量提前预期到。好的设计一个意义在于能通过整体规划来把不可控因素控制在一定范围内。 一个程序在早期就能有意识规避 bug ,那远远好于在后期发现 bug,进行处理,越

必要工具搭建 | Yesin's Blog

https://www.gamechat.top/2021/06/04/%E5%BF%85%E8%A6%81%E5%B7%A5%E5%85%B7%E6%90%AD%E5%BB%BA/

v2ray背景以前一直使用 ssr 搭建,后面被封了几次。就算是在怎么模拟,比如指向自己的博客等等方式来规避,还是不可避免的被彻底封掉了。后面开始计划走 cdn 的方式,这一块 ssr 支持的不好,所以投入了 v2ray 的怀抱,来尝试一下。 步骤 使用官方的脚本命令安装。1bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-

关于高并发的思考 | Yesin's Blog

https://www.gamechat.top/2021/06/21/%E5%85%B3%E4%BA%8E%E9%AB%98%E5%B9%B6%E5%8F%91%E7%9A%84%E6%80%9D%E8%80%83/

引言每次出现奇怪的问题,怎么都查不出来的时候,初步看代码也没什么问题,我大概率怀疑是并发导致的。在某一步因为并发导致数据缺失或者被覆盖。在开发中比较常见的就是资源的查询和更新。如果查询和更新接口并发访问,那么在执行的时候就会有2种可能性。查询在更新前,那么返回给客户端的是旧的数据,服务器后续更新接口返回成功,客户端用哪个就不好说了。查询在更新后,这个是符合预期的结果。如果是2个更新相关的接口同时并

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.