highlighter

Java中的读写锁 ReentrantReadWriteLock

匆匆过客 提交于 2020-04-14 16:15:13
【推荐阅读】微服务还能火多久?>>> 使用场景较少 /** * 使用场景较少 */ @Slf4j public class LockExample3 { private final Map<String, Data> map = new TreeMap<>(); private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); private final Lock readLock = lock.readLock(); private final Lock writeLock = lock.writeLock(); public Data get(String key){ readLock.lock(); try{ return map.get(key); }finally { readLock.unlock(); } } public Set<String> getAllKeys(){ readLock.lock(); try{ return map.keySet(); }finally { readLock.unlock(); } } public Data put(String key, Data value){ //没有读写操作,才能获得写锁。 不适合写少,读多的情况,将导致饥饿情况

Spring Boot Actuator 监控实践

◇◆丶佛笑我妖孽 提交于 2020-04-14 16:14:37
【推荐阅读】微服务还能火多久?>>> Actuator是Spring Boot提供的对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的Spring beans以及一些环境属性等。 1、创建Spring Boot工程,pom.xml的配置如下 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

Arduino使用红外模块

被刻印的时光 ゝ 提交于 2020-04-14 16:04:40
【推荐阅读】微服务还能火多久?>>> Arduino连接测试E18-D80NK红外开关传感器 本文我们将通过Arduino连线E18-D80NK红外开关传感器进行简单测试, E18-D80NK 是一个高灵敏度的红外光线开关传感器,它可以用来检测物体或者作为光电开关使用,测量检测范围从3cm到80cm。 供电电压: 5V DC 工作电流:< 25mA 最大负载电流 100mA ( NPN 集电极开路下拉输出) 响应时间: <2ms 直径: 17MM 指向角: ≤ 15 °, 有效范围3-80CM可调 检测的对象: 透明或不透明 工作环境温度: -25℃+55℃ 外壳材料: 塑料 导线长度: 45CM E18-D80NK市面上有两种版本,区别在于线缆颜色不同,一种是棕黑蓝三色线分别对应+5V,OUT和GND;一种是红黄黑三色线分别对应 +5V,OUT和GND 。上图的引脚定义图是前者。 void setup(){ Serial.begin(9600); //Start serial communication boud rate at 9600 pinMode(2,INPUT); //Pin 2 as signal input } void loop(){ while(1){ delay(500); if(digitalRead(2)==LOW){ // If no signal

Locust设置集合点

拟墨画扇 提交于 2020-04-14 15:42:00
【推荐阅读】微服务还能火多久?>>>    检查点 简而言之是用来检查脚本是否达到事先预想的结果,因为Locust判断请求是否成功只是通过请求响应的状态码是否为200或2xx来进行,缺乏可靠性。因此,有时请求返回的是200,但是却并未是测试想要的结果。所以需要使用检查点来检查请求返回的数据是否正确,增加脚本的可靠性和说服力。   要获取到请求返回的数据信息,可以使用正则表达式来获取页面中想要的内容,如果是对http接口的压测,可以直接获取到接口的返回信息进行检验。可根据实际需要选择哪种方式校验脚本是否运行成功。   下面以注册业务的压测脚本为例: 1 # 任务集 用户行为脚本 2 class Userbehavior(TaskSet): 3 4 @task(1) # 权重小 5 def SignUp(self): 6 data = { 7 ' username ' : ' cc ' , 8 ' password ' : ' 123456 ' , 9 ' passwordConfirm ' : ' 123456 ' , 10 ' firstName ' : '' , 11 ' lastName ' : '' , 12 ' address1 ' : '' , 13 ' address2 ' : '' , 14 ' register.x ' : ' 33 ' , 15 '

监控Windows性能指标

☆樱花仙子☆ 提交于 2020-04-14 14:58:54
【推荐阅读】微服务还能火多久?>>> 打开性能监视器 在搜索栏输入 perfmon.exe 新建数据收集器 展开左侧菜单“数据收集器集”,右键“用户定义”,新建“数据收集器集” 添加性能监控指标 右键“性能计数器”,选择“属性”,或者直接双击,打开属性面板    运行监控器 右键自定义的数据收集器集,选择“开始” 查看监控报告 展开左侧菜单“报告”-》“用户定义”-》“自定义数据收集器集”,双击报告编号    查看性能监视器 右键报告,选择“查看”-》“性能监视器”    查看报告位置 C:\PerfLogs\Admin\性能测试指标收集器集 来源: oschina 链接: https://my.oschina.net/u/4330227/blog/3234446

监控Windows性能指标

狂风中的少年 提交于 2020-04-14 14:57:09
【推荐阅读】微服务还能火多久?>>> 打开性能监视器 在搜索栏输入 perfmon.exe 新建数据收集器 展开左侧菜单“数据收集器集”,右键“用户定义”,新建“数据收集器集” 添加性能监控指标 右键“性能计数器”,选择“属性”,或者直接双击,打开属性面板    运行监控器 右键自定义的数据收集器集,选择“开始” 查看监控报告 展开左侧菜单“报告”-》“用户定义”-》“自定义数据收集器集”,双击报告编号    查看性能监视器 右键报告,选择“查看”-》“性能监视器”    查看报告位置 C:\PerfLogs\Admin\性能测试指标收集器集 来源: oschina 链接: https://my.oschina.net/u/4362330/blog/3234453

Java实现token的生成与验证-登录功能

五迷三道 提交于 2020-04-14 13:41:04
【推荐阅读】微服务还能火多久?>>> 一、token与cookie相比较的优势 1、支持跨域访问,将token置于请求头中,而cookie是不支持跨域访问的; 2、无状态化,服务端无需存储token,只需要验证token信息是否正确即可,而session需要在服务端存储,一般是通过cookie中的sessionID在服务端查找对应的session; 3、无需绑定到一个特殊的身份验证方案(传统的用户名密码登陆),只需要生成的token是符合我们预期设定的即可; 4、更适用于移动端(Android,iOS,小程序等等),像这种原生平台不支持cookie,比如说微信小程序,每一次请求都是一次会话,当然我们可以每次去手动为他添加cookie,详情请查看博主另一篇博客; 5、避免CSRF跨站伪造攻击,还是因为不依赖cookie; 二、基于JWT的token认证实现 JWT:JSON Web Token,其实token就是一段字符串,由三部分组成:Header,Payload,Signature 1、引入依赖 <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.8.2</version> </dependency>    2、设置密钥和生存时间 //设置过期时间

flex实现的导航

怎甘沉沦 提交于 2020-04-14 13:37:24
【推荐阅读】微服务还能火多久?>>> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> * { margin: 0; padding: 0; } #test{ background-color:#C2EDFF; display:flex; flex-direction:row-reverse; justify-content:center; user-select:none; } .box { height:80px; width:200px; border-radius: 25px; background-color:#F0F8FF; text-align:center; margin:10px; align-items:center; display:flex; justify-content:center; flex-wrap:wrap ; align-content:center; } .box p{ font-size:20px; } </style> <body> <div id ="test"> <div class='box'><p>首 页</p></div> <div class='box'><p>最 新</p></div> <div class='box'

js---选择排序

让人想犯罪 __ 提交于 2020-04-14 12:15:03
【推荐阅读】微服务还能火多久?>>> 思路:每一趟比较时,依次取出数组中的某个数和后面的数比较    如果该数大于 后面的数 就交换 function fnSort(arr){ var t; for (var i = 0;i<arr.length-1;i++) { for (var j = i+1;j<arr.length;j++) { if(arr[i]>arr[j]){ t = arr[i]; arr[i] = arr[j]; arr[j] = t; } } } return arr; } console.log(fnSort([2,7,1,55,58]))    来源: oschina 链接: https://my.oschina.net/u/4290246/blog/3234220

PySpark SQL 基本操作

血红的双手。 提交于 2020-04-14 11:58:35
【推荐阅读】微服务还能火多久?>>> 记录备忘: 转自: https://www.jianshu.com/p/177cbcb1cb6f 数据拉取 加载包: from __future__ import print_function import pandas as pd from pyspark.sql import HiveContext from pyspark import SparkContext,SparkConf from sqlalchemy import create_engine import datetime import pyspark.sql.functions as F conf = SparkConf().setAppName("abc") sc = SparkContext(conf=conf) hiveCtx = HiveContext(sc) # 创建dataframe d = [{'name': 'Alice', 'age': 1},{'name': 'Bob', 'age': 5}] df = sqlContext.createDataFrame(d) df.show() sql = "" # 拉数SQL df = hiveCtx.sql(sql)    数据探索 df.show() # 不加参数默认展示前20行 df.count() df