zoukankan      html  css  js  c++  java
  • java学习笔记

    方法的重载 :同一个类里面方法的名字相同,方法的参数项(主要是参数类型,参数个数) 不同 , 返回类型可能不同。

                       重载方法可以具有不同的返回类型,但返回类型本身不足以区分方法的两个版 本。构造方法也可以被重载。

    方法的重写 :子类继承父类 , 子类覆盖了父类的同名同参同返回值的方法,子类的访问修饰 符不能比父类的范围小。

    * 父类 new 子类,只能调用子类中重写的方法,而不能调用子类扩展的方法     

    继承和多态     java 是单一继承 , 接口起到了类似多继承的作用。

                         子类不能调用父类 private 的属性和方法。

                         super 关键字:调用父类的方法和属性(父类私有的除外),写在子类的方法调 用之前(第一行)

                         * 静态方法里不能使用 super 关键字 ( 比如 main 方法里 )

                         * 多态的实现:重载,重写,接口

                         *log4j 优先级从高到低: error,warn, info, debug

                         * 异常—— Exception 异常要在最后抛出

                         * 异常时先执行 finally 中的程序后执行 return

    四种基本数据类型的取值范围  byte(-2^7~+2^7-1) short(-2^15~+2^15-1) ,int  long 的范围依此类推

     

    软件工程 面向过程的程序设计思想:程序=数据结构+算法 面向对象的程序设计思想:程序 = 对象+消息 OOA:面向对象分析 

    数据库连接

                  流是指一连串流动的字符,是以先进先出的方式处理的。

                  构造一个文件输入流对象:InputStream o = new FileInputStream(“a.txt”);

                                                            o.available();//可读取的字节数

                                                            o.read();  //读取文件的数据

                                                            o.close(); //关闭输入流对象

                         FileInputStream是读取字节,BuferedReader读取字符

    数据库连接

                         1创建jdbc数据源

                         2 装载驱动 class.forName(“sun.jdbc….”);

                         3 创建Connection对象

                         4 读取数据

                         5 处理数据库的返回结果ResultSet

                         6 关闭释放连接对象

    Jspservlet

                         Servlet是基于线程的,CGI是基于进程的,占用资源多

                         Servlet运行环境常用的有jswdk ,tomcat,resin

    进程与线程     进程 就是同一时间内执行多个程序,一个进程都有自己独立 的内存空间,                             一组系统资源

                                * 程序中单个顺序的流控制称为线程

                                * 多个线程可共享一个内存空间,进程不行。

                                * 多进程 :在操作系统中,能同时运行多个任务程序

                                * 多线程 :在同一应用程序中,有多个顺序流同时执行

                                *Java 支持多线程,它的所有类都是在多线程下定义的

                                Java 中的线程由三部分组成:

    1.       虚拟的 CPU ,封装在 java.lang.Thread 包中

    2.       CPU 所执行的代码

    3.       CPU 所处理的数据

                                * 当一个线程创建状态时,系统不为它分配资源,调用 .start() 时才分配   * 线程的终止有两种,一是自动执行完成(推荐),二是调用 stop() 方法

    栈内存,堆内存

                                定义一个变量或方法时, java 就在栈中 为这个变量分配内存空间 ,超出作用域就自动释放。

                                * 栈中数据可以共享

                                * 堆内存  new 出来的对象 ,由 JVM 自动回收机制管理

    两种不同的 String 声明

                         String str = new String(“abc”) ;    // 放在堆中

                         String str = “abc”                        // 放在栈中,速度快

                         * 总结:堆主要用来存放对象,栈主要用来执行程序

    Equals  = =

                         双等号 :比较是否指向同一个引用Equals:比较两个字符串内容是否相等,比如new出来的两个String
    类型的变量,把它们的参数设为相同, 用equals就为true,用双等号为false

    网络编程

                  *URL(Uniform Resource Locator) 是统一资源定位器的简称,它表示 Internet 上某一                 资源的地址。

                  * Socket 通常用来实现客户方和服务方的连接。 Socket  TCP/IP 协议的一个十分                  流行的编程界面,一个 Socket 由一个 IP 地址和一个端口号唯一确定。 Socket 通常             用来实现 C/S 结构。

    软件开发基础

           计算机是执行程序指令的电子设备,输入、输出、存储和处理

           CPU部件:算术逻辑单元(ALU),控制单元

           存储器:主存储器(临时存储数据),辅助存储器(永久存储)

           RAM:随机访问存储器内存条

           ROM:只读存储器可以访问和读取但不能修改

           Cache:高速缓存

           一个字节(Byte)等于8(bit)

           软件的分类:系统软件、通用软件、应用软件、编程语言

           编程语言分类:机器语言(第一代)、汇编语言(第二代)

           二进制、十进制、十六进制的转换

           十进制转二进制,可以采用除2取模,商为1时停止,然后从下往上组合即是相应的二进制

           十进制小数转二进制乘2取整,先取的作为高位

           二进制转十进制:1101 = 1*2^0+0*2^1+1*2^2+1*2^3 //从右往左开始算

    数据结构

    数据结构是将数据存储到计算机中的种方式,以便有效使用这些数据

                  栈(后进先出) 链表  队列(先进先出) 哈希表   

     

    网络和Internet

                         共享数据、在计算机之间交换数据、高效的资源管理

                         局域网LAN)、城域网MAN)、广域网WAN

                         TCP:传输控制协议    IP:网际协议       UDP:用户数据报文协议(不用建立连接,从一边往另一边送东西,数据可能丢失)

     

    软件开发过程

                         软件开发模型:瀑布型、螺旋型

                         软件开发过程:

     1、可行研究与计划

     2、需求分析

     3、设计

     4、开发

     5、评估/测试

     6、维护

     

     

     


     

    struts

            

           Struts 1.2 工作原理:

    1.  ActionServlet 核心 控制器会拦截所有 *.do 的请求

    2.   struts-config.xml 中找到用户请求的 Action

    3.  通过 struts-config.xml 中的配置再去找这个 Action 对应的 ActionForm, 并实例化

    4.  把用户填写的数据自动填充到 ActionForm  ( 调用 ActionForm 中的 setXX() 方法填充 )

    5.  同时把 ActionForm 放入到指定的范围中 (request,session)

    6.  然后把请求转发给 Action

    7.  Action 获取 ActionForm 中的值然后调用业务逻辑层实现功能

    8.  再通过 ActionMapping 查找 Actionforward 实现转发

     

    工作流程如下:

    1.  服务器启动后,根据 web.xml 加载 ActionServlet 读取 struts-config.xml 文件内容到内存。

    2.  以登陆为例:第一次进 login.jsp 会先实例化 Form, 把默认值赋给表单元素。

    3.  输入用户名密码提交表单、提交到 action 属性的 login.do, 通过 ActionServlet  struts-config.xml 文件找到 action 下的 path 属性找到 .do ,通过 name 属性找 form-beans 中的 form-bean  name 属性得到 ActionForm 的包名类名,先实例化 form, 把表单的值填充给 form, 调用 form  validate 方法验证、 ActionErrors 返回 null 表示验证通过,否则失败返回 input 指定的页面,验证通过会实例化 Action, 执行 Action  excute 方法。

     

     

    添加 struts1.2 支持,乱码处理: filters 文件夹放到工程 src 目录下, web 覆盖。

    作业: s2sh 整合增删改查 , 选添加 hibernate, 然后 struts,spring

    Struts2 的核心控制器是 FilterDispatcher,

    OGNL 的集合操作符:

         ?: 获取所有符合逻辑的元素

         ^: 获取符合逻辑的第一个元素

         $: 获得符合逻辑的最后一个元素

           this  获取一个对象某个属性值的集合          



     

    Hibernate

         Hibernate 是一个优秀的持久化框架

         瞬时状态,持久状态

         ORM :对象关系映射,完成对象数据到关系数据的映射机制

         使用 Hibernate 的三项准备工作是:

    1、  添加 hibernate 

    2、  添加 Hibernate 配置文件

    3、  添加对应表的实体类和对应文件

    对象的三种状态:临时状态 (Transient) 、持久化状态 (Psersistent) 、游离状态 (Detached)

     

     

    Session 中的查询方法: load() 支持延迟加载  get() 即时加载, load() 在数据中找不到数据会抛异常,而 get() 则返回 null 

    清除缓存方法: evict(),clear()

    关联关系:一对一、一对多、多对多

    继承实现的三种策略:单表继承,具体表继承,类表继承

         Load 只有在 lazy=false 时,才支持多态查询。

         支持一级缓存的方法: get(), load(), iterate( 查询实体对象 )

         避免大量体入库内存溢出 :  flush()  clear().

         事务的四个特性:原子生、一致性、隔离性、持久性。


     

         Session 缓存的三大作用:

    1、  减少数据库的访问频率,提高访问性能

    2、  保证缓存中的对象与数据库同步,位于缓存中的对象称为持久化对象

    3、  当持久化对象之间存在关联时, Session 保证不出现对象图的死锁。

    Spring

    Struts1  struts2 的不同点:

    Spring 是一个开源的控制反转和面向切面的容器框架,主要目的是简化企业开发。

         核心机制:以 BeanFactory 为基础,管理 Bean 之间依赖

         单例模式: 1 、饿汉式 2 、懒汉式   3 、登记式

         依赖注入: DI 控制反转: IOC 是同一个意思

         依赖注入的两种方式: 1 设值注入 2 构造注入

    数据结构和算法

    冒泡:每次比较都可找出最大或最小的,有序的在最右边 
    选择排序:有序的在最左边

    插入排序:速度比冒泡快一倍,比选择也快。     

    递归

           调用自身

           汉诺塔问题:

     

     

    doGet()doPost()

           Jsp页面的form标签里的method属性为get时调用doget(0,

           post时调用doPost()

    Jsp 

           Jsp引擎(Tomcat)先将jsp文件转换为servlet,然后调用Java编译器javac.exe

           Servlet代码进行编译,把它变成字节码(.classes)文件。然后再调用java虚拟机

           执行该字节码文件,最后将结果返回给Web浏览器。

          Html注释:<!- -客户端可以在源码中看到- - >      

           Jsp注释:<%-- 客户端源码看不到 --%>

           <% ! int a=0;  %> <%! String s = new String(“hello”) %>      //以分号结束

           Include指令:<%@ include file=”/footer.jsp” %>

           Include动作:<jsp:include page=”baidu.jsp” />

           表达式:<%=表达式 %>

           Jsp的九个内置(implicit)对象:outrequestresponsesessionapplicationexception

           ConfigpagepageContext


    1. /** 
    2.  * @汉诺塔的问题 
    3.  */  
    4. public class HanoiTowers {  
    5.     static int count = 0// 总共要移多少次  
    6.     public void moveTowers(int n, String start, String inter, String to) {  
    7.         // 柱子的n个圆盘移动到目标柱子上  
    8.         count++;  
    9.         if (n == 1) {  
    10.             System.out.println("从" + start + "到" + to);  
    11.         } else {  
    12.             // 首先将n-1个盘子移到备用柱,这里用到递归(方法调用方法本身),以便得到最底下最大的盘子  
    13.             moveTowers(n - 1, start, to, inter);  
    14.             System.out.println("从" + start + "到" + to);  
    15.             // 然后把n-1个备用柱上的盘子移到目标柱子上  
    16.             moveTowers(n - 1, inter, start, to);  
    17.         }  
    18.     }  
    19.     public static void main(String[] args) {  
    20.         new HanoiTowers().moveTowers(3"A""B""C");  
    21.         System.out.println("总共要移动" + count+"次");  
    22.     }  
    23. }  
  • 相关阅读:
    BZOJ 3205 [Apio2013]机器人 ——斯坦纳树
    BZOJ 3782 上学路线 ——动态规划 Lucas定理 中国剩余定理
    HDU 1423 Greatest Common Increasing Subsequence ——动态规划
    BZOJ 3309 DZY Loves Math ——莫比乌斯反演
    POJ 1038 Bugs Integrated, Inc. ——状压DP
    POJ 3693 Maximum repetition substring ——后缀数组
    POJ 2699 The Maximum Number of Strong Kings ——网络流
    POJ 2396 Budget ——有上下界的网络流
    BZOJ 4650 [Noi2016]优秀的拆分 ——后缀数组
    源码安装python
  • 原文地址:https://www.cnblogs.com/chester/p/1987949.html
Copyright © 2011-2022 走看看