Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

C#异步委托

C#异步委托

在C#中,委托类型是一个类型安全的、面向对象的函数指针。当我们通过delegate关键字定义一个委托类型后,编译器会给委托类型生成三个方法:Invoke、BeginInvoke和EndInvoke。例如对于下面委托类型,可以通过ILSpy查看编译器生成的三个方法。private delegate int NumberAdd(int a, int b);同步执行委托实例在使用委托的应用中,最常见的就是通过Invoke()方法以同步方式执行委托实例。也就是说,...
Java实现堆排序(大根堆)

Java实现堆排序(大根堆)

堆排序是一种树形选择排序方法,它的特点是:在排序的过程中,将array[0,...,n-1]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(最小)的元素。1. 若array[0,...,n-1]表示一颗完全二叉树的顺序存储模式,则双亲节点指针和孩子结点指针之间的内在关系如下: 任意一节点指针 i:父节点:i==0 ? null : (i-1)/2 左孩子:2*i + ...
Java实现链式存储的二叉树

Java实现链式存储的二叉树

二叉树的定义: 二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的、分别称作这个根的左子树和右子树的二叉树组成。 二叉树的遍历方式主要有:先序遍历(NLR),中序遍历(LNR),后序遍历(LRN),和层次遍历。 注意: 由二叉树的先序序列和中序序列可以唯一地确定一颗二叉树; 由二叉树的后序序列和中序序列可以唯一地确定一颗二叉树; 由二叉树的层序序列和中序序列...
Java实现链式存储的二叉查找树(递归方法)

Java实现链式存储的二叉查找树(递归方法)

二叉查找树的定义:二叉查找树或者是一颗空树,或者是一颗具有以下特性的非空二叉树:1. 若左子树非空,则左子树上所有节点关键字值均小于根节点的关键字;2. 若右子树非空,则右子树上所有节点关键字值均大于根节点的关键字;3. 左、右子树本身也分别是一颗二叉查找树。二叉查找树的实现,功能有:1. 用一个数组去构建二叉查找树2. 二叉查找树的中序遍历和层次遍历3. 插入节点4. 查找节点5. 查找二叉树中的最大值和最小值6. 得到节点的直接父节点7. 得到节点的直...
Java实现线性表-顺序表示和链式表示

Java实现线性表-顺序表示和链式表示

顺序表示和链式表示的比较:1.读写方式:顺序表可以顺序存取,也可以随机存取;链表只能从表头顺序存取元素;2.逻辑结构与物理结构:顺序存储时,逻辑上相邻的元素其对应的物理存储位置也相邻;链式存储时,逻辑上相邻的元素,其物理存储位置则不一定相邻;3.查找、插入和删除操作: 按值查找,当线性表在无序的情况下,两者的时间复杂度均为o(n);而当顺序表有序时,可采用折半查找,此时时间复杂度为o(log n); 按位查找,顺序表支持随机访问,时间复杂度为o(1);...
Linux Shell 程序调试

Linux Shell 程序调试

Shell程序的调试是通过运行程序时加入相关调试选项或在脚本程序中加入相关语句,让shell程序在执行过程中显示出一些可供参考的“调试信息”。当然,用户也可以在shell程序中的适当位置加入一些echo命令用于调试与跟踪。方法一:在运行脚本程序时加入调试选项:【用法】bash –选项 ./shellScript.sh几个常用的调试选择项如下: -e :如果一个命令返回一个非0退出状态值(失败),就退出。 -n...
Node.js 命令行程序开发教程

Node.js 命令行程序开发教程

一种编程语言是否易用,很大程度上,取决于开发命令行程序的能力。Node.js 作为目前最热门的开发工具之一,怎样使用它开发命令行程序,是 Web 开发者应该掌握的技能。最近,Npm的网志有一组系列文章,我觉得写得非常好。下面就是我在它的基础上扩展的教程,应该是目前最好的解决方案了。一、可执行脚本我们从最简单的讲起。首先,使用 JavaScript 语言,写一个可执行脚本 hello 。#!/usr/bin/env nodeconsole.log("hell...
深入理解进程间通信之共享内存

深入理解进程间通信之共享内存

共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。是针对其他通信机制运行效率较低而设计的。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。 采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需...
C语言的命名规范

C语言的命名规范

