会,新生成的网络小说实质上换汤不换药,只是通过对数据库中的文学内容进行提取、复制与拼凑的产物。这种机械化的抄袭方式严重危害了原创作者的权益,原创作者呕心沥血创作出的精彩桥段与文字,却被网络小说生成器直接盗取属于抄袭。
《中华人民共和国著作权法》
第一条为保护文学、艺术和科学作品作者的著作权,以及与著作权有关的权益,鼓励有益于社会主义精神文明、物质文明建设的作品的创作和传播,促进社会主义文化和科学事业的发展与繁荣,根据宪法制定本法。
第四十七条有下列侵权行为的,应当根据情况,承担停止侵害、消除影响、赔礼道歉、赔偿损失等民事责任:
(一)未经著作权人许可,发表其作品的;。
(二)未经合作作者许可,将与他人合作创作的作品当作自己单独创作的作品发表的;。
(三)没有参加创作,为谋取个人名利,在他人作品上署名的;。
(四)歪曲、篡改他人作品的;
(五)剽窃他人作品的;
(六)未经著作权人许可,以展览、摄制电影和以类似摄制电影的方法使用作品,或者以改编、翻译、注释等方式使用作品的,本法另有规定的除外;。
(七)使用他人作品,应当支付报酬而未支付的;。
(八)未经电影作品和以类似摄制电影的方法创作的作品、计算机软件、录音录像制品的著作权人或者与著作权有关的权利人许可,出租其作品或者录音录像制品的,本法另有规定的除外;。
(九)未经出版者许可,使用其出版的图书、期刊的版式设计的;。
(十)未经表演者许可,从现场直播或者公开传送其现场表演,或者录制其表演的;。
(十一)其他侵犯著作权以及与著作权有关的权益的行为。
免费的在线制作电子书平台推荐使用云展网。云展网一键制作,快速分享,多维度数据分析,一站式精准营销。支持全文检索/目录/书橱书架/下载离线版阅读等功能,操作简单便捷。
云展网的优点:
1、可上传PDF/PPT/Word/图片,如教材/宣传册/杂志/内刊/文档等;
2、支持页面添加文字/图片/视频/音频/电话/链接/动画;
3、生成链接/二维码小程序,手机/平板/电脑可阅读(读者无需注册);
4、支持全文检索/目录/书橱书架/下载离线版阅读等功能。点击马上开启制作之旅。
想要了解更多关于制作电子书的相关信息,推荐选择万彩信息旗下的云展网。使用云展网制作成独立的电子书,以链接和二维码的方式分享出去,便于别人阅读,更是便于推广;可随时修改画册内容,而链接/二维码不会变;转换即自动生成3D翻书效果,企业级会员还可以添加多媒体,让书本更生动有趣,提升阅读体验,让读者更愿意翻阅。
2004年4月20日最新版本的GCC编译器3.4.0发布了。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。GCC 3.4.0比以前版本更好地支持了C++标准。本文以在Redhat Linux上安装GCC3.4.0为例,介绍了GCC的安装过程。
安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的GCC 3.4.0。如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。本文介绍的是以源代码形式提供的GCC软件包的安装过程,软件包本身和其安装过程同样适用于其它Linux和Unix系统。
系统上原来的GCC编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。与此不同,现在GCC建议我们将一个版本的GCC安装在一个单独的目录下。这样做的好处是将来不需要它的时候可以方便地删除整个目录即可(因为GCC没有uninstall功能);缺点是在安装完成后要做一些设置工作才能使编译器工作正常。在本文中我采用这个方案安装GCC 3.4.0,并且在安装完成后,仍然能够使用原来低版本的GCC编译器,即一个系统上可以同时存在并使用多个版本的GCC编译器。
按照本文提供的步骤和设置选项,即使以前没有安装过GCC,也可以在系统上安装上一个可工作的新版本的GCC编译器。
1. 下载
在GCC网站上(http://gcc.gnu.org/)或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为 3.4.0。可供下载的文件一般有两种形式:gcc-3.4.0.tar.gz和gcc-3.4.0.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。
2. 解压缩
根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符):
% tar xzvf gcc-3.4.0.tar.gz 。
或者
% bzcat gcc-3.4.0.tar.bz2 | tar xvf - 。
新生成的gcc-3.4.0这个目录被称为源目录,用${srcdir}表示它。以后在出现${srcdir}的地方,应该用真实的路径来替换它。用pwd命令可以查看当前路径。
在${srcdir}/INSTALL目录下有详细的GCC安装说明,可用浏览器打开index.html阅读。
3. 建立目标目录
目标目录(用${objdir}表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。
例如,可以这样建立一个叫 gcc-build 的目标目录(与源目录${srcdir}是同级目录):
% mkdir gcc-build 。
% cd gcc-build 。
以下的操作主要是在目标目录 ${objdir} 下进行。
4. 配置
配置的目的是决定将GCC编译器安装到什么地方(${destdir}),支持什么语言以及指定其它一些选项等。其中,${destdir}不能与${objdir}或${srcdir}目录相同。
配置是通过执行${srcdir}下的configure来完成的。其命令格式为(记得用你的真实路径替换${destdir}):
% ${srcdir}/configure --prefix=${destdir} [其它选项] 。
例如,如果想将GCC 3.4.0安装到/usr/local/gcc-3.4.0目录下,则${destdir}就表示这个路径。
在我的机器上,我是这样配置的:
% ../gcc-3.4.0/configure --prefix=/usr/local/gcc-3.4.0 --enable-threads=posix --disable-checking --enable--long-long --host=i386-redhat-linux --with-system-zlib --enable-languages=c,c++,java 。
将GCC安装在/usr/local/gcc-3.4.0目录下,支持C/C++和JAVA语言,其它选项参见GCC提供的帮助说明。
5. 编译
% make
这是一个漫长的过程。在我的机器上(P4-1.6),这个过程用了50多分钟。
6. 安装
执行下面的命令将编译好的库文件等拷贝到${destdir}目录中(根据你设定的路径,可能需要管理员的权限):
% make install 。
至此,GCC 3.4.0安装过程就完成了。
6. 其它设置
GCC 3.4.0的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。
6.1 gcc、g++、gcj的设置 。
要想使用GCC 3.4.0的gcc等命令,简单的方法就是把它的路径${destdir}/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。
首先,查看原来的gcc所在的路径:
% which gcc
在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。我们可以把GCC 3.4.0中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:
% cd /usr/bin 。
% ln -s ${destdir}/bin/gcc gcc34 。
% ln -s ${destdir}/bin/g++ g++34 。
% ln -s ${destdir}/bin/gcj gcj34 。
这样,就可以分别使用gcc34、g++34、gcj34来调用GCC 3.4.0的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。
6.2 库路径的设置
将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了。
例如,如果GCC 3.4.0安装在/usr/local/gcc-3.4.0目录下,在RH Linux下可以直接在命令行上执行或者在文件/etc/profile中添加下面一句:
setenv LD_LIBRARY_PATH /usr/local/gcc-3.4.0/lib:$LD_LIBRARY_PATH 。
7. 测试
用新的编译命令(gcc34、g++34等)编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。
8. 根据需要,可以删除或者保留${srcdir}和${objdir}目录。
1、我们点击菜单栏中的“视图”菜单,选择“工具栏”命令,在打开的工具栏中,我们找到“控件工具栏”,确保“控件工具栏”前已打勾,说明控件工具栏在编辑区已经显示,勾选后我们可以在编辑区看到控件工具栏;
2、在“控件工具栏”中我们 找到右下角的“其它控件”按钮,如下图1,单击“其它控件”按钮,在下拉列表中找到“microsoft barcode 控件 9.0“;
3、找到这个选项单击它,在页面的编辑区立即出现了一个条形码的图标, 如下图,这个图标是系统自动生成的, 我们要对条形码的样式,和条形码的信息进行设置或更改;
4、若要修改默认条形码的样式,条形码的颜色和线条的宽度等内容, 我们可以右击我们刚刚插入的条形码图标,从中找到属性选项;
5、选择属性后,弹出属性对话框,如下图1,在属性对话框中,我们选择自定义选项,点击自定义选项右边的“... ”按钮,打开属性可视化编辑工具;
6、在常规选项卡, 我们可设置条形码的样式、子样式,有效性验证,线条宽度和方向, 我们可以通过下拉列表进行选择;在右边的“显示数据”复选框中勾选或去掉勾可以设置条形码中是否显示数据;
7、点击“颜色”选项卡,我们可以对条形码的颜色进行设置,从属性颜色样式中选择一种颜色后,我们再从右边的调色板中选择颜色;
8、设计好样式后,我们接下来就是设置条形码的数据了,我们可以按照我们商品或书目等的名称进行编号,保存在数据库中,当我们用条形码扫描机扫描时,数据库就可以自动识别我们的商品名称了。
9、我们点击属性对话框中的“value“选项,在右边的框中输入数据,输入框中默认的数据是空白,如我们输入“123456789 ”。
10、设置完成后,我们点击控件工具关闭按钮,退出控件设计模式;这样一个条形码就制作好了。我们点击“文件”-“保存”命令,保存我们制作好的条形码。
来自csdn上面的例子我试过可以。
1.下载地址
http://msdn.microsoft.com/downloads/samples/internet/ASP_DOT_NET_ServerControls/WebControls/default.asp 。
安装后,通过“自定义工具箱”->“.net框架组件”把TreeView添加到工具箱里 。
2.运行时无法显示
一般是TreeView的版本问题,最好下载英文版自动安装版本重新安装,安装前应该先到添加删除程序里卸掉原版本 。
3.显示格式出错(非树状显示)
TreeView要求客户端浏览器版本为IE5.5及以上,最好要求客户端升级为IE6.0 。
4.框架里使用TreeView 。
设置NavigateUrl、Target属性,可更新另外的Frame 。
5.找不到TreeNode类 。
使用TreeView,最好添加namespace:using Microsoft.Web.UI.WebControls; 。
6.遍历TreeView节点(递归算法) 。
private void Page_Load(object sender, System.EventArgs e) 。
{
GetAllNodeText(TreeView1.Nodes); 。
}
void GetAllNodeText(TreeNodeCollection tnc) 。
{
foreach(TreeNode node in tnc) 。
{
if(node.Nodes.Count!=0) 。
GetAllNodeText(node.Nodes); 。
Response.Write(node.Text + " "); 。
}
}
7.得到node结点的父节点 。
TreeNode pnode; 。
if(node.Parent is TreeNode) 。
pnode=(TreeNode)node.Parent; 。
else
//node is root node 。
8.修改TreeView样式(示例)
<iewc:TreeView id="TreeView1" runat="server" HoverStyle="color:blue;background:#00ffCC;" 。
DefaultStyle="background:red;color:yellow;" SelectedStyle="color:red;background:#00ff00;"> 。
用代码:
TreeView1.DefaultStyle["font-size"] = "20pt"; 。
9.TreeView展开无闪烁的解决方法 。
http://expert.csdn.net/Expert/topic/1300/1300576.xml 。
客户端控制TreeView
http://expert.csdn.net/Expert/topic/1382/1382892.xml 。
1.设置所选节点,如选中第二个节点 。
function SetSelNode() 。
{
TreeView1.selectedNodeIndex="1"; 。
}
2.得到所选节点的Text,ID或NodeData 。
function GetAttribute() 。
{
alert(TreeView1.getTreeNode(TreeView1.selectedNodeIndex).getAttribute("Text")); 。
}
替换Text为ID或NodeData,可分别得到所选节点的ID或NodeData 。
3.修改节点属性,如修改第一个节点的Text 。
function ModifyNode() 。
{
var node=TreeView1.getTreeNode("0"); 。
node.setAttribute("Text","hgknight"); 。
}
4.得到点击节点
function TreeView1.onclick() 。
{
alert(TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute("Text")); 。
}
5.添加节点
function AddNode() 。
{
var node=TreeView1.createTreeNode(); 。
node.setAttribute("Text","hgknight"); 。
TreeView1.add(node); 。
}
6.js遍历所有节点
//只针对根结点,大家把它可改为递归形式 。
var NodeArray=new Array(); 。
NodeArray=TreeView1.getChildren(); 。
for(i=0;i<NodeArray.length;i++) 。
{
cNode=NodeArray[i]; 。
alert(cNode.getAttribute("Text")); 。
}
1、用代码在treeview web控件中,添加node的方法 。
表字段:编号,父编号,名称
数据:
1 0 中华人民共和国
2 1 湖南
3 1 湖北
void creattree(string text,TreeNode tnd,string pid) 。
{
TreeNode t2=new TreeNode(); 。
t2.Text=text;
tnd.Nodes.Add(t2); 。
生成
string str1 ="父编号 = '"+pid+"'"; 。
DataRow[] dryl = dataSet31.Tables [0].Select(str1); 。
for(int i=0;i<=dryl.GetUpperBound(0);i++) 。
{
creattree(dryl[i][2].ToString(),t2,dryl[i][0].ToString()); 。
}
}
//
TreeNode t1=new TreeNode(); 。
t1.Text="地区信息"; 。
TreeView2.Nodes.Add(t1); 。
creattree("中华人民共和国",t1,"1"); 。
2、如何为TreeView添加事件?
Private Sub TreeView1_indexChanged(ByVal sender As Object, ByVal e As 。
Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs) Handles 。
TreeView1.SelectedIndexChange 。
Dim a As Integer 。
a = TreeView1.SelectedNodeIndex 。
TextBox1.Text = CStr(a) 。
End Sub
但是AutoPostBack设置为True的话,TreeView还要刷新,闪烁,我的TreeView比较庞大 。
,这可怎么办???苦恼中。。。
3、为什么TreeView 中的SelectedIndexChange为什么不执行???
AutoPostBack属性为真,SelectedIndexChange才能被执行。
不过这样的话你选择时会感到刷新得让你痛苦,根据你的具体实现的目的,采用变通的 。
方法,尽量不使用SelectedIndexChange事件吧。
selectedindexchange事件挂到控件上没有?
InitializeComponent方法中检查检查 。
4、如何判断 TreeView 的一个节点下是否有子节点???
if(selNode.Nodes.Count==0){ 。
//该节点没有字节点
}
5、如何得到 TreeView 的当前选择节点???
1.Tree.GetNodeFromIndex(Tree.SelectedNodeIndex.ToString()) 。
2.private void TreeView1_SelectedIndexChange(object sender, 。
Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e) 。
e.NewNode即为所选节点 。
6、treeview实现两层节点没问题,扩展到无限层就出问题了?
我的那个做法还不够完善,对于节点数较少的情况可以这样做,对于节点数较多的情况 。
,你就不能这样做了,你应该只加载一级,当点击节点展开时,再加载它的下一级子节 。
点。
数据库结构如下:
表名:Table1
ParentID varchar 20:父节点 。
ID varchar 20:节点 。
Name varchar 50:名称 。
来来来,这里给你个例程,再给个我的网页上的TreeViwe看看,一万个子节点都没问题。
http://dev1.eraserver.net/czc888/webform1.aspx 。
至于那三个图象的意义你看我的网页就知道了。分别表示一页纸(没有子节点)、一本 。
关闭的书(有子节点),一本打开的书(当前节点被展开)
void creat_node(string 。
name,Microsoft.Web.UI.WebControls.TreeNode t1,string number) 。
{
//定义一个新的结点
Microsoft.Web.UI.WebControls.TreeNode t2=new 。
Microsoft.Web.UI.WebControls.TreeNode(); 。
t2.ID=number;
t2.Text=name;
//判断是否为根结点
TreeView1.ExpandedImageUrl="images/Depart03.bmp"; 。
if(t1.ID.Trim()=="###") 。
{
TreeView1.Nodes.Add(t2); 。
t2.ImageUrl="images/Depart01.bmp"; 。
}
else
{
t1.Nodes.Add(t2); 。
t2.ImageUrl="images/Depart01.bmp"; 。
t1.ImageUrl="images/Depart02.bmp"; 。
}
//取得这个结点的所有子结点,利用递归自动生成 。
string mySelectQuery = "SELECT ParentID, ID,Name FROM table1 。
where ParentID='" + number +"'"; 。
string MyConnString="provider=Microsoft.Jet.OLEDB.4.0;Data 。
Source="+Server.MapPath(".")+"/dt/mydata.mdb"; 。
OleDbConnection myConnection = new 。
OleDbConnection(MyConnString); 。
OleDbCommand myCommand = new 。
OleDbCommand(mySelectQuery,myConnection); 。
myConnection.Open(); 。
OleDbDataReader myReader; 。
myReader = myCommand.ExecuteReader(); 。
while (myReader.Read()) 。
{
creat_node(myReader.GetString(2),t2,myReader.GetString(1)); 。
}
myReader.Close(); 。
myConnection.Close(); 。
}
private void CreateProviderTreeBtn_Click(object sender, 。
System.EventArgs e) 。
{
Microsoft.Web.UI.WebControls.TreeNode t1=new 。
Microsoft.Web.UI.WebControls.TreeNode(); 。
creat_node("",t1,"###"); 。
7、怎样使用TreeView??? 。
//初始化TreeView数据 。
private void InitTV(int intVOrderLen) 。
{
SqlDataReader dr; 。
SqlCommand myCommand; 。
string strSel = "select * from bas_enterprise where 。
len(vieworder)="+intVOrderLen+" order by vieworder"; 。
myCommand = new SqlCommand (strSel, myConnection); 。
dr=myCommand.ExecuteReader(); 。
while (dr.Read ()) 。
{
TreeNode pNode=new TreeNode (); 。
pNode.Text =dr["EntpName"].ToString (); 。
pNode.ID =dr["ViewOrder"].ToString (); 。
TreeView1.Nodes .Add (pNode); 。
}
dr.Close ();
}
private void TreeView1_SelectedIndexChange(object sender, 。
Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e) 。
{
TreeNode NewNode=TreeView1.GetNodeFromIndex 。
(TreeView1.SelectedNodeIndex); 。
string strNodeId=NewNode.ID .ToString (); 。
SqlDataReader dr; 。
SqlCommand myCommand; 。
int intVOrderLen=strNodeId.Length+2; 。
string strSel = "select * from bas_enterprise where 。
len(vieworder)="+intVOrderLen+" and vieworder like '%"+strNodeId+"__%' 。
order by vieworder"; 。
myCommand = new SqlCommand (strSel, myConnection); 。
dr=myCommand.ExecuteReader(); 。
NewNode.Nodes .Clear(); 。
while (dr.Read ()) 。
{
TreeNode pNode=new TreeNode (); 。
pNode.Text =dr["EntpName"].ToString (); 。
pNode.ID =dr["ViewOrder"].ToString (); 。
NewNode.Nodes.Add (pNode); 。
}
dr.Close ();
TreeView1.ExpandLevel=1; 。
}
8、在treeview中如何查找一个值,并选中它?
问题:
各位,在已经建好的树中如何查找一个文本或者是treenodes的id,找到后选中它?
答案:
for(int i=0;i<TreeView1.Nodes.Count;i++) 。
if(TreeView1.Nodes[i]==TextBox1.Text) 。
{
string index1=TreeView1.Nodes[i].GetNodeIndex();//取得index 。
TreeView1.SelectedNodeIndex=index1; 。
}
9、如何取得TreeView中各项的值??
private void TreeView1_SelectedIndexChange(object sender, 。
Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e) 。
{
Microsoft.Web.UI.WebControls.TreeNode 。
NewNode=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex); 。
Label1.Text =NewNo 。
如果通过代码要在父结点中增加子节点,代码如何实现? 。
父节点代码如下:
TreeNode pNode = new TreeNode(); 。
pNode.ID = "Root"; 。
pNode.Text = strNodeName; 。
TreeView1.Nodes.Add(pNode); 。
如果要在根结点"Root"下面再增加子节点,如何写代码? 。
TreeView1.Nodes.AddAt(pNode);这种方式好象不行. 。
TreeView1.Nodes[0].Nodes.Add(pNewNode); 。
/*************.Cs 中的代码**************************** 。
string strScript="<script language=\"javascript\" >"; 。
strScript+=" function GetNode() \n"+"{ \n"; 。
strScript+=" alert(TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute('Text'));\n" ; 。
strScript+=" alert(TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute('CheckBox'));\n"; 。
strScript+=" alert(TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute('Checked'));\n"; 。
strScript+=" if (TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute('Checked'))\n"; 。
strScript+=" TreeView1.getTreeNode(TreeView1.clickedNodeIndex).setAttribute('Checked','false');\n"; 。
strScript+=" else \n"; 。
strScript+=" TreeView1.getTreeNode(TreeView1.clickedNodeIndex).setAttribute('Checked','true');\n"; 。
strScript+=" \n } \n"; 。
strScript+="</script>"; 。
if(! this.IsClientScriptBlockRegistered("myjs")) 。
{
this.RegisterClientScriptBlock("myjs",strScript); 。
}
***************************************************// 。
现在我想在客户端点击父节点的checkbox则下级也被选中,可是使用下面的代码,只能表面选中,在服务器端却得不到,请问有什么其它好法子 。
<script language=\"javascript\" > 。
function GetNode() 。
{
var choose;
var indexid;
indexid=TreeView1.clickedNodeIndex; 。
if (TreeView1.getTreeNode(indexid).getAttribute('Checked')) 。
{
choose=false;
}
else
{
choose=true;
}
TreeView1.getTreeNode(indexid).setAttribute('Checked',choose); 。
var NodeArray=new Array(); 。
NodeArray=TreeView1.getTreeNode(indexid).getChildren(); 。
for(i=0;i<NodeArray.length;i++) 。
{
var tempindex=indexid+"."+i; 。
TreeView1.getTreeNode(indexid).setAttribute('Checked',choose); 。
}
}
//-->
</script>。
原文地址:http://www.qianchusai.com/cc/%E7%BD%91%E6%96%87%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90%E5%99%A8.html