• 关于

    不确定性系统是啥

    的搜索结果

问题

投诉备案通知不到位

投诉~备案通知不到位~ 企业网站域名备案不通过,被告知需要修改法人身份证 和 在原有网站上加上备案号。 由于原来的企业网站是在搭在别人网站上的邮件系统,费劲力气才让那边把备案号加上。 这次居然告诉...
寂寞如斯 2019-12-01 21:06:31 2980 浏览量 回答数 1

回答

参考:https://www.iteblog.com/archives/2530.html分布式和去中心化(Distributed and Decentralized)Cassandra 是分布式的,这意味着它可以运行在多台机器上,并呈现给用户一个一致的整体。事实上,在一个节点上运行 Cassandra 是没啥用的,虽然我们可以这么做,并且这可以帮助我们了解它的工作机制,但是你很快就会意识到,需要多个节点才能真正了解 Cassandra 的强大之处。它的很多设计和实现让系统不仅可以在多个节点上运行,更为多机架部署进行了优化,甚至一个 Cassandra 集群可以运行在分散于世界各地的数据中心上。你可以放心地将数据写到集群的任意一台机器上,Cassandra 都会收到数据。对于很多存储系统(比如 MySQL, Bigtable),一旦你开始扩展它,就需要把某些节点设为主节点,其他则作为从节点。但 Cassandra 是无中心的,也就是说每个节点都是一样的。与主从结构相反,Cassandra 的协议是 P2P 的,并使用 gossip 来维护存活或死亡节点的列表。关于 gossip 可以参见《分布式原理:一文了解 Gossip 协议》。去中心化这一事实意味着 Cassandra 不会存在单点失效。Cassandra 集群中的所有节点的功能都完全一样, 所以不存在一个特殊的主机作为主节点来承担协调任务。有时这被叫做服务器对称(server symmetry)。综上所述,Cassandra 是分布式、无中心的,它不会有单点失效,所以支持高可用性。弹性可扩展(Elastic Scalability)可扩展性是指系统架构可以让系统提供更多的服务而不降低使用性能的特性。仅仅通过给现有的机器增加硬件的容量、内存进行垂直扩展,是最简单的达到可扩展性的手段。而水平扩展则需要增加更多机器,每台机器提供全部或部分数据,这样所有主机都不必负担全部业务请求。但软件自己需要有内部机制来保证集群中节点间的数据同步。弹性可扩展是指水平扩展的特性,意即你的集群可以不间断的情况下,方便扩展或缩减服务的规模。这样,你就不需要重新启动进程,不必修改应用的查询,也无需自己手工重新均衡数据分布。在 Cassandra 里,你只要加入新的计算机,Cassandra 就会自动地发现它并让它开始工作。高可用和容错(High Availability and Fault Tolerance)从一般架构的角度来看,系统的可用性是由满足请求的能力来量度的。但计算机可能会有各种各样的故障,从硬件器件故障到网络中断都有可能。如何计算机都可能发生这些情况,所以它们一般都有硬件冗余,并在发生故障事件的情况下会自动响应并进行热切换。对一个需要高可用的系统,它必须由多台联网的计算机构成,并且运行于其上的软件也必须能够在集群条件下工作,有设备能够识别节点故障,并将发生故障的中端的功能在剩余系统上进行恢复。Cassandra 就是高可用的。你可以在不中断系统的情况下替换故障节点,还可以把数据分布到多个数据中心里,从而提供更好的本地访问性能,并且在某一数据中心发生火灾、洪水等不可抗灾难的时候防止系统彻底瘫痪。可调节的一致性(Tuneable Consistency)2000年,加州大学伯克利分校的 Eric Brewer 在 ACM 分布式计算原理会议提出了著名的 CAP 定律。CAP 定律表明,对于任意给定的系统,只能在一致性(Consistency)、可用性(Availability)以及分区容错性(Partition Tolerance)之间选择两个。关于 CAP 定律的详细介绍可参见《分布式系统一致性问题、CAP定律以及 BASE 理论》以及《一篇文章搞清楚什么是分布式系统 CAP 定理》。所以 Cassandra 在设计的时候也不得不考虑这些问题,因为分区容错性这个是每个分布式系统必须考虑的,所以只能在一致性和可用性之间做选择,而 Cassandra 的应用场景更多的是为了满足可用性,所以我们只能牺牲一致性了。但是根据 BASE 理论,我们其实可以通过牺牲强一致性获得可用性。Cassandra 提供了可调节的一致性,允许我们选定需要的一致性水平与可用性水平,在二者间找到平衡点。因为客户端可以控制在更新到达多少个副本之前,必须阻塞系统。这是通过设置副本因子(replication factor)来调节与之相对的一致性级别。通过副本因子(replication factor),你可以决定准备牺牲多少性能来换取一致性。 副本因子是你要求更新在集群中传播到的节点数(注意,更新包括所有增加、删除和更新操作)。客户端每次操作还必须设置一个一致性级别(consistency level)参数,这个参数决定了多少个副本写入成功才可以认定写操作是成功的,或者读取过程中读到多少个副本正确就可以认定是读成功的。这里 Cassandra 把决定一致性程度的权利留给了客户自己。所以,如果需要的话,你可以设定一致性级别和副本因子相等,从而达到一个较高的一致性水平,不过这样就必须付出同步阻塞操作的代价,只有所有节点都被更新完成才能成功返回一次更新。而实际上,Cassandra 一般都不会这么来用,原因显而易见(这样就丧失了可用性目标,影响性能,而且这不是你选择 Cassandra 的初衷)。而如果一个客户端设置一致性级别低于副本因子的话,即使有节点宕机了,仍然可以写成功。总体来说,Cassandra 更倾向于 CP,虽然它也可以通过调节一致性水平达到 AP;但是不推荐你这么设置。面向行(Row-Oriented)Cassandra 经常被看做是一种面向列(Column-Oriented)的数据库,这也并不算错。它的数据结构不是关系型的,而是一个多维稀疏哈希表。稀疏(Sparse)意味着任何一行都可能会有一列或者几列,但每行都不一定(像关系模型那样)和其他行有一样的列。每行都有一个唯一的键值,用于进行数据访问。所以,更确切地说,应该把 Cassandra 看做是一个有索引的、面向行的存储系统。Cassandra 的数据存储结构基本可以看做是一个多维哈希表。这意味着你不必事先精确地决定你的具体数据结构或是你的记录应该包含哪些具体字段。这特别适合处于草创阶段,还在不断增加或修改服务特性的应用。而且也特别适合应用在敏捷开发项目中,不必进行长达数月的预先分析。对于使用 Cassandra 的应用,如果业务发生变化了,只需要在运行中增加或删除某些字段就行了,不会造成服务中断。当然, 这不是说你不需要考虑数据。相反,Cassandra 需要你换个角度看数据。在 RDBMS 里, 你得首先设计一个完整的数据模型, 然后考虑查询方式, 而在 Cassandra 里,你可以首先思考如何查询数据,然后提供这些数据就可以了。灵活的模式(Flexible Schema)Cassandra 的早期版本支持无模式(schema-free)数据模型,可以动态定义新的列。 无模式数据库(如 Bigtable 和 MongoDB)在访问大量数据时具有高度可扩展性和高性能的优势。 无模式数据库的主要缺点是难以确定数据的含义和格式,这限制了执行复杂查询的能力。为了解决这些问题,Cassandra 引入了 Cassandra Query Language(CQL),它提供了一种通过类似于结构化查询语言(SQL)的语法来定义模式。 最初,CQL 是作为 Cassandra 的另一个接口,并且基于 Apache Thrift 项目提供无模式的接口。 在这个过渡阶段,术语“模式可选”(Schema-optional)用于描述数据模型,我们可以使用 CQL 的模式来定义。并且可以通过 Thrift API 实现动态扩展以此添加新的列。 在此期间,基础数据存储模型是基于 Bigtable 的。从 3.0 版本开始,不推荐使用基于 Thrift API 的动态列创建的 API,并且 Cassandra 底层存储已经重新实现了,以更紧密地与 CQL 保持一致。 Cassandra 并没有完全限制动态扩展架构的能力,但它的工作方式却截然不同。 CQL 集合(比如 list、set、尤其是 map)提供了在无结构化的格式里面添加内容的能力,从而能扩展现有的模式。CQL 还提供了改变列的类型的能力,以支持 JSON 格式的文本的存储。因此,描述 Cassandra 当前状态的最佳方式可能是它支持灵活的模式。高性能(High Performance)Cassandra 在设计之初就特别考虑了要充分利用多处理器和多核计算机的性能,并考虑在分布于多个数据中心的大量这类服务器上运行。它可以一致而且无缝地扩展到数百台机器,存储数 TB 的数据。Cassandra 已经显示出了高负载下的良好表现,在一个非常普通的工作站上,Cassandra 也可以提供非常高的写吞吐量。而如果你增加更多的服务器,你还可以继续保持 Cassandra 所有的特性而无需牺牲性能。
封神 2019-12-02 02:00:50 0 浏览量 回答数 0

回答

