用文件映射法只启动一个实例

有些时候,我们要求一个程序在系统中只能启动一个实例。比如,Windows自带的播放软件Windows Medea Player在Windows里就只能启动一个实例。原因很简单,如果同时启动几个实例,却播放不同的文件,那么声音和图像就会引起混乱。在设计模式中,就有一个SINGLETON模式,该模式就是让类只有一个实例。 首先,给APP类加上一个成员变量:  HANDLE m_hFileMappi
分类: 其他 发布时间: 06-23 23:32 阅读次数: 2

关于C++中的mutable关键字的研究

mutalbe的中文意思是“可变的,易变的”,跟constant(即C++中的const)是反义词。在C++中,mutable突破了const的限制,被nutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。   当类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但一些时候,我们需要在consr的函数里面修改一些恨类状态无关的数据成员,那么这个数据成
分类: 其他 发布时间: 06-23 23:31 阅读次数: 2

深入探究connect函数

connect()用于建立与指定socket的连接。 头文件: #include 函数原型: int connect(int s, const struct sockaddr * name, int namelen); 参数: s:标识一个未连接socket name:指向要连接套接字的sockaddr结构体的指针 namelen:sockaddr结构体的字节
分类: 其他 发布时间: 06-23 23:31 阅读次数: 2

Markdown编辑器攻略

Markdown编辑器攻略本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl + Q 插
分类: 其他 发布时间: 06-23 23:30 阅读次数: 2

自动化测试-Part01-自动化录制

概念:把人为驱动的测试转化为机器执行的一种过程。 目的:提高测试效率,保证产品质量。 测试的种类 单元自动化测试:针对类,方法的测试,测试的效益最大,Junit,TestNG 接口自动化测试:httpUnit,Postman UI自动化测试:界面元素测试,面向用户,测试工作量大 RobtFramework,selenium,appium 自动化的...
分类: 其他 发布时间: 06-23 23:30 阅读次数: 2

自动化测试-Part02-Python

Python安装: - python 3.5的版本:官网安装配置环境变量 - 安装selenium2.46.0:pip install selenium==2.48.0
分类: 其他 发布时间: 06-23 23:30 阅读次数: 2

java面向代码调优的设计模式之flyweight pattern

代码调优,实际上就是为了降低程序的时空代价。Flyweight Pattern允许在应用中不同部分共享使用objects,这个就可以大幅度的减少new的对象个数,降低大量objects带来的时空代价。应用flyweight pattern的对象其可分为内部特征(不管在什么场合使用该ovject,内部特征都不变)和外部特征(不是固定的,需要在不同场合分别计算并产生变化)。这个外部特征就保证了同一个对象可以在不同的场合进行应用,不同的场合需要不同的对象特性,我们就可以通过修改外部对象特征的方式使同
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2

varnish CLI管理

命令:varnishadm [-t timeout] [-S secret_file] [-T address:port] [-n name] [command [...]] ./varnishadm -T 127.0.0.1:2000 -t timeout:等待一个操作完成的时间,单位秒 -S secret_file:确定一个认证的安全文件 -T address:port:连接到管理接口的地址和端口,在启动Varnish时指定的 -n name:连接到管理接口的名字, 在启动Varnish
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2

Spring高级话题

Spring Aware 在实际项目中,你不可避免的要用到spring容器本身的功能资源,这时你的bean要意识到spring容器的存在,才能调用spring提供的资源。spring aware本来就是spring设计用来框架内部使用的。若使用spring aware,你的Bean将会与srping框架耦合。 多线程 配置类 任务执行类 计划任务 条件注解@Conditional 组合注解 测试 拦截器
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2

ubuntu和win10双系统,用ubuntu引导win10启动

有两块硬盘分变装了Windows10和Ubuntu16.04,一块1T的装了Win10系统,不想装ubuntu的时候把win10的引导覆盖了,所以ubuntu装在了另外一块500G的硬盘上。结果用ubuntu引导界面选择'Windows 10 (loader) (on /dev/sda1)'启动失败结合百度来的一些方法改了grub.cfg文件终于引导启动成功。 1.启动ubuntu在查看grub.cfg文件内容 在终端中输入 gedit /boot/grub/grub.cfg 文件开头提示:这
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2

根据自己的需要修改访问的网页的代码

我访问了一个网站的网页,在这个网页有不少感兴趣的超链接,想把这些超链接都点开看一下。但是发现点开之后,是在本身的窗口打开了,也就是说新打开的页面会覆盖之前的页面。然后就是想再打开别的超链接的话要返回之前的页面才能找到其它超链接。 有没有什么方法可以在新的页面打开超链接呢?有个方法可以做到,具体步骤如下:按键盘上的F12,然后选中Elements选项卡,接着鼠标右键选择head标签Edit as HTML,添加如下代码 <base target="_blank"> 最后再按一次F12键,然后就可
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2

监听器(Listener)学习(一)

