- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
笔试题(只写关键点或思路即可):
线程、进程区别。线程间通信方式、进程间通信方式?
进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
1. 删除表中所有内容:delete from table_name table_name是表名2. 删除所有的表:请问你用的哪个数据库?这里给出oracle的方法(A,B两种):oracle不能删除所有的表,只能删除所有用户下的表,所有的表都删了,数据库就完蛋了(有一些系统表)方法A select drop table || table_name || cascade ; from user_tables 该语句的查询结果是N个删除语句,将其复制,然后在sql窗口运行即可~方法B drop user 用户名 cascade 这句话一下搞定,连用户也没了(一次只能删除一个用户下所有的表)oracle TRUNCATE TABLE tableName?tableName是要删除全部行的表的表名?TRUNCATE TABLE 虽然与不带 WHERE 的 DELETE 语句相同?但 TRUNCATE TABLE 速度更快而且占资源少速度快?TRUNCATE TABLE 不记录日志所以不能激活触发器?TRUNCATE TABLE 不能用于参与了索引视图的表
TRUNCATE?TABLE?dzjc.dzjc_yhmc; ?
TRUNCATE?TABLE?dzjc.dzjc_yhmc; ?
对正常的数据库比如sql server 或oracle, 1000w 不是太多问题。oracle 有一个工具叫sql loader,load 1000W级数据最快可以在10几分钟完成。我用C#程序插入100W条数据到sql server 2005 可以在3分钟内完成。因为影响因素太多,很难说哪个最快。
追问
“100W条数据到sql server 2005 可以在3分钟内完成”能否看一下你的代码。有多少原因就说多少,大家可以讨论一下
回答
代码早就不在了,当时就是为了验证数据库速读写的最普通的ADO.NET代码。记得表只有3,4 列,用RAND产生随机数,插入数据库。数据库和application在同一个工作站。一下想到的影响因素包括:1. 网络带宽,connection pool管理机制。2. application server 的速度。3 数据库server的CPU速度。4. 数据库server的硬盘速度。5. 数据库的partition情况。6. 当时数据库的负荷。7. 数据库设计,主键的设计,索引的多少和分布情况,有多少列,各列的数据分布。8 数据库server, application server的内存。
在电信领域业务中,“生产者-消费者(P-C)”的应用场景较为常见。在部门的多个产品中,就有几种“生产者-消费者”应用场景的实现。本周部门内部做了一次技术交流,谈到不同产品中关于“生产者-消费者”模式实现的差异以及优劣,这里汇总了一下思路简要说明一下。“生产者-消费者”问题又被称作“有限缓冲区”问题,即至少一个生产者与至少一个消费者针对一个公用的初始大小固定的缓冲区进行操作。首先缓冲区是公用的或者说是共享的。Producer进程(简称P进程,这里我们主要针对进程间的P-C问题)将消息生产出来后,放入缓冲区,Consumer进程(简称C进程)从缓冲区取出消息。这个缓冲区一般被实现为队列结构,比如基于共享内存队列结构。有了缓冲区后,下面就是P进程和C进程之间如何配合的问题了。信手拈来的简单方案:我们可以通过进程间的互斥锁对缓冲区进行互斥访问以解决多个P进程和P个C进程之间的配合问题。这样P、C进程,特别是C进程在实现逻辑上相对较为简单,即不停的尝试去lock mutex,但多数时间C进程可能都在忙等待,空耗计算资源。这种配合基本上完全由操作系统调度来完成对缓冲区的互斥操作。为了减少忙等待,对P、C的配合过程增加一些控制力,可提出进一步的方案:采用条件变量。C进程在条件变量上等待,P进程生产出数据后,可采用特定逻辑去唤醒某个C或者全部C进程(broadcast)。以上两个方案都很简单,但都有一个较为严重的缺陷,那就是C进程多数情况下都在挂起状态,在缓冲区没有数据的情况下也无法去做别的事情。当然如果你的应用场景就是这样的,那就无可厚非了。我们的应用场景不是这样的,所以我们还要继续演进下去。很久以前部门的一位大牛同事就给出了一个方案:依旧是基于条件变量,不同的是在C进程中创建了一个工作线程,并
文档评论(0)