chunyuan314的博客

天地有正气

Java中如何优雅地调用多个方法

问题背景 有某个颇为复杂的功能,功能拆分时把该功能拆分成了数十个步骤,每个步骤用一个方法来实现。需要依次调用数十个方法/函数,这些方法有相同的签名。 为了后期的维护和扩展,显然不可能像这样去调用: step1(); // 第一步 step2(); // 第二步 ... stepn(); /...

2019-02-24 15:12:21

阅读数 110

评论数 0

用nginx实现不同Cookie的适配

用nginx实现不同Cookie的适配 1. 背景 用Java语言开发的Web应用,其Cookie名称一般是JSESSIONID。 用PHP语言开发的Web应用,其Cookie名称一般是PHPSESSID,当然,这个可以改。 因特殊原因,需要由Java的Cookie转PHP的Cooki...

2018-08-21 16:35:01

阅读数 2040

评论数 2

PHP用inotify扩展监控文件

PHP用inotify扩展监控文件 可以用inotify扩展提供的功能来监控文件/目录,实现某些特殊的功能:如热编译,安全预警。 早期phpStudy有提供防挂马功能,就是用了与inotifyf类似的机制。 inotify扩展提供了一系列inotify函数:inotify_init() in...

2018-08-16 22:44:35

阅读数 999

评论数 0

用Yar扩展实现RPC

用Yar扩展实现RPC RPC (Remote Procedure Call),远程过程调用。是一种进程间通信技术,允许程序像调用本地方法一样调用远程服务。 RPC屏蔽了数据打包、网络通信的细节,使得使用者只需要关注于服务调用,而服务调用又像调用本地方法一样自然。 PHP有个Yar扩展,提供...

2018-08-16 18:05:20

阅读数 819

评论数 0

nginx的headers_more模块的使用

nginx的headers_more模块的使用 nginx的headers_more模块用于 添加、修改或清除 请求/响应头,该模块不是nginx自带的,默认不包含该模块,需要另外安装。幸运的是openresty默认包含了该模块,可以直接使用。 该模块主要有4个指令 more_set_he...

2018-08-16 10:43:59

阅读数 2095

评论数 0

GPG入门笔记

GPG入门笔记 0. 简介 GPG 是 GNU Privacy Guard的简写,是GNU对PGP技术的实现。PGP是Pretty Good Privacy的简写,是一套用于加密的软件。 PGP加密过程如下(来自维基百科 PGP): 1. GPG 的安装 1.1 linux命...

2018-08-15 18:44:14

阅读数 1268

评论数 0

一个Go闭包引发的血案

