Socks5 Proxy & Shadowsocks

Socks5代理协议非常简单,小巧,整个文档很短,应用支持度也非常不错。对于个人开发实现来说是个不错的选择。 ...

May 29, 2018

Socks5协议

...

November 28, 2017

Kotlin协程(翻译-未完成)

引言 Kotlin,作为一个语言,标准库中通过提供最小的底层API来给其他库更好的利用协程。不像其他语言,async 和 await 并不是Kotlin的关键字,甚至都不是标准库的一部分。此外,Kotlin的中断函数(suspending function)概念比 future 和 promise 提供了更安全,更不容易出错的异步操作。 协程基础 第一个协程 fun main(args: Array<String>) { launch(CommonPool) { // create new coroutine in common thread pool delay(1000L) // non-blocking delay for 1 second (default time unit is ms) println("World!") // print after delay } println("Hello,") // main function continues while coroutine is delayed Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive } 运行结果...

September 6, 2017

使用Windows Server作为NAS

使用Windows Server作为NAS 安装系统 制作安装U盘 下载iso文件,如果直接使用UltraISO来制作安装U盘,就会出现刻录的大小小于iso大小。目测是因为刻录出来是fat32,而iso中的install.wim大小已经超过3.5G了。1 另外一种方法,先挂载iso,然后使用管理员启动CMD #进入diskpart diskpart list disk select disk (目标U盘) clean create partition primary select partition 1 (U盘目标分区) active format fs=ntfs quick label=”2016Server” exit #退出diskpart cd iso挂载目录/boot bootsect /nt60 e: #e为U盘盘符 xcopy D:\*.* E:\ /E /H /F #D为iso挂载盘符,E为U盘盘符 安装系统 U盘无法安装,别想了。//也就是上一步没啥意义。 现在使用WinToUSB制作。 如果使用EFI启动,注意ESP分区必须得是FAT32。安装的时候会容易卡住,但是并不会卡死,可以通过资源管理器来查看进程的磁盘写入量。 安装软件 NSSM 管理服务 frp内网穿透 bitvise开启ssh chocolatey安装各类软件 Powershell #Customizing your PowerShell Profile Test-Path $profile New-Item -path $profile -type file –force function UpEnv { foreach($level in "Machine","User") { [Environment]::GetEnvironmentVariables($level)....

June 1, 2017

服务端渲染&JS解析爬虫

本意是用来做服务端渲染的,因为我司前端是使用的React,搜索引擎收录惨不忍睹。本来React有服务端渲染,但是由于前端比较忙,所以这脏活我来做了。(此方案已放弃……) ...

April 7, 2017

阿里云香港B区通过IPV6规避Google验证码

最近买了阿里云香港B来翻墙,然而被Google的验证码折磨的死去活来。四处查询,终于找到了一个合适的方案。 ...

March 7, 2017

Spring Boot配置文件管理

Spring Boot 是我最近最常用的一个框架了,虽然是约定大于配置,但是你还是得配置一些东西,对于测试和生产环境,可以这样配置。 ...

March 7, 2017

快速排序

从大二开始,就没写过任何算法相关的东西了,数据结构也只是知道一个大概而已。最近在看《Thinking in Java》,看到集合一章的时候,书中使用到了快速排序。我一直在自嘲不会手写快排,不会翻转二叉树,今天就顺便看了下快排的思想。 初步 对于一个数组(简化为整数数组): 任选其中一个作为轴点(简化选择最后一个值)。 然后从两端用两个指针(L,R)进行遍历: L指针从左侧开始遍历,如果指向的数值不小于轴点,则停止。 R指针开始从右侧遍历,如果指向的数值不大于轴点,则停止。 交换LR指针所指向的值,LR指针继续移动。 直至LR指针相遇 LR指针指向同一点,交换此值与轴点。此时,此点左侧(L遍历过的)所有的值均小于此点,右侧(R遍历过的)所有的值均大于此点。 把此点左右分别进行递归快排。 实现 private static void quickSort(int[] arrays, int start, int end) { //先判断是否已经不需要排序 if (end > start) { //找到轴点 int pivot = arrays[end]; int l = start; int r = end - 1; while (l < r) { //从左边开始遍历,直到左边某个数不小于轴点 while (arrays[l] < pivot && l < r) { l++; } //从右边开始遍历,直到右边某个数不大于轴点 while (arrays[r] > pivot && r > l) { r--; } //此时l指向的值不小于轴点,r指向的值不大于轴点 swap(arrays, l, r); } swap(arrays, l, end); quickSort(arrays, start, l - 1); quickSort(arrays, l + 1, end); } } 换种方式 再次把思路简化一下:...

January 12, 2016

使用haproxy中转Shadowsocks

相关的教程到处都有,很多壕都在用阿里云做中转,但是成本太高,最近Docker打的火热,很多云服务商都在免费或者暂时免费的提供容器。这个时候用haproxy中转Shadowsocks就相当容易了。 ...

December 28, 2015

Linux 下管理启动项

...

November 10, 2015