- 浏览: 36074 次
- 性别:
- 来自: 西安
最新评论
-
lolo9101001:
这个jar包你还在研究嘛?我看了你的程序,挺好,但是怎么把这个 ...
JGraph 画出你想要的图形
文章列表
下面是一段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. ...