Garbage-First(G1)
此前,我们介绍了 Serial GC、Parallel GC 以及 CMS GC,本篇将为你介绍另一种高效 GC —— Garbage-First (G1)。
概述Garbage-First (G1) 是一款面向服务端的垃圾收集器,支持新生代和老年代空间的垃圾收集,主要针对配备多核处理器及大容量内存的机器。在实现高吞吐量的同时,尽可能的满足垃圾收集暂停时间的要求。G1 最主要的设计目标是: 实现可预期及可配置的 STW 停顿时间。G1 为具有以下需求的应用而设计:
能够像 CMS 收集器一样,能与应用程序线程并发运行
不需要较长的 GC 停顿时间来整理内存空间
可预测 GC 的停顿时间
不想要牺牲大量的吞吐性能
不需要更大的 Java 堆内存
诞生背景那为什么要重新设计一个 G1 垃圾收集器呢?设计者们希望做出一款能够建立起 停顿时间模型(Pause Prediction Model)的收集器,来实现实时 Java(RTSJ)中软实时(Soft Real-time)垃圾收集器的特征。停顿时间模型 的意思是能够支持指定在一个长度为 N 毫秒的时间片段内,消耗在垃圾收集上的时间大 ...
输入「神秘代码」解锁「隐藏类目」
翻译: Netflix-Codes
Netflix 使用一个非常奇怪的系统来对电影和电视节目进行分类,网站上并没有分类的导航 tab,不过你可以通过下面的分类 CODE 直达您想看的影片。您只需用 CODE 替换掉下面链接中 xx 即可:
https://netflix.com/browse/genre/xx
前置准备
有一个可以解锁 Netflix 的 VPN,这里推荐 rixcloud(指南)
双币(全币)VISA 信用卡💳
动作和冒险 1365
军事行动和冒险 Military action & adventure 2125
动作喜剧 Action comedies 43040
间谍行动和冒险 Spy action & adventure 10702
犯罪行动和冒险 Crime action & adventure 9584
动作类科幻和奇幻 Action Sci-Fi & fantasy 1568
动作惊悚片 Action thrillers 43048
亚洲动作片 Asian action movies 77232
...
数据移民漂流记 —— 如何进行 iCloud 转区操作
为什么要转区
具体原因大家都心知肚明,在天朝,你懂的,个人数据隐私安全一丁点的保障都没有。通过 iCloud 监控一个人实在太彻底了,你的实时地理位置、你的通讯录联系人、你最新拍的照片、你的备忘录、你的应用程序里记录的数据、你的邮件等等,全都可以实时监控。
自从云上贵州托管 iCloud 之后,就暴露出了 Apple ID 被盗,大量垃圾广告短信等等问题,大家可自行 Google 一下相关新闻。
拿着我们的数据在背后还干了哪些不为人知的事情,可能要过很多年之后才能揭晓。
前置准备
美区 AppleID
美区 PayPal (非必须,可以购买 iTunes Gift Card 代替充值,⚠️不是 Apple Store Gift Card )
美区 VPN ,开启全局代理。
美区 AppleID 的 iCloud 存储空间升级为 50GB($0.99/month)。支付方式可以用美区 PayPal 或 Gift Card,看你哪个方便。(美区 PayPal 风控较严,账户被限制的几率很大,建议使用 Gift Card 来充值。)
注意:不建议直接更换国区 Apple ID 的 ...
数据移民漂流记 —— 如何拥有属于自己的美国电话号码
获得一个长期可用、完全属于自己的美区手机号十分有必要。注册美区 PayPal , 注册美区 AppleId , 注册 Google 账号等互联网服务,需要提升账户安全性(账户异常需绑定手机号增加安全性),两步验证也需要手机号。提供美国虚拟号码的服务有很多,但是稳定且方便实惠的只有 Google Voice 一个。本文介绍 Google Voice 的获取,绑定,充值,保留等方案。
前置条件
Google 账号
真实的美国环境,电脑 IP 地址、时区设置、系统语言等,可以使用 https://whoer.net/ 来检测电脑环境,达到 100%。
可以代理到美国的 VPN( 指南 ),在注册 Google Voice 时,请保证 VPN 为全局代理模式。
Google Voice 简介Google Voice 即谷歌之音,是由 Google 推出的一种电话服务,能够将个人所用的众多电话号码集中成一个美国号码,同时谷歌提供许多增值服务。
Google Voice 的服务就是以一个谷歌提供给你的免费美国电话号码,或是自己付费指定的号码,来整合你生活当中所有会接触到的电话,如家 ...
数据移民漂流记 —— 如何注册美区 PayPal 并绑定美区 Apple ID
转载:http://jolson.xyz/2018/11/22/reg-us-pp/
前言本教程仅为对之前 注册美区 Apple ID 教程 的延伸,是为了告诉大家如何正确的将美区 Apple ID 绑定美区 PayPal 付款方式并成功使用,以减少 PayPal 对账户的风控(并不能 100% 保证一定会没有风控或者解除风控),让大家在美区畅通无阻的进行付款。(如果是绑定港区或者日区的 Apple ID 的付款方式,请参考教程:如何注册并使用美区 Apple ID 的前言部分,里面有简单的说明介绍)
在注册之前,要做好所有的准备工作:
准备好一个 Google Voice 美国虚拟号码 ,以及一个美国免税州地址(美国地址可在 这个网站 直接生成,如果有问题请自行谷歌)。
打开美国全局代理模式。(本教程全程为美国全局代理模式)
去 ipip.net 网站查看你的 IP 地址是否为美国。
楼主用的是 Chrome 浏览器,并且清除了 Chrome 浏览器的所有浏览数据和其他不相关的信息(除了保存的密码和信用卡信息)。
请最好按以上顺序进行接下来的步骤,仅仅只是为了防止一些 ...
数据移民漂流记 —— 如何注册并使用美区 Apple ID
转载:http://jolson.xyz/2018/11/15/reg-appleid/
前言因为每个人的使用需求不同,比如 SS、SSR、V2 等都需要相对应的网络代理工具 App。但由于某些特殊原因,中国区 App Store 基本上下架了大部分的网络代理工具 App(例如用的比较多的小火箭 Shadowrocket 和圈 Quantumult 等等)。
因为中国区无法下载到自己所需要使用的 App,则大部分人都需要注册非中国区(如美区、港区等)的应用商店付费进行下载(出于尊重作者的角度出发,请尽量不要使用共享 Apple ID 账号下载软件,正版 App 其实也就几十块钱)。
本文以注册美区 Apple ID 账号为例(其他地区账号同理),但关于美区 Apple ID 账号和绑定 PayPal 自行 Google 搜索相关教程,如需求较大后续我可以再出相关教程。
美区 Apple ID 账户可绑定美区(只能美区,其他地区不行) Paypal 进行付款。
港区 Apple ID 账户可注册 Tap and Go 香港 MS 虚拟预付信用卡并绑定港区 Apple ID 账 ...
数据结构与算法 | 队列的实现及其应用
前面,我们学习了 [栈的实现及应用](https://wangwei.one/posts/java-data-structures-and-algorithms-stack.html) ,本篇我们来学习一下最后一种线性表——队列。
队列是我们日常开发中经常会用到的一种数据结构,我们经常使用队列进行异步处理、系统解耦、数据同步、流量削峰、缓冲、限流等。例如,不是所有的业务都必须实时处理、不是所有的请求都必须实时反馈结果给用户、不是所有的请求都必须 100% 处理成功、不知道谁依赖 “我” 的处理结果、不关心其他系统如何处理后续业务、不需要强一致性,只需保证最终一致性即可、想要保证数据处理的有序性等等,这些问题都考虑使用队列来解决。
队列定义队列与 栈 一样,都是操作受限的线性表数据结构。队列从一端插入数据,然后从另一端取出数据。插入数据的一端称为” 队尾 “,取出数据的一端称为” 队头 “,如图所示:
特点
FIFO(First In First Out):先进先出原则
分类与 栈 一样,队列也分为顺序队列与链式队列,分别使用数组与链表来实现。
链式队列链式队列 ...
数据结构与算法 | 回文链表检测
如何判断一个单链表是否为回文链表?
回文链表
LeetCode 234. Palindrome Linked List
例 1:
12Input: 1->2Output: false
例 2:
12Input: 1->2->2->1Output: true
提升:时间复杂度为 O (n),空间复杂度为 O (1).
解法一直接将链表进行 反转 ,然后将新的反转链表与原链表进行比较,这种思路最为简单粗暴。
此种解法的时间复杂度为 O (n),空间复杂度为 O (n).
代码1234567891011121314151617181920212223242526272829303132333435363738/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public bo ...
数据结构与算法 | 如何实现 LRU 缓存淘汰算法
前面,我们学习了 链表 的实现,今天我们来学习链表的一个经典的应用场景 ——LRU 淘汰算法。
缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如常见的 CPU 缓存、数据库缓存、浏览器缓存等等。
缓存的大小有限,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?这就需要缓存淘汰策略来决定。常见的策略有三种:先进先出策略 FIFO(First In,First Out)、最少使用策略 LFU(Least Frequently Used)、最近最少使用策略 LRU(Least Recently Used),本篇将介绍 LRU 策略算法。
LRU Cache这一算法的核心思想是,当缓存数据达到预设的上限后,会优先淘汰掉近期最少使用的缓存对象。
思路LRU 淘汰算法涉及数据的添加与删除,出于性能考虑,采用链表来进行实现,思路如下:
维护一个双向链表用于存放缓存数据,越接近链表尾部的数据表示越少被使用到。
放入一个数据时,如果数据已存在则将其移动到链表头部,并更新 Key 所对应的 Value 值,如果不存在,则:
如果缓存容量已达到最大值,则 ...