感悟1

想象这样一个场景:

有一些资源要分配,比如ip代理地址。有一些人要用这些ip代理地址。地址被一个人用过之后,不能再分配给别人用。

人可以用这个代理ip地址访问百度或是腾迅,同一个人同一个代理ip只能去一个网站访问一次,但可以访问不同的网站。

当时最直接的思路是

for(int i=0;i<ip.size();i++){
for(int j=0;j<user.size();j++){
for(int k=0;k<task.size();k++){
user.get(j).do(task.get(k),ip.get(i));
}
i++;
}
}

后来需求又加了,ip不定时改变,user不定时改变,task不定时改变。感觉有点招架不住了。

后来换了一种思路。

for(int i=0;i<task.size();i++){
for(int j=0;j<user.size();j++){
ip = list.getIP(user.get(j),user.get(i));
if(ip!=null){
user.get(j).do(task.get(i), ip);
}
}
}

list里面存放ip,并对ip统一管理。getIP()会根据用户和任务的情况,查找有没有适合的ip代理地址。
没找到就返回null

list里面我先用Map<user,ip_list> 不同的人创不同的list,比如如果是张三要ip,就到张三的那个list里面找ip。
当然list里面还有一个叫new_list的变量,里面存放的地址是还没有分配给任何一个人的。

然后有一个set<String>这样的变量来保存标记信息,标记哪些ip做了什么事。

比如 key = user + ip + task;

当然罗,list的设计还有一种思路,就是不要Map<user,ip_list>,

直接是

for(int i=0;i<ip.size();i++){
key1 = ip
if(set.contain(key1)){//被用过了
key2 = ip + user;
if(set.contain(key2)){
//是当前用户使用过的
key3 = ip + user + task;
if(set.contain(key3){
//这个任务做过一次了,不能再做了。
}else{
//这个任务没做过,可以做,返回。
return ip;
}
}else{
//别用用过的,不能用。
}
}else{//没被用

}
}

时间: 2024-10-06 17:38:35

感悟1的相关文章

30年职场生涯的感悟[转]

一个人最终成功与否,在多大程度上成功,也并不是最关键的,关键的是做正确的事情,并且把事情做好的能力. 职业生涯就像一场马拉松比赛 正常人大概要工作35年,这好比是一场马拉松比赛,和真正的马拉松比赛不同的是,这场比赛没有职业选手,每个人都只有一次机会.要知道,有很多人甚至坚持不到终点,只有少数人是跑过终点的,因此在刚开始的时候,去抢领先的位置并没有太大的意义. 职业生涯就像一场体育比赛,有初赛.复赛.决赛.初赛的时候大家都刚刚进社会,大多数都是实力一般的人,这时候努力一点认真一点很快就能让人脱颖而

关于学习的一点感悟

首先声明一下:这里的学习并不特指软件学习,是我工作学习中得到的一些感悟. 人不可能理解他没接触过的事物 学习的时候,如果只是枯燥的文字,复杂的公式的话,一些很好的书籍或者只是便成为了催眠良药.知识如果只是一些天外来客一样的存在,直接空降下来,我们如何去理解他呢?我们只能用现有的只是和经验去类比的学习这些知识,或者在日久天长的接触过程中去渐渐学习知识.很显然,前者比后者来的快的多. 如果一样东西,我无从类比,也不能接触.那么穷我有生之年我也不会理解它. 理论知识如何学习? 理论知识通常都是无数先辈

Graph 感悟

感悟: 遍历图上的点先想到宽度优先搜索, 有很多模板 关于图的: 都是宽度优先遍历, 只是对遍历又稍微加了点条件----用hashMap, [ ] ? [ ] [ ], ArrayList[] ?  来存储对应的条件, 对入队的点判断是否满足该条件,进行存储. 简单图求最短路用宽度优先搜索 关于找所有的情况: 一般用深度优先搜索 有向图: 入度和边, 用什么容器, 怎么生成图, 根据什么入队, 出队后怎么遍历其他的边, 并判断入队 题意的分解:拓扑排序,BFS 5.9: 图.节点 ---.nex

二进制感悟

早在上小学就听闻过二进制的大名,而那时只是老师给介绍了一下,上大学时才真正的开始了解二进制.十进制是我们生活中常用到的,那么二进制就是我们计算机常用到的,学习二进制的时候是第二节课,当时,听老师简单的介绍过了感觉很神奇,我就对二进制产生了很大的兴趣. 在生活中,计算机往往是执行者,而简单命令的下达,才能让你与计算机工作的更有效.二进制就是有着这样一个简便的特点,想象一下,在你面前有一排灯泡,1代表开,0代表关,规则是逢二进一.当一个灯泡闪烁时代表1,累加之后需要进位,那么第一个灯泡的1给了第二个

项目感悟 基于8051的数据采集系统-总纲

博文的内容是感想,是我在做一个小作品的时候记录下来的感想.现在将其整理好,分享出来. 我写博文的纲领是隐恶扬善,所以一些不好的事情,闭口不说.但别人对我的好,要尽力写出来. 虽然我不是大牛,感想有时显得有些幼稚,但是我依然希望你能通过我的感想得到一些启发,少走一些弯路. 博文的宗旨是:隐恶扬善. 作品名称:基于8051的数据采集系统 简介:下位机用 8051新手开发板,传感器采集需要的数据,通过USB通信接口发送给上位机,上位机的系统是win 7,用C#的Winform写的串口调试程序接收数据.

【生活感悟系列】感悟在一瞬间(不断完善中)

将日常生活的感悟,总结出来,不断借鉴和感悟. 1. 2016.08.26 周五 1)罗振宇的<成大事者,不纠结>,如沐春风 张廷玉 -- 善始善终,不有妄念. 曾国藩-- 成大事者,不纠结.专注当下,不纠结.

