关于PhantomReference的问题求解

今天闲来无事,自己写了段代码试了一下几种Reference,但是在PhantomReference的时候,遇到了一点问题。还望指点迷津。
问题是这样的。

import java.lang.ref.PhantomReference;
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;

import org.junit.Test;

public class PhantomReferenceTest {

    @Test
    public void testReference() {
        Object object = new Object();
        ReferenceQueue<Object> referenceQueue = new ReferenceQueue<Object>();
        Reference<Object> reference = new PhantomReference<Object>(object,
                referenceQueue);
        System.out.println(reference);
        System.out.println(reference.isEnqueued());
        object = null;
        System.gc();
        System.out.println(reference.isEnqueued());
        try {
            System.out.println(referenceQueue.remove(2000));
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

运行以后得到以下结果:

java.lang.ref.PhantomReference@cac268
false
true
java.lang.ref.PhantomReference@cac268

 

这说明,我的reference对象被加入到了ReferenceQueue中。但是,现在我重新写了个类,在他的finalize方法中加了一句话。

public class TestObject {
    @Override
    protected void finalize() throws Throwable {
        System.out.println("finalize method executed");
        super.finalize();
    }
}

然后再运行junit

import java.lang.ref.PhantomReference;
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;

import org.junit.Test;

public class PhantomReferenceTest {

    @Test
    public void testReference() {
        Object object = new TestObject();  // 换成TestObject
        ReferenceQueue<Object> referenceQueue = new ReferenceQueue<Object>();
        Reference<Object> reference = new PhantomReference<Object>(object,
                referenceQueue);
        System.out.println(reference);
        System.out.println(reference.isEnqueued());
        object = null;
        System.gc();
        System.out.println(reference.isEnqueued());
        try {
            System.out.println(referenceQueue.remove(2000));
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

运行结果为:

java.lang.ref.PhantomReference@1cde100
false
false
finalize method executed
null
这说明我的reference对象没有被加到ReferenceQueue中,对此,我不解,为什么重写了finalize方法以后,就不能加进去,还望各位指点。


问题补充
自己顶起来,高人们啊,都别潜水了。出来活动活动。
问题补充
IcyFenix 写道
把“System.gc();”换成“System.gc();Thread.sleep(100);System.gc();”试试
等一等Finalizer线程把F-Quence扫干净。


啊,果然,为什么要多写一次System.gc();呢?而其他的SoftReference,WeakReference不需要这样。

1个回答

把“System.gc();”换成“System.gc();Thread.sleep(100);System.gc();”试试
等一等Finalizer线程把F-Quence扫干净。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
SoftReference,WeakReference和PhantomReference的区别??!
还有,就是他们和ReferenceQueue的关系rnrnThinking in Java讲的不清楚rnrn哪位大虾在给我说说,一百分答谢!
PhantomReference的应用时机?
Thinking in java 上提到了Reference这个抽象类,其下有三个子类:rnSoftReference,WeakReference,PhantomReference.rn前两个看了"Java 2 引用类使用指南"这篇文章后,基本上了解它们的应用时机了.rn唯有第三个PhantomReference这个类,不知道什么情况下会用到.rn望高手赐教~~~
关于JS的问题求解 关于JS的问题求解
我页面有很多input标签 我想获取type=text的将readOnly属性改为false 求解 只需要改动类型为text的 button 或者别的不需要改
关于handler的问题求解
这个是书上的例子请各位看一下,就一个activity:rnrnpublic class CalPrime extends Activityrnrn static final String UPPER_NUM = "upper";rn EditText etNum;rn CalThread calThread;rn // 定义一个线程类rn class CalThread extends Threadrn rn public Handler mHandler;rnrn public void run()rn rn Looper.prepare();rn mHandler = new Handler()rn rn // 定义处理消息的方法rn @Overridern public void handleMessage(Message msg)rn rn if(msg.what == 0x123)rn rn int upper = msg.getData().getInt(UPPER_NUM);rn List nums = new ArrayList();rn // 计算从2开始、到upper的所有质数rn outer:rn for (int i = 2 ; i <= upper ; i++)rn rn // 用i处于从2开始、到i的平方根的所有数rn for (int j = 2 ; j <= Math.sqrt(i) ; j++)rn rn // 如果可以整除,表明这个数不是质数rn if(i != 2 && i % j == 0)rn rn continue outer;rn rn rn nums.add(i);rn rn // 使用Toast显示统计出来的所有质数rn Toast.makeText(CalPrime.this , nums.toString()rn , Toast.LENGTH_LONG).show();rn rn rn ;rn Looper.loop();rn rn rn @Overridern public void onCreate(Bundle savedInstanceState)rn rn super.onCreate(savedInstanceState);rn setContentView(R.layout.main);rn etNum = (EditText)findViewById(R.id.etNum);rn calThread = new CalThread();rn // 启动新线程rn calThread.start();rn rn // 为按钮的点击事件提供事件处理函数rn public void cal(View source)rn rn // 创建消息rn Message msg = new Message();rn msg.what = 0x123;rn Bundle bundle = new Bundle();rn bundle.putInt(UPPER_NUM ,rn Integer.parseInt(etNum.getText().toString()));rn msg.setData(bundle);rn // 向新线程中的Handler发送消息rn calThread.mHandler.sendMessage(msg);rn rnrnrn 我不明白的是他这个handler是放在子线程的啊,那这个子线程的handleMessage方法怎么能操作ui线程呢?只是在按钮中调用了一句calThread.mHandler.sendMessage(msg);就能让子线程的handler操作ui线程吗?这个子线程的handler和ui线程好像没啥联系啊?
关于屏幕适配问题求解!!!!!
一张图片可能在不同的手机分辨率上都会显示的不同,有的可能会失真,怎么解决这类事情?rn求正解!!!!!!!
关于list问题求解
有一个list里面的数据如下:rn1 1rn2 1rn3 1rn4 1rn5 2rn6 2rn7 2rn8 3rn9 3rnrn遍历list得到结果为:rn1,2,3,4rn5,6,7rn8,9rnrnrn要怎么实现,效率高点?
关于表数据分割问题求解
有的时候为了减少存储记录数,可能会把多条记录合并为一条显示。这种情况的发生主要体现上记录在表的其它字段都相同,只有某一个字段是变化的这种情况,但是在查询的时候又要将其分开,我想了一种方法,但感觉还不够好,想请教下大家有没有更好的办法。看下面这个里面是如何处理的rn[url=http://blog.csdn.net/dotnetstudio/article/details/39341499#comments][/url]
关于STL的问题求解
你曾经使用过由操作系统提供的文件查找工具吗?例如,在Windows操作系统中,如果你搜索“*.exe”,那么操作系统就会列出搜索路径下扩展名为“exe”的所有可执行文件。现在,你决定在一个自己编写的操作系统中实现文件查找功能,请编写该程序。rnrnrn使用STL的vector 跟string 编写
关于递归问题求解
在网上见到一个归并排序的code:rn/*include.....*/rnvoid merge(.....)rnrn ...../*具体就是对分割好的子数组排序,很简单。不写了*/rnrnrnvoid merge_sort(int *a,int left,int right)rnrn int half;rn if(left
关于嵌套问题求解
我写了一个查询语句,里面条件用OR 结果查询速度特别慢,现在在条件里又加了一个嵌套,可是问题出来了,前后都有and连接,不知道怎么写了,请大家帮忙改改!rn and nvl(dr, 0) = 0) tz2rn where tz.freevalueid = a.assidrn and tz1.freevalueid = a.assidrn and tz2.freevalueid = a.assidrn and b.pk_accsubj = a.pk_accsubjrn[color=#FF0000]从这里开始 and b.subjcode=(select subjcode from bd_accsubj b where b.subjcode like '1131%' or b.subjcode like '2121%' or b.subjcode like '1151%')到这里结束,前后有and应该怎么改[/color] and curr.pk_currtype=a.pk_currtypern group by tz1.valuecode,rnrnrn谢谢各位了啊
关于win2k的网络问题求解
我的机器可以顺利的查看局域网内的任何机器的共享资源,可以进行各种文件操作。但局域网中的其他机器只能看到我的机器,却不能进入看到我的共享列表,不知道什么原因?
关于JavaScript的问题求解答
创建array类型的对象MyArray,完成下面操作rn(1)要求初始化时包含10个元素。rn(2)在MyArray位置50处插入数值50rn(3)将MyArray中的元素显示出来,各元素用"* "分隔rnrn```rnrnrnrn rn 4-2rn rnrnrnrnrnrnrn```rn我的代码在浏览器打开后好像没有运行哪
关于屏蔽问题求解?
请问谁可以帮我解决这样一个问题:rn 怎样屏蔽浏览器中的最大化按钮和最小化按钮?(也就是说在浏览器中的最大化和最小化按钮不能用,只有你关闭按钮能用)
关于日志查询的问题求解!
#pragma pack(1)rnstruct CHqUserTracernrn short m_nSize; //本结构的长度rn char m_szUserID[16]; //用户IDrn char m_szIP[16]; //用户登录IPrn long m_lTotalReceived; //接收的总字节数rn long m_lTotalSend; //发送的总字节数rn long m_lRequest; //请求总次数rn long m_lTime_S; //上线时间rn long m_lTime_E; //离线时间rn char m_szError[32]; //错误信息rnrn CHqUserTrace()rn rn memset(this, 0, sizeof(CHqUserTrace));rn m_nSize = sizeof(CHqUserTrace);rn rn;rnrn#pragma packrnrn要求:rn①按照时间段统计 rn②按照Ip地址段统计rnrn统计要求:rn①能统计到用户数 rn②某用户、所有用户总访问时间rn③某用户、所有用户的平均时间rnrn日志是.log的文件,不是纯文本,用文本方式打开出现以下乱码,希望高人指点一下!谢谢!rnV gf18 218.14.75.35 ? 泖 rn 趕@t@ V gf18 218.14.10.10 ? 滯? y=@*t@ V gf18 218.16.131.228 ? 栊rn V 秔@ht@ V gf18 218.16.134.120 €1 C? c 7Z@ut@ V gf18 211.159.85.163  ?  ut@焧@ V gf18 218.15.67.34 € 4?  `t@祎@ V gf18 210.53.201.157 ^  鈚@&u@ V gf18 218.13.129.214 A 痲% 8 /@Du@ V gf18 218.19.245.92 rn 觝  ?@Fu@ V gf18 218.97.228.231  Je  @Su@ V gf18 61.51.176.205  躻'  u@Wu@ V gf18 218.15.156.208 € ?  u@nu@ V gf18 218.63.116.8 €   qu@僽@ V gf18 218.72.28.188 ? \  o@@ V gf18 218.20.115.163 唪 杂r ? 玡@﹗@ V gf18 220.113.165.82 "7 B j [s@譽@ V gf18 218.244.92.164 ? 牯  t@鎢@ V gf18 210.82.103.98  漚u  蘔@鰑@ V gf18 61.186.58.2 - _ Z 2n@鷘@ rn
关于页面刷新的老问题求解
找了半天了,没头绪,求解rn一个主页面Main.aspx,上面有一个文本框textbox1和一个按钮button1,光标落在文本框上的时候按button1,弹出文字选择列表,选择完成把文字返回到主页面光标所在的位置。rnrn现在的问题是:1.button1如果用服务器端控件,主页面会被刷新,textbox1里的文字会消失rn 2.弹出的子页面的值如何回传到textbox1里rnrn我的想法:用JS取出光标的位置和控件名,用window.open('newwindow.aspx?pos=XX'...)传过去,在子页面用opener把选择的值插回textbox1,关键是不想刷新页面,可行否?rn请大家指教一二,谢谢
关于select的很菜的问题求解
rnrn rn rn 0rn 1rn 2rn rnrn rnrn
关于蛇形填数问题求解
在n*n方阵里填入1, 2, 3, 4, 5...........n*n,填成蛇形,如: n = 4时 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 代码如下
关于整数溢出问题求解
样例输入rn123456789 987654321rn0 0rnrn输出应该为rn13548070123626141rnrn但我的输出结果是rn-7461446rnrn结果显示溢出了,求问如何解决rnrn#include rnusing namespace std;rnrnvoid change(int *a, int *b)rnrn if(*a < *b)rn rn int temp = *a;rn *a = *b;rn *b = temp;rn rnrnrnint gcd(int a, int b)rnrn int temp;rn change(&a, &b);rn while(a%b != 0)rn rn temp = a % b;rn a = b;rn b = temp;rn rn rn return b;rnrnrnrnint main()rnrn long a, b,gcd_result,i = 0;rn dorn cin >> a;rn cin >> b;rn gcd_result = gcd(a,b);rn cout << (long)(a*b/gcd_result) << endl;rn rn while(a != 0 && b != 0);rnrn return 0;rn
关于exec(@sql)问题求解
exec ( 'select sum(JiHua_Count) from JiHua_Msg where'+ @SqlWhere)rnrn执行存储过程时,一直报 “第 1 行: '2009-11-02' 附近有语法错误。 ” 不知道该如何解决?rnrnrn参数 @SqlWhere 的内容是 IsDelete=0 and ( JiHua_Time between '2009-11-02' and '2009-11-03' )rnrn——————————————————————————————————————————————————————rnrn下面是存储过程:rnrnCREATE PROCEDURE Proc_JiHua_StatSumCountrn @SqlWhere varchar(500)rn ASrnrnexecute ( 'select sum(JiHua_Count) from JiHua_Msg where'+ @SqlWhere)rnGOrn
winform关于分组的问题求解?
想做一个QQ分组的效果,和腾讯QQ的分组一样,不知道怎么做,带好友图片栏。
关于int 问题求解.感谢
int MY_KEY = 3 << 4rn是什么意思.怎么不是 int MY_KEY=3 或=4之类的.rn感谢了.
问题求解(关于win2k)
在win2k中,通过adsl上网,每过10分钟左右,就会有一些黄色网站自动打开,怎么都清除不了,在注册表中找到这些黄色网站的网址把它清除了,结果还是不行。请教各位还有什么解决办法?已经试过用3721,也不管用。rnrn
关于局部变量的问题求解答~
突然在看程序时对局部变量有所疑问了:rnrnrn第一个程序如此:rnrnchar translate(int type)rnrn char u8Data;rn switch(type)rn rn case 1:rn u8Data='a';rn break;rn case 2:rn u8Data='b';rn break;rn default:rn u8Data='x'rn //end switchrn return u8Data;rn//end translaternrnint main(int argc,char* argv[])rnrn char buffer[4]=;rn buffer[0]=translate(1);rn buffer[1]=translate(2);rn buffer[2]=translate(4);rn buffer[3]=translate(6);rnrn for(int i=0;i<4;i++)rn cout<
关于多线程问题求解!
在数据库中有个users表,想往里面插入10000条重复记录,分2个线程插入,一个线程插入5000条。rn代码如下:rnrn[code=Java]rnpackage com.Test;rnimport java.util.UUID;rnimport com.Data.Dao.UserDao;rnimport com.Data.IDao.IUsersDao;rnimport com.Data.POJO.Users;rnimport junit.framework.TestCase;rnrnpublic class Test_SQL extends TestCase rn public void testAa()rn Long sta=System.currentTimeMillis();rn creatUsers cu=new creatUsers("线程1开启");rn Thread t=new Thread(cu);rn creatUsers cu2=new creatUsers("线程2开启");rn Thread t2=new Thread(cu2);rn t.start();rn t2.start();rn Long end=System.currentTimeMillis();rn System.out.println("用时:"+(end-sta));rn rnrnclass creatUsers implements Runnablern private String s;rn public creatUsers(String str)rn s=str;rn rn public void run()rn System.out.println(s);rn IUsersDao ud=new UserDao();//这个是封装了JDBC添加数据的方法。rn for(int i=5000;i>0;i--)rn System.out.println(s+i);rn Users u=new Users();//这个是数据库中的users对应的pojo类rn u.setId(UUID.randomUUID().toString());rn u.setUsername("nnnn");rn u.setPassword("mmmm");rn u.setStatus(true);rn ud.add(u);rn rn rnrn[/code]rnrn控制台输出的结果是:rn线程1开启rn用时:3rn线程2开启rn线程2开启5000rn线程1开启5000rnrn根据控制台输出的结果得出的结论是:rn1.2个线程没有执行ud.add(u),在这个方法的时候卡死了。rn2.我要的到线程运行的时间也有误,应该在线程1和线程2运行完成时才 统计输出用时,但是结果显示 线程1开启的时候就统计了用时了。rn现在求解怎么回事。该怎么处理
关于Ext.data.JsonStore问题求解.
var particular = new Ext.data.JsonStore(rn url:'/cnccity/cpn/optimize/textmanager.do?method=particular',rn root : "result",rn totalProperty : "totalPorperty",rn fields : ["projectName","basicNo"]rn );rn rn particular.load(rn params:rn basicNo:selRowIdrn rn );rn rn rnrn为什么alert(particular.getAt(0));是undefined。
关于线程安全的问题求解
如果说一个项目在一个服务器上,比如多个管理员修改一个用户的信息,n会出现线程安全问题吗,一个服务器上程序应该是按照顺序执行的,不会出现n线程安全问题吧?比如A用户跟B用户同事点击修改,他会执行A后再执行B,n因为他们的代码在同一台服务器上。
关于DIV布局的简单问题求解
有两个Div,其中一个的Css设置了float : left,另一个则在右边占满其它位置。现在有一个问题,就是右边高度并不固定,有时候高度比左边高,但有时候又有可能比左边低(视div里面的内容而定)。请问有什么办法,使得两个Div的高度以最大的一方为准?rnrn[img=http://img.my.csdn.net/uploads/201303/12/1363018173_6338.png][/img]
关于DBGrid问题求解
DBGrid的第一行作为Tittle,可是第一行有些列的列名太长了,在固定宽度下显示不完整,大家有没有什么办法在一格中能够显示很长的内容啊?比如 单元格内 分行显示,我不知道这要怎么实现,有经验的朋友告知下吧。[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/2.gif][/img]
关于编译vs2008 问题求解
我刚学习mfc,按照教程上的叙述 加载skin++ ,第一次成功加载。但是做第二个实验时,出现编译错误 不能打开 skinplusplus.lib文件,当我把第一次生成的 skinplusplus.lib复制进去后则可以成功加载,这是为什么呢?rn
关于字节编码问题求解
public class Example8_7rnrn public static void main(String args[])rn rn byte d[]="Java天下好".getBytes();rn String s=new String(d,4,1);rn System.out.println(s);rn s=new String(d,0,6);rn System.out.println(s);rn rnrnrn这是我刚刚改编的程序,本来String s=new String(d,4,1);rn这句是String s=new String(d,4,2);rn的,这样的话第一个输出应该是“天”,然后我就是有点脑子发热,想看一下String s=new String(d,4,1);rn会输出什么?但是发现输出的是‘?’号,然后我把"Java天下好"换成"Java你下好".rn但是发现输出的还是‘?’号,我个人本来是想验证一下我下面的这个想法的:rn首先,一个字符占两个字节,然后getBytes()则将小于255以下的两字节的char转化成一字节存放进byte中,将占两字节的超过255的字符(比如汉字字符)用两个byte存储,那么我现在输出rnString s=new String(d,4,1);rn中的s应该是”天“这个字二进制表示的前8位的那字呀,为什么不对呢????rn我哪里被弄混乱了。。。。。求大神啊rn
关于一个JQUERY的问题求解
大家帮我分析一个这段代码,为什么取不到索引 rn rn rn 记录询报价rn rn rn rn rn rn 型号rn 品牌rn rn rn rn rn rn rn rn rn rnrn上面DIV中一共有三个 UL 前两个UL 是标题固定死的, 后面一个UL是动态添加的内容会有多个,rn我以前的做法是一个table 中有三个tr 前面二个tr是固定死的,后面一个tr是动态可以添加的,rn我给第三行添加每个文本框添加一个blur事件, 然后触发事件的时候,获取当前索引行 rncurrentIndex = $(this).parent().parent()[0].rowIndex; //得到当前的行索引赋值给全局变量rn这样做是可以的,但是用了UL 就实现不了,结构都是一样的呀 难道UL中不能用 rowIndex 那我怎么获取当前是哪个UL
关于combo问题求解
在combo的Change事件中有个unload的动作执行(但不是unload combo),出现"不能在该上下文中卸载(错误 365)"在MSDN的帮助文件得知rnrn"在 ComboBox.的 Change、Click 或 DropDown 事件中有一个 Unload 语句。 rn从事件中删除 Unload 语句。"rnrn有什么方法完成我需要的动作呢?
一个关于投票的问题求解。
我有很多的投票供选择,但对于一种投票每次只能投一次票,请问高手如何写COOKIES
关于单元格宽度问题求解?
rn rn IDrn 供货商代号rn 制造商代号rn 品 番rn 通货rn 标准价格rn 型决价格rn 现价格rn 新价格rn CD率rn 实施日rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rn rnrn#############################################3rn表格类似上面所示,每个单元个的widthshu属性都不给定,请问如何动态取得rn每个单元格的宽度。rn
关于用户和dbo的问题求解!!!
我在sql server 2000中新建了一数据库和用户ldcxdborn建表是在pb6.0中建的,现在数据库中t_user的所有者是ldcxdbo,其它系统表的所有者是dborn现在在查询分析器和delphi开发中,如果用到表t_user必须是用ldcxdbo.t_user,但用到系统表rn不必是dbo.系统表,直接用系统表名就可以了rn我要怎么做才能做到不要ldcxdbo.这个前缀直接引用表?
关于一个简单的问题求解。
owc画曲线图。在前台明明定义了PlaceHolder1:rn前台代码:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="OWCdrawing.aspx.cs" rnInherits="OWCdrawing" %>rnrnrnrnrnrnrn 清清月儿rnrn rnrnrnrnrnrn rnrn rnrn rnrn rnrn rnrn怎么样在ASP.NET2.0中使用OWC组件画图rnrnrnrn rnrn rnrnrnrnrnrnrnrn rnrnrnrnrnrnrnrnrnrnrnrn后台代码:using System;rnrnusing System.Data;rnrnusing System.Configuration;rnrnusing System.Web;rnrnusing System.Web.Security;rnrnusing System.Web.UI;rnrnusing System.Web.UI.WebControls;rnrnusing System.Web.UI.WebControls.WebParts;rnrnusing System.Web.UI.HtmlControls;rnusing System.Data.SqlClient; //添加数据操作引用rnrnusing Microsoft.Office.Interop.Owc11;//添加Office组件引用rnpublic partial class OWCdrawing : System.Web.UI.Pagernrnrn protected void Page_Load(object sender, EventArgs e)rn rnrn //连接数据库并获取特定字符串rnrn string strSeriesName = "图例1";rnrn string ConnectString = "Server=(local);DataBase=web;Uid=sa;Pwd=sa";rnrn string Sql = "SELECT month,Allcount FROM Chart";rnrn SqlConnection myConn = new SqlConnection(ConnectString);rnrn myConn.Open();rnrn SqlDataAdapter Da = new SqlDataAdapter(Sql, myConn);rnrn DataSet ds = new DataSet();rnrn Da.Fill(ds);rn //存放月rnrn string[] MonNum = new string[12];rnrn //存放数据rnrn string[] MonCount = new string[12];rnrn //为数组赋值rnrn for (int i = 0; i < ds.Tables[0].Rows.Count; i++)rn rnrn MonNum[i] = ds.Tables[0].Rows[i][0].ToString();rnrn MonCount[i] = ds.Tables[0].Rows[i][1].ToString();rnrn rnrn //为x轴指定特定字符串,以便显示数据rnrn string strXdata = String.Empty;rnrn foreach (string strData in MonNum)rn rnrn strXdata += strData + "t";rnrn rnrn string strYdata = String.Empty;rnrn //为y轴指定特定的字符串,以便与x轴相对应rnrn foreach (string strValue in MonCount)rn rnrn strYdata += strValue + "t";rnrn rn //创建ChartSpace对象来放置图表rnrn ChartSpace laySpace = new ChartSpaceClass();rn //在ChartSpace对象中添加图表rnrn ChChart InsertChart = laySpace.Charts.Add(0);rn //指定绘制图表的类型。类型可以通过OWC.ChartChartTypeEnum枚举值得到rnrn //InsertChart.Type = ChartChartTypeEnum.chChartTypeLine;//折线图rnrn //InsertChart.Type = ChartChartTypeEnum.chChartTypeArea;//面积图rnrn //InsertChart.Type = ChartChartTypeEnum.chChartTypeBarClustered;//条形图rnrn InsertChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered;//柱形图 rn //指定图表是否需要图例标注rnrn InsertChart.HasLegend = false;rnrnrnrn InsertChart.HasTitle = true;//为图表添加标题rnrn InsertChart.Title.Caption = "2006年清清月儿每个月花销流水账";//标题名称rn //为x,y轴添加图示说明rnrn InsertChart.Axes[0].HasTitle = true;rnrn InsertChart.Axes[0].Title.Caption = "";//月份rnrn InsertChart.Axes[1].HasTitle = true;rnrn InsertChart.Axes[1].Scaling.SplitMinimum = 200;rnrn InsertChart.Axes[1].Title.Caption = "数量";rn //添加一个series系列rnrn InsertChart.SeriesCollection.Add(0);rn //给定series系列的名字rnrn InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames,rn +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName);rn //给定分类rnrn InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories,rn +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata);rn //给定值rnrn InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues,rn (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);rnrn //输出文件.rnrn string strAbsolutePath = (Server.MapPath(".")) + "ShowData.gif";rnrn laySpace.ExportPicture(strAbsolutePath, "GIF", 400, 250);rn //创建GIF文件的相对路径.rnrn string strRelativePath = "./ShowData.gif";rn //把图片添加到placeholder中,并在页面上显示rnrn string strImageTag = "";rnrn this.PlaceHolder1.Controls.Add(new LiteralControl(strImageTag));rn rn rnrnrnrnrn[size=24px]现在的问题是总是报错。说OWCdrawing不包括PlaceHolder1的定义。[/size]rn请问是哪里出问题了。。。。rn
关于考勤排班问题求解
.“周期天数”是指该部门所上班次的“上班”和“休息”的规律,例如:某个班次是上5天,休息2 天,其“周期天数”为 7 天。另一个三班制的班,上3天,休息1天,其“周期天数”为 4 天。rnrn3.“休息日”是指按规律,第几天是休息日。仍如上例:上 5 天,休2 天,周期为7天,“休息日”是第6天,第7天, 在“休自日”里输入“6,7”,以“逗号”分隔;而三班制的,上3天,休 1 天,第 4 天休息,则在“休息日”里输入“4”。rnrn这样的怎么计算出  就某个人的 排班表呢  谢谢了
关于这个网页问题求解
[img=https://img-bbs.csdn.net/upload/201804/13/1523634951_340710.jpg][/img]rn[img=https://img-bbs.csdn.net/upload/201804/13/1523635119_882467.jpg][/img]rn我鼠标移动的地方会有蓝色的线吸引过来,而且好像只有这个网页有
关于链表的问题求解
#include "stdafx.h"rn#include"stdlib.h"rn#include"string.h"rnstruct stud_nodern int num;rn char name[20];rn int score;rn struct stud_node* next;rn;rnrnstruct stud_node* Create_Stu_Doc();rnstruct stud_node * InsertDoc(struct stud_node* head,struct stud_node* stud);rnstruct stud_node* DeleteDoc(struct stud_node* head,int num);rnvoid Print_Stu_Doc(struct stud_node* head);rnrnint _tmain(int argc, _TCHAR* argv[])rnrn struct stud_node* head,*p;rn int choice,num,score;rn char name[20];rn int size =sizeof (struct stud_node);rn dorn rn printf("1:Creat 2:Insert 3:Delete 4:Print 0:Exit \n");rn scanf("%d",&choice);rn switch(choice)rn case 1:rn head=Create_Stu_Doc();rn break;rn case 2:rn printf("Input num,name,and score:\n");rn scanf("%d%s%d",&num,name,&score);rn p=(struct stud_node*) malloc(size);rn p->num=num;rn strcpy(p->name,name);rn p->score=score;rn head=InsertDoc(head,p);rn break;rn case 3:rn printf("Input num:\n");rn scanf("%d",&num);rn head=DeleteDoc(head,num);rn break;rn case 4:rn Print_Stu_Doc(head);rn break;rn case 0:rn break;rn rn while(choice!=0);rnrn return 0;rnrnrn//新建链表rnstruct stud_node* Create_Stu_Doc()rnrn struct stud_node* head,*p;rn int num,score;rn char name[20];rn int size=sizeof(struct stud_node);rnrn head=NULL;rn printf("input num,name,and score:\n");rn scanf("%d%s%d",&num,name,&score);rn while (num!=0)rn p=(struct stud_node*) malloc(size);rn p->num=num;rn strcpy(p->name,name);rn p->score=score;rn head=InsertDoc(head,p); //调用插入函数rn scanf("%d%s%d",&num,name,&score);rn rn return head;rnrnrn//插入操作rnstruct stud_node* InsertDoc(struct stud_node* head,struct stud_node *stud)rnrn struct stud_node *ptr,*ptr1,*ptr2;rn ptr2=head;rn ptr=stud;rn //rn if(head==NULL)rn head=ptr;rn head->next=NULL;rn rn elsern while((ptr->num>ptr2->num)&&(ptr2->next!=NULL))rn rn ptr1=ptr2;rn ptr2=ptr2->next;rn rn if(rn ptr->num<=ptr2->num)rn rn if(head==ptr2) head=ptr;rn else ptr1->next=ptr;rn ptr->next=ptr2;rn rn elsern ptr2->next=ptr;rn ptr->next=NULL;rn rn rn return head;rnrn//删除操作rnstruct stud_node* DeleteDoc(struct stud_node* head,int num)rnrn struct stud_node* ptr1,*ptr2;rn //rn while (head!=NULL&&head->num==num)rn rn ptr2=head;rn head=head->next;rn free(ptr2);rn rn if(head==NULL)rn return NULL;rn ptr1=head;rn ptr2=head->next;rn while(ptr2!=NULL)rn if(ptr2->num==num)rn ptr1->next=ptr2->next;rn free(ptr2);rn rn elsern ptr1=ptr2;rn ptr2=ptr1->next;rn rn return head;rnrn//遍历操作rnvoid Print_Stu_Doc(struct stud_node * head)rnrn struct stud_node * ptr;rn if(head==NULL)rn printf("\nNO Records");rn return;rn rn printf("\nThe student's Records are:\n");rn printf(" NUM Name Score \n");rn for(ptr=head;ptr;ptr=ptr->next)rn printf("%8d%20s%6d\n",ptr->num,ptr->name,ptr->score);rnrn 这些代码编译链接都能通过!但是运行的结果总是没有反应。。。得不到他应有的功能!rn用f10 调试也找不到错误!
关于iframe兼容问题求解
之前做了一个框架,如下图所示,在js里面隐藏左边的菜单栏,用js代码如下rn $(window.parent.document).find("#frameset2").attr("cols","0,30px,*");rn在火狐和opera下是可以的,但是在chrome和ie下就无法隐藏,求解决方法
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法