Forwarded from dnaugsuz
真阴性…… 我还以为这个裙讨论话题突然变『学术』了呢…… (跑
这里有啥意味呢?是指对象真的可回收?
这里有啥意味呢?是指对象真的可回收?
Forwarded from dnaugsuz
别人说 Python 也是 Rc,然后有个专门的什么内存模块还可以解决循环引用的问题,PHP 上循环引用好像是等满了再扫描的(之前都是 refcount)
Forwarded from dnaugsuz
复制一般要求更大的堆…… 反正我也没写过 GC 就是了。
Ruby MRI 之前是用空闲链表,然后扫描算法比 Lua 简单一点(Lua 是三色实际上四色,Black/Gray/两种 White,White 是垃圾),还不是最开始 Lisp 的那一套,就是 BFS 啦。
后来我听说有什么半空间算法什么伊甸堆…… (弱代假说)
复制主要还是类似磁盘碎片整理一样整齐化内存使用(也可以很好的提升性能和缩减总体内存使用),缺点是比较慢(所以不能用来做终生代和永久代的收集,当然我不知道永久代是怎么回事,成熟代也可以用),实现要更新引用也复杂,据说一些 GC 实现用的是对象 Handle,二重查找,所以不必麻烦地更新每个引用?
如果不能理解内存里放的内容,就无法正常复制移动其中的对象了,就是说以前的 ExactVM,知道哪里是针对要移动对象的引用,可以更新句柄
GC 是很复杂的东西,至少说可调节的参数很多吧…… 何况现在还有什么 C4 什么 G1 的…… 我连 Serial, Parallel, CMS 都搞不懂
这时候我想想,我不就是个应用编程的吗?我想这么多干什么……
Ruby MRI 之前是用空闲链表,然后扫描算法比 Lua 简单一点(Lua 是三色实际上四色,Black/Gray/两种 White,White 是垃圾),还不是最开始 Lisp 的那一套,就是 BFS 啦。
后来我听说有什么半空间算法什么伊甸堆…… (弱代假说)
复制主要还是类似磁盘碎片整理一样整齐化内存使用(也可以很好的提升性能和缩减总体内存使用),缺点是比较慢(所以不能用来做终生代和永久代的收集,当然我不知道永久代是怎么回事,成熟代也可以用),实现要更新引用也复杂,据说一些 GC 实现用的是对象 Handle,二重查找,所以不必麻烦地更新每个引用?
如果不能理解内存里放的内容,就无法正常复制移动其中的对象了,就是说以前的 ExactVM,知道哪里是针对要移动对象的引用,可以更新句柄
GC 是很复杂的东西,至少说可调节的参数很多吧…… 何况现在还有什么 C4 什么 G1 的…… 我连 Serial, Parallel, CMS 都搞不懂
这时候我想想,我不就是个应用编程的吗?我想这么多干什么……
Forwarded from dnaugsuz
我的天啊,这作者也真是牛
我之前一直以为 C++ 程序员什么都强,看啥都比 Java 程序员清楚,没想到居然有人沉迷 C++ 模型居然连当今 Java 的 GC 方案都弄错,难道是真的吗……
我之前一直以为 C++ 程序员什么都强,看啥都比 Java 程序员清楚,没想到居然有人沉迷 C++ 模型居然连当今 Java 的 GC 方案都弄错,难道是真的吗……
Forwarded from dnaugsuz
其实可以写成网格的形式,就会很直白,如果你用
takeUntilElem 和 takeUntilEqual 都可以定义出来一个实现(当然一定要用 DP 的话也不是不可以)Forwarded from dnaugsuz
missing 代表 xs 缺了东西,added 代表 ys 比 xs 多了的东西,填充这个网格,是从上到下从左到右的,不过理论上不应该访问第 n 列第 n-1 行之前的项目
我们知道在处理某一个项目时不可能是不看后继项目的,因为 abc, ac, aebc,他们一个是 delete, 一个是 insert, 可是第二项都不是 b 了,这就是说需要根据任何一个可能的后继项目来判断到底是删还是填,删了多少、填了什么
abcd, 删除 bc 变成 ad,如果我们只在处理 b 的时候看 c,肯定啥都找不到,最终会输出错误的结果,所以是说任何一个可能的后继都要找(最极端的情况是除了末尾的项目全都删了),不过也不一定很麻烦,因为我们可以用后继集合
所以这个算法其实就是一个大生成循环(只要 xs, ys 都还有下一项),然后只要接受到的项目不相同,就去找他们的某个共同后继 c,那 inserted / deleted 就很容易通过这个 c 算出来了
因为这个完全没有必要用 DP 写(它只『需要』填充 m=n 的格子……),所以就说不算是一个 DP 的问题……
我们知道在处理某一个项目时不可能是不看后继项目的,因为 abc, ac, aebc,他们一个是 delete, 一个是 insert, 可是第二项都不是 b 了,这就是说需要根据任何一个可能的后继项目来判断到底是删还是填,删了多少、填了什么
abcd, 删除 bc 变成 ad,如果我们只在处理 b 的时候看 c,肯定啥都找不到,最终会输出错误的结果,所以是说任何一个可能的后继都要找(最极端的情况是除了末尾的项目全都删了),不过也不一定很麻烦,因为我们可以用后继集合
所以这个算法其实就是一个大生成循环(只要 xs, ys 都还有下一项),然后只要接受到的项目不相同,就去找他们的某个共同后继 c,那 inserted / deleted 就很容易通过这个 c 算出来了
因为这个完全没有必要用 DP 写(它只『需要』填充 m=n 的格子……),所以就说不算是一个 DP 的问题……
Forwarded from dnaugsuz
就是那个支持『lookahead 1』的 Feeder 写得很不爽,总感觉是在贴代码
一共 166 行,好像没有 bug,有些逻辑不是很清楚,想必风格在 Java 程序员里还是很奇葩(我写了很多
基本上快用了三个小时……
一共 166 行,好像没有 bug,有些逻辑不是很清楚,想必风格在 Java 程序员里还是很奇葩(我写了很多
interface……)基本上快用了三个小时……
Forwarded from dnaugsuz
>>> Diff.diff(listOf(1,2), listOf(1,3,4))
1 (2) [3,4]
>>> Diff.diff("abc", "ac")
a (b) c
>>> Diff.diff("abc", "acd")
a (b) c [d]
Forwarded from 永久封存 | Yuuta 台 | 😷 #Pray4Wuhan (Yuuta ⠀)
https://t.iss.one/FuckU_GaoShangXuan/1079 儿子 / 生 / 性病母 / 倍感安慰
Telegram
Eric Chen's Public Channel
#今天有什么好笑的
\documentclass[11pt]{article}
\usepackage{amsmath, amssymb}
\usepackage[normalem]{ulem}
% XeTex is utf8 based
%\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[colorlinks]{hyperref}
% Tikz
\usepackage{tikz}
\usepackage{float}
\usepackage{caption}
\usetikzlibrary{shapes.geometric, arrows, positioning}
\tikzstyle{start} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black]
\tikzstyle{process} = [rectangle, minimum width=3cm, minimum height=1cm, text centered, draw=black]
\tikzstyle{arrow} = [thick,->,>=stealth]
% CJK Support
\usepackage{fontspec, xunicode, xltxtra}
% CJK style
\usepackage[top = 1in, bottom = 1in, left = 1.25in, right = 1.25in]{geometry}
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt
\renewcommand{\baselinestretch}{1.25}
\parindent 2em
% Set main font
\newfontfamily\opensans{Open Sans}
\newfontfamily\sourcehanserif{Source Han Serif CN}
\usepackage[CJK]{ucharclasses}
\setTransitionsForCJK{\sourcehanserif}{\opensans}{\opensans}
\setmainfont{Open Sans}
\title{}
\author{}
\date{}
\begin{article}
\maketitle
\end{article}
\usepackage{amsmath, amssymb}
\usepackage[normalem]{ulem}
% XeTex is utf8 based
%\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[colorlinks]{hyperref}
% Tikz
\usepackage{tikz}
\usepackage{float}
\usepackage{caption}
\usetikzlibrary{shapes.geometric, arrows, positioning}
\tikzstyle{start} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black]
\tikzstyle{process} = [rectangle, minimum width=3cm, minimum height=1cm, text centered, draw=black]
\tikzstyle{arrow} = [thick,->,>=stealth]
% CJK Support
\usepackage{fontspec, xunicode, xltxtra}
% CJK style
\usepackage[top = 1in, bottom = 1in, left = 1.25in, right = 1.25in]{geometry}
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt
\renewcommand{\baselinestretch}{1.25}
\parindent 2em
% Set main font
\newfontfamily\opensans{Open Sans}
\newfontfamily\sourcehanserif{Source Han Serif CN}
\usepackage[CJK]{ucharclasses}
\setTransitionsForCJK{\sourcehanserif}{\opensans}{\opensans}
\setmainfont{Open Sans}
\title{}
\author{}
\date{}
\begin{article}
\maketitle
\end{article}