自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring-Aop

前言:前面我们介绍了Spring的IOC容器,接下来,本篇要讲述的是Spring中另外一个常用的模块AOP。AOP简介AOP(面向切面编程)是对OOP中遇到的一些问题的补充,是OOP的扩展,在不改变原有代码的情况下增加新的功能,比如我们常见的日志功能,权限,异常处理,缓存等公共业务(即与软件的开发业务没有关联)。AOP概念Joinpoint(连接点):所谓连接点是指那些可被拦截到的点。在Spring中,这些点指的是方法,因为Spring只支持方法类型的连接点。Pointcut(切入点):

2020-05-12 19:13:15 175

原创 JDK动态代理详解

前言:最近在看Spring aop然后了解到了动态代理=。=,发现自己以前的认识还是停留在应用之上,这里跟着网上的大佬看了看源码,豁然开朗,特别是对于《head first 设计模式》里面的那一副动态代理的uml图。动态代理动态代理,代理类并不是在Java代码中定义的,而是在运行时根据我们在Java代码中的“指示”动态生成的。相比于静态代理, 动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而不用修改每个代理类中的方法。 比如说,想要在每个代理的方法前都加上一个处理方法:开撸定义Hel

2020-05-10 17:19:45 402

原创 Spring的IoC容器

前言:本内容参考与《spring揭秘》一本挺老的书了,不过讲得知识比较透彻,顺着它的节奏只看比较有用的部分,还是蛮不错的。IoC的基本概念注意:这里指的不是spring的ioc容器,而是ioc的概念。IoC(Inversion of Control) 控制反转,是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injec...

2020-05-08 14:54:29 174

原创 运输层(三)TCP协议

前言:来源于《计算机网络自顶向下方法》,终于来到了TCP协议,TCP协议也是面试中问的最多的知识点之一了。面向连接的运输:tcptcp被称为是面向连接的。这是因为一个应用进程可以开始向另一个应用进程发送数据之前,这两个进程必须先相互握手。即他们必须相互发送某些预备报文,以建立确保数据传输的参数。作为tcp连接建立的一部分。连接双方都将初始化与tcp连接相关的许多tcp状态变量。tcp连接...

2020-05-05 21:25:47 630

原创 运输层(三)流水线可靠数据传输协议、回退N步、选择重传

前言:来源于《计算机网络自顶向下方法》,承接上回可靠数据传输的原理,rdt3.0是一个功能正确的协议,但是无论如何他都是一个停等协议,需要等待接收方回应后,才能进行下一个分组的发送,所以它的性能不会特别的好。下面来介绍如何解决呢?流水线可靠数据传输协议这种特殊的性能问题的一个简单解决方法是:不以停等方式运行,允许发送方发送多个分组而无需等待确认。此技术成为流水线。必须增加序号的范围,因为...

2020-05-05 15:39:29 1445

原创 运输层(二)可靠数据传输原理

前言:来源于《计算机网络自顶向下方法》,承接上回UDP协议,不可靠的数据传输协议,这回来到了可靠数据传输协议,意味着来到了众所周知的TCP协议了,但是没这么快,先了解一下可靠数据传输原理。其实是因为篇幅太长=。= 跟tcp分开两篇写了可靠数据传输原理经完全可靠信道的可靠数据传输:rdt1.0它基于完全可信的信道来传输数据,传输的过程中不会出现比特错误或者丢包,在这个简单的协议中,一个单元数...

2020-05-04 00:53:13 845

原创 运输层(一)UDP协议详解

