- 博客(39)
- 收藏
- 关注
原创 数据库的隔离机制和事务传播机制
1.隔离机制要了解数据库的隔离机制首先要知道数据库可能出现的几种问题:脏读:简单来说,就是事务1读取到了事务2未提交的数据,如果此时事务2回滚,事务1就是读取到了脏数据不可重复读:即前后多次读取,数据不一致幻读:多次读取,数据总量不一致而为了解决这几个问题,引入了事务的隔离机制:读未提交:在这种隔离级别下,所有事务都可以读取到未提交的事务,可能出现脏读,无法解决脏读,不可重复读,幻读的问题。读已提交:在这种隔离级别下,所有事务只能读取到已提交的事务,可以解决脏读的问题,但是可能出现不可重
2021-03-23 11:30:16 860 2
原创 牛客网错题记录
类型分类:WebWeb:正确答案:C**解释:**ServletContext对象:Servlet在启动时会加载web应用,并为每个web应用创建唯一的ServletContext对象,可以把ServletContext看出一个Web应用的服务器端组件的共享内存内存,在ServletContext中可以存放共享数据。Servlet...
2021-02-07 13:59:45 258
原创 使用构建器解决多个参数不同的构造器问题
当一个类中含有多个成员变量时,可能会涉及到多个参数个数不同的构造器来构造对象。这无疑产生的极大的麻烦。并且对于别的同事来说,阅读起来也很不方便。如下面这种:public class Person { private int id; private String name; private int age; private String gender; private String address; public Person(int id, Strin
2021-01-18 21:46:55 361
原创 Lambda表达式
1.Lambda表达式Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同) – 来自百度百科 Java1.8之后引入了Lambda表达式。使用它设计的代码会更加简洁。当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口。其本身相当于一个匿名内部类。2.注意事
2021-01-06 11:57:14 837
原创 记录以下C++中空指针和野指针
空指针即指针变量指向内存中标号为0的空间,一般用来初始化指针变量。int* p = NULL;需要注意的是:空指针指向的内存是不可访问的。即在使用时候首先要对其赋值。才可以使用。 int* p = NULL; int k[] = { 1,2,3 }; int n = 1; p = &n; //对其重新赋值,让它指向n的地址。 //p = k; 因为数组的名称本身就是首地址。所以不用写取址符 cout << *p << endl;否则会报错误。
2020-06-21 23:32:43 244
原创 记录一次写JavaWeb项目时出现的问题
在写项目时,出现网页乱码。提示css文件未载入问题如图:检查网页发现提示错误信息:排查了一下午,查了很多资料。仍然没有解决。最后发现时因为我启动时用的是自己下的tomcat版本(tomcat9.0.271),同时我又在pom.xml中配置了tomcat7版本。 我使用tomcat9.0.271版本启动时会出现上面的问题。而tomcat7版本却不会。问题解决。但为什么会这样没有解决。不能理解。大概是版本冲突问题吧。...
2020-05-12 16:36:32 284
原创 数据库的多表查询
查询语句select 列名from 表名where ...;笛卡尔积概念:有两个集合A、B,取这两个集合的所有组成情况,则称为笛卡尔积。多表查询的分类内连接查询1.隐式内连接:使用where条件消除无用的信息SELECT emp.`name`,emp.sex,dept.`name` from dept,emp where emp.dept_id = dept.id;...
2020-04-10 11:49:52 163
原创 数据库操作的分类以及约束
数据库操作数据库操作有以下四种:DDL(Data Definition Language):操作数据库、表DQL(Data Query Language):查询数据库中的数据DML(Data Manipulation Language):增删改表中的数据DCL(Data Control Language):对数据库权限的操作这里主要讲DML和DQL1.DML(Data Manip...
2020-04-10 00:20:04 256
原创 数据库设计的范式以及事务
数据库设计的范式数据库设计的范式有好几种,主要有第一范式(1NF),第二范式(2NF)、第三范式(3NF)、以及第四范式等。而在本文中我主要是介绍前三种范式,即第一范式、第二范式、第三范式。首先来看三种范式的定义:第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的...
2020-04-09 23:31:33 232
原创 Spring基于XML的数据库CRUD操作以及基于注解的方式
方式一:基于XML的数据库CRUD操作持久层技术选择 dbutiilspoml.xml中的依赖有:<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-...
2020-03-07 22:13:52 275
原创 Spring学习第二天:Spring框架中基于注解的IOC配置
用于创建对象的:Component: 作用:用于把当前类对象存入spring容器* 属性:+ value :用于指定bean的id 当我们不写时,默认为当前类名的首字母小写的形式Controller: 一般再表现层Service:一般用在业务层Repository:一般用在持久层注意: 以上三个注解他们的作用和属性与Component时相同的它们三个是spring框架为我们提供明...
2020-03-07 20:35:01 208 1
原创 Spring学习第一天:spring框架的概述以及spring中基于XML的IOC配置
程序的耦合耦合: 程序间的依赖关系包括: 类之间的依赖,方法间的依赖解耦: 降低程序间的依赖关系实际开发中,应该做到,编译器不依赖,运行时才依赖解耦的思想:使用反射来创建对象,而避免使用new关键字通过读取配置文件来获取要创建的对象的全限定类名而学习Spring的目的就是为了将类与类之间的耦合性大大降低。即将对象的创建交给Spring来管理。spring的管理细节...
2020-03-05 23:52:22 187
原创 Mybatis的基于注解的增删改查操作
1.mybatis配置文件:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> ...
2020-02-28 15:34:48 216
原创 mybatis的入门
mybatis的环境搭建创建maven工程创建实体类和dao的接口创建mybatis的主配置文件(SqlMapConfig.xml)创建映射配置文件(IUserDao.xml)如下图环境搭建的注意事项:创建IUserDao.xml和IUserDao.java。在Mybatis中它把持久层的操作接口和映射文件也叫做Mapper,所以IUserDao和IUserMappe...
2020-02-25 19:29:43 140
原创 简单登录案例
准备工作:导入所需要的jar包,导入到web目录下的WEB-INF目录下的lib包中,并将其加入到模块中如下图:配置数据库文件 druid.propertiesdriverClassName=com.mysql.cj.jdbc.Driverurl=jdbc:mysql:///day14 #day14为数据库名称 可以自己创建数据库username=rootpassword=...
2020-02-09 15:03:48 318
原创 Http协议中的request
1.requset对象和response对象的原理request和response对象是由服务器创建的。我们使用他们request对象是来获取请求消息,response对象是来设置响应消息的2.request:获取请求消息1.获取请求行数据 Get /day14/demo1?name=zhangsan http/1.1方法:1.获取请求方式:GET String get...
2020-02-02 23:09:34 686
原创 Lamabda表达式的学习
使用前提:1.使用Lamabda必须要有接口,且要求接口中有且仅有一个抽象方法。(无论是JDK内置的Runnable、Comparator接口还是自定义的接口,只有当借口中的抽象方法存在且唯一时,才可以使用Lamabda。)2.使用Lamabda必须具有上下文推断。也就是方法的参数或局部变量类型必须为Lamabda对应的接口类型,才能使用Lamabda作为该接口的实例。备注:有且仅有一个抽象...
2020-01-30 18:50:09 403
原创 线程池的使用
使用步骤:1.使用线程池的工厂类Executors里面提供的静态方法newFixedThreadPool产生一个指定线程数量的线程池2.创建一个类,实现Runnable接口,重写run方法,设置线程任务3.调用ExecutorService中的方法submit,传递线程任务(实现类),开启线程,执行run方法4.调用ExecutorService中的方法shutdown销毁线程池(不建议执...
2020-01-29 18:17:05 164
原创 多线程运行原理和线程安全问题解决
多线程运行原理:JVM执行Main方法,操作系统会开辟一道路径(即主线程)到CPU,但是在多线程的情况下,没启动一个线程,相当于开辟一条到CPU的路,CPU可以自己选择,因此,CPU的执行一般是无序的。而在内存当中,当主方法开始执行时,主方法在栈中压栈执行,当调用start()方法后,会重新开辟一个空间,供新启动的线程使用线程安全问题解决以售票问题为例问题:出现了重复票和不存...
2020-01-28 20:01:36 176
原创 Tomcat在IDEA上的部署
先建立一个空项目在空项目中的run选项中点击Edit Configuration选择Default进入如下图:点击2选择安装tomcat的目录,之后点击ok即可在当前项目中新建module之后再修改名字即可 完成。进入到如下页面既完成...
2020-01-19 10:46:51 145
原创 Tomcat下载和安装
Tomcat:Web服务器软件1.下载:Tomcat下载地址2.安装:将压缩包解压即可。*注意:安装目录建议不要有中文和空格3.卸载:删除目录就可以4.启动:在目录中的/bin/startup.bat 双击运行即可访问:浏览器输入:http://localhost:8080 访问自己http://别人的ip:8080访问别人5.关闭1.直接关闭cmd窗口2.点...
2020-01-19 10:22:57 108
转载 Synchronize的学习
基本介绍:Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。主要作用:修饰普通方法修饰静态方法修饰代码块代码演示:1.无Synchronized修饰public class SyTestDemo { public void methods1(){ System.out.println("methods1.start...
2019-10-21 18:04:25 90
原创 java并发编程的艺术学习第一部分
1.当并发执行累加操作不超过100万次时,速度会比串行执行累加操作要慢,应为线程有创建和上下文切换的开销。减少上下文切换的方法:**无锁并发编程:**多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据**CAS算法:**Java的Atomic包使用的CAS算法来更新数据,而不需要加锁**...
2019-10-19 19:48:53 127
原创 String类型重新赋值输出结果不变
今天在刷题时遇到的一个问题,对于初学者来说可能会产生疑惑,我们先来看一下代码;public class Example { String str = new String("good"); char[] ch = { 'a', 'b', 'c' }; public static void main(String args[]) { Example ex...
2019-07-25 12:53:20 2440
原创 线程池
什么是线程池?线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池的好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗提高响应速度。当任务到达时,任务可以不需要等到线程创建就能执行提高现场的可管理性。线程是稀缺资源。如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。但是,...
2019-05-08 17:27:24 107
原创 HashTable和concurrentHashMap线程安全保证机制是否一样
不一样。虽让HashTable和ConcurrentHashMap的线程都是安全的,但是HashTable效率较低,因为HashTable是使用Synchronized的,所有线程竞争同一把锁;erconcurrentHashMap线程安全而且效率高,依靠其包含的segment数组,将数据分段储存,给每一段数据上一把锁。segment数组: static class Segment<...
2019-04-27 20:25:08 241
原创 ByteArrayOutputStream详解
介绍:ByteArrayOutputStream 对byte类型数据进行写入的类 相当于一个中间缓冲层,将类写入到文件等其他outputStream。它是对字节进行操作,属于内存操作流源码解析:public class ByteArrayOutputStream extends OutputStream {}从上述代码中可以看出ByteArrayOutputStream继承了Out...
2019-03-26 21:11:55 59252 9
原创 类与对象
Java作为一种面向对象的语言,即OOP(Object Oriented Programming)语言。其所具有的三大特征:继承封装多态这三点在类与对象这一部分重点体现。如果我们把类比喻成模板,那对象就相当于实体。一.对象的初始化方法1提供的一系列的get和set方法例如:class PersonOne { private String name;//实例变量 ...
2019-03-17 14:43:38 90
原创 Java里String的方法
**1.length() 获取字符串长度 **String str="abc";int n=str.length();System.out.println(n)2.charAt(int n) 定位n下标的字母public class TestDemo2 { public static void main(String[] args) { String a="H...
2018-11-23 13:14:42 974
原创 求一个数组的连续子数组和的
假设有一个数组array[]={1,-2,3,10,-4,7,2,-51},求其连续子数组和的最大值。我们可以这样考虑,首先将1和-2相加,和为-1<0,且-1<3,所以我们舍弃前两项,从第三项开始加 当加到最后一位时,发现和<0,即从第三项开始加到第七项的和为最大值。代码示例:public static int SumMax(int[] array){ int s...
2018-11-22 18:25:40 488
原创 新手初入Java(六)数组的排序方式
对数组中的数据进行排序,主要有以下四种方法:冒泡排序直接插入排序选择排序Shell排序(1)冒泡排序法:时间复杂度:O(n^2)空间复杂度:O(1)稳定性:稳定冒泡排序法的核心思想是将大的数据看作大的气泡,小的数据看作小的气泡,大的气泡降下去,小的气泡升上来。如图:如图,对数组中元素进行第一次排序,使1浮上来,将8沉了下去。代码示例: public static...
2018-11-22 13:21:13 199
原创 新手初入Java(四)数组
数组(array)是一种数据结构,包含相同类型的一组数据。数组本身是数组引用类型对象,数组元素可以是任何数据类型(简单类型或引用类型),包括数组类型。数组有一个&amp;amp;amp;quot; 秩(rank)&amp;amp;amp;quot;和长度,秩确定和每个数组元素关联的索引个数。1.数组的声明类型[] 数组变量名;类型 类型变量名[];例如:int[] array1;int array2[];2.数组的实例化和初始化数组在声
2018-11-16 13:57:41 126
原创 新手初入Java(五)数组的四种拷贝
(一)四种拷贝方式在日常编程的过程中,我们很有可能会用到对数组的拷贝。而拷贝主要有四种方式。for循环对数组中的元素进行拷贝 (浅拷贝)。clone (浅拷贝)System.arrayCopy() (浅拷贝)Arrays.copyof() (浅拷贝)(1)for循环对数组中的元素进行拷贝代码示例:public class TestDemo{ public static voi...
2018-11-15 23:42:33 190
原创 新手初入Java(三)程序流程和程序的调试
(一)程序流程Java程序语句执行的顺序包括4种基本控制结构:顺序结构、选择结构、循环结构和异常处理逻辑结构。1、顺序结构在Java程序中,语句执行的基本顺序按各语句出现的位置先后顺序执行,称之为顺序结构,如图所示,先执行语句块1,在执行语句块2,最后执行语句块3,三者是顺序执行关系。2、选择结构(1)if语句if条件语句包含多种形式,单分支,双分支和多分支,其流程如下:单分支...
2018-11-09 13:49:03 481
原创 新手初入Java(二)数据类型、变量和常量以及拆包和
数据类型、变量和常量以及拆包和装包一、数据类型Java数据类型分为基本类型(primitive types)和引用类型(reference type),其中基本类型又分为数值型、字符型、布尔型。引用类型又分为类类型、接口类型、数组类型、null类型。这两种大的类型包含了int,double,char,等许多。其关系如下图:其中:byte字节型1字节 8bit 最大存储数据量是255,...
2018-11-07 00:12:47 345
原创 Java利用for循环产生20个随机数(在一定范围内)
解决思路:要产生随机数,就需要用到Random()函数,Random()函数的作用是产生随机数。而在你使用Random()函数产生随机数时,编译器会导入包成员,位置在程序开头。包成员在另外一个博客(新手初入Java)中有简单描述; 博主使用的编译器是JetBrains公司的IDEA。下面为一个例子:代码如下:先声明函数://在10到20之间产生20个随机数;public static ...
2018-11-06 21:29:55 13247
原创 新手初入Java
1. 初识JAVAJAVA语言简单介绍作为现如今最热门的编程语言之一,Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。Java具有简单性、面向对象、分布式、健壮性、安全性、...
2018-11-04 23:36:38 385
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人