El Psy Congroo


  • Home

  • Archives

  • Tags
El Psy Congroo

系统监控实践 - 基于Micrometer & Prometheus & Grafana

Posted on 2020-04-30

系统监控实践 - 基于Micrometer & Prometheus & Grafana

El Psy Congroo

ClassNotFoundException & NoClassDefFoundError

Posted on 2019-12-31

两个异常都和找不到类有关,但引发这两个异常的原因有所不同。

  • ClassNotFoundException是在我们主动使用类名加载类时找不到对应类文件抛出的异常,这是一个Exception,需要我们显式捕获处理。参考ClassNotFoundException的JavaDoc:

    Thrown when an application tries to load in a class through its string name using:

    • The forName method in class Class.
    • The findSystemClass method in class ClassLoader .
    • The loadClass method in class ClassLoader.

    but no definition for the class with the specified name could be found.

    Read more »
El Psy Congroo

正则表达式使用分享

Posted on 2019-07-28

正则表达式使用分享

El Psy Congroo

管理成就生活 读书笔记

Posted on 2019-07-02

概述

本书关注的焦点:管理效能

  • 管理:将资源转化为结果并创造价值
  • 效能Effective:做正确的事
    • vs 效率Efficiency:正确的做事

为什么需要管理

  • 驾驭复杂性
    • 技术变革和社会变迁带来复杂性的爆炸式增长
    • 复杂性科学
      • 系统学、控制论、仿生学
    • 复杂性的两面性,危险与机遇
      Read more »
El Psy Congroo

查看JAVA应用内存占用

Posted on 2019-05-09

物理内存占用

Committed & Reserved & RSS

Committed

Address ranges that have been mapped with something other than PROT_NONE. They may or may not be backed by physical or swap due to lazy allocation and paging.
已分配的内存,但不一定占用物理内存或swap

Reserved

The total address range that has been pre-mapped via mmap for a particular memory pool.
和Committed的区别在于Reserved包含PROT_NONE(一定不占用物理内存)的映射

RSS

Resident set size, the non-swapped physical memory that a task has used (in kiloBytes)
实际占用的物理内存(不包括已Committed但未分配的,以及swap-out的)
参考:RSS != JVM committed

1
2
$ps axo pid,rss | grep 25921 | cut -d' ' -f2
1039472
Read more »
El Psy Congroo

2019新西兰南岛自驾行程分享

Posted on 2019-03-01

行程

行程

行车时间参考

新西兰地广人稀,公路、通讯等基础设施远不如国内便利,务必安排每日行程都能在日落前抵达当日的目的地,确保安全!

紐西蘭南島各主要觀光路段的車程時間及路況-1
紐西蘭南島各主要觀光路段的車程時間及路況-2

Read more »
El Psy Congroo

MySQL锁机制分析

Posted on 2018-10-08

两种读取方式

  • 快照读(snapshot read)

    MVCC实现,无锁,高性能但数据不实时,事务中首次select时确定快照版本

    select ...

  • 当前读(current read)

    加锁实现:next-key

    1
    2
    3
    4
    5
    select ... lock in share mode
    select ... for update
    insert
    update
    delete

锁机制

2PL:Two-Phase Locking

锁操作分为两个阶段:加锁阶段与解锁阶段,并且保证加锁阶段与解锁阶段不相交

锁模式
  • Shared(S) and Exclusive(X) Locks
    • select … lock in share mode / lock table … read 加S锁
    • select … for update / insert update delete / lock table … write 加X锁
  • Intention Locks
    • 表级锁,IS/IX锁表明事务有意图获取表中某一行的S或X锁
    • 规则:事务在获取行锁之前必须获取到相同或更高级别的表级意向锁
    • 用途:加表级锁时无需遍历全表查找是否存在行级锁
    • 意向锁兼容性(用于判断是否允许加锁,以下锁类型均为表级锁)
      Read more »
El Psy Congroo

Code Review 约定

Posted on 2017-06-04
  • 统一的代码格式
    • 使用统一的配置文件,提交前进行格式化(不属于review内容)
  • 编程风格,可读性和可维护性
    • 变量命名是否做到简洁、清晰无歧义(clear,precise)
    • 方法是否进行了合理的抽象,避免为了复用而复用(方法vs代码块)
    • 方法抽象层次是否合理(同级方法都在同一个抽象层次上)
    • 方法是否只做了一件事,是否和命名相符,是否有副作用
    • 是否遵循OOP原则(SOLID),类是否内聚,是否使用了合适的设计模式解耦
    • 是否有其他坏味道(参考重构、Clean Code、编写可读代码的艺术)
      Read more »
El Psy Congroo

单元测试规范

Posted on 2017-06-04

基本原则

  • 测试任何可能失败的事物。测试主执行路径很好,而且很需要做;但测试异常处理可能更重要。
  • 测试先行。在写任何代码之前,必须先写一个失败的测试。
  • 为还没有实现的测试代码抛出一个异常。这就避免了该测试通过,而且会提醒你必须实现其代码。
  • 不应该依赖于任何不可控的外部服务,如xingng,使用mock替代
  • 不应该依赖于外部的数据(即不要依赖数据库中现有数据等,以保证数据库变更等不会影响到测试结果),可以在单元测试中自己准备数据
    • 例如班车刷卡:依赖于班车数据,junit中输入某个班车卡号,单数据库中不存在,导致系统报错
    • 这里表现出两点问题:
      • 程序不完善,卡号不存在报null point
      • 依赖于外部已存在的数据,预期数据不存在导致测试失败
        Read more »
El Psy Congroo

捷克无人机法规

Posted on 2017-04-26

概述

  • 非商业飞行不需要许可
  • 无人机重量应小于20kg,其中0.91kg以上需要有failsafe机制(例如失控返航)
  • 最高飞行高度100m(也有说300m的,安全起见取最低的说法)
  • 无人机需要时刻保持在视野内,不允许超视距/仅依赖GPS飞行,玩FPV需要另一个人帮助观察
  • 与云层保持300m垂直,1500m水平距离
  • 机场5500m范围内禁飞,其他禁飞区见AisView
    Read more »
12…4
Allen Xu

Allen Xu

33 posts
18 tags
GitHub Twitter
Friends
  • Lanourain's blog
  • Day Day Up
  • Jiahui's Blog
© 2021 Allen Xu
Powered by Hexo
Theme - NexT.Pisces