主板原因,主板的电源管理不支持,还是加大内存装虚拟机玩吧回复<aclass="referer"target="_blank">@long_ai_xin:这就不清楚了,不过我的跟硬盘有关系,我的本子机械硬盘在光驱位,无论是ubuntu,centos,deepin,fodera都有问题,重启就死机。买了512G固态以后,我把系统装到固态上,win10,deepin,fodera三系统都正常,deepin同时可以发现三个系统的引导,开机选择也很方便(把deepin和fodera的efi引导都装到win引导分区)电源管理不支持,所以deepin无法关机?这也太坑了.还有就是deepin开机,5分钟就开始卡,明明什么都没做呢.这个是什么原因呢?用单系统多好,为什么一定要双系统呢如果不是处理性的软件,一般没什么问题想换linux,但是一下子换了影响工作,想双系统过度下.ubuntu你换个桌面环境试试,gnomeak,cinnamon等,Plasma貌似不太稳定,我的电脑上kwin老出问题。我当前用的是debianstretch。回复<aclass="referer"target="_blank">@long_ai_xin:先安装桌面环境,以cinnamon为例:sudoaptinstallcinnamon-desktop-environment完成后退出登录,回到登录界面,就会有会话类型的选项。换桌面?这个怎么换.desktop不行,command可以,是不是显卡驱动问题???可能把,也不确定.之前还能进去的,突然就跪了. ubuntu可能是x系统某些配置挂了,要查日志 deepin估计是内存什么的不够,信息不足,不好说。 装Fedora理论上跟ubuntu没啥大的区别,按步骤搞应该可以的。fedora的iso文件安装到u盘,u盘就只有5m了,还是efi格式,不知道什么情况,然后安装就失败.
爱吃鱼的程序员 2020-06-08 18:10:06 0 浏览量 回答数 0

回答

该来改去很无聊,很烦!######看来你被虐的还不够 ######这种级别我只当是皮痒痒,再重点,我可能更舒服点######论程序员存在的必要和价值,哈哈哈######因为你用java,重构比较容易######回复 @快速开发师 : 这说明你对项目用心了,掌握了代码的全局思路。比如五年前我用心做了一个程序,现在回过头来看代码,瞬间就能理清楚。但是两年前做过一些临时bug fix的项目,现在回头看还是晕。哈哈哈。######不是,我是这样认为的,既然要改,说明系统有改进了;而我呢,我把以前做过的过程都记住了的,可能和别人不一样吧,别人是做完就完了,我再做就比别人消耗更少的脑力,大脑的结构模式造成的吧。但是我从0开始的时候比别人慢些###### 改来改去没问题,问题是改过去改回来。######对于接手大工程,我不喜欢改,喜欢自己造轮子######回复 @快速开发师 : 视代价而定,代价太高,不划算就不自己造了######自己造轮子?######来来来,三天给我改过来###### 没遇到过程序开发完了 结果需求大变 要从根上修改的情况吗 这跟重新开发差不多了 而且工期马上就要到了 怎么做你知道的 ######回复 @张金富 : 我不那么认为,我觉得需求设计才是在雕刻######如果你是用混日子的心态来做开发 确实是 每天只改改 不用费大力 还能有工资 混到65岁退休 这辈子做啥了 就是把一个系统东改改西改改######回复 @快速开发师 : 如果你开发时就像雕刻一件艺术品 用尽了心力 结果最后要求要修改 此时的心态你懂得######没说整个系统,只是某个功能,我用的是‘或’,这种可能性是有的###### 小改是你这种心里 大改就要杀人了  小改基本上开发的时候已经想到了 改也就是多传几个值的事情  大改? 来 产品你过来一下 ######如果业务的基本模式是确定的,业务主体模型是确定的。反反复复的修改调整,是不可避免的。每一次调整修改或重构,殾能让自己的程序在结构,思想上比之前更好。那么这是一件非常有意义的事。把200行代码重构10回,对个人的成长,我认为超过2000行代码只写一回的效果。对自己的成果永远不满足,敢于否定曾经的自己,追求更好,这是一种优秀的品质。PS:如果是做项目,赶进度的话,那要掌握好这个度哦。
kun坤 2020-06-03 10:55:01 0 浏览量 回答数 0

回答

Re吐槽一下阿里云的slb 引用第2楼vpsmm于2013-04-27 12:01发表的  : 这个东西到底能不能支持商业运营? 未知,我配置过最大的SLB支持环境,日IP30W,PV150W。DZ的动漫论坛,总带宽在20M(论坛)附件另放到OSS了。 这个东西到底能不能在大访问量下稳定运行? 同上,我实际用到的最大访问量了。 这个东西到底能不能真正实现均衡的负载? ....... 知道你是阿里云的铁杆粉丝。但说话要客观! 麻烦你给出你所谓配置过(并且能正常运行访问)的网站地址、拓扑图以及资源使用情况! 实际应用是在服务器繁忙的情况下,aliyun的slb不能很好地完成转发,其中原因有可能是cpu、io等多方面造成的。并且经常出现很多莫名其妙的故障,博客园实际上就是一个典型的例子! 博客园在使用过程中得到很多工程师的帮助,这个你看到了?为很么别人不能得到很多工程师的帮助?这对其他用户公平吗? ------------------------- Re吐槽一下阿里云的slb 引用第4楼billlee于2013-04-27 12:18发表的  : 首先,需要告诉楼主的是:无论SLB是否是一个已经正式商用的产品,我们对外所能提供的服务质量与已经正式商用的其他产品都是没有区别的。并不会存在非正式商用的产品存在稳定性差或服务标准低的说法。 其次,关于SLB的性能和所能达到的对外服务能力,这个除了SLB系统本身所能支持的范畴有关外,也与SLB后端的ECS云服务器本身性能有着密切的关系。但是,可以确保的是SLB系统本身是以集群的方式工作的,当我们系统还没有达到服务瓶颈的时候我们就会做横向的扩容从而确保系统本身的稳定性和可用性。所以,建议楼主在实际使用前可以根据自己的实际应用场景测试一下相关的服务,从而做到心里有数。 关于问题中涉及到的一些细节,比如SLB的转发、SLB的健康检查回报等问题,我看到@vpsmm已经做了较为详细的解答,也请楼主了解,同时感谢@vpsmm的热心回答。 ....... 非常感谢你的回复。 但我也注意到第二段文字。其中“这个除了SLB系统本身所能支持的范畴有关外,也与SLB后端的ECS云服务器本身性能有着密切的关系。” 实践证明,使用阿里云单机,cup占用较高的时候可能问题不大,但在slb里,ecs单机cpu占用一旦超过60-70%就很容易出问题,具体表现也不太一致。博客园的现象即是如此,我所知道的其他几个中型网站也是如此,只不过人家没说而已。 希望你们认真测试一下。 ------------------------- Re回5楼billz的帖子 引用第7楼vpsmm于2013-04-27 12:31发表的 回 5楼(billz) 的帖子 : 这是我帮朋友做的,网址就不公布了。只是一个十分简单的DZ论坛,没有太过详细的拓扑图。 目前附件是OSS上面,这个就没什么多说的。DZ比较简单,只要涉及PHP程序和MYSQL就行了。 单独一台4核CPU,8G内存,拿来跑MYSQL。 一台标准A,拿来跑uc。 ....... 四台标准B,拿来跑php程序,(全部在SLB里)。 用这个跑日IP30W,PV150W?你这真有点忽悠! 你要说别的行业我可能还不是很清楚,国内动漫论坛.....哈哈,你算忽悠错了。 ------------------------- Re回6楼billz的帖子 引用第11楼billlee于2013-04-27 13:14发表的 回 6楼(billz) 的帖子 : 如果SLB系统真的像楼主描述的那样存在当后端云服务器出现CPU利用率达到60-70%就会出现SLB访问不稳定的情况,那么我的建议是楼主可以通过工单提供一下你的VIP信息,我们的工作人员会帮助你针对这个情况进行核实和问题定位的。 相信已经有人和你们反映过类似的情况了。 由于这个问题指向并不是非常明确,故障现象也不很统一,所以发工单也未必能解决什么问题。你们自己多做做测试就能发现问题。 更何况发给你们的工单一般都是先由小客服们做第一手处理,这种问题他还没搞明白咋回事随手就被他给被关闭了。解决不了问题还惹一肚子气,没啥用处的。 ------------------------- Re回12楼billz的帖子 引用第13楼billlee于2013-04-27 13:32发表的 回 12楼(billz) 的帖子 : 那楼主是否方便把发生在你身上和你对外提供服务身上的问题直接提交给我,我们首先针对这个问题进行分析呢?这样至少可以先解决楼主自身的疑惑和困扰,从而确保楼主对外的服务问题得到妥善的解决。 另,关于客服工单服务质量的问题,我们内部已经在进一步加强对客服人员的培训和处理流程的优化,相信通过我们的努力一定会提升服务质量和专业度,从而保证所有用户通过工单提交的问题都能得到明确的定位、准确的解答和妥善的解决。 还是先不说了。我们已经被迫将cpu的占用都降到50%以下。 你们还是先好好搞一下你们的产品和服务吧。 看看今天的微博,你们已经被喷的很惨了,这样下去要完蛋的。只听那些小站长们拍马屁是没有用的。 http://weibo.com/1670517015/zu41ne2pY#_rnd1367043576717 ------------------------- Re回14楼billz的帖子 引用第17楼billlee于2013-04-27 15:28发表的 回 14楼(billz) 的帖子 : 既然不稳定的问题已经出现在了你的对外应用服务中,我的建议还是希望你能够配合我们一起把问题查一下,这样对于我们自身系统的成长和你本身对外服务的稳定性来说都是有益的。如果通过定位分析,问题真的是由SLB系统造成的,那么我们肯定会尽快给予解决和修复。因为很多问题在没有复现和最终定位的情况下只是通过简单的通用性测试是没有办法涵盖所有case和应用场景的(随着客户的逐渐增加,客户本身的应用场景越来越复杂和个性化,我们也需要大家的帮助来不断的完善我们的平台和服务),所以还是希望你能够协助我们一并解决问题,而不是采取变相的手段来掩盖问题本身。 阿里云的成长需要大家一起的努力来达成,感谢你及其他用户的支持! 你作为官方人士,在于用户交流的时候应该注意言辞。 作为用户,我没有必要替你们“掩盖”问题,我们只是以最简洁、高效的方式去处理问题。这里的用户提出过很多很多有益的建议,你们都能够迅速的处理解决吗?明显是不能的。所以,不如我们自己先改变一下部署,以便能够正常运营。 问题本身的解决还是依靠你们自己吧。看看几天微博的吐槽,人家说的一些问题都是事实吧,其中有些我们也经历过。论坛里大部分都是开小网站的,他们也许不会很在意停机几分钟甚至几小时,但这对一个中型网站,每一分钟的停顿都会造成直接的经济损失的网站来说意味着什么你们应该不难能理解吧? cpu、io性能问题、用户间相互印象的问题等等等等,拜托你们多下点功夫吧。 ------------------------- Re吐槽一下阿里云的slb 引用第32楼twl007于2013-04-28 00:16发表的  : 这帖子都喷成这样了 - - 我自己的使用经验来看 SLB的稳定性是跟RDS有的一拼的 用了一年多的SLB真正因为SLB自身原因引起的故障寥寥无几 大部分情况是服务器超载了SLB返回503 印象中没有因为SLB自身故障导致网站挂掉的 个人觉得SLB更侧重于提升网站的可用性 提升负载能力倒是次要了 当你网站需要多台服务器进行热备的时候SLB的重要性不言而喻 至于多台机器提升性能 我自己是用来看很少从性能方面考虑SLB 如果你真的需要两台一起工作才能承载整个网站访问 那么一台down掉 另一台也会因为承受不住压力down掉 这种情况下部署SLB是无意义的 只有在确定单台能满足要求然后横向扩展时才能发挥SLB提高网站可用性的作用 ....... 作为一个版主对slb的理解居然如此片面 ------------------------- Re回33楼alilab的帖子 引用第38楼twl007于2013-04-28 10:10发表的 回 33楼(alilab) 的帖子 : 难道是人品问题么 - - 我们从一年多前开始用阿里云就在使用SLB了 那时候功能还没现在的完善 但是我用到现在也只遇到过一次因为SLB故障我无法创建修改服务器集群 并没有出现过无法访问的问题…… 用了这么久SLB跟RDS是出问题最少的…… 每次工单问我们都有记录 真正问题原因是SLB引起的真心一次没有…… 而且SLB曾经多次在我们一台挂掉服务器状态的情况下成功把所有访问转移到另一台服务器 保证了网站没中断 ....... 先说说你的系统架构和流量数据。别吹牛b就行。 小站应该是没啥问题的。
billz 2019-12-02 01:08:30 0 浏览量 回答数 0

