程序员

mysql的优化

◇◆丶佛笑我妖孽 提交于 2019-11-27 00:44:45
1、编程分为两种: 命令式编程:Imperative Programming,程序员需要告诉程序应该怎么做,也就是 How To Do,传统的高级语言都是命令式编程,比如C#,Java,命令式编程也称为过程化编程,工作在第一线的程序员要做这类工作。 声明式编程:Declarative Programming,程序员不需要告诉程序如何去做,只需要告诉程序我要做什么,也就是What To Do,比如SQL、.net中的Linq ,Ant配置,Spring中的依赖注入等,声明式编程也称为非过程化编程,系统的总设计师、规则制定者要做这类工作。 2、命令式语言学起来难,而声明式语言学起来容易,但是用好难。举例来说,对于排序的需求,命令式编程是自己实现,可以使用冒泡,选择,插入,快速,排序的性能取决于实现策略、数据量的大小,数据的分布。而声明式语言mysql只要使用order by xxx,就好了,但是要想排序的性能高,必须深入理解排序的实现,提示mysql按照某种方式运行。 转载于:https://www.cnblogs.com/nzbbody/p/4605670.html 来源: https://blog.csdn.net/weixin_30411997/article/details/99234894

网络变成操作系统详解

大城市里の小女人 提交于 2019-11-27 00:06:02
一 为什么要有操作系统 ( 两本书:现代操作系统、操作系统原理,学好python以后再去研究吧~~)   现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成。   一般而言,现代计算机系统是一个复杂的系统。   其一:如果每位应用程序员都必须掌握该系统所有的细节,那就不可能再编写代码了(严重影响了程序员的开发效率:全部掌握这些细节可能需要一万年....)   其二:并且管理这些部件并加以优化使用,是一件极富挑战性的工作,于是,计算安装了一层软件(系统软件),称为操作系统。它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理刚才提到的所有设备。 总结:    程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的,有了他,程序员就从这些繁琐的工作中解脱了出来,只需要考虑自己的应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件。 二 什么是操作系统    精简的说的话,操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。操作系统所处的位置如图1 #操作系统位于计算机硬件与应用软件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态

软件工程——三次软件危机的表现及起因

被刻印的时光 ゝ 提交于 2019-11-26 23:57:23
软件危机 :落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。 第一次软件危机 (60年代~70年代) 20 世纪60年代以前,计算机刚刚投入实际使用,这个时期主要的软件开发方式是使用机器语言或者汇编语言在特定的机器上进行软件的设计与编写。此时的软件规模较小,文档资料通常也不存在,也不需要使用系统化的软件开发方法,基本上是个人设计编码、个人操作使用的的私人化的软件生产模式。这个时代的程序一个典型特征就是依赖特定的机器,程序员必须根据所使用的计算机的硬件特性编写特定的程序。 然而从60年代中期开始,大容量、高速度计算机问世,使计算机的应用范围迅速扩大,软件开发急剧增长。高级语言开始出现;操作系统的发展引起了计算机应用方式的变化;大量数据处理导致第一代数据库管理系统的诞生。软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出,程序设计的复杂度也随之增长。原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发 。 1968 年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,第一次讨论软件危机问题,并正式提出“软件工程”一词,从此一门新兴的工程学科——软件工程学——为研究和克服软件危机应运而生,“软件危机”的概念也是在那次会议上由F. L. Bauer提出的。

软件测试的艺术(读书笔记5)

心已入冬 提交于 2019-11-26 23:55:18
下面开始本书第三部分的读书笔记部分 第三部分 软件测试中的人工测试方法   包括第3章 代码检查、走查与评审 第3章 代码检查、走查与评审   1、代码检查和代码走查   代码检查和代码走查是一种人工测试方法,这种测试技术在编码之后计算机测试之前使用,要求人们组成一个小组来阅读和检查程序,可以有效的在项目早期发现错误,并改正错误。代码检查和代码走查有以下的相同点: 三到四人的小组对程序进行审核 成员包括:代码作者、协调人、其他程序专家、测试专家 目标是发现错误而非改正错误 与使用计算机的测试互补   1.1 代码检查   代码检查是以组为单位阅读代码,有一系列的规程和错误检查技术。   1)代码检查小组   通常包括四个人:协调人、代码作者、其他程序设计人员、测试专家。   协调人职责:1.分发材料、安排进程;2.记录发现的错误;3.确保错误随后的改正。   代码作者职责:逐条讲解程序代码的逻辑结构。   其他程序设计人员:提问题,并判断程序是否存在错误。   测试专家:熟悉软件测试,并知道大部分的常见编码错误。   2)检查议程与注意事项   a) 代码评审之前:协调人将程序清单和设计规范分发给其他成员   b) 代码评审时:     1.编码人员对程序进行讲解;     2.其他程序人员提问题,并参考常见编码错误列表分析程序;     3.协调人确保会议高效进行;   c)

