自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ustczyb的专栏

学习过程中的总结与思考,拒绝无脑转载

  • 博客(27)
  • 收藏
  • 关注

原创 浅谈限流策略

1.背景最近负责了两个接口层的项目,一个对接的是公司内部的爬虫,另一个对接的是公司外部的中航信。虽然接口层不涉及过多的业务,但是想把接口层做好也并不是那么容易的。遇到的一个很大的问题就是限流。数据组的同事经常反馈说我们的调用量在某一时间内过于频繁,导致抓取服务压力过大,而且频繁的请求有IP被封的危险。因此限流对那些下游是抓取的(或者下游有限流策略的)服务来说十分重要。在谈限流策略前,我们首...

2018-03-19 23:00:04 1574

原创 浅谈一致性hash算法

1.背景售后系统中的执行情况是通过crane使某一台机器从数据库里获取所有待处理数据,然后进行处理。这样其实在修改代码后无法实现真正意义上的灰度部署。因此我们希望对这些待处理的数据做负载均衡,让每台机器都能处理一部分数据,从而起到灰度部署的效果。 实现负载均衡有一个很常见的算法,就是所谓的一致性hash算法。简单学习了下并且给出了算法的简单实现。2.算法介绍2.1 普通has...

2018-03-19 22:41:26 228

原创 HttpClient学习——2.连接管理

2.1 连接管理器HttpClientConnectionManager首先介绍路由(HttpRoute)的概念,我们可以理解成一条连接的路线。如果多个线程访问的是同一个IP+端口,我们就认为他们实际上使用的是同一个HttpRoute。 HTTP连接不是一个线程安全的对象,因此一个HTTP连接一次只能由一个线程使用。HttpClient使用HttpClientConnectionManage...

2018-03-06 10:26:01 1936

原创 HttpClient学习——1.基本操作

所有的Demo都在https://httpbin.org/上测试,这真是个了解Http协议的好网站,推荐一下。1.1 Http请求1.1.1 请求添加参数get请求/** * httpClient执行get请求 */@Testpublic void getMethodDemo() throws IOException, URISyntaxException {...

2018-03-06 10:21:47 638

原创 HttpClient学习——0.简介

