• 最近经常听到有人在问:学Java需要数学好吗?数学基础差就不能学Java吗?其实我想说想学Java的同学不必纠结于此。数学基础好固然能帮大家更快学好Java;但是数学基础差也不会太影响Java的学习。因此可以说学Java并...

    最近经常听到有人在问:学Java需要数学好吗?数学基础差就不能学Java吗?其实我想说想学Java的同学不必纠结于此。数学基础好固然能帮大家更快学好Java;但是数学基础差也不会太影响Java的学习。因此可以说学Java并没有对数学能力有什么要求。
    在这里插入图片描述

    为什么数学基础差也能学Java?

    一般大家认为数学基础对Java很重要,不外乎是因为,学Java逻辑思维很重要。但是数学好逻辑思维强,数学不好逻辑思维就一定差吗?这还真不能画上等号。因此数学基础与学不学得好Java没有必然的联系。

    但是离散数学是很有必要的。离散数学准确的说,在编程上都有用处的。包括一些逻辑关系(就是整天真真假假的那些东西),还有图啊之类的,换句话说,有点像数据结构。只不过很多东西,数据结构都是用代码的形式表现出来。你自己仔细看看数据结构和离散数学的目录发现都有一些共同点,这些共同点侧重点也都不一样。你要真想学Java的话,还是看看数据结构,离散数学有些东西在初、中级阶段用在编程当中不多。总体来说数学基础只能影响大家在初期的学习,并不能决定一个人学习Java的上限!

    学Java需要做哪些准备?

    首先,没有计算机基础的同学,就是没有学过计算机相关的课程,之前没有深入了解相关的概念,对对计算机一窍不通。这类完完全全零基础的同学,我建议你们先搞懂计算机,至少也要看几本计算机入门的书籍。比如《计算机应用基础》,这本书讲的是计算机的最基本操作。

    然后在这个过程中思考,自己能不能学得下计算机枯燥的理论知识,对编程语言有没有兴趣。至于学历什么的,根本不是问题。毕竟学历低只能证明大家或多或少比较偏科,没办法适合学校的全面素质教育。

    英语基础好不好也不太影响学Java,毕竟学Java需要的不是英语能力强,而是计算机英语好。这两者有什么区别呢?简单来讲,计算机英语就是要求大家,记住关于英语的编程专业词汇就行了,而不是用英语熟练地进行听读写。

    其实学Java除了需要做些计算机基础知识的了解,,数学基础差什么的,都可以通过努力弥补,要记住没有什么能决定你的上限,学Java最重要的是:自身的努力程度和适合自己的学习方法。

    展开全文
  • ”很多 0 基础学习或者转型IT行业的都会有这样的疑问,其实刚开始学JAVA编程是不需要太高深的数学和英语基础,所以大家要放心,同时JAVA800整理了这篇文章,希望能帮助到大家。 刚开始学习JAVA编程,并不需要高深的...
    “我英语和数学不好,是不是学不会编程?如果能学会,4个半月,够么?”很多 0 基础学习或者转型IT行业的都会有这样的疑问,其实刚开始学JAVA编程是不需要太高深的数学和英语基础,所以大家要放心,同时JAVA800整理了这篇文章,希望能帮助到大家。
    刚开始学习JAVA编程,并不需要高深的数学
    小编告诉您,初级阶段,就是刚开始学习JAVA编程,并不需要高深的数学,但逻辑要清楚。不需要太多英语,但了解些基本的单词对编程有好处,必要时也可以查外文文献。
    一个人不要随便地给自己贴标签,比如自己给自己贴上“数学和英语不好”这个标签,也许它符合你现在的情况,但并不等于你以后也是这种情况。
     
    其实,刚开始学习java编程,能用到的英文很有限,就算你没有英语基础,只要认识26个字母,在不断的练习和实践中,也完全可以熟练掌握编程用到的英文知识,所以初期学习编程是不需要太高的英语基础的。
    “兴趣是最好的老师”,对于IT行业尤其受用,想要学好编程,首先自己要对编程非常感兴趣,然后去努力,学会编程并不是难事,要循序渐进,坚持代码联系。
    总结的几点学习JAVA编程的建议:
    1、从小程序入手。学习可以从编写一些具体的小的真正有点用程序入手,需要用到数据结构与算法时,顺带着就学了,感兴趣的再深入系统地学一下。除非你在一些特定的有特殊要求的领域写程序,否则,大多数情况下用不上很高深的数学。
    2、去学习英语,你要把它真当成一种语言去用,用它去与别人交流,去吸收新知,建议你在有一定基础后,直接看一些英文版的教材和视频,开始会比较难,慢,但坚持下来,好处很多的,你既能学到了知识,又能提高英语水平。
    3、要多尝试,多动手。不能一味地停留在知识点掌握的程度上,因为知识点是死的,然而可以通过这些知识点的串联可以解决很多活的问题。踏实学习,多动脑多探索,多练代码慢慢就会有一个不错的水平!显著的强心作用。
    另外,既然知道咱们的缺陷在哪,就应该每天去学习数学和英语,慢慢增进,与实际工作相结合。工作几年之后,你就肯定能脱颖而出,不偷懒就已经让你慢慢地超过许多人了。
    展开全文
  • 基于系统应用学习Java知识背景思考结论系统应用技术框架组成 背景 最近身边有好友入门学习java,但又苦于java知识库的浩瀚对学习java感到迷茫。这点对我一个数学专业的学生自学java感同身受。在此之前我有零散地...

    背景

    最近身边有好友入门学习java,但又苦于java知识库的浩瀚对学习java感到迷茫。这点对我一个数学专业的学生自学java感同身受。在此之前我有零散地指导他们学习什么知识什么知识。但我发现经过一段时间我发现他们的学习效果并没有理想,依然很迷茫,不敢踏出到外面面试的脚步。经过与他们沟通,我发现他们有努力在学习,我要求他们学习的知识框架他们也在学习。我陷入了思考,发现他们的最大的自信不足是他们觉得他们现在还是什么都不会做,虽然我觉得他们可以了。

    思考结论

    为什么他们不敢出去面试?为什么他们觉得自己什么都不懂?就算我在努力的肯定了他们但他们还是不自信。经过几天的反思,我觉得我叫他们学习的知识过于零散,并且没有把这些知识在目前行业内如何联系起来用于实际的生产中。所以就会造成他们对外面世界的恐慌,对将来参加到开发中的恐慌。基于此反思,我整理了行业内目前系统的普遍玩法,并且这些知识如何在系统中发挥他的作用,这样会让入门者更加清晰有目标地学习对应的知识,并且增强自己对未来工作自信。

    系统应用技术框架组成

    工作至今,我参加公司的自研中台系统建设:用户中心、帐务征信调帐平台、帐务中心。自研系统是对标行业先进,起码要满足公司未来五年甚至十年发展,所以相对来说技术框架还是比较新,也是比较符合现状的。通过参与开发的系统和学习抽取这些系统用到的知识和这些知识在系统中发挥的作用,以供大家参考。
    应用系统组成的思维导图
    图片说明:图片标的序号是以一个请求进到系统经过各个主键标的。下面我们就对各个序号在系统中承担的角色粗略说明一下:

    ①请求的方式:请求的方式有两种: 同步请求 和 异步请求。同步请求就是我们平时的http请求,Rpc框架调用。异步请求目前行业主要是基于消息队列来做异步请求。关于http请求要学习的目前最火的是SpringMvc,Rpc框架目前比较流行的是阿里的Dubbo,Spring生态的Spring Cloud。关于异步的消息队列,目前有很多种,各有各的应用场景,例如我司利用的是Kafka做消息队列,个人也更加喜欢kafka。关于异步请求和同步请求再多说一下就是个人建议系统之间的交互如果能用异步就异步,异步相对于同步的优点有:一、限流,根据自己的处理能力来消费请求 。二、数据柔一致性更容易实现。缺点就是延迟。

    ②分布式锁。现在,未来应用一般都是微服务、分布式。在分布式的前提背景下,当一个请求过来,对于需要加锁的接口我们都应该考虑分布式锁,虽然有些人基于乐观锁来控制,但个人觉得不可采取。因为基于未来应用的发展的瓶颈很大可能是会出现在数据库(虽然公司有搭数据库集群,但还是存在很多问题,就是目前两台数据库都支持读写,后面数据库的同步并没有完美的解决方法,所以架构组这边是打算增加用户路由,通过部署单元解决数据库的瓶颈问题(还在规划中))。扯远了,回到我们的分布式锁。目前实现分布式大多是基于zookeeper实现,同时zookeeper也支持分布式锁,但也许大家没有注意到Redis社区其实也分布式锁的解决方案Redisson,应用挺简单的。这里说一下这两者的区别,在做用户中心的时候对他们两个记忆犹新。一开始用户中心基于zookeeper做分布式锁,后面压测无法达标,要求1000QPS。不管我们通过这样的业务流程,代码优化都是无法达标,最好就达到300QPS。后面我们采用Redisson,顺利达标哈哈哈哈。这里也许有一个客观原因就是我们的测试环境的zookeeper太多应用在使用,什么duboo,elasticJod调度等等因素在里面。这些我们不说,我们只说这两者的区别的根本原因:zookeeper读写比较重,所以在压测的时候读写频繁所以响应很差,Redission是基于内存数据库,读写是很快的,所以响应也比较快。

    ③ Spring Security 一般配合Oauth做请求级别或者接口级别的身份确定和授权,是一种基于Spring Aop 和 Servlet过滤器的框架,提供全面的安全性解决方案。在应用中主要用来限制接口需要具备什么样权限的用户才可以访问,防止信息泄漏和系统安全漏洞。

    ④SpringBoot这里就不做过多的介绍,就是Spring容器的增加版。

    ⑤Redis目前是很多公司使用的内存数据库,它主要的应用场景是缓存一些经常被查询和很少改动的数据。主要是用于缓解数据库的压力和快速响应请求(内存处理比较快)。还有一些会把redis用作自增序列的作用,其实我是不提倡自增序列依赖于redis来产生,因为虽然redis提供高可用的解决方案哨兵模式和分布式的集群模式,但在实际生产中还是有可能出现故障的。因为不是每个系统都是按规则来办事,有些系统用redis来存大对象,很容易就搞挂redis,这样就得提供降级方案来维护系统的运行,而自增的降级不好做,你想一下如果我存的是数据,redis挂掉,我的降级方案就是直接去数据库获取该对象。那如果是自增怎么办?起码你得先查一下上一个值才能做自增吧。所以还是提倡自增不要依赖redis,可以在数据库中搞一个函数,依赖数据库来生成。(如果你的数据都挂掉,我相信你的应用应该也就不能再提供服务了)。还有使用redis的时候要知道redis存在一个序列化和反序列化的过程,这个也是很耗性能的,必要的场景可以考虑用本地缓存来代替redis缓存,降低性能损耗。

    ⑥mybatis没什么好说,就是数据持久层框架,网上有很多的教程。

    ⑦oracle数据库,现在很多公司使用的是免费的mysql数据库。

    总结

    在我画了这个脑图发给我朋友后,他们第一时间直接陷入了绝望,叹息自己好几个点都没接触过,现在连入门的皮毛都不具备,自己就懂一点springMVC、spring、mybatis、mysql…反正就是一大堆绝望了,直接就打算从入门到换行。我花了好长一段时间才安稳他们的情绪哈哈哈哈。
    如果是这种效果那就是与我的初衷直接违背了,我整理这个东西的初衷是让他们清楚现在行业内系统一般怎样构建,我们学习路线该怎样走,先明白路线,然后知道各个组件是做什么,然后才逐一去攻破,继续深造自己的技术。而现在的入门,许多小型创业公司还是停留在面试造飞机,实际工作是扭螺丝的解段。就是一些简单的增删改查的功能。这些功能就是只需要springMVC、spring、mybatis、mysql就足够了。哈哈哈所以入行也许springMVC、spring、mybatis、mysql就够了,如果想走远还是得花功夫学习的。
    在实际项目中的细节也远远不止这些,像用当当网的elasticJob来做分布式调度,基于搜索引擎,规则引擎来填充各个功能块。所以大家都是在路上,都是苦行僧。当你慢慢接触后你就发现其实还有很多东西有待你去开发,加油吧骚年。就到这里了哈,已经好久没写博客了,这篇博客是在公司996攻坚战两个月抽的时间完成的,有什么问题大家尽情提出来,大家一起学习

    展开全文
  • 这个java数学要达到在什么水准?

    学这个java数学要达到在什么水准?

    展开全文
  • 这篇文章中我会深入探讨编程中所需要的数学知识。你可能已经都知道了。  对于基本的编程,你需要知道下面的:  ● 加减乘除 — 实际上,电脑会帮你作加减乘除运算。你仅需要知道什么时候运用它们。  ● 模...
    数学和编程有一种容易让人误解的联系。许多人认为在开始学习编程之前必须对数学很在行或者数学分数很高。但一个人为了编程的话,需要学习多少数学呢?
    

      实际上不需要很多。这篇文章中我会深入探讨编程中所需要的数学知识。你可能已经都知道了。

      对于基本的编程,你需要知道下面的:

      ● 加减乘除 — 实际上,电脑会帮你作加减乘除运算。你仅需要知道什么时候运用它们。

      ● 模运算 — 模运算是用来计算余数,它的符号通常用%百分号来表示。所以23除以7等于3,余数是2。23 mod 7 = 2。

      ● 判断是奇数还是偶数的模运算 — 如果你想知道一个数是奇数还是偶数,用它mod 2来作模运算。如果结果是0,它就是偶数。如果结果是1,就是奇数。23 mod 2等于1,所以23是奇数,24 mod 2等于0,24是偶数。

      ● 对一个数作百分数运算,就是用这个数来乘以一个百分数。譬如你要得到279的54%,就是用0。54*279。这就意味着为什么1.0等于100%,0.0等于0%。

      ● 知道负数是什么。负数乘以负数等于正数。负数乘以正数等于负数。就这么简单。

      ● 知道卡迪尔坐标系统。在编程中,(0,0)代表屏幕左上角,Y坐标的正轴往下。

      ● 知道勾股定律,因为它是用来计算笛卡尔坐标中两点之间的距离的。勾股定律a^2 + b^2 = c^2。(x1, y1)和(x2, y2)两点之间的距离等于( (x1 – x2)^2 + (y1 – y2)^2 )。

      ● 知道十进制、二进制、十六进制。十进制就是我们通常用的十个数:0-9。通常认为这个十进制系统是人类发明的,因为我们有十个手指。

      电脑采用二进制数据,只有两个数字:0和1。这是因为我们用电子元件来构建的电脑,让电脑只识别两种状态更便宜些(一种代表0,另一种代表1)。

      数是一样的,但是在不同的进制系统里的表现形式不同,因为不同进制包含的数的个数不同。十六进制比十进制多六个数字,所以我们用A-F表示超过9的数。能够表现这些进制系统的最简单方法就是用一个计数器(odometer)。下面三种不同的计数器显示的是同一个数,但在不同的进制系统中的形式不同:

      (提示一下,十六进制的使用是因为一个十六进制的数可以表示四个二进制的数。因为十六进制中的3和二进制中的0011对应,十六进制的A和二进制的1010对应,所以十六进制中的3A(十进制的58)可以写成二进制的00111010。十六进制在编程中的使用是因为它是对二进制的简化。没人喜欢写出的数全是0和1。)

      就是这么多了。除了进制系统以外,你可以已经知道编程所需的数学知识了。虽然普遍认为编程需要学习许多数学,但实际上并不需要那么多。你可能为了编写一个程序,譬如说地震模拟器,而需要学习数学。其实你更需要学习地震的数学,而不是因为要编写地震模拟器而学习数学。

      某些编程领域中更为高级的数学

      有一些领域中需要更多的数学知识(但95%的软件中,你都不需要知道它们。)

      ● 3D游戏和3D绘图 — 3D通常需要涉及三角函数和线性代数(用矩阵来解决问题的数学)。当然,有许多3D图形库已经实现了这些数学编程,你不需要知道这些数学。

      ● 2D物理(譬如愤怒的小鸟)和3D物理(譬如许多流行的3D游戏) — 为了写涉及到物理的编程,你需要学习一些物理方程和公式(尤其是力学,如弹力,重力,球滚下斜坡等物理)然而,已经有一些物理引擎和软件库帮你实现了,所以你也不需要知道游戏(如愤怒的小鸟)中的物理公式。

      ● 加密学 — 事实上我指的是RSA。你需要知道质数的有关知识,以及如何求最大公约数(其实是个非常简单的算法,还有许多编程语言中都有gcd()函数,帮你求解最大公约数)其他的编码大部分就是将数据按照某种步骤挪动。

      如果你要写你自己的加密算法(通常不需要你做,因为已经有许多很好的工具了,并且如果你不是加密学的专家的话,你的程序也许会很容易被破解)如果你仅仅想加密一些数据的话,已经有许多加密和解密的软件库了。

      所以就算是以上的情况,你也不需要真正的知道3D图像,物理或者加密的数学。你只需要学习运用软件库就行了。

      编程需要学习什么?

      你需要学习的是如何建模和设计算法。这意味着,如何将真实世界的运算或者数据处理抽象出来,写出代码,让计算机来帮你运算。
    展开全文
  • 学习Java之前,不必学习其他任何编程语言,当然有一点c++语言的基础,会更好上手Java,如果没有过c++,学习Java之前,最好不要看c++有关的东西,尤其是面向对象编程的部分,因为Java面向对象编程的概念,是最...
  • 各位“仙友”好,好久不见。在这之前,我写了一篇序言,描述了我自己的学习数据结构和算法的大致流程。最近呢,也在整理自己大学时候过的一些... 我在这里分4个方面来简单说明一下哪些数学知识在我看来必须要掌握...
  • Java应用范围广泛,长时间...我们都知道,学习编程语言需要懂英语、数学能力强,学习Java也不例外。当然这个英语好,不是要求大家要具备英语听说读写的能力,甚至连语法不好都可以,只要大家能够看懂一些专业的...
  • Java数学公式应用

    2019-10-10 17:20:26
    首先,大家可以把这首轻快的民谣歌曲点开,对大家吸收知识更有帮助~~~ 今天跟大家讲一下,在Java里 怎么调用数学公式,首先我们通过一个例子来看,代码如下:imp...
  • 相信有很多学习java的道友,在这里我给大家说说我的群哦,分享一套系统的java教程哦,872603705,绝对的 java干货,首先你是学习java的,不管是大神还是小白,我们一同从入门到精通吧! 本文作者:【java进阶...
  • java详细路线: 原文出自点击打开链接 本文将告诉你学习Java需要达到的30个目标,学习过程中可能遇到的问题,及学习路线。希望能够对你的学习有所帮助。对比一下自己,你已经掌握了这30条中的多少条了呢? ...
  • 1、Java中的程序代码可以分为结构定义语句和功能执行语句。 2、Java程序中一句连续的字符串不能分开在两行书写。如果为了方便阅读,想将一个太长的字符串分在两行书写,可以先将这个字符串分为两个字符串,然后...
  • 1.Core Java,就是Java基础、JDK的类库,很多童鞋都会说,JDK我懂,但是懂还不足够,知其然还要知其所以然,JDK的源代码写的非常好,要经常查看,对使用频繁的类,比如String,集合类(List,Map,Set)等数据结构要...
  • 文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的...
  • JAVA为什么有前途?      过去的十多年,JAVA基本每年都是全世界使用人数第一的语言。全世界数百万的IT企业构建了庞大的JAVA生态圈,大量的软件基于JAVA开发。 JAVA也被誉为“计算机界的英语”。 JAVA的应用...
  • 因此,学习数学有助于巩固编程的基础,写出更健壮的程序。 以下是数学算法好的程序员VS数学算法不好的程序员: 数学/算法好的程序员 ↓↓↓ 数学/算法不好的程序员 ↓↓↓ 看了这么2张可爱的动图,大家也都明白数学...
  • 浅谈java中的数学运算

    2016-10-27 18:22:51
    在实际的java项目中,不可避免地使用到各种运算,比如生成各种报表,数据的汇总等。对于这些问题,大致有2种解决途径,一种是在数据库查询时进行相关运算,直接得到所需要汇总计算后的结果;另外一种,是根据查询到...
  • JAVA学习需要什么基础

    2019-01-21 16:10:34
    JAVA学习需要什么基础
  • 这几天,近百名初学java粉丝咨询我如何自学java,因精力有限不能一一回复,现系统整理一套java初学者最佳的学习方法、误区、路线、大纲及资料,希望对你有所帮助。学习资料关注后私信“基础”即可。做一个最有态度的...
  • 采用java代码实现数学表达式,运算符包含括号(),加+,减-,乘*,除/,以及MAX(),MIN(),例如1+2MAX(3+5,2+45)-3+MIN(4*5,6+7/1),代码如下:@TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown...
1 2 3 4 5 ... 20
收藏数 43,342
精华内容 17,336