Google - OR-Tools 使用指南

img

一. 前言

OR-Tools | Google for Developers

Route. Schedule. Plan. Assign. Pack. Solve.

OR-Tools is fast and portable software for combinatorial optimization.

img

About OR-Tools

OR-Tools is an open source software suite for optimization, tuned for tackling the world's toughest problems in vehicle routing, flows, integer and linear programming, and constraint programming.

After modeling your problem in the programming language of your choice, you can use any of a half dozen solvers to solve it: commercial solvers such as Gurobi or CPLEX, or open-source solvers such as SCIP, GLPK, or Google's GLOP and award-winning CP-SAT.

OR-Tools includes solvers for:

A set of techniques for finding feasible solutions to a problem expressed as constraints (e.g., a room can't be used for two events simultaneously, or the distance to the crops must be less than the length of the hose, or no more than five TV shows can be recorded at once).

The Glop linear optimizer finds the optimal value of a linear objective function, given a set of linear inequalities as constraints (e.g., assigning people to jobs, or finding the best allocation of a set of resources while minimizing cost). Glop and the mixed-integer programming software SCIP are also available via the Google Apps Script Optimization Service.

A specialized library for identifying best vehicle routes given constraints.

Code for finding shortest paths in graphs, min-cost flows, max flows, and linear sum assignm

  • 开源(免费), Apache-2.0 license
  • 易用
  • 集成多种求解器(支持调用第三方开源以及商用求解器, 商用求解器需要持有许可)
  • Google出品(大厂背书, 品质保证?)
阅读全文 »

JavaScript进阶指南

一. 前言

img

[图: Copyright reserved by Mozilla]

JavaScript 的核心语言是 ECMAScript, 是一门由 ECMA TC39 委员会标准化的编程语言. " ECMAScript " 是语言标准的术语, 但" ECMAScript " 和" JavaScript " 是可以互换使用的.

个人相对青睐于JavaScript的语法结构和代码风格, 相对于Python.

阅读全文 »

MySQL使用指南

'''
    @author: HLA
    @github: https://github.com/Kyouichirou
    @version: 1.0
    @description: mysql基础与进阶; 基础, 查询, 配置, 管理.
    @license: MIT

    -- make thing better and simpler.
'''

一. 前言

MySQL更新到8.0之后, 很多内容发生较大的变化, 而搜索引擎/书籍查询到的大量信息还是基于5.x, 例如查询缓存这个机制在8.0就发生大的变化, 对于一些相对晦涩难懂的部分, 如日志, 锁, 事务, mvcc等更应注意, 这部分内容可查询到的信息相当混乱(陈旧, 错误), 大量混杂着各个时期MySQL的一些特性在其中, 遇到难以理解的部分应多查阅官方文档.

阅读全文 »

MySQL窗口函数(Window Function)详解

一. 前言

ppnYa7R.png

窗口函数(window function), 也称作OLAP, Online Analytical Processing,实时分析处理.

They can help boost query performance as an alternative to achieving the same result using more complex non-OLAP SQL code.

简而言之, 窗口函数大大强化了MySQL在数据分析上的能力, 通过窗口函数可以以相对简单的方式实现较为复杂的常态化数据输出, 例如经典的多层级汇总, topN问题, 多个区间之间得运算等.

以下内容, 先以简单的例子展示窗口函数的使用, 后使用相对复杂的内容来对窗口函数进行较深入的应用.

由于是在8.0后才增加的新特性, 搜索引擎/相关书籍提供的介绍较为简单和粗略, 相关参考主要以官方文档为主.

阅读全文 »

B站不登陆账号观看1080P(高清视频)的逆向和完美解决方案

convert-360p-to-1080p.webp (700×394) (videoconverterfactory.com)

一. 前言

本文是对Kyouichirou/BiliBili_Optimizer: enjoy and control bilibili (github.com)脚本对于不登陆实现近乎"无缝"观看高清视频和拦截登录窗口的逆向解析逻辑.

是该脚本的技术解析之二, JavaScript进阶-拦截和修改fetch response内容-以B站为例 | Lian.

无意侵犯B站(毕竟这是唯一一家还在做视频的网站, 还活着也不容易)权益, 文本仅作为交流学习使用, 用于展示ES6+之后JavaScript的强大和灵活.

很难相信在这个动辄大数据, 吉比特级别光纤宽带/带宽, 颠倒神鬼的AI..., 各种黑科技秒天秒地的时代, 几十年前的360P视频依然是国内"视频"网站(VIP的层级还是不够多)的主流, 显得颇为复古(虽然什么720P, 1080P, 4K, 蓝光也是严重缩水, 但直接端360P上来....呵呵).

阅读全文 »

一个简单的JavaScript问题 - 剪切板访问

一. 前言

一个看似很简单的问题, 就是访问剪切板.

img

edge浏览器有一项功能就是复制连接粘贴到md文件时会自动复制标题并形成上面的链接形式.

鉴于edge已经臃肿得难以忍受, 大部分时间使用的是百分浏览器 - 追求速度, 简约和安全的网络浏览器, 所以就想写个脚本书签来实现这个功能.

按理说这个功能很简单, 就是复制网页的标题和链接, 然后拼起来复制到剪切板即可, 但最后发现访问剪切板是很麻烦的.

因为之前写过的脚本都是使用tampermonkey提供的GM_setClipboard, 从未注意到原生js api实现复制内容到剪切板所存在的问题.

阅读全文 »

统计 vs 机器学习

Statistics versus machine learning | Nature Methods

一. 前言

img

(图与文无关, 来源马斯克 X, 对 AI/机器学习 过度夸张营销的嘲讽)

文章从生物科研的视角阐述统计学和机器学习的差异和联系.

以下是正文的基本翻译, 仅供参考.

Statistics draws population inferences from a sample, and machine learning finds generalizable predictive patterns.

统计学从样本中得出总体推断, 机器学习发现可泛化的预测模式.

阅读全文 »