发表于: 2017-09-25 23:21:25

1 900


今天完成的事情:先用jmter又测了一会 数值有快有慢  

                       看了缓存 大致理解了为什么要用缓存

MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。 
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像视频数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

     Memcache客户端包含两组接口,一组是面向过程的接口,一组是面向对象的接口

Memcache面向对象的常用接口包括:
Memcache::connect -- 打开一个到Memcache的连接
Memcache::pconnect -- 打开一个到Memcache的长连接
Memcache::close -- 关闭一个Memcache的连接
Memcache::set -- 保存数据到Memcache服务器
Memcache::get --提取一个保存在Memcache服务器上的数据
Memcache::replace --替换一个已经存在Memcache服务器上的项目(功能类似Memcache::set)
Memcache::delete -- 从Memcache服务器上删除一个保存的项目
Memcache::flush -- 刷新所有Memcache服务器上保存的项目(类似于删除所有的保存的项目)

Memcache::getStats -- 获取当前Memcache服务器运行的状态

安装了memcache 还没有配置 

看博客正好看到了一个猴子分桃的问题 学习了一下

public class DividePeach{   

 public static void main(String[] args){    

    int num = 6;   //最后一次分桃时桃子的最小数量为6      

  a:

   for(;true;num += 5){ //num++也可以,根据猴子数量确定num尾数一定是1或6,所以加5提高效率                  int temp = num; 

           for(int monkey = 1; monkey <= 5; monkey     { 


      if(temp >= 6 && temp % 5 ==1){  //分法,至少有5个桃子,而且一定要大于等于6                    temp = temp / 5 * 4;//每只猴子走的时候桃子的数量,分了4次,或者说可分的桃子总数是现在的4/5,上一只猴子拿走了一份。                 if(monkey == 5){//再以上分法时,当满足第5只猴子时就找到这个数了                        break a;          }

      }else{//注意这个else和哪个if是一对    

                break;                }            }        }        System.out.println("海滩上原来最少有" + num + "个桃子");    } }

这里用了一些自己从未用过的语法和逻辑  

 最外层 for(;true;num += 5) 这是一个死循环   一直循环 所以他要与break一起使用 这里它上面标注了a:

然后里面内嵌了一个for循环

第二个for循环里面是个if  else

如果达成了 break a:  就是直接跳出标记的 最外面的死循环

否则 直接break 跳出第二个for循环

整体逻辑 最外层  因为一定桃子是被5除余1   先声明为6 然后每次加5  一直死循环

第二层for 猴子从1循环到5 因为被分了5次

 声明一个变量 指向num  这个值被五除余1 且大于等于6 

这个值每次都会减一然后变成5分之4 (这里应该是整形 所以没有减1我加上减一最后得到同样的数字) 这样做了五次 

最后 当猴子=5是 跳出最外层死循环 否则跳出里面循环

就能求满足条件的最小的num


                    

明天计划的事情:使用memcache 把自己的页面加上缓存 再用jmter测一测
遇到的问题:感觉对压测的理解还是不足   
收获:

for(;true;) 死循环。
for(表达式1;表达式2;表达式3){循环体}
1、先执行表达式1 ,进行初始化工作(整个循环中 表达式1只执行一次);
2、执行表达式2,表达式二 一般是返回布尔值 true进入循环,false 结束;
3、执行循环体
4、执行表达式3,一般是改变某些值,使得表达式2有变为false可能;
5、重复2、3、4;直至结束。

break是跳出离当前最近的一层循环,

break a: 是跳出标记为a:的那个循环

在java之中,break和continue都可以用来跳出当前循环,但是两者的主要区别是:当循环执行到break语句时,就退出整个循环,然后执行循环外的语句。当循环语句执行到continue时,当次循环结束,重新开始下一轮循环。如果已经是最后一轮循环了,那么这是的continue就与break效果一样了。

public static  void main(String []args){
       Integer a=127;
       Integer b=127;
       Integer c=128;
       Integer d=128;
       System.out.println(a == b);
       System.out.println(a == 127);
       System.out.println(c == 128);
       System.out.println(c == d);

原来在128之前 都不会重新new Integer 所以 前三个true 第四个  false

任务开始时间:9.23

         预计完成时间:9.29

         是否有延期风险:暂无

禅道链接:http://task.ptteng.com/zentao/my-task.htm

 





返回列表 返回列表
评论

    分享到