在C语言中一般并命名的名字都被称为标识符。标识符是指一个字符组成的序列,通常包括变量名、常量名、函数名、程序名等。这些名字的命名都必须符合C语言的规范,否则程序运行是会出现错误。命名时必须符合以下规定:C语言中严格区分大小写,例如“a“和”A”分别表示两个不同的命名,意义完全不一样。C语言命名需要以下划线或者字母开头,不能以数字开头。C语言中命名的名字长度不限,但一般只有前8位有效,不同的命名前8位一定要不相...
Java字符串缓冲池分析

Java字符串缓冲池分析

Java的虚拟机在内存中开辟出一块单独的区域,用来存储字符串对象,这块内存区域被称为字符串缓冲池。那个java的字符串缓冲池是如何工作的呢?String a = "abc";String b = "abc";String c = new String("xyz");例如上边的代码: String a = “abc”; 创建字符串的时候先查找字符串缓冲池中有没有相同的对象,如果有相同的对象就直接返回该对象的引用,如果没有相同的对象就...
Spring+Hibernate数据保存问题

Spring+Hibernate数据保存问题

Spring MVC的优势我就不多说了,在使用Spring MVC的时候要比Struts2舒服多了,至于持久层也还是比较倾向于Hibernate,于是开始试着用Spring+hibernate搭一个简易的权限控制系统(前端用的jQuery-easyUI)。背景交代完毕,开始说需求:在新增用户的时候需要给用户绑定一个组织机构,一个或者多个角色,在设计User这个Bean的时候自然就是:public class User{ private int id; ...
Java Robot 类模拟键盘按键和鼠标点击(全局模拟)

Java Robot 类模拟键盘按键和鼠标点击(全局模拟)

Robot类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。使用该类生成输入事件与将事件发送到 AWT 事件队列或 AWT 组件的区别在于:事件是在平台的本机输入队列中生成的。例如,Robot.mouseMove 将实际移动鼠标光标,而不是只生成鼠标移动事件。我们可以利用这个类写出好多有意思的东西,下面我将详细的这个类的用法。Robot这个类中的方法并不是很多...
设计模式在项目中的应用

设计模式在项目中的应用

简单工厂设计模式在项目中应用项目使用场景:根据不同的厂家,有不同的报表打印形式,而对于报表的打印他们有公共的部分,打印报表头、打印底部、和打印中间部分。我们可以使用简单工厂模式,抽象出打印报表的接口,不同的厂家实现不同的打印接口。单例模式在项目中应用场景1:在DOM读取配置文件的时候,因为经常被用到这个类,我们可以设置一个全局类,不用每次都new那么多的类,节省资源消耗。场景2:在spring的IOC依赖注入的时候,默认的是采用单例模式,例如control...
10行Java代码实现最近被使用(LRU)缓存

10行Java代码实现最近被使用(LRU)缓存

在最近的面试中,我曾被多次问到,怎么实现一个最近最少使用(LRU)的缓存。缓存可以通过哈希表来实现,然而为这个缓存增加大小限制会变成另一个有意思的问题。现在我们看一下怎么实现。最近最少使用缓存的回收为了实现缓存回收,我们需要很容易做到:查询出最近最晚使用的项给最近使用的项做一个标记链表可以实现这两个操作。检测最近最少使用的项只需要返回链表的尾部。标记一项为最近使用的项只需要从当前位置移除,然后将该项放置到头部。比较困难的事情是怎么快速的在链表中找到该项。哈...
[翻译]用 JSON 构建 API 的标准指南

[翻译]用 JSON 构建 API 的标准指南

如果你和你的团队曾经争论过使用什么方式构建合理 JSON 响应格式, 那么 JSON API 就是你的 anti-bikeshedding 武器。通过遵循共同的约定,可以提高开发效率,利用更普遍的工具,可以是你更加专注于开发重点:你的程序。基于 JSON API 的客户端还能够充分利用缓存,以提升性能,有时甚至可以完全不需要网络请求。下面是一个使用 JSON API 发送响应(response)的示例:{"links": {"posts.author": ...
HTML5 input事件检测输入框变化

HTML5 input事件检测输入框变化

之前一直用change事件来监听输入框内容是否发生变化,只有当输入框失去焦点时才会触发,没想到html5还有个input事件,只要输入框内容发生变化就会立即触发,既然有这么好的东西我们干嘛放着不用呢,接下来就来给大家介绍一下:如果我们页面上有这样一个简单到极致的输入框:<input type="text">那么我们现在用jquery给它绑定input事件,如下:$("input:text").bind("input propertychange...
<< 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 >>