Java并发指南6:Java内存模型JMM总结

倖福魔咒の 提交于 2019-11-26 23:23:03
在前面的文章中我们介绍了Java并发基础和线程安全的概念,以及JMM内存模型的介绍,包括其定义的各种规则。同时我们也介绍了volatile在JMM中的实现原理,以及Lock锁和synchronized实现同步方式的区别。最后还讲述了final关键字在JSR-133中的语义加强。 介绍了这么多内容,主要还是围绕着JMM来讲的,所以本文再次对JMM做一个总结。 处理器内存模型 顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。 根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几种类型: 放松程序中写-读操作的顺序,由此产生了total store ordering内存模型(简称为TSO)。 在前面1的基础上,继续放松程序中写-写操作的顺序,由此产生了partial store order 内存模型(简称为PSO)。 在前面1和2的基础上,继续放松程序中读-写和读-读操作的顺序,由此产生了relaxed memory order内存模型(简称为RMO)和PowerPC内存模型。 注意,这里处理器对读/写操作的放松

Java并发指南2:深入理解Java内存模型JMM

走远了吗. 提交于 2019-11-26 23:17:23
一:JMM基础与happens-before 并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信。 同步是指程序用于控制不同线程之间操作发生相对顺序的机制。在共享内存并发模型里,同步是显式进行的。程序员必须显式指定某个方法或某段代码需要在线程之间互斥执行。在消息传递的并发模型里,由于消息的发送必须在消息的接收之前,因此同步是隐式进行的。 Java内存模型的抽象 Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明。如果编写多线程程序的Java程序员不理解隐式进行的线程之间通信的工作机制,很可能会遇到各种奇怪的内存可见性问题。 在java中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享(本文使用“共享变量”这个术语代指实例域,静态域和数组元素)。局部变量(Local variables),方法定义参数(java语言规范称之为formal

一个网站或者APP开发要多少钱

笑着哭i 提交于 2019-11-26 23:02:44
  经常遇到朋友问我:“开发一个京东商城需要多少钱?开发一个滴滴打车需要多少钱?”类似这样的需求,就连我这样一名伪开发者都不愿意去骗客户或者朋友,因为这种问题是很难回答出来的。为什么这么说呢?要知道类似京东商城滴滴打车这样亿级别用户的产品,很难知道他之前经过了多少次版本的迭代,也很难知道他的产品线有多广,很多朋友甚至连“迭代”这样的名词具体概念都不懂,今天我会以Q+A的形式汇总诸多开发过程中遇到的客户问题,希望能给创业中的你一些建议,如果你是一名开发者可以绕道。   首先我们先看一张目前我们程序员客栈(www.proginn.com)项目的流程化概念引导图:   我把它总结成一句话:产品化过程梳理分析,模块化功能点需求整理,时间化里程碑进度管理,成本化人力资源开发。   1,我有一个好的想法如何实现?   把自己的想法整理成文档,或者画成粗糙的说明图,简单来说不管你用什么方法,怎么样能够让产品经理知道你想开发一个什么样的东西是最重要的。这里对于创业者来说自身的表达能力非常重要,如果实在无法与专业产品经理沟通,应该让项目经理帮忙自己完善专业化产品需求说明文档,然后让专业的人做专业的事情才靠谱。(开发者们也不要说创业者的是多么的粗糙,没办法这个世界总是先有想摘星星的人,后来才有航空飞行员,互相理解尊重非常的重要。)   2,为什么要做原型?   经常碰到朋友会跟我说,

适合初学者学习的Python书籍列表(2018年最新书籍)

牧云@^-^@ 提交于 2019-11-26 22:32:08
随着人工智能和机器学习的发展,各行各业职位正在逐渐被智能机器取替,为了应对被取替的风险,越来越多人开始学习编程,最近一年,似乎要进入全民Python编程的时代了。 那么,为什么要学习Python? Python已经逐渐成为大众必备的一门技能。回想一下,微软创始人比尔·盖茨 13 岁学习编程,Facebook 创始人扎克伯格 11 岁开始学习编程。时代发展日新月异,小学生学编程早已不是新鲜事,如果说 2017 年有一门最火“外语”,那一定是 Python。 现在学习Python,已经不只是程序员所需要学习的技能了。 今天小编先为大家推荐一波Python入门书单 我们都知道Python容易学,但是就是不知道如何去学,去哪里找资料,机器学习,人工智能,深度学习,都在这学习,欢迎加入python学习交流qq群 250933691 ,分享我精心准备的Python学习资料,0基础到进阶!希望你们在学习Python道路上少走弯路!加油! 编程入门 成人 《“笨办法学”Python3》 Zed Shaw 著 (2018年5月) 本书是基于Python 3.6版本编写的。百万粉丝程序员带你轻松入门Python语言! 本书是一本Python入门书籍,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现

程序员修炼之七杀秘技

吃可爱长大的小学妹 提交于 2019-11-26 22:29:45
[color=red]程序员修炼之七杀秘技[/color] 作者:周恒 来源:IT博客   酷勤网收集 2007-08-21 摘要 学好一门计算机编程语言真的不值得过分骄傲,可悲的是,我们往往一门编程语言也没有学习好就在简历上写着精通XX编程。 想想一个旧社会的老太太,即使一天学都没有上过,说起话,讲起故事来也能出口成章。 一小孩,从出生开始短短三年就能把复杂如汉语的语言说得很流利 学好一门计算机编程语言真的不值得过分骄傲,可悲的是,我们往往一门编程语言也没有学习好就在简历上写着精通XX编程。 想想一个旧社会的老太太,即使一天学都没有上过,说起话,讲起故事来也能出口成章。 想想一个小孩,从出生开始短短三年就能把复杂如汉语的语言说得很流利了。 为什么有的程序员,工作十年了还不开窍,仍然写不出高质量的程序,以至于哀叹程序员是吃青春饭,过了三十岁就不知道何去何从。 为什么有的程序员,勤勤恳恳,却事倍功半,写出来的程序仍然七疮八孔,bug众多? 计算机至今无法像人类这样好的理解自然语言,编程语言其实比自然语言简单的多,但是为什么我们学起编程语言来还不如三岁小孩学自然语言? 小孩学语言和成长的过程对我们学习编程语言是不是有所启迪呢? 笔者曾多次与公司新员工座谈,新员工多爱问程序员有何速成之法,谈起应该菜鸟如何修炼七步杀一人之绝技,具体的方法总结了一下,是为七多,现分享如下,各位看家指正:

提高编码技能的10个小窍门

烈酒焚心 提交于 2019-11-26 22:28:46
原文: 10 Tips to improve your coding skills 翻译:王江平 译者注:此文主要介绍一些提高编程技巧的小方法或者说是技能,嗯,我比较推崇第一条…..多练,熟能生巧。 你想成为一名程序员,并且正在为之奋斗,那么你努力的方式,比如做事方法、思维习惯都将会影响你会成为怎样的一名程序员。 那么,你需要成为一个天才才能学好编程吗?我觉得没有必要。 你必须建立自己的做事方式。需要学习一些(或更多的)技巧, 不断的在Google上搜索查询,与书成为朋友。有一长串的TODO需要遵循。我将在这里分享一些技巧,帮你提高编程技能。 尽可能多地练习: 坚持练习几个小时听起来很难, 但一旦喜欢上这种方式, 相信我, 你会乐此不疲。你一定听说过熟能生巧。这对程序员来说是非常必要的。   这里有个问题。练习什么?问得好。社会媒体是实践资源的一个重要来源。加入有新手程序员分享他们所面临的问题的群组和论坛,去帮助他们。几乎每本书都有很多经典的案例。不要跳过章节练习。留意实际运用中的问题并且尝试解决掉。 加入开发者社区: 如上所述,社交媒体可以给到你想要的一切。有大型专业社区。有些是非常流行的, 如 StackOverflow 和 MSDN 。这里有许多技术牛人可以给到你帮助,也有一些新手需要你的帮助。注册 (免费的), 然后扩大你的社交圈。 多吸取建议 允许他人阅读您的代码