next

并发编程AQS----共享锁

百般思念 提交于 2020-08-13 14:41:58
Semaphore Semaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目。应用场景:资源访问,服务限流。 Semaphore 实现AbstractQueuedSynchronizer的方法与 ReentrantLock 一样 Semaphore构造方法 public Semaphore( int permits) {------permits 表示能同时有多少个线程访问我们的资源 sync = new NonfairSync(permits); -------------默认创建的是非公平锁。 } abstract static class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = 1192457210091910933L; Sync(int permits) { setState(permits);-------传入的permits做i为了state的值,作为资源总数 } semaphore.acquire();获取资源,源码实现 public void acquire() throws InterruptedException { sync.acquireSharedInterruptibly( 1 );--------

Java基础-第06章:循环进阶[云图智联]

心已入冬 提交于 2020-08-13 14:11:44
1. 多重循环结构 1.1 为什么需要多重循环   通过之前的学习我们知道,if语句等选择结构是可以嵌套的,同理,循环结构也可以。通过嵌套循环结构可以更方便的、解决更多有意思的问题。 1.2 什么是多重循环   简单地说,多重循环就是在一个循环体内又嵌套另一个完整的循环结构。前面我们学习了三种循环:while循环、do-while循环和for循环。这三种循环之间是可以互相嵌套的。在多重循环中,外层循环变量变化一次,内层循环就要从初始值到结束值变化一遍。好比钟表的时针每转一格,分针就要转一圈。 1.3 多重循环的应用: 1.3.1输出九九乘法表 1.3.1.1 通过分析上面的效果图,我们可以总结出:   (1)一共有9行;   (2)每行的重复操作就是输出公式,公式的数量=当选的行号(第n行就有n个公式);   (3)每个公式的第一个数字是从1循环到当前的行号,第二数字是固定值,即当前的行号,等号的后面就是两个数字的乘积; 1.3.1.2 所以,我们可以使用二重循环来解决:   (1)用外层循环控制行数,循环变量i应该从1到9;   (2)用内层循环控制公式的个数,循环变量j应该从1到i;   (3)循环操作就是输出公式:j * i = ( j * i );注意:每输出完一行后,要换行。 1.3.1.3 套用语法,写出代码: for (int i = 1; i <= 9; i++)

算法很美 笔记 5.字符串问题

大兔子大兔子 提交于 2020-08-13 13:59:40
5.字符串问题 题1:判定字符是否唯一 实现一个算法,确定一个字符串 s 的所有字符是否全都不同。 示例 1: 输入: s = "leetcode" 输出: false 示例 2: 输入: s = "abc" 输出: true 限制: 0 <= len(s) <= 100 如果你不使用额外的数据结构,会很加分。 public static boolean isUnique(String astr) { if(astr.length()==0){ return true; } int[] flag=new int[128]; for (int i = 0; i < astr.length(); i++) { int n=(int)astr.charAt(i); if(flag[n]>0){ return false; }else { flag[n]++; } } return true; } 题目链接 题2:字符串翻转 请实现一个算法,翻转一个给定的字符串. 测试样例: "This is nowcoder" 返回:"redocwon si sihT" public static String reverseString(String s){ int len=s.length(); char[] out=new char[len]; for (int i = 0; i < len; i

性能优化(4)- 案例总结

£可爱£侵袭症+ 提交于 2020-08-13 13:30:41
jconsole远程连接须配置JMX /data/noob/jdk1.8.0_151/bin/java -Djava.rmi.server.hostname=127.0.0.1 #远程服务器ip,即本机ip - Dcom.sun.management.jmxremote #允许JMX远程调用 -Dcom.sun.management.jmxremote.port=7018 #自定义jmx 端口号 -Dcom.sun.management.jmxremote.rmi.port=7019 # JMX在远程连接时,会随机开启一个RMI端口作为连接的数据端口,很有可能这个端口会被防火墙给阻止,以至于连接超时失败​​​​​​。可以将这个端口和jmx.port的端口设置成一个端口,这样防火墙策略就只需要同行一个端口就可以了 -Dcom.sun.management.jmxremote.authenticate=false #是否需要秘钥 -Dcom.sun.management.jmxremote.ssl=false # 是否需要ssl 安全连接方式 -jar ./bussiness-0.0.1-SNAPSHOT.jar -Xms2048m -Xmx2048m -Xmn1024g -Xss2m -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX

SpringBoot2.0整合SpringSecurity,Mybatis,Layui框架从零开始实现登入登陆的增删查改

╄→尐↘猪︶ㄣ 提交于 2020-08-13 13:24:48
一、工具说明 开发工具:idea2019 jdk版本:1.8 数据库: Mysql5.0+ 二、项目说明 基于springboot2.0,整合druid, jpa , thymeleaf,layui,mybatis,maven,springsecurity框架实现登入登出的管理系统。 三、项目搭建 1、快速搭建maven项目 (1)点击左侧Maven,选择Jdk1.8,选中 Create from archetype,点击next。 (2)填写项目信息,点击next (3)选择项目位置,点击finish。 (4)项目结构图如下: 2、引入相关依赖 <!-- springboot 2.0.9 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.9.RELEASE</version> </parent> <dependencies> <!--springboot -web 组件,整合 springmvc,spring --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot

【微思网络】思科CCNA/CCNP/CCIE 技术分享之交换SNMP协议

前提是你 提交于 2020-08-13 13:24:01
SNMP(简单网络管理协议) 在目前越来越复杂的网络环境中,整个环境有各种各样的网络设备,为了能更好的对这些设备进行管理,及早的发现网络中已经存在或未来可能存在的问题,SNMP提供了一种对这些网络设备进行有效管理的技术基础。 SNMP是由IETF(Internet Engineeriing Task Force,互联网工程任务组)定义的一套基亍SGMP(Simple Gateway Monitor Protocol,简单网关监视协议)的网络管理协议。以SNMP为技术的网络管理系统(NMS)中,管理主机利用SNMP进行远程监控管理网络上的所有支持这种协议的设备(如计算机工作站、终端、路由器、Hub、网络打印机等),主要负责监视设备状态、修改设备配置、接受事件警告等 SNMP主要工作在管理主机和网络设备之间 几个基本概念: Manager:安装了SNMP管理软件的主机 Managed Device:被管理的网络设备(包括计算机、路由器、交换机等等) Agent:网络设备上的SNMP管理系统(可以简单认为Managed Device就是 Agent) MIB(Management Information Base):用亍保存各类OID的数据库 OID(Object Identifies):用亍描述网络设备的各类信息(事件),比如:CPU 的利用率、接口状态、路由表等等

BGP协议与配置

こ雲淡風輕ζ 提交于 2020-08-13 13:23:13
BGP:边界网关路由协议:boder gateway protocol ① 属于外部网关路由协议 ② 针对大型网络、大型跨国集团、运营商、国与国之间的路由 路由协议分类: 内部网关路由协议IGP:rip ospf isis (eigrp 思科私有) 外部网关路由协议EGP:EGP(早期淘汰) BGP BGP 邻居关系 IBGP :相同的AS路由器邻居 EBGP:不同AS的路由器邻居 注:EBGP 建邻居用直连接口 IBGP 建邻居用环回接口 配置直连接口和环回接口 EBGP: R1: router id 1.1.1.1 bgp 100 peer 12.1.1.2 as-nu 200 指定邻居12.1.1.2 所在的AS R2: router id 2.2.2.2 bgp 200 peer 12.1.1.1 as-nu 100 调试:dis bgp peer IBGP 邻居建立: 在AS 内部需先运行IGP,然后才可以使用环回接口建立BGP 运行IGP,在AS200内配置OSPF就可以 R2: bgp 200 peer 3.3.3.3 as-number 200 peer 3.3.3.3 connect-interface LoopBack0 R3: router id 3.3.3.3 bgp 200 peer 2.2.2.2 as-number 200 peer 2.2.2.2

百度WebUploader中实现文件上传下载的三种解决方案(推荐)

依然范特西╮ 提交于 2020-08-13 12:40:43
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQuery Uploadify的部分,这部分代码封装在bjui-all.js文件中, 在bjui-all.js文件中的全局变量定义中有以下部分代码,这就是定义的有关于上传的Uploadify控件的重要变量: //文件上传对象 function FileUploader(fileLoc, mgr) { var _this = this; this.id = fileLoc.id; this.ui = { msg: null, process: null, percent: null, btn: { del: null, cancel: null,post:null,stop:null }, div: null}; this.isFolder = false; //不是文件夹 this.app = mgr.app; this.Manager = mgr; //上传管理器指针 this.event = mgr.event; this

合并Excel的几种方法

江枫思渺然 提交于 2020-08-13 12:07:42
1. 将多个Excel表中的sheet合并到同一个Excel中,并以原表名为sheet名 新建一个excel文件 打开该文件,右击左下角"Sheet1",选择"查看代码" 输入下面的代码,保存之后,点击运行的绿色三角箭头, '功能:把多个excel工作簿的第一个sheet工作表合并到一个excel工作簿的多个sheet工作表,新工作表的名称等于原工作簿的名称 Sub Books2Sheets() '定义对话框变量 Dim fd As FileDialog Set fd = Application.FileDialog(msoFileDialogFilePicker) '新建一个工作簿 Dim newwb As Workbook Set newwb = Workbooks.Add With fd If .Show = -1 Then '定义单个文件变量 Dim vrtSelectedItem As Variant '定义循环变量 Dim i As Integer i = 1 '开始文件检索 For Each vrtSelectedItem In .SelectedItems '打开被合并工作簿 Dim tempwb As Workbook Set tempwb = Workbooks.Open(vrtSelectedItem) '复制工作表 tempwb.Worksheets(1)

不同关键词查找方法性能比较

泄露秘密 提交于 2020-08-13 10:34:07
# !/usr/bin/env python # -*- coding: utf-8 -*- # author:ShidongDu time:2020/6/3 import time import pandas as pd import re # 结点类 class node: def __init__ (self, ch): self.ch = ch # 结点值 self.fail = None # Fail指针 self.tail = 0 # 尾标志:标志为 i 表示第 i 个模式串串尾 self.child = [] # 子结点 self.childvalue = [] # 子结点的值 # AC自动机类 class Aho_Corasick: def __init__ (self): self.root = node( "" ) # 初始化根结点 self.count = 0 # 模式串个数 # 第一步:模式串建树 def insert(self, strkey): self.count += 1 # 插入模式串,模式串数量加一 p = self.root for i in strkey: if i not in p.childvalue: # 若字符不存在,添加子结点 child = node(i) p.child.append(child) p.childvalue