1.0 一个简单的Demo程序下面是一个HttpClient通过Get方法访问www.baidu.com的请求Demo。我们将根据这个Demo介绍HttpClient的一些基本使用。public class HttpClientDemo { CloseableHttpClient httpClient; @Before public void init() {...

2018-03-06 10:15:41 227

原创 Linux学习(一)基本操作

Linux学习(一)基本的文件操作0.linux路径分隔符为”/”,windows路径分隔符为”\”1.cd pwdcd命令用于切换当前目录,指令格式为在cd后添加绝对路径或者相对路径 ~ cd IdeaProjects IdeaProjects常见目录:. 当前目录.. 上一级目录~ 家目录/ 根目录pwd命令 显示当前目录的路径 IdeaProjects pwd /Us

2017-01-25 11:59:30 227

原创 浅谈面向对象

这两天看了一些设计模式的东西,感觉自己对面向对象有了更深的认识。当然距离理解面向对象肯定还是有很长的距离。现在先写目前对于面向对象的认识,以后应该还会有补充。水平有限,如果有说的不对的地方还请指正。1.面向对象的特性哪个最重要?我还记得前一阵子面试的时候,有个面试官问“你认为面向对象的三个特性(封装、继承、多态)中哪个最重要?”当时我的答案是继承,解释是可以增加代码复用性(现在看来当时对面向对象真的

2016-11-27 16:00:25 376

原创 Java总结(二)——初始化与访问权限

一、初始化1.类的初始化顺序先看例子,后面说明结论:class Window{ public Window(int marker){ System.out.println("Window " + marker); }}class House{ Window w1 = new Window(1); public House(){ System.out.println(

2016-11-22 19:23:36 321

原创 数据结构与算法(一)——红黑树

这两天内心有点不平静,不是很想学新东西。准备写一个算法和数据结构的系列做个总结。 内容主要来自《算法导论》和Robert Sedgewick的《算法》(强烈推荐这本书)下面我们讨论红黑树,这里我们假定大家已经学习和掌握了二叉查找树和2-3树。大家知道二叉查找树的查找性能是不稳定的,如果一颗二叉查找树只有左子树或者右子树,那它实际上就成为了一个排序链表,查找复杂度为O(n)(即遍历单链表)。

2016-10-28 12:33:45 522

原创 HTTP协议

前一阵子参加许多面试都闻到了HTTP协议,不论是后台还是Android。现在做一个简单的总结,就当是复习。HTTP报文格式这是我用chrome的检查功能(ctrl+shift+i)随意截取了一个请求信息。我们首先来看请求头的信息:最重要的是第一行,内容有3个:请求方式(以get和post为主),URI,HTTP版本号。之后是多个键值对,用来记录其他信息,例如主机地址

2016-10-24 16:09:56 310

原创 Linux学习(二)文件权限和操作

看鸟哥私房菜写的一些总结,就当是复习了。一、文件权限与更改1.文件权限指令:ls执行ls -l指令后,会列出文件信息(包含文件夹的相关信息)。最左一列即为文件的权限,第一个字母表示文件类型,常用的d表示目录,-即为狭义上的文件,l为连接档(类似Windows的快捷方式)。以drwxrwxr-x为例,除去第一个字母d外,每三个字母为一组,分别表示所有者,群组,

2016-10-06 20:30:29 269

原创 计算机网络学习(四)——链路层

链路层的主题部分在主机的网络适配器中实现。提供的服务有:成帧(把网络层数据封装成链路层)、链路接入、可靠交付和差错检测。1.差错检测奇偶校验一维奇偶校验在d个数据比特后附加一个校验位使得这d+1个比特中1的个数为偶数。二维奇偶校验把这d个数据分为i行j列,对每行每列都生成一个校验位,这样不但能够锁定差错位置,还能够纠错(其实两者相同的)。检验和方法把d个比特作为一个k比特整

2016-09-23 11:36:41 353

原创 计算机网络学习——网络安全

我们在使用网络时(尤其是做一些隐私的事情,比方账号密码等),希望计算机网络有对应的机制能够保证:1.机密性。即一旦通信双方的报文被窃听者截获,窃听者无法理解截获的报文。2.报文完整性。即防止有恶意篡改我们的数据。3.端点识别。A和B通信是需要明确在电脑前的是A和B,而不是其他人。4.运行安全。这里主要是服务器如何应对攻击。下面我们分别对以上几个方面进行较为深入的了解。1.机

2016-09-23 11:36:18 531

原创 head first设计模式(一)——策略模式

最近在看《head first设计模式》这本书,很有趣。这系列文章算是我对书中一些内容的总结吧!问题:写一个鸭子类描述各种鸭子的行为和特征,包含许多种鸭子,红头鸭,绿头鸭,橡皮鸭等等。有的鸭子会飞,有的鸭子会叫。当然,橡皮鸭是不会飞的。我们不但要正确的实现每一个类,还要代码的结构最优,即如果更改了一个方法,不会在每一个子类中去修改这个方法。方案一:继承有一些特征是各个鸭子子类所共有的,

2016-01-26 11:56:33 552

转载 在基于tomcat的web project中加载dll文件的方法(来源于实际项目经验)

文章来源:http://www.cnblogs.com/zfc2201/archive/2011/09/02/2163268.html最近在写web实验时,搜索的程序在eclipse控制台能跑可是部署到tomccat服务器就不能跑了。原因是dll文件初始化失败,我想应该是tomcat服务器没有找到dll文件的位置,可是我也不知道把dll文件放在哪里。于是这篇文章帮了我大忙!如果是j

2016-01-13 09:11:33 3654

原创 计算机网络学习(三)——网络层

下面我们来研究网络层,即从数据是怎样在两台主机之间传输的。1.路由器的工作原理路由器的主要功能是转发从链路层传输过来的数据。它由输入端口、交换结构、输出端口和路由选择处理器组成。路由选择处理器可以认为是软件层面的东西,它决定将传输进来的数据报发送到哪一个端口。2.IP数据报分片很不幸的一点是,不同的链路层协议的所允许的最大数据承载量(MTU)是不同的。这将带来一个棘手的问题,那就是

2016-01-03 11:07:27 322

原创 计算机网络学习(二)——传输层

1.多路复用与多路分解当我们使用网络时,每一时刻会接受各种数据。比方说你用浏览器打开了网页,还在聊QQ,还在下载东西。那么我打开网页所传输的数据是怎么交付给浏览器的而不是QQ呢?即我从网络受到的元数据是如何交付给对应的进程的呢?接触过网络编程的人知道网络应用的数据传输和接受都是经过套接字Socket完成的,发送端套接字要标注上发送的端口(从哪个端口发送)以及目的端口(接收方的端口),而

2015-12-30 15:46:55 591

原创 my first app——用lucene搭建简单的搜索引擎

这次的web实验应该是我第一次接触到的能够称得上是项目的东西,在此写一些具体的步骤和一些收获。将待搜索的文件转化为lucene中的Document类public static Document file2Document(String path) throws IOException { // 将File转换为lucene识别的document对象 File file = new Fi

2015-11-30 20:52:26 1027

原创 最近学习的一点思考

我发现,我现在所学的东西分三类:准备考试时看的,我称之为刷题。其实为了准备考试这是最好的方式,而且真正在做题的时候其实并不枯燥反而觉得挺有成就感(两本习题集,一本看一本做)。可是它的作用也就仅限于准备考试,考完试之后所做的这些工作全都失去了意义。对于我这种毕业后准备直接去工作的人来说,没什么卵用。前两天新接触的,我称之为技术。学校并不开设相关的课程,主要是自学,例如Android,html

2015-11-18 21:03:36 355

原创 java参数的传递方式

最近在重新学习数据结构,今天在用java实现二叉排序树的查找方法时,发现了问题(其实之前就遇到过,只不过当时没当回事)。 public boolean search(BSTNode r, T element, BSTNode rem){ //rem存储距离元素最近的节点,如果查找成功就是该节点 if(r == null) return false; else if(r.isLea

2015-10-13 15:08:20 355

原创 leetcode 题解 Count Primes

题目描述:Count the number of prime numbers less than a non-negative number, n.我的反应就是写一个判别素数的方法,然后从1开始遍历并判断,代码如下(知道效率会很低但是没想到其他方法):public static int countPrimes(int n) { if(n < 3)

2015-09-29 21:31:53 348

原创 Java总结(一)

开始看《java编程思想》,今天看了前三章,简单的做下总结。一、java与C++中对象的不同由于C++的效率较高,为此程序员需要在编程时确定对象的存储空间和生命周期(手动分配空间以及释放空间)。所以C++中对象存储在堆栈或静态存储区中。而java中对象的引用在堆栈中,对象实际存储在堆空间中。这样可以在程序运行时自动创建对象以及自动回收,代价是在堆中分配空间远远大于在栈中分配空间的时间。

2015-09-15 19:23:42 399

原创 关于学校开设的计算机专业课的一点想法

这学期学校开设了《计算机网络》这门课。其实一般情况下我上课都不听的,学期开始本着能听就好好听的想法来上了两节课。仔细观察后发现老师在照着课本和配套的讲义在念,绝对是念仅仅念一遍是不够的,要念一遍,重复一遍,然后换个句式再说两边(例如把字句和被字句等)关键的概念没有解释,仅仅是重复书上的原话。如果书上有例子的话就重复书上的例子。由此得出结论:我真的努力在听在跟老师的节奏了,可是真的TM做不到啊。

2015-09-14 09:08:46 697

原创 java学习之集合框架总结

最近学习了java的集合框架,结合着数据结构在看。内容不少看过几遍又都忘了,因此写下以梳理。1.collection(集合)对collection进行遍历时,有迭代器接口Interator。实现了Interator接口的类可以使用foreach循环。(1)List(与set相对,允许重复元素)list有更加强大的迭代器ListInterator可以对元素进行增删改查。

2015-09-07 17:12:23 367

原创 Java中泛型数组的实现

Java中不支持泛型数组,今天看《算法》时看到了一个不错的使用泛型数组的方式。Item[] a = (Item[]) new Object[SIZE];即先创建Object型数组之后强制类型转换为Item型。事实上如果Java不支持泛型也可用这种强制类型转换Object的做法达到相同的效果,最大的区别就是这种做法一旦出错错误会出现在运行时,而泛型机制将错误提前到了编译时。

2015-08-30 19:54:56 476

原创 操作系统学习(一) 进程

一、进程概念进程是执行中的程序。它包含:1、文本段(代码)2、堆栈段(临时数据,例如函数参数,返回地址和局部变量)3、数据段(全局变量等)4、堆(进程运行期间动态分配的内存,例如malloc())二、进程状态三、进程操作1、进程创建大多数操作系统通过进程标识符来识别进程(pid)Unix中,系统调用fork()来创建进程。这个系统调用会复制原来的地址空间(父

2015-05-21 20:57:31 470

原创 C语言排列组合的实现

#include#define N 5int a[N]={1,2,3,4,5},b[N],ver[N]={0},count=0;/*void p(int m,int k)    //选取m个排列,开始选第k个 {    int i;    if(k==m)     {        for(i=0;i          printf("%d",b[i]);

2014-09-25 20:38:24 1146

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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