这是一个能java实现功能开关什么功能的开关

java中如何实现一个按钮拥有两种功能。
[问题点数:20分,结帖人Migu4423]
本版专家分:13
结帖率 72.73%
CSDN今日推荐
本版专家分:6593
本版专家分:9484
2012年5月 挨踢职涯大版内专家分月排行榜第一
本版专家分:43
本版专家分:58
本版专家分:13
本版专家分:0
本版专家分:120
本版专家分:13
本版专家分:58
本版专家分:13
匿名用户不能发表回复!
其他相关推荐开关三极管是怎么工作而实现开关功能?_百度知道
开关三极管是怎么工作而实现开关功能?
采纳数:33
获赞数:158
截止状态当加在三极管发射结的电压小于PN结的导通电压,基极电流为零,集电极电流和发射极电流都为零,三极管这时失去了电流放大作用,集电极和发射极之间相当于开关的断开状态,即为三极管的截止状态。开关三极管处于截止状态的特征是发射结,集电结均处于反向偏置。导通状态当加在三极管发射结的电压大于PN结的导通电压,并且当基极的电流增大到一定程度时,集电极电流不再随着基极电流的增大而增大,而是处于某一定值附近不再怎么变化,此时三极管失去电流放大作用,集电极和发射极之间的电压很小,集电极和发射极之间相当于开关的导通状态,即为三极管的导通状态。开关三极管处于饱和导通状态的特征是发射结,集电结均处于正向偏置。而处于放大状态的三极管的特征是发射结处于正向偏置,集电结处于反向偏置。这也是可以使用电压表测试发射结,集电结的电压值判定三极管工作状况的原理。开关三极管正是基于三极管的开关特性来工作的。工作模式三极管的种类很多,并且不同型号各有不同的用途。三极管大都是塑料封装或金属封装,常见三极管的外观,有一个箭头的电极是发射极,箭头朝外的是NPN型三极管,而箭头朝内的是PNP型。实际上箭头所指的方向是表示电流的方向。双极面结型晶体管两个类型:NPN和PNPNPN类型包含两个n型区域和一个分隔它们的p型区域;PNP类型则包含两个p型区域和一个分隔它们的n型区域。
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。三极管做开关是怎么实现的?有什么作用呢?
输入手机号码,报价结果将发送到您手机
装修顾问-馨馨
4年行业经验,24h可咨询
10秒闪电通过好友
报价短信已发送到您的手机
因材料品牌及工程量不同,具体报价以量房实测为准
稍候装修管家将回电您,免费提供装修咨询服务
您的装修预算约
*装修管家将回电您,免费提供装修咨询服务
*装修管家将回电您,免费提供装修咨询服务
*因材料品牌及工程量不同,具体报价以量房实测为准
装修顾问 -馨馨
(四年装修行业经验)
微信扫一扫
3.&您家小区名称 :&&
请选择您家的装修时间
三极管做开关是怎么实现的?有什么作用呢?
提问者:孙安静|
190次浏览|
我来帮他解答
还可以输入1500字
已有2条回答
回答数:4436
| 被采纳数:0
1、当加在三极管发射结的电压小于PN结的导通电压,基极电流为零,集电极电流和发射极电流都为零,三极管这时失去了电流放大作用,集电极和发射极之间相当于开关的断开状态,即为三极管的截止状态。开关三极管处于截止状态的特征是发射结,集电结均处于反向偏置。2、当加在三极管发射结的电压大于PN结的导通电压,并且当基极的电流增大到一定程度时,集电极电流不再随着基极电流的增大而增大,而是处于某一定值附近不再怎么变化,此时三极管失去电流放大作用,集电极和发射极之间的电压很小,集电极和发射极之间相当于开关的导通状态,即为三极管的导通状态。开关三极管处于饱和导通状态的特征是发射结,集电结均处于正向偏置。而处于放大状态的三极管的特征是发射结处于正向偏置,集电结处于反向偏置。这也是可以使用电压表测试发射结,集电结的电压值判定三极管工作状况的原理。开关三极管正是基于三极管的开关特性来工作的。希望我的回答能帮到您
回答数:3523
| 被采纳数:0
三极管的两个主要作用是:放大和倒相。如要把三极管做成开关,需要三极管工作在击穿状态,与外接电路配合才能实现。开关电源的输出电压要随电压和负荷的变化而自动调整,所以用三极管控制。说明一下:开关管通常是用三极管,开关管是按用途称谓的。有的电路中也有用二极管的。84 条评论分享收藏感谢收起博客分类:
首先讲一下开关的由来,例如东京在6月18日做店庆促销活动,在交易下单环节,可能需要调用A、B、C三个接口来完成,但是其实A和B是必须的,C只是附加的功能(例如在下单的时候做一下推荐),可有可无,在平时系统没有压力,容量充足的情况下,调用下没问题,但是在类似店庆之类的大促环节,系统已经满负荷了,这时候其实完全可以不去调用C接口,怎么实现这个呢?改代码?no,no,no,这样太不敏捷,此时开关诞生了,开发人员只要简单执行一下命令或者点一下页面,就可以关掉对于C接口的调用,在大促过去之后,再把开关恢复回去即可。
问题一:在单个java系统中如何实现开关功能?
其实对于开关来说,对应Java中的类型,很好映射,就是一个boolean值,在需要做开关操作的地方,调用这个属性,判断状态,然后走相应的逻辑即可。这个类是一个单例,保证全局唯一(代码就不写了,单例模式一般是学习设计模式中最开始接触的呵呵)。
问题二:单个java系统中,如何实现开关值变更的操作呢?
在单机系统中,改变开关的状态很简单(留一个口子,外部可以改变属性的值,例如改为true或者false),这时候,可以是页面来维护开关,通过页面的点击类改变这个全局唯一的属性,从而实现开关动作的触发。
问题三:多个同构java系统,如何实现开关状态的同步呢?
通过一和二的介绍,在单机情况下,开关的变更可以了,但是在多个同构(这里的同构,值得是部署的同一套代码,逻辑完全相同,类似Master和Slaver的模式)系统中,如何保持一致呢?单例模式,开关属性是被加载到本地缓存,就是说java一直持有的对象,在FullGC的时候回收不走的那种。这个时候,如果要保持各个系统中开关属性状态的一致,就需要从第三方外部系统中加载这个数据。
什么系统能充当第三方外部系统呢?可以是一个数据库访问系统,我们暂且称之为MetaServer,开关的属性防止在DB中,然后MetaServer提供页面来修改数据,同时提供接口读取开关的数据,在应用启动的时候,通过MetaServer来读取数据,加载到本地缓存中。这时候就有个问题,就是我通过MetaServer的页面改变了值,各个应用如何知道我改变了属性呢?这个时候就需要通过一些办法(办法很多,可以是消息系统,可以是zookeeper,可以是页面触发)来清理一下开关属性的缓存,让缓存重新加载一下,从而实现最新的状态获取。
总体思路就是:metaServer维护开关数据--应用读取DB中的数据到本地缓存--DB中数据变更--触发开关属性缓存重新加载。
这个是不是有点复杂,有没有更加简单的办法?当然有了,之前淘宝开源了一个系统diamond(持久化配置管理系统,),其实可以理解为“配置信息的伪推送服务”,例如我变更了一个开关的属性,不再需要做清理缓存的事情,diamond帮你做掉了(原理很简单,例如系统A订阅了在diamond中的开关信息,这时候A会启动一个线程,每隔一段时间来轮循diamond的服务端,看看开关属性的数据有没有变更,如果有变更,在diamond服务端来加载最新的数据)。
总体思路是:在diamond中维护配置信息--系统订阅开关属性--系统轮循配置是否有变更,有变更直接就变掉了。
问题四:开关设计的几个坑
有时候,我们为了方便,没有借助问题三种的MetaServer或者diamond的方式,就是留了一个HTTP的接口来触发修改开关(多台机器的话,可以写批量脚本),这时候其实需要我们在apache或者nginx中,把这个URL的访问禁止掉,防止恶意用户在外部拼凑链接来进行开关的变动,这时候只能在服务器上通过linux的curl来触发操作了。
还有一个,就是如果通过HTTP的形式来修改开关的属性,有个是需要注意的,就是开关的执行要幂等操作,这样方便操作,避免出现集群中数据不一致的状态(就是执行开,开关就是开,不能第一次执行是开,第二次执行是关)。
问题五:开关组合情况下怎么搞?
上面的几种情况,仅仅是执行单个开关,应该比较简单。但是我同时又A、B、C三个开关,在不同的业务场景下,可能需要关闭A和B开关,在另外一个场景下,可能需要关闭A和C开关,这时候认为操作有可能会有遗漏或者疏忽,怎么搞呢?在单独属性开关的基础上做封装,例如A和B上面增加一层属性,暂且叫“AB”,修改AB的值,对应的系统修改A和B的值,这样就避免人肉记住一些组合。
问题六:如何实现自动升降级?
上面的情况,都是在提起可以预知的情况下,我们做一些人为的操作,这个能不能自动化?当然可以,就是这一小节讨论的自动升降级。
举例子,现在东京和作的外部物流公司有多家,会调用它们的系统或者物流节点的状态,这个时候,物流公司系统是不稳定的,如果挂了或者响应时间慢了,对于自身的系统会影响比较大,比较理想的办法是,在物流公司系统出现问题的时候,这块逻辑自动降级处理,然后等物流公司系统好了之后,再把这部分逻辑自动升级,整个过程没有人为参与,自动保持系统稳定性。这里说一下总体思路:
第一步:搞一个计数器,记录接口,暂定A的调用成功次数、失败次数以及响应时间;
第二步:将这些信息放入队列中,同时设置阀值(例如RT超过5秒就降级,1秒就升级)以及阀值触发改动的开关;
第三部:异步启动一个线程,扫描队列,达到我们的条件,就触发做变更(有个问题,就是加入业务降级了,这时候就没有调用量,也就没有了自动升级的条件了,怎么搞呢?这时候业务降级,并不是完全100%的停掉,可以预留一部分流量继续调用A,把A调用的信息放入队列中,根据这些信息,就能实现升级了);
上面这些是在陆续的系统维护中尝试或者看到的处理办法,通过开关的方式,实现系统的升降级,从而更好的保护系统。这篇文章只是阐述了大体的思路,没有涉及到具体的代码,希望能够达到抛砖引玉的作用。
浏览 16272
用zookeeper watcher, 修改节点(开关数据)的时候改变开关即可.是的,这是zk的一个典型应用场景呵呵
skzr.org 写道很容易懂的,没有意料之外的东西。大家是不是也是这样玩的,有详细点的系统设计图就更好了。顶起呵呵,其实本来是想画图的,但是晚上12点开始写这篇文章,在家里笔记本上,没有好的画图工具,就没画图这个貌似可以做个通用的简单工具包开源供大家使用:
IFlagService {
void put(String key, Object value);
&T& T get(String key);
AbstractFlagService implements IFlagService {
T //定时刷新
balabala... 定时刷新实现
FlagServiceDbImpl extends AbstractFlagService {
balabala...
FlagServiceXXXXImpl extends AbstractFlagService {
balabala...
我也在琢磨 zookeeper,相信作者已经读过了它的源码了。里面的思想zookeeper里面到处都是啊。文章浅显易懂,欣赏。希望作者写下 zookeeper服务器,集群下是如何维护数据统一的。我看到这了,还没怎么看呢呵呵,后面会写一下zk的东西。
不错,思路清晰,不过细节介绍的少一些,很多时候,魔鬼藏在细节当中。我相信实施过程中,不止这些坑的 是的,只是简单阐述一下思路,抛砖引玉吧。时间中惨痛的教训很多。因为开关大都是用来保命的,有时候,关键的时候用不了还是很痛苦的
很容易懂的,没有意料之外的东西。大家是不是也是这样玩的,有详细点的系统设计图就更好了。顶起呵呵,其实本来是想画图的,但是晚上12点开始写这篇文章,在家里笔记本上,没有好的画图工具,就没画图
iamzhongyong
浏览: 576060 次
来自: 杭州
https://yq.aliyun.com/album/130 ...
博主你好。如果groovy的代码是保存在数据库里,不是文件,这 ...
hi,兄弟,有没有兴趣来阿里巴巴专门做这方面的研究,https ...
有2个问题请教:1. 这里的base32算法为什么需要以负数的 ...
不错非常好!推荐一个以电商购物支付流程中,在各大参与者系统中可 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 漏电开关跳闸的原因 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信