问题

哈,坑大了,请教个问题。。。403.10 禁止访问:配置无效 

我将linux的代码,放到win 7下的cygwin里进行编译和执行。 死的比较难看。跟踪到的错误,实际是在三个平台上存在两种不同的情况。 mac os 下,apple llvm 5.0  ,  ...
kun坤 2020-05-27 20:05:30 7 浏览量 回答数 1

回答

C++的权当我不会。太违背理性的一种语言。哈哈。和C根本上就是一个原因。<divclass="ref"> 引用来自“中山野鬼”的评论C++的权当我不会。太违背理性的一种语言。哈哈。就Java的奇葩设计还有脸说啥纯粹?阉了还差不多。连个确定性析构都没有;存储都管不干净非得自欺欺人把具有类似union{Tobj;T ptr;}类型的玩意儿叫成什么“对象”还跟primitivetype势不两立;用类型擦除当泛型糊弄用户玩……根本就是罄竹难书嘛。这话有意思,不过容易引起战争,哈哈。。。。。。delete是释放内存还给操作系统,你已经释放了,操作系统就会回收,可能这个时候已经把它又分配给别人了,你就不能再操作它了。当然一般这部分空间还在你这个程序内部,如果你中间new了一个别的变量就分配给它了。所以一般delete完,就要把指针置空,避免出现野指针。至于你说的标记,这部分是操作系统实现的,可能是。谢谢啊C++不太清楚。对于C语言而言,在Linux中,当使用malloc分配内存的时候,返回的指针,它指向的内存地址之前的四个字节,记录了内存的大小(自己的电脑测试下来,记录的大小比分配的大小大9,应该是记录其他内容用的),同时Linux内存管理系统会标记内存已使用。当我们使用free的使用,系统会根据记录的内存大小来释放内存。这个时候,Linux的内存管理系统会标记内存已释放。当我们再次释放的时候,free会执行同样的操作,即根据传入的参数指向的内存地址之前的四个字节的大小来释放内存,这个时候Linux内存管理系统应该会出问题。因为free可以释放空指针,即NULL。所以,多次释放NULL,是可以的。这也是为什么建议释放后,置位NULL。可以避免doublefree导致的错误。对于C++,机制应该有些相似。仅供参考。C++的delete和free类似允许空指针值。受教了谢谢啊今晚做了一下测试,代码是这样的: intpsome=newint[10];   deletepsome;   psome[2]=10;   int p=newint;  p=900;  deletep;  for(inti=0;i<100;i++){    sleep(1);//休眠1s    cout<<p<<endl;    cout<<psome-p<<endl;  }  return0;然后其结果是虽然p被释放了,但是我们还是可以访问p的内容,*p的结果还是900,而且psome与p的内存地址相隔就是12吧,好像是动态内存分配就是在一个区域内的。我是这样想的:每个独立的程序的动态内存是有固定的区域的,不知对不对啊回复<aclass='referer'target='_blank'>@catch2000:不管是C还是C++的实现都不需要指望操作系统的支持。没有操作系统照样有malloc/new。回复<aclass='referer'target='_blank'>@幻の上帝:因为不同的操作系统内存管理算法是不一样的,我们不能依靠它们。这里我提到的操作系统,不只是Linux与Windows的区别,还有Rtems,Vxworks,uc/OS,eCos,以及Contiki。我们不能期望它们能有什么相似的内存管理算法。毕竟C语言只是语言,内存管理是我们通过算法来实现的,不是语言的范畴了。回复<aclass='referer'target='_blank'>@catch2000:脱离具体实现无所谓什么堆区。对C++来说就叫freestorage。对于C来说连个正式的称呼都没有,只知道这里的对象具有allocatedstorageduration。靠具体实现的结果来解释是彻头彻尾的方法论错误。对于你这里的psome-p操作,是有风险的。在你的系统上是这样,但是在其他系统上不一定。没有指向同一数组(或者分配的内存)的指针,一般是要避免他们的大小比较和加减运算。因为这样的结果是未定义的。可以参见:《MISRAC2004》(这份文档是一个C安全子集)<divclass='ref'>引用来自“Stieven”的评论今晚做了一下测试,代码是这样的: intpsome=newint[10];  deletepsome;  psome[2]=10;  intp=newint;   *p=900;   deletep;   for(inti=0;i<100;i++){     sleep(1);//休眠1s     cout<< p<<endl;    cout<<psome-p<<endl;  }  return0;然后其结果是虽然p被释放了,但是我们还是可以访问p的内容,*p的结果还是900,而且psome与p的内存地址相隔就是12吧,好像是动态内存分配就是在一个区域内的。我是这样想的:每个独立的程序的动态内存是有固定的区域的,不知对不对啊 <divclass='ref'> 引用来自“中山野鬼”的评论<divclass="ref"> 引用来自“中山野鬼”的评论C++的权当我不会。太违背理性的一种语言。哈哈。 跟C类似,ISOC++规定在这种用法就是undefinedbehavior,不保证任何可预测的行为,后果自负。 说白了还是责任分配问题。实现有权假定用户正确地遵守了约定不作死。 具体细节具体实现管。没给出环境之前进一步纠结没意义。(因为ISOC++支持独立实现,你还没法让人假定操作系统的存在。)
爱吃鱼的程序员 2020-06-20 17:13:04 0 浏览量 回答数 0

问题

性能测试基本指标浅谈

    初入性能测试行当时,录制个脚本调通已然把人搞的七荤八素,谁知这才是漫漫长征第一步。场景设定完成后,需要加监控指标时,这一堆指标都是干什么使的?一个指标给句几十个字...
技术小菜鸟 2019-12-01 21:46:03 3423 浏览量 回答数 1

回答

[上海-java-白夜] 前端跨域用jsonp封装js回调 [健] 天猫和淘宝使用同一个SSO服务器。不管token  cookie 什么机制。同一个标识符,两个网站的辨识逻辑都是一样的**[重庆-后端-谭鹏] **这个标识符是什么呀 肯定的得前端携带了什么东西的在服务端进行鉴别的 不然服务端是怎么确定用户身份的,直到他已经在淘宝登陆过了 [上海-java-白夜] 天猫,淘宝的认证中心都在一起的,cookie信息是在你客户端的,通过请求传到服务器去的localstorage 或者 cookie 的 一个token。 是什么无所谓。重要的是两个网站去同一个地方去校验token  所以结果是一样的。不管你哪个域,服务端的认证中心是同一个,阿里都是中台,怎么可能每个项目一个认证中心,基础服务都统一出来了你用它旗下的网站的服务,用的cookie里面的那个表示你身份的信息key都可以是同一个,你回调的时候把token作为js传过去不就行了,正常情况下,你认证成功,直接会把你的token跟在你要跳转的新页面一起跳转过去**[重庆-后端-谭鹏] 嗯 假设这一次是登陆了淘宝嘛,那我再访问天猫的时候 前端怎么携带淘宝登陆后返回的票据?如果不携带的话 认证服务 肯定就认为你没有登陆[上海-java-白夜] 或者你后端将cros设置一下也是可以跨域接收资源的,这个票据在你的cookie里面,cookie是在你的客户端浏览器储存的[重庆-后端-谭鹏] 哪一个的cookie ?淘宝登陆了的话肯定这个token是存在淘宝域名下的。 天猫怎么能拿到这个token的 这就是我的这个疑问点,还是说前端有这样的技术 可以拿跨主域名的的cookie信息吗[上海-java-白夜] **或者服务器端cros设置一下就可以跨了,或者nginx代理一下也是可以跨的 [深圳-后端-章鱼] 说了半天,不如一张图清楚,关键在第七步,单点登录系统将ticket加载A系统的URL后面,A系统使用过滤器,将ticket写到自己域名下,应该没问题吧[成都-java-creed] 关键是输入用户名成功后,会生成sso认证的cookice,这个cookie就是跨域名访问的关键了[java-刘锦] 这个cookie是全局的?[杭州-后端-xinhe] 不是,每个域名各自维护自己的cookie,通过ticket传递用户身份[java-刘锦****] ticket是全局?[北京-java-犀利豆] ticket只用一次,session是全局的[杭州-后端-xinhe] 是的,我当时做的session各应用独立管理本地部分,但是生命周期会统一管理,全局统一登录登出和保活[深圳-后端-章鱼] 很强,关键就在sso.com认证中心自己的cookie[成都-java-creed] 我认证sso自己的cookie是认证里面的关键,没有这玩不了的[杭州-后端-xinhe] 对,这个把整个流程串起来了 [北京-JAVA-阿轩] 当我访问b系统,ticket哪里来的[成都-java-creed]1 用户在www.a.com正常上网,突然想访问www.b.com,于是发起访问www.b.com的请求。2 www.b.com接收到请求,发现第一次访问,于是给他一个重定向的地址,让他去找认证中心登录。3 浏览器根据返回的地址,发起重定向,因为之前访问过一次了,因此这次会携带上次返回的Cookie:认证中心。4 认证中心收到请求,发现cookie内容能取到对应的认证信息,生成ticket,并且返回给浏览器,让他重定向到www.b.com[北京-java-犀利豆] 登录了a系统 说明 你已经登录了oss。等你登录b的时候,b会让你先到oss那里领一个ticket。你用ticket到b那里验证,验证成功了,b给你种上cookie[北京-JAVA-阿轩] 同一个session去oss索取的ticket是一样的呗[北京-java-犀利豆] @北京-JAVA-阿轩 不一定一样。[深圳-后端-章鱼] session会被状态限制,cookie则是时间限制[北京-JAVA-阿轩] 那b是通过解析ticket来确认是不是a登录过么[北京-java-犀利豆] 用户从oss拿到ticket,然后去b访问,b也会在后端 问一下oss,这个ticket是不是他发的。如果验证成功,b会给用户种上cookie。ticket就可以作废了。这个是后你去c,c会让你先去oss看看有没有ticket,如果有,就回到上面我说的流程。[java-刘锦] 那session干了啥[深圳-后端-章鱼] session只是用于获取token后,各自服务器里存用户的登录状态和权限等,方便后续的访问[北京-JAVA-阿轩] 那单点登录难点,和安全性,是哪里!感觉不难啊,安全也不太安全,窃取到了ticket,不就谁都可以登录了[北京-java-犀利豆] ticket是一次性的。[java-刘锦] 怎么保证一次性[北京-java-犀利豆] 在ticket里面,你可以加上ip之类的标识,加上时间,次数的限制,比ticket只能被校验一次,再来校验就不行了。手机充值卡怎么保证只能充一次,ticket就怎么保证只用一次。 [北京-JAVA-阿轩] 跨域原理是什么[福建-后端-Rule] 浏览器同源策略[北京-java-犀利豆] ticket 你可放在url。或者header里面。就不存在跨越问题[北京-JAVA-阿轩] 这可以避免同源策略么[北京-JAVA-阿轩] 浏览器怎么做到同源策略的,怎么和服务器配合支持和不支持跨域的!跟TCP协议有关么[北京-java-犀利豆] 跨域是浏览器实现的安全策略[北京-JAVA-阿轩] 原来测试的时候,发现前端会有一个预请求!确认,接口无感知!这个是和什么打交道的[北京-java-犀利豆] option?[上海-JAVA开发] 这个一般解决跨服务器请求的,如果程序里面有第三方服务器的话会先发个option探探情况 来源:云原生后端社区https://www.yuque.com/server_mind/answer
montos 2020-04-20 20:44:31 0 浏览量 回答数 0

问题

为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?【Java问答】41期

面试题 为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数...
剑曼红尘 2020-06-19 13:47:21 0 浏览量 回答数 0

问题

dubbo 的 spi 思想是什么?【Java问答学堂】50期

面试题 dubbo 的 spi 思想是什么? 面试官心理分析 继续深入问呗,前面一些基础性的东西问完了,确定你应该都 ok,了解 dubbo 的一些基本东西,那么问...
剑曼红尘 2020-07-07 09:48:29 25 浏览量 回答数 1

回答

面试官心理分析 这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。 只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为啥要用?不用行不行?如果用了以后可能会有什么不良的后果? 这就是看看你对缓存这个东西背后有没有思考,如果你就是傻乎乎的瞎用,没法给面试官一个合理的解答,那面试官对你印象肯定不太好,觉得你平时思考太少,就知道干活儿。 面试题剖析 项目中缓存是如何使用的? 这个,需要结合自己项目的业务来。 为什么要用缓存? 用缓存,主要有两个用途:高性能、高并发。 高性能 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 mysql,半天查出来一个结果,耗时 600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办? 缓存啊,折腾 600ms 查出来的结果,扔缓存里,一个 key 对应一个 value,下次再有人查,别走 mysql 折腾 600ms 了,直接从缓存里,通过一个 key 查出来一个 value,2ms 搞定。性能提升 300 倍。 就是说对于一些需要复杂操作耗时查出来的结果,且确定后面不怎么变化,但是有很多读请求,那么直接将查询出来的结果放在缓存中,后面直接读缓存就好。 高并发 mysql 这么重的数据库,压根儿设计不是让你玩儿高并发的,虽然也可以玩儿,但是天然支持不好。mysql 单机支撑到 2000QPS 也开始容易报警了。 所以要是你有个系统,高峰期一秒钟过来的请求有 1万,那一个 mysql 单机绝对会死掉。你这个时候就只能上缓存,把很多数据放缓存,别放 mysql。缓存功能简单,说白了就是 key-value 式操作,单机支撑的并发量轻松一秒几万十几万,支撑高并发 so easy。单机承载并发量是 mysql 单机的几十倍。 缓存是走内存的,内存天然就支撑高并发。 用了缓存之后会有什么不良后果? 常见的缓存问题有以下几个: 缓存与数据库双写不一致缓存雪崩、缓存穿透、缓存击穿缓存并发竞争 点击超链接,可直接查看缓存相关问题及解决方案。 往期回顾: 【Java问答学堂】1期 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 【Java问答学堂】2期 如何保证消息队列的高可用? 【Java问答学堂】3期 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性? 【Java问答学堂】4期 如何保证消息的可靠性传输?(如何处理消息丢失的问题?) 【Java问答学堂】5期 如何保证消息的顺序性? 【Java问答学堂】6期 如何解决消息队列的延时以及过期失效问题? 【Java问答学堂】7期 如果让你写一个消息队列,该如何进行架构设计? 【Java问答学堂】8期 es 的分布式架构原理能说一下么(es 是如何实现分布式的啊)? 【Java问答学堂】9期 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊? 【Java问答学堂】10期 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 【Java问答学堂】11期 es 生产集群的部署架构是什么?每个索引的数据量大概有多少?
剑曼红尘 2020-04-30 13:03:26 0 浏览量 回答数 0

问题

【Java问答学堂】12期 项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?

面试官心理分析 这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。 只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为...
剑曼红尘 2020-04-30 13:03:14 0 浏览量 回答数 1

问题

项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?【Java问答学堂】30期

面试官心理分析 这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。 只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为...
剑曼红尘 2020-06-02 13:28:01 44 浏览量 回答数 1

回答

前言 这期我想写很久了,但是因为时间的原因一直拖到了现在,我以为一两天就写完了,结果从构思到整理资料,再到写出来用了差不多一周的时间吧。 你们也知道丙丙一直都是创作鬼才来的,所以我肯定不会一本正经的写,我想了好几个切入点,最后决定用一个完整的电商系统作为切入点,带着大家看看,我们需要学些啥,我甚至还收集配套视频和资料,暖男石锤啊,这期是呕心沥血之作,不要白嫖了。 正文 在写这个文章之前,我花了点时间,自己臆想了一个电商系统,基本上算是麻雀虽小五脏俱全,我今天就用它开刀,一步步剖析,我会讲一下我们可能会接触的技术栈可能不全,但是够用,最后给个学习路线。 Tip:请多欣赏一会,每个点看一下,看看什么地方是你接触过的,什么技术栈是你不太熟悉的,我觉得还算是比较全的,有什么建议也可以留言给我。 不知道大家都看了一下没,现在我们就要庖丁解牛了,我从上到下依次分析。 前端 你可能会会好奇,你不是讲后端学习路线嘛,为啥还有前端的部分,我只能告诉你,傻瓜,肤浅。 我们可不能闭门造车,谁告诉你后端就不学点前端了? 前端现在很多也了解后端的技术栈的,你想我们去一个网站,最先接触的,最先看到的是啥? 没错就是前端,在大学你要是找不到专门的前端同学,去做系统肯定也要自己顶一下前端的,那我觉得最基本的技术栈得熟悉和了解吧,丙丙现在也是偶尔会开发一下我们的管理系统主要是VUE和React。 在这里我列举了我目前觉得比较简单和我们后端可以了解的技术栈,都是比较基础的。 作为一名后端了解部分前端知识还是很有必要的,在以后开发的时候,公司有前端那能帮助你前后端联调更顺畅,如果没前端你自己也能顶一下简单的页面。 HTML、CSS、JS、Ajax我觉得是必须掌握的点,看着简单其实深究或者去操作的话还是有很多东西的,其他作为扩展有兴趣可以了解,反正入门简单,只是精通很难很难。 在这一层不光有这些还有Http协议和Servlet,request、response、cookie、session这些也会伴随你整个技术生涯,理解他们对后面的你肯定有不少好处。 Tip:我这里最后删除了JSP相关的技术,我个人觉得没必要学了,很多公司除了老项目之外,新项目都不会使用那些技术了。 前端在我看来比后端难,技术迭代比较快,知识好像也没特定的体系,所以面试大厂的前端很多朋友都说难,不是技术多难,而是知识多且复杂,找不到一个完整的体系,相比之下后端明朗很多,我后面就开始讲后端了。 网关层: 互联网发展到现在,涌现了很多互联网公司,技术更新迭代了很多个版本,从早期的单机时代,到现在超大规模的互联网时代,几亿人参与的春运,几千亿成交规模的双十一,无数互联网前辈的造就了现在互联网的辉煌。 微服务,分布式,负载均衡等我们经常提到的这些名词都是这些技术在场景背后支撑。 单机顶不住,我们就多找点服务器,但是怎么将流量均匀的打到这些服务器上呢? 负载均衡,LVS 我们机器都是IP访问的,那怎么通过我们申请的域名去请求到服务器呢? DNS 大家刷的抖音,B站,快手等等视频服务商,是怎么保证同时为全国的用户提供快速的体验? CDN 我们这么多系统和服务,还有这么多中间件的调度怎么去管理调度等等? zk 这么多的服务器,怎么对外统一访问呢,就可能需要知道反向代理的服务器。 Nginx 这一层做了反向负载、服务路由、服务治理、流量管理、安全隔离、服务容错等等都做了,大家公司的内外网隔离也是这一层做的。 我之前还接触过一些比较有意思的项目,所有对外的接口都是加密的,几十个服务会经过网关解密,找到真的路由再去请求。 这一层的知识点其实也不少,你往后面学会发现分布式事务,分布式锁,还有很多中间件都离不开zk这一层,我们继续往下看。 服务层: 这一层有点东西了,算是整个框架的核心,如果你跟我帅丙一样以后都是从事后端开发的话,我们基本上整个技术生涯,大部分时间都在跟这一层的技术栈打交道了,各种琳琅满目的中间件,计算机基础知识,Linux操作,算法数据结构,架构框架,研发工具等等。 我想在看这个文章的各位,计算机基础肯定都是学过的吧,如果大学的时候没好好学,我觉得还是有必要再看看的。 为什么我们网页能保证安全可靠的传输,你可能会了解到HTTP,TCP协议,什么三次握手,四次挥手。 还有进程、线程、协程,什么内存屏障,指令乱序,分支预测,CPU亲和性等等,在之后的编程生涯,如果你能掌握这些东西,会让你在遇到很多问题的时候瞬间get到点,而不是像个无头苍蝇一样乱撞(然而丙丙还做得不够)。 了解这些计算机知识后,你就需要接触编程语言了,大学的C语言基础会让你学什么语言入门都会快点,我选择了面向对象的JAVA,但是也不知道为啥现在还没对象。 JAVA的基础也一样重要,面向对象(包括类、对象、方法、继承、封装、抽象、 多态、消息解析等),常见API,数据结构,集合框架,设计模式(包括创建型、结构型、行为型),多线程和并发,I/O流,Stream,网络编程你都需要了解。 代码会写了,你就要开始学习一些能帮助你把系统变得更加规范的框架,SSM可以会让你的开发更加便捷,结构层次更加分明。 写代码的时候你会发现你大学用的Eclipse在公司看不到了,你跟大家一样去用了IDEA,第一天这是什么玩意,一周后,真香,但是这玩意收费有点贵,那免费的VSCode真的就是不错的选择了。 代码写的时候你会接触代码的仓库管理工具maven、Gradle,提交代码的时候会去写项目版本管理工具Git。 代码提交之后,发布之后你会发现很多东西需要自己去服务器亲自排查,那Linux的知识点就可以在里面灵活运用了,查看进程,查看文件,各种Vim操作等等。 系统的优化很多地方没优化的空间了,你可能会尝试从算法,或者优化数据结构去优化,你看到了HashMap的源码,想去了解红黑树,然后在算法网上看到了二叉树搜索树和各种常见的算法问题,刷多了,你也能总结出精华所在,什么贪心,分治,动态规划等。 这么多个服务,你发现HTTP请求已经开始有点不满足你的需求了,你想开发更便捷,像访问本地服务一样访问远程服务,所以我们去了解了Dubbo,Spring cloud。 了解Dubbo的过程中,你发现了RPC的精华所在,所以你去接触到了高性能的NIO框架,Netty。 代码写好了,服务也能通信了,但是你发现你的代码链路好长,都耦合在一起了,所以你接触了消息队列,这种异步的处理方式,真香。 他还可以帮你在突发流量的时候用队列做缓冲,但是你发现分布式的情况,事务就不好管理了,你就了解到了分布式事务,什么两段式,三段式,TCC,XA,阿里云的全局事务服务GTS等等。 分布式事务的时候你会想去了解RocketMQ,因为他自带了分布式事务的解决方案,大数据的场景你又看到了Kafka。 我上面提到过zk,像Dubbo、Kafka等中间件都是用它做注册中心的,所以很多技术栈最后都组成了一个知识体系,你先了解了体系中的每一员,你才能把它们联系起来。 服务的交互都从进程内通信变成了远程通信,所以性能必然会受到一些影响。 此外由于很多不确定性的因素,例如网络拥塞、Server 端服务器宕机、挖掘机铲断机房光纤等等,需要许多额外的功能和措施才能保证微服务流畅稳定的工作。 **Spring Cloud **中就有 Hystrix 熔断器、Ribbon客户端负载均衡器、Eureka注册中心等等都是用来解决这些问题的微服务组件。 你感觉学习得差不多了,你发现各大论坛博客出现了一些前沿技术,比如容器化,你可能就会去了解容器化的知识,像**Docker,Kubernetes(K8s)**等。 微服务之所以能够快速发展,很重要的一个原因就是:容器化技术的发展和容器管理系统的成熟。 这一层的东西呢其实远远不止这些的,我不过多赘述,写多了像个劝退师一样,但是大家也不用慌,大部分的技术都是慢慢接触了,工作中慢慢去了解,去深入的。 好啦我们继续沿着图往下看,那再往下是啥呢? 数据层: 数据库可能是整个系统中最值钱的部分了,在我码文字的前一天,刚好发生了微盟程序员删库跑路的操作,删库跑路其实是我们在网上最常用的笑话,没想到还是照进了现实。 这里也提一点点吧,36小时的故障,其实在互联网公司应该是个笑话了吧,权限控制没做好类似rm -rf 、fdisk、drop等等这样的高危命令是可以实时拦截掉的,备份,全量备份,增量备份,延迟备份,异地容灾全部都考虑一下应该也不至于这样,一家上市公司还是有点点不应该。 数据库基本的事务隔离级别,索引,SQL,主被同步,读写分离等都可能是你学的时候要了解到的。 上面我们提到了安全,不要把鸡蛋放一个篮子的道理大家应该都知道,那分库的意义就很明显了,然后你会发现时间久了表的数据大了,就会想到去接触分表,什么TDDL、Sharding-JDBC、DRDS这些插件都会接触到。 你发现流量大的时候,或者热点数据打到数据库还是有点顶不住,压力太大了,那非关系型数据库就进场了,Redis当然是首选,但是MongoDB、memcache也有各自的应用场景。 Redis使用后,真香,真快,但是你会开始担心最开始提到的安全问题,这玩意快是因为在内存中操作,那断点了数据丢了怎么办?你就开始阅读官方文档,了解RDB,AOF这些持久化机制,线上用的时候还会遇到缓存雪崩击穿、穿透等等问题。 单机不满足你就用了,他的集群模式,用了集群可能也担心集群的健康状态,所以就得去了解哨兵,他的主从同步,时间久了Key多了,就得了解内存淘汰机制…… 他的大容量存储有问题,你可能需要去了解Pika…. 其实远远没完,每个的点我都点到为止,但是其实要深究每个点都要学很久,我们接着往下看。 实时/离线/大数据 等你把几种关系型非关系型数据库的知识点,整理清楚后,你会发现数据还是大啊,而且数据的场景越来越多多样化了,那大数据的各种中间件你就得了解了。 你会发现很多场景,不需要实时的数据,比如你查你的支付宝去年的,上个月的账单,这些都是不会变化的数据,没必要实时,那你可能会接触像ODPS这样的中间件去做数据的离线分析。 然后你可能会接触Hadoop系列相关的东西,比如于Hadoop(HDFS)的一个数据仓库工具Hive,是建立在 Hadoop 文件系统之上的分布式面向列的数据库HBase 。 写多的场景,适合做一些简单查询,用他们又有点大材小用,那Cassandra就再合适不过了。 离线的数据分析没办法满足一些实时的常见,类似风控,那Flink你也得略知一二,他的窗口思想还是很有意思。 数据接触完了,计算引擎Spark你是不是也不能放过…… 搜索引擎: 传统关系型数据库和NoSQL非关系型数据都没办法解决一些问题,比如我们在百度,淘宝搜索东西的时候,往往都是几个关键字在一起一起搜索东西的,在数据库除非把几次的结果做交集,不然很难去实现。 那全文检索引擎就诞生了,解决了搜索的问题,你得思考怎么把数据库的东西实时同步到ES中去,那你可能会思考到logstash去定时跑脚本同步,又或者去接触伪装成一台MySQL从服务的Canal,他会去订阅MySQL主服务的binlog,然后自己解析了去操作Es中的数据。 这些都搞定了,那可视化的后台查询又怎么解决呢?Kibana,他他是一个可视化的平台,甚至对Es集群的健康管理都做了可视化,很多公司的日志查询系统都是用它做的。 学习路线 看了这么久你是不是发现,帅丙只是一直在介绍每个层级的技术栈,并没说到具体的一个路线,那是因为我想让大家先有个认知或者说是扫盲吧,我一样用脑图的方式汇总一下吧,如果图片被平台二压了。 资料/学习网站 Tip:本来这一栏有很多我准备的资料的,但是都是外链,或者不合适的分享方式,博客的运营小姐姐提醒了我,所以大家去公众号回复【路线】好了。 絮叨 如果你想去一家不错的公司,但是目前的硬实力又不到,我觉得还是有必要去努力一下的,技术能力的高低能决定你走多远,平台的高低,能决定你的高度。 如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。 丙丙发现在工作中发现我身边的人真的就是实力越强的越努力,最高级的自律,享受孤独(周末的歪哥)。 总结 我提到的技术栈你想全部了解,我觉得初步了解可能几个月就够了,这里的了解仅限于你知道它,知道他是干嘛的,知道怎么去使用它,并不是说深入了解他的底层原理,了解他的常见问题,熟悉问题的解决方案等等。 你想做到后者,基本上只能靠时间上的日积月累,或者不断的去尝试积累经验,也没什么速成的东西,欲速则不达大家也是知道的。 技术这条路,说实话很枯燥,很辛苦,但是待遇也会高于其他一些基础岗位。 所实话我大学学这个就是为了兴趣,我从小对电子,对计算机都比较热爱,但是现在打磨得,现在就是为了钱吧,是不是很现实?若家境殷实,谁愿颠沛流离。 但是至少丙丙因为做软件,改变了家庭的窘境,自己日子也向小康一步步迈过去。 说做程序员改变了我和我家人的一生可能夸张了,但是我总有一种下班辈子会因为我选择走这条路而改变的错觉。 我是敖丙,一个在互联网苟且偷生的工具人。 创作不易,本期硬核,不想被白嫖,各位的「三连」就是丙丙创作的最大动力,我们下次见! 本文 GitHub https://github.com/JavaFamily 已经收录,有大厂面试完整考点,欢迎Star。 该回答来自:敖丙
剑曼红尘 2020-03-06 11:35:37 0 浏览量 回答数 0

问题

#职场 8期 程序员的付费课程怎么赚钱

适合程序员创造的资产·付费课程 投入:★★★★ 前期要准备,后期要剪辑,录音还可能要购买硬件产出:★★★★★ 用户愿意为好的课程花钱持久性:★★★ 技术类课程大概半年需...
游客ih62co2qqq5ww 2020-05-06 14:34:31 12 浏览量 回答数 1

回答

无法启动一一想,前几天装了XAMPPP,是不是被挤掉了,马上跑到服务项里一看,啥都没,两者的服务都没。试试XAMPP,能启动。原生的APACHE就是启动不了,服务都不存在! 上网搜资料,都说是80端口被占用,马上netstat -aon|findstr "80",一看1388占用了80,可是这个是火狐浏览器。。。总不能不用浏览器吧。这个明显不对。既然服务都不存在,那解决办法应该是安装服务才对。 立马,安装服务。进入APACHE的BIN目录,命令行界面运行HTTPD,执行httpd -k install -n "apache",安装APACHE服务,命令行给出如下提示:Could not reliably determine the server's fully qualified domain name, using 192.168.5.201 for ServerName. 好办,打开httpd.conf配置文件,添加 ServerName localhost:80,再重新运行ApacheMonitor.exe,好了。看了下以前的备份配置文件,这一行被注释掉的。以前为什么行,后来安装 了其他集成套件就不行了,原因还不是很清楚。APACHE配置还要熟悉熟悉哈。 ----------------------还有一种情况---------------启动apache。但是启动时候却报错,无法重启。查看apache的错误日志文件,显示Unclean shutdown of previous Apache run?到网上搜了一下,一般有两种出错的可能性:第一:[warn] pid file D:/apache2.2/logs/httpd.pid overwritten — Unclean shutdown of previous Apache run?需要删除对应的apache pid文件。但是大多数人遇到的不是这种情况第二种情况:php模块添加错误。比如说dll文件没有按照规定放入php/ext目录下,比如说php.ini文件书写错误。如果都没有发现,那就试试把新添加的模块删除掉在试试。最大的可能就是新增加的扩展不兼容php对应的版本,以及扩展找不到等。可以先运行php.exe来测试下,如果是扩展问题,会弹窗提示的。 apache服务无法启动 提示服务启动后又停止系统:WindowsXP Professional Service Pack2wamp5集成安装包测试80端口显示:“Your port 80 is not actually used.”(即使更改apache的端口到8080同样无法启动) 错误日志如下: [Fri Nov 26 10:43:26 2010] [notice] Server built: Jan 18 2008 00:37:19[Fri Nov 26 10:43:26 2010] [notice] Parent: Created child process 1060[Fri Nov 26 10:43:26 2010] [notice] Child 1060: Child process is running[Fri Nov 26 10:43:26 2010] crit提供了一个无效的参数。 : Child 1060: setup_inherited_listeners(), WSASocket failed to open the inherited socket.[Fri Nov 26 10:43:27 2010] [crit] Parent: child process exited with status 3 -- Aborting.[Fri Nov 26 10:44:57 2010] [notice] Apache/2.2.8 (Win32) PHP/5.2.6 configured -- resuming normal operations[Fri Nov 26 10:44:57 2010] [notice] Server built: Jan 18 2008 00:37:19[Fri Nov 26 10:44:57 2010] [notice] Parent: Created child process 6100[Fri Nov 26 10:44:58 2010] [notice] Child 6100: Child process is running[Fri Nov 26 10:44:58 2010] crit提供了一个无效的参数。 : Child 6100: setup_inherited_listeners(), WSASocket failed to open the inherited socket.[Fri Nov 26 10:44:58 2010] [crit] Parent: child process exited with status 3 -- Aborting.[Fri Nov 26 10:45:50 2010] [notice] Apache/2.2.8 (Win32) PHP/5.2.6 configured -- resuming normal operations[Fri Nov 26 10:45:50 2010] [notice] Server built: Jan 18 2008 00:37:19[Fri Nov 26 10:45:50 2010] [notice] Parent: Created child process 4180[Fri Nov 26 10:45:50 2010] [notice] Child 4180: Child process is running[Fri Nov 26 10:45:50 2010] crit提供了一个无效的参数。 : Child 4180: setup_inherited_listeners(), WSASocket failed to open the inherited socket.[Fri Nov 26 10:45:50 2010] [crit] Parent: child process exited with status 3 -- Aborting. [Fri Nov 26 10:49:46 2010] [notice] Apache/2.2.8 (Win32) PHP/5.2.6 configured -- resuming 卸载此安装包N次并且每次都彻底删除,并且把注册表中的残余服务也删除干净,并安了N次,仍然不能启动apache服务(本安装包在网吧能正常安装并使用)。经过一番网搜以及我司技术员的讨论和探索,终于找到了解决办法:本地连接---属性----Internet 协议(TCP/IP)---属性---高级---wins----导入LMHOSTS(M)把 {apache2dir}binhttpd.exe 添加进去就可以启动了比如:httpd.exe的路径为“F:wamp2binapacheapache2.2.8binhttpd.exe”,那么{apache2dir}就是“F:wamp2binapacheapache2.2.8”Windows 系统下配置 Apache 服务有时会遇到Apache2 服务无法启动。发生服务特定错误: 1.请键入 NET HELPMSG 3547 以获得更多的帮助。的错误,这种错误可能有多种原因引起。我今天发现配置文件注释用得不对也是造成这个错误的一个原因:配置文件 httpd.conf 中如果写注释,注释以 # 开头必须单独放在一行中。而在某个配置项同一行写了 # 注释,就会造成以上无法启动的问题。解决办法就是把注释都单独放在一行。这只是无法启动的一个可能的原因 服务可以启动但是输入localhost无法打开页面这一般是netbios解析失败造成的。解决的办法很简单,步骤如下:1 在"网上邻居"上 点右键,菜单上选"属性(R)"。出来"网络连接"窗口,在"本地连接"上点右键,菜单中点"属性(R)"。出来"本地连接 属性"面板,在"此链接使用下列项目"中找到:"Internet 协议 (TCP/IP)",并点击它。在弹出的"Internet 协议 (TCP/IP) 属性"面板上,点击"高级(V)..."按钮。"高级 TCP/IP 设置"面板上点"WINS"选项标签,去掉"启用 LMHOSTS 查询(L)"前面的勾,点"确定"按钮。2 打开"控制面板",点击"Windows 防火墙",点击"高级"选项标签,选择"本地连接",并点击旁边的"设置(T)..."按钮。在服务选项中找到"安全 Web 服务器(HTTPS)",并把它勾选上,点"确定"按钮。最后一类问题 php文件无法解析当你万分惊喜的发现可以打开http://localhost 并看到apache的"IT works!"的页面时,你很激动的马上测试一个phpnifo的页面,却发现无法解析。这是因为,apache不知道如何解析php文件。虽然 LoadModule和AddType语句已经告诉apache 载入php模块并注意php后缀的文件,但是真正的解析还是要调用php5ts.dll等等文件,所以方案一:在path里添加php所在目录 并在httpd.conf里添加PHPiniDir "D:/php-5.2.5-Win32/"方案二:直接将php5ts.dll从php目录拷贝到apache的bin目录即可另外有一点需要注意 apache2.2以上的版本需要使用php5apache2_2.dll在php5.2.5 已经自带了 而使用以前的版本,譬如php5.1请到http://php.net下载补丁php5apache2.dll-php5.1.x.rar并解压.共有三个文件.vcredist_x86.exephp5apache2.dllhttpd.exe.manifest1.将 php5apache2.dll 覆盖掉你原来PHP目录下的 php5apache2.dll 文件.2.将 httpd.exe.manifest 文件复制到你的apache安装目录下的bin文件夹下.3.双击运行vcredist_x86.exe安装.(如果您的系统里已安装了 .NET framework 2.就可以省掉这一步)完成!重启你的apache2.2试试吧.当然,使用php5.2.5 完全不用管这个问题!
我的中国 2019-12-02 01:33:20 0 浏览量 回答数 0

回答

. 在编写一个类时,如果该类中的代码可能运行与多线程环境下,就要考虑同步问题了。 会同时被多个线程访问的资源,就是竞争资源,也称为竞争条件。对于多线程共享的资源我们必须进行同步,以避免一个线程的改动被另一个线程所覆盖。 synchronized 关键字有两种作用域: 1> 某个对象实例内,synchronized aMethod(){}关键字可以防止多个线程访问对象的synchronized方法(如果一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对象中任何一个synchronized方法)。这时,不同的对象实例的synchronized方法是不相干扰的。也就是说,其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法. 2> 是某个类的范围,synchronized static aStaticMethod{}防止多个线程同时访问这个类中的synchronized static 方法。它可以对类的所有对象实例起作用。 synchronized关键字是不能继承的,也就是说,基类的方法synchronized f(){} 在继承类中并不自动是synchronized f(){},而是变成了f(){}。继承类需要你显式的指定它的某个方法为synchronized方法; Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。      一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。      二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。      三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。      四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部   分的访问都被暂时阻塞。      五、以上规则对其它对象锁同样适用. 2. synchronized 关键字,它包括两种用法:synchronized 方法和 synchronized 块。   synchronized 方法:通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。如:   synchronized void accessVal(int newVal);   synchronized 方法控制对类成员变量的访问:每个类实例对应一把锁,每个 synchronized 方法都必须获得调用该方法的类实例的锁方能 执行,否则所属线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被阻塞的线程方能获得该锁,重新进入可执行 状态。这种机制确保了同一时刻对于每一个类实例,其所有声明为 synchronized 的成员函数中至多只有一个处于可执行状态(因为至多只有 一个能够获得该类实例对应的锁),从而有效避免了类成员变量的访问冲突(只要所有可能访问类成员变量的方法均被声明为 synchronized) 。  在 Java 中,不光是类实例,每一个类也对应一把锁,这样我们也可将类的静态成员函数声明为 synchronized ,以控制其对类的静态成 员变量的访问。  synchronized 方法的缺陷:若将一个大的方法声明为synchronized 将会大大影响效率,典型地,若将线程类的方法 run() 声明为 synchronized ,由于在线程的整个生命期内它一直在运行,因此将导致它对本类任何 synchronized 方法的调用都永远不会成功。当然我们可 以通过将访问类成员变量的代码放到专门的方法中,将其声明为 synchronized ,并在主方法中调用来解决这一问题,但是 Java 为我们提供 了更好的解决办法,那就是 synchronized 块。   synchronized 块:通过 synchronized关键字来声明synchronized 块。语法如下:  synchronized(syncObject) {   //允许访问控制的代码  }  synchronized 块是这样一个代码块,其中的代码必须获得对象 syncObject (如前所述,可以是类实例或类)的锁方能执行,具体机 制同前所述。由于可以针对任意代码块,且可任意指定上锁的对象,故灵活性较高。  对synchronized(this)的一些理解 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线 程必须等待当前线程执行完这个代码块以后才能执行该代码块。  二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized (this)同步代码块。  三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this) 同步代码块的访问将被阻塞。  四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个 object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。  五、以上规则对其它对象锁同样适用 3.打个比方:一个object就像一个大房子,大门永远打开。房子里有 很多房间(也就是方法)。 这些房间有上锁的(synchronized方法), 和不上锁之分(普通方法)。房门口放着一把钥匙(key),这把钥匙可以打开所有上锁的房间。 另外我把所有想调用该对象方法的线程比喻成想进入这房子某个 房间的人。所有的东西就这么多了,下面我们看看这些东西之间如何作用的。 在此我们先来明确一下我们的前提条件。该对象至少有一个synchronized方法,否则这个key还有啥意义。当然也就不会有我们的这个主题了。 一个人想进入某间上了锁的房间,他来到房子门口,看见钥匙在那儿(说明暂时还没有其他人要使用上锁的 房间)。于是他走上去拿到了钥匙 ,并且按照自己 的计划使用那些房间。注意一点,他每次使用完一次上锁的房间后会马上把钥匙还回去。即使他要连续使用两间上锁的房间, 中间他也要把钥匙还回去,再取回来。 因此,普通情况下钥匙的使用原则是:“随用随借,用完即还。” 这时其他人可以不受限制的使用那些不上锁的房间,一个人用一间可以,两个人用一间也可以,没限制。但是如果当某个人想要进入上锁的房 间,他就要跑到大门口去看看了。有钥匙当然拿了就走,没有的话,就只能等了。 要是很多人在等这把钥匙,等钥匙还回来以后,谁会优先得到钥匙?Not guaranteed。象前面例子里那个想连续使用两个上锁房间的家伙,他 中间还钥匙的时候如果还有其他人在等钥匙,那么没有任何保证这家伙能再次拿到。 (JAVA规范在很多地方都明确说明不保证,象 Thread.sleep()休息后多久会返回运行,相同优先权的线程那个首先被执行,当要访问对象的锁被 释放后处于等待池的多个线程哪个会优先得 到,等等。我想最终的决定权是在JVM,之所以不保证,就是因为JVM在做出上述决定的时候,绝不是简简单单根据 一个条件来做出判断,而是 根据很多条。而由于判断条件太多,如果说出来可能会影响JAVA的推广,也可能是因为知识产权保护的原因吧。SUN给了个不保证 就混过去了 。无可厚非。但我相信这些不确定,并非完全不确定。因为计算机这东西本身就是按指令运行的。即使看起来很随机的现象,其实都是有规律 可寻。学过 计算机的都知道,计算机里随机数的学名是伪随机数,是人运用一定的方法写出来的,看上去随机罢了。另外,或许是因为要想弄 的确定太费事,也没多大意义,所 以不确定就不确定了吧。) 再来看看同步代码块。和同步方法有小小的不同。 1.从尺寸上讲,同步代码块比同步方法小。你可以把同步代码块看成是没上锁房间里的一块用带锁的屏风隔开的空间。 2.同步代码块还可以人为的指定获得某个其它对象的key。就像是指定用哪一把钥匙才能开这个屏风的锁,你可以用本房的钥匙;你也可以指定 用另一个房子的钥匙才能开,这样的话,你要跑到另一栋房子那儿把那个钥匙拿来,并用那个房子的钥匙来打开这个房子的带锁的屏风。          记住你获得的那另一栋房子的钥匙,并不影响其他人进入那栋房子没有锁的房间。          为什么要使用同步代码块呢?我想应该是这样的:首先对程序来讲同步的部分很影响运行效率,而一个方法通常是先创建一些局部变 量,再对这些变量做一些 操作,如运算,显示等等;而同步所覆盖的代码越多,对效率的影响就越严重。因此我们通常尽量缩小其影响范围。 如何做?同步代码块。我们只把一个方法中该同 步的地方同步,比如运算。          另外,同步代码块可以指定钥匙这一特点有个额外的好处,是可以在一定时期内霸占某个对象的key。还记得前面说过普通情况下钥 匙的使用原则吗。现在不是普通情况了。你所取得的那把钥匙不是永远不还,而是在退出同步代码块时才还。           还用前面那个想连续用两个上锁房间的家伙打比方。怎样才能在用完一间以后,继续使用另一间呢。用同步代码块吧。先创建另外 一个线程,做一个同步代码 块,把那个代码块的锁指向这个房子的钥匙。然后启动那个线程。只要你能在进入那个代码块时抓到这房子的钥匙 ,你就可以一直保留到退出那个代码块。也就是说 你甚至可以对本房内所有上锁的房间遍历,甚至再sleep(10601000),而房门口却还有 1000个线程在等这把钥匙呢。很过瘾吧。           在此对sleep()方法和钥匙的关联性讲一下。一个线程在拿到key后,且没有完成同步的内容时,如果被强制sleep()了,那key还一 直在 它那儿。直到它再次运行,做完所有同步内容,才会归还key。记住,那家伙只是干活干累了,去休息一下,他并没干完他要干的事。为 了避免别人进入那个房间 把里面搞的一团糟,即使在睡觉的时候他也要把那唯一的钥匙戴在身上。           最后,也许有人会问,为什么要一把钥匙通开,而不是一个钥匙一个门呢?我想这纯粹是因为复杂性问题。一个钥匙一个门当然更 安全,但是会牵扯好多问题。钥匙 的产生,保管,获得,归还等等。其复杂性有可能随同步方法的增加呈几何级数增加,严重影响效率。这也 算是一个权衡的问题吧。为了增加一点点安全性,导致效 率大大降低,是多么不可取啊。 synchronized的一个简单例子 public class TextThread { public static void main(String[] args) {    TxtThread tt = new TxtThread();    new Thread(tt).start();    new Thread(tt).start();    new Thread(tt).start();    new Thread(tt).start(); } } class TxtThread implements Runnable { int num = 100; String str = new String(); public void run() {    synchronized (str) {     while (num > 0) {      try {       Thread.sleep(1);      } catch (Exception e) {       e.getMessage();      }      System.out.println(Thread.currentThread().getName()        + "this is " + num--);     }    } } } 上面的例子中为了制造一个时间差,也就是出错的机会,使用了Thread.sleep(10) Java对多线程的支持与同步机制深受大家的喜爱,似乎看起来使用了synchronized关键字就可以轻松地解决多线程共享数据同步问题。到底如 何?――还得对synchronized关键字的作用进行深入了解才可定论。 总的说来,synchronized关键字可以作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。如果再细的分类, synchronized可作用于instance变量、object reference(对象引用)、static函数和class literals(类名称字面常量)身上。 在进一步阐述之前,我们需要明确几点: A.无论synchronized关键字加在方法上还是对象上,它取得的锁都是对象,而不是把一段代码或函数当作锁――而且同步方法很可能还会被其 他线程的对象访问。 B.每个对象只有一个锁(lock)与之相关联。 C.实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。 接着来讨论synchronized用到不同地方对代码产生的影响: 假设P1、P2是同一个类的不同对象,这个类中定义了以下几种情况的同步块或同步方法,P1、P2就都可以调用它们。 1. 把synchronized当作函数修饰符时,示例代码如下: Public synchronized void methodAAA() { //…. } 这也就是同步方法,那这时synchronized锁定的是哪个对象呢?它锁定的是调用这个同步方法对象。也就是说,当一个对象P1在不同的线程中 执行这个同步方法时,它们之间会形成互斥,达到同步的效果。但是这个对象所属的Class所产生的另一对象P2却可以任意调用这个被加了 synchronized关键字的方法。 上边的示例代码等同于如下代码: public void methodAAA() { synchronized (this)      // (1) {        //….. } } (1)处的this指的是什么呢?它指的就是调用这个方法的对象,如P1。可见同步方法实质是将synchronized作用于object reference。――那个 拿到了P1对象锁的线程,才可以调用P1的同步方法,而对P2而言,P1这个锁与它毫不相干,程序也可能在这种情形下摆脱同步机制的控制,造 成数据混乱:( 2.同步块,示例代码如下: public void method3(SomeObject so) {     synchronized(so)     {        //…..     } } 这时,锁就是so这个对象,谁拿到这个锁谁就可以运行它所控制的那段代码。当有一个明确的对象作为锁时,就可以这样写程序,但当没有明 确的对象作为锁,只是想让一段代码同步时,可以创建一个特殊的instance变量(它得是一个对象)来充当锁: class Foo implements Runnable {         private byte[] lock = new byte[0]; // 特殊的instance变量         Public void methodA()         {            synchronized(lock) { //… }         }         //….. } 注:零长度的byte数组对象创建起来将比任何对象都经济――查看编译后的字节码:生成零长度的byte[]对象只需3条操作码,而Object lock = new Object()则需要7行操作码。 3.将synchronized作用于static 函数,示例代码如下: Class Foo {     public synchronized static void methodAAA()   // 同步的static 函数     {         //….     }     public void methodBBB()     {        synchronized(Foo.class)   // class literal(类名称字面常量)     } }    代码中的methodBBB()方法是把class literal作为锁的情况,它和同步的static函数产生的效果是一样的,取得的锁很特别,是当前调用这 个方法的对象所属的类(Class,而不再是由这个Class产生的某个具体对象了)。 记得在《Effective Java》一书中看到过将 Foo.class和 P1.getClass()用于作同步锁还不一样,不能用P1.getClass()来达到锁这个Class的 目的。P1指的是由Foo类产生的对象。 可以推断:如果一个类中定义了一个synchronized的static函数A,也定义了一个synchronized 的instance函数B,那么这个类的同一对象Obj 在多线程中分别访问A和B两个方法时,不会构成同步,因为它们的锁都不一样。A方法的锁是Obj这个对象,而B的锁是Obj所属的那个Class。 小结如下: 搞清楚synchronized锁定的是哪个对象,就能帮助我们设计更安全的多线程程序。 还有一些技巧可以让我们对共享资源的同步访问更加安全: 1. 定义private 的instance变量+它的 get方法,而不要定义public/protected的instance变量。如果将变量定义为public,对象在外界可以 绕过同步方法的控制而直接取得它,并改动它。这也是JavaBean的标准实现方式之一。 2. 如果instance变量是一个对象,如数组或ArrayList什么的,那上述方法仍然不安全,因为当外界对象通过get方法拿到这个instance对象 的引用后,又将其指向另一个对象,那么这个private变量也就变了,岂不是很危险。 这个时候就需要将get方法也加上synchronized同步,并 且,只返回这个private对象的clone()――这样,调用端得到的就是对象副本的引用了 作者:hanwei_java 来源:CSDN 原文:https://blog.csdn.net/hanwei_java/article/details/79738614 版权声明:本文为博主原创文章,转载请附上博文链接!
auto_answer 2019-12-02 01:50:26 0 浏览量 回答数 0

问题

10个迷惑新手的Cocoa,Objective-c开发难点和问题? 400 报错

10个迷惑新手的Cocoa,Objective-c开发难点和问题? 400 报错 首先请谅解我可能使用很多英文,毕竟英文资料将来会是你的主要资料来源。 在你继续深入学习之前,请停下脚步弄清这些问题...
爱吃鱼的程序员 2020-05-31 00:44:29 0 浏览量 回答数 1

问题

【精品问答】大数据计算技术1000问

为了方便大数据开发者快速找到相关技术问题和答案,开发者社区策划了大数据计算技术1000问内容,包含Flink、Spark等流式计算(实时计算)、离线计算、Hbase等实践中遇到的技术问...
问问小秘 2019-12-01 21:57:13 6895 浏览量 回答数 2

问题

线性表 7月8日 【今日算法】

线性表的定义: 由零个或多个数据元素组成的有限序列 注意: 首先它是一个序列,也就是说元素之间是有先来后到之分。若元素存在多个,则第一个元素无前驱,而最后...
游客ih62co2qqq5ww 2020-07-09 07:47:37 504 浏览量 回答数 1

问题

从一道面试题谈谈一线大厂码农应该具备的基本能力 7月16日 【今日算法】

##关于一线码农的面试,我想说 求职面试在绝大部分人来说都是必不可少的,自己作为求职者也参与了不少面试(无论成功或者失败),作为技术面试官参与面试也有四五年的经验&#x...
游客ih62co2qqq5ww 2020-07-22 13:45:47 118 浏览量 回答数 1

问题

第6篇 指针数组字符串(下)补充:报错

我们回到control.c文件里。那么我们就可以利用g_pcontrol_input进行读取工作。当然这里有个学院派的做法,就是检测当前文件的长度,毕竟如果这个长度比BUF大,我们得认为不能处理嘛。...
kun坤 2020-06-08 11:02:03 3 浏览量 回答数 1

问题

在 RHEL/CentOS 上安装 OpenJDK 和 Oracle JDK

前言 本教程将向您展示如何在 RHEL 7 和 6,同样适用于基于 RHEL 的 CentOS 以及其他发行版。Java 是一种非常流行的软件平台,在 Web 应用领域有着非常不错的使用率和优势。 教程将...
妙正灰 2019-12-01 21:50:42 2850 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板