精华内容
下载资源
问答
  • java7源码-android:安卓

    2021-06-04 16:28:02
    小王子是针对Android手机研发的一套自动化测试工具,可对用户的点击操作进行录制并回放,同时,还可对手机进行基于Monkey原理的压力测试,针对某一款app进行控件遍历测试,埋点统计,接口测试等,此外,还可以对手机...
  • world 文档,描述了Android g1环境,C、Java、JNI调用(C调JavaJava调C)基本运算、方法调用、字符串连接的效率测试结果。
  • 能够掌握一定的项目开发能力,掌握应用Android进行手机APP开发的技能,在本项目的设计过程中综合考虑易用性、成本、效率、性能等目标来指导项目设计和实施。 二、*需求分析* 本次实训选择的项目是开发一个贪吃蛇手机...
  • 适用于JavaAndroid的快速,低内存占用的汉字转拼音库。 当前稳定版本:2.0.3 特性 生成的拼音不包含声调,纳入大写; 支持自定义词典,支持简体中文,繁体中文; 执行效率很高(Pinyin4J的4〜16倍); 很低的内存...
  • Java线程池有一定了解的同学都知道,FixThreadPool是Java为我们内置的四种线程池种的一中。 它只配置了核心线程数,数量由开发者指定。如果线程池内的核心线程数,达到了核心线程数量,我们的任务就会被放在一个...

    引言:

    众所周知的,线程是操作系统能够调度的最小单位。为什么需要多线程呢?因为我们的CPU的运算速度是非常的快的,在一个应用程序的运行过程中的大部分时间,都花在了,I/O操作,网络请求,和数据库操作上。如果没有多线程,我们的CPU大部分时间都是处于等待的状态,对CPU的资源造成了极大的浪费。多线程就是多个线程去共享CPU的时间片。一个CPU在一个固定的时间点,一个CPU只会处理一条线程中的指令。提高了CPU的利用率,注意并不是提高了CPU的执行速度。

    那如果我们有100个任务,开启100个线程去执行100个任务,就比我们开启一个线程
    去执行100个任务快嘛?

    答案是否定的,因为频繁的创建和销毁线程,会耗费一定的CPU资源的。而且CPU在执行线程中的指令时,涉及到了线程的上下文切换,这也是一定的开销的。CPU在固定时间执行了一个线程中的指令后,会切换到下一个任务。但是在切换前,会保存当前任务的执行状态,以便下次切换会这个任务时可以加载这个任务的状态。程序计数器,就是起到了这个作用。

    今天我们就主要来聊一聊这个问题。我们通过实例来验证这个说法。

    我们通过创建一个FixThreadPool并指定它的核心线程数来执行我们的任务。对Java线程池有一定了解的同学都知道,FixThreadPool是Java为我们内置的四种线程池种的一中。
    它只配置了核心线程数,数量由开发者指定。如果线程池内的核心线程数,达到了核心线程数量,我们的任务就会被放在一个阻塞队列BlockingQueue中,等待空闲的线程去取出队列中的任务并执行。
    下面我们上代码:

       //创建一个原子类,记录当前任务的完成数量。
        AtomicInteger atomicInteger = new AtomicInteger(0);
        //创建核心线程数量为10的FixThreadPool
        ExecutorService mFixThreadPool = Executors.newFixedThreadPool(20);
        //记录任务的开始时间
        private long start = 0;
        //记录任务的结束时间
        private long end = 0;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //记录任务开始时间
            start = System.currentTimeMillis();
            //向线程池中提交20个任务,并执行
            for(int i = 0 ; i < 20;i++){
                Runnable runnable = new MyRunnable(i,AsyncActivity.this);
                mFixThreadPool.submit(runnable);
            }
        }
    
      
      private static class  MyRunnable implements Runnable{
    
            private final WeakReference<AsyncActivity> mActivity;
            private int i = 0;
    
            MyRunnable(int i, AsyncActivity mActivity) {
                this.i = i;
                this.mActivity = new WeakReference<AsyncActivity>(mActivity);
            }
    
            @Override
            public void run() {
               while (i<100000){
                   i++;
               }
               int g = mActivity.get().atomicInteger.addAndGet(1);
               if(g == 10){
                   mActivity.get().end = System.currentTimeMillis();
                   Log.v("AsyncActivity",mActivity.get().end - mActivity.get().start+"ms");
               }
            }
        }
        
    

    在上述代码中我们向线程池中添加20个任务并执行,执行我们的应用程序控制台打印如下:20个任务执行完毕一共运行了52ms,有时甚至更久。
    在这里插入图片描述
    下面我们把线程的数量改成1,重新运行我们的应用程序,看下控制台输出,20个任务执行完毕,竟然只运行了13ms,比我们多线程的执行效率竟然更高。
    在这里插入图片描述

    下面我们修改我们的代码把Runnable中的循环变成1亿次。在对比两种实现的执行速度:
    1.指定核心线程数为20时:
    在这里插入图片描述
    2.指定核心线程数为1时:
    在这里插入图片描述
    可以看到,20个线程并发执行的效率就比我们1个线程执行的效率要高的多。

    对比一下,我们可以得出结论,当一个任务并不是真正的耗时操作时。单线程执行它的效率远比开启多个线程执行它的效率要高的多。因为在创建多个线程时,创建线程的开销,和执行过程的线程上下切换的开销,远比执行这个任务的开销要多的多。当一个任务是真正得耗时任务时,我们有必要去合理得创建线程去执行它,来提高CPU的使用率。

    所以在我们的日常开发中,要平衡创建线程和执行任务的开销,如果这个任务不值得我们为它开启一个线程去执行,那么就不要去创建线程。推荐使用线程池,而不要使用new Thread()的方式,因为如果存在大量的耗时的任务的时候,Thread的频繁创建和销毁,也是有一定的开销的,线程池可以为我们带来线程的复用。

    展开全文
  • java安卓辅助源码 android-lettuce Integrating lettuce, uiautomator jsonrpm wrapper to provide the Behavior-Driven Test in Chinese 目的 整合uiautomator python wrapper和lettuce, 放在ubuntu环境中得到更好...
  • 在C语言中调用java语言的方法!对初学者很不错的实例!Android jni开发之C语言调用java语言
  • javaAndroid学习书籍

    千次阅读 2017-10-24 09:12:00
    java书籍推荐: 入门 《Head First Java, 2nd Edition(中文版)》 这本书不仅内容丰富、有趣且通俗易懂,并且涵盖了所有 Java 相关的基础知识。如果你是 Java 初学者,这本书正适合你。 《Java 核心技术(卷1、...

    java书籍推荐:






    入门
    • 《Head First Java, 2nd Edition(中文版)》
      这本书不仅内容丰富、有趣且通俗易懂,并且涵盖了所有 Java 相关的基础知识。如果你是 Java 初学者,这本书正适合你。

    • 《Java 核心技术(卷1、2)》
      写作风格相比 Head First 趣味性来说更显传统,所涵盖的内容包括 Java 基础知识及高级应用,是对于入门来说的另一种选择。

    进阶 高级 J2EE


    1.看看headfirst Java和thinking in Java,掌握基础语言知识以及面向对象部分,
    继承、接口,封 装、多态、抽象类,要在脑子里形成面向对象编程的概念。
    2.掌握了基础之后,再往深入一点研究Java的高级知识,比如注解、NIO、并发、
    线程池、同步容器和并发容器、阻塞和非阻塞、反射、以及设计模式的一些东西。
    
    3.学习使用jdbC来连接数据库,掌握基本的SQL语句,插入、查询、结果集resultSet,
    再深入一点就是事务管理,看书的时候一定要思考为什么设计成这样,以及这样有什么缺陷。
    
    4.学习各种Java的框架,比如比较流行的Spring,Struts,以及对象关系映射hibernate,
    学会配置这些,最后能够把它们整合到一起,可以参考***In Action这些书籍。


    作者:EZLippi
    链接:https://www.zhihu.com/question/19848946/answer/31633280
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


    Head First Java

    "head first java"

    Head First Java是所有编程或者Java初学者最适合的书籍,我很喜欢轻松和寓教于乐的Head First风格,这应该是最有意思的关于Java的书。无论是初级,中级还是高级都能从中有所收获。学习本书,你可以了解到类,对象,线程,集合等编程知识,还可以了解到泛型,枚举,可变参数和自动装箱等语言特性。本书中还涉及到了Java高级编程中的Swing,网络编程,IO操作等,可以让初学者对Java有比较完整地概念。如果你是一位Java初学者,不要犹豫,这本书最适合你了。
    查看详细: Head First Java

    Head First 设计模式

    "head first design pattern"Head First设计模式又是一部Head First系列的书籍。作者为Kathy Sierra及其团队。当我在2006年开始读这本书的时候,我对设计模式并不是很了解。设计模式解决什么问题,怎么解决问题,如何使用设计模式,设计模式有什么好处,这些问题我几乎都无法回答出来。但是当我读完这本书的时候,一切都豁然开朗。在本书介绍继承和组合一章,使用简单有趣的例子,一步一步提出问题并解决问题,最终得出最优解。本书中会有很多要点总结,幽默对话,练习题还有有名的单词接龙等帮助你更好地了解设计模式。如果你想了解Java中的设计模式,请带走这本书。
    查看详细:Head First 设计模式

    Effective Java

    "Effective Java"Effective Java这本书也是一本我最喜欢的。本书为领导开发Java集合框架和并发API包的 约书亚·布洛克 大神所著。本书适合于有着数年开发经验Java程序员,通过本书我们可以很多编程中的最佳实践,并且可以从JDK贡献者布洛克大神这里汲取经验。Effective Java从质量,内容和问题解答方式上来说都是一本评价很高的书,因此读这本书会是一种感觉很棒的体验。另外本书的章节相对比较轻量,与其他章节耦合度较低,因此在旅行或者闲暇时间阅读也是可以的。在内容方面,Effective Java包含了从静态工厂,序列化,equals和hashcode到泛型,枚举,可变参数以及反射的最佳解决方法。本书对Java各方面知识点的讲解会让你受益匪浅。
    查看详细:Effective Java

    Java并发编程实战

    "Java并发编程实战"又一部 约书亚·布洛克 大神的经典之作,当然本书的另一位主作者为 Doug Lea(影响两次Java历史上的大变革的大神)。这本书几乎就是Java并发和多线程编程方面的权威,同时也是核心Java开发人员必读的一本书。本书的强大主要表现在

    • 本书非常详细地描述了多线程和并发中的诸多(小)细节。
    • 本书并非聚焦于核心Java代码的实现,而是关注并发引起的问题,比如死锁,饥饿,线程安全,竞争条件,然后提供可行的方法来解决这些问题。因此这本书可以很好地帮助开发者了解并掌握并发包以及其中的CountDownLatch,CyclicBarrier,BlockingQueue,Semaphore这些类。这也是我一遍一遍阅读这本书的原因。
    • 书中的例子简明扼要清晰,很能描述问题。
    • 解释明确:本书很好地解释了什么是错的,为什么错,怎样改正。这也是本书畅销的原因之一。

    查看详细:Java并发编程实战

    Java Generics and Collections

    "Java Generics and Collections"这本书是来自O’Reilly的一本成功之作,作者为Naftalin和Philip Wadler。正如书名可知,这本书的内容关注于泛型和集合这两个Java语言的核心方面。本书对于那些有编程经验的程序员加强对集合和泛型的理解和掌握有很大的帮助。本书详细介绍了每一个集合的API,Set, List, Map, Queue,以及他们的实现,对比不同场景下它们的性能优劣。每个章节最后的对比图表很不错。
    查看详细:Java Generics and Collections

    Java性能优化权威指南

    "Java性能优化权威指南"本书为我个人的最爱,本书重点关注性能监视,性能剖析以及如何使用工具对性能分析。本书不同于其他的编程书籍,因为本书中涉及到很多Java虚拟机的细节,垃圾回收机制,Java堆内存监视以及对程序性能剖析。其中讲述JVM的章节写的很不错,很值得咀嚼。注意,这本书属于编程高级层次,阅读需要具有足够的Java编程经验。初级和中级Java开发者也可以阅读本书也会学到不同程度的干货。所以,你想进行性能调优,把这本书放到你的书架上吧。
    查看详细:Java性能优化权威指南

    Java Puzzlers

    "Java Puzzlers"再介绍一本 约书亚·布洛克 大神写的书。本书的另一位作者为Neal Gafter(已转到微软做Donet Compiler技术Lead)。本书讲述了Java语言中的极端情况和陷阱。相对于C++,Java更加安全低风险,JVM有着垃圾回收机制,让Java程序员不用关心内存分配和释放,大大提高了程序的开发效率。但是有些时候,即便是经验丰富的程序员也会被Java中的极端情况或陷阱给绊倒。本书列举并详细描述了Java中的这些陷阱。如果你喜欢刨根问底,钻牛角尖,这本书就是为你而写。通过本书,你可以了解很多java的核心知识并对自己的Java水平有所知晓。本人更加喜欢上面提到的 约书亚·布洛克 的 Effective Java 和 Concurrency Practice in Java。但是如果你感兴趣,还是可以去尝试的。为了让收获最大化,你可以先尝试解决书中的问题,然后对着书中的解释进行比较。
    查看详细:Java Puzzlers

    Head First Object Oriented Analysis and Design

    "Head First Object Oriented Analysis and Design"这是一本属于Head First系列的关于面向对象编程的书。本书建议和Head First设计模式结合阅读,效果更佳。本书关注于面向对象设计原则,比如多用组合少用继承,针对接口编程而非针对实现编程,不要重复你自己等。这本书可以帮助你写出好代码并且参考最佳实践进行优化改善。当然本书中的内容也适合使用其他面向对象的语言的程序员。想学好面向对象编码和设计规则,现在就开始读这本书哈。
    查看详细:Head First Object Oriented Analysis and Design

    Thinking in Java

    "Thinking in Java"Thinking in Java book应该是Java中文界最有名的书籍了,中文又名 Java编程思想。作者为Bruce Eckel,他也是Thinking in C++的作者,他用自己很独特的观点讲述了Java。据我所知,这本书获得了很高的认可,本书是一本介绍齐全的Java学习参考书。如果你不喜欢Head First类似小人书那样的讲解,可以尝试这本书。本书的内容讲解详细,成熟(相对Head First有种教科书的感觉)。
    查看详细:Thinking in Java

    Java程序员修炼之道

    "Java程序员修炼之道"《Java程序员修炼之道》分为四部分,第一部分全面介绍Java 7的新特性,第二部分探讨Java关键编程知识和技术,第三部分讨论JVM上的新语言和多语言编程,第四部分将平台和多语言编程知识付诸实践。从介绍Java 7的新特性入手,《Java程序员修炼之道》涵盖了Java开发中最重要的技术,比如依赖注入、测试驱动的开发和持续集成,探索了JVM上的非Java语言,并详细讲解了多语言项目, 特别是涉及Groovy、Scala和Clojure语言的项目。此外,书中含有大量代码示例,帮助读者从实践中理解Java语言和平台。《Java程序员修炼之道》适合Java开发人员以及对Java7和JVM新语言感兴趣的各领域人士阅读。 查看详细:Java程序员修炼之道

    Java核心技术

    "Java核心技术"Java领域最有影响力和价值的著作之一,拥有20多年教学与研究经验的资深Java技术专家撰写(获Jolt大奖),与《Java编程思想》齐名,10余年全球畅销不衰,广受好评。)根据Java SE 7全面更新,系统全面讲解Java语言的核心概念、语法、重要特性和开发方法,包含大量案例,实践性强。

    查看详细:Java核心技术

    这就是我的关于Java编程相关的推荐的书,这些都可以说是看成经典中的经典。像Effective Java 和 Head First 系列我已经反复阅读了很多遍。相信看完本文,根据自己的水平和想要提升的知识侧重,你应该能选出最适合自己的书了。



    ①有一点C语言基础(初级的知道指针、数组链表、局部变量、全局变量、动态内存分配,堆栈)
    ②知道C++主要是面向对象,类,封装,继承,多态什么的,但很初级的了解
    ③现在想好好学JAVA,从什么书看起?(比如书1->书2),该如何学习?
    ④需要理解 计算机系统 的知识吗?有什么好的书推荐?
    ⑤希望对这方面了解比较深的人给予我关键的指导,看什么书籍、学习的方法,最好有一定的分析说明,真诚的感谢


    作者:谢龙
    链接:https://www.zhihu.com/question/29581524/answer/44872235
    来源:知乎
    著作权归作者所有,转载请联系作者获得授权。

    现在互联网上资源丰富,Java 学习并不难。贴个 Java 服务端入门和进阶指南,是给我们组新人入门用的,包括了学习目标、需要掌握的技能和参考资料,并规划了学习阶段和时间,希望帮助到题主。
    前言

    欢迎加入我们。这是一份针对实习生/毕业生的服务端开发入门与进阶指南。遇到问题及时问你的 mentor 或者直接问我。 建议:

    • 尽量用 google 查找技术资料。
    • 有问题在 stackoverflow 找找,大部分都已经有人回答。
    • 多看官方的技术文档。
    • ibm developerworkers 的文章质量整体上有保障。
    • 平时花一些时间在 github 上阅读优秀项目源码。
    入门(1-2 个月)
    1. 目标:参与简单的项目开发。
    2. 技能:
      • 掌握 Java。经典的《Java 核心技术:卷1 基础知识》(或者《Java 编程思想》)必看,跳过其中的图形和 applet 章节。习惯查阅 Java API Doc。为了保证代码的质量,《Effective Java》、《Clean Code》和《重构》也需要至少通读一遍。
      • 熟悉 Linux 开发环境和 bash shell。Linux 是我们的开发和部署环境,你最好尽快熟练它。Linux 的基本使用可以通过《鸟哥的Linux私房菜:基础学习篇(第三版)》学习,开发 bash shell 脚本可以参考《Linux Shell脚本攻略》。
      • 掌握开发工具
        • 熟练使用一种 IDE。Intellij IDEA或者 Eclipse 都可以,推荐使用前者。至少熟悉常用的快捷键,会 debug(包括远程 debug)项目。
        • 熟悉一种编辑器。比如 Vim/Emacs/Sublime Text,至少学会搜索/替换/代码补全。
      • 掌握 JDK 以外的常用类库和工具包。JDK 原生 API 在很多场景下使用并不方便。你需要掌握社区贡献的优秀类库和工具包,比如 apache commons、google guava 等,具体可以翻阅 服务端技术选型 的Utility 篇。
      • 掌握 Web 开发框架。我们使用 Spring(或Rose) + Ibatis(或Jade) 开发 web 服务,你需要熟练掌握它们。
      • 学习代码规范。我们大致上遵循 oracle 的 Java 语言编码规范,你可以先阅读并熟悉它。Code Formatting 文件在 git@xxx/coding-standard.git,在编写代码之前,请把它导入到 IDE 中。另外,确认 IDE 已经安装 Findbugs 和 CheckStyle 插件。
      • 熟悉开发流程。我们的开发流程大致如下:功能开发->单元测试->功能测试->Code Review->集成测试->发布。确保你熟悉其中的每个环节。
      • 其他。需要熟练使用版本控制工具 Git(阅读:《Git 权威指南》),以及项目构建工具 Maven(阅读:《Maven 实战》)。另外,在这个阶段可以尝试 TDD 开发。
    进阶(2-6 个月)
    • 目标:独立负责某个服务端项目。
    • 技能:
      • 掌握 web 开发最佳实践,掌握 Restful API 设计,理解 Spring 原理。推荐阅读《Spring揭秘》。掌握项目分层、子模块划分。推荐阅读:《J2EE 核心模式》。
      • 掌握 web 架构设计。包括 Http 反向代理,数据缓存,负载均衡,水平扩展和垂直扩展。推荐阅读:《分布式 Java 应用:基础与实践》。
      • 掌握关系型数据库。包括设计 MySQL 表结构,根据业务特点分表分库,基于执行计划的 SQL 分析优化,以及数据库容量规划。推荐阅读:《MySQL 必知必会》、《高性能 MySQL》。
      • 了解 NoSQL。我们大规模使用 Hadoop、HBase、Hive,同时部分项目使用 Redis、Storm。你需要学会这些工具最基本的使用。
      • 学习 web 安全知识。了解 web 前端安全问题。设计安全 web 服务,包括加解密、防伪造、防重放攻击等。
      • 掌握 Http (推荐阅读:《图解Http》、《http权威指南》)、Thrift 等协议。
      • 掌握服务容量规划,性能调优,可靠性保证,以及故障处理。学习容量规划和性能调优知识,梳理业务监控点,熟练使用我们的监控报警系统。推荐阅读:《深入理解 Java 虚拟机》。
      • 其他。设计模式:从项目中学习,有时间可以看看《深入浅出设计模式》、《JDK 里的设计模式》。学习Java Socket 编程与多线程知识,可以看看《Java 并发编程实战》,并翻翻并发编程网的文章。
    深入(6 个月-)
    • 目标:分布式系统和中间件开发。
    • 构建知识体系:《大型网站系统与 Java 中间件实践》、《大型网站技术架构:核心原理与案例分析》。
    • 原理与设计:《大规模存储式系统》、《UNIX 网络编程 卷1:套接字联网 API》、《How Tomcat Works》。
    • 学习开源项目:Apache Thrift、Zipkin、Netty、Rose、Jade、淘宝 RPC 系统 Dubbo 等。分析项目中的设计思路。比如,同样是RPC框架,Finagle 和 Dubbo 有什么异同。
    • 其他。根据参与的项目加深学习吧。比如,如果需要写 DSL,可以读一下《领域特定语言》,对 Redis 感兴趣推荐读一下:《Redis 设计与实现》。有两本书,无论做什么项目,都推荐读:《Unix 编程艺术》、《UNIX 环境高级编程(第3版)》。




    给你推荐一个写得非常用心的Java基础教程:java-basic | 天码营这个教程将Java的入门基础知识贯穿在一个实例中,逐步深入,可以帮助你快速进入Java编程的世界。万事开头难,逐步跟着这个教程走一遍,对Java应该就会有一种入门的感觉了。然后再去学习更高级的主题,或者更深入地学习其中的某些知识点。 入门之后,可以考虑以下学习内容和路径: 1、学习的基本路径首先建立好开发环境非常重要,工欲善其事,必先利其器。做任何开发,首先就是要把这个环境准备好,之后就可以去做各种尝试,尝试过程中就能逐渐建立信心。初学者往往在环境配置中被各种预想不到的问题弄得很沮丧。建立起来环境了,改变世界就靠你的代码了。学习一门编程语言没有太多的诀窍,你可能可以去找一本比较好的经典的入门书籍,现在网络上也有非常多的资料,图文或者视频都可以,根据个人喜好选择。最重要的练习,熟能生巧,在不断的练习中去加深自己对程序语言的理解。接下来你需要了解这三个术语,叫SDK、API跟Lib,分别表示软件开发套件,应用编程接口和库。这三者之间其实有一定的联系,或者是交叉。总体来说,它们都是给我们提供的一些封装了底层功能的基础设施。做Java开发的话,这些东西通常体现为我们所经常说的“框架”。事实上要成为一个资深的Java开发者,对各种API和框架的学习,可能是花时间最多的一个地方。当然你也不可能把所有API或者SDK种的所有内容完全弄懂。在软件开发中也有二八原则,少数的API能够胜任开发中的大部分场景。所以你只需要掌握这些关键部分,当在新场景下遇到不能解决的新问题时,再去查看帮助文档。所以帮助文档的阅读也是技术学习的一个关键因素。了解了基础原理之后一般就能上手开发了,帮助文档可以帮助你在实践中学习。 2、三个神器三个神器,对于软件开发者来说非常重要。 第一个Google,虽然因为各种原因的话有时候我们访问不了,但是这基本上是可以去寻找技术资料最好的方式。 第二个是Github,之前提到过库的概念,Github就是一个可以找到大量第三方库的地方,那是别人给我们封装好的可以复用的代码。比方说造一辆汽车的话,我们经常不要自己造轮子,而Github上可以找到很多优质的轮子,这些轮子还是免费(代码都是开源的),我们应该尽量利用它们来拼装自己的汽车。 第三个是StackOverflow网站,在这个问答网站上你遇到的几乎任何开发问题都能快速找到答案。 3、Java Web全栈开发的推荐学习内容简单总结一下,大概包括下面这些内容。每一部分都可以细化成很多知识点,这只是一个粗略的罗列。把它当做技术地图就好了。开发环境的建立与项目管理:Eclipse、Maven和GitJava编程基础:基本语法、面向对象特性、Java8新特性、更高级库(比如Guava)的使用等前端开发技术:HTML、CSS、Bootstrap和JavaScript基础Spring基础:依赖注入IoC、面向切面编程AOP、SpringBootMVC框架:Spring MVC、Struts等,包括URL路由、模板、表单、Session、拦截器等知识数据访问:关系型数据库、JDBC、Spring JDBC、事务、ORM框架(MyBatis,Hibernate、JPA)成熟应用的关键功能实现:邮件发送、异步任务、缓存、日志等应用的测试和部署 4、JSP/Servlet的相关内容最后专门提一下JSP和Servlet,虽然现在各种成熟的MVC框架已经让Java Web开发基本很少使用JSP和Servlet的原生功能了,基本都做了一层封装。但是这部分基础知识建议初学者还是要认真学习。Web基础,HTTP协议C/S模型,浏览器访问网站过程URL基础知识HTTP消息——请求和响应处理HTTP请求的应用程序Servlet/JSP简介ServletServlet容器,Servlet处理机制,Servlet生命周期部署ServletServletContext, ServletConfigFilter, Event ListenerJSP表达式,scriptlet, declaration在JSP中访问Java类JSP内置对象处理用户输入HTTP方法——GET v.s. POST读取表单数据构建MVC应用Servlets/JSP存在的问题MVC设计模式使用RequestDispatcher在Servlets和JSP中传递数据,EL表达式使用JSTL作为模板JSP Tag LibCore Tag(if, loop)Function Tag(string, fmt, utils)SessionSession&&Cookie基本概念通过Cookie记录用户状态使用Session跟踪用 5、更进一步分布式、深入Java虚拟机、针对不同场景的Java技术框架,到这个阶段已经不仅仅是Java的学习了,而是大型应用场景的技术积累、架构设计的精进了。
    作者: 小白程序 
    链接:http://www.imooc.com/article/7185
    来源:慕课网



    从学习Java开发到现在虽然也已经快三年了,但是要说到分享一下经验实在是不敢当。权当是对自己的一个总结吧,希望大家不吝指教,互相交流。

            照旧,还是现来整理一下我学习Java的一个路线图吧,然后按照这个路线图来谈谈我的一些感受。

    一、Java核心

            这是学习Java的基础,掌握程度的深浅甚至直接影响后面的整个学习进程。Java的核心主要包括几个部分:

          1、初级的有语法基础、面向对象思想。

               学习任何一门语言语法都是必须的,因为Java的接近自然语言,也是一种相对比较容易学的语言。同时面向对象编程更是其核心思想,要理解其实只要记住一句话就行了,那就是:一切皆是对象。

          2、中级的IO流、多线程、反射及注解等。

               IO流程、多线程等是相对比较高级一点的了,通过学习我们会发现这些都很有用而且很有趣。例如我们可以读取一个Excel文件、将一个文件分离,做一个时钟、使用多个线程发送邮件等等很多有意思的事。另外反射及注解更是后面流行框架SSH等的基础,在使用中你便会慢慢感受到它的无穷魅力。

          3、高级一点的就是设计模式和框架之类了。

               要学习好一门语言,仅仅会使用还是不够的,我们不仅要深入研究其原理,而且还要找到其一些共性的东西,从而减少反复的劳动,让代码可重用、更可靠且更容易被别人理解。

    二、前端Web

           现在来说Java最流行的应用还是Web开发。那么作为Web开发,对于前台的知识的学习也是必须的,当然并不是一定要按照前端工程师的标准去要求。但是一些基础的知识也是必须要掌握的,毕竟Web应用是前台和后台的一个交互的过程。像HTML、CSS、Javascript等都是基础的知识,另外作为开发人员对目前最流行的Javascript框架Jquery更是必学不可的。

    三、数据库

           有人说,所有的应用无非就是数据的输入、处理到输出的过程。期间同时可能还会涉及到数据的存储问题。对于结构化的数据,我们常用的还是像Oracle、Mysql和PostgreSQL之类的关系型数据库。同时针对数据库编程还是PL/SQL需要学习。使用Java访问数据库的话还有JDBC。那么对于非结构化的数据以及大数据该如何处理呢?其实这里也已经有了非常成熟的解决方案了,那便是Hadoop。就Hadoop而言他并不是一种思想,更多是一个实现了Mapreduce模式的框架。

    四、J2EE

           好了,前面这么多准备的工作。下面我们进入正题。作为Java开发,CoreJava是核心,而作为JavaWeb开发,我认为Servlet才是核心。Servlet是服务器端的Java应用程序,但是与普通的Java应用程序不同的是,它是由web服务器来加载启动,即我们常说的Servlet,如Tomcat便是servlet容器。另外谈到J2EE开发,这里有一个重要的模型不得不提一下,很多人其实已经想到了,那便是MVC(模型-视图-控制器)模型。在传统的web开发中,往往是JavaBean充当模型、JSP做视图而Servlet作为控制器。

    五、框架

           说到框架,其实已经提到了著名的MVC模型,SSH(Struts+Spring+Hibernate)就是一个非常好的实现。对于每一个框架的作用,我想就不用多说了,毕竟这里并不是想写一本教程。另外还有工作流开发的JBPM,搜索引擎Lucence及使系统对外提供接口的webservice应用组件等都是应该要掌握的。

    六、服务器

           关于服务器,像tomcat、jboss、weblogic及websphere等便不提了,因为太普遍了。这里要说的是Nginx,

    Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器。其以占有内存少,并发能力强而著称,连新浪、网易、 腾讯这类知名企业也在使用,所以还有什么理由不去学它呢?

    七、工具

          这里主要介绍几个开发辅助工具。如日志工具Log4j、测试工具Junit、版本管理工具SVN还有项目管理maven等。

    另外还有第三方插件Ectable。

    八、项目示例

         Springside是以Spring框架为核心的J2EE应用参考示例,是JavaEE中的比较主流的技术选型及最佳实践的总结与演示,非常值得一看。把它看透了,J2EE就差不多了甚至是比较厉害的了。

    九、话外话

         其实说到底,对于技术的学习,有一个规则是通用的,那便是实践。把学习到的东西马上用起来做出一个示例来,我认为是一种比较好的学习方法。首先它是对零散知识的一个自然总结,另外通过一些小示例的实践,可以增加学习的兴趣。而且可以通过示例,深入学习其实现的原理,加深掌握的程度且能更快的应用到实际开发中,提高工作效率。



    展开全文
  • Android布局中xml和java效率比较

    千次阅读 2017-03-24 10:33:23
    Android 布局中有xml和Java代码两种方式,xml简单、直观、可见,也符合MVC结构。java代码布局灵活、但是代码量不少。结合项目需求,一般是两种布局方式混用。今天,不讨论什么时候用那种,讨论下这两种方式,那种...

    Android 布局中有xml和Java代码两种方式,xml简单、直观、可见,也符合MVC结构。java代码布局灵活、但是代码量不少。结合项目需求,一般是两种布局方式混用。今天,不讨论什么时候用那种,讨论下这两种方式,那种效率更高。

    猜测:

    效率方面,因为xml涉及到xml解析,即便是打包apk时已经对xml进行了编码,但是相比内存中直接创建UI布局,效率还是会更低些。下面用代码对比测试

    XML文件:

    在RelativeLayout中加载一个ScrollView。ScrollView中包含一个LinearLayout,LinearLayout中包含218个TextView。用LayoutInflate加载。

    Java代码模拟同样的布局。

    执行结果:

    1、XML加载

    平均时间是232mm

    2、java代码模拟

    平均是118mm

    效率很明显,java完胜,快了大约100%

    展开全文
  • Android的体系框架中有...Android之所以开发Dalvik虚拟机而不使用JAVA自带的JVM是出于以下两点考虑(个人认为,不代表广泛意义):1.版权问题,如果使用JVM就涉及到了版权问题,所以google需要在JVM的基础上做一些改...

    在Android的体系框架中有一部分叫做Android Runtime,即Android运行时环境,这个环境包括了两个部分,一个是Android的核心类库,还有一个就是Dalvik虚拟机了。

    Android之所以开发Dalvik虚拟机而不使用JAVA自带的JVM是出于以下两点考虑(个人认为,不代表广泛意义):

    1.版权问题,如果使用JVM就涉及到了版权问题,所以google需要在JVM的基础上做一些改进,创造自己的虚拟机。

    2.性能问题。当然jvm虚拟机对Java开发来说性能已经足够了,但是相对移动平台的特性,比如低内存,低电量等,就显得有些牵强了,所以为了优化虚拟机的工作效率,google开发了android自己的虚拟机。

    067028b946d5ab27712416218e40bfae.png

    如上图所示,jvm是吧.java文本编译成.class字节码文件,在执行java程序的时候,类加载器把需要的类全部加载到内存当中去。

    0a96d6fbaaea898a352e1a1c5744f6f6.png

    上图展示的是把字节码文件载入到内存后的结构,每个Class文件被解析成了几部分,包括了Header(主要是jdk的版本等)、常量等。。。

    有多少个类,就会在内存中产生多少个上图结构中的文件。

    364d6a6528651b59c575639eebfa6877.png

    上图所示是dalvik虚拟机加载的类文件结构图。davik虚拟机把.java文件编译成.class文件,又把.class文件转换成.dex文件,dalvik来执行.dex文件。

    实际上.dex文件就是把多个class文件中的常量、方法等放到一起。形成如上图所示的结构。

    在架构上jvm是基于栈的架构,所以每次访问数据cpu都要到内存中取到数据。

    而dalvik是基于寄存器的架构。寄存器是在cpu上的一块存储空间,cpu如果直接从寄存器上读取数据的话就会快很多。

    展开全文
  • java语言是一门翻译型语言,它需要编译成class文件在虚拟机里面运行,而java虚拟机是用c和c++写的 (为什么java虚拟机不用java写呢?原因很简单,是先有鸡还是先有蛋的问题,如果java虚拟机是用java写,那它又...
  • Android和web一致,Android和JavaWeb不一致!从业务逻辑上来讲,转web前端是最适合的,Android从业务逻辑上来讲就是绘制界面,指定用户操作逻辑,获取数据,展示数据,复杂一点的就是使用Android系统api如摄像头、...
  • 安卓面试题一:java基础

    千次阅读 2019-02-20 11:40:48
    安卓面试题一:java基础 提出问题: 简单描述什么是面向对象。 什么是多态?多态的实现机制是什么 接口(Interface)和抽象类(Abstract Class)的区别 重写(Override)和重载(Overload)的区别 什么是...
  • 浅谈2016android开发前景 Java语言优势:1、入门快。尽管Java是强大的面向对象语言,但它容易学习,特别是对熟悉C或C++的程序员更是如此。2、代码量少。比较程序度量标准(类数量、方法数量等)可知,Java编写的程序比...
  • 百度翻译源码java gMission 的 Android 客户端 gMission 是一个面向研究人员的通用空间众包平台。 gMission 是开源的: gMission 的 Android 客户端(下面的客户端)是一个 Android 应用程序。 客户端也是开源的。 ...
  • 一般情况下对于Android程序布局我们往往使用XML文件来编写,这样可以提高开发效率,但是考虑到代码的安全性以及执行效率,可以通过Java代码执行创建,虽然Android编译过的xml是二进制的,但是加载xml解析器的效率...
  • 最近几年,安卓应用开发一直处于长期增长的状态,安卓手机平台也是异军突起,甚至挑战了苹果在手机及平板系统的霸主地位,而今天安卓之所以能够有今天的成就,与之前选择用java语言开发有着莫大的关系。毕竟事实已经...
  • protobuf在java, Android下的使用总结

    千次阅读 2018-07-21 17:25:58
    protobuf(Google Protocol Buffers)是Google提供一个具有高效的协议数据交换格式工具库(类似Json),但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍。后面将会有简单的demo对于这两种...
  • 安卓能够成功的最重要的因素是开源,任何手机厂商都可以谷歌通过的开源政策免费获得操作系统的使用权,同时也可以基于该操作系统进行个性化定制,打造自己的操作系统,也正是由于安卓系统,才造就了众多国内外手机...
  • 面试复习——Android工程师之Java面试题

    万次阅读 多人点赞 2017-05-19 17:30:55
    Java采用了自动装箱和拆箱机制,节省了常用数值的内存开销和创建对象的开销,提高了效率 装箱:将基本数据类型包装成它们的引用类型 拆箱:将包装类型转换成基本数据类型 7、序列化与反序列化 对象的...
  • Java 是 Sun 公司开发的一门语言,同时 Java 也是一个开放平台。 Sun 公司为 JVM 发布了 JVM 规范,任何公司都可以按照此规范开发 JVM 语言,如现在的 Kotlin、Scala 等。 JVM 语言必须要通过 JCP(Java Community ...
  • Android虚拟机和Java虚拟机之间的区别

    千次阅读 2017-09-04 11:24:23
    什么是JVM? 什么是Dalvik? Android虚拟机和Java虚拟机之间的区别及其联系
  • Android 中Jni与Java运算性能比较

    千次阅读 2017-04-08 21:19:32
    完整demo地址 ...JniPerformance Jni performance test Using dense floating-point calculations to test the performance differences between Jni and pure java,
  • 主要介绍了java JSONArray 遍历方式(2种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 1.JAVA虚拟机运行的是JAVA字节码,Dalvik虚拟机运行的是Dalvik字节码 java虚拟机:JAVA->class文件 dalvik虚拟机:JAVA->class文件->Dalvik字节码->打包到dex中->DVM通过解释DEX文件来执行这些字节码...
  • 安卓开发就等同于Java编程么?不懂的进来看看吧

    万次阅读 多人点赞 2019-01-03 10:32:46
    Android开发和java开发的相同点: android开发是java开发的一个分支。android种的类库有一部分和java类库基本一致,也就是类名一致。比如String,Integer这些,但是具体的实现都是改过的(还好改过的,不然和甲骨文...
  • AIDE【Java开发IDE软件】是一款安卓Java开发应用类软件,支持代码编写调试功能,帮助用户的安卓手机进行项目调试,软件支持多种编辑方式,代码解析度高,本次放出AIDE安卓版下载,有相关代码调试需求的朋友们不妨...
  • javaandroid的通用方法 下载后可在项目里直接使用 非常有用可提高程序员的开发效率
  • 效率文件复制java

    2014-08-18 23:21:44
    文件复制在我们开发当中会经常用到 但其实并不难 我只是写核心代码 可以自己添加各种功能 例如进度 自编 转载请注明出处
  • AndroidJava 9,10,11,12 的支持

    千次阅读 2019-06-13 06:38:21
    原文链接 :Android’s Java 9, 10, 11, and 12 Support 原文作者 : jakewharton 本系列的第一篇文章探讨了AndroidJava 8的支持。尽管AndroidJava 8的语言特性和API的支持还没有完全覆盖。但是D8已经为我们提供...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 119,058
精华内容 47,623
关键字:

java安卓效率

java 订阅