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后才增加的新特性, 搜索引擎/相关书籍提供的介绍较为简单和粗略, 相关参考主要以官方文档为主.

阅读全文 »

编程新手知识集1-递归

一. 前言

递归, 通常可以被视为编程新手遇到的第一道坎.

递归算法( recursive algorithm [4], recursion algorithm [5]) 在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法. 递归式方法可以被用于解决很多的计算机科学问题, 因此它是计算机科学中十分重要的一个概念. 绝大多数编程语言支持函数的自调用, 在这些语言中函数可以通过调用自身来进行递归. 计算理论可以证明递归的作用可以完全取代循环, 因此在很多函数编程语言( 如Scheme) 中习惯用递归来实现循环.

递归算法_百度百科

递归应用的最典型例子: 汉诺塔游戏

阅读全文 »

IndexedDB使用摘要

一. 前言

JavaScript进阶指南 | Lian中简单使用了一下indexeddb, 这里重新记录一下使用中的一些细节.

相关内容参考:

IndexedDB - Web API | MDN

浏览器模型 - IndexedDB API - < 阮一峰 JavaScript 教程> - 书栈网 - BookStack

如何把indexedDB简单封装成"localStorage"本文把indexedDB简单封装成"localStorag - 掘金

如何优雅的封装indexedDB如何优雅的封装indexedDB? 调用方如何安全放心的操作indexedDB数据库? 如何 - 掘金

总体而言, indexeddb的使用不是很麻烦, 就是所有的操作都是异步和常用的MySQL等数据库在使用上比较反习惯.

由于上面的几个参考将大部分内容讲解很详细, 下面将主要集中在一些细节的使用上.

阅读全文 »

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上来....呵呵).

阅读全文 »