- 博客(60)
- 收藏
- 关注
原创 爬虫系统面试题
爬虫项目是通过spring boot框架和webmagic框架完成的,其本质就是不断向招聘网站发起HTTP请求,在响应中筛选出自己感兴趣的内容并加以分析。springboot框架对于ssm框架做了很多配置上的简化,再加上webmagic这样一个开源的Java爬虫框架,它的目标是简化爬虫的开发流程,让开发者我更专注于逻辑的开发,所以整个项目都非常简洁,配置也都不算复杂。
2022-09-02 20:03:32
497
原创 博客系统面试题
博客系统使用SSM框架写的,数据库使用的是MySQL,共有五个页面,分别是 登陆页面、写博客页面、博客列表页、博客详情页、后台管理页面。用户表(t_manager):账号id、账号名称、账号密码文章表(t_article):文章id、分类id、标题、内容、文章简介、状态、作者、发表时间、浏览量。博客/标签对应表(t_article_tag):文章id、标签id 标签表(t_tag):标签id、标签名称类别表(t_category):类别id、类别名称、图片样式、别名、排序。................
2022-08-31 14:47:57
726
原创 基于Springboot的爬虫项目
基于Springboot的爬虫项目爬虫基本原理爬虫定义爬虫用途整合步骤依赖集成设置springboot的parent引入web依赖引入Web Magic的maven依赖编写springboot启动类实现PageProcessor通过URL触发爬虫运行截图爬虫基本原理爬虫定义爬虫,全称是网络爬虫,又称为网⻚蜘蛛,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚本。爬虫用途搜索引擎:通过爬虫建立各网站内容的索引(比如:百度)数据采集分析:通过爬虫获取大量数据并加以分析。(分析竞品公司)其他等等
2022-04-18 18:11:13
2788
1
原创 SpringBoot整合mybatis
SpringBoot整合mybatis整合步骤1、依赖集成2、配置研究ORM框架mybatis和SpringBoot的整合。整合步骤1、依赖集成首先将mybatis的starter加入maven管理,是mybatis提供的: <!--mybatis依赖--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifa
2022-04-09 22:06:20
870
原创 SpringBoot介绍
SpringBoot介绍了解SpringBootSpringBoot快速入门设置SpringBoot的parent导入SpringBoot的web支持编写SpringBoot应用编写启动类运行服务测试了解SpringBootSpringBoot由spring框架延伸出来的。SpringBoot是一个快速开发框架,可以迅速搭建出一套基于SpringBoot框架体系的应用。SpringBoot开启了各种自动装配,从而简化代码开发,不需要编写各种配置文件,只需要引入相关的依赖就可以快速搭建一个应用。优势
2022-04-09 11:17:08
513
原创 Spring框架的深入
Spring框架的深入Spring Bean的实例化过程容器启动阶段Bean实例化阶段Spring Bean的实例化过程Spring管理对象,分为两部分:容器启动阶段Bean的实例化容器启动阶段配置元数据spring需要知道创建对象需要的必要信息,必要的信息可以是xml配置文件,或者是注解、也可以是直接代码硬编码,创建对象必须要的信息称之为配置元信息。 <bean id="student5" class="com.tulun.Spring.IOC.pojo.Student">
2022-03-29 17:26:05
527
原创 mybatis高级映射
mybatis高级映射订单数据模型分析思路一对一映射高级映射本质来说是多个表的联合查询的过程。订单数据模型分析思路数据表:用户表user:记录了购买商品的用户信息。订单表orders:记录了用户所创建的订单(购买商品的订单)订单明细表orderdetail:记录了订单的详细信息即购买商品的信息。商品表items:记录了商品信息。数据模型分析:表与表之间的业务关系user和orders:(一对多关系)user->orders:一个用户可以创建多个订单,一对多。orders-&g
2022-03-24 18:52:16
2076
原创 Mybatis的缓存机制
Mybatis的缓存机制mybatis的代理详解mybatis的缓存机制缓存介绍一级缓存一级缓存介绍一级缓存测试二级缓存二级缓存原理二级缓存使用步骤二级缓存使用测试mybatis的代理详解Java中动态代理主要是JDK动态代理(接口),CGLib动态代理(类继承) SqlSession sqlSession = sqlSessionFactory.openSession(); /** *在通过sqlSession.getMapper可以获取一个代理对象
2022-03-24 11:08:23
3800
原创 MySQL之事务
MySQL之事务并发事务问题脏数据(Dirty READ)不可重复读(UnrepeatableRead)幻读(phantom Read)事务隔离级别1、读取未提交:Read-Uncommitted2、读取已提交:Read-Committed(RC)3、可重复读:Repeatable-Read(RR)4、串行化:Serializable事务的隔离级别如何实现事务原理1、MVCC多版本控制机制2、事务日志redo logundo log并发事务问题在多个事务并发运行时,会遇到操作相同的数据来完成各自任务,可
2022-03-11 11:06:11
1326
原创 TCP和UDP介绍
传输层:TCP和UDPTCP协议TCP协议特点TCP编程TCP报文格式三次握手四次挥手TCP扩展问题TCP如何发送数据滑动窗口协议拥塞控制TCP协议如何保证数据的可靠性TCP协议TCP(Transmission Control Protocol:传输控制协议),是面向连接的传输层协议,TCP层是位于IP层之上,应用层之下的中间层,不同的主机的应用层之间进程需要可靠的,向管道一样的连接,但是IP层不提供这种流机制,而提供的是不可靠的包交换。TCP协议采用的是字节流传输数据。TCP协议特点1、面向连接
2022-02-27 20:22:33
2250
原创 计算机网络概述
网络概述计算机网络:通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互联起来,实现资源共享和数据传输的系统。网络编程:编写程序代码将两个或者两个以上的设备进行数据传输。OSI参考模型将复杂的网络问题根据功能划分到不同层次上,层与层直接通过接口连接。OSI(Open System Interconnection)开发互联参考模型,OSI将网络划分为7层:分别物理层,数据链路层,网络层,传输层,会话层、表示层和应用层。物理层OSI的最底层,涉及通信管道上传输的原始比特流,功能主
2022-02-27 10:53:21
1816
原创 设计模式----创建型设计模式(单例模式、工厂方法模式、构建者模式)
@TOC关注的问题:创建对象,将对象的创建和使用分离,这样的目的可以降低代码的耦合度的问题。单例模式、工厂模式、抽象工厂模式、建造者模式、原型模型单例模式(Singleton Pattern)单例介绍定义:单例模式(Singleton Pattern):保证一个类只有一个实例,并提供一个访问他的全局访问点。单例类图:单例中包含的角色:单例类:包含一个实例且能自行创建这个实例类单例模式特点:1、单例类只有一个实例对象2、单例对象必须由单例类自行创建3、单例类堆外提供一个可访问该
2022-02-25 14:20:58
448
原创 设计模式----行为型设计模式
行为型设计模式观察者模式观察者模式介绍代码实现观察者模式总结观察者模式在Java中的应用责任链模式责任链模式介绍责任链模式代码责任链模式总结责任链模式在Java中的应用模板模式模板模式的介绍代码实现模板模式总结模板模式在Java中的应用迭代器模式迭代器模式介绍迭代器模式总结迭代器模式在Java中的应用策略模式策略模式的介绍策略模式代码策略模式总结策略模式在Java中的应用行为性设计模式关注各个类之间的相互作用,将职责划分清除,使得代码更加清晰。行为性模式分为类行为模式和对象行为模式,类行为模式采用继承机
2022-02-24 18:03:17
1147
原创 BlockingQueue接口介绍
BlockingQueueBlockingQueue接口ArrayBlockingQueue:有界队列LinkedBlockingQueue:无界队列SynchronousQueue:同步队列队列对比对于Queue而言,blockingqueue是主要的线程安全的版本,具有阻塞功能,可以允许添加、删除元素被阻塞,直到成功为止,blockingqueue相对于Queue而言增加了两个方法put/take元素。BlockingQueue接口属于并发容器中的接口,在java.util.concurrent
2022-02-22 15:12:17
547
1
原创 ConcurrentHashMap介绍
ConcurrentHashMap介绍在JDK1,4之前只有vector和HashTable是线程安全集合,在JDK 5之开始增加了安全的Map接口ConcurrentMap和线程安全的队列BlockingQueue
2022-02-21 11:59:04
1282
原创 线程池介绍:ThreadPoolExecutor
线程池介绍:ThreadPoolExecutor线程池介绍多线程技术的不足之处(需要线程池的原因)什么是线程池线程池的架构线程池介绍多线程技术的不足之处(需要线程池的原因)多线程技术主要解决处理器单元内多个线程执行的问题,可以减少处理器单元的闲置时间,增加处理器单元吞吐能力,多线程的情况下确实可以最大限度发挥多核处理器的计算能力,但是如果随意使用多线程技术,对系统性能反而不利。● 创建和销毁线程是需要时间:假如一个服务器完成意向任务所需要的时间为:T1表示线程创建时间,T2表示线程执行任务时间,T3
2022-02-20 18:47:58
1190
原创 设计模式----结构型设计模式
结构性模式主要关注对象之间的关系,主要为了通过改变代码结构来达到解耦的目的,使代码容易维护和拓展结构型模式分为以下 7 种:代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。适配器(Adapter)模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。桥接(Bridge)模式:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现的,从而降低了
2022-02-18 18:50:43
553
原创 Lock和ReentrantLock
JDK 1.5中提供了锁的接口:java.util.concrrent.locks.lock,提供了ReentrankLock,ReentrankReadWriteLock实现类。Lock接口Lock接口提供了比Synchronized方法更加灵活的锁的操作接口,可以具有很大的属性,支持多个相关Condition对象(线程间通信,Object方法提供的wait、notify、notifyAll)Lock接口提供的方法操作:Lockvoid lock()获取锁,如果锁被使用会一直阻塞直至获取
2022-02-14 10:28:16
349
原创 Java中的锁及其优化
Java中的锁及其优化乐观锁和悲观锁悲观锁乐观锁CAS模拟CAS算法CAS中的ABA问题使用CAS会引发的问题Synchronized锁优化偏向锁轻量级锁重量级锁乐观锁和悲观锁悲观锁**总是假设最坏的情况,每次在去获取共享数据的时候都认为别人会修改,所以每次都在获取数据的时候加锁。**传统的关系型数据库里就用到很多这种锁,比如行锁,表锁、读锁、写锁等都是在操作之前先上锁,比如java中Synchronized关键字的实现也是悲观锁。悲观锁存在的问题:在多线程竞争下,加锁,释放锁会导致比较多的上下文
2022-02-13 12:41:21
904
原创 Redis高可用介绍
高可用基础-主从复制Redis的复制功能是支持将多个数据库之间进行数据同步,主数据库可以进行读写操作,当主数据库数据发生改变时会自动同步到从数据库,从数据库一般是只读的,会接收注数据库同步过来的数据。一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库默认情况下,每台服务器都是主节点,可以通过配置来设置Redis节点称为从数据库复制原理1、当启动一个从节点时,它会发送一个psync的命令给主节点2、如果是从节点初次连接到主节点,会触发一次全量复制,此时主节点会启动一个后台进程,
2022-01-14 14:29:55
179
原创 Redis缓存数据一致性及问题
如何保证缓存和数据库数据一致性缓存数据插入时机:对于服务器而言:查询数据步骤:1、首先到缓存查询数据,如果数据存在则直接获取数据返回2、如果缓存不存在,需要查询数据库,从数据库获取数据并插入缓存,将数据返回3、当第二次查询时,后续查询操作就可以查询缓存数据更新数据时操作:1、先删除缓存在更新数据库进行更新数据库数据时,先删除缓存,然后更新数据库,后续的请求再次读取数据时,会从数据库中读取数据更新到缓存存在问题:删除缓存之后,更新数据库之前,这个时间段内如果有新的请求过来,就会从数据库中读到
2022-01-13 22:58:18
274
原创 Redis内存淘汰策略
在redid作为缓存使用过的程中,当内存不足时,Redis根据配置进行缓存淘汰大部分keys,保证后续写入能够成功。内存维护解决方案redis的配置中没有设置最大的内存大小如果Redis没有设置最大内存大小或者设置为0,在64操作系统下Redis不限制使用内存大小,在32位操作系统下最多使用3/4内存空间内存操作命令:config get maxmemory :查看最大内存情况config set maxmemory value :设置大小info memory :查看当前Redis内存使用
2022-01-12 22:42:28
336
原创 Redis事务
Redis事务Redis事务可以一次执行国哥命令Redis事务就是一次性,顺序性,排他性的执行一个队列中的一系列的命令Redis不保证原子性Redis中,单条命令是原子执行的,但是事务不保证原子性,且没有回滚的概念。事务中任意命令执行失败,其余的 命令仍会执行。Redis事务是没有隔离级别的概念批量操作在发送exec命令前被放入队列,并不会实际执行,也就不存在事务内的查询要看到事务里的更新,事务外查询不能看到事务命令Redis的事务机制将批量操作的命令放入到队列缓存,在执行exec命令之
2022-01-11 13:21:08
121
原创 Redis持久化
Redis持久化RDB:内存快照触发RDB方式ave 3600 1 //每3600秒至少1个key发生改变,产生快照优点缺点AOF(Append Only File)日志文件AOF回写策略优点:缺点:数据安全性问题,将内存数据存储到磁盘当中,即持久化问题RDB:内存快照内存快照:就是指内存中数据在某一时刻的状态记录。RDB是Redis中默认的持久化方案。RDB持久化会将内存中的数据写入到磁盘中,在指定的目录下生产一个dump.rdb文件。Redis重启时会加载dump.rdb文件恢复数据Red
2022-01-10 15:30:43
147
原创 SpringMVC介绍
SringMVC介绍JavaEE开发中,项目从上到下分层为应用层,web层,业务层,持久层层SpringMVC属于web层框架,spring主要是业务层,mybatis框架是持久层使用SPringMVC是一个基于Java,实现了web MVC设计模式来设计的框架,基于请求/响应的事件驱动模型的思想实现(B/S模型)Web服务演进过程在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,如下图所示:以上便是早期的web开发交互
2022-01-10 15:17:39
5369
原创 Spring MVC的使用
SpringMVC依赖jar包通过maven管理项目,依赖在pom.xml中添加<!--Spring MVC依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.7.RELEASE</version> </d
2021-12-30 17:43:53
322
原创 IO流介绍
输入流、输出流介质流、高级流字节流、字符流4个基类:InputStream,OutputStream、Reader和writerFileXXX、BufferedXXX、ObjectXXX序列化和反序列化概念、以ArrayList为例介绍序列化和反序列化的实现IO流中涉及的设计模式:适配器和装饰器模式File文件操作类RandomAccessFile类java8新特征:labada表达式、流式编程基础概念在介绍IO流原理之前,先重温几个基础概念操作系统与内核**操作系统:**管理计
2021-12-28 12:29:03
523
原创 Spring中的AOP技术
Spring中AOP技术AOP(Aspect Oriented Programing)面向切面编程通过预编译方式或者运行时动态代理方式实现程序功能的统一维护,可以理解为扩展功能而不用修改源代码。Java程序的执行流程序运行的过程就是方法调用的过程。我们按照方法执行的顺序,将方法调用排成一串,这样就构成了Java程序流。将上述的线程栈里的方法调用按照执行流排列,会有如下类似的图基于时间序列,我们可以将方法调用排成一条线。而每个方法调用则可以看成Java执行流中的一个节点。这个节点在AOP的术语中
2021-12-27 15:17:20
451
原创 Spring中的DI(依赖注入)
Spring中DI介绍DI-Dependency Injection:依赖注入bean对象中需要依赖一些其他组件或者对象,依赖关系由容器在运行时决定两种方式处理依赖注入:基于配置形式基于注解形式基于配置形式注入依赖有参构造函数注入依赖public class User { private String name; private UserInfo userInfo; public User(String name,UserInfo userInfo) {
2021-12-25 16:34:30
476
原创 Spring中的IOC介绍
Spring中的IOC介绍IOC(控制反转)IOC介绍IOC是什么IOC能做什么Spring容器管理对象1、maven管理依赖2、给定容器的配置文件3、IOC容器管理对象4、通过容器来获取对象Spring中IOC容器介绍Spring中Bean的实例化方式1、基于XML配置方式装配bean2、使用注解方式装配BeanIOC(控制反转)IOC介绍IOC是什么IOC(Inversion of Control 即控制反转)将对象交给容器管理考虑:谁控制谁、控制什么?为了是反转?哪些方面反转?谁控制了谁?
2021-12-22 19:22:33
16644
2
原创 Spring的介绍
Spring的介绍Spring的基础概述Spring是什么Spring的优势使用优点适用范围Spring的体系结构核心容器数据访问/集成Web页面其他模块Spring家族Spring的基础概述Spring是什么Spring 是最受欢迎的企业级 Java 应用程序开发框架,使用 Spring 框架来创建性能好、易于测试、可重用的代码。Spring 框架是一个开源的 Java 平台,Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。Spring 框架的核心特性是可以用于开发任何 Ja
2021-12-22 16:49:41
217
原创 集合学习2——Map接口及其实现类
Map接口:存储的是键值对形式,key-value键值对存在,key值是不能重复的,value是可以重复的。Map接口下方法:集合中常用方法解释:// V put(K key, V value) 向集合中添加键值对 hashMap.put("A","a"); System.out.println(hashMap.size()); //void clear() 将集合元素清空处理// hashMap.clear();//bool
2021-11-27 16:12:13
753
3
原创 Spring MVC和Mybatis的整合(SSM)
SSM整合整合思路数据准备创建表student表中添加数据依赖Jar包全部的依赖开发dao层spring-mvc.xmlmapper.java接口(StudentMapper.java)Mapper.xml文件(StudentMapper.xml)实体类(Student.java)spring-core.xml(spring管理容器)Service层(StudentService.java 调用dao层获取数据)Contrller层(UserController.java)前端页面(userList.jsp
2021-11-16 23:59:34
2164
原创 集合学习1
集合框架图集合框架图如图所示:集合框架图中虚线框中表示的是接口、实线框表示的是实现类通过框架图可知:Collection、MapCollection:该接口的实现类的集合中存储的元素都是单个数据map:该接口的实现类集合中存储的元素都是键值对存在:Key-value另:Collection底层接口存在子接口:分别是List、Set、QueueList接口:存储的数据是可以重复的、按照插入顺序存储Set接口:存储的元素是唯一的,不能重复的、数据是无序的Queue接口:数据是可以重复、可以排
2021-11-12 14:50:22
743
原创 Spring和mybatis框架整合
Spring和Mybatis的整合思路在mybatis中,创建会话工厂通过SQLSessionFactoryBuilder类读取配置并创建会话工厂,一般将会话工厂设置为单例形式,通过会话工厂创建会话SQLSession。在mybatis和spring整合后,当前的一些对象交给IOC容器管理Spring可以用单例方式来管理SQLSessionFactory。将mybatis中其他的创建对象交给容器管理。整合:mybatis提供了mybatis-spring框架jar,专门针对spring和mybat
2021-11-11 21:00:06
659
原创 Spring中AOP技术
AOP(Aspect Oriented Programing)面向切面编程通过预编译方式或者运行时动态代理方式实现程序功能的统一维护,可以理解为扩展功能而不用修改源代码。Java程序的执行流程序运行的过程就是方法调用的过程。我们按照方法执行的顺序,将方法调用排成一串,这样就构成了Java程序流。将上述的线程栈里的方法调用按照执行流排列,会有如下类似的图基于时间序列,我们可以将方法调用排成一条线。而每个方法调用则可以看成Java执行流中的一个节点。这个节点在AOP的术语中,被称为Join Poin
2021-11-11 20:51:59
441
原创 spring介绍
IOC(控制反转)IOC介绍IOC是什么IOC(Inversion of Control 即控制反转)将对象交给容器管理考虑:谁控制谁、控制什么?为了是反转?那些方面反转?谁控制了谁?是容器控制了对象控制什么?主要控制了外部资源及生命周期由容器帮我们查找并注入依赖的对象,对象只能被动的接收依赖对象,依赖对象的获取被反转了。spring中提供了一种IOC容器,来控制对象的创建,无论是你创建对象,处理对象之间的依赖关系,对象的创建时间还是对象的创建数量,都是spring提供IOC容器上配置对象
2021-11-11 20:25:03
281
原创 动态SQL
动态SQL动态SQL根据条件动态的对SQL进行拼接组装执行原理:使用OGNL从SQL参数中计算表达式的值,根据表达式的值动态的拼接SQL,以此完成动态SQL功能标签:如;if标签,where、trim、foreach等标签if标签:通过student中的条件查询对象或对象结果通过id查询:select * from student where SID= ?通过name查询:select * from student where Name= ?通过id和name查血:select * from
2021-11-04 22:43:24
274
原创 mybatis的接口绑定方法
mybatis的接口绑定方法mybatis实现了接口绑定,使用会更加方便接口绑定:mybatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,就可以直接调用接口方法就可以。接口绑定方式:通过注解绑定,直接在方法上面加上@Select @Update等注解,在注解里包含SQL绑定通过XML里面SQL绑定,需要在xml配置文件里的namespace必须指定接口的全限定名。XML方法的方法1、创建接口文件public interface StudentMapper213 { //通过
2021-11-04 22:26:22
1006
原创 Junit测试介绍
Junit测试介绍Junit的使用步骤添加Junit依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope>
2021-11-03 23:38:13
189
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