一、监听器介绍 1.1、监听器的概念   监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行。 1.2、监听器案例——监听window窗口的事件监听器 package com.listener.demo; import java.awt.Frame; imp
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2

【数据类型】

(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。 (2)分类:   A:基本数据类型:4类8种   B:引用数据类型:类,接口,数组。 (3)基本数据类型   A:整数 占用字节数    byte 1    short 2    int 4    long 8   B:浮点数    float 4    double 8   C:字符    char 2   D:布尔    boolean 1 注意:   整数默认是int类型,浮点数默认是double。   长整数要加L或
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2

rownum的使用 轉載

在Oracle中,要按特定条件查询前N条记录,用个rownum就搞定了。 select * from emp where rownum <= 5 而且书上也告诫,不能对rownum用">",这也就意味着,如果你想用 select * from emp where rownum > 5 则是失败的。要知道为什么会失败,则需要了解rownum背后的机制: 1 Oracle executes your query. 2 Oracle fetches the first row and calls i
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2

比例谐振控制的一种实现

原文地址:https://donghao2nanjing.github.io/2018/06/22/PR_Controller/ 1. 比例谐振控制器简介 首先,我们来看看比例谐振控制器的传递函数和伯德图: \[ G_{PR}(s)=K_{p} + \frac{K_{r}s}{s^{2} + \omega_{r}^2} \] \(\omega_{r}\) 是.谐振频率。 如上图所示,在50Hz(314 rad/s)处,幅频曲线的增益为无穷大,这就是为什么比例谐振控制器能够无静差跟踪特定频率信号
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2

(学习笔记版)Hadoop入门(一):Hadoop2.7.3完全分布式集群安装

在这里写下安装hadoop2.7.3版本的完全分布式的过程,因为刚开始学习hadoop不久,希望自己把学习的东西记录下来,和大家一起分享,可能有错误的地方,还请大牛们批评指正,在我学习的道路上多提点意见和建议,非常感谢!下面就是安装的过程,我是在我的笔记本里安装了VirtualBox,然后安装了4个虚拟机,一个做master,三个做slave。 1. 安装VirtualBox VirtualBox-5.2.12-122591-Win.exe 当VirtualBox安装完成之后,主机器上会出现一
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2

DDL语句(六) -- 标识列

标识列(自增长列) 特点: 1、不用手动插入值,可以自动提供序列值,默认从1开始,补偿为1;   auto_increment_increment   如果要更改起始值,手动插入值;如果要更改步长,更改系统变量。   SET auto_increment_increment = 值; 2、一个表至多有一个自增长列 3、自增长列只能支持数值型 4、自增长列必须为一个 key 一、创建表时设置标识列   creat TABLE表(     字段名 字段类型 约束 AUTO_INCREMENT   
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2

算法学习笔记(四):堆排序

#说的还是感觉不够清晰,感兴趣的勉强看看吧 (一) 堆 这里的堆指的是堆数据结构,不是Java中的垃圾收集器。堆可以理解为一个近似的完全二叉树,如下图,除了最底层之外该树是完全满的,并且是从左往右填充。(最底层只是不要求填充满,不是不能填充满) 例如:[5, 7, 8, 10, 12, 15](小顶堆) (二) 堆的性质 软件设计师考试资料中对于堆的定义,要满足下面的公式。 (三) 堆排序的过程 分为2个过程: 1、 建立大顶堆或小顶堆。 2、 对最大堆或最小堆进行排序 (四) 建立大顶堆(理
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2

【转】V8 之旅: 垃圾回收器

垃圾回收器是一把十足的双刃剑。其好处是可以大幅简化程序的内存管理代码,因为内存管理无需程序员来操作,由此也减少了(但没有根除)长时间运转的程序的内存泄漏。对于某些程序员来说,它甚至能够提升代码的性能。 另一方面,选择垃圾回收器也就意味着程序当中无法完全掌控内存,而这正是移动终端开发的症结。对于JavaScript,程序中没有任何内存管理的可能——ECMAScript标准中没有暴露任何垃圾回收器的接口。网页应用既没有办法管理内存,也没办法给垃圾回收器进行提示。 严格来讲,使用垃圾回收器的语言在性
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2

yii rbac

什么是rbac ? rbac是就是基于角色的访问控制。 yii提供一套基础的底层接口,我们知道,rbac经历好几个阶段,从rbac0到rbac3,从基础的用户、角色、权限,到动态的rbac处理模式,再到现在的权限继承,解决复杂的多页面元素权限分配。 总而言之,rbac有三个特性。 1. 基础: 角色、权限、用户 三大体系。 2. 权限继承: 角色派生原则,一个角色可以派生多个低权限角色。例如:总经理 =》经理、副经理、营运等 3. 权限分配: 权限分配必须从基础权限到高级权限,如果想拥有高级权
分类: 其他 发布时间: 06-23 23:28 阅读次数: 2