element

[Boost] Boost智能指针——boost::shared_ptr(使用及原理分析)

此生再无相见时 提交于 2021-02-09 20:00:35
1. boost::shared_ptr的用法 下面用一个简单的例子说明shared_ptr的用法: #include <stdio.h> #include <boost/shared_ptr.hpp> class A { public : void print() { printf( " class A print!\n " ); } }; int main( int argc, char ** argv) { boost::shared_ptr <A> a1( new A()); a1 -> print(); } shared_ptr不用手动去释放资源,它会智能地在合适的时候去自动释放。如上面的例子,a1指向的对象将会在程序结束的时候自动释放(程序结束时所有申请的资源都会被释放,这只是为了说明其作用)。再来看下面的例子: //同上 int main( int argc, char ** argv) { boost::shared_ptr <A> a1( new A()); a1 -> print(); printf( " a1 reference count: %d\n " , a1.use_count()); boost::shared_ptr <A> a2 = a1; printf( " a1 reference count: %d\n " , a1.use_count()

Java集合:ArrayList (JDK1.8 源码解读)

允我心安 提交于 2021-02-09 15:32:08
ArrayList ArrayList几乎是每个java开发者最常用也是最熟悉的集合,看到ArrayList这个名字就知道,它必然是以 数组方式实现 的集合 关注点 说一下ArrayList的几个特点,也是面试喜欢问的几个点: 1.是否允许为空:是 2.是否允许重复数据:是 3.是否有序:是 4.是否线程安全:否 主要声明 看一下ArrayList的声明: public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable ArrayList继承自AbstractList,并且实现了List接口(还实现了RandomAccess、Cloneable、Serializable),List接口又继承自顶层集合接口Cellection,实现了List接口就代表它是一个 有序的 集合 再看一下ArrayList声明的主要变量: // 默认容量 private static final int DEFAULT_CAPACITY = 10 ; // 一个空的数组 private static final Object[] EMPTY_ELEMENTDATA = {}; // 默认容量的空数组,搞这么多空数组干嘛?|_・)

Chrome DevTools 全攻略!助力高效开发

烈酒焚心 提交于 2021-02-09 07:54:56
李华西,微医云服务团队前端开发工程师,喜欢瞎折腾,典型猫奴 Console 面板 此章节请打开 justwe7.github.io/devtools/console/console.html 一起食用 一方面用来记录页面在执行过程中的信息(一般通过各种 console 语句来实现),另一方面用来当做 shell 窗口来执行脚本以及与页面文档、DevTools 等进行交互 组合快捷键按键: Windows: Control + Shift + J Mac: Command + Option + J 首先看一下 console 对象下面都有哪些方法: console.clear() 顾名思义,清空控制台 console.log(), info(), warn(), error() 日常用的比较多的就是这几个了,其中 log 和 info ,印象中在 2016 年之前老用 info 打印,还是有区别的, info 输出的内容前面是有一个蓝色背景的小圈, 大概跟这个差不多: i,后来 chrome 更新就没了(IE 还是可以看出差别的) console .log( '普通信息' ) console .info( '提示性信息' ) console .error( '错误信息' ) console .warn( '警示信息' ) 使用占位符 // 支持逗号分隔参数,不需要每个参数都单独打印

Chrome DevTools 全攻略!助力高效开发,摆脱 996

孤街醉人 提交于 2021-02-09 07:53:43
Console 面板 此章节请打开 justwe7.github.io/devtools/console/console.html 一起食用 一方面用来记录页面在执行过程中的信息(一般通过各种 console 语句来实现),另一方面用来当做 shell 窗口来执行脚本以及与页面文档、DevTools 等进行交互 组合快捷键按键: Windows: Control + Shift + J Mac: Command + Option + J 首先看一下 console 对象下面都有哪些方法: console.clear() 顾名思义,清空控制台 console.log(), info(), warn(), error() 日常用的比较多的就是这几个了,其中 log 和 info ,印象中在 2016 年之前老用 info 打印,还是有区别的, info 输出的内容前面是有一个蓝色背景的小圈, 大概跟这个差不多: i,后来 chrome 更新就没了(IE 还是可以看出差别的) console .log( '普通信息' ) console .info( '提示性信息' ) console .error( '错误信息' ) console .warn( '警示信息' ) 使用占位符 // 支持逗号分隔参数,不需要每个参数都单独打印 console .log( 1 , '2' , + '3'

脱离996,Chrome DevTools 面板全攻略!!!(收藏)

