自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 【SpringBoot+SSM框架的移动端Apple Store 1】项目基本介绍

项目简介该项目是基于SpringBoot+SSM框架的商城项目,涵盖了商城的各个功能,包括用户注册、登录、用户个人信息查询、商城首页轮播图及商品展示、查询商品功能,查看商品详情、加入购物车、下单、清空购物车、查看订单及订单详情、评价功能与商品秒杀业务等,项目一直有更新和维护。项目架构图项目技术栈后端:SpringBoot 、SpringMVC、Spring5 、 JWT 、Guava 、BloomFilter中间件:Redis、RabbitMQ、ElasticSearch前端:Vue 、Vu

2020-11-15 11:31:43 604

原创 JVM学习笔记(二)——GC(持续更新)

垃圾收集器垃圾收集器需要完成三件事情哪些内存需要回收什么时候回收如何回收哪些内存需要回收判断对象是否存活引用计数法(不是主流)算法:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一,当引用失效时,计数器值就减一。任何时刻计数器为零的对象就是不可能再被使用的。优点:原理简单,判定效率也很高。缺点:很多例外情况需要考虑,要配合大量额外处理才能保证正确地工作,如该算法就很难解决对象之间相互循环引用的问题。可达性分析法通过一系列称为“GC Roots”

2020-09-06 16:35:28 1735

原创 ThreadPool

ThreadPool线程池的实现方式1)使用Executor静态工厂创建线程池newSingleThreadExecutor创建一个单线程的线程池。这个线程池只有一个线程在工作,相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行。关键字:单线程、串行执行特点核心线程数为1最大线程数也为1阻塞队列是LinkedBlockingQueuekeepAliveTime为0newF

2020-09-04 21:54:47 197

原创 ThreadLocal

