z****e 发帖数: 54598 | 1 比如说我想要让张三给我写一个类
我去调用张三写好的类里面的方法
但是有个问题,就是我怎么调用张三写的类的方法呢?
张三的类还没写呢,我跟张三只有一个约定
我只能知道张三将来要写好的类的方法
但是我现在要用,如果我等张三写好了类我再开始写的话
效率就非常低了,那当我只有跟张三的约定的前提下
我该怎么做才能使得张三写出符合我标准的代码?
四种方法
第一种是我写好一个虚拟类,让张三去继承这个虚拟类
去实现我定义的虚拟方法
第二种也是最常用的一种,就是用接口
同样也是让张三去实现我在接口中定义的虚拟方法
其实在java1.4左右,大部分的框架和标准都是基于这个模式的
尤其是ejb,近乎癫狂地使用了各种乱七八糟的接口
而表示层的框架和标准则全面采用虚拟类
比如struts1.x的版本,还有servlet
其实这样做其实也不是很难就是了,无非就是实现一堆的虚拟方法
而且多数时候可以用ide的模板代劳,按几个按钮就是了
但是即便如此,张三还是觉得很难接受这么苛刻的要求
因为能把这些方法解释清楚的人实在是不太多
这是jee第一代
后来出现了一个东西叫做反射
当反射刚出现的时候,效率比较低,后来优化了之... 阅读全帖 |
|
y**b 发帖数: 10166 | 2 我是这样想的:能抽象出共性的尽可能抽出来放在父类,但是具体的差别还是放在子类
,这个设计应该算正常的。
但是用到子类那些有具体差别(其实概念上还算很接近)的接口时,不应该通过父类指针
来操作。
比如有30个接口抽象到父类了,还有三五个属于子类不同的属性。那30个接口采用父类
指针(比如含有大量父类指针的一个链表)进行操作非常方便,就那三五个子类特有的接
口得通过子类指针来操作。
我的问题好像在于:生成子类对象的时候直接采用了父类指针,结果遇到子类特有属性
的时候就得向下转换。如果生成子类对象的时候全部采用子类指针,遇到共性的时候将
这些子类指针(或者其容器)传给父类指针,好像问题就解决了;代价就是在C类中多维
护几个子类指针的容器并把它们适当地传给父类指针的容器,但是不会遇到向下转换的
问题。好像这样才是合理的做法?
之所以出这个问题,是因为原来程序只有B类,后来将B类改成D1类,同时添加D2类,再
重写B类,也为以后添加D3,D4做些准备。C类里面就一直想着偷懒用原来代码不变,其
实稍微改改就更合理了。 |
|
w*********g 发帖数: 30882 | 3 这两年,兔子的国家重器和高端武器层出不穷。
俺的巴掌红得都要拍不动。
裤衩已成灰。
当然还有好多小兔子半信半疑。
过年时太忙,都没空,现在总算好点。
俺现在心情不错,就给大家818,为什么兔子这些年,这么牛逼,发展速度这么快。
当然,俺说的是军工和科研系统方面。
长期更新啊。大家慢慢看。
亲身经历,绝对原创。
为什么,兔子家的进步神速?
兔子家,是真正把霉菌在IT最高端的仿真模拟,和毛熊强大的系统分析设计以及体
系对抗思想,给结合起来了。
兔子家,正是靠了计算机仿真和模拟,所以节省了大量的实物实验,节省了成本,
提高了速度。
这,就是后发的巨大优势。这个优势,是上世纪90年代后期,尤其是2000年之后,
PC以及各种高端工具软件普及之后(UG,CATIA,ANSYS,Fluent……),才具有的优势。
有人问,为什么美帝善于仿真模拟,毛熊善于系统分析设计,体系对抗到底是啥玩
意?
这个,算是问道点子上了。
这个话题很大,俺只能简单滴回答,另外讲讲俺的亲身经历。
这个要从二战说起,霉菌,继承的是德国的思想,高大上的武器,高素质军人,高
超地战术思想和能力,类似狼或者鹰。
毛熊,则是完全不... 阅读全帖 |
|
y**b 发帖数: 10166 | 4 父类B,
子类D1,D2,D3,
子类有很多相同的操作,也有几个不同的操作,比如D1op, D2op, D3op.
现在有一个C类中包含了B类指针,来操作其三个子类的对象(混合出现),
也就是有这种情况:
B *pB,
pB->D1op
pB->D2op
pB->D3op
显然,编译通不过,因为B类并没有定义这些操作。
想了几个办法:
1. 在B类中用虚函数定义这些操作,三个子类分别覆盖,如果没有动作就为空。
但这带来一个问题:B类中接口太宽,本来三个子类各自不同的操作,结果
父类反而都得有;如果再添加个子类及不同操作,那B类又得添加接口。感觉
特别不合理,这叫什么问题?
2.使用RTTI和向下转换dynamic_cast,B类转换成不同子类,可是这个转换要
做很多检测,还不一定转换成功;倒是static_cast反而明确一些,也最简单
可行?
3.碰巧C类使用B类三个不同子类(每次只用一个子类)作为组成部分,可以使用
类模板,也就是说用B类三个不同子类作为模板形参来构造C类。这样C类其实
也形成了三个子类,分别对应B类的三个子类,但是失去了使用B类的便利。
还是这几种办法根本就不对?... 阅读全帖 |
|
g*****g 发帖数: 226 | 5 我说这个可没指什么接口都用网口阿,usb,sata,dvi等等这类的该咋连还咋连。
仅仅是指仪器间的互联以及和计算机之间的互联。直接用网口,很多应用就完全可以不
需要中间多余的那台计算机。
用网口给你的方便你也应该能感觉到。即使很快的仪器接口,多几台串接起来也会经常
有冲突的时候,网口莫名其妙连不上,串多了的仪器接口也有。
网络不照,完全可以弄个hub的局域网,不接到外面就是了。但是仪器多台必须互联有
这类问题的时候,你看看是否好解决。
internet |
|
t******r 发帖数: 209 | 6 最近看个project,对于每个具体类,一般都继承一个该类的接口类,该类的接口类又
继承该类的基类;还有个factory类,用来产生该类;还有个该类的surrogate类,不继
承任何类,我就疑惑了,这个surrogate拿来干吗那? |
|
t********k 发帖数: 808 | 7 应该做成什么样的类或包?
我想做一个类似代理的东西
或是某种服务
让应用程序能够调用里面的接口
应该做成是什么样的包或是类?
比如有好多应用都需要telnet到其它系统
我想做一个这样的东西
各应用程序调用我里面的接口就行
这样即使应用系统有变化
我最基本的东西不用变
只要稍修改与应用调用的接口就行
我也不知做成什么样的东西好
能提个意见么?
谢谢! |
|
y**b 发帖数: 10166 | 8 原来是典型的依赖倒置原则,父类不应该依赖于之类。
1. 在B类中用虚函数定义这些操作,三个子类分别覆盖,如果没有动作就为空。
但这带来一个问题:B类中接口太宽,本来三个子类各自不同的操作,结果
父类反而都得有;如果再添加个子类及不同操作,那B类又得添加接口。感觉
特别不合理,这叫什么问题? |
|
p*******m 发帖数: 20761 | 9 iPhone 5接口芯片已被破解
2012-09-27 09:09:08 6122 人阅读 编辑:朝晖 [复制链接] [我要爆料]
iPhone 5采用了新一代数据接口,这种名为“Lightning(闪电)”的接口采用了全新
的8针设计,但接口中的“认证芯片”却难煞第三方配件厂商。不过,据一位化名“梁
生”的从业人员向腾讯科技介绍,目前至少有3到4家公司完成了芯片破解工作,基础的
数据传输和充电工作已无问题。
梁生称,其实国内对这类认证芯片并不陌生,在多年以前,包括爱普生、惠普等办公设
备生产厂家就开始在墨盒上加入防伪芯片,用来防止国内企业生产兼容(山寨)产品及
联供(连续供墨)系统,对这些国内墨盒企业来说,与原厂之间的芯片争夺战已经有了
多年历史,苹果在安全芯片上技术并未强大到能让专业公司无法破解的程度,而之前无
法破解的传闻或许与部分山寨厂商试图赚取高额利润有关。
他透露,目前市场上已经有高仿iPhone 5数据线产品,批发价在60至80元人民币,销售
价在120至180元人民币。其实这些产品成本价并不高,但是只有几家公司有应对苹果安
全芯片的解决方案,成本较高,短期内相关产品不会... 阅读全帖 |
|
c****x 发帖数: 6601 | 10 【文/观察者网专栏作者 陈经】
早在2016年3月AlphaGo挑战围棋成功之后,就传出Deepmind下一步计划是在星际争霸上
打败人类。
人工智能开发者研究算法很喜欢用计算机游戏。一是研究目标清楚,游戏目标定义得很
完善,科研有时最重要的是提出问题。二是最近流行的深度学习需要极多的训练样本,
人类的线上高水平比赛很多能够提供足够的样本。三是问题足够难,进展如何通过人机
对战、线上测试一清二楚,而不是研究者自说自话。
围棋是“完全信息博弈”(局面摆明,理论上有确定结论)游戏里最复杂的一个,又很
有艺术性。在围棋上战胜人类,就实现了Deepmind负责人哈萨比斯的说法,机器自我对
弈不断自我学习的方法可以解决一切基于推理的棋类游戏。
这个自学习的框架,能否在“非完全信息博弈”上打败人类,令人非常有兴趣,同时又
极有学术价值。星际争霸是一个很合适的测试对象。星际争霸最常见的是两个玩家对战
,各自从一个基地开始发展,没有兵力在附近就看不见对方的动作,对方在干什么自己
不知道,因此是“非完全信息博弈”。
1998年暴雪公司推出的星际争霸,经过数次升级到“母巢之战”版本,终于成为一款平
衡性极... 阅读全帖 |
|
t********k 发帖数: 808 | 11 准备做一个服务,比如就是做一个telnet的接口
让任一应用能调用我的接口能登录系统,进行copy,delete之类的功能
应该做成哪类包?
用wsad开发
这些接口打包成JAR之类的包,放在系统的路径上就能调用
谢谢了 |
|
c****x 发帖数: 6601 | 12 【文/观察者网专栏作者 陈经】
陈经
风云学会副会长,《中国的官办经济》
http://www.guancha.cn/chenjing/2017_08_24_424174_s.shtml
早在2016年3月AlphaGo挑战围棋成功之后,就传出Deepmind下一步计划是在星际争霸上
打败人类。
人工智能开发者研究算法很喜欢用计算机游戏。一是研究目标清楚,游戏目标定义得很
完善,科研有时最重要的是提出问题。二是最近流行的深度学习需要极多的训练样本,
人类的线上高水平比赛很多能够提供足够的样本。三是问题足够难,进展如何通过人机
对战、线上测试一清二楚,而不是研究者自说自话。
围棋是“完全信息博弈”(局面摆明,理论上有确定结论)游戏里最复杂的一个,又很
有艺术性。在围棋上战胜人类,就实现了Deepmind负责人哈萨比斯的说法,机器自我对
弈不断自我学习的方法可以解决一切基于推理的棋类游戏。
这个自学习的框架,能否在“非完全信息博弈”上打败人类,令人非常有兴趣,同时又
极有学术价值。星际争霸是一个很合适的测试对象。星际争霸最常见的是两个玩家对战
,各自从一个基地开始发展,没有兵力在附近就看不... 阅读全帖 |
|
b*******s 发帖数: 5216 | 13 我不是太懂专业领域的东西,设计水平也一般,不过还是给你个参考
做两个类,第一个是颗粒类,包含存取属性的接口
第二个类是边界类,假定边界是由一组函数控制的,而函数是由一组参数控制的,这个
类包含对应的函数指针,以及控制参数
然后这两个类的实例各自放在对应的容器里,遍历颗粒类的容器,边界是否接触,作用
点等功能用类似stl的algorithm的办法来实现,不需要放在任何一个上述的类里面,
这样类之间就解耦了,维护应该不复杂 |
|
d******i 发帖数: 7160 | 14 鄙夷老技术者跳过哈。
越发想不明白。
调用路线开始是: CoCreateInstace --> CoGetClassObject --> DllGetClassObject
尚可理解,无非是 CoGetClassObject通过查找注册表,得知DLL路径,然后调用DLL中
DllGetClassObject。
用CLSID替代了直接loadLibrary那个DLL(那样的话需知道名字和路径),
进而靠DLL中的这个输出函数DllGetClassObject试图得到COM组件的指针,即简化版本
中CreateInstance起到的作用。
问题是这个DllGetClassObject没直接new出来个COM组件返回了事,而是整出个本组件
独有的类厂给返回了。
该指针一直返回到CoCreateInstace,才被用来CreateInstance()。
我是狗搜了半天,读遍数篇讲解,也没搞清这个reasoning(靠类厂去CreateInstance)
到底在哪儿。
按说既然这个类厂也是写组件的人写的,引入类厂就有点多此一举了。
DllGetClassObject直接做了CreateInsta... 阅读全帖 |
|
A*********3 发帖数: 70 | 15 自从做码工以来,接触了很多很多的工具
java和数据库接口类: jdbc, hibernate, jpa, spring mongo
网络编程: spring MVC, ruby on rails, jersey framework, RPC,
front end: jsp, js, node.js, jquerry, html, css
Queue类: ActiveMq, JMS
邮件类: java mail, ruby mail
其他的framework: Apache Camel
并行处理,多线程等等
还有各种的build工具,configuration management工具
感觉都搞精通实在好难
个人觉得,是否Java和数据库结构弄清楚弄熟一种(比如hibernate),Spring MVC弄熟
,Queue类弄熟一种(比如jms),多线程搞熟,任选一种build工具弄熟,就差不多够了
?其他的就触类旁通了?
请达人指教,万分感谢! |
|
x****u 发帖数: 44466 | 16 你倒是把类厂的接口看一下啊。
类厂的一个重要意义是LockServer。 |
|
b*******s 发帖数: 5216 | 17 用traits足以做事先都没有定义过的类,也就是根据文件可以在编译期形成代码,比
java那套强多了。比如上面某位提供的都要是已经有代码实现的类,比如接口是多边形
,他得事先写好五边形六边形三角什么的,弱爆了 |
|
b*******s 发帖数: 5216 | 18 用traits足以做事先都没有定义过的类,也就是根据文件可以在编译期形成代码,比
java那套强多了。比如上面某位提供的都要是已经有代码实现的类,比如接口是多边形
,他得事先写好五边形六边形三角什么的,弱爆了 |
|
a*****0 发帖数: 660 | 19 同求这类handy man. 我想空白的墙上装电视cable接口 |
|
|
j******o 发帖数: 4219 | 21 这是为了兼容以前的接口,以后都推Type C了就没那么多事了。 |
|
E***r 发帖数: 1037 | 22 如果只是为了“兼容”,那为什么现在新的移动硬盘都用Micro B接口
不用标准A或者Micro A呢? |
|
a***e 发帖数: 27968 | 23 这俩接口绝对有屎以来最差的设计
一副烙印主导的屌丝气 |
|
a***e 发帖数: 27968 | 24 这俩接口绝对有屎以来最差的设计
一副烙印主导的屌丝气 |
|
a***e 发帖数: 27968 | 25 这俩接口绝对有屎以来最差的设计
一副烙印主导的屌丝气 |
|
e****m 发帖数: 5 | 26 一直搞得不是很清楚,不知道前人问过没有。 java内实现多线程的时候可以通过实现
借口runnable, 既然runnable是接口,没有任何的内部机制,怎么实现的多线程? 难
道是jvm运行的时候,碰到实现runnable的对象就当成多线程的程序来处理,实际上最
终的多线程的实现是在jvm中实现的,而不是在设计对象的时候实现的。
如果用c++来实现多线程,因为语言本身不支持,就必须自己设计的对象亲自处理多线
程运行的各种情况了吧? 有没有现成的c++类库已经实现了多线程了?
欢迎各位大师的指导。 |
|
g*****g 发帖数: 226 | 27 这里华人牛人很多,有做这类公司的就推推吧,出产品了,俺会首选带网口的。
tek,agilent,keithley。。。,我们用的东西都是鬼子的,真没办法。 |
|
m********e 发帖数: 1156 | 28 网上下了一个别人的程序,结果编译出错。有没有人碰到过这个错? 谢谢 |
|
z*********n 发帖数: 1451 | 29 没有具体代码,不知道详情,但最简单的办法肯定是朝着统一不同Op的接口这个方向努
力,至少统一返回值?可用的工具包括模板,变长参数列表,或者lambda
如果你能统一函数接口,很有可能可以避免dynamic_cast这种反oop设计原则的语句。
如果可以,最好贴一段短的,精简的样例代码供大家参考。 |
|
y**b 发帖数: 10166 | 30 看来还真是这样,B的接口和实现必须完完全全绝对分离,这样编译就没有那个提示了。
道理大概是:B的接口和实现完完全全绝对分离,这样A用到B.h时不涉及B的实现,也就
不涉及到A的定义(即使B里面forward declare A),避免了循环?
,B
体) |
|
z*******3 发帖数: 13709 | 31 学会用ide
比如eclipse
然后学会用.这种查方法的方式
这样工作效率会大幅增加
这是工作
如果你想对付面试
楼上说了
看这种实现类的interface
这里就是List有啥方法
然后背List常用的方法就好了
以后不管遇到LinkedList还是ArrayList,接口方法是一致的
可以通用,然后你再记住各个不同的impl里面方法的复杂度
差不多可以了 |
|
n*******e 发帖数: 62 | 32 你的tree_node 声明是私有的. 恐怕不能在公有函数接口用吧?
下面是类的申明部分:
template
class BinarySearchTree
{
〉〉〉〉〉〉〉private:
〉〉〉〉〉〉〉 struct tree_node
{
tree_node* left;
tree_node* right;
T data;
};
tree_node* root;
〉〉〉〉〉〉〉public:
。。。。。。。。。。。。
〉〉〉〉〉〉〉 tree_node* search(tree_node*,T);
void print_search(T);
}; |
|
h*****0 发帖数: 4889 | 33 。。。
那不叫没有创建。你现在写的时候只是不确定那个类的定义。但是对象在程序运行到这
个方法时,是已经创建了的。
一个办法是,把那个对象从你的方法的参数中传进来。定义好接口方法。
比如: |
|
z****e 发帖数: 54598 | 34 那几个接口类都不是小东西
随便一个展开都是主体部分
所以基本上可以猜出来这个类会超过200行 |
|
g*****g 发帖数: 34805 | 35 用点脑子行不?不同形状计算面积的方法难道是一样的?但凡不一样难道你不用定义不
同的计算方法?但凡方法实现不一样难道封装到类使用同样接口不是最干净的设计。本
班水平实在太低了,trait根本不是你这么用的。真要用Java 8也有相似的default
method. |
|
g*****g 发帖数: 34805 | 36 用点脑子行不?不同形状计算面积的方法难道是一样的?但凡不一样难道你不用定义不
同的计算方法?但凡方法实现不一样难道封装到类使用同样接口不是最干净的设计。本
班水平实在太低了,trait根本不是你这么用的。真要用Java 8也有相似的default
method. |
|
|
y**b 发帖数: 10166 | 38 想过这么做,可是发现:
1. 有两个个成员函数signature略有不同(形参个数),但这也不是问题,仍然可以把它
们写成一样的signature,只是某些参数对某些子类是不需要的。
2. 有几个成员函数名字(含有物理意义)不同,若改成相同,倒是可以实现,但子类的
个性有点混淆啊,而且父类接口偏宽?
感觉这个思路和向下static_cast比,那个更好呢?也不局限于我这个例子,就普遍性
而言呢?
多谢大家指点。 |
|
s******y 发帖数: 416 | 39 如果函数的sig相同,建议使用函数指针。在父类里设置一个接口就好。 |
|
b*******1 发帖数: 747 | 40 更新一下这两天hdmi输出的效果:非常好。 总统节长周末对比了下htpc hdmi out和我
那台飞利浦cd 唱机输出的结果,hdmi音质秒杀唱机光缆线输出。 当然我主要听的是歌
剧类的. 比得是Les Miserables 和Babra Streisand的cats memory这些。 |
|
d******l 发帖数: 98 | 41 嗯
多谢 @fantasist ,学习了 确实继承了方法, 原来都在AbstractCollection 和
AbstractSet 类中. |
|
d****n 发帖数: 12461 | 42 Dell Inspiron, XPS, Lenovo Ideapad这类的大部分有啊。商务本可以通过dock带hdmi。 |
|
b*****e 发帖数: 762 | 43 最近在用美国ipage的虚拟空间。但是发现中国半夜时候(美国中午)网页打开速度很
慢。不知道原因是什么?猜测可能原
因:
1.半夜时候那个服务器的负载大或者那个服务器的带宽不够。
2.半夜时候中美海底光缆占用得多。
3.半夜时候中国网络负载大。
3. 是不可能的。2.似乎我也没办法改变。
如果是1.的话,有两种可能:他的服务器负载大或者他服务器的贷款不够。
请问这两种可能如何判断呢?我的应用是php的。所以服务器的负载大的话就很可能影
响我。服务器负载是不是要放探针来看
呢?他的带宽有没有耗尽是不是要用ftp下一个大文件来看?大家都说流量到一定程度
用独立服务器好。是不是到一定流量的
时候,php类的应用瓶颈主要体现在服务器性能不够阿? |
|
s*********d 发帖数: 2406 | 44 我一直以来觉这种产品能搞出来应该很不错
就是所有的机器都是可扩展的
比如 学校图书馆,有一天destop,有一个接口
可以直接把你的笔记本连上
在运算的时候,就自动分配CPU,内存,or虚拟内存 共同运算
就像可以随意扩展的 computer cluster
控制那块估计很难做,
但是这样的话,对于有一些多任务or 科学计算来说
效率上九很好啊 |
|
a***a 发帖数: 2493 | 45 你提及的线是“for USB Type-C Devices”,我的cable也是这种,
问题是,如果我用来当“for usb type a devices”用,就是
type c 端接电脑type c口,usb端接其他usb 硬盘,估计不work。
店小二提及这类线有些是单向有些是双向,但外表看不出,我对他的
说法表示怀疑,但ebay好像又找不到这种线,有的话都是for type c device
的(就是我自己平板的type c cable)。
Type- |
|
h*d 发帖数: 214 | 46
我记得corba从来就没有流行过。被边缘化可能有两个原因
1. 开发过程复杂,需要用特殊语言定义好stub什么的,然后根据目标语言生成接口类
,如果需要修改,整个过程又来一遍
2. 这个问题更大。corba号称是跨平台和语言的,实际境况不理想,各个平台的实现有
不兼容问题。由于协议复杂,调试可能也不通顺。
Web Services在这个方面基本是beat shit of it! |
|
D***n 发帖数: 6804 | 47 建议删除流量,性能方面的要求,在现阶段强调这个要求完全是浪费钱。因为花了巨大
精力,上线,结果群众们不买帐咋办?系统设计时留有允许根据需求升级的接口就行了。
资金量怎么保证? |
|