自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 SSM框架整合再回顾

在这不一一去描述具体的步骤去搭建,一下整理出一个搭建的基础框架,可以再原有的基础上进行业务编码。mybatis配置文件内容 mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.

2021-03-19 13:42:30 209

原创 java程序中如何实现src中类拿到properties文件中的数据

新创建的一个普通的项目想要去连接数据库,但是有些参数想要放在单独的文件中,然后去读取,怎么去实现呢?我们把这些参数数据放在单独的properties文件中,这样以后如果要对数据修改就会方便多,不需要再去代码中进行修改,使用起来就比较灵活便捷,下面可以去使用代码具体的实现。package com.Utils;import java.io.InputStream;import java.util.Properties;public class JdbcUtils { static {

2021-02-02 15:20:47 223 3

转载 三大范式

链接: ttps://www.cnblogs.com/wsg25/p/9615100.html.

2021-02-02 14:06:00 222

原创 mysql命令行备份

其实数据库的备份有多种,常用到的是在持久化到硬盘指定的位置上直接拷贝,或者是在sql可视化工具上直接去转储备份,今天可以来复习了解下如何使用命令行实现备份及sql文件的导入。命令行实现sql备份:接下来看一下导入:1.进入到mysql2.使用到具体的数据库3.使用命令:这样就完成了。...

2021-02-02 13:19:42 281

原创 事务ASID原则

事务的ACID原则分别是Atomicity(原子性):要么同时成功,要么同时失败,不会出现一个失败一个成功的情况。Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破怀。Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致的数据不一致。Durability(持久性):意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚隔离性导致的问题脏读:一

2021-02-01 17:14:45 518 1

原创 MySQL常用函数

数学运算SELECT ABS(-5) -- 绝对值SELECT CEILING(3.4) -- 向上取整SELECT FLOOR(3.4) -- 向下取整SELECT RAND() -- 随机数SELECT SIGN(10) -- 判断一个数的符号, 1为正,-1为负字符串SELECT CHAR_LENGTH('adasdasdasdas') -- 获取字符串的长度SELECT CONCAT('我','Java') -- 字符串拼接SELECT .

2021-02-01 13:13:05 95

原创 MySQL数据库实现分页和排序

关键字的语法顺序,不能颠倒顺序。语法:【order by 字段 ASC/DESC】【limit 起始坐标,每页长度】

2021-02-01 10:28:04 253

原创 设计模式之工厂模式

工厂模式的作用是:实现创建者和调用者的分离。详细分类:简单工厂模式工厂方法模式抽象工厂模式一、简单工厂模式废话不多说上代码。以车为例有不同品牌的车,静态工厂,还有消费者,这个静态工厂就是简单工厂模式。//车接口package com.qingfeng.factory.simple;public interface Car { void name();}//奥迪package com.qingfeng.factory.simple;public class Au

2021-02-01 09:35:04 83

原创 数据库中清空表内容的两种方式比较(delete和TRUNCATE的区别)

当在数据库中清空表的时候,会有两种清空表内容的方式,分别是:delete使用语句:delete from table1 (当然我们在使用delete删除数据时通常删除的是具体的行数据)truncatetruncate table table1 (这里最好带上table说明删除的是表也是为了安全)测试:1、先创建表,插入数据CREATE TABLE `test`( `id` INT(10) NOT NULL AUTO_INCREMENT COMMENT 'id',

2021-01-29 17:31:46 2510

原创 你真正的会使用for循环吗?

话不多说咱直接上代码package com.yy;public class ForDemo { public static void main(String[] args) { for (int i = 0; i < 5; i++) { for (int j =0; j<5; j++){ System.out.print("*"); if(j==2){

2021-01-28 11:03:00 79

原创 SSM框架精选50道面试题

详细见: SSM框架精选50道面试题

2021-01-27 17:32:32 717 1

原创 缓冲和缓存的区别

缓冲 Buffer缓冲的作用是协调上下层应用之间的性能差异。在上层应用中流量可能比较大,速度比较快,下层应用流量小,处理速度慢,这样很难去协调好处理的问题,下层应用很难去接收那么多数据,所以中间加了一个缓冲区去协调好上层应用与下层应用之间的协调问题。通过缓冲区的缓冲,当上层组件性能优于下层组件的时候,缓冲可以有效减少上层组件对下层组件等待的时间。有这样的缓冲区的存在,上层组件就不需要等待下层组件完全接收全部数据,就可以返回进行其他操作,加快了上层组件的处理速度,从而提升整个系统的性能。在消息队列中

2021-01-27 14:05:42 2478

原创 JMM及Volatile

了解JMM需要我们去知道什么是Volatile。谈谈你对Volatile的理解:1.保证可见性2.不保证原子性3.禁止指令重排那么什么是JMM呢?其实JMM只是一个概念,并不是显示存在的东西。JMM:Java内存模型关于JMM的同步约定:1.线程解锁前需要共享变量立刻刷到主存中。2.线程加锁前必须读取主存中的最新值到工作内存中。3.加锁和解锁必须是一把锁。内存划分JMM的内存主要划分为主内存和工作内存内存相关操作内存交互操作有8种,虚拟机实现必须保证每一个操作都是原子的

2021-01-26 17:43:51 156 1

原创 ForkJoin分支合并

所谓分支合并就是将任务分解为多个小任务,从小任务中得到不同的结果,再将结果合并为总的结果。我们通过代码的方式去理解Fork Join。package com.ys.forkjoin;import java.util.concurrent.RecursiveTask;/** * 使用forkjoin处理大数据量相加问题, 可以解决效率问题 */public class Demo1 extends RecursiveTask<Long> { private Long sta

2021-01-26 15:31:42 111

原创 Stream 流式计算

package com.ys.function;import java.util.Arrays;import java.util.List;/** * 对5个对象进行筛选 * 1.ID必须是偶数 * 2.年龄必须大于23 * 3.用户名转为大写字母 * 4.用户名字母倒序 * 5.输出一个用户 * */public class Demo5 { public static void main(String[] args) { User u1 = new .

2021-01-26 14:15:57 114

原创 四大函数式接口

函数式接口:一个接口中只包含一个方法,例如Runnable和Callable接口,分别只有一个run()和call()。Consumer :消费型接口只有输入,没有返回package com.ys.function;import java.util.function.Consumer;public class Demo3 { public static void main(String[] args) {// Consumer<String> cons

2021-01-26 13:37:25 101

原创 线程池

我们需要去理解池化技术。池化技术可以优化资源的使用,我们常见的池有线程池、常量池、连接池等。池化说简单点就是预先准备好,然后需要拿的直接过来拿取,用完之后在进行归还。线程池的好处是什么?可以控制并发量,实现线程的复用及线程的管理。降低资源的消耗方便对线程的管理提高系统的运行速度线程池我们需要了解什么东西?1. 三大方法2. 七大参数3. 四种拒绝策略线程池的三大方法ExecutorService threadPool = Executors.newSingleThreadEx

2021-01-23 20:43:05 100

原创 阻塞队列BlockingQueue

对于阻塞队列的理解:一个队列会进行写、取操作,我们都知道队列的先进先出的(FIFO),对于写入来讲 阻塞情况的发生是:当队列满了,无法进行写操作时就会发生阻塞。对于取来说,队列中没有数据就会发生阻塞等待,等待着生产。 这两种情况是不得不阻塞。对于BlockingQueue我们可以去了解它的继承关系。队列的使用:添加和移除,BlockingQueue有四组API,分别是在超出容量和取不到元素时是抛出异常还是给出返回值亦或进行阻塞等待还是进行超时等待。要进行不同的结果需要使用不同的方法。

2021-01-23 17:06:49 62

原创 读写锁ReadWriteLock

ReadWriteLock是一把读写锁,更加的细粒,我们通过普通的锁也可以完成但是这把锁更加的具有针对性。我们来代码实验,先看看没有锁的package com.rw;import java.util.HashMap;import java.util.Map;public class ReadWriteLockDemo { public static void main(String[] args) { MyCache myCache = new MyCache();

2021-01-23 15:42:25 76

原创 JUC—CountDownLatch(减法计数器)、CyclicBarrier(加法计数器)、Semaphore(计数信号量)

CountDownLatch(减法计数器)代码理解:package com.CountDownLatch;import java.util.concurrent.CountDownLatch;public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new Co

2021-01-23 14:48:45 366

原创 Callable创建线程的原理

我们都知道创建线程的常用两种方式是:1.继承Thread 类,重写run方法2.实现Runnable接口,重写run方法。但是还有一种不常见的线程创建方式就是实现Callable接口,实现call方法。实现Callable接口会返回一个返回值。public interface Callable返回结果并可能引发异常的任务。 实现者定义一个没有参数的单一方法,称为call 。 Callable接口类似于Runnable ,因为它们都是为其实例可能由另一个线程执行的类设计的。 然而,A Runnable

2021-01-23 13:09:21 308 2

原创 集合类不安全问题解决方案

一、List我们来看一下ArrayList的线程安全吗?package com.yy;import java.util.*;import java.util.concurrent.CopyOnWriteArrayList;public class ListTest { public static void main(String[] args) { List<String> list = new ArrayList<>(); f

2021-01-22 15:29:15 192 1

原创 八锁现象理解锁

接下来以代码为例来理解锁的八种情况:TimeUtils工具类:API提供的常用工具类,时间处理。1、以下代码是先发短信还是先打电话?package com.yy;import java.util.concurrent.TimeUnit;public class Test1 { public static void main(String[] args) { Phone phone = new Phone(); new Th

2021-01-20 23:04:50 274

原创 GET和POST请求的本质区别

GET和POST请求在开发过程中的使用是必不可少的,要说到他们的区别对于接触过开发的人来说都可以说出个一二三四来。首先最为直观的区别就是GET请求把参数包含在URL中,而POST通过request body传递参数。当我们在面试web开发时很有可能会问到这两种请求,那么我们就会提前把准备好的稿子给背一遍,不知道你们是怎么样的?面试官:你知道GET请求和POST请求的区别吗?我:瞬间感觉自己是不是很nice… 内心窃喜自己背过,舒服了。但是面试官瞬间眉头紧锁,这不是我要的答案,我是在想问你它俩的本质

2021-01-20 17:35:14 119

原创 Lock锁、Condition实现精准通知对象

在了解Lock锁之前我们需要去了解一下Synchronized。锁是什么?锁是用于通过多个线程控制对共享资源的访问的工具。Synchronized是Java中的一个关键字,在并发编程中要考虑线程安全问题,关键字Synchronized保证了同一时刻只有一个线程可以执行代码块或者方法。Synchronized作用于实例方法当两个线程同时对一个对象的一个方法进行操作时,只有一个线程能够抢到锁,一个线程抢到该对象的锁之后其他对象就无法去抢到该锁,只有等到获取到锁的对象释放锁之后,其他线程才能去获取

2021-01-19 20:52:15 125

原创 HTTP协议和HTTPS协议

在我们去访问一个网站的时候我们可以观察地址的URL,举例:这是一个https协议。可以观察下前面的锁符号。观察到的信息可以看初https给我们提供了访问数据的安全性。而对于http协议我们可以去了解一下。1. HTTP协议1.1HTTP协议介绍http协议是一种基于文本的传输协议,位于网络模型的应用层。HTTP协议通过服务器和客户端的应答请求来进行通信,但是http协议是不安全的,会存在着中间人的信息攻击,修改数据。HTTP协议中的报文以明文的方式进行传输,没有做加密,由此http传输的过

2021-01-18 11:28:29 1904

原创 线程池

线程池的创建:JDK为我们提供了创建线程池的工具类-Executors线程池的大小还有一个创建线程池的方法,就是去创建一个ThreadPoolExecutor,我们可以在Executors工具类中看到它也是new了一个ThreadPoolExecutor,可以到ThreadPoolExecutor的源码中看看:/** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters

2021-01-17 20:05:43 43

原创 生产者消费者问题

解决生产者消费者问题的两个办法管程法生产者:负责生产数据的模块消费者:负责处理数据的模块缓冲区:消费者不能直接使用生产者的数据,他们之间加了一个缓冲区,生产者将生产好的数据放入缓冲区,消费者从缓冲区中取数据。实现代码:package com.yys.PC;/** * 管程法 * * 生产者、消费者、产品、缓冲区 */public class TestPC { public static void main(String[] args) { SynCo

2021-01-17 19:43:33 88

原创 Lock(锁)

JDK5以后提供了一个更加强大的线程同步机制—通过显式定义同步锁对象来实现同步,同步锁使用Lock对象。ReentrantLock类实现了Lock,它拥有synchronized相同的并发性和内存语言,在实现线程安全的控制中,比较长使用的是ReentrantLock,可以加锁和释放锁。我们可以通过简单的实现抢票来观察:package com.yys;import java.util.concurrent.locks.ReentrantLock;public class TestLock {

2021-01-17 17:56:17 85

原创 注解

内置注解@Override:指示一个方法申明要覆盖一个超类中的方法申明@Deprecated:方法不建议使用,通常是因为有危险或者是存在着更好的选择。@SuppressWarnings :存在警告信息,未被使用,可以使用该注解警告就会得到抑制。@SafeVarargs :使用此注释类型时,将抑制与varargs使用相关的未检查的警告。元注解Java5.0定义的元注解:    1.@Target,    2.@Retention,    3.@Documented,    4.@.

2021-01-17 15:53:10 62

原创 静态代理模式

以现实结婚为例,婚庆公司作为代理对象,结婚的人作为真实对象。package com.yys.proxy;/** * 模拟结婚: 婚庆公司为代理 */public class StaticProxy { public static void main(String[] args) { WeddingCompany weddingCompany = new WeddingCompany(new Zhangsan()); weddingCompany.mar

2021-01-15 19:36:42 65

原创 龟兔赛跑问题理解对线程

package com.yys.thread;public class Race implements Runnable { public static String winner; @Override public void run() { for (int i = 0; i <=100 ; i++) { //模拟兔子睡觉 if(Thread.currentThread().getName().equ

2021-01-15 14:50:07 105

原创 Java面试题(1)

1、 JDK和JRE的区别?JDK:Java开发工具包。提供了java的开发环境和运行环境。JRE:java运行环境,为java的运行提供了所需要的环境。具体来说JDK包含了JRE,同时包含了编译java源码的编译器javac,还包含了调试分析工具。如果我们只需要去跑java程序,我们只需要去安装JRE就可以,如果是编写Java程序安装JDK。2、== 和equals的区别是?==:分为堆基础类型和引用类型,对两者的作用是不同的。基础类型:比较的是值是否相同。引用类型:比较的是.

2021-01-14 20:25:21 52

原创 Java对象实例化过程

我们通过一个对象的实例化来分析对象实例化的过程:创建一个Person类:package com.yys;public class Person { public String name; public int age; public void eat(){ System.out.println("吃饭"); }}再创建一个类来调用Person类package com.yys;public class App { public s

2021-01-14 19:55:24 367 1

转载 JVM面试题

找到了一篇关于JVM面试题的博客,每道题都有博主的解题思路: 常见JVM面试题及答案整理.

2021-01-14 16:33:27 128

原创 GC垃圾回收器

我们要去了解垃圾回收器就要只要它是干嘛的,见字如意,是做JVM中区域的垃圾回收的。在JVM的哪块去做垃圾回收呢?在JVM中的 方法区和堆JVM在进行GC的时候三个区域进行垃圾回收:新生代幸存区老年区但不是对三个区域同时进行回收。 大部分的回收是在新生代。GC分为两类:普通GC全局GC普通GC主要是对新生代进行垃圾回收,全局GC是对全部的区域进行垃圾回收,释放内存。对于幸存区是会交换的, 幸存区from ,幸存区 to ,两者是可以交换的。当一个区域中有数据而另外一个区

2021-01-14 16:01:57 275

原创 Jprofiler分析OOM原因

当程序出现了OOM错误,我们可以使用Jpofiler进行分析错误原因。快速定位到内存泄露的位置,并且获取到堆中的数据。安装Jprofiler应用和在IDEA中集成Jprofiler插件我们可以用代码测试一下配置一下VM参数运行:我们可以在Jprofiler应用上查看:关于参数:-Xms 设置初始化内存大小;-Xmx设置最大分配内存。-XX:+… :设置打印的信息。例如:HeapDumpOnOutOfMemoryErrorPrintGCDetails为什么堆中有垃圾

2021-01-14 14:04:39 591

原创 JVM —堆内存区域的认识

一个JVM只有一个堆,堆的大小是可以调节的。堆中存放的内容:当类加载器读取完类文件后,会把类,方法,常量,变量等存放在堆中,保存的是我们所有引用对象的真实对象,也就是真实引用对象的数据等。堆内存中的三个区域:新生区老年区永久区堆中要进行垃圾回收(GC)GC垃圾回收主要是在伊甸园区和老年区。堆内存溢出就是OOM。就是在连老年区都溢出了之后,整个内存已经无法承受,就会报出堆内存溢出的错误。JDK1.8以后,永久存储区叫做元空间。对堆中区域的理解:伊甸园区是对象创建的区域,但是伊甸

2021-01-13 22:42:44 707

原创 Java沙箱机制

JVM 沙箱安全机制Java安全的核心就是Java沙箱,沙箱是限制程序运行的环境。沙箱机制将java代码限制在JVM特定的运行环境。,严格限制代码对本地资源的访问,保证了代码的有效隔离,防止对本地系统造成破坏。沙箱主要是限制系统资源的访问。组成沙箱的基本组件:字节码校验器 :保证了java类文件遵循Java语言规范。并不是所有的类文件都要经过字节码校验,例如核心包下的类类加载器类加载器在三个方面对沙箱起作用​ 1)阻止恶意代码干涉善意的代码。​ 2)守护被信任的类库边界。​

2021-01-12 18:49:06 300

原创 JVM之体系结构、类加载器的认识及双亲委派机制的了解

JVM所处的位置JVM的体系结构垃圾回收主要是在方法区和堆中。

2021-01-12 13:19:35 96

空空如也

空空如也

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

TA关注的人

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