Android Studio 3.6.2编译报错“GC overhead limit exceeded”

Android Studio 3.6.2 编译报错 “GC overhead limit exceeded”,详细的报错信息如下:

这个问题是由于编译过程中的Java的内存开销太大超过了默认限制导致的,解决方法就是增大Java的内存限制。

具体操作为在项目的 gradle.properties 中修改内存限制 org.gradle.jvmargs 默认情况下,这个限制在 1536m 我们需要拉大到 4096m

修改后的内容如下:

如果这个文件不存在,则在工程文件 build.gradle ,gradlew , local.properties 等相同的目录下新建 gradle.properties 这个文件即可。

参考链接


macOS Catalina(10.15.4)/IntelliJ IDEA 2018.3/Tomcat 9.0.33/Maven项目调试报错"Caused by: java.util.zip.ZipException: zip file is empty"

macOS Catalina(10.15.4)/IntelliJ IDEA 2018.3/Tomcat 9.0.33/Maven项目调试时报错,这个项目以前是可以正常调试的,一段时间之后,就不能正常调试之下了

继续阅读macOS Catalina(10.15.4)/IntelliJ IDEA 2018.3/Tomcat 9.0.33/Maven项目调试报错"Caused by: java.util.zip.ZipException: zip file is empty"

ubuntu 18.04系统/var/log/auth.log文件不存在

通过 /var/log/auth.log 文件可以查看一些关于 ssh 登陆、sudo 命令的信息。尤其是 denyhosts 依赖这个日志拦截非法的登陆攻击。 但是,我最近遇到了一个问题,在阿里云的一些主机上没有这个文件,或者日志文件在自动备份(比如被重命名成 /var/log/auth.log.1 )之后,没有重新生成新的 /var/log/auth.log

检查 /var/log 目录的所有者信息,如下:

这里的所有者权限信息是不正确的,缺少所有者所在组的文件创建权限,导致文件创建出现问题。因此需要如下命令:

接着手工创建日志文件,如下:

参考链接


/var/log/auth.log文件不存在

ubuntu 18.04编译OpenSCAD源代码

ubuntu 18.04编译OpenSCAD源代码,本意想研究一下如何加速 CGAL 的计算过程,目前还没完成。
 
编译过程如下:

继续阅读ubuntu 18.04编译OpenSCAD源代码

匈牙利算法

零、前言

匈牙利算法是一个经典的解决二部图最小权值匹配问题的算法。网上也有不少资料,但是看完之后总觉得有两个核心问题没有解决:算法为什么一定能得到最优匹配?算法复杂度为什么不再是指数级了?

最后读到了python的库函数scipy.optimize.linear_sum_assignment源代码里引用的文章,才算理解算法的实现,再花了一点时间弄清楚了上边两个问题。

继续阅读匈牙利算法

Munkres' Assignment Algorithm

Assignment Problem - Let C be an nxn matrix representing the costs of each of n workers to perform any of n jobs.  The assignment problem is to assign jobs to workers so as to minimize the total cost. Since each worker can perform only one job and each job can be assigned to only one worker the assignments constitute an independent set of the matrix C.

继续阅读Munkres' Assignment Algorithm

求最长公共子序列

求给出的两个序列的最长公共子序列是常见的一个问题。

需要注意的就是 最长公共子串(Longest Common Substring)与 最长公共子序列(Longest Common Subsequence)的区别: 子串要求在原字符串中是连续的,而子序列则只需保持相对顺序,并不要求连续。

解法如下:

参考链接