一个Go闭包引发的血案 今天群里有人问了个问题,说是以下代码会输出什么: func main() { functions := make([]func(), 3) for i:=0; i<3; i++ { functions[i] = func()...

2018-07-27 21:02:32

阅读数 118

评论数 0

Javascript对HTML表格排序-很实用

Javascript对HTML表格排序-很烂但实用 Javascript实现HTML表格排序,点击表头的标题单元格,即可对该列排序,升序降序切换,数字、文本都可以排序。 先看下面的效果图: 该功能已经封装成了一个Javascript函数,要实现表格排序的功能非常简单,只需: 引入包含...

2018-07-25 22:11:41

阅读数 3404

评论数 25

Javascript动态创建SVG圆弧

Javascript动态创建SVG圆弧 1. 问题描述 先看个草图,如下: 其中,点AAA是圆弧的起点,点OOO是圆心,点B是圆弧的终点,θθ \theta 是OBOBOB与OAOAOA的夹角,即 ∠BOA∠BOA \angle{BOA} 。YYY轴的箭头是朝下的,因为SVG使用的是屏...

2018-07-24 20:57:23

阅读数 2319

评论数 0

varnish学习笔记-后端服务器

varnish学习笔记-后端服务器 大部分情况下,varnish发给客户端的数据都不是自己产生的,而是从后端服务器获取的(如果发的是缓存的内容,其起源也是后端服务器),它充当的是反向代理和缓存的角色。 所以需要给varnish定义一个/多个后端服务器,告诉它应该从哪里获取数据,可以选择性的让它...

2018-07-24 09:16:10

阅读数 227

评论数 0

varnish学习笔记-清除缓存

varnish学习笔记-清除缓存 1. 概述,purge 当varnish缓存的后端文件有更新时,需要让varnish清除缓存,有三种方法: return (purge) —— 使流程进入vcl_purge 子程序,取出相应缓存的对象内容然后清除之; ban(String) —— 不从缓存...

2018-07-22 23:13:42

阅读数 382

评论数 0

varnish原理

varnish原理 varnish原理讲得非常详细的文章:varnish-原理 http://blog.51cto.com/11637223/1910092

2018-07-18 11:26:24

阅读数 139

评论数 0

editormd 支持拖放上传图片和视频

editormd 支持拖放上传图片和视频 在editormd中,有时觉得 点击按钮 => 弹出对话框 => 选择文件这样的上传步骤有些麻烦,要是能支持文件拖放上传,将会是非常不错的用户体验。 实现这个功能,关键点有3个...

2018-07-12 21:12:06

阅读数 600

评论数 2

editormd支持上传视频

editormd支持上传视频 editormd是一款非常不错的Markdown在线编辑器。 最近需要把该编辑器集成到项目中,需要上传图片和视频,editormd自带的image-dialog插件是已经支持上传图片了,但是从官网上没找到视频上传的插件。于是想对image-dialog插件二次开发...

2018-07-12 20:16:08

阅读数 448

评论数 2

GC算法实践(四) 标记-清除算法

GC的标记-清除算法由标记阶段和清除阶段组成,标记阶段是标记出活动对象的阶段,《GC算法实践(二) 对象标记、清除算法》一文中已经实现了对活动对象的标记,该步骤需要从根对象出发,递归标记由根对象可以访问到的所有对象。清除阶段则是将非活动对象(垃圾)回收的阶段,暂且把这些回收后的一个一个的非活动对象...

2017-10-25 08:06:02

阅读数 255

评论数 0

GC算法实践(三) 标记-压缩算法

1.标记-压缩算法简介 标记-压缩算法的基本思路: 标记阶段。该阶段与标记-清除算法中的标记算法一样。 遍历根对象及其引用的对象。假设每个对象都有个标记位flag,对根对象集合中的每个根对象,从根对象出发,对可以访问到的每个对象的标记位flag设为1(活动对象)。 压...

2017-10-13 18:07:21

阅读数 721

评论数 0

GC算法实践(二) 对象标记、复制算法

上一篇文章中,我们实现了自定义分配内存,有了这个基础,我们可以开发垃圾回收算法了。GC算法有很多种,如引用计数法、标记-清除算法、复制算法、分代回收算法等,也有综合运用几种算法的。PHP用到了引用计数算法,Java用到了复制算法和分代回收算法。由于引用计数算法需要频繁更新引用计数,目前暂不研究;标...

2017-10-12 22:32:01

阅读数 605

评论数 0

GC算法实践(一) 内存分配篇

要实现自己的垃圾回收算法,首先要实现一套自己的内存分配方法,把内存的管理权掌握在自己手里,而不是每次都调用系统函数,向操作系统要一小块内存,否则垃圾回收就无从谈起。思路主要是: 一开始申请一块大的内存,后面每次程序需要内存就从这个内存块中分配,不够了再想办法处理(垃圾回收、压缩、分配更大的内存...

2017-10-12 00:13:51

阅读数 314

评论数 0

联通物联网卡ICCID校验位的计算方法探究

SIM卡的ICCID校验位的计算方法,应该不是什么隐私或者机密吧,最近关于这个有点小发现,故写出来与大家分享一下。ICCID简介ICCID (Integerate Circuit Card Identity),集成电路卡识别码,是SIM卡的唯一识别号码。ICCID长为19~20位,其中最后一位是校...

2017-09-28 13:31:46

阅读数 4303

评论数 2

okHttp管理cookie的简单方法

初识okHttp,发现默认不管理cookie,登录成功之后,后端设置了cookie,但是由于okHttp在后面的请求没有携带cookie,导致被后端认为没有登录而不能正常获取数据。百度了一下,发现别人的方法有点复杂。有一个简单粗暴的方法: 通过某种方式获取到后端发送的Cookie的名称和值。 由...

2017-08-24 20:46:11

阅读数 526

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