Amp

快速排序练习

混江龙づ霸主 提交于 2020-08-05 08:38:22
步骤: (1) 选择基准值。 (2) 将数组分成两个子数组:小于基准值的元素和大于基准值的元素。 (3) 对这两个子数组进行快速排序。 //对一个数组进行排序 public class QuickSort { //快速排序 private static void quickSort(int[] arr, int low, int high) { if (low > high) { return; } //基准值 int temp = arr[low]; int i = low; int j = high; while (i < j) { //j从尾部向前遍历找到比temp小的数就停止 while (arr[j] >= temp && i < j) { j--; } //i从起始向后遍历找到比temp大的数就停下 while (arr[i] <= temp && i < j) { i++; } //此时j所在的位置小于基准值,i所在的位置大于基准值 交换彼此 if (i < j) { int tempSwap = arr[j]; arr[j] = arr[i]; arr[i] = tempSwap; } } //i = j ,交换彼此 arr[low] = arr[i]; arr[i] = temp; //遍历基准值左边的数组 quickSort(arr, low, j - 1);

c++中的new、operator new、placement new

余生长醉 提交于 2020-08-05 07:46:35
转自: https://www.cnblogs.com/likaiming/p/9393083.html 一、定义 1、new new是c++中的关键字,,其行为总是一致的。它先调用operator new分配内存,然后调用构造函数初始化那段内存。 new 操作符的执行过程: 1. 调用operator new分配内存 ; 2. 调用构造函数在operator new返回的内存地址处生成类对象; 2、operator new operator new是一个函数,就像重载任何一个符号如operator +,它用来分配内存(只不过new除了调用它还有其他步骤)。它可以被重载, 通过重载它,可以改变new操作符的功能 。它的功能介意类比c语言中的malloc,如果类中没有重载operator new,那么调用的就是全局的::operator new来从堆中分配内存。 2、placement new placement new 是c++中对operator new 的一个标准、全局的重载版本。它并不分配内存,只是返回指向已经分配好的某段内存的一个指针,placement new允许你在一个已经分配好的内存中(栈或者堆中)构造一个新的对象。 二、使用方法 1、new的使用 在堆上分配分配一块内存 struct A* i0 = new A; struct A* i1 = new A();

elasticsearch返回指定字段

ε祈祈猫儿з 提交于 2020-08-05 06:18:29
1. postman 请求elasticsearch 返回指定字段   1.直接在请求体当中,json 数据,对应的是一个列表 {   "_source":['title','id','desc'],   "from":10,   "size":100, }    至于from和size是浅分页    2. 或者这样 { " _source " :{ "includes " :[ " title " , " url " , " id " ], "excludes " :[ " desc " ] } }   其中includes代表需要返回的字段,excludes代表不要返回的字段   3.直接在请求url带上需要查询参数 curl -XGET ' localhost:9200/_search?pretty&filter_path=took,hits.hits._id,hits.hits._score ' { " took " : 3 , " hits " : { " hits " : [ { " _id " : " 3640 " , " _score " : 1.0 }, { " _id " : " 3642 " , " _score " : 1.0 } ] } }   对_source的字段进行过滤 curl -XGET ' localhost:9200/_search

MySQL的四种事务隔离级别

夙愿已清 提交于 2020-08-05 05:38:01
MySQL的四种事务隔离级别SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样,也就是说事务是一个不可分割的整体。 2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。 3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。 4、持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。 小结:原子性是事务隔离的基础,隔离性和持久性是手段,最终目的是为了保持数据的一致性。 二、事务的并发问题 1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据(某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的) 2、不可重复读

微电子所阻变存储器研究取得新突破

匆匆过客 提交于 2020-08-05 05:26:01
日前,微电子所微电子器件与集成技术重点实验室刘明院士团队在阻变存储器(R R A M)三维垂直交叉阵列研究领域取得了突破性进展,提出了自对准高性能自选通阻变存储器结构,为高密度、低成本三维垂直交叉阵列的制备提供了解决方案,研究论文被2016 Symposia on VLSITechnology and Circuits(简称VLSI国际研讨会)接收,第一作者许晓欣在会上进行了口头报告。这是中国科学院首次作为第一作者单位在该国际会议上发表论文。   在实现阻变存储器高密度应用方面,垂直结构的交叉阵列具有制备工艺简单,成本低廉等优点。自选通阻变器件是该阵列架构的核心,一般由选通层和阻变层组成。当垂直交叉阵列极限微缩时,层间的漏电会将成为重要的问题。针对这一问题,刘明课题组在国际上首次提出了采用自对准技术构建自选通阻变器阵列架构的方法,有效消除了阵列中的层间漏电流,使垂直阻变存储阵列的微缩能力达到5n m以下。研制成功的自对准自选通阻变器件同时也表现出优良的阻变性能:漏电流<0.1p A,非线性>1000,操作电流<1u A以及具有很好的保持特性和耐久性。 http://www.60016.net/xueshulunwen/dianzilunwen/weidianzi/4762.html 来源: oschina 链接: https://my.oschina.net/u/4547217

ssh免密登录

