`
xdgj
  • 浏览: 36074 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论
文章列表
  下面是一段c++代码,你能知道运行的结果吗? #include<iostream> using namespace std; class cpp_obj { public: cpp_obj() { cout<<"ctor\n"; } cpp_obj(const cpp_obj& c) { cout<<"copy ctor\n"; } cpp_obj& operator=(const cpp_obj& ...
   假定有两个字符串s1,s2,求出由s1变为s2所需要花费的最小代价。删除一个字符的代价为1,增加一个字符的代价为2,替换一个字符的代价为2。比如由“abc”变为“abe”,你可以删除c,然后添加e,这样代价是3;也可以将c替换成e,这样代价是2,显然2比较小。具体串编辑问题请参阅算法书籍。本代码运用的是动态规划的思路,这里状态转移方程略去,如果需要给出具体的编辑轨迹,那需要用一个二维数组来记录,有兴趣的读者可以写下。(代码没有进行全面的测试,“可能”存在问题)   public class Test { public int min(int x,int y,int z) { ...
  #include<iostream> using namespace std; const int N=26; extern int com(const void *a,const void *b); int main() { char *s="Gejun Com on C Come in"; if(strlen(s)<=26) { int i=0; char *as[N]={NULL}; while(*s!='\0') { if(*s!=' ') a ...
#include<iostream> using namespace std; int main() { extern int f(int [],int); int a[8]={1,-2,5,-3,-1,4,6,0}; int m=f(a,8); cout<<"最长递增子序列的长度是"<<m<<endl; system("Pause"); return 0; } int f(int arry[],int n) { //Lis[i]存储着以a ...
  C语言里的左移和右移运算 先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i = 1;i = i << 2;    //把i里的值左移2位 也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成000... 0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化,下面解释原因) 需要注意的一个问题是int类型最左端的符号位和移位移出去的情况.我 ...
  通过这篇来加深对动态规划的理解。  动态规划法 经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。 为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。     【问题】 求两字符序列的最长公共字符子序列
  传统的fork()系统调用直接把所有的资源复制给新创建的进程。这种实现过于简单并且效率低下,因为它拷贝的数据或许可以共享。更糟糕的是,如果新进程打算立即执行一个新的映像,那么所有的拷贝都将前功尽弃。     Linux的fork()使用写时拷贝 (copy- on-write)页实现。写时拷贝是一种可以推迟甚至避免拷贝数据的技术。内核此时并不复制整个进程的地址空间,而是让父子进程共享同一个地址空间。只用在需要写入的时候才会复制地址空间,从而使各个进程拥有各自的地址空间。也就是说,资源的复制是在需要写入的时候才会进行,在此之前,只有以只读方式共享。这种技术使地址空间上的页的拷贝被推迟 ...
转载: 关于VS2008运行CLR—Windows窗体应用程序的时候 error PRJ0003 : 生成 cmd.exe 时出错 解决方法: tools=> Options => Projects and Solutions -> VC++ Directories page then place below rows(即添加下面3个项目,可以手动输入): $(SystemRoot)\System32$(SystemRoot)$(SystemRoot)\System32\wbem  
  4. 解读示例插件的代码   让我们回到插件工程来,看一看插件工程生成的代码。首先看一下plugin.xml的代码。 代码2-1 plugin.xml     <?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.4"?> <plugin> <extension point="org.eclipse.ui.actionSets"> ① ...
2. 插件的动作   接下来我们看一下插件的动作。manifest编辑器的[概要]页面右侧[启动Eclipse应用(Luanch an Eclipse application)](图2-7)。点击后,会启用一个新的Eclipse实例。这个新的实例被称为[运行时工作台]。运行工作台可以以嵌入当前正在开发的插件的状态启动,以使开发者可以对插件的动作进行确认。 图2-7 启动运行时工作台        启动的运行时工作台,会在菜单栏上增加一个新的菜单项。这个菜单项就是插件的代码追加上去的。在工具栏上也增加了一个相应的按钮。   工具栏上的按钮和菜单项目效果相同,都会出现一个[Hel ...
在Eclipse中使用PDE(Plugin Development Environment)进行插件开发。在PDE中为大家准备了几个模板供大家参考。第一步咱们先利用模板制作一个简单的插件作为和PDE的第一次接触。   1.生成插件工程   通过选择[文件]->[新建]->[工程...]启动[新工程(New Project)]向导。在插件开发的时候我们就不能选择通常的java工程了,要选择新建一个插件工程。   选择[插件工程(Plug-in Project)]后点击[下一步(Next)](图2-1)。下一步,输入一个适当的项目名(图2-2)。习惯上项目名和插件的ID是相同的 ...
4.工作区和资源API   在Eclipse中使用工作区作为开发人员的作业区域。工作区是在Eclipse启动时指定的一个物理文件夹。开发人员在Eclipse上生成工程、创建文件等操作都会在工作区指定的文件夹内生成实际的文件。   工作区内的资源在Eclipse内部使用org.eclipse.core.resources包中定义的虚拟对象进行操作,例如工程是IProject、文件夹是IFolder、文件时IFile。 图1-4 工作区内的资源      在插件开发的时候很多情况都会使用到工作区内的文件或者文件夹。这时就可以使用这些对象。   对工作区的访问需要使用org.ecl ...
名词翻译   有一些名词在翻译的过程中可能会出现歧义,在这里统一一下。   アーキテクチャ=architecture=架构   プラットフォーム=platform=平台   コンポーネント=component=组件   其余的随时补充。  1.Eclipse的架构   Eclipse被作为java的IDE(集成开发环境)被广泛的应用,但是从本质上看Eclipse是一个整合了各种开发工具的平台。因此,它采用了可以自由的增加各种功能的插件架构技术。Eclipse平台的基本架构如图1-1所示。    图1-1 Eclipse的架构
  Java实现线程“暂停”和“继续”的功能。虽然suspend方法和resume方法已经过时,但是感觉实现起来比较方便。当然,前提是程序不是很复杂,不会出现死锁。   下面便是演示代码,可以直接运行看效果。 import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; ...
    自己的一个数据库作业的一部分,数据库连接池的简单实现,采取的是单例模式,同时采用了同步锁机制。关于单例模式大家可以参考《java与模式》,条件同步锁可以参考我之前的一些博文介绍。代码如下,忘大家不吝赐教。 import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.List; import java.util.Properties; import java. ...
Global site tag (gtag.js) - Google Analytics