ThreadLocal——线程局部变量作用多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们在创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在线程不安全问题。set public void set(T value) {

2020-09-04 21:51:28 186

原创 JVM学习笔记(一)——Java内存区域

前言本系列博客为JVM学习笔记,记录一些JVM重要的知识点以及面试的高频考点,参考的书籍为《深入理解Java虚拟机:JVM高级特性与最佳实践》(第3版)运行时数据区域根据《Java虚拟机规范》的规定,Java虚拟机所管理的内存将会包括以下及格运行时数据区域程序计数器可以看作是当前线程所执行的字节码的行号指示器作用​ 它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要以来这个计数器来完成。多线程​ Java虚拟机的多线程是通过线程轮流切换、分配处理器执行

2020-08-26 23:36:34 235

原创 Java集合总结(二)——Map、Set (文末补充R-B tree)

集合前言本篇博客讲一下Java集合的Map和Set,由于Set集合底层都是基于Map的,所以先从Map开始讲起,在每种数据结构中我还整理了相关的博客供大家参考,都是很详细的。建议大家结合相关博客+源码分析+实操进行学习,印象会比较深,有错误的地方欢迎指出,我会及时进行更改。Map(key-value)HashMapHashMap的工作原理文档:https://www.cnblogs.com/softidea/p/7261111.htmlkey可以为null,key为null的键值对永远

2020-08-21 17:45:51 185

原创 SpringCloud——微服务相关组件入门

前言本篇博客为SPringCloud的一个简单入门,包含了SpringCloud全家桶的一些常用组件,供大家学习和参考,在每个组件介绍中均有官方文档的地址,推荐大家在学习过程中根据官方的文档中进行学习,毕竟技术更新迭代是很快的,同时还收集了一些的博客供大家参考。想要学习SpringCloud其他组件的可以前往官网学习Spring Cloud传统架构演进到分布式架构高可用 LVS+keepalive单体应用=》分布式架构=》微服务单体应用开发速度慢启动时间长依赖庞大微服务

2020-08-20 15:53:47 623

原创 Java集合总结(一)——List

集合集合继承图中可以看到List和Set集合都实现了Collection接口,而Map集合实现Map接口,这篇博客先讲一下List集合。List(有序、可重复)ArrayListArrayList是我们经常使用的动态数组,其优点就是数组大小可动态增长,效率高,但线程不安全。优点: 底层数据结构是数组,查询快,增删慢。缺点: 线程不安全,效率高ArrayList的扩容机制看下源代码: 1) public boolean add(E e) { ensureCa

2020-08-20 11:12:52 214

原创 MyBatis学习笔记(十二)——MyBatis面试常见题

Mybatis⼀级缓存什么是缓存程序经常要调⽤的对象存在内存中,⽅便其使⽤时可以快速调⽤,不必去数据库或者其他持久化 设备中查询,主要就是提⾼性能Mybatis⼀级缓存简介:⼀级缓存的作⽤域是SQLSession,同⼀个SqlSession中执⾏相同的SQL查询(相同的 SQL和参数),第⼀次会去查询数据库并写在缓存中,第⼆次会直接从缓存中取基于PerpetualCache 的HashMap本地缓存默认开启⼀级缓存失效策略当执⾏SQL时候两次查询中间发⽣了增删改的操作,

2020-07-08 16:37:05 292

原创 MyBatis学习笔记(十一)——MyBatis补充

常⻅的数据库类型和java列席对⽐如何获得插⼊的⾃增主键<!-- 获得插入的自增主键--> <insert id="addVideo" parameterType="Video" useGeneratedKeys="true" keyProperty="id" keyColumn="id"> INSERT INTO `video` (`title`, `summary`, `cover_img`, `price`, `create_time.

2020-07-08 16:35:51 152

原创 IntelliJ IDEA中打包Web项目(包含普通项目和Maven项目)并部署到云服务器——详细篇

在公司中,开发人员对自己的代码进行调试修改后,需要将自己的项目打包发布,如果是Java项目,打包为jar格式,而Web项目则打包为war格式。云服务器部署过程可以参考我的博客:部署阿里云服务器全过程——详细篇这里简单的介绍一下war:Web 归档(WAR)是一个用于存储一个或多个下列内容的 Java 归档文件。服务程序JavaServer Page(JSP)文件实用程序类静态文档,比如 HTML文件、图像和声音。客户机端小应用程序、bean和类描述性元信息。它的标准文件扩展名是.war。WAR文件

2020-06-16 16:37:03 1848 1

原创 Maven部署以及IntelliJ IDEA中创建部署Maven项目与运行Maven命令——详细篇

本篇博客主要讲解Maven的部署,包括下载安装,配置,更换国内阿里镜像,以及在IntelliJ IDEA中创建部署Maven项目与运行Maven命令。Maven部署内容涉及Maven的一些基础知识,可以关注我的博客,后续会更新关于Maven的学习笔记。Maven的作用:(1)增加第三方jar以及处理jar之间的依赖关系(2)将项目划分成若干模块。Maven下载安装由于Maven是基于Java平台的自动化构建工具,所以应该先安装JDK环境,这里我就默认大家都配置好了JDK环境。(1)下载Mav

2020-06-14 17:37:59 2099

原创 Web项目部署阿里云服务器全过程——详细篇

最近学习了Web开发前后端等技术,便想着将项目部署到云服务器,方便后续管理,顺便学习一下部署云服务器的过程。购买与连接云服务器部署云服务器,首先需要的便是购买云服务器,这里我选择的是阿里云服务器,注册实名认证这里就不详细说明了,我购买的是云服务器ECS,可以选择大学生优惠,一个月9.5元,算是很实惠的。我选择的擦做系统是Linux版的 centos_7_03_64,后续还可以自己去购买一个域名。购买完之后可以点击图里的更多进行重置密码,我这里已经重置过了,就不给大家演示了。接下来就是管理云服务

2020-06-12 11:08:46 6710 4

原创 MyBatis学习笔记(十)——MyBatis一级缓存、二级缓存、逆向工程

一级缓存​ 同一个SqlSession对象​ MyBatis默认开启一级缓存,如果用同样的SqlSession对象查询相同的数据,​ 则只会在第一次 查询时 向数据库发送SQL语句,并将查询的结果 放入到SQLSESSION中(作为缓存在);​ 后续再次查询该同样的对象时,​ 则直接从缓存中查询该对象即可(即省略了数据库的访问)二级缓存​ MyBatis默认情况没有开启二级缓存,需要手工打开。​ a.conf.xml​ ​ ​ b.在具体的mapper.xml中声明开启(stu

2020-06-11 09:55:43 297 2

原创 MyBatis学习笔记(九)——MyBatis整合Log4j、延迟加载

日志:Log4ja.Log4j: log4j.jar (mybatis.zip中lib中包含此jar)b.开启日志,conf.xml​ 如果不指定,Mybatis就会根据以下顺序 寻找日志SLF4J →Apache Commons Logging →Log4j 2 → Log4j →JDK loggingc.编写配置日志输出文件log4j.properties,内容log4j.rootLogger=DEBUG, stdoutlog4j.appender.stdout=org.apac

2020-06-11 09:55:04 260

原创 MyBatis学习笔记(八)——一对一、一对多关联查询

关联查询一对一(association)a.业务扩展类核心:用resultType指定类的属性 包含 多表查询的所有字段b.resultMapi.通过 属性成员 将2个类建立起联系2.<resultMap id="Student_card_map" type="Student"> <!--分为主键id和非主键result--> <id property="stuNo" column="stuno"/> <result prope

2020-06-11 09:54:31 240

原创 MyBatis学习笔记(七)——动语态SQL、if、where、foreach、输入参数为集合属性、集合、数组、动态数组

//根据姓名和年龄查询学生String statement = "select stuno,stuname from student where stuage = #{stuage} and stuage = #{stuage} "; select stuno,stuname from student where stuname = #{stuName}and stuage = #{stuAge}select stuno,stuname,stuage from student <wher

2020-06-11 09:53:23 266

原创 MyBatis学习笔记(六)——输出参数为简单类型、对象类型、HashMap及resultMap

输出参数resultType1.简单类型(8个基本+String)2.输出参数为实体对象类型3.输出参数为实体对象类型的集合虽然输出类型为集合,但是resultType依然写 集合的元素类型(resyltType=“Student”)4.输出参数类型为HashMap​ --HashMap本身是一个集合,可以存放多个元素,​ 但是根据提示发现 返回值为HashMap时 ,查询的结果只能是1个学生(no,name);–>结论:一个HashMap 对应一个学生的多个元素(多个属性)

2020-06-11 09:52:06 376

原创 MyBatis学习笔记(五)——入参为HashMap、MyBatis调用存储过程执

输入对象为HashMap:where stuage= #{stuAge}用map中key的值 匹配 占位符#{stuAge},如果匹配成功 就用map的value替换占位符mybatis调用存储过程<select id="queryCountByGradeWithProcedure" statementType="CALLABLE" parameterType="HashMap" > { CALL queryCountByGradeWithProcedure( #{gNam

2020-06-11 09:51:00 376

原创 MyBatis学习笔记(四)——两种取值符号以及ParameterType为简单、对象、嵌套对象类型

输入参数:parameterType1.类型为 简单类型(8个基本类型+String).#{}、${}的区别a..#{任意值}.${value} ,其中的标识符只能是valueb.#{}自动给String类型加上’’ (自动类型转换)${} 原样输出,但是适合于 动态排序(动态字段)select stuno,stuname,stuage from student where stuname = #{value}select stuno,stuname,stuage from stu

2020-06-11 09:50:20 647

原创 MyBatis学习笔记(三)——属性文件、全局参数、别名、类型转换器、resultMap

优化1.可以将配置信息 单独放入 db.properties文件中,然后再动态引入​ db.properties:​ k=v引入之后,使用${key}2.MyBatis全局参数在conf.xml中设置3.别名 conf.xmla.设置单个别名b.批量设置别名 除了自定义别名外,MyBatis还内置了一些常见类的别名。类型处理器(类型转换器)1.MyBatis自带一些常见的类型处理器int - number2.自定义MyBatis类型处理器java -

2020-06-11 09:49:25 187

原创 MyBatis学习笔记(二)——MyBatis约定及基于动态代理方式的增删改查

mapper动态代理方式的crud (MyBatis接口开发):原则:约定优于配置硬编码方式abc.javaConfiguration conf = new Configuration();con.setName(“myProject”) ;配置方式:abc.xmlmyProject约定:默认值就是myProject具体实现的步骤:1.基础环境:mybatis.jar/ojdbc.jar、conf.xml、mapper.xml2.(不同之处)约定的目标: 省略掉statement,

2020-06-11 09:47:48 154

原创 MyBatis学习笔记(一)——MyBatis配置及入门示例

mybatis:​ ibatis:apache​ 2010 ibatis-> google colde ,MybatisMyBatis可以简化JDBC操作,实现数据的持久化 。ORM:Object Relational Mappingperson对象 person表ORM:概念 ,Mybatis是ORM的一个实现/Hibernateorm可以是的开发人员 像操作对象一样 操作数据库表。开发mybatis程序从步骤:1.配置mybatisconf.xml:配置数据库信息

2020-06-11 09:46:34 170

原创 JavaWeb开发技术学习笔记(十四)——集群

集群:apache、 nginxtomcat:理论上 单节点tomcat能够稳定的 处理请求并发量200-300;负载均衡失败迁移服务端集群:a.水平集群 :将服务器安装在 各个不同的计算机上 (失败迁移)b.垂直集群 :将多个服务器,安装在同一个计算机上 (负载均衡)水平+垂直搭建集群:apache :特点是处理静态资源(html 图片 js) .这里的apache是一个...

2020-04-30 22:53:27 177

原创 JavaWeb开发技术学习笔记(十三)——自定义标签

传统方式(了解)1.步骤:a.编写标签处理类 b.编写标签描述符 c.导入并使用a.编写标签处理类传统方式(JSP1.1):实现javax.servlet.jsp.tagext.Tag接口 doStartTag()简单方式(JSP2.0):实现javax.servlet.jsp.tagext.SimpleTag接口 doTag()​ 如果jsp在编译阶段 发现了自定义标签<...

2020-04-30 22:52:40 241 1

原创 JavaWeb开发技术学习笔记(十二)——JNDI与JDBC连接池

JNDI:java命名与目录接口pageContext < request< session< application(一个项目运行期间都有效)String jndiName = “jndiValue” ;abc 对象(资源…)jndi:将某一个资源(对象),以配置文件(tomcat/conf/context.xml)的形式写入;实现步骤:tomcat/co...

2020-04-30 22:49:02 266

原创 JavaWeb开发技术学习笔记(十一)——JQuery - AJAX get() 和 post() 方法

jQuery get() 和 post() 方法用于通过 HTTP GET 或 POST 请求从服务器请求数据。HTTP 请求:GET vs. POST两种在客户端和服务器端进行请求-响应的常用方法是:GET 和 POST。GET - 从指定的资源请求数据POST - 向指定的资源提交要处理的数据GET 基本上用于从服务器获得(取回)数据。注释:GET 方法可能返回缓存数据。PO...

2020-04-30 22:45:58 173

原创 JavaWeb开发技术学习笔记(十)——Session绑定解绑,活化钝化

session对象的四种状态监听 session对象的绑定、解绑HttpsessionbindinGlistener不需要配置web.xmlsession. setAttribute( a, xxx) 对象a【绑定】到 session中b. session. removeAttribute(“a”)将对象a从 session中【解绑】监听 session对象的钝化、活化Httpses...

2020-04-30 22:44:59 225

原创 JavaWeb开发技术学习笔记(九)——过滤器、监听器

过滤器实现一个Filter接口init()、destroy() 原理、执行时机 同Servlet配置过滤器,类似servlet通过doFilter()处理拦截,并且通过chain.doFilter(request, response);放行filter映射只拦截 访问MyServlet的请求/MyServlet拦截一切请求(每一次访问 都会被拦截)/*通配符dispatche...

2020-04-30 22:42:52 205

原创 JavaWeb开发技术学习笔记(八)——EL、JSTL

EL :为了消除jsp中的Java代码语法:${EL表达式}a.EL不需要导包b.在el中调用属性,其实是调用的getXxx()方法${范围.对象.属性.属性的属性 }操作符:操作:属性,不是对象. : 使用方便[] : 如果是常量属性,需要使用双引号/单引号 引起来;比点操作符更加强大[]强大之处:a.可以容纳一些 特殊符号 (. ? -)b.[]可以容纳 变量属性 ...

2020-04-30 22:41:10 188

原创 JavaWeb开发技术学习笔记(七)——上传与下载

上传文件a.引入2个jarapache: commons-fileupload.jar组件commons-fileupload.jar依赖 commons-io.jarb.代码:前台jsp:表单提交方式必须为post在表单中必须增加一个属性 entype=“multipart/form-data”后台servlet:注意的问题:上传的目录 upload :1.如果修改代...

2020-04-21 21:46:27 133

原创 JavaWeb开发技术学习笔记(六)——MVC设计模型与三层架构及其优化

MVC设计模式M:Model ,模型 :一个功能。用JavaBean实现。V:View,视图: 用于展示、以及与用户交互。使用html js css jsp jquery等前端技术实现C:Controller,控制器 :接受请求,将请求跳转到模型进行处理;模型处理完毕后,再将处理的结果返回给 请求处 。 可以用jsp实现, 但是一般建议使用 Servlet实现控制器。Jsp-&g...

2020-04-21 21:42:05 476

原创 JavaWeb开发技术学习笔记(五)——Servlet

ServletJava类必须符合一定的 规范​ a.必须继承 javax.servlet.http.HttpServlet​ b.重写其中的 doGet()或doPost()方法doGet(): 接受 并处 所有get提交方式的请求doPost():接受 并处 所有post提交方式的请求Servlet要想使用,必须配置Serlvet2.5:web.xmlServle3.0: @We...

2020-04-21 21:30:34 219

原创 JavaWeb开发技术学习笔记(四)——JDBC

JDBC:Java DataBase Connectivity可以为多种关系型数据库DBMS 提供统一的访问方式,用Java来操作数据库JDBC API 主要功能三件事,具体是通过以下类/接口实现:DriverManager : 管理jdbc驱动Connection: 连接(通过DriverManager产生)Statement(PreparedStatement) :增删改查 ...

2020-04-04 22:51:18 284

原创 JavaWeb开发技术学习笔记(三)—— response、session、cookie

response :响应对象提供的方法:void addCookie( Cookie cookie ); 服务端向客户端增加cookie对象void sendRedirect(String location ) throws IOException; :页面跳转的一种方式(重定向)void setContetType(String type):设置服务端响应的编码(设置服务端的conten...

2020-03-30 11:44:30 266

原创 JavaWeb开发技术学习笔记(二)—— JavaWeb基础

JavaWeb-JSPTomcat目录bin:可执行文件( startup. bat shutdown.bat)conf:配置文件( server.xm1)lib: tomcat依赖的jar文件log:日志文件(记录出错等信息)temp:临时文件webapps:可执行的项目(将我们开发的项目放入该目录)work:存放由jsp翻译成的java,以及编辑成的 class文件(jsp-...

2020-03-30 11:35:43 175

原创 JavaWeb开发技术学习笔记(一)—— 整体框架介绍

JavaWeb开发技术最近正在学习JavaWeb开发,会持续分享一些个人的笔记,供有需要的人一起借鉴参考,有什么问题欢迎在评论区进行交流。JavaWeb学习框架以及思维导图:概念、技术体系​ JAVA WEB、java语言网页静态内容–在客户端运行–前端开发技术动态内容–在服务器上获取–服务器端开发技术–运行在服务器端,将结果传递到客户端进行显示类–模板、对象-实例C-结构化...

2020-03-24 23:18:22 1189

原创 python爬虫项目之模拟登录正方教务系统获取成绩

由于最近受疫情影响,呆在家里闲着没事干,学习了几天pyhton爬虫,有了一个初步的了解,便打算模拟登录一下正方教务系统获取一下成绩信息,方便以后可以快速地查成绩,心疼几秒教务系统/滑稽。首先要获取教务系统的网址:,在浏览器访问网址:http://210.38.137.126:8016/,观察登录界面:![在这里插入图片描述](https://img-blog.csdnimg.cn/202002...

2020-02-24 13:31:54 3031 7

ApachDbUtilsTest.java

commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。因此dbutils成为很多不喜欢hibernate的公司的首选。

2020-04-21

ApachDbUtils常见方法.docx

commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。因此dbutils成为很多不喜欢hibernate的公司的首选。

2020-04-21

空空如也

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

TA关注的人

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