web项目开发中,使用mysql作为数据库,如何进行数据库优化
web项目里头,对于数据库的优化,跟普通的没有什么大的区别。需要速度上的优化,就得建索引。如果数据量实在太庞大了,就考虑换其他的数据库。例如mango.数据量太大,还可以通过分表,通过将不同的数据,哈希到不同的表来减少,查询的时间。
Java Web开发中,业务逻辑写在SQL里好还是代码里好呢?有什么建议吗
谢邀~关注我,了解更多关于开发、架构的分享

个人建议,普通的业务逻辑尽量写在后台代码中,尽量避免写在SQL中,并且尽量避免使用存储过程。
不可否认将业务逻辑写在SQL或存储过程中,也是有这种做法的优点,比如:可以减少网络交互的成本,原本后台程序需要多次访问数据库,现在可以用复杂的SQL或者存储过程封装好,然后程序调用一次即可。
但是复杂SQL和存储过程也有很大的缺点:
不可移植性,每种数据库的语法多多少少都会有一些差异;如果SQL中使用到数据的一些函数、方法,而这些又是该数据独有的,那么很难做数据库的迁移。
业务逻辑会存在SQL和程序中,这种业务逻辑多处存在,会让后期的系统维护和调试都变得更加困难。
数据库中所支持的函数及语法不一定可以满足所有的需求,相比来说,编程语言中的功能更加的强大。
如果SQL、存储过程中有复杂的计算,也会增加数据库机器的压力;并且很难做到分布式部署。
相比编程语言,业务逻辑写在SQL、存储过程中,很难做到业务逻辑的抽象,所以从代码复用的角度来看,编程语言更胜一筹。
所以,普通业务逻辑尽量不要使用复杂SQL或存储过程,而如果是报表统计或者ETL抽取等功能,可以根据实际的情况,采用复杂SQL或者存储过程来处理。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
目前能想到的场景里 只有统计报表系统 部分报表聚合逻辑适合写在sql中 开发效率较写在中间层要高 大部分报表可以做到sql查询所见即所得。但是 要求研发有很强的集合概念 熟悉库表结构 sql语法 和 各种sql方言
其他场景 例如 各个业务线比入订单流程 等 数据库的作用还是回归存储 比较好 其他的逻辑控制等防在中间层比较好
关于这个问题应该分场景,不能一概而论。中小项目推荐使用存储过程解决大部分业务,代码量少,方便维护。大型项目涉及到分布式,缓存等等,考虑到数据库的开销就不建议太过依托数据库处理了,因为大并发下数据库处理复杂业务根本处理不过来。
关于java学习,有什么书籍或者教程>保举/h2>
很开心看见有其他小伙伴一起来学习Java。我认为在互联网高度发达的今天,学习Java可以考虑以下思种方式,而不是局限于某一本书。
第一种:视频教程的方式。
>长处/span>:通俗易懂,老师讲解过程中不一定全是书面语言;样例丰富,讲解老师可能会穿插介绍学习中的坑,和需要注意的点。
缺点:速度教慢。
总结:建议纯编程小白采用这种学习方式,老师语速太慢可以调高视频播放倍数。推荐中国大学慕课或者哔哩哔哩等平台,简单搜索即可找到优质的免费教学视频。
第二种:文字版学习网站。
>长处/span>:随时随地可以学习,你甚至可以利用好上厕所的无聊时间。打开手机即可。网站一般边讲解边有代码让你实际运行,你可以边看讲义,边跑代码。
缺点:不容易形成系统学习;学习过程中可能受到网站本身广告的影响。
总结:推荐 廖雪峰的官方网站、菜鸟教程等。
第三种:笔记、经验分享社区。
>长处/span>:当你边学习的时候肯定会一边写代码。学习者可能遇到视频中、讲义中没有提到的问题。甚至是某款软件的安装或者使用的问题。这个时候你利用搜索引擎进行简单搜索,就能借鉴前人的经验。
缺点:内容质量参差不齐。
总结:适合自学时遇到问题的时候使用。推荐CSDN,或者其他博客。
第四种:专业的>册本/strong>
>长处/span>:当你学习了一段时间之后,是时候准备一部类似于字典的工具书了。当你不会某个函数,某个对象的时候,你可以拿起你的这本工具书。主要用途是方便忘记的时候查阅。
缺点:某些书籍的文字描述晦涩难懂,阅读体验不是很好。
总结:推荐《java从精通到入门》。其实其他书也推荐,简单搜索,出来的书目质量都不会太差。
----------------------分割线--------------------------
总结:可以看见,本回答不完全符合题主的提问。但是我觉得这是我学习Java过程中十分常用,也十分受用的学习方法。另外,想学习好一门编程语言,离不开大量的练习。祝题主学习愉快♥。
可以参考一下我在动 力 节 点学习Java时候的课程表。想要学会JAVA一般分为四个学习阶段,通过每个阶段的学习就能很好的掌握了,要对自己有信心。
基础技能训练:操作系统与网络技术、JAVA面向功能对象程序设计、JAVA核心编程、JAVA网络编程 第二阶段:中小型网站应用开发阶段目的:掌握数据库设计与开发技能,熟练使用JAVAEE组件技术开发中小型网站应用。
数据库(Oracle数据库管理及开发)、UI开发(WEB页面开发基础、XML、Ajax)、JAVAEE组件开发(jsp、servlet、jdbc)、框架技术(struts2.0、hibernate、spring、springMVC、mybatis)
第三阶段:软件工程工业实践阶段目的:熟悉软件工程流程及规范,使用以前三个阶段所学的技能,进行软件工程工业实践。软件工程方法论、软件工程项目实践第四阶段:职业素质培养及就业阶段目的:提高团队协作能力、职业道德、沟通能力和面试技巧,成功面试,成为标准IT职业人。职业素质培养(职业道德、项目经理座谈、面试技能)、就业。
java开发技术的应用在多个开发领域都很广泛,尤其是在大数据开源平台的开发上。现在企业对java开发技术的需求也是有很多的,但是这并不意味着随便学习一些java基础就可以胜任一些工作,想要成功入行java开发,还需要小伙伴更为系统的去学习相关的java开发技术知识。
小伙伴想要学习java开发技术知识,是可以通过相关的java视频来学习的,但是小伙伴不要盲目的去学习,最好是能够在比较靠谱的java培训机构官网进行学习。小伙伴通过相关的java视频学习只是能够学到基本的入门知识,如果小伙伴想要成功入行java开发,那还需要更为系统的去学习相关的java开发技术知识,那小伙伴应该如何系统学习java开发技术知识呢?
1.学习积累相关的java开发基础知识
小伙伴想要入门学习java开发技术知识,相关的基础知识学习是避免不了的,小伙伴在java培训机构可以系统的去了解相关的编程技术知识,在老师的指导学习下,能够更快速的理解相关的java开发技术基础知识理论。
2.项目实战案例练习的重要性
java开发基础知识的学习和真实项目实战案例练习是相辅相成的,通过相关的项目实战案例练习可以更深入的理解相关java开发技术知识,小伙伴可以通过项目实战案例练习来积累一定的开发实战经验,同时还可以锻炼小伙伴解决问题的能力,让小伙伴在入职之后能够更快的适应企业发展。
3.以用为学的学习方法>鉴戒/p>
小伙伴在java培训机构学习的过程中,要确定自身发展方向,通过自身所需要的开发技术知识,进行针对性学习,以用为学,边学边用,才能逐渐提高自己的学习效率,在工作中提升职业价值和岗位竞争力。
小伙伴是可以通过java视频来入门学习的,但是在这期间不要盲目的去学习,要理性选择java视频的合理性,要选择比较靠谱且系统完善的视频教程进行学习。尚硅谷java培训一直以来都在坚持线下面授的教学模式,以理论实践相结合的教学方式传授相关的java开发技术知识,让小伙伴在学习java开发技术知识的同时,积累更多项目实战经验。
http://www.atguigu.com/download.shtml
所有语言的知识体系分为三大块:
- 数据存储 (内存,文件,数据库,分布式,集群, 关系型 ,非关系型 。。)
- 业务逻辑 (业务需求,语言语法,算法,类库框架,性能优化等)
- 信息交互(展示)(多端,app,小程序,公众号,移动端,pc端,web开发等。。)
- 这三块知识作为学习来说,可以有侧重,但是不能有某一块完全不懂。
推荐入门书籍:
《Java从入门到精通(第5版)》,这本书从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java语言进行程序开发需要掌握的知识。
《Java编程思想(第4版)》,这本书的作者拥有多年教学经验,对c、c++以及Java语言都有独到、深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。非常适合初学者阅读。
《实战Java程序设计》,这是一本既注重实战,同时也注重底层“内功”(内存分析、JVM底层、数据结构)训练的书,这本书能帮助初学者打通Java编程“任督二脉”。
最后给大家推荐几个B站超详细的Java、大数据、python等自学课
从Java零基础到项目实战哦【b站BV: BV1CB4y1A7sk】
十大企业级项目自学课【b站:BV14K411F7HJ】
超棒的前后端分离项目【b站:BV1zf4y1p7wC】
大数据全套完整版【b站:BV1aK4y197TP】
python小白入门到精通完整版【b站:BV1Sp4y1W77E】
将bv号,复制去b站即可
【此回答转自乐字节】
JAVA Web做后端,数据库方面要掌握到哪种>水平/h2>
数据库的话一般至少掌握关系型数据库MySQL以及非关系型mongodb,而这两者都需要能对数据库的设计以及优化有一定的基础,相关的增删减改都是必须掌握的基础与核心,以及索引视图等等,最后就是数据库的安全问题,一定做到权限最小化,还有程序中对数据库的调用问题,都需要了如指掌。
如何快速提高编程java方向
第一,学会学习。学习也是一种能力,在学习和工作中我们发现同样多的时间不同的人其学习效果是不一样的,甚至是学习用时短的人比时间长的人效果更高。这是因为这两种人的学习能力不一样,学习能力的养成需要长期的总结、积累和沉淀的。建议你和周边的程序员进行比较,如果存在学习效率低下的想象,那就赶紧学习他人的学习方法吧。
第二,将基础知识学牢。所谓“基础不牢,地动山摇”,因为所有复杂的程序都是由简单的程序构成,而构成这些简单程序的就是基础知识,所有出色的程序员都对基础知识掌握的非常牢固。因此,掌握牢固基础知识是成为一个JAVA程序员的必要条件之一。
第三,向出色程序员学习。所谓“近朱者赤,近墨者黑”,想要成为一个JAVA程序员,就要向行业内、公司内、部门内出色的程序员学习,查看他们编写的程序,通过查看程序学习他们的思维方式。除此之外,还要把握住一切机会向他们请教,了解他们程序开发前、中、后是如何思考和工作的,学习他们的技巧和方法,并在工作中进行实际操练,提升自己的程序开发能力。
第四,培养自己的结构化思维能力。一个JAVA程序员无论是在工作质量还是工作效率方面都是优于初级程序员的,他们的成功之处就是形成的结构化的思维能力,他们拿到开发任务之后并目视盲目的立刻去开发程序,而是首先了解程序的用途、目的、特殊需求、开发时间等,掌握这些信息后他们会对程序开发前、中、后的工作进行计划和安排。要养成结构化思维的模式,首先就要去模仿他们,先做到“形似”,以后才能做到“神似”。
第五,在解决问题中成长。在工作中不要怕遇到问题,也不要怕别人向自己请教。在出现问题后,无论是否是自己造成的都要积极参与解决,通过解决问题能够快速提升自己的编程能力;另外,面对别人的请教也要耐心给予讲解,在讲解的过程中你既能对知识进行巩固学习,又能锻炼自己的沟通能力。
作为一名从业多年的Java程序员,也出版过Java编程书籍,所以我来回答一下这个问题。
首先,要想在Java编程方面获得持续的突破,首先应该有一个主攻方向,同时要走研发级路线,在紧跟技术发展趋势的同时,完成编程能力的不断提升。
目前Java比较常见的应用领域包括Web开发、Android开发和大数据开发等领域,从目前的发展趋势来看,大数据方向是不错的选择。
大数据领域目前的开发岗位包括大数据平台开发(研发级)、大数据应用开发和大数据分析等,由于Hadoop平台自身就是采用Java语言开发的,所以Java在大数据领域的应用还是比较普遍的。
如果选择大数据方向,对于具有一定Java基础的程序员来说,可以先从大数据应用开发开始学起。大数据应用开发需要掌握三方面知识结构,其一是大数据平台知识;其二是Java开发知识;其三是算法知识。大数据的基础是分布式存储和分布式计算,所以在学习大数据开发的同时应该注重算法方面知识的积累,要想在大数据开发领域走得更远,通常需要一个扎实的数学基础。
大数据平台知识还是比较多的,以Hadoop平台为例,包括HBase、Hive、Pig、Avro、Chukwa、Mahout、Tez、Zookeeper等,另外还需要重点关注一下Spark,所以大数据平台的相关内容是比较多的。在具体学习大数据应用开发的过程中,并不建议完全采取自学的方式,因为这可能会需要大量的时间成本,建议一边使用一边学习。
最后,对于编程思想的培养,一方面要完成大量的实验和总结,另一方面也需要与有经验的程序员多做交流沟通,交流的过程也是学习的过程。
我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言!
如果你只是有基础方向的话,其实你还差的远,现在的java语言部分只是刚开始,后面要学的东西多着呢,怎么说基本要花3-5年的时间才能符合一些大公司选人的标准,一般java基础2个月,web开发数据库开发,需要2,3个月,后面需要三个月的项目练习时间,这也才是刚入门,随后你要化3个月深入面向对象和设计模式,要花一个多月去熟悉优化数据库的知识,然后花两个月熟悉多线程,文件操作,流和反射等高级语法内容,好了后面3个月的网络编程的学习必不可少,还要花一个月去学习linux,然后消息中间价,并行开发,读一到n个开源框架源码,微服务,云服务,容器,存储,大数据,负载均衡,安全基本知识和理念等等。
以上只不过是纯技术,还要了解如何写代码,组织代码,库文件组织,自动编译,打包,自动化部署,测试,上线等等知识,没方向那是不存在的,只能说你知识太少了,自己已经飘了。








