Sun's Blog

简单就好

常见web服务攻击和防御手段

常见web服务攻击和防御手段 XSS跨站脚本攻击 XSS (Cross-Site Scripting),跨站脚本攻击,因为缩写和 CSS重叠,所以只能叫 XSS。 XSS 的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗 用户信息或其他侵犯用户安全隐私的目的。 反射型XSS...

Go源码阅读-私有库拉取问题

go get拉取私有库报错 http拉取问题(>=1.6) go get github.com/sjatsh/transfo # cd .; git clone -- https://github.com/sjatsh/transfo /Users/jane/go/src/github.com/sjatsh/transfo Cloning into '/Users/jane/go/...

Rabin-Karp在golang中的实现

简介 Rabin-Karp字符串快速查找算法和FNV hash算法是golang中strings包中字符串查所用到的具体算法,算法的核心就在于循环hash,而 FNV则是散列方法的具体算法实现。 算法思想 Rabin-Karp算法思想: 假设待匹配字符串长度M,目标字符串长度N(N>M) 首先计算待匹配字符串hash,计算目标字符串前M个字符hash 比较前两个h...

go平滑重启选型和项目实践

什么是平滑重启 当线上代码需要更新时,我们平时一般的做法需要先关闭服务然后再重启服务. 这时线上可能存在大量正在处理的请求, 这时如果我们直接关闭服务会造成请求全部 中断, 影响用户体验; 在重启重新提供服务之前, 新请求进来也会502. 这时就出现两个需要解决的问题: 老服务正在处理的请求必须处理完才能退出(优雅退出) 新进来的请求需要正常处理,服务不能中断(平滑重启) ...

git workflow

Git与SVN的比较 原理上 Git直接记录文件快照,SVN每次提交记录哪些文件更新更新了哪些行 Git有本地仓库,SVN没有本地仓库 Git大多数是本地操作,SVN大多数操作需要联网 操作上 Git先提交到本地仓库然后推送到远程仓库,SVN直接推送到远程仓库 Git有各种”反悔”指令,SVN没有 Git有真正的branch,而SVN只是工作空间的副本 ...

突破算法之-二分插入排序

二分插入排序原理 二分法是对直接插入的改进,由直接插入排序的循环遍历找出插入点改为二分法找出插入点,时间复杂度O(nlogn)。 二分法插入排序是在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半, 否则对后半进行折半,直到left>right,然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。...

突破算法之-直接插入排序

直接插入排序原理 插入排序与选择排序最大的不同在于维护有序列的方式不同: 选择排序通过从无序列中找出最大或最小值放在有序列尾,直到循环到最后一个元素整个数组有序 插入排序是依次把无序列中元素从有序列尾开始比较插入第一个比它小的或者比它大的元素后面,直到循环到最后一个元素整个序列有序 Golang代码实现 package main import "fmt" /*...

突破算法之-冒泡排序

冒泡排序原理 对数组内所有n个元素依次进行比较和交换位置,较大的元素往上浮较小的元素往下沉,外层进行n-1次循环后数组会从小到大排好序, 时间复杂度O(n^2)。 Golang代码实现 package main import "fmt" /** 1. 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在...

HTTP幂等性

原文 HTTP协议是一种分布式的面向资源的网络应用层协议,Web API如此流行很大程度上应归功于简单有效的HTTP协议。然而,正如简单的Java语言并不意味着高质量的Java程序, 简单的HTTP协议也不意味着高质量的Web API。要想设计出高质量的Web API,还需要深入理解分布式系统及HTTP协议的特性。 http幂等性定义 http1.1规范中幂等性的定义是: ...

Java类加载器

基本概念 最初为了满足Java Applet的需要而被开发出来的,Java Applet 需要从远程下载Java类到浏览器执行,现在Web容器和OSGi中得到了广泛的使用。类加载器负责读取 Java 字节代码,并转换 成 java.lang.Class 类的实例。每个 java.lang.Class 实例用来表示一个Java类,通过 newInstance() 创建该类对象,newInst...


本站总访问量