• 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. }  
  • 相关阅读:
    将在线图片转换成base64踩坑记录及静态资源跨域及缓存的处理
    MySQL大表拆分多个表的方式(横向拆分和纵向拆分)及如何解决跨表查询效率问题
    electron-vue项目打包踩坑指南
    如何在npm上发布vue插件
    MVC之前的那点事儿系列(9):MVC如何在Pipeline中接管请求的?
    MVC之前的那点事儿系列(8):UrlRouting的理解
    MVC之前的那点事儿系列(7):WebActivator的实现原理详解
    MVC之前的那点事儿系列(6):动态注册HttpModule
    MVC之前的那点事儿系列(5):Http Pipeline详细分析(下)
    MVC之前的那点事儿系列(4):Http Pipeline详细分析(上)
  • 原文地址:https://www.cnblogs.com/chester/p/1987949.html
Copyright © 2020-2023  润新知