11.深入理解读写锁ReentrantReadWriteLock

protected final int tryAcquireShared(int unused) { /* * Walkthrough: * 1. If write lock held by another thread, fail. * 2. Otherwise, this thread is eligible for * lock wrt state, so ask if it should block * because of queue policy. If not, try * to
分类: 其他 发布时间: 02-08 19:58 阅读次数: 0

14.并发容器之ConcurrentHashMap(JDK 1.8版本)

1.ConcurrentHashmap简介 在使用HashMap时在多线程情况下扩容会出现CPU接近100%的情况,因为hashmap并不是线程安全的,通常我们可以使用在java体系中古老的hashtable类,该类基本上所有的方法都采用synchronized进行线程安全的控制,可想而知,在高并发的情况下,每次只有一个线程能够获取对象监视器锁,这样的并发性能的确不令人满意。另外一种方式通过Collections的Map<K,V> synchronizedMap(Map<K,V> m)将has
分类: 其他 发布时间: 02-08 19:58 阅读次数: 0

13.LockSupport工具

1. LockSupport简介 在之前介绍AQS的底层实现,已经在介绍java中的Lock时,比如ReentrantLock,ReentReadWriteLocks,已经在介绍线程间等待/通知机制使用的Condition时都会调用LockSupport.park()方法和LockSupport.unpark()方法。而这个在同步组件的实现中被频繁使用的LockSupport到底是何方神圣,现在就来看看。LockSupport位于java.util.concurrent.locks包下,有兴趣
分类: 其他 发布时间: 02-08 19:58 阅读次数: 0

16.并发容器之CopyOnWriteArrayList

1. CopyOnWriteArrayList的简介 java学习者都清楚ArrayList并不是线程安全的,在读线程在读取ArrayList的时候如果有写线程在写数据的时候,基于fast-fail机制,会抛出ConcurrentModificationException异常,也就是说ArrayList并不是一个线程安全的容器,当然您可以用Vector,或者使用Collections的静态方法将ArrayList包装成一个线程安全的类,但是这些方式都是采用java关键字synchronzied
分类: 其他 发布时间: 02-08 19:58 阅读次数: 0

15.并发容器之ConcurrentLinkedQueue

1.ConcurrentLinkedQueue简介 在单线程编程中我们会经常用到一些集合类,比如ArrayList,HashMap等,但是这些类都不是线程安全的类。在面试中也经常会有一些考点,比如ArrayList不是线程安全的,Vector是线程安全。而保障Vector线程安全的方式,是非常粗暴的在方法上用synchronized独占锁,将多线程执行变成串行化。要想将ArrayList变成线程安全的也可以使用Collections.synchronizedList(List<T> list)
分类: 其他 发布时间: 02-08 19:58 阅读次数: 0

【python】python操作剪切板-pyperclip模块

用 pyperclip 模块拷贝粘贴字符串 pyperclip 模块有 copy()和 paste()函数, 可以向计算机的剪贴板发送文本, 或从 它接收文本。将程序的输出发送到剪贴板。 copy('hello, world') 向剪切板发送 paste()为从剪切板读取
分类: 其他 发布时间: 02-08 19:57 阅读次数: 0

clean exit - waiting for changes before restart

在使用nodemon的时候,针对于同一个文件一次使用还好,当多次使用的时候就会出现这样的情况: 解决办法: nodemon clean exit 原因: 可能是因为缓存造成的;
分类: 其他 发布时间: 02-08 19:57 阅读次数: 0

贪心算法----区间调度问题

题目:   有n项工作,每项工作分别在si时间开始,在ti时间结束。对于每项工作,你都可以选择参与与否。如果选择了参与,那么自始至终都必须全程参与。此外,参与工作的时间段不能重复(即使是开始的瞬间和结束的瞬间的重叠也是不允许的)。你的目标是参与尽可能多的工作,那么最多能参与多少项工作呢? 1≤n≤100000 1≤si≤ti≤109。这道题目还可以称作不相交区间问题。 输入:   第一行:n   第二行:n个整数空格隔开,代表n个工作的开始时间   第三行:n个整数空格隔开,代表n个工作的结束
分类: 其他 发布时间: 02-08 19:57 阅读次数: 0

eigenMatrix

#include <iostream> using namespace std; #include <ctime> // Eigen 部分 #include <Eigen/Core> // 稠密矩阵的代数运算(逆,特征值等) #include <Eigen/Dense> #define MATRIX_SIZE 50 /**************************** * 本程序演示了 Eigen 基本类型的使用 ****************************/ int
分类: 其他 发布时间: 02-08 19:57 阅读次数: 0

vue 项目中访问出现 Invalid Host header

使用vue-cli 构建vue项目,使用了nginx 做了反向代理,访问项目出现 原因:webpack-dev-server 检查 host,如果不是配置的内容,将不能访问 解决:在webpack.dev.conf.js 中,添加如下代码 1 devServer: { 2 disableHostCheck: true 3 } 添加此内容可绕过主机检查。
分类: 其他 发布时间: 02-08 19:57 阅读次数: 0

一本通1580加分二叉树

1580:加分二叉树 时间限制: 1000 ms 内存限制: 524288 KB 题目描述 原题来自:NOIP 2003 设一个 n 个节点的二叉树 tree 的中序遍历为 (1,2,3,⋯,n),其中数字 1,2,3,⋯,n 为节点编号。每个节点都有一个分数(均为正整数),记第 i 个节点的分数为 di,tree及它的每个子树都有一个加分,任一棵子树 \mathrm{subtree}subtree(也包含 tree 本身)的加分计算方法如下: 记 subtree 的左子树加分为 l,右子树加
分类: 其他 发布时间: 02-08 19:57 阅读次数: 0

「ZOJ 1354」Extended Lights Out「高斯消元」

题意:给定一个\(5\times 6\)的棋盘的\(01\)状态,每次操作可以使它自己和周围四个格子状态取反,求如何操作,输出一个\(01\)矩阵 题解:这题可以通过枚举第一行的状态然后剩下递推来做,但是这里还是写一种好理解的高斯消元解异或方程组的方法。 对于每个格子列一个方程,未知数就是要求的答案矩阵,系数的话把它周围的设为1,其他设为0。然后右边的常数项为它本来的状态。然后就高斯消元嘛。 我用了bitset优化,实际上可能unsigned int或者long long也可以。 #inclu
分类: 其他 发布时间: 02-08 19:57 阅读次数: 0

Struts2学习:interceptor(拦截器)的使用

对于需要登陆验证、权限验证等功能的网站,每一次请求,每一个action都写一段验证的代码,未免显得冗余且不易维护。struts2提供了拦截器interceptor,为这些页面提供一个切面,或者说公共组件,以达到易维护、提高代码重用率的目的。struts默认的interceptor有很多,就不去一一列举,这里从自定义拦截器开始学习。 1、定义一个自定义拦截器: package com.owlforest.home.interceptor; import com.opensymphony.xwo
分类: 其他 发布时间: 02-08 19:57 阅读次数: 0

洛谷 P4294 [WC2008]游览计划

题目链接 不是很会呢,但似乎抄了题解后有点明白了 sol:状态DP显然,其实是要构建一棵最小生成树一样的东西,我自己的理解(可能不是很对哦希望多多指教)f[x][y][zt]就是到x,y这个点,状态为zt,时的最小代价于是有两种转移方法:一种是若zt1|zt2=zt且zt1&zt2==0,那么f[x][y][zt]=min(f[x][y][zt],f[x][y][zt1]+f[x][y][zt2]),第二种就是跑spfa,如x1,y1和x,y联通,f[x1][y1][zt''']=min(f[
分类: 其他 发布时间: 02-08 19:57 阅读次数: 0

python爬虫入门---第二篇:获取2019年中国大学排名

我们需要爬取的网站:最好大学网 我们需要爬取的内容即为该网页中的表格部分: 该部分的html关键代码为: 其中整个表的标签为<tbody>标签,每行的标签为<tr>标签,每行中的每个单元格的标签为<td>标签,而我们所需的内容即为每个单元格中的内容。 因此编写程序的大概思路就是先找到整个表格的<tbody>标签,再遍历<tbody>标签下的所有<tr>标签,最后遍历<tr>标签下的所有<td>标签, 我们用二维列表来存储所有的数据,其中二维列表中的每个列表用于存储一行中的每个单元格数据,即<t
分类: 其他 发布时间: 02-08 19:57 阅读次数: 0

【react】---Immutable的基本使用

一、Immutable简介   Immutable Data 就是一旦创建,就不能再被更改的数据。对 Immutable 对象的任何修改或添加删除操作都会返回一个新的 Immutable 对象。Immutable 实现的原理是 Persistent Data Structure(持久化数据结构),也就是使用旧数据创建新数据时,要保证旧数据同时可用且不变。同时为了避免 deepCopy 把所有节点都复制一遍带来的性能损耗。      在js中,引用类型的数据,优点在于频繁的操作数据都是在原对象的
分类: 其他 发布时间: 02-08 19:57 阅读次数: 0

Comet OJ CCPC-Wannafly Winter Camp Day8 A Aqours

A Aqours 链接 分析:   给出的点可以视为是按照BFS序给的,也就是说从浅到深给出。可以再给每个节点u维护一个f值,表示离u最近的叶子节点到它的距离。   所以每当扫到一个叶子节点,就可以暴力往根节点跳,边跳边更新f值,直到跳到一个已被其他叶子节 点跳到过的节点为止。 那么对于当前的叶子节点,离它最近的编号小于它的叶子节点到它的距离就是跳到这个终止节点的f值 +跳的步数。   在求完之后,还要从上述的终止节点沿着原路更新一下f值,因为可能当前叶子比较深但之前有比较浅 的叶子节点。  
分类: 其他 发布时间: 02-08 19:41 阅读次数: 0

zzuli oj 1113 递归调用的次数统计

题目描述 如下程序的功能是计算 Fibonacci数列的第n项。函数fib()是一个递归函数。请你改写该程序,计算第n项的同时,统计调用了多少次函数fib(包括main()对fib()的调用)。 解题思路: 共使用了多少次递归函数等同于调用次数,因此使用次数每次+1即为所求结果。 代码实现: 1 #include<stdio.h> 2 3 int fib(int k); 4 int i=0; 5 int main(void ) 6 { 7 int n; 8 s
分类: 其他 发布时间: 02-08 19:41 阅读次数: 0

【搜索】桐桐的运输方案

问题 G: 【搜索】桐桐的运输方案 时间限制: 1 Sec 内存限制: 64 MB 提交: 46 解决: 14 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 桐桐有N件货物需要运送到目的地,它们的质量和价值分别记为: 质量:W1,W2,…,Wn; 价值:Vl,V2,…,Vn; 已知某辆货车的最大载货量为x,并且当天只能运送一趟货物。这辆货车应该运送哪些货物,才能在不超载的前提下使运送的价值最大? 输入 第1行是一个实数,表示货车的最大载货量x(1<x≤I00)。 第2行是一个
分类: 其他 发布时间: 02-08 19:41 阅读次数: 0

fiddler(四)、断点(转)

前言 先给大家讲一则小故事,在我们很小的时候是没有手机的,那时候跟女神聊天都靠小纸条。某屌丝A男对隔壁小王的隔壁女神C倾慕已久,于是天天小纸条骚扰,无奈中间隔着一个小王,这样小王就负责传小纸条了。有一天小王忍不住偷偷打开A男表白的纸条,把里面内容改了下,改成了:我的同桌小王喜欢你。最后女神C和小王走在了一起。。。这是一个悲伤的故事! 一、断点 1.为什么要打断点呢? 比如一个购买的金额输入框,输入框前端做了限制100-1000,那么我们测试的时候,需要测试小于100的情况下。很显然前端只能输入
分类: 其他 发布时间: 02-08 19:41 阅读次数: 0
今日推荐