为什么要并发编程?
多线程并发处理会提升性能,为了让程序运行的更快。但是,并不是启动更多的线程能让程序最大限度的并发执行。
并发编程会面临什么样的问题?
并发编程会面临非常多的挑战,比如:上下文切换问题、死锁问题、以及受限于硬件和软件的资源限制问题。
2.1 什么是上下文切换?
CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保...
#include<iostream>
#include<cstdlib>
using namespace std;
#define RED 1
#define BLACK 0
typedef struct TreeNode
{
int Element;
int Color;
TreeNode *Parent;
TreeNode *Left;
TreeNode *Right;
TreeNode()
{
Color=BLACK; //let initial node become black
}
}*MyRBTree;
MyRBTree ...
为什么我用codeblock,C++包含头文件编译器说找不到定义的函数呢?我确信我定义了,难道我少加了点什么?
这是一个简单的接口书写
****************************************************************************
<?php
$mysqli = new mysqli('localhost', 'root', '123456','interfacetest');
mysqli_query($mysqli,"set names utf8");
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli...
在我们开发一些项目的时候,一般需要一些外围的设备进行数据处理,如ID/IC读卡器获取卡号、激光条码扫描枪、USB摄像头、USB方式的小票据打印机(POS打印机)、USB来电录音盒、普通打印机等一系列附属设备。借助这些设备,可以使我们的业务流程更严谨,输入数据更方便,或者能够一些特殊的数据等功能。本文主要介绍其中的ID读卡器(IC读卡器)快速读取卡号,以及实用激光条码枪的条码扫描录入功能,后面的一些硬件设备的处理,后续文章在继续介绍。
1、设备介绍
前面介绍的设备,在很多场合上都可能用到,如我的会员管理系统里面,就需要用到下面的设备处理。
...
一、PowerManager
主要是用来控制电源状态,设置屏幕状态,和电池待机状态
PowerManager pm = ((PowerManager)getSystemService(POWER_SERVICE));
这里我需要保持屏幕长期唤醒,不被锁屏,所以我调用WakeLock。
WakeLock wake = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK |powerManager.ON_AFTER_RELEASE, **Activity.c...
#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct TreeNode
{
int Element;
int Height;
TreeNode *Left;
TreeNode *Right;
}*MyAVLTree;
MyAVLTree MakeEmpty(MyAVLTree &T);
void InorderTraverse(const MyAVLTree &T);
static int Max(int a,int b);
static int ...
#include<iostream>
#include<cstdlib>
using namespace std;
/*查找二叉树,这里用的都是无敌的递归方法,因为它极容易理解,
也很容易编程,但值得注意的是返回值很重要*/
typedef struct TreeNode
{
int Element;
TreeNode *Left;
TreeNode *Right;
}TreeNode,*MyTree;
MyTree MakeEmpty(MyTree &T); //二叉树置空
void InorderTraverse(const MyTree ...
一开始我用的变量是局部的它的毛病就是所有的操作只能做一次,然后啥也没改变。
那么解决的一个方法就是 引用地址
引用地址使得全局有效
不说了
直接上上点代码
typedef struct TreeNode
{
char Element;
TreeNode *Left;
TreeNode *Right;
}*MyTree;
void Exchange(MyTree T)
{
if(T)
{
MyTree Temp=NULL;
if(T->Left||T->Right)
{
...
#include<iostream>
#include<cstdlib>
#define MAX 100
using namespace std;
typedef struct Queue
{
int Array[MAX];
int Front;
int Rear;
} *CircleQueue;
CircleQueue Create(void); //创建一个队列
int IsEmpty(CircleQueue Q); //是否为空
int IsFull(CircleQueue Q); //是否已满
void EnQueue(Circle...
一、官网http://maven.apache.org/,下载maven
二、maven环境变
计算机-属性-高级系统设置-环境变量 新建一个MAVEN_HOME变量,我的maven安装在E:\服务器\apache-maven-3.3.9,所以变量值是E:\服务器\apache-maven-3.3.9,然后再Path后面添加上;%MAVEN_HOME%\bin
三、WIN+R 输入mvn -v
输出下面内容
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323d...
每一个新开发的软件都避免不了测试,这里总结了一些Android系统的移动端APP测试的一些测试流程,希望可以给大家一些帮助。
1. UI 测试
App主要核ui与实际设计的效果图是否一致;交互方面的问题建议,可以先与产品经理确认,确认通过后,才开始让开发实施更改或优化。
2.APP功能测试
根据软件说明或用户需求验证App的各个功能实现,实际测试过程一般都是根据功能测试用例来执行。测试覆盖率基本上都是有测试用例主导,也就是说在功能...
#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct Queue
{
int *Array;
int Front,Rear;
}*MyQueue;
MyQueue Create(void); //创建一个队列
int IsEmpty(MyQueue Q); //检验是否为空栈
void DeQueue(MyQueue Q); //出队
void EnQueue(int X,MyQueue Q); //入队
void GetQueueFront(MyQ...
一、页面js,style复用,命名规范
二、注意标签缩进
三、将页面中的图片统一进行处理,合并,再使用style引入,获取指定图片位置中的内容
<html>
<head>
<style>
.TCLogo {
width:146px;
height:36px;
background-image:url(原图.png);
background-attachment:fixed;
background-position:-100px -87px;
background-repeat:no-repeat;
}
...
#include<iostream>
#include<cstdlib>
#define MAXSIZE 100
using namespace std;
typedef struct Node
{
struct Node *Next; //队列元素的节点连接
int Element;
}MyNode;
typedef struct Queue
{
Node *Front; //Front和Rear连接着各自应有的节点
Node *Rear;
int Items; //队列元素的个数,用于判断是否空队列,...
#include<iostream>
#include<cstdlib>
#define LEN sizeof(struct Node)
using namespace std;
struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode Position;
struct Node //节点
{
int Element ;
struct Node *Next;
};
int IsEmpty(Position Top); //检验空栈
void GetStackTo...
#include<iostream>
#include<cstdlib>
using namespace std;
int *Array=NULL;
int Count=0;
void Initial(int Size); //初始化栈
void Push(int Element); //入栈
int GetStackLenth(void);//获取栈的个数
void GetTopOfStack(void);//栈顶元素
void Pop(void); //出栈
void Traverse(void); //遍历
voi...
//我发现,插入操作时,总是先把New与已有节点连接
#include<iostream>
#include<cstdlib>
#define LEN sizeof(struct Node)
using namespace std;
typedef struct Node *PtrToNode;
typedef PtrToNode Position;
struct Node
{
int Element;
struct Node *Last;
struct Node *Next;
};
Position Create(void); ...
前一段时间自己想写几行代码,所以就有了以下的代码:
public class TestString_1 {
public static void main(String[] args) {
String str1="this is test";
String str2="this is test";
String str3=new String("this is test");
String str4=new String("this is test");
System...
考虑到代码的维护性。代码不在发布在blog里面。已经托管github 。谢谢关注