CreateArtTechnology / Blog

  • 引言在生活和工作中经常会遇到一些需要资源分配的时候,例如
    公司发的礼物不喜欢,想跟其他人换在线扭蛋机的交换系统实现求职offer的选择高考投档系统实现
    其中1、2属于单边匹配,匹配由单边期望决定,即“买方”决定;3、4属于双边匹配问题,匹配过程需考虑“买卖双方”的期望。
    在通常情况下,我们期望获得一个尽可能合理而稳定的分配结果,使得最终整体收益最大化。
    罗伊德-沙普利(Lloyd S. Shapley)与他人提出了一系列市场的稳定配置机制,为博弈论和经济学领域做出了巨大的贡献,最终与艾尔文-罗斯(Alvin E. Roth)一同获得2012年获诺贝尔经济学奖。
    背景之前写过在业务中遇到了判定业务,而该判定业务实际上是一组给定对象与另一组给定对象的匹配问题:
    ......

    共11张


  • 本实践使用了阿里云机器学习平台PAI
    项目背景原本业务内容是比较常见的判定业务,即输入为某个实体有一定误差的测量信息和相关参考信息,输出为其应当归属的实体。套用一个简单场景就是输入一篇未署名文章,根据文风归属到库中已存在的作者名下,抑或是归属到一个新建的匿名作者名下。
    问题的难点在于:
    分类实体数量较多,在百万量级分类数量不确定,且在动态变化,即有新增和过期测量存在误差场景较多
    评价标准:
    归属要准确(作者名下文章不要错)少遗漏(文章能尽量找到作者)避免错误创建(同一作者不要创建多个实体)
    ......

    共8张

  • Java juc笔记 [2] - locks包接口部分
     5     2020-09-28 19:59:05

    Locks包简介java.util.concurrent包下的locks包提供了一系列同步工具,其功能在大体上跟synchronized差不多,但量级更轻更灵活,也更复杂。juc包下的多种用于同步的工具包括CyclicBarrier、LinkedBlockingQueue等都依赖这些同步工具。
    本次先研读Lock相关的接口及LockSupport类源码以了解常见的使用方式及需要注意的点。
    介绍Lock接口给特定资源加锁,即同时只有一个线程能访问该资源,其他资源要么等待获取锁后访问资源,要么放弃访问资源(具有排他性)。语义同Synchronized但在使用上更为灵活,且需要手动释放锁。
    在注释中提到的典型应用场景是:
    获取A的锁->获取B的锁->释放A的锁->获取C的锁->释放B的锁->获取D的锁……
    很明显,这种方式一旦使用不当非常容易产生死锁,这就是灵活带来的代价。
    ......

  • Java juc笔记 [1] - atomic包
     3     2020-08-03 21:50:36

    Atomic包简介及分类java.util.concurrent(一般简称juc)包下的atomic包提供了一系列在并发场景下尽量无锁实现原子操作的类,其核心思想是使用CAS+循环实现轻量级乐观锁,在并发竞争不激烈的情况下效率会比加锁实现好很多。除Striped64由JCP JSR-166 Expert Group成员协助完成外,作者都是Doug Lea大师。虽然juc包整体代码量不大但每次看都有新的思考和收获。
    原子包装类:
    AtomicBooleanAtomicIntegerAtomicLongAtomicReferenceAtomicIntegerArrayAtomicLongArrayAtomicReferenceArrayAtomicStampedReferenceAtomicMarkableReference
    属性更新类:
    AtomicIntegerFieldUpdaterAtomicLongFieldUpdaterAtomicReferenceFieldUpdater
    高并发计算类:
    ......

  • Java SPI机制的理解与应用
     7     2020-06-04 15:32:56

    背景一位前辈在一次技术分享中指出我们目前的包管理不规范,模块间职责有重叠,理解成本高不易维护,提出在开发过程中应当明确按照职责将服务划分到对应的模块中。
    比如我们把所有服务都放在service层,但其实服务也是分为基础服务和业务逻辑服务的,或许把类似业务数据查询组装服务放在service层,把具体业务逻辑服务统一放在business层会更好,更利于基础服务的复用。
    但当服务拆离到不同模块进行复用时,可能在开发过程中出现服务依赖的问题,这部分依赖问题的解耦可以用到Java的SPI机制。显然,我从来没有听说过SPI是什么,也不明白这有什么好处。
    SPI是什么翻遍各种网上资料,来来回回都是车轱辘话,互相抄来抄去讲得并不通俗易懂,这里就用我自己的理解来解释。
    SPI(Service Provider Interface),大意是“服务提供者接口”,是指在服务使用方角度提出的“接口要求”,是对“服务提供方”提出的约定,简单说就是:“我需要这样的服务,现在你们来满足”。
    API(Application Programming Interface)与之相对,是站在服务提供方角度提供的无需了解底层细节的操作入口,即“我有这样的服务可以给你使用”。
    ......