- 博客(149)
- 收藏
- 关注
原创 beforeSingletonCreation方法作用
昨天看到beforeSingletonCreation这个方法一直没搞懂有啥用,今天梳理下吧。先看下代码:首先说下这个shouldPostProcess变量,如果true则是用户自己定义的bean,false是系统的。我们可以在这个bean实例化后做处理,可以看到postProcessObjectFromFactoryBean就是用来执行用户自定义动作的。步骤1,是先从缓存中通过beanN...
2019-08-19 17:16:39
1024
原创 MySQL数据类型及MyBatis在事务中获取主键ID
最近在做自动分派功能,以下是我遇到的一些问题,记录一下。MySQL的数据类型在该功能中需要涉及到几张表,但是数据类型需要确定,然而看到的种类太多了QVQ,不知所措,所以我介绍一下MYSQL的一些数据类型。数据类型存储空间范围bigint8 个字节从-2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) ...
2019-08-15 16:49:34
1408
原创 WebSocket
WebSocket原理WebSocket客户端首先通过HTTP协议发送几个特别的Header到Server,告诉Server我现在是HTTP请求,但我要升级到WebSocket。Upgrade:websocketConnection:UpgradeSec-WebSocket-Key: XXXSec-WebSocket-Protocol: chat, superchatSec-WebSo...
2019-08-12 22:13:02
153
原创 Spring源码阅读之ignoreDependencyInterface方法
先看下源码在容器初始化时,会调用这个ignoreDependencyInterface方法。这个方法的意识是:忽略给定接口的自动装配功能。可以看到用一个set集合来存放要忽略的接口。这么做的目的是什么?Spring采用的是懒加载方式,当类A中有属性B时,在从容器中获取A对象时会查看属性是否初始化,没有的话会自动初始化B。然而有些情况下是不希望(黑人问号)初始化属性B的。例如B实现了Be...
2019-08-11 19:41:27
4613
原创 字符编码及URL编码问题
阅读这两篇文章搞定:懒得总结了~QAQ字符编码笔记:ASCII,Unicode 和 UTF-8http://www.ruanyifeng.com/blog/2010/02/url_encoding.html
2019-08-11 13:27:11
116
原创 Docker入门
前言Docker相关指令下载/拉取镜像docker pull <镜像名称>查询镜像docker search <镜像名>运行镜像docker run [OPTIONS] IMAGE [COMMAND] [ARG...]-d 后台运行容器-e 设置环境变量-p 宿主端口:容器端口 端口映射--name 指定容器名称--link 链接不同...
2019-08-09 21:48:09
238
原创 求字符串前缀与后缀公共子串
前缀子串与后缀子串前缀子串:从字符串头开始的子串。例如字符串:abcdef那么它的前缀子串为:a,ab,abc,abcd后缀子串: 从字符串尾开始的子串。还是拿字符串abcdef举栗子它的后缀子串为:f,ef,def求前缀与后缀公共子串有什么用在BM算法中,它完成了好后缀规则里的一部分工作。这个算法是干什么的?它是用来匹配字符串的,比BF算法(这个算法就是从主串首位开始比较模式...
2019-08-04 21:04:11
3813
原创 解决电脑无法访问Kafka服务器
Kafka服务器上测试是可以通过自带的shell脚本来创建Topic让生产者与消费者之间通信的,但本机电脑无法访问,一直报无法连接错误。Kafka使用CentOS6.x1.首先要确保防火墙是否关闭了TCP的9092端口,需要开启。telnet ip port不需要查看也行,直接敲下面命令iptables -I INPUT -p tcp --dport 9092 -j ACCEPT ...
2019-08-03 21:34:43
2610
1
原创 MyBatis Generator的使用
什么是MyBatis Generator?MyBatis Generator (MBG) 是一个Mybatis的代码生成器,它可以帮助我们根据数据库中表的设计生成对应的xml Mapper文件,接口以及实体类(也就是我们可以借助该类来进行简单的CRUD操作),这样就避免了我们每使用到一张表的数据就需要手动去创建对应的类和xml文件,这就帮我们节约了大量的时间去开发和业务逻辑有关的功能。MyBa...
2019-07-31 22:34:31
198
原创 Kafka入门之基础概念和环境搭建
概念对kafka概念有所了解的可以直接跳过去看环境搭建。kafka基本结构消息生产者Producer、消费者Consumer、Kafka集群。kafka基本概念1.主题主题就是对消息的一个分类。生产者将消息发送到特定主题,消费者订阅这个主题或主题的某些分区进行消费。2.消息(Message/Record)消息是kafka通信基本单位,由一个固定长度的消息头和一个可变长度的消息体构...
2019-07-27 21:32:18
576
原创 Druid数据库连接池
Druid是什么?Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。怎么配置mavenSpringboot: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-sta...
2019-07-24 21:52:20
285
原创 ElasticSearch增加字段方法
最近在做新品需求,需要给ElasticSearch的new_ware_submit(index)new_ware(type)增加两个字段。我先查了下mapping(上文讲解了,就是用来查看表结构的)可以看到dynamic为false,这表示它无法自动帮我们创建(如果为true,意味着document传过来的字段有哪些,它自动帮我们完成数据结构的定义)我发现了keyword这个类型,这个类...
2019-07-19 21:37:52
12270
原创 ElasticSearch入门
前言最近需要用到ElasticSearch,但是并不了解,所以本篇记录ElasticSearch相关概念。基本概念Node与Cluster我们的服务器可以运行多个Elastic实例,单个Elastic实例称为一个节点(node)。一组节点构成一个集群(cluster)。indexElastic会索引所有字段,经过处理后写入一个反向索引(Inverted index),也就是倒排索引吧~...
2019-07-16 22:20:56
111
原创 SpringBoot配置数据源
单数据源配置springboot1.0中默认使用tomcat连接池,但在springboot2.0后使用了HikariCP连接池(很强的)。springboot的application.properties中配置spring.datasource.url=jdbc:h2:mem:testdb ## 数据源地址spring.datasource.username=sa ## 用户名...
2019-07-04 22:16:34
352
原创 linux源码安装
Linux源码安装步骤1.配置(configure) 2.编译(make) 3.安装(make install)./configure --preifx=xxx/xxx选项,可以让我们指定安装的路径,即将软件安装到什么位置。如果我们没有添加--prefix,那么安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/loc...
2019-06-22 09:28:43
570
原创 SpringBoot之Configuration注解和EnableAutoConfiguration
背景最近在做运营端的国际化,需要接入国际化拦截器(i18n拦截器),该拦截器用于向Cookie写入中文或其他语言的(zh_CN,en_US),当然该拦截器还要很多功能,没时间看源码,不是很了解。该拦截器可以通过url参数将cookie信息写入为需要切换的语言,也可直接修改cookie值。为了保证灰度,它会从配置中心获取Erp列表名称,如果在里头才会切换cookie语言。问题(踩过的坑)...
2019-04-13 22:31:32
2679
原创 门面模式
为什么要写?工作中,可能我们本系统中用的是logback框架,然而当我们引入别人的A包时,包中的日志打印框架为log4j,导致包冲突,因此学习一下,记录一下。什么是log4j、logback、slf4j-simple框架?它们都是日志框架,拥有具体实现。log4j是apache实现的一个开源日志组件。logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的...
2019-01-01 20:49:41
682
原创 Spring学习笔记(二)
Bean作用域首先解释下作用域,java、js都有作用域,它们表示的是变量的可见范围,例如函数中定义的变量只能在这个函数里使用。而Spring容器的作用域是指创建的Bean相对于其他Bean的请求可见范围。(1)singleton作用域在每个IOC容器中只创建一个实例,整个生命周期由Spring容器管理。也就是,对于所有获取该bean(singleton)的操作,容器只返回同一个Bean。...
2018-11-24 15:51:59
146
原创 Mavenjar包所依赖的其他包无法下载问题解决
今天,自己给别的部门提供jar包,以供对方调用我们的接口(jsf-类似dubbo远程调用),然而对面引MAVEN依赖时,并没有将我所依赖的其他jar包下载下来。这将导致,我给他提供的方法是有,但是我引的其他包中的domain对象是没有的。我的pom文件大致是这样:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="h...
2018-11-05 22:48:28
1275
3
原创 Spring学习笔记(一)
什么是控制反转?控制:一般程序会主动创建对象,并控制对象。反转:正转是我们需要对创建的对象主动去设置依赖的资源和对象。反转,我们不用主动去设置。IOC容器帮我们去控制我们所需要的对象,并且对象所以来的资源,IOC去创建并帮我们设置好,所有,当我们从IOC容器拿到对象后,这个对象可以直接使用,提高了程序的功能复用,并进行了解耦。什么是依赖注入?依赖了什么:应用程序需要依赖IOC容器来获得资...
2018-10-27 21:47:31
184
原创 Mybatis报错处理
本篇记录操作Mybatis所遇到的错误Caused by: java.lang.IllegalArgumentException: Result Maps collection does not contain value for XXX该异常,从字面意思很难找到错误,所以记录一下。在以注解形式操作Mybatis的时候,需要将定义且带id的@Result放在坐前面。这是错误的: //上面...
2018-10-14 10:39:30
319
原创 缓存更新
为什么要写这篇文章最近呢,需要写一个供M端(APP端)访问视频合辑信息的接口,以后可以在商家店铺上看见视频及对应的相关商品啦。由于M端访问数量挺大的吧,需要用到缓存(用的redis),将合辑信息存入redis中,减轻MySQL读压力。和组里的人讨论后,发现缓存套路深,需要记下来。缓存解决什么问题数据缓存主要用于分担数据库的压力,对于redis基于内存的非关系型数据库,它提高了查询性...
2018-09-15 10:39:10
220
原创 MySQL分组查询每组前几条
最近在做视频合辑的需求,需要将合辑中的视频取出来,每个视频关联的SKU在关联关系表中,需要查询多个视频下的SKU(10个)。那么也就是查询每个视频下的10个SKU。SELECT video_id, sku_id, status, vender_idFROM video_sku_relative vsroWHERE vender_id = 100 AND vide...
2018-09-08 09:52:45
1611
原创 Web项目同时使用SpringMVC和Struts
最近负责的项目需要前后端分离,该项目使用的是struts框架,准备在该项目上先同时使用SpringMVC+Struts,然后再拆掉Struts。整合SpringMVC步骤首先在项目的web.xml上添加DispatcherServlet以及Servlet映射路径关系。通过DispatcherServlet,提供了SpringMVC集中访问点。<!-- 拦截匹配的请求 --&g...
2018-08-16 21:11:44
3832
8
原创 Vue中组件失效问题
1.Vue中组件失效问题 如果检查发现没问题时,查看下组件命名是否含有大写,不合理的组件名可能导致我们无法去引用它。 我的代码如下Vue.component('compensateEstable', { template:'#compensateEstable', data: function() { return { ...
2018-08-16 12:14:03
5024
1
原创 SpringBoot嵌入式Web容器
前言传统的Servlet容器有Eclipse Jetty,Apache Tomcat。Eclipse JettyJetty作为Eclipse基金会的一部分,是一个开源的项目。它是一个纯粹的基于Java的网页服务器和Java Servlet容器。支持静态动态内容。 特性: Asynchronous HTTP Server 异步 Standards based Servlet C...
2018-08-16 12:12:07
4760
原创 网站架构学习(六)之网站的伸缩性架构
前言所谓网站的伸缩性是指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。每一个大型网站都是从小型网站演化而来的。在这个渐进式的演化过程中,最重要的技术手段就是使用服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力。这就是网站系统的伸缩性架构,只要技术上能做到向集群中加入服务器的数量和集群的处理能力成线性关系,那么就可以以此手段提升自己的规模
2017-10-24 11:32:34
296
原创 网站架构学习(五)之网站的高可用架构
前言网站的可用性描述网站可有效访问的特性(不同于另一个网站运行指标),相比于网站的其他非功能特性,网站的可用更牵动人们的神经,大型网站的不可用事故直接影响公司的形象和利益。网站可用性度量和考核网站呈现给用户,需要经过很多环节,如果出了问题,都会导致网站页面不可访问。DNS劫持,CDN服务挂掉,网站宕机,网络交换机失效,硬盘损坏,网卡松掉,机房停电,程序bug,黑客攻击,促销的大量访问,第三方合作伙伴
2017-10-23 12:06:50
303
原创 网站架构学习(四)之高性能架构
前言什么是高性能的网站? 性能架构设计方案: 实例一:A方案和B方案,A方案在小于100个并发用户访问时,每个请求的响应时间是1秒,当并发请求到达200的时候,请求响应时间增加到10秒。B方案不关100个并发用户访问还是200个并发用户访问,每个请求的响应时间都差不多是1.5秒。哪个好? 实例二:A网站服务器平均每个请求的处理时间是500毫秒,B网站服务器平均每个请求的处理时间是1000毫秒,
2017-08-30 22:45:16
996
原创 网站架构学习(三)之架构要素
前言什么是架构? 最高层次的规划,难以改变的决定。什么是软件架构? 维基百科的定义是 有关软件整体与组件的抽象描述,用于指导大型软件系统各个方面的设计。一:性能网站响应慢是不能接受的。 浏览器端,可以通过浏览器缓存、页面压缩、合理布局、减少Cookie传输等改善性能。 使用CDN,将静态内容部署在CDN上,或使用反向代理服务器,减少应用负载压力。 应用服务端,可使用服务器本地缓存和分布式缓
2017-08-28 23:59:11
379
原创 网站架构学习(二)之网站架构模式
前言什么是模式?每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,就能一次又一次地使用该方案而不必做重复的工作。网站架构模式以网站高性能,高可用,易伸缩,可扩展,安全等各种技术架构目标。分层应用层:负责具体业务和视图展示,如网站首页及搜索输入。 服务层:为应用层提供服务,如用户管理服务,购物车服务等。 数据层:提供数据存储访问服务,如数据库,缓存,文件,搜索引擎等。分
2017-08-28 23:27:07
355
原创 网站架构学习(一)之架构演化
数据库读写分离(改善数据库负载压力) 主流的数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明。 写操作在主数据库上,读操作在从数据上。使用反向代理和CDN加速基本原理都是缓存。区别在于CDN部署在网络提供商的机房,在用户请求网站的
2017-08-28 22:49:01
378
原创 Java性能工具分析学习笔记
Linux性能工具命令系统性能监控命令一uptime命令 输出内容解释第一个是当前时间第二个是开机启动多久了第三个是用户数量第四个是系统平均负载 1,5,15分钟内的系统性能监控命令二top命令 和上面的uptime相同都是用来查看CPU(每个进程CPU的占有率),内存等使用情况。当swap被大量使用时,意味着引起了大量的IO读写,对系统会造成影响。通过top命令,我们可以查看哪个
2017-08-16 17:33:30
417
原创 wait/notify,sleep方法
wait/notify源码wait是用来让线程等待的,并且释放锁。notify是用来唤醒等待线程的,执行完后,在同一同步队列中的等待线程开始抢占锁。监视器: monitor 锁: lock(JVM里只有一种独占方式的lock) 进入监视器: monitorenter 离开/释放监视器: monitorexit (monitorenter和monitorexit是JVM的指令) 拥有者: o
2017-08-15 16:58:08
352
原创 MySQL之锁
什么是锁锁时数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。innodb使用锁的地方很多。例如,操作缓冲池中的LRU列表,删除、添加、移动LRU列表中的元素,为了保证一致性,必须有锁的介入。数据库系统使用锁为了支持对共享资源进行并发访问,提供数据的完整性和一致性。对于myisam引擎,锁是表锁设计,并且不支持事务。Lock和Latchlatch是一种轻量级锁,innodb
2017-08-11 23:42:23
342
原创 MySQL事务及事务的实现
概念事务是数据库区别于文件系统的重要特性之一。引入数据库的目的:实物会把数据库从一种一直状态转换为另一种一致状态。事务可以由非常简单的SQL语句组成,也可以由一组复杂的SQL语句组成。ACID特性原子性 原子性是指数据库事务时不可分割的工作单位。只有使实物中所有的数据库操作都执行成功,才算整个事务成功。事务中任何一个SQL语句执行失败,已经执行成功的SQL语句也必须撤销,退回到事务前的状态。一致性
2017-08-11 10:51:12
4981
1
原创 MYSQL-explain
EXPLAIN Output columns目测面试必问吧。 列名 说明 id 执行编号,标识select所属的行。如果在语句中没子查询或关联查询,只有唯一的select,每行都将显示1.否则,内存select语句一般会顺序编号,对应于其在原始语句的位置 select_type 显示本行是简单或复杂select。如果查询有仍和复杂的子查询,则最外层标记为PRIMARY(DERI
2017-08-09 17:04:02
333
原创 ArrayList源码学习
介绍ArrayList是JAVA中一个非线程安全的集合类,里头采用数组进行存储,当容量不够时可以对数组进行扩容。ArrayList的使用List<Integer> list = new ArrayList<Integer>();list.add(1);list.add(2);list.get(1);//get(int index)list.indexOf(1);//public int in
2017-08-09 14:22:44
177
原创 Web安全-XSS
XSS介绍XSS,全称“Cross Site Scripting”,即跨站脚本(主要是脚本)。脚本主要有两个:JavaScript和ActionScript。XSS发生在目标网站中目标用户的浏览器层面上,当用户浏览器渲染整个HTML文档的过程中出现了不被预期的脚本指令并执行时,XSS就发生了。跨站脚本跨:绝大多数XSS攻击都会采用嵌入一段远程或者说第三方域上的脚本资源。 由于输入(文本的字数限制)
2017-08-09 10:27:43
320
原创 Spring源码学习(二):IOC容器在WEB容器中的初始化
IOC容器的创建就是我们创建一个容器,使其有IOC容器的基本结构,能够管理bean,定义读取等。web容器的IOC容器创建使用createWebApplication()函数完成IOC容器的创建。IOC容器的创建是读取bean的定义,并加载入beanDefinition并注册到一个HashMap中。下文中的ConfigureAndRefreshWebApplicationContext()进行IOC
2017-07-28 10:01:53
367
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