- 博客(36)
- 资源 (18)
- 收藏
- 关注
原创 详解享元模式(Flyweight)
享元模式(Flyweight)享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查当前对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建一个新对象,FlyWeight是超类。一提到共享池,我们很容易联想到Java里面的JDBC连接池,想想每个连接的特点,我们不难总结出:适用于作共享的一些个对象,他们有一些共有的属性,就拿数据库连接池来
2020-09-29 16:38:12 110
原创 详解组合模式(Composite)
组合模式(Composite)组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便。直接来看代码:public class TreeNode { private String name; private TreeNode parent; private Vector<TreeNode> children = new Vector<TreeNode>(); public TreeNode(S
2020-09-29 16:34:51 202
原创 详解桥接模式
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。好,接下来看一下代码如何实现:实现代码:public interface Sourceable { public void m
2020-09-29 16:32:33 196
原创 前端技术之小程序API
小程序APIAPI使用说明小程序提供了很多实用的方法供开发者使用 小程序全局对象是: wx 所有的API都保存在wx对象中常用API界面交互 显示消息提示框: wx.showToast() 显示消息加载框: wx.showLoading() 关闭消息提示框: wx.hideToast() 关闭消息加载框: wx.hideLoading() 路由跳转 wx.navigateTo() wx.redirectTo() wx.switchTab() ..
2020-09-25 15:35:23 200
原创 前端技术之git
Git操作版本控制什么是版本控制?我们为什么要关心它呢?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统为什么要使用版本控制?软件开发中采用版本控制系统是个明智的选择。有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。但额外增加的工作量却微乎其微。你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告
2020-09-25 15:21:47 315
原创 前端CSS之BFC详解
BFC是什么? 在解释 BFC 是什么之前,需要先介绍 Box、Formatting Context的概念。 Box: CSS布局的基本单位 Box 是 CSS 布局的对象和基本单位, 直观点来说,就是一个页面是由很多个 Box 组成的。 元素的类型和 display 属性,决定了这个 Box 的类型。 不同类型的 Box, 会参与不同的 Formatting Context(一个决定如何渲染文档的容器), 因此Box内的元素会以不同的方式渲染。让我们看看有哪些盒子: block-l...
2020-09-25 14:20:41 392
原创 项目模块在maven里变成灰色怎么解决
建错项目,后来删除重建的时候,突然一直项目识别不了,一直提示项目找不到,后来看右边栏的maven里面,显示项目是灰色,如下图:鉴于这个原因,找到相关解决办法,步骤如下:1 file–setting2 搜maven–ignored files,如下图3 点保存后,maven里面灰色就消失了:...
2020-09-25 11:39:57 2250 2
原创 @RequestBody注解的使用场景解析
最近在做一个项目的过程中,碰到前端传过来有值,后端接收不到,开始还以为是属性名不一致导致的,反复检查也没找到属性名不一致的问题,后面才发现问题所在,先上图:前端是通过json穿过来的一个对象,后端代码如下:后来改成如下代码:以前最开始使用mvc时没太留意这个区别,找资料后整理@Requesbody的用法区别如下:1 GET、POST方式提交时, 根据 request header Content-Type 的值来判断:1.1application/x-www-form-urlencoded:
2020-09-25 11:38:11 303
原创 RabbitMQ安装说明
第一章 Windows版本安装如果计算机登录名是中文安装mq,安装不上,需要解决计算机登录名中文的问题:参考文章:https://www.cnblogs.com/bade/p/10303687.html参考文章:https://zhidao.baidu.com/question/2271164366310780988.html先按照pdf文件进行安装。安装完成之后,在看如下操作第二章 linux版本安装1.安装依赖环境在线安装依赖环境:yum install build-essentia
2020-09-25 11:36:05 105
原创 jsp知多少?
一、jsp介绍JSP(全称Java Server Pages)是由Sun 公司专门为了解决动态生成HTML文档的技术。jsp页面的访问千万不能像HTML页面一样。托到浏览器中。只能通过浏览器访问Tomcat服务器再访问jsp页面。二、jsp原理解析jsp的本质 ,其实是一个Servlet程序运行原理:①:启动tomcat服务器,在tomcat的work\Catalina\localhost目录下多出来一个项目目录②:当我们去访问http://localhost:8080/atguigu6_js
2020-09-24 20:45:12 110
原创 有关Filter过滤器介绍
一、什么是filter?作用是什么?①:Filter过滤器是JavaWeb的三大组件之一. JavaWeb的三大组件分别是:Servlet程序 Listener监听器 Filter过滤器.②:Filter过滤器是一个接口③:Filter过滤器可以拦截请求,过滤响应常见的应用场景是:①:权限检查②:日记记录③:性能检测二、filter如何使用①:自定义一个filter过滤器,实现Filter接口,重新doFilter()方法②:在web.xml中配置自定义过滤器三、filter链执行顺序
2020-09-24 20:39:21 374
原创 servlet知多少?
一、什么是Servlet1 Servlet是JavaEE规范之一.它是JavaWeb的三大组件之一.JavaWeb的三大组件分别是:Servlet程序,Filter过滤器,Listener监听器.2 Servlet是运行在web服务器上的Java小程序.3 Servlet主要是用来接收客户端发送过来的请求,并响应数据给客户端二、web.xml中配置servlet标签的含义 :告诉Tomcat服务器,我当前web工程中有一个Servlet程序 :给Servlet程序起一个别名,一般是Servlet
2020-09-24 20:35:01 100
原创 负载均衡Nginx的使用
负载均衡Nginx的使用该部分从属于数据采集部分,主要作用为实现三台数采服务器的负载均衡,因涉及新的技术—Nginx,所以单独成为一个part1.1 Nginx概述Nginx (读作“engine x”), 是一个高性能的 HTTP 和反向代理服务器 , 特点是占有内存少,并发能力强与tomcat的关系除了 tomcat 以外, apache,nginx,jboss,jetty 等都是 http 服务器。nginx 和 apache 只支持静态页面和 CGI 协议的动态语言,比如 p
2020-09-18 16:24:50 123
原创 redis常用面试题——掌握后顺利通关
1、什么是Redis?1. Redis 是完全开源免费的, 遵守 BSD 协议, 是一个高性能的 key-value 数据库。2. Redis 与其他 key - value 缓存产品有以下三个特点:3. Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。4. Redis 不仅仅支持简单的 key-value 类型的数据, 同时还提供 list, set, zset, hash 等数据结构的存储。5. Redis 支持数据的备份, 即 mast.
2020-09-18 16:23:15 412
原创 Redis入门——安装使用和基本操作
一、Redis入门1.1 redis介绍-- 1. redis是什么? remote dictionary server : 远程字典服务器,是一种'基于内存'的数据结构存储系统,所以对于内存要求很高。 字典:就是map 使用c语言写的,非常轻巧。-- 2. 能用来干什么? 1. 作为数据库 2. 作为缓存 3. 作为消息的中间件,kafka也是消息中间件 我们主要是用来做缓存,客户端访问数据时,不用直接访.
2020-09-18 16:18:52 168
原创 Apache DBUtils
简介commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。DbUtils API: DbUtils :提供如关闭连接、装载JDBC驱动程序等常规工作的工具类,里面的所有方法都是静态的。主要方法如下: lpublic static void close(…) throws java.sql.SQLException: DbUtils类提供了三个
2020-09-13 11:28:52 106
原创 PreparedStatement
一、PreparedStatement概述可以通过调用 Connection 对象的 preparedStatement(String sql) 方法获取 PreparedStatement 对象。PreparedStatement 接口是 Statement 的子接口,它表示一条预编译过的 SQL 语句。PreparedStatement 对象所代表的 SQL 语句中的参数用问号(?)来表示,调用 PreparedStatement 对象的 setXxx() 方法来设置这些参数. setXxx(...
2020-09-13 11:25:28 617
原创 JDBC
概述JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统(DBMS)、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加
2020-09-13 11:23:12 77
原创 小白使用Linux
1帮助手册man--help2日期类date ,cal3显示当前目录 Pwd4cd切换目录cd .. 返回上级目录cd / 返回至/cd , cd ~ 返回家目录cd /etc/sysconfig 通过绝对路径访问(利用tab键)cd ./sysconfig 通过相对路径访问5ls-a 全部文件,连同隐藏的文件-l 列出详细列表别名ll列表信息:Grep 配合显示内容的命令,根据跟随的内容显示,该...
2020-09-09 14:48:06 184
原创 Linux 详解权限和环境
1权限1用户Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。新增用户:useradd 新用户名设置密码: passwd 用户名用户是否存在:id 用户名切换用户:su – 切换用户名查看当前用户/登录用户:whoami/ who am I删除用户:userdel2用户组类似于角色,系统可以对有共性的多个用户进行统一的管理。新增组:groupadd 组名...
2020-09-09 14:43:23 115
原创 小白初见Linux
1权限1用户Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。新增用户:useradd 新用户名设置密码: passwd 用户名用户是否存在:id 用户名切换用户:su – 切换用户名查看当前用户/登录用户:whoami/ who am I删除用户:userdel2用户组类似于角色,系统可以对有共性的多个用户进行统一的管理。新增组:groupadd 组名删...
2020-09-09 14:35:30 130
原创 javascript之递归寻找id
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <script>
2020-09-09 01:33:32 1456
原创 javascript之快速排序
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <script>
2020-09-09 01:31:55 73
原创 自定义函数的apply方法
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <script>
2020-09-09 01:30:24 787
原创 2020-09-08
JavaScript中的“this”是什么?如果你曾使用JavaScript库做过开发,那么你可能已经注意到一个名为this的特定关键字。虽然this在JavaScript中非常常见,但是完全理解this关键字的原理以及在代码中如何使用对相当一部分的开发者来说着实不易。在这篇文章中,我将帮你深入理解this及其工作机制。在开始之前,请确保已安装Node。然后,打开命令行终端并运行node命令。全局环境中的“this”this的工作机制理解起来并不是很容易。我们通过将this置...
2020-09-08 14:02:00 84
原创 2020-09-08
Css——positionCSSposition属性用于指定一个元素在文档中的定位方式。top,right,bottom和left属性则决定了该元素的最终位置。定位类型定位元素(positioned element)是其计算后位置属性为relative,absolute,fixed或sticky的一个元素。相对定位元素(relatively positioned element)是计算后位置属性为relative的元素。绝对定位元素(absolutely posit...
2020-09-08 13:47:31 79
原创 2020-09-08
animation动画CSS3 主要可以分为以下几个模块:边框和背景,渐变,文字特效,字体,2D/3D转换,动画(过渡动画和动画),选择器,盒模型,多列布局,用户界面下面是动画animation:1、@keyframes创建动画@keyframes规则是创建动画。@keyframes规则内指定一个CSS样式和动画将逐步从目前的样式更改为新的样式。@keyframes myfirst{from{background:red}to{background:yellow}}@-w...
2020-09-08 13:46:36 67
原创 Vue源码分析-数据劫持
数据劫持(数据绑定)observer给配置对象data对象中的数据进行劫持 给data中的每个属性重新定义get和set 为data中每个属性创建dep对象compile在解析表达式的时候会创建对应的watcher对象,并建立watcher与dep的关系,dep在进行数据劫持时,给data每个属性都对应一个dep对象 dep对象结构:id – 每个dep对象的唯一标识,subs—包含多个watcher对象的数组特殊说明:当模板编译时,每个表达式编译会创建watcher对象,会将
2020-09-08 13:37:46 389
原创 Vue源码分析-模板解析
模板解析模板解析流程:将el的所有节点取出,放在文档碎片fragment对象中 将fragment对象的所有子节点进行递归解析处理 插值语法解析 对插值语法(表达式)进行解析(与v-text指令解析一致),使用compileText方法 根据正则对象获取匹配到的表达式字符串 从vm实例上找到表达式对应的值 将属性值设置为文本节点的textContent 指令解析 一般指令解析 从标签节点中获取到指令名和表达式 从vm实例上拿到表达式的对应的值.
2020-09-08 13:37:11 476
原创 Vue源码分析-数据代理
数据代理 实现data的数据代理 // 保存options到vm上 this.$options = options || {}; // 保存data数据到vm上 _data var data = this._data = this.$options.data; // 保存vm var me = this; // 数据代理 // 代理data属性数据到vm上 // 遍历data数据中所有属性名...
2020-09-07 21:24:11 130
原创 CSS动画相关知识详解
一.CSS3转换(transform)css3包括两种转换,2D转换和3D转换。css3的转换允许我们对元素进行旋转、缩放、移动或倾斜。不管2D转换还是3D转换都是操作的同一个的属性:transform1.1 2D转换有四种转换:rotate、scale、translate、skew1.1.1 translate在x和y方向平移元素:transform: translate(500px, 0px);说明:参数可以是像素或百分比。参数1:沿x方向的平移,正表示向右移动参数2:沿y方向的
2020-09-07 20:50:30 267
原创 使用Canvas实现刮刮卡功能
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><style>.ggk { width: 200px; height: 100px; border: 1px solid #000; margin: 0 auto;
2020-09-07 20:46:51 164 1
原创 多种数组排序方法
1.随机生成数据var a = (function (){ var a = []; function randomInt(from, to){ return parseInt(Math.random() * (to - from + 1) + from); } for (var i = 0; i < 10000; i++){ a.push(randomInt(0, 1000000)) } return a;})();
2020-09-07 20:45:44 558
原创 java泛型和类型擦除
java泛型和类型擦除泛型的本质是参数化类型,这种参数类型可以用在类、接口和方法的创建中。泛型是在JAVA 1.5版本中才引入的,它能和以前的版本兼容的原因是泛型信息只存在于代码编译阶段,在进入 JVM 之前,与泛型相关的信息会被擦除掉,即类型擦除。根据使用情况可以分为以下三种:泛型类泛型方法泛型接口下面是一个常用的泛型类:// 一个泛型类,可以根据需要包装不同结果的返回值public class Result<T> { private boolean success
2020-09-03 14:35:35 152
原创 SimpleDateFromat 是线程安全的吗
1,在SimpleDateFormat转换日期是通过Calendar对象来操作的,SimpleDateFormat继承DateFormat类,DateFormat类中维护一个Calendar对象,通过DateFormat类中的注释可知:此处Calendar实例被用来进行日期-时间计算,既被用于format方法也被用于parse方法!2,在parse方法的最后,会调用CalendarBuilder的establish方法,入参就是SimpleDateFormat维护的Calendar实例,在establi
2020-09-03 14:33:48 135
原创 内存泄漏与内存溢出的对比
内存泄露 (memory leak):是指程序在申请内存后,无法释放已申请的内存空间就造成了内存泄漏,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。内存溢出(out of memory): 指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出,简单来说就是自己所需要使用的空间比我们拥有的内存大内存不够使用所造成的内存溢出。内存泄漏的解决方法:a)
2020-09-03 14:32:37 90
泛型中? super T和? extends T的区别
2015-12-17
Spring 面试题分析_尚硅谷_佟刚
2014-09-30
Hibernate面试题分析_尚硅谷_佟刚
2014-09-30
Struts2面试题分析_尚硅谷_佟刚_.pdf
2014-09-30
Java反射机制的缺点_尚硅谷_张晓飞
2014-09-15
115个Java面试题和答案——终极(下)
2014-09-12
115个Java面试题和答案——终极(上)
2014-09-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人