框架-SpringMVC 一、前置知识(Thymeleaf)什么是ThymeleafThymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎。 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的html文档。从字面上理解模板引擎,最重要的就是模板二字,这个意思就是做好一个模板后套入对应位置的数据,最终以 2022-07-04 FrameWork #总结 #框架 #SpringMVC
框架-Spring 一、Spring框架概述1、Spring是轻量级的开源的javaEE框架。 2、Spring可以解决企业应用开发的复杂性。 3、Spring的核心:IOC,AOP IOC:控制反转(Inversion of Control),把创建对象的过程交给Spring容器进行管理 AOP:面向切面,不修改源代码进行功能增强 4、Spring特点 方便解耦,简化开发 AOP编程支持 方便程序测试(jun 2022-07-02 FrameWork #总结 #Spring #AOP #IOC #框架
Redis 1.Redis的简单介绍Redis 诞生于 2009 年,全称是 Remote Dictionary Server , 远程词典服务器, 是一个基于内存的键值型 NoSQL 数据库。Redis是一个key-value的数据库 特征: 键值( key-value ) 型, value 支持多种不同数据结构, 功能丰富 单线程, 每个命令具备原子性 低延迟, 速度快(基于内存、 I O 多路复 2022-05-22 Redis #总结 #redis
Java网络编程-Netty 官网上给Netty的定义是: Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. 即Netty是一个异步的、基于事件驱动的、网络应用框架, 2022-05-20 Java-网络编程 #java #netty #NIO #总结
KMP 1.发现问题给定一个字符串s1 “aaaaaab”,以及一个模式字符串s2 “aaab”,如果要判断字符串2是否是字符串1的子串,即两个字符串是否匹配,正常情况下,我们会挨个比较,比如先判断s1[0]==s2[0],然后判断s1[1]==s2[1],然后是s1[2]==s2[2],然后是s1[3]!=s2[3],所以我们会从s 2022-05-16 DateStructure #数据结构 #KMP算法
Java网络编程-NIO 网络编程实际上是进程间的通信。 1.IO 计算机处理数据的基本单位是字节。如果我们想要表示一个字符,比如char类型的,就需要使用2个字节表示,或者汉字,在utf8编码中需要3个字节表示。为了让计算机能直接处理字符,io流中就提供了字符流,即数据源是字符,在计算机中再把这些字符转换成字节进行处理。 字符流 CharArrayReader,数据源是字符数组,从这里读取数据。 CharArrayW 2022-04-27 IO #java #NIO #总结 #BIO #AIO
Java多线程-java内存模型 1.JMMjava内存模型:JMM是一组规范,需要各个JVM的实现来遵守JMM规范,以便于开发者可以利用这些规范,更方便地开发多线程程序,如果没有这样的一个JMM内存模型来规范,那么很可能经过了不同JVM的不同规则的重排序之后,导致不同的虚拟机上运行的结果不一样,那是很大的问题。 JMM最重要的3点内容是:原子性,可见性,有序性。 jvm内存结构:堆、虚拟机栈、方法区、本地方法栈、程序计数器 ja 2022-04-18 JUC #总结 #juc #并发编程 #JMM
Java多线程-CAS 1.乐观锁/悲观锁他们不是指具体的什么类型的锁,而是指看待并发同步的角度。 悲观锁:总是假设最坏的情况,每次拿数据都认为别人会修改数据,所以当自己进入临界区的时候要加锁,别人只能等待,直到我释放锁才能拿到锁;悲观的认为,不加锁的并发操作一定会出问题。synchronized和ReentrantLock是悲观锁的思想。 乐观锁:总是假设最好的情况,每次拿数据都认为别人不会修改数据,所以不会 2022-04-15 JUC #总结 #juc #并发编程 #cas
Java多线程-Synchronized 1.Synchronized的作用Synchronized是同步、在时间上一致的意思。能够保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果。 Synchronized可以保证数据的可见性,即一个线程执行一系列操作后,另一个线程获取到正确的结果。 2.Synchronized的两个用法2.1 对象锁2.1.1 方法锁在方法签名上加锁,synchronized修饰普通方法,默认锁对 2022-04-14 JUC #总结 #juc #并发编程 #Synchronized关键字
Comparator比较器 需要重写compare(Object o1,Object o2)方法。 一般是用于java对象的排序 12345678910111213class MyComparator implements Comparator<Integer> { @Override public int compare(Integer o1, Integer o2) { 2022-04-10 比较器 #java #问题