- 博客(36)
- 资源 (3)
- 收藏
- 关注
原创 如何选择图谱的布局
但是在实际开发的过程里,往往会出现需求的提出者不知道如何选择布局,或者胡乱选择布局的情况,这种情况出现的原因也很简单,就是因为需求的提出者根本不关心布局如何表现数据,他们只关心布局如何能体现出高科技。力导布局的算法会计算节点之间的斥力,关系的弹力,然后计算节点的位置,通过反复的迭代,直到节点之间的斥力达到平衡为止,当然你也可以手动设置一个迭代次数的上限。严格意义上来说,同心圆布局就是一种特殊的环形布局,同心圆布局和环形布局都是特殊的层次布局,而层次布局是一种特殊的树图。
2024-07-03 12:57:09
375
原创 图谱应用开发的边界
四书中的《大学》第一篇有这么一句话——知止而后有定。这句话简直就是万能的。在应用开发里,我们也必须做到知止。止,就是停止的地方,就是功能的边界。我们之所以要在项目前期 ,做很长时间的需求分析和产品设计,就是为了搞清楚功能的边界在哪里。知道了功能的边界在哪里,才能知道什么是功能,什么是bug。如果没有清晰而明确的边界,那么项目就是痛苦而漫长的,开发不知道自己写的是不是功能,测试也不知道自己测出来的是不是bug,项目的结束将遥遥无期。
2024-05-09 08:15:00
706
原创 知识图谱的理论, 相关工具和实际应用
在当代中国,知识图谱不能得到很好的应用,也是因为这个,大部分的决策者不能理解(他们往往已经有了思维定势)这个理论和工具,而大部分实际的使用者也不愿意花时间去理解这个理论和工具,这就导致理论和实际使用的完全脱节,这点我会在后面的实际应用中举几个例子。例如明明可以用列表形式展示的数据,就一定要用图谱。如果关系的厘清是完全客观的,是有规律的,那么拿到数据,相关的应用就可以得到使用者想要展示的关系,图谱并不需要去处理数据,图谱也不太可能展示出你意想不到的关系。
2024-04-30 13:20:39
683
转载 Activity之间的数据传递
<br />Android 切换Activity时不可避免的要有数据传递。在android的开发里,数据传递一般用bundle来封装。<br />不多说,直接上代码。<br />首先,我们必须要有两个activity,关于这个,可以参考Android 切换Activity。<br />第一个activity:<br />package cn.buhutuu.Test; import android.app.Activity;import android.content.Intent;impo
2011-01-04 09:48:00
451
原创 Android 切换Activity
<br /> <br />如果仅仅是表现层的改变,Android layout的转换就可以了。但是如果你需要改变的是功能,是逻辑,那么你就必须要用另一个activity了。<br />activity的切换很简单,首先你必须有两个activity(废话),其次你必须有两个layout,然后就是一个调用activity的方法。<br />以下是代码。<br />第一个activity,也就是主activity/main activity。<br />如果你的程序里有两个activity,那么就自己定义一下哪个
2010-12-29 09:01:00
531
转载 Android layout的转换
<br />实际开发中,我们经常要碰到表现层的改变,在一般的桌面应用程序和web应用程序中,这都很好办,无非就是另外打开一个窗口,或者DOM内容而已。在Android中怎么做呢?<br />其实很简单,改变layout就可以了,我想你一定猜到怎么做了,这个方法非常好,特别是在不牵涉到activity的改变时,这个方法自然是首选的,程序所用到的参数都在activity里,都无需传递。<br />下面就来举一个例子。<br />首先是主程序:<br />package cn.buhutuu.test;
2010-12-29 08:56:00
549
转载 无阻塞的Javascript脚本(二)——动态脚本元素
<br />通过DOM,你可以用Javascript动态创建<script>标签。<br />var script=document.createElement("script");script.type="text/script";script.src="file1.js";document.getElementByTagName("head")[0].appendChild(script);<br /> <br />file1.js会在该元素被添加到页面的时候开始下载。这种技术的重点在于,无
2010-12-28 08:59:00
502
原创 无阻塞的Javascript脚本(一)
将好几个js文件合并成一个文件可以减少HTTP请求,有效的改善性能,但是这样的做法可能导致浏览器停止响应,特别是在web应用丰富的情况下,js代码会非常多,这样子浏览器停止响应的时间就会让人无法忍受了。为了避免这样的情况,我们可以选择逐步加载js文件,来达到所谓的无阻塞脚本的目的。无阻塞的Javascript脚本的秘诀在于页面加载以后再加载JS代码,换句话说就是,Windows对象的load事件触发之后再下载脚本。如果你的目标浏览器是IE4+或者firefox3.5+,那么你可以为
2010-12-28 08:45:00
426
翻译 Android Service之本地 Service 例子
服务最通常的作用之一就是作为一个次要的组件和程序的其他部分并行,和其他组件在同一个进程中。一个apk文件中的所有组件在他哦南方一个进程中运行除非用其它方式明确的指明了,所以这是一个典型的情况。通过认定组件在相同的进程里,你可以将它们之间的交互变得非常简单:service的客户端可以简单的抛出它们接收到的IBinder到一个被service发布出的基类。service的用处的例子如下。首先是service自身,当绑定的时候发布一个自定义类。public class LocalService extends S
2010-12-06 23:58:00
471
翻译 Android开发 之 Intents and Intent Filters(二)
<br />在每种方式中,android系统都会找到合适的activity,service或者broadcast侦听器集,来对intent进行响应,在必要的时候实例化。在这些传送信息的系统中没有交集:broadcast intent只能被发送到broadcast侦听器,而不是activity或者service。被发送给activity的intent也不会被传递给service或者broadcast侦听器,只会是activity,等等。<br />这个文档从intent对象的描述开始。然后是android
2010-12-06 11:07:00
334
翻译 Android开发 之 Intents and Intent Filters(一)
<br /> <br />三种程序的核心组件——activity、service和broadcast receiver,都是通过叫做intent的信息来激活的。 intent的信息发送是用来将相同或者不同程序的组件后期运行绑定的一种方法。intent本身,也就是intent对象,是一个被动的数据结构,有着被处理的操作的抽象描述。或者,通常是在broadcast的例子中,是已经发生或者正在发生的某些事情的描述。这儿有不同的机制来传送intent给每种组件。intent对象被传递给Context.startAc
2010-12-06 05:53:00
338
转载 Android 开发文档 程序基础——Affinities and new tasks
不同程序中定义的activity可以共享一个affinity,同一个程序中的activity可以标志几个不同的affinity。 affinity在两个不同的情况下开始起作用:当运行一个activity的Intent对象含有 FLAG_ACTIVITY_NEW_TASK标记,当一个activity的allowTaskReparenting设置为true。如前所述,一个新的activity往往运行在叫做 stratActivity的activity的task中,然后就放在调用者所在的stack上。但是
2010-06-19 10:59:00
467
转载 Android 开发文档 程序基础——Activities and Tasks
简单的说,Task对用户来说就是一个“程序”,是一组相互联系的activity排列在一个stack中。stack中的root activity是开始这个task的activity。一般来说就是用户在程序启动器中选择的activity。正在运行或者用户正在操作的 activity处在stack顶端。当一个activity启动了另一个,新的activity就被放在了stack的上面,变成了运行中的 activity。前一个保持在stack中。当用户按了back键,前端的activity就弹出了stack,前一个
2010-06-19 10:56:00
378
转载 Android 开发文档 程序基础——Intent filters
Intent对象可以明确命名一个目标组件。如果这么做了,Android会找到组件并激活。但是如果目标并没有明确的命名,Android必须定位一个最好的组件并反馈给intent。这是通过与可能的目标的Intent filters进行对比做到的。一个组件的intent filter告诉android组件可以处理的intents的种类。
2010-06-19 10:54:00
452
转载 Android 开发文档 程序基础——The manifest file
android开始运行一个程序组件之前,会先确定这个组件的存在。因此,程序会在打包在apk中的manifest文件中声明组件,apk文件中同时也有代码,文件和资源。manifest是xml文件,在所有的程序中都命名为AndroidManifest.xml。除了声明程序组件之外,还做一些其他的事情,例如命名程序需要链接的库,确认程序希望被授予的权限。
2010-06-19 10:52:00
596
转载 Android 开发文档 程序基础——Shutting down components
content provider只会在回应ContentReslover发出的请求时激活,而broadcast receiver只在回应广播消息时激活,所以没有必要关闭这些组件。另一方面,activity用来生成用户界面,长时间的与用户对话,甚至空闲时也保持活动,只要对话还在继续。相似的,service也会保持长时间的运行。所以android提供了方法来关闭activity和service。activity可以通过调用finish()来关闭。一个activity可以通过调用finishAct
2010-06-19 10:51:00
377
转载 Android 开发文档 程序基础——Activating components: intents
activity通过传递Intent对象到Context.startActivity()或者 Activity.startActivityForResult()来运行或者执行一些新内容。如果要看正在反应中的activity是由什么 intent引起的,可以调用它的getIntent()。android系统中调用activity的onNewIntent()来传递给之后的 intents。一个activity经常会导致另一个的运行。如果希望被其运行的activity返回一个结果,那么就必须调用start
2010-06-19 10:49:00
473
原创 Android 开发文档 程序基础 ——Content providers组件
Content providers组件提供一系列可供其他程序使用的数据。这些数据可以保存在文件系统中,或者SQLite数据库,或者其他任何方法。Content providers组件扩展了ContentProvider基类,执行一系列让其他程序取得和保存数据的方法。但是程序不会直接调用这些方法,而是利用ContentResolver对象调用其方法来代替。ContentResolver对象可以与任何content provider对象对话。
2010-06-19 10:47:00
1731
原创 Android 开发文档 程序基础 ——Broadcast receivers组件
Broadcast receivers只接受广播通知并做出反应的组件。广播通知往往来自系统,比如时区改变,语言改变。extends自BroadcastReceiver基类。一个程序可以有好几个Broadcast receivers来接受它认为重要的通知。Broadcast receivers没有用户界面,但是可以打开一个activity来对接受到的信息做出反应,或者利用NotificationManager来警告用户。Notifications 可以用很多方法来引起用户的注意,一般是在状态栏
2010-06-19 10:46:00
412
转载 Android 开发文档 程序基础 ——Services组件
service没有可视化用户界面,运行在后台,在不确定的时间。service都是extends于Service基类。也可以链接或者绑定到一个运行中的service。连接时可以通过一个可视化界面来交互。像其他组件一样,service是运行程序进程的主线程中。所以service不会block其他组件或者用户界面,而是为time- consuming tasks?耗时的任务产生另一个线程。
2010-06-19 10:44:00
322
转载 Android 开发文档 程序基础 ——activity组件
窗口中的可视内容是views(View类衍生的对象)的一个层次。每个views都控制窗口中的一个矩形区域。父级的views包含子级的 views并组织其布局。末端的views相应用户在其区域的操作。也就是说view是activity与用户发生交互的地方。views是由Activity.setContentView() 方法放置在activity window中。
2010-06-19 10:43:00
459
转载 Android 开发文档 之程序基础Application Fundamentals
Android程序的一个中心功能就是一个程序可以利用其他程序的组件,只要那些程序允许。为了达到这个目的,系统必须可以在一个程序某一部分被需要时开 始一个程序进程,并实例化Java对象而利用那部分。因此,android程序不像其他程序那样有一个单独的入口,比如main(),然而,他们有一些必 须的组件以便系统在需要的时候可以实例化运行。
2010-06-19 10:40:00
299
转载 Jquery插件我来实现之滑动幻灯片一(转自buhutuu.cn)
最近在研究GAE,所以jquery这边就没怎么更新。这些天在工作里需要用到幻灯片效果,所以就用了我在buhutuu首页中用的那个jquery插件。这个插件还是相当好用的,不过我要在好几个页面里面用到,偏偏宽度高度都不太一致,所以这个插件的问题也就暴露了,开放性并不是很好。我决定,自己写一个jquery插件,将宽度和高度都作成自定义的,这样功能在js里实现,而样式则在网页里各自定义。
2010-01-09 10:51:00
468
原创 javascript随机改变网页内容
最近看到google的adwords里推出了一个网站优化工具,主要的作用就是随机替换网页中的内容,来测试不同内容对于客户的吸引力,从而决定选择哪一个内容。实际上这其中随机替换的不一定是内容,也可以是css。这真是个不错的创意,实际上就是一个js实现的动态网页,那么如何实现一个比较简单的相同效果呢?其实很容易,首先将内容所处的div编号,利用随机函数挑出一个,然后移除,并将其中的内容放在一个
2009-07-28 07:04:00
566
原创 JQuery实现的国际象棋棋盘
前些时候为了熟悉国际象棋的各种开局,随手写了一个很简单的国际象棋棋盘(实在找不到现成的)。当时没觉得有什么,今天回头看看,觉得还有点意思,拿来给大家鉴定一下。首先要实现棋子的排布,这毫无疑问得用div+css了。具体代码可以看Jquery做的国际象棋棋盘(查看源代码)。一开始我给每种棋子都写了类,实际上这是比较愚蠢的行为。首先,这样子css代码会有冗余。其次,在棋子d
2009-06-26 07:07:00
5483
原创 jQuery实现可以拖动的div
转自jquery实现可以拖动的div最近研究了一下jQuery,觉得真的是一个很不错的js库,其他的不说,关键是有翔实的文档,这点是非常关键的。当然,代码使用起来也非常的方便,很多东西就不用自己再去琢磨了。研究的过程中顺便用jQuery实现了一个div的拖动,代码附于本文结尾。实现的思路请参考我的可以拖动的DIV(二)一文。在参考jQuery中文网站中的例子时,我
2009-06-22 23:11:00
3454
原创 可以拖动的DIV(二)
转自可以拖动的div——buhutuu.cn 关于这个实现div拖动的js函数,实际上也是某位前辈公布于网上,这儿只是摘抄注解一下。function beginDrag(elementToDrag,event){var =event.clientX-parseInt(elementToDrag.style.left);var deltaY=event.cli
2009-06-21 23:41:00
802
原创 可以拖动的div(一)
转自可以拖动的div——buhutuu.cn 可以拖动的div是一个比较难以做到的效果,特别是在浏览器对于js代码的运行效率还不是足够高的情况下,不过听说firefox对于js的支持正在增加,大概是料到了js在网页浏览的桌面化趋势中所占的重要地位吧。要实现div的任意拖动,我们不妨分析一下整个过程。当鼠标点击div时,触发一个事件,让div的位置属性(left,top)随着鼠标位置
2009-06-21 23:39:00
782
原创 div css初探
最近在div和css上有了实践的机会,得到了一些心得体会,现在记下来第一留给自己,第二希望帮助那些同样是初次学习div和css的朋友。首先,规划好div很重要。千万不要玩意识流,写到哪里加到哪里。事先画一个布局,然后在代码里写好div以及注释。其次,搞清楚id和class的区别。最好不好要让几个div拥有同一个id。我的建议是尽量用id来写div的位置,用class来规定样式。最后,记住ie和ff
2008-05-20 01:07:00
392
原创 读书笔记之最小化对象的创建成本
对象的建构不仅仅是分配内存和初始化值域那么简单。对象的创建过程中:1. 从heap中分配内存,存放全部的instance变量以及这个对象连同其superclass的实现专属数据(implementation-specific data,包括指向class和method data的指针)2.对象的instance变量被初始化为缺省值。3.调用most derived class 最深层派生类的构造函
2008-05-14 23:40:00
305
原创 读书笔记之final的作用
java中如果要得到常量可以使用final 修饰符。当一个值被标明为final时,就不可改变,如果这个值是一个object reference ,那么所指向的object可以随意的改变,但是不能指向其他的对象。final也可以用来阻止函数被子类覆写,因为类中默认情况下非私有和非静态的函数都是可以被覆写的,一旦写上final,subclass就无法覆写了、
2008-05-09 00:27:00
319
原创 读书笔记之java中参数传递by value而非by refernce
import java.awt.Point; class PassByValue......{ public static void modifyPoint(Point pt,int j)......{ pt.setLocation(5,5); j=15; System.out.println("in mP " + "pt = "
2008-05-09 00:20:00
390
原创 关于hibernate和jsp,以及中文编码问题的传统解决方法
用MyEclipse来开发java网站还是很方便的 。要实现一个应用hibernate来进行数据库操作的web程序,首先要在工程中添加hibernate的包,这个在MyEclipse中一个菜单命令就可以搞定了。其次我们要建立相关数据库中某个表的hbm.xml,这个也是在MyEclipse中搞定。再建立针对这个表的java类。然后建立如下网页:...@ page language="java
2008-01-23 21:03:00
314
原创 C#中comboBox和数据库的连接
虽然通过向导可以很容易的得到,但是考虑到后续功能,这种简单的实现方式只会给自己带来更多的麻烦,我决定自己写,不过写起来的确麻烦些,而且有很多意外考虑不到,但是先简单的实现吧。添加了一个void用来实现控件和数据库的连接。 private void data() { OleDbConnection kindConnection; O
2007-06-06 23:21:00
3564
1
原创 布尔变量自锁
布尔变量自锁之前没有听书过这样一个方法,在网上也没有找到比较详细的解释。if( myBool ==flalse){ myBool = true; .....}else{ myBool = false; .....}据说方法就是这样的,大概可以理解这个意思。
2007-05-05 16:33:00
660
McGraw.Hill.How.to.Do.Everything.with.JavaScript.eBook-DDU
2008-08-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人