自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (1)
  • 收藏
  • 关注

原创 在eclipse中修改了数据库连接池的url,却还是连接到原来的数据库(解决!!!超有效的办法)

问题描述:修改了数据库连接池的url,却还是会连接到原来的数据库原代码如下:<!-- 数据库连接字符串 --> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/shopping"></property>修改数据库以后的代码:<!-- 数据库连接字符串 --> <property name="jdbcUrl" value="jdbc:my...

2020-10-12 09:22:43 1816

原创 链栈的操作实现 初始化/判空/进栈/出栈/获取栈顶元素

定义链栈结构 ,其实质是一个受限的单链表typedef struct LinkStack{ ElemType data; struct LinkStack *next;}LinkStack;不带头结点的链栈的操作初始化LinkStack * Init(LinkStack *top){ top = NULL ; return top ;}判链栈空int isempty(LinkStack *top){ if(top == NULL)

2020-09-15 22:41:19 4745

原创 解决 IDEA 中 sun.misc.BASE64Encoder 找不到jar包 的问题

在运行项目时,IDEA报出以下错误:原因:import sun.misc.BASE64Decoder;在项目中,设计到64位编码的。有时开发会用到JDK中自带的BASE64工具。但sun公司是建议不这样做的。尤其是更新了JDK版本,项目甚至还存在保存的信息。可引用 import org.apache.commons.codec.binary.Base64;进行替换解决方案:原来使用的JDK自带jar包中的return new BASE64Encoder().encode(encrypted)

2020-08-25 17:45:56 1468 1

原创 web——day02

复习1.html:浏览器解析执行2.结构 <html> <head></head> <body></body> </html>3.常用标签 <br> <p> <h1-6> <img src=""> <a href="http://....."> <a id=""> <a href="#idname"&gt

2020-08-18 16:55:56 223

原创 html和css的常用标签及练习

1.htmlhtml:显示数据结构<html> <head> <title></title> </head> <body> hello! </body></Html><h>设置标题 h1----h6<img> 图片<a> 超级链接<table><tr><td><th>列表自定义

2020-08-17 19:38:44 268

原创 Hashtable 和 ConcurrentHashMap是怎样保证线程安全的?

在多线程的环境下HashMap是线程不安全的,那么我们该如何处理这样的情况?通常有三种方式:使用Collections.synchronizedMap(Map)创建线程安全的map集合使用Hashtable使用ConcurrentHashMap类不过由于前两个并发度的原因,通常会选择第三个,它的效率和性能明显要比前两个高。1.Collections.synchronizedMap(Map)是如何实现线程安全的?我们来看SynchronizedMap的源码,如图SynchronizedMap

2020-08-14 23:49:33 349

原创 为什么 Hashtable 和 ConcurrentHashmap 键和值不能为null,而hashmap可以?

HashMap允许一个 null键,多个 null值,而 Hashtable不允许键和值为null。从下图可以看到 HashMap 对 null 做了特殊处理:但是 Hashtable 会在我们 put 空值的时候直接抛出空指针异常,如下图:不过更详细的原因是因为 Hashtable 采用了安全失败机制(fail-safe),导致当前得到的数据不一定是集合最新的数据。如果使用null值,就不能判断到底是映射的value是null,还是因为没有找到对应的key而为空,因为你无法再调用contain

2020-08-14 21:57:50 1157

原创 为什么HashMap是线程不安全的?(分析 jdk1.7和1.8)

前言我们都知道HashMap是线程不安全的,只知道它源码中put/get方法都没有加同步锁,多线程操作会无法保证安全,但是除了这一点,它到底为什么线程不安全??在本章就让我们来深入了解一下HashMap线程不安全的问题。HashMap是线程不安全的,其主要体现:在jdk1.7中,在多线程环境下,扩容时会造成环形链或数据丢失。在jdk1.8中,在多线程环境下,会发生数据覆盖的情况。1.jdk1.7中的HashMap在多线程环境下HashMap容易出现死循环,死循环发生在HashMap的扩容函数

2020-08-12 22:37:58 698

原创 HashMap底层原理(详解及源码分析)

数组:是具有相同数据类型的元素的集合,采用连续的内存空间存储数据。对于指定下标的查找,时间复杂度为 O(1) ;通过给定值进行查找,由于要遍历数组,所以时间复杂度为 O(n) ;如果是一维的有序数组进行二分查找,其时间复杂度就是 O(log n),如果是二维的有序矩阵进行查找,就是 O(n);对于添加和删除操作,要移动数组元素,其平均复杂度也为 O(n)。由此可见,数组查询数据快,但是增删比较慢。链表:是一种线性表,但是不会按照线性的顺序存储数据,而是在每一个节点里存放了到下一个节点的指针。存储区间离散,

2020-08-11 23:46:35 546 1

转载 java只用7行代码实现“同一账号不能重复登录”

我们平时登录qq时,如果已经登录,则会提示不能重复登陆。可以在登陆时获取当前用户的sessionId ServletContext application = session.getServletContext(); String sessionId = (String) application.getAttribute(user.getUsername()); //获取登录用户的 sessionId if (sessionId!=null && !"".e

2020-08-10 23:10:14 1331

原创 Java代码解析xml文件和spring中的注解(详细代码说明)

解析xml1.导包2.写xml文件emp.xml<?xml version="1.0" encoding="UTF-8"?><emps> <!--属性 --> <emp id="0001"> <!-- 文本节点 --> <name>张三</name> <age>18</age> <salary>8000</salary> <

2020-08-10 14:45:22 512

原创 结合LeeCode的实战题目 Climbling Stairs来学习如何看读程序判定时间和空间复杂度

时间复杂度七种时间复杂度:O(1): Constant Complexity 常数复杂度O(log n): Logarithmic Complexity 对数复杂度O(n): Linear Complexity 线性时间复杂度O(n^2): N square Complexity 平方O(n^3): N cubic Complexity 立方O(2^n): Exponential Growth 指数O(n!): Factorial 阶乘注意:只看最高复杂度的运算注意:前面的常数系

2020-08-08 23:32:40 208 2

原创 如何理解反射?

反射:程序运行过程中,可以获取到类的构造方法,成员变量(包括私有的)方法,对象使用类成员,我们把获取类成员和对象调用类成员机制,叫反射。Class:封装了大量的方法,通过方法可以获取到构造方法,方法,成员变量获取Class类的对象3种方法://获取Class类的对象3种方法 public static void test1() throws ClassNotFoundException { //通过对象 Class<? extends Student> clazz=new St

2020-08-07 17:48:05 161

原创 Java集合——Map、栈、队列

Mapk-vpublic class Demo { public static void main(String[] args) { Map<String,Object> map=new HashMap<>(); map.put("a", 11); map.put("b","zy"); //key同,是修改value值 map.put("b","aa"); map.put("c","t"); map.remove("c"); //获取一个不存在

2020-08-07 13:10:45 378

原创 Docker安装配置Mysql和Rdedis的详细过程

docker安装mysql1.下载mysql镜像文件docker会从镜像仓库下载mysql,接下来我以下载mysql5.7为例,命令如下:sudo docker pull mysql:5.7此时查看镜像,就会发现mysql已经存在:sudo docker images2.创建实例并启动docker运行mysql命令:docker run -p 3306:3306 --name mysql \-v /mydata/mysql/log:/var/log/mysql \-v /myda

2020-08-06 13:19:02 181

原创 最简单的Ubuntu16.04上Docker的安装及阿里云镜像加速(亲测有效)

Docker安装验证$ sudo docker -v查看Docker安装版本详细信息:$ sudo docker version启动Docker查看docker服务是否启动:$ sudo systemctl status docker如果Docker未启动,则启动Docker:$ sudo systemctl start docker配置docker开机自启动,这样就不需要每次都执行上面的start运行Hello World,校验Docker是否安装成功:$ sudo docke

2020-08-05 23:19:27 422

原创 疯狂java——集合、泛型、Stream

前言:之前我们学习了使用数组来保存多个对象,但数组长度不可变化,如果需要保存数量变化的数据,数组就有点无能为力了。list,set,map特点图Set 代表无序、不可重复的集合 List 表有序、重复的集合 ;而Map 则代表具有映射关系的集合,集合里必须是引用类型方法:测试collection接口的常用方法://测试collection接口的常用方法public class Demo1 { /** * 泛型是jdk5.0才出现的 * Collection<String&g

2020-08-05 18:22:21 284

原创 Ubuntu上安装Docker

在安装之前,务必确认你的系统是Ubuntu,可以用linux命令知道系统是ubuntu还是centos?如果是Unbuntu,你就可以通过下面的命令来安装Docker了。。从Ubuntu的仓库直接下载安装:$ sudo apt install docker.io $ sudo systemctl start docker$ sudo systemctl enable docker查看是否安装成功docker -v...

2020-08-04 18:51:49 65

原创 Linux 文本编辑常用快捷键

一、 三种模式vim有三种编辑模式:i 进入文本编辑模式esc 进入命令编辑模式命令编辑状态下 dd删除整行: 进入底行模式底行模式状态:输入q 退出 w保存 wq 保存并退出 ! 表示强制的意思q!强制退出二 、编辑文本常用快捷键插入命令a  在光标后附加文本A  在本行行末附件文本i  在光标前插入文本I  在本行开始插入文本o  在光标下插入文本O  在光标上插入文本删除命令x  删除光标所在的字符nx  删除光标所在处后n个字符

2020-08-04 16:58:08 333

原创 没有已启用的仓库。 执行 “yum repolist all“ 查看您拥有的仓库。

问题:使用yum install命令报错,显示:没有已启用的仓库。执行 “yum repolist all” 查看您拥有的仓库。您可以用 yum-config-manager --enable &lt;仓库名&gt; 来启用仓库原因:ubuntu默认软件包管理器不是yum,安装软件时需用apt-get,所以:将上面代码改为::sudo apt-get install -y yum-utils 就可以了。...

2020-08-03 23:07:47 28411

原创 Java网络编程——TCP通信和UDP通信

网络编程概述计算机网络:网络模型(OSI开放式系统互联。国际标准组织制定了OSI七层网络模型(Open System Interconnection)模型):物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 协议:事先规定好的通信规则协议分类:共有的,私有的 网络层:ip 传输层:udp,tcp 应用层:ftp http https。。。注意:udp快,不保证数据安全tcp保证安全,但效率没有udp高ht

2020-08-03 19:05:21 207

原创 Ubuntu中显示yum命令找不到

在Linux安装软件时需要用到yum命令,由于没有yum,报错:sudo: yum: command not found解决方法:首先切换到root用户身份普通用户切换为root用户:在终端运行命令 sudo -s然后检测是否安装了build-essential程序包,输入命令:apt-get install build-essential安装yum,输入命令:apt-get install yumyum安装成功...

2020-08-01 08:48:52 91885 15

原创 代码演示“序列化版本号”到底有什么用??

在序列化存储/反序列化读取或者是序列化传输/反序列化接收时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。

2020-07-30 19:47:06 502

原创 【多线程】是啥?

线程程序:静态的代码进程:程序动态的执行过程线程:进程内最小的执行单位,动态执行的过程进程有自己独立的内存线程共享进程的资源,在进程内,每个线程可以完成独立的功能待更新!!!...

2020-07-30 19:23:57 162

原创 疯狂java------Java不同IO流读写数据

1.IO->Input Output2.按照流的读写方式:字节流和字符流3.按照流的方向:输入流和输出流 InputStream abstract修饰 Reader abstract OutputStream abstract Writer abstract4.输入流的核心方法:read()输出

2020-07-30 19:22:18 198

原创 在java程序中如何操作文件和目录(File类)

IO流File类:创建对象时,不能创建文件夹和文件,只是对文件的一个描述 //构造方法 public static void test1(){ File file = new File("c:\\a\\b\\a.txt"); File file2 = new File("c:\\a\\b","a.txt"); File path = new File("c:\\a\\b"); File file3 = new File(path,"a.t

2020-07-29 20:07:29 352

原创 java项目“自定义异常”的实现

异常1.继承关系Throwable (父类)两个子类:Error:不能处理的 XXXErrorException:能处理的 xxxException运行时异常(RuntimeException):NullPointerException,ArrayIndexOfBoundsExceptionStringIndexOfBoundsException,ArithmeticException等编译时产生的异常:IOException,FileNotFoundException,In

2020-07-29 19:57:46 366

原创 Math,日期相关的类(Date,Calendar, LocalDate类)

Math常用方法//常用方法 public static void test() { //取整 ,返回大于目标数的最大整数 System.out.println(Math.ceil(4.8)); //5.0 //取整 ,返回小于目标数的最小整数 System.out.println(Math.floor(4.8)); //4.0 } public static void test2() { //找出最大值 System.out.println(Math.max(2.3

2020-07-29 13:07:37 135 1

原创 增强的包装类、自动封箱和自动拆箱

Java8 增强的包装类所有引用类型的变量都继承了 Object类, 都可当成 Object 类型变量使用。但基本数据类型的变量就不可以,如果有个方法需要 Object 类型的参数,但实际需要的值却是2、3等数值,这可能就较难以处理。为了解决8种基本数据类型的变量不能当成 Object 类型变量使用的问题,Java 提供了包装类。基本数据类型包装类byteByteshortShortintIntegerlongLongcharCharacter

2020-07-28 20:07:08 152

原创 String的不可变误区???String,StringBuilder和StringBuffer 如何完成对字符串的操作?

要点:String,StringBuilder,StringBuffer区别String是不可变的StringBuilder,StringBuffer是可变的字符串StringBuilder是线程不安全的StringBuffer是线程安全的public class Demo { static void test1(){ String str = "a"; String str2 = str +"b"; str2 = new StringBuilder().append("b").t

2020-07-28 19:25:21 165

原创 神奇的正则表达式(校验邮箱,手机号,密码)

正则表达式:表示字符串的判断条件phone:1[356789][0-9]{9}// 判断字符串:// 由3个字母组成// 第一个字母是a/b/c// 第二个字母是d/e/f/g// 第三个字母是x/y/z// System.out.println(str.matches("[abc][defg][xyz]"));// 匹配由一个字母组成的字符串// System.out.println(str.matches("[a-zA-Z]"));// 匹配由一个数字组成的字符串// System

2020-07-28 17:10:18 327

原创 Object类的toString()方法,到底有什么特别?

在学习toString()方法之前,先看以下简单程序。class Person{ private String name; public Person(String name) { this.name = name; }}public class PrintObject{ public static void main(String[] args) { // 创建一个Person对象,将之赋给p变量 Person p = new Person("孙悟空"); // 打印

2020-07-27 22:13:11 219

原创 疯狂java——“==和 equals 方法”、常量池!!!

==和 equals 方法当使用==来判断两个变量是否相等时,如果两个变量是基本类型变量 ,且都是数值类型(不一定要求数据类型严格相同) ,则只要两个变量的值相等,就将返回 true。但对于两个引用类型变量,只有它们指向同一个对象时,==判断才会返回 true。==不可用于比较类型上没有父子关系的两个对象。下面程序示范了使用来判断两种类型变量是否相等的结果。public class EqualTest{ public static void main(String[] args) { int

2020-07-27 21:58:37 105

原创 疯狂java学习——“深克隆和浅克隆”

Java 提供了一个 protected 修饰的 clone()方法,该方法用于帮助其他对象来实现"自我克隆",也就是得到一个当前对象的副本。由于 Object 类提供的clone()方法使用了 protected 修饰,因此该方法只能被子类重写或调用。自定义类实现"克隆"的步骤如下。自定义类实现 Cloneable 接口。这是一个标记性的接口,实现该接口的对象可以实现"自我克隆",该接口里没有定义任何方法。自定义类实现自己的 clone()方法。实现 clone()方法时通过 **super.c

2020-07-27 21:50:36 106

原创 疯狂java学习→面向对象

Java8 增强的包装类所有引用类型的变量都继承了 Object类, 都可当成 Object 类型变量使用。但基本数据类型的变量就不可以,如果有个方法需要 Object 类型的参数,但实际需要的值却是2、3等数值,这可能就较难以处理。为了解决8种基本数据类型的变量不能当成 Object 类型变量使用的问题,Java 提供了包装类。基本数据类型包装类byteByteshortShortintIntegerlongLongcharCharacter

2020-07-26 21:45:54 113

原创 lambda表达式

lambda表达式1.函数式接口编程:接口中只有一个抽象方法,把方法通过匿名类实现的方式简化一个表达式的写法 lambda表达式2.() -> {}()表示形参列表->符号 goes to{}表示方法体//参数列表的数据类型可省,方法体有一条语句{}可以省略IA2 a2 = (x,y)->System.out.println(x+y);//如果参数列表是一个参数,()可以省略IA2 a2 = x->System.out.println(x);//如果方法体中有

2020-07-25 10:28:19 89

原创 java基础学习——>面向对象的三大特征:继承,封装,多态

面向对象的三大特征:继承,封装,多态封装:变量定义private ; set/get方法; 构造方法封装的实现:private的变量提供set/get方法练习:输出矩形的周长和面积public class Rectangle { private int chang; private int kuan; public int getChang() { return chang; } public void setChang(int chang) { if(ch

2020-07-22 20:23:30 226

原创 java面向对象的核心——类和对象

类和对象所有类是引用类型。定义类类是某一批对象的抽象,对象才是一个具体存在的实体。类和对象是面向对象的核心。Java 语言里定义类的简单语法如下:[修饰符] class 类名{ 零个到多个构造器定义. . . 零个到多个成员变量.. . 零个到多个方法. . . }在上面的语法格式中,修饰符可以是 public、 final、 abstract,或者完全省略这三个修饰符。需要指出的是, static 修饰的成员不能访问没有 static 修饰的成员

2020-07-21 20:21:56 1757

原创 Java 方法的参数传递机制及简单模拟注册功能

方法:1.方法的定义[访问修饰符 修饰符] 方法返回类型 方法名(形参列表) {方法体;}public private default(没有修饰符) protectedstatic返回类型:无返回值void,有返回值的 任何数据类型void里可以有return;public static void sum(){System.out.print(nums);return; 表示方法结束}如果方法有返回值,那么必须有return 返回值方法的返回值类型>=方法返

2020-07-21 14:04:20 107

原创 javaEE_day04☞java数组学习整理

理解数组数组也是一种数据类型, 它本身是一种引用类型。1.什么是数组:存储相同数据类型的容器2.特点:Java 的数组既可以存储基本类型的数据 ,也可以存储引用类型的数据,只要所有的数组元素具有相同的类型即可;有序的(下标,从0开始);一旦数组的初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度将不可改变。 (属性 length)即使把某个数组元素的数据清空 ,但它所占的空间依然被保留 ,依然属于该数组,数组的长度依然不变。定义数组数据元素的类型[] 数组名;int[] n

2020-07-20 19:39:56 110

学生管理系统.zip

整个系统是ssm框架(SpringMVC+Spring+Mybatis),前端采用的是bootstrap,因为页面用到了很多小图标,整个系统有基本的增删改查,如果你是第一次做SSM项目,可以参考一下,毕竟这个系统只实现了基本各种信息的增删改查,还存在一些不足,关于不足,需要改进的地方已做出说明。另外,sql文件也已放在文件夹中。

2020-08-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除