旧时模样 提交于 2020-08-05 05:14:34
1.登录机192.168.1.144 需要免密登录的机器:192.168.1.146 2.演示目标:144机器通过密钥认证的方式免密码登录192.168.1.146 3.192.168.1.144安装软件包,并首次链接192.168.1.146 yum -y install openssh-clients ssh root@192.168.1.146 4.192.168.1.144生成密钥对:ssh-keygen -t rsa -P "" -f "/root/.ssh/id_rsa" 常用选项: -t type:指定密钥加密类型 -P PASSWORD :指定密钥加密的密码,建议为空 -f FILENAME:指定密钥保持位置 5.192.168.1.144将公钥复制到远程192.168.1.146对应用户的家目录 ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.146 复制后远程登录 ls ~/.ssh && cat ~/.ssh/authorized_keys 测试192.168.1.144远程免密登录192.168.1.146 # ssh root@192.168.1.146 转载地址: https://www.cnblogs.com/123hll/p/11471005.html 来源: oschina 链接: https

mcms导航菜单当前栏目高亮,支持下级栏目

独自空忆成欢 提交于 2020-08-05 05:08:06
数据库标签表增加属性 tagid=4的栏目标签26行增加path输出 category_path as path, 服务端标签增加 [field.path/] {ms:channel typeid='' type=son ref=one} <li class="nav-list" path="[field.path/]"> <span class="iconfont [field.typekeyword/]"></span> <a href="{ms:global.url/}[field.typelink/]">[field.typetitle/]</a> <ul> {ms:channel refs=one ref=two} <li><a href="{ms:global.url/}[field.typelink/]">[field.typetitle/]</a></li> {/ms:channel} </ul> </li> {/ms:channel} js控制样式 <script> $(function () { var r=location.href; $(".nav-list").removeClass("active"); var isIndex=true; $(".nav-list").each(function (index,item) { var _this=$

PHP-Beanstalkd消息队列 延迟队列的搭建使用

喜夏-厌秋 提交于 2020-08-05 04:43:33
一安装 >=PHP7.0 >=Centos7.0 yum install beanstalkd --enablerepo=epel 启动: /usr/bin/beanstalkd -l 0.0.0.0 -p11300 -b /var/lib/beanstalkd/binlog -F & 参数: /usr/bin/beanstalkd -h Use:/usr/bin/beanstalkd [OPTIONS] Options: -b 开启binlog,断电后重启会自动恢复任务。 -f MS fsync最多每MS毫秒-F从不fsync(默认) -l ADDR侦听地址(默认为0.0.0.0) -p端口侦听端口(默认为11300) -u USER成为用户和组 -z BYTES设置最大作业大小(以字节为单位)(默认值为65535) -s BYTES设置每个wal文件的大小(默认为10485760) (将被舍入到512字节的倍数) -c压缩binlog(默认) - n 不要压缩binlog -v显示版本信息 -V增加冗长度 -h显示这个帮助 配置文件: /etc/sysconfig/beanstalkd 二PHP操作 来源: oschina 链接: https://my.oschina.net/songms/blog/4347999

【PHP+nginx+php-fpm】的运行机制和原理

牧云@^-^@ 提交于 2020-08-05 03:52:05
1、PHP+nginx+php-fpm的运行机制和原理 Nginx 是非阻塞IO & IO复用模型,通过操作系统提供的类似 epoll 的功能,可以在一个线程里处理多个客户端的请求。(非阻塞,无需等待返回) Nginx 的进程就是线程,即每个进程里只有一个线程,但这一个线程可以服务多个客户端。 PHP-FPM 是阻塞的单线程模型,pm.max_children 指定的是最大的进程数量,pm.max_requests 指定的是每个进程处理多少个请求后重启(因为 PHP 偶尔会有内存泄漏,所以需要重启). PHP-FPM 的每个进程也只有一个线程,但是一个进程同时只能服务一个客户端。(阻塞,需等待PHP返回结果) 大多数的 Linux 程序都倾向于使用进程而不是线程,因为 Linux 下相对来说创建进程的开销比较小,而 Linux 的线程功能又不是很强大。 总结: 1、nginx和php-fpm都是多进程,一个进程只有一个线程; 2、nginx一个线程是非阻塞/io多路复用/epoll模型,将请求分发后无需等待,仅监听回调结果 3、php-fpm一个线程是阻塞模型,必须等待该客户端请求php服务端返回数据,下一个nginx发过来的请求才能被受理 4、PHP本身是单进程单线程的,它只是脚本语言。 5、关于redis:redis是单进程单线程模型,它也是非阻塞、I/o多路复用

多线程优化函数中包含多个HTTP接口响应速度慢的问题

一个人想着一个人 提交于 2020-08-05 02:47:04
多线程优化函数中包含多个HTTP接口响应速度慢的问题 大型企业使用的系统越来越多,使用统一的集成门户做为入口,并以系统为单位注册新闻,待办任务,预警消息等插件 在使用过程中因网络或者接口的原因导致响应的时间增长,比如在加载我的待办任务的时候可能需要门户分别向A,B,C,D等系统分别请求各自的待办任务并组合返回前端; 多线程工具类,解决多线程返回值的问题 问:实现多线程的方式有几种? 答:实际上是有3种 0:继承Thread类 1:实现Runable 接口 不带返回值 1:实现Callable 接口 带返回值 问 : 启动线程的方式 答 : 0 : 直接启动一个Thread线程 new Thread (). start (); ​ 1 : 启动一个Runable Runnable runable = new Runnable () { @Override public void run () { System . out . println ( "thread run ...." ); } }; new Thread ( runable ). start (); 2 : 启动一个Callable Callable call = new Callable < Object > () { @Override public Object call () throws Exception {