
Java
Java常见问题
小白文
这个作者很懒,什么都没留下…
展开
-
线程安全原理
卖票案例解析创建Runnable接口的实现类RunnableImpl。内联代码片。// 创建Runnable接口的实现类public class RunnableImpl implements Runnable { //定义一个多线程共享的票源 private int ticket = 100; //重写run方法,设置线程任务:卖票 @Override public void run() { //使用死循环,让卖票操作重复执行原创 2021-07-23 21:41:32 · 111 阅读 · 0 评论 -
解决线程安全问题的几种方式
解决线程安全问题的几种方式解决线程安全问题之同步代码块解决线程安全问题之同步方法@静态同步方法解决线程安全问题之Lock锁原创 2021-07-25 09:25:30 · 280 阅读 · 0 评论 -
JavaInvalidClassException异常解析
JavaInvalidClassException异常解析InvalidClassException异常原理(1)序列化成功 内联代码片。public class Person implements Serializable{ private String name; private int age; //构造方法,set/get方法,toStrig方法}编译器(java.exe)会把Person.java文件编译生成Person.class文件,Person类实现了Serializabl原创 2021-07-22 19:22:30 · 619 阅读 · 3 评论 -
Lambda表达式
Lambda表达式面向对象思想与函数式编程思想的区别(1)面向对象思想做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成该事情。(2)函数式编程思想只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不是过程。Lambda表达式的标准格式由三部分组成:a.一些参数b.一个箭头c.一段代码格式: 内联代码片。// Lambda表达式标准格式(/*参数列表*/)->{/*一些重写方法的代码块*/}/**解释说明: ():接口中抽象方法的参数列表,没有参数原创 2021-07-26 09:02:43 · 60 阅读 · 0 评论 -
HashMap和Hashtable的区别
HashMap和Hashtable的区别 1.它们都属于Map接口的类,实现了将唯一键映射到特定的值上; 2.Hashtable底层是一个哈希表是一个线程安全的集合,是单线程集合,速度慢; 3.HashMap底层是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快; 4.HashMap类没有分类或者排序,它允许存储一个null键和多个null值; 5.Hashtable类似于HashMap,但是不允许存储null键和null值; 6.Hashtable继承自Dictin原创 2021-07-30 11:32:00 · 120 阅读 · 0 评论 -
StringBuilder和 StringBuffer区别
StringBuilder和 StringBuffer区别 /*StringBuffer:线程安全,而StringBuilder:线程不安全。因为StringBuffer的所有公开方法都是synchronized修饰的,而StringBuilder并没有StringBuilder修饰。 StringBuffer每次获取toSting都会直接使用缓冲区的toStringCache值来构造一个字符串。而StringBuilder则每次都需要赋值一次字符数组,再构造一个字符串。 StringBuffer是线原创 2021-07-30 14:35:09 · 311 阅读 · 0 评论 -
SpringBoot环境搭建
SpringBoot环境搭建手动搭建步骤一:创建一个Maven项目(1)单击“Create New Project”:(2)选择Maven并单击Next(3)填写GroupId和ArtifactId,并点击Next,如下图所示:(4)填写项目名称和需要存放的路径,并点击Finish,如下图所示:步骤二:添加SpringBoot坐标(1)在Maven项目中的pom.xml文件中添加springboot坐标:注意:所有的springboot工程都必须继承spring-boot-star原创 2021-08-18 11:00:22 · 3817 阅读 · 2 评论 -
SpringBoot热部署
SpringBoot热部署步骤一:在SpringBoot项目中找到pom.xml文件,添加以下内容:<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools --> <!--热部署配置--> <dependency> <groupId>org.springframework.boot<原创 2021-08-18 11:19:18 · 126 阅读 · 0 评论 -
Spring JDBC
Spring JDBC使用步骤:##Spring JDBC *Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发 *步骤: *1.导入jar包 *2.创建JdbcTemplate对象。依赖于数据源DataSource *JdbcTemplate template = new JdbcTemplate(ds); *3.调用JdbcTemplate的方法来完成CRUD的操作 *update():执行DML语句。增、删、改语句 *qu原创 2021-08-16 20:17:17 · 80 阅读 · 0 评论 -
JDBC连接Mysql
JDBC连接Mysql1.导入驱动jar包*复制mysql-connector-java-5.1.17.jar到项目的libs目录下*右键—>Add As Library2.注册驱动//2.注册驱动Class.forName("com.mysql.jdbc.Driver");3.获取数据库连接对象 Connection //3.获取数据库连接对象Connection conn = DriverManager.getConnection("jdbc:mysql://master:3原创 2021-08-15 09:37:44 · 221 阅读 · 1 评论 -
Druid连接池工具类
Druid连接池工具类创建Druid连接池工具类:DruidJdbcUtils。/** * Druid连接池的工具类 */public class DruidJdbcUtils { //定义成员变量 private static DataSource ds; //static代码块 static { //加载配置文件 Properties pos = new Properties(); InputStream is原创 2021-08-15 20:32:31 · 148 阅读 · 0 评论 -
抽取JDBC工具类:JDBCUtils
抽取JDBC工具类:JDBCUtils抽取JDBC工具类:JdbcUtils *目的:简化书写 *分析: 1.注册驱动也抽取 2.抽取一个方法获取连接对象 *需求:不想传递参数,还得保证工具类的通用性。 *解决:配置文件 *jdbc.properties *url=jdbc:mysql://master:3306/shujia *username=root *password=123456 *driver=com.mysql.jdb原创 2021-08-15 09:54:30 · 86 阅读 · 0 评论 -
JDBC控制事务
JDBC控制事务JDBC控制事务: 1.事务:一个包含多个步骤的业务操作。如果这个业务操作被事务管理,则这个步骤要么同时成功,要么同时失败。 2.操作: *开启事务 *提交事务 *回滚事务 3.使用Connection对象来管理事务 *开启事务:getAutoCommit()获取此 Connection 对象的当前自动提交模式。 *在执行sql之前开启事务 *提交事务:commit()使所有上一次提交/回滚后进行的更改成为持久更改,并释放此 Connection 对原创 2021-08-15 11:14:23 · 287 阅读 · 0 评论 -
JDBC介绍
JDBC介绍概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,正真执行的代码是驱动jar包中的实现类。*快速入门: *步骤: 1.导入驱动jar包 *复制mysql-connector-java-5.1.17.jar到项目的libs目录下 *右键---&原创 2021-08-15 00:50:03 · 167 阅读 · 0 评论