前言:来源于《计算机网络自顶向下方法》,这学期在上计网的课程,顺路就补一补相关知识,UDP / TCP平时听得多了,这次跟住这本书来深入了解一下吧。运输层首先udp/tcp是运输层的协议,我们先来了解一下运输层的概念。运输层协议为不同主机上的应用程序提供逻辑通信功能,通过逻辑功能,运行不同进程的主机好像直接相连,在发送端,运输层将发送应用程序进程接收到的报文转换成运输层分组(运输层报文段...

2020-04-30 23:55:48 1690

原创 Java内存区域与内存溢出异常(二)

前言读书笔记《深入理解java虚拟机》,这个系列得慢慢更新,因为每个知识都是未接触过的。对象的创建的流程类加载虚拟机在遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用(类名),并且检查这个符号引用的类是否以及被加载、解析和初始化过。如果没有就必须先执行类加载的过程。为新生对象分配内存对象所需要的内存大小在类加载之后便可以完全确认,为对象分配空间的任...

2020-04-28 13:54:57 145

原创 Head First 设计模式之代理模式(Java例子)

前言:来源于《head first 设计模式》。当作读书笔记了,这次看的是第11章状态模式。这是最后一篇关于这本书的博客了。从2020-4-7开始写的第一篇策略模式一直到现在,唏嘘,终于还是来到了这里。代理模式(的概念允许对象在内部状态改变时改变它的行为,对象看起来好想改变了它的类静态代理模式的uml图此图来源于其他博客代理比较简单,其实就是委托给真正的对象来执行。静态代理也是比...

2020-04-27 14:37:18 213

原创 Head First 设计模式之状态模式(Java例子)

前言:来源于《head first 设计模式》。当作读书笔记了,这次看的是第10章状态模式。最后剩下没几章了,这几天花时间看完了,现在来才来写下记录。第二篇。状态模式的概念允许对象在内部状态改变时改变它的行为,对象看起来好想改变了它的类状态模式的uml图身份介绍:Context:是一个上下文的类,拥有一些内部状态State:定义一个具有所有具体状态的共同接口ConcreteS...

2020-04-27 13:17:22 184

原创 Head First 设计模式之迭代器与组合模式(Java例子)

前言:来源于《head first 设计模式》。当作读书笔记了,这次看的是第9章模版方法模式。最后剩下没几章了,这几天花时间看完了,现在来才来写下记录。迭代器模式的概念提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示适配器模式的uml图角色介绍:Clinet:代表客户代码Aggregate:一个共同的接口供所有的聚合使用,将客户代码与具体的集合对象实现解耦...

2020-04-27 12:09:05 219

原创 Head First 设计模式之模版方法模式(Java例子)

前言:来源于《head first 设计模式》。当作读书笔记了,这次看的是第8章模版方法模式。难顶呀每晚看完书,第二天早上总结。理解到了以前学习java、spring中的一些基础的概念,蛮有用的,希望自己可以一直坚持下去吧。模版方法模式的概念在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤适配器模式的uml...

2020-04-22 11:22:56 173

原创 Head First 设计模式之适配器模式与外观模式(Java例子)

前言:来源于《head first 设计模式》。当作读书笔记了,这次看的是第7章适配器模式以及外观模式。先从适配器模式再到外观模式。适配器模式的概念将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无限。适配器模式的uml图Client:用户类,使用新接口Target来完成某些特定的需求。Target:新的接口类,开放特定接口request来完成某些...

2020-04-22 10:20:52 202

原创 Head First 设计模式之命令模式(Java例子)

前言:来源于《head first 设计模式》。当作读书笔记了,这次看的是第六章装命令模式。命令模式的概念将请求封装成对象,这可以让你使用不同的请求、队列、或者日志请求来参数化其他对象,命令模式也支持撤销操作,当需要将发出请求和执行请求的对象解耦的时候,使用命令模式即可。命令模式的uml图简单介绍一下:命令(Command):为所有命令声明了一个接口。调用命令对象的 execu...

2020-04-21 11:38:10 222

原创 Head First 设计模式之单例模式(Java例子)

前言:来源于《head first 设计模式》。当作读书笔记了,这次看的是第五章装单例模式。连续看了两章,下一章预告命令模式。单例模式看着简单,但其中的道理并不少。单例模式的概念用于确保一个类只有一个实例,并提供全局访问点。由于过于简单吧,跳过日常举例子的环节,直接写出一步步演变的单例模式经典单例模式public class Singleton { private static ...

2020-04-21 08:58:08 262

原创 leetcode------合并排序数组

题目合并排序的数组给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。示例:输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出: [1,2,2,3,5,6]说明:A.length == n + m第一次看...

2020-04-19 13:15:55 302

原创 Head First 设计模式之工厂模式(Java例子)

前言:来源于《head first 设计模式》。当作读书笔记了,这次看的是第四章装工厂模式。其实这一章前几天就看完了,拖延癌晚期,没整理,今天就来填一下坑吧。抽象工厂模式的概念提供一个接口用于创建相关或者依赖对象的家族,并不需要明确指定具体类工厂方法模式的概念定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类注意:上述所写的接口并不是ja...

2020-04-17 15:22:53 151

原创 基于Lucene实现博客搜索功能

前言:最近毕设开会无意间听到小陈同学使用lucene整一个全文索引,出于好奇了解了一下发现其是结合相关分词器可以对一大段文字建立索引,然后可以实现搜索功能,本来博客一直差着一个搜索博客功能(不想通过数据库模糊查询来做),发现lucene之后感觉打开新世界大门。简单介绍luceneLucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,...

2020-04-16 21:42:05 373

原创 Java内存区域与内存溢出异常(一)

前言:开了新坑,读书笔记了又。《深入理解java虚拟机》。慢慢坚持下去吧,看砖头书很难,但没办法,顶到既,订到既。基本概念java虚拟机运行时数据区:方法区、虚拟机栈、本地方法栈、堆、程序计数器线程共享内存:方法区、堆线程私有内存:虚拟机栈、本地方法栈、程序计数器那么到底什么是线程私有和共享呢?解答:各个线程之间该模块具有独立的内存空间,各个线程中此模块互不影响、独立存储则为线程私有...

2020-04-14 01:31:36 171

原创 Head First 设计模式之装饰者模式(Java例子)

前言:来源于《head first 设计模式》。当作读书笔记了,这次看的是第三章装饰者模式。看得有点上瘾。。。抽出了点时间来总结一下。装饰者模式的概念动态地将责任附加到对象之上。想要扩展功能,装饰者提供有别于继承的另一种选择。head fitst基本操作举个例子head first里面举了两个例子,一个是星巴克一个我们熟悉的java i/o包。这里为了方便就用java i/o来展示我...

2020-04-12 18:48:20 272

原创 Head First 设计模式之观察者模式(Java例子)

前言:来源于《head first 设计模式》。当作读书笔记了,这次看的是第二章观察者模式。看得有点慢。有点小懒。。head first是一步步深入的,这里直接展示最终的观察者模式的成果。观察者模式的概念在对象之间定义一对多的依赖,这样依赖,当一个对象改变状态,依赖它的对象都会收到通知并自动更新。head fitst基本操作举个例子本次的例子是需要做一个气象测监应用。主要任务是建立一...

2020-04-12 13:14:41 265

原创 nginx二级域名https配置以及可能会遇到的错误

前言:最近需要做一个小程序的后台,然后微信小程序的后台大家都知道,需要配置https才可以上线发布。而我本身服务器就已经有了一个博客网站了,所以这里开辟了一个二级域名给微信小程序后台,这里记录一下nginx配置https的过程。第一步 申请ssl证书申请ssl证书咯,这一步没啥好说的,我用的是腾讯云,域名也是腾讯云的时候买的,所以就在腾讯云搞了。然后下载证书。解压此时需要运用scp命令...

2020-04-10 01:53:10 1496 2

原创 hashMap常见的问题解答

1.HashMap的数据结构?hashmap采取数组+链表的数据结构,在遇到哈希冲突的时候采用链表结构来解决哈希冲突,jdk1.8后分成了两种情况,bucket中元素个数大于8的时候,自动转换为红黑树的结构。目的是因为链表的查询速度比较慢,元素越多越明显,改成红黑树是为了提高查询速度。2.hashmap为什么线程不安全?1.7的hashmap扩容的时候都是采用头插入的方法,在扩容的时候,r...

2020-04-08 22:08:00 819 2

原创 JDK1.8之前ConcurrentHashMap与1.8之后的ConcurrentHashMap的源码分析

ConcurrentHashMap1.8之前的concurrenthashmap采用的是分段式锁的策略。ConcurrentHashMap的主干是Segment数组,而Segment数组的主干是我们最熟悉的HashEntry<K,V>数组1.8之前concurrentHashMap先简单介绍一下各个变量的含义concurrencyLevel:并行度MAX_SEGMENTS:...

2020-04-08 21:49:42 688

原创 与我常在’s Blog的技术介绍

前言:大三上学期刚结束,大作业写了一个社区提问的demo,然后寒假心血来潮将其整合成一个博客网站,于是就有了这个网站了,这个网站我会用心的维护更新新的技术进去不断迭代。期待各位大佬给小弟提意见噢与我常在’s Blog博客地址:http://blog.awakeyoyoyo.com/技术栈项目构建:Mavenweb框架:Springboot数据库ORM:Mybatis数据库:MyS...

2020-04-08 13:33:31 273 2

原创 Head First 设计模式之策略模式(Java例子)

前言:最近在看<head first 设计模式>,第一章学习的是策略模式,这里记录一下看书的过程。写一下笔记,画个uml图加深印象。也喜欢对学习设计模式的读者有点帮助。策略模式的概念:定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的用户。举个例子理解:此例子来源于《head firsrt 设计模式》。设计一个模拟鸭子的应用。鸭子的主...

2020-04-07 15:42:00 253 1

原创 五种基本的排序算法(冒泡、选择、插入、快排、归并)

前言:前几天在leetcode上刷了一到排序题,然后试了试一些简单冒泡排序,发现超时了,最后解决是发现有限制范围用了桶排序解决。看题解发现千篇一律的快排之类的,借此也就总结一下基本的排序算法把。。。1.冒泡排序基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。算法的描述:比较相邻的元素,然后如果左边大...

2020-04-01 17:35:49 1897

原创 java序列化与反序列化

序列化和反序列化的概念1、把对象转换为字节序列的过程称为对象的序列化。2、把字节序列恢复为对象的过程称为对象的反序列化。对象的序列化主要有两种用途:1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;2) 在网络上传送对象的字节序列。当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象...

2020-03-31 15:00:25 245

原创 leetcode-----62. 圆圈中最后剩下的数字(约瑟夫环)

题目:0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2限制:...

2020-03-30 15:04:38 216

原创 Jdk1.8的HashMap源码分析以及深入hashmap如何确定hash桶索引

前言:最近在复习基础的东西,学着看了一下hashmap源码,只看了jdk1.8的版本,一步步看下来,不懂得就google,发现收获挺大的Jdk1.8的源码分析:先从成员变量开始: static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; static final int MAXIMUM_CAPACITY = 1 &...

2020-03-17 20:54:44 618

原创 leetcode---多数元素(摩尔投票法)

前言:最近保持每天在leetcode上刷2道题,今天遇到了一道简单的题目,有很多方法,第一想到的是桶排,但没有给范围,排除了,其次就是整个数组排序一波,取中间就是了,随后也这样做了,不过做完去看题解就被这个摩尔投票惊艳到了,先mark下来。该思路来源于:https://leetcode-cn.com/problems/majority-element/solution/3chong-fang...

2020-03-13 14:59:22 449

原创 springboot集成shiro进行权限管理

前言:由于博客的接口有部分只能由管理员来调用。但如果每个接口都亲自写代码进行权限管理就过于麻烦了,所以引入了shiro这个安全框架,顺带也将原来不规范的密码明文存储在数据库,改为了md5加密。博客的地址:blog.awakeyoyoyo.comshiro基本知识这里略过了,上一篇文章基本带大家入了个门了。step1增加4个表来进行角色权限的管理角色表:权限表:用户-角色中间表...

2020-03-12 22:01:02 188

原创 shiro入门01------10分钟运行一个shiro程序

前言:shiro的基础知识在网上一搜一大堆,我这里也就不列出来了。。,然后最近想在博客网站中加入shiro这个安全框架,所以就去shiro官网找些入门例子学习一下吧。10分钟运行一个shiro程序 来源于shiro官网http://shiro.apache.org/tutorial.html1.随意创建一个新目录,shiro-tutorial并在将创建pom.xml文件<?xml ...

2020-03-08 22:12:49 237

原创 comparator和comparable的区别

前言:comparator和comparable都是用来实现集合中元素的排序比较的。Comparator位于包java.util下,而Comparable位于包java.lang下。他们之间的区别在于用法上。Comparator 是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比较。Comparable 是一个对象本身就已经支...

2020-01-15 16:59:00 3963 1

原创 个人博客----浏览次数问题

最近在写自己的blog,写到浏览数发现有些问题,但为了赶紧把整个项目1.0写出来 先忽略咯,这里放篇博客占坑,以后再来完善。如题:如何设计文章浏览次数的统计1. 判断IP是否一样2.将用户浏览过的文章id放入cookie或session, 再次访问时判断cookie或session中是否已存在(放在redis中应该也可以吧),放入session中的缺点是如果关闭浏览器再次打开该文章,还是...

2019-12-12 22:45:02 489

原创 springboot2.0拦截器@Autowired Bean为null原因

前言:有时候我们需要对请求进行拦截,比如是否登录啊又或者编码转换。这就要使用到了拦截器了。最近使用springboot2.0来配置拦截器的时候发现一个问题:拦截器里@Autowired自动装载的bean是null???原因:@Autowired的作用:当 Spring 容器启动时,AutowiredAnnotationBeanPostProcessor 将扫描 Spring 容器中所有 B...

2019-11-30 17:41:47 750

原创 SpringBoot打包成jar包时配置分离,依赖jar分离

前言:在springboot官方文档中貌似没找到,把依赖和配置文件打包出来的教学。不过却看到了有趣的东西。那就是spingboot加载配置文件的顺序,优先级由高到底,高优先级的配置会覆盖低优先级的配置;–file:./config/–file:./–classpath:/config/–classpath:/所以当时想的第一种方法就是配置一下pom.xml打包的时候排除config下的...

2019-11-29 20:21:15 1607

原创 springboot打包成jar包运行

前言最近研究了一下springboot的打包方式,使用的是Spring Boot自带spring-boot-maven-plugin插件,使用起来十分的简单。但是美中不足的就是打包后配置文件也打包了,无法根据现有的机器环境进行路径的配置以及一些修改!!(主要由于最近写的一个小东西,我是mac,我朋友是windows,写的又是小程序,暂存图片路径啊、小程序appid啊、secret啊都要根据他...

2019-11-28 21:41:59 362

原创 mysql高级查询操作

一直对于sql语句的印象不高,只依稀用过点子查询语句,想起来还不一定记得是什么查询语句,这次归纳总结一下mysql的高级查询语句。最后附上建表语句(一).联合查询概念:通过关键字将多条查询SQL语句连接起来。主要用于数据太多,分表后的查询。基本语法:select 语句union[union选项]select 语句;union选项:与select选项基本一样distinct:去重,去...

2019-11-26 15:20:18 460

原创 mysql批量插入数据理解

最近发现作业中有个批量插入数据库的功能,这里总结一下原生的几种批量插入方式。insert1 Statement循环插入方式最慢的一种方式,一条语句对应了一个包,没有批次的效果,每次都要如果数据量不是很大,可以使用,但是每次都要消耗数据库的资源。但若数据多起来这个方法就很难受了,还好我连的本地数据库,如果是连连线上数据库,每次都单独insert,网络传输次数太多了,会更加慢 public vo...

2019-11-20 18:53:16 1069

空空如也

空空如也

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

TA关注的人

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