08 2018 档案
摘要:Lock: getHoldCount(): 获取当前线程调用lock()方法的次数 1 import java.util.concurrent.locks.ReentrantLock; 2 3 public class Service { 4 private ReentrantLock lock =
阅读全文
摘要:非公平锁: 1 import java.util.concurrent.locks.ReentrantLock; 2 3 public class Service { 4 5 private ReentrantLock lock; 6 7 public Service(boolean isFair)
阅读全文
摘要:公平锁: 1 import java.util.concurrent.locks.ReentrantLock; 2 3 public class Service { 4 5 private ReentrantLock lock; 6 7 public Service(boolean isFair)
阅读全文
摘要:Condition实现多对多交替打印: 1 import java.util.concurrent.locks.Condition; 2 import java.util.concurrent.locks.ReentrantLock; 3 4 /** 5 * 生产者消费者逻辑 6 */ 7 publ
阅读全文
摘要:Condition实现一个生产者一个消费者,实现一对一交替打印: 1 import java.util.concurrent.locks.Condition; 2 import java.util.concurrent.locks.ReentrantLock; 3 4 /** 5 * 生产消费逻辑
阅读全文
摘要:多个condition实现通知部分线程: 1 import java.util.concurrent.locks.Condition; 2 import java.util.concurrent.locks.Lock; 3 import java.util.concurrent.locks.Reen
阅读全文
摘要:使用Condition实现等待/通知: 1 import java.util.concurrent.locks.Condition; 2 import java.util.concurrent.locks.Lock; 3 import java.util.concurrent.locks.Reent
阅读全文
摘要:ReentrantLock: 1 /** 2 * ReentrantLock测试逻辑类 3 */ 4 public class MyService { 5 private Lock lock = new ReentrantLock();//获取锁对象 6 7 public void methodA(
阅读全文
摘要:ReentrantLock: 1 /** 2 * ReentrantLock测试逻辑类 3 */ 4 public class MyService { 5 private Lock lock = new ReentrantLock();//获取锁对象 6 7 public void testMeth
阅读全文
摘要:通过管道进行线程通信-字符流: 1 import java.io.IOException; 2 import java.io.PipedReader; 3 4 /** 5 * PipedReader 6 */ 7 public class ReadData { 8 9 public void rea
阅读全文
摘要:通过管道进行线程通信-字节流: 1 import java.io.IOException; 2 import java.io.PipedInputStream; 3 4 /** 5 * PipedInputStream 6 */ 7 public class ReadData { 8 9 publi
阅读全文
摘要:多个生产者/多个消费者: 1 /** 2 * 生产者 3 */ 4 public class P { 5 private MyStack stack; 6 7 public P(MyStack stack) { 8 this.stack = stack; 9 } 10 11 public void
阅读全文
摘要:多个生产者/一个消费者: 1 /** 2 * 生产者 3 */ 4 public class P { 5 6 private MyStack stack; 7 8 public P(MyStack stack) { 9 this.stack = stack; 10 } 11 12 public vo
阅读全文
摘要:一个生产者/多个消费者: 1 /** 2 * 生产者 3 */ 4 public class P { 5 6 private MyStack stack; 7 8 public P(MyStack stack) { 9 this.stack = stack; 10 } 11 12 public vo
阅读全文
摘要:一个生产者/一个消费者: 1 /** 2 * 生产者 3 */ 4 public class P { 5 private String lock;//锁 6 7 public P(String lock) { 8 this.lock = lock; 9 } 10 11 public void set
阅读全文
摘要:一个生产者/一个消费者: 1 /** 2 * 生产者 3 */ 4 public class P { 5 private MyStack stack; 6 7 public P(MyStack stack) { 8 this.stack = stack; 9 } 10 11 public void
阅读全文
摘要:JVM监控 1、通过jps获取java进程id >pid 2、然后通过jstat -gc pid 2000 (其中pid为java进程的id,该命令表示使用kb为单位 每2秒打印一次堆栈的使用情况和垃圾回收情况) 如图: 参数说明(title): 分析: 分析问题的出发点总结: 1、如果FGC的次数
阅读全文
摘要:JVM配置说明: 注:基于java应用的JVM配置 JVM: 备注:全局数据区,目的为了节省内存空间,避免所有new的对象中共同属性都开辟内存空间 因为堆和栈是动态分配内存空间的,所有配置JVM就是基于堆栈内存空间的分配。 配置JVM的位置: Linux:在tomcat下的bin/catalina.
阅读全文
摘要:1 package com.yanfuchang.selenium.utils; 2 3 import java.awt.AWTException; 4 import java.awt.Robot; 5 import java.awt.event.KeyEvent; 6 import java.io
阅读全文
摘要:1 from selenium import webdriver 2 from selenium.webdriver.support.wait import WebDriverWait 3 from selenium.webdriver.support import expected_conditi
阅读全文
摘要:JMeter取样器: 1、右键点击新建的线程组,选择Add >Sampler >HTTP Request:(如图) 2、新建取样器之后的界面如图: 3、根据上图中的数字标识解释: 1、Name:取样器名称,(建议写成请求接口的地址,例如:/login 这样在有多个取样器的时候,左侧列表就可以知道该取
阅读全文
摘要:JMeter线程组: 备注:文章中是JMeter4.0的截图 1、启动JMeter后,右键点击TestPlan(如图),选择Thread Group(线程组): 2、选择左侧新建的Thread Group: -根据图中数字对应讲解: 1、Name:该线程组的名称. Comments:注释内容,备注信
阅读全文
摘要:JMeter的下载: 1、Jmeter官网:http://jmeter.apache.org/ 2、点击左侧Download Releases,如图: 3、下载页面点击对应的版本下载: -(xxx.tgz) 为linux版本 -(xxx.zip) 为windows版本 4、下载老版本: -点击上图中
阅读全文