
Java
文章平均质量分 66
Java 学习笔记
柚咖
这个作者很懒,什么都没留下…
展开
-
Java 错题集
错题地址++ 运算符地址原创 2021-05-14 09:46:58 · 147 阅读 · 0 评论 -
Java 学习笔记
目录一、Java环境配置二、Java基础知识一、Java环境配置Java环境配置与Eclipse的使用二、Java基础知识Java基础知识原创 2020-12-22 15:47:38 · 389 阅读 · 0 评论 -
Java 简介
什么是 Java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。三个版本1. Java SE(J2SE,Java 2 Platform Standard Edition,标准版) Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用原创 2021-04-29 11:30:22 · 174 阅读 · 0 评论 -
基本数据类型对比
数据类型 C语言(64位环境) C++ Java 内存(字节)全局变量默认值 内存(字节)全局变量默认值 内存(字节)成员变量默认值 short 2字节0 2字节0 2字节0 int 4字节0 4字节0 4字节0 long 4字节/8字节0 4字节/8字节0 8字节0 char 1字节0 1字节0 2字节\u0000 float 4字节0.00000...原创 2021-04-22 14:14:27 · 543 阅读 · 0 评论 -
多线程中易混方法对比
waitsleepjoinyield方法所在类ObjectThreadThreadThread功能描述调用wait()的对象立刻释放锁资源,进入等待队列调用sleep()的对象不释放锁资源,进入阻塞状态阻塞调用join()所在的方法的对象,直到调用join()的对象运行完毕当前对象放弃CPU执行权,变为Runnable状态何时恢复运行其他线程调用notify()或者notifyAll()方法时,如果设置了时间,经过指定时间后可进入同步队列经过指定时间...原创 2021-03-29 11:21:01 · 114 阅读 · 3 评论 -
线程通信
线程通信使用的方法——wait(),notify(),notifyAll()。这三个方法不是 Thread 类提供的,而是 Object 类提供的方法。这三个方法必须在 synchronized 代码块或者方法中使用,否则会报错。(即使是 Lock 的同步方式也不行)。调用 wait() 方法的对象会释放对象锁,并进入等待队列,直到其他线程调用 notify() 或者 notifyAll() 将其唤醒,被唤醒之后,会进入同步队列,等待锁资源的释放。调用 notify() 或者 notifyAll(原创 2021-03-29 11:02:47 · 93 阅读 · 0 评论 -
线程同步
Q:什么是线程同步?为什么要用到线程同步? A:当使用多个线程操作它们共享的数据时,非常容易出现线程安全问题(比如多个线程都在操作同一数据导致数据不一致),所以我们用同步机制来解决这些问题。比如在 Java 多线程卖票时遇到了线程安全问题,出现重票、错票的情况,使用线程同步可以解决线程安全问题。 Q:什么情况下会线程安全问题? A:多个线程共享一些数据,并且 run() 方法中还需要对这些共享数据进行一些操作时就可能发生线程安全问题。 Q:怎么实现线程同步? A:可以使用同步代码块和原创 2021-03-28 22:29:10 · 98 阅读 · 0 评论 -
Java 多线程卖票2 线程同步
前情回顾:我们在 Java 多线程卖票1 中遇到重票的情况(其实还会有错票的情况,比如卖出的票号是0,或者是负数),这就是多线程的安全问题。 出现这个问题的原因是:当某个线程操作车票的过程中,还没有操作完的时候,就有其他线程参与进来一起操作车票。 如何解决?很简单,只要每一次只允许一个线程操作车票,不允许其他线程来操作车票,直到该线程操作完 ticket 之后,其他线程才可以开始尝试操作车票。 在 Java 中使用同步机制来完成上面的工作,解决线程安全问题。 使用到的关键字是 synch原创 2021-03-28 22:16:40 · 597 阅读 · 2 评论 -
Java 多线程卖票1 线程安全问题
题目要求:使用三个线程卖 100 张票继承 Thread 类创建线程子类 Window1 的代码:class Window1 extends Thread { private static int ticket = 100;// 目前还有 ticket 张票 @Override public void run() { while (true) { if (ticket > 0) { // 如果还有票 System.out.println(Thread.curren原创 2021-03-28 02:37:24 · 340 阅读 · 1 评论 -
Thread 中的方法
获取当前运行中的线程 获取当前运行中的线程使用 currentThread() 查看源码,currentThreard() 方法是一个 native 方法,它调用的是本地的方法,这个方法的作用注释中已经说明了,返回一个正在运行的线程对象的引用。 /** * Returns a reference to the currently executing thread object. * @return the currently executing thread. */ public原创 2021-03-27 20:13:29 · 230 阅读 · 0 评论 -
Java 多线程简介
在学习多线程的时候,主要分下面这几部分来学习基本概念:程序、进程、线程线程的创建和使用线程的生命周期线程的同步线程通信Jdk 5.0新增的创建线程的方式 其中重点是线程的创建和使用以及线程的同步这两部分内容,是面试高频考点。 线程的创建在 Jdk 5.0 之前是有两种方式,在 Jdk 5.0 之后又新增了两种实现方式,因此创建线程的方式一共有四种。 线程的使用重点是区分 start() 和 run() 方法的区别。 实现线程的同步一共是 3 种方法。...原创 2021-03-27 01:32:30 · 115 阅读 · 0 评论 -
Java 启动线程 —— start和run的区别
在学习 Java 线程部分内容时,start() 方法和 run() 方法是比较容易混淆的两个方法。首先来看一个 start() 方法和 run() 方法的执行结果,通过这个结果再来讨论 start() 和 run() 的区别。运行实例 创建两个线程 thread1 和 thread2,每个线程的 run() 方法是输出5次当前的线程名。 其中创建线程时使用的是Thread(Runnable target, String name)这个构造方法,该构造方法会为创建的线程起一个名字 name。原创 2021-03-26 14:09:54 · 1082 阅读 · 1 评论 -
Java 创建线程的四种方法
继承 Thread 类实现 Runnable 接口实现 Callable 接口线程池继承 Thread 类创建继承Thread类的子类,并重写run()方法创建子类的实例化对象启动线程——调用该对象的start()方法class Method1 extends Thread { @Override public void run() { System.out.println("继承Thread类的线程"); }}public class CreateThread {.原创 2021-03-26 00:45:22 · 325 阅读 · 0 评论 -
程序、进程、线程
进程是系统进行资源调度和分配的基本单位,它的作用就是让程序可以并发执行。但是因为进程拥有着资源,因此进程的创建、切换、销毁会产生大量的开销,因此进程的数量不宜过多。 线程是CPU调度和分派的基本单位,线程基本不拥有系统资源,只保留一些运行时必须的资源,比如程序计数器、寄存器和栈。而进程会占有堆、栈。 一个程序至少有一个进程,一个进程至少有一个线程。...原创 2021-03-25 19:20:03 · 104 阅读 · 0 评论 -
142. 环形链表 II
题目描述: 给定一个链表,返回链表开始入环的第一个节点(即环的入口)。如果链表无环,返回 null。题解一:哈希表解题思路: 每经过一个节点,都判断之前是否经过这个节点。如果没有经过,将这个节点添加到哈希表中;如果经过这个节点,该节点就是环的入口,直接返回这个节点。/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(原创 2021-03-25 10:00:51 · 90 阅读 · 0 评论 -
Java 线程的状态
线程状态 Java 中我们说的线程状态在代码中的实现其实就是一个变量的值,这个变量是 Thread 类中的变量——threadStatus。/* Java thread status for tools, * initialized to indicate thread 'not yet started' */private volatile int threadStatus = 0; 因为 threadStatus 是个整型数据,不形象,因此 Thread 将 threadStatus.原创 2021-03-24 11:52:30 · 504 阅读 · 1 评论 -
JavaWeb 项目服务器启动执行顺序
服务器启动 → 读取 web.xml 文件 → 创建 web 容器 → 加载 listener、filter、设置 loadonstarup 的 servlet服务器启动 → 读取 web.xml 文件 → 创建 web 容器 → 加载 ContextLoaderListener 根据 Spring 配置文件 创建 Spring 容器,并添加 Spring 配置文件中 bean 实例对象。...原创 2021-03-23 09:35:19 · 325 阅读 · 0 评论 -
异常
异常和错误 Throwable 类是 Java 中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地,只有此类或其子类之一才可以是 catch 子句中的参数类型。错误 Error 类继承 Throwable 类,错误往往是一些比较严重的情况,会导致程序或者JVM崩溃,是不可逆的。 错误分为两种——运行时错误和编译时错误。 编译时错误多是一些程序中的语法错误,编译器会给出提示。 运行时错误多是一些系统错.原创 2021-03-14 18:00:03 · 107 阅读 · 0 评论 -
MyBatis
简介 MyBatis 是一款优秀的持久层框架,支持自定义 SQL、高级映射已经存储过程,MyBatis 免除了几乎所有的 JDBC 代码已经设置参数和获取结果集的工作。 MyBatis 可以通过简单的 XML 或注解来配置,可以映射原始类型、接口和 Java POJO 为数据中的记录。 核心:映射关系 + 动态 SQL MyBatis 特点:简单易学:本身就很小且简单;没有任何第三方依赖。灵活:SQL 写在 XML 中,便于统一管理和优化;不会对应用程序或者数据库现有设计强加任原创 2021-03-07 13:06:20 · 96 阅读 · 0 评论 -
Spring MVC Ajax 请求
网页端代码:<body> <input name="user" type="text"/> <button onclick="test1()">ajax测试</button> <div id="ttt">Java 端返回的数据将在这里显示 </div> <script type="text/javascript"> function test1(){ $.ajax({ type:"post",原创 2021-03-07 01:33:11 · 274 阅读 · 3 评论 -
获取当前工程名
Java 端protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取当前工程名,返回 /工程名 String projectName = req.getContextPath(); System.out.println(projectName);}Web 端JSP 语法<% out.println(request原创 2021-03-07 01:05:45 · 499 阅读 · 0 评论 -
Spring MVC 使用时需要注意的几个点
问题1: 如何指定以某种请求方法请求?如 get、post Spring MVC 获取请求使用 @RequestMapping 注解。 该注解比较常用的形式有两种,第二种方式表示限定为指定的请求方式才会执行该方法。@RequestMapping("/testE")public ModelAndView testE(ModelAndView model){...}@RequestMapping(value = "/testE",method = RequestMethod.POST)pub原创 2021-03-06 14:25:12 · 256 阅读 · 0 评论 -
SpringMVC
简介 在学习 SpringMVC 过程中,可以类比传统 JavaWeb 工程的 Servlet,在传统 JavaWeb 中 Servlet 需要完成:接受请求、获取参数、封装对象、传递数据、返回结果。所以在学习 SpringMVC 的过程中,就是需要学习 SpringMVC 是如何完成这些的。 SpringMVC 原理过程: 在 SpringMVC 框架中,从 Request(请求) 开始,依次进入 DispatcherServlet (核心分发器) → HandlerMapping (处理器映原创 2021-03-06 11:40:24 · 257 阅读 · 1 评论 -
AOP 应用:事务管理
两个数据层的类 Dao1 和 Dao2,这里只是用最简单的插入语句来演示。package com.youka.aop.dao;import org.springframework.jdbc.core.JdbcTemplate;public class Dao1 { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate =原创 2021-03-05 22:46:50 · 281 阅读 · 0 评论 -
++ 运算符错题
public static void main(String[] args) { int count = 10; for (int i = 0; i < 100; i++) count = count++; System.out.println(count);} 答案是 0。 ++ 运算符的优先级高于 = 赋值运算符,所以先取出 count 当前的值 —— 0,然后 count 自增,变成 1 ,再用之前取出的 0 为count 赋值。...原创 2021-03-05 20:19:29 · 100 阅读 · 0 评论 -
AOP 简介
AOP (Aspect Oriented Programming),面向切面编程。 面向切面的编程将程序逻辑分成不同的部分,将其称为关注点,跨一个应用程序的多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。 一般我们创建 Java 工程的时候都会创建五级目录,第一级是 com,第二级是公司名,第三级是项目名,第四级是模块名,第五级是层级(实体类层、数据层、业务层、控制层)。 其实就可以一般情况下就可以近似的理解为切面就是我们的层级,也就是控制层是一个切面,业务层是原创 2021-03-05 19:11:39 · 328 阅读 · 0 评论 -
SpringMVC 配置
文章目录配置 Maven 的 pom.xml 文件配置 web.xml 文件1. 创建 Spring 容器2. SpringMVC 配置3. 字符过滤器配置 Maven 的 pom.xml 文件 pom.xml 文件需要做的就是引入 SpringMVC 的依赖文件和 jetty 插件,之前讲过,这里就不再说。pom.xml 配置,jetty 插件配置配置 web.xml 文件 打开 web.xml 文件,默认使用的是 dtd 模板,使用这个模板要求书写的顺序必须按照给定的顺序书写Content原创 2021-03-05 16:08:33 · 202 阅读 · 0 评论 -
Maven 中 Jetty 插件配置
<plugin> <!-- 定位 --> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.3.7.v20160115</version> <configuration> <!-- http 端口号 --> <httpConnecto原创 2021-03-05 14:19:33 · 1826 阅读 · 0 评论 -
Maven 工程通用依赖
在 Maven 工程中有一些依赖 jar 包,我们可能在每个工程中都需要引入,这时就可以创建一个简单 Maven 工程 在这个简单 Maven 工程中引入需要的相关依赖 在我们需要的 Maven 工程中引入的依赖是刚才创建好的 Maven工程即可将我们需要的常用的依赖引入到工程中。...原创 2021-03-05 14:04:02 · 297 阅读 · 0 评论 -
数据源
Spring JDBC 数据源带数据库连接池的数据源 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们 采用连接池技术,来共享连接Connection。这样我们就不需要每次都创建连接、释放连接了,这些操作都交 给了连接池。在程序释放连接之后并不是真的关闭 Connection,而是将其归还给池,在使用时,也不是直接创建 Connection,而是在连接池中看是否有空闲的连接。 数据库连接池就是负责分配,管理,释放数据库连接,它允许应用程序重复使用原创 2021-03-05 11:50:09 · 208 阅读 · 0 评论 -
Spring JDBC
准备工作 在 Maven 的配置文件 pom.xml 中引入 spring-jdbc 的依赖。<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.11.RELEASE</version></dependency>使用配置数据源 数据源 Da原创 2021-03-05 11:26:25 · 564 阅读 · 1 评论 -
Spring 注解方式
准备工作 从 Spring 2.5 开始就可以使用注解来配置依赖注入,只需要在相关类、方法、属性上声明注解即可。 需要注意的是,默认情况下,Spring 容器中注解是不生效的,因此在配置使用注解之前需要在 Spring 配置文件中启用它。 配置注解生效的步骤: 1. 在根标签 <beans> 中加上 context 命名空间,并为其设置 schemaLocation<beans xmlns="http://www.springframework.org/schema/be原创 2021-03-04 16:34:28 · 327 阅读 · 1 评论 -
Spring XML 配置和注解比较
XML 配置可以和注解混合使用,但是混合使用的话,XML 配置会覆盖 annotation (注解),因此并不推荐混合使用。 XML 配置的优点:XML 配置方式进一步降低了耦合,是的应用更容易拓展,即使对配置文件进一步修改也不需要对工程进行修改和重新编译。在处理打业务量的时候,使用 XML 配置应该更好一些,因为 XML 中更加清晰的表明了各个对象之间的关系,各个业务类之间的调用。同时 Spring 的配置也能一目了然若用 XML 配置大量业务代码时,会使 XML 文件过大,不易查看,这一原创 2021-03-04 16:16:05 · 372 阅读 · 1 评论 -
Spring 中集合的注入
public class ListSetMapProp { private List<String> list; private Set<String> set; private Map<String, String> map; private Properties pro; public List<String> getList() { return list; } public void s原创 2021-03-04 09:32:02 · 174 阅读 · 1 评论 -
applicationContext.xml 配置
命名空间 下面列出了比较常用的几个,不用全部引入,用到那个引入那个即可,其中只有 p 是没有 xsi:schemaLocation 的,其他都是两两成对出现,一个 key,一个是 value。<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.or原创 2021-03-04 09:07:24 · 1454 阅读 · 1 评论 -
IOC 和 DI
IOC(Inversion of Control,控制反转)和 DI(Dependency Injection,依赖注入)是同一个概念。 传统模式中,如果一个 Java 实例(调用者)需要另一个 Java 实例(被调用者) ,需要调用者去创建被吊用着实例的。 而在 Spring 中,是由 Spring 容器去创建被调用者实例,这是控制反转,将对象的控制权(主要是查找和创建对象的权利)交由 Spring 容器;当调用者需要使用被调用者实例时,由 Spring 容器来将对应的实例注入给调用者,这就转载 2021-03-04 00:07:45 · 98 阅读 · 1 评论 -
Maven 常用依赖
MySQL 驱动<dependency> <!-- mysql驱动 --> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.20</version></dependency>JSON 格式 第一个 json 的包比较简洁,使用时主要是用 JSONArray、JSO原创 2021-03-03 17:51:49 · 486 阅读 · 1 评论 -
pom.xml 配置
pom.xml 文件是 Maven 的配置文件。 用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等 根标签是<project>基本配置头信息 这一部分是最外层的根标签以及命名空间和xsd文件的引入<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"原创 2021-03-03 14:07:54 · 837 阅读 · 0 评论 -
web.xml 配置
一般在 web 工程中都会用到 web.xml 来配置 Servlet、Filter、Listener 欢迎页面等,可以方便的开发web工程。需要知道的是 web.xml 并不是必须的,一个web 工程可以没有 web.xml 文件,只不过网站的功能复杂起来后,web.xml 有非常大用处,因此在 web 工程中创建一个 web.xml 还是非常有必要的。1. 命名空间 在 web.xml 中,使用的 web-app_4_0.xsd 文件定义的规则,需要指定这个文件的位置。<web-app原创 2021-03-03 09:00:57 · 12411 阅读 · 4 评论 -
Servlet、Filter、Listener小结
ServletFilterListener实现类继承 HttpServlet 类实现 Filter 接口根据需要实现十个接口中的某几个初始化默认情况是在第一次使用时初始化可以通过配置 web.xml 文件来实现服务器启动时初始化Web容器启动时初始化Web容器启动时初始化...原创 2021-03-02 19:37:12 · 211 阅读 · 0 评论