女生的网名这么多〃 提交于 2021-02-09 06:07:40
李华西,微医云服务团队前端开发工程师,喜欢瞎折腾,典型猫奴 Console 面板 此章节请打开 justwe7.github.io/devtools/console/console.html 一起食用 一方面用来记录页面在执行过程中的信息(一般通过各种 console 语句来实现),另一方面用来当做 shell 窗口来执行脚本以及与页面文档、DevTools 等进行交互 组合快捷键按键: Windows: Control + Shift + J Mac: Command + Option + J 首先看一下 console 对象下面都有哪些方法: console.clear() 顾名思义,清空控制台 console.log(), info(), warn(), error() 日常用的比较多的就是这几个了,其中 log 和 info ,印象中在 2016 年之前老用 info 打印,还是有区别的, info 输出的内容前面是有一个蓝色背景的小圈, 大概跟这个差不多: i,后来 chrome 更新就没了(IE 还是可以看出差别的) console .log( '普通信息' ) console .info( '提示性信息' ) console .error( '错误信息' ) console .warn( '警示信息' ) 使用占位符 // 支持逗号分隔参数,不需要每个参数都单独打印

《Redis开发与运维》读书笔记(一)

江枫思渺然 提交于 2021-02-08 19:00:00
全局命令 查看所有的键(遍历所有key,慢查询之一) keys * 键总数(redis内部维护的计数器,并不会扫描全库) dbsize 检查键是否存在 exists key 删除键 del key1 key2... 过期设置 expire key seconds 获取数据类型 type key 数据结构与内部编码 string: int embstr raw hash: hashtable ziplist list: quicklist set: hashtable intset zset: skiplist ziplist 单线程与I/O多路复用模型 客户端到服务端模型 发送命令 执行命令 进入命令队列 返回结果 为什么快 纯内存访问(主要) 非阻塞io:依赖linux内核中的多路复用IO接口 epoll ,自编写一套处理模型(不依赖于其他事件模型)将epoll中的连接、读写、关闭都转换为事件 单线程避免了线程切换以及线程竞争的开销,单线程也简化了数据结构与算法的实现,坏处是对于慢查询非常敏感,一个慢查询将阻塞之后所有的命令 数据结构的概览 字符串 命令 命令 时间复杂度 set key value O(1) get key O(1) del key [key ...] O(k) mset key value [key value ...] O(k) mget key [key

python+selenium实现登录账户

冷暖自知 提交于 2021-02-08 02:42:50
selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。 selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。 用python写爬虫的时候,主要用的是selenium的Webdriver,我们可以通过下面的方式先看看Selenium.Webdriver支持哪些浏览器 安装selenium,如果已经安装过pip。直接运行一下命令。 pip install - U selenium 另一种方式, https://pypi.python.org/packages/source/s/selenium/selenium-2.52.0.tar.gz 下载并解压。这里简述一下windows版本,其实Unix下也差不多,使用Wget下载一下安装。 使用命令(setup一般用于第三方模块的安装):cd c:\Python3\xxxx python setup.py install selenium2结合了selenium和webdriver

Unable to locate element for LABEL with the XPath expression

妖精的绣舞 提交于 2021-02-08 01:54:21
问题 I am trying the below xpath for Label, but I'm not able to locate the element. driver.findElement(By.xpath("//div[label[contains(text(),'Patient's Name']]")).isEnabled(); XPath: .//*[@id='update_patient_profile']/div/div[1]/label ---Taken from FirePath. Below is the HTML source for the field. <form id="update_patient_profile" action="/subscriber/" method="post" name="update_patient_profile"> <div class="subscriberAddPatient"> <div class="formData nameInputs"> <label for="first_name">Patient's

2020.10-2021.01前端开发部分总结

自闭症网瘾萝莉.ら 提交于 2021-02-06 12:35:08
2020.10-2021.01前端开发部分总结 1.减少http请求(使用缓存优化性能) storageData ( ) { let arr = [ { name : '黄' , age : 20 } , { name : '刘' , age : 30 } ] arr . push ( Date . now ( ) ) ; window . sessionStorage . setItem ( 'str' , JSON . stringify ( arr ) ) } , //请求接口的方法 getStorageData ( ) { //注意此处一定是获取时间,索引不固定 let time = JSON . parse ( window . sessionStorage . getItem ( 'str' ) ) [ 2 ] ; if ( ( Date . now ( ) - time ) > 1000 * 20 ) { alert ( '12' ) //利用时间来判断是否每次调用返回相同固定资源的接口 } } 2.element.ui中的el-upload传递索引 index是外部v-for循环时的索引; :on-success的回调函数原本有三个形参数(response,file, fileList),使用箭头函数传递索引 < el-upload v-show = ' !item

34. Find First and Last Position of Element in Sorted Array

我是研究僧i 提交于 2021-02-06 10:31:04
一、题目   1、审题   2、分析     求 target 在有序数组 nums 中出现的最小下标和最大下标组成的数组。否则返回 {-1, -1}。时间复杂度为 O(log n)。 二、解答   1、思路:     时间复杂度为 O(log n),想到用二分法。要求所在下标组合,则需在求得 target时在向前、向后查找 target,直至找到 target 出现的最大、最小下标。 class Solution { public int [] searchRange( int [] nums, int target) { int len = nums.length; int [] result = new int []{-1, -1 }; int low = 0 ; int high = len - 1 ; if (len == 0 ) return result; if (target < nums[low] || target > nums[high]) return result; while (low < high) { int median = (low + high) / 2 ; if (nums[median] > target) high = median - 1 ; else if (nums[median] < target) low = median +