学习感悟2

开学第二天,继学习感悟1开始写学习感悟2 1.今天主要学习了面向对象的编程,Ecmascript主要包括两种属性,1是数据属性,2是访问器属性,其中数据属性有4个描述其行为的特性(configurable.enumerable.writable.value)访问器属性同样也包括4个属性(configurable.enumerable.get.set) 2.面型对象有很多设计模式 (1)工厂模式 function creatPerson(name,age,job){ var o = new Obj

校招季的感悟

作为一名一个普通一本院校,软件工程的大四老学姐,一来技术一般,二来项目经验少,在这个如火如荼进行的校招季里感悟颇深(泪奔啊~~). 在此有一些总结,算是对新生菜鸟的提醒吧: 对于软件工程来说,数据结构和算法很重要,能参加类似ACM呀.蓝桥杯等程序设计大赛最好参加,参加的话就要长时间去准备(刷题呀),我在大三时参加了蓝桥杯,但是因为准备不充分,,,只拿了个很小的奖. 要有自己的技术博客啦,要有自己的技术博客啦,要有自己的技术博客啦,重要的事说三遍,对于一个到大四才开始写技术博客的也是很无语了. 英

信息安全從業感悟,一週年

如果單從實際工作經驗,到現在實際從業已有一年: 若從相關經驗來看,本科學的信息安全,大二時第一次知道滲透測試,開始參加相關安全競賽,再到大三參加ISCC到大四.到工作,可以說有四年了. 四年的工作經驗,足以成為不管哪個行業的一個小leader了. 反過來說,如果我積累了四年相關經驗,卻還不具備成為一個leader所需的才能,問題出在哪兒呢? 先說如果我可以足夠投入,專心鑽研二進制.逆向.移動安全.Web安全,按一萬小時定律,四年足以小成. 置於沒能達到這個小成,原因有很多,先看內部原因,內部原因

用例写到想吐之感悟——通用测试用例库

连续几天都在写用例,回头看看,除了业务以外,基本上都是增删改查.分页控件校验.必填校验.格式校验.最大长度校验.特殊字符校验.唯一性校验,既然这样,为什么不专门建立一个通用测试用例库来存放这些通用的用例呢?这样就不必每个项目的每个查看页面都校验什么可不可以编辑,每个列表页都校验分页是否生效这些了. 通过这次写用例,还有一个感悟:自己写用例的时候先按照需求文档的来写,导致花在写业务相关上的用例很少,这样子很不好,写出的用例覆盖率相当不高...