- 博客(57)
- 收藏
- 关注
原创 分布式集群时间同步问题
分布式集群时间同步问题时间不同步导致的问题集群时间同步一、集群中各个服务器都可以访问互联网二、集群中只有一台能联网最后时间不同步导致的问题举一个例子,在电商网站中,进行下单操作,那么数据库中就会存储下单时间,通常订单系统都是集群化部署,然而如果服务器之间的系统时间不一致,那么就会导致每次的下单时间都不一致,甚至如果有一台的时间是昨天,今天下的单就成了昨天下的单了,势必会导致数据的混乱。集群时间同步思路:集群时间同步,必须有一个标准时间作为同步标准机器,通常我们和国家授时中心的时间服务器去同步使用
2021-07-14 11:22:51
344
原创 Nginx配置一致性hash负载均衡策略
Nginx配置一致性hash负载均衡策略下载负载均衡模块添加新model配置config文件下载负载均衡模块ngx_http_upstream_consistent_hash模块是一个又第三方提供的nginx负载均衡模块下载地址:https://github.com/replay/ngx_http_consistent_hash将下载好的模块上传到服务器上,并解压该模块如果没有安装unzip命令请先使用yum unzip安装unzip命令添加新model安装完成后,需要去nginx的源目录中
2021-07-13 17:36:32
702
原创 Tomcat服务器核心配置详解
Tomcat服务器核心配置详解问题一:去哪里配问题二:怎么配问题一:去哪里配配置Tomcat在Tomcat目录下conf/server.xml文件中配置问题二:怎么配主要标签结构<!-- Server 根元素,创建⼀个Server实例,⼦标签有 Listener、GlobalNamingResources、Service--><Server> <!--定义监听器--> <Listener/> <!--定义服务器的全局JNDI资源
2021-07-03 15:15:17
338
原创 SpringSecurity授权
SpringSecurity授权简介SpringSecurity 授权内置权限表达式URL安全表达式在web安全表达式引用自定义Bean授权Method安全表达式基于数据库的RBAC数据模型的权限控制RABC简介关联关系表结构实施页面标签的权限控制简介上一篇博客讲述了SpringSecurity的用户认证,用户认证的目的是让系统知道是谁在访问系统。而这篇博客主要讲述SpringSecurity的另一个功能鉴权,也就是权限控制,目的是你能在系统做什么。SpringSecurity 授权内置权限表达式
2021-07-02 17:08:10
688
1
原创 Spring Security认证
Spring Security认证Spring Security认证基本原理与两种认证方式过滤器链认证方式1、HttpBasic认证2、fromLogin登录认证模式表单认证自定义表单登录基于数据库实现认证功能密码加密认证获取当前登录用户Remmber me 记住我退出登录Session管理会话超时并发控制集群sessioncsrf防护机制CSRF原理CSRF防御策略跨域与CORS跨域解决跨域基于SpringSecurity的CORS支持Spring Security认证基本原理与两种认证方式首先在工程
2021-07-01 00:02:45
517
5
原创 SpringBoot 执行原理
SpringBoot执行原理前言SpringApplication实例化创建项目的初始化启动执行流程图前言每个SpringBoot项目都有一个主程序启动类,在主程序启动类中有一个启动项目的main方法,在该方法中通过执行SpringApplication.run()即可启动整个SpringBoot项目那么SpringApplication.run方法是如何启动整个SpringBoot项目的呢?让我们看一下run方法的内部代码 public static ConfigurableApplica
2021-06-17 19:24:51
412
5
原创 SpringBoot原理深入及剖析
SpringBoot原理深入及剖析SpringBoot起步依赖1、spring-boot-starterparent2、spring-boot-starter-web自动配置@SpringBootApplication分析1、@SpringBootConfiguration2、@EnableAutoConfiguration2.1、@AutoConfigurationPackage2.2、@Import({AutoConfigurationImportSelector.class})3、@Component
2021-06-16 17:23:00
419
原创 自定义实现@Security进行权限控制
@Security注解实现前言@Security改造handler类改造DispatherServlet测试前言在上一篇博客中,我们自定义实现了一个mvc框架,那么现在我们在此基础上,通过注解的方式添加一个权限的控制。这个注解用于添加在Controller类或者是handler方法上,通过给注解value赋值,表明这个controller或者handler有哪些用户是可以有权限访问的。其中如果只给controller类添加该注解,表示这个controller类里面所有的方法都可以被该注解声明的用户访
2021-06-08 10:36:02
314
原创 手动实现简单MVC框架
SpringMVC大致原理目录结构pom文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersi
2021-05-25 12:34:25
178
5
原创 Spring MVC基本知识和使用
思维导图http://naotu.baidu.com/file/d35a91a2d9438492712c22a565d0c204?token=e22f29698d9a27ed
2021-04-22 20:07:06
99
原创 实现@Service、@Autowired、@Transactional注解类
目录什么是注解注解的基本元素元注解@TargetRetention自定义注解实现声明注解改造demo测试什么是注解注解可以用来修饰类,方法,属性等,可以看做是一个特殊的标记,程序在编译或运行时检测到这些标记,从而进行一些特殊的操作。注解的基本元素1、修饰符,注解的修饰符必须是public,不写默认为public2、关键字@interface3、注解名称4、注解内容例如:public @interface Service { String value() default "";}
2021-04-02 18:31:52
1243
1
原创 spring声明式事务控制
spring声明式事务@EnableTransactionManagement加载事务控制组件AutoProxyRegistrar 组件ProxyTransactionManagementConfiguration 组件事务解析器 AnnotationTransactionAttributeSource事务拦截器 TransactionInterceptor@EnableTransactionManagement@Target(ElementType.TYPE)@Retention(Retention
2021-03-30 00:48:04
135
原创 ioc循环依赖问题
ico循环依赖问题什么是循环依赖Spring循环依赖的场景循环依赖的处理机制什么是循环依赖循环依赖就是循环引用,两个或者两个以上的Bean互相引用对方,最终形成闭环。例如:A依赖于B,B依赖于C,C依赖于A注意:这里说的不是函数的循环调用,而是对象的互相引用Spring循环依赖的场景构造器的循环依赖(构造器注入)Field属性循环依赖(set注入)其中构造器的循环依赖是无法解决的,只能报BeanCurrentlyInCreationException异常,prototype类型的bean的
2021-03-26 16:26:45
284
原创 Ioc源码剖析——Bean创建流程
Bean创建流程Bean的创建流程在AbstractApplicationContext#finishBeanFactoryInitialization方法中然后我们进入finishBeanFactoryInitialization方法中protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory) { .......... // Instantiate all r
2021-03-26 14:38:33
129
原创 Ioc源码剖析——BeanFactory创建流程
BeanFactory创建流程关键步骤过程分析时序图关键步骤BeanFactory注册涉及到几个关键的的步骤1、Resource定位:就是找到定义JavaBean信息的xml文件,并将其封装为Resource对象2、BeanDedefinition载入:把用户定义好的Javabean表示为Ioc容器内部的数据结构3、注册BeanDefinition到ioc容器过程分析分析BeanFactory的创建流程不是简单的去看如何new一个BeanFactory对象,而是看BeanDefinition如
2021-03-25 14:45:41
285
原创 Ioc源码剖析——Ioc容器初始化主流程
Ioc容器初始化流程Ioc容器体系Ioc容器体系Ioc容器是Spring的核心组件,它是抽象了对于对象的管理,依赖关系的管理的一种解决方案。在Ioc体系中BeanFactory是顶级接口,也是根容器,不能被实例化。BeanFactory定了实现一个Bean的基础操作,而他下面的子容器实现可以添加额外的功能,更具具体实现要求不同,添加不同的功能,这也体现了spring框架的一种优雅性,我们只需根据我们的功能要求去调用对应的实现接口,而不用把所有的实现都放在一个接口中。例如我们常用的Applicatio
2021-03-20 16:04:45
132
原创 ioc高级特性——延迟加载、FactoryBean、后置处理器
Ioc高级特性Lazy-Init延迟加载lazy-init demoFactoryBeanLazy-Init延迟加载Bean的延迟加载,通常bean会在ApplicationContext容器启动时,默认将bean进行实例化,并加载到SingletonObjects单例池中,但是如果我们为bean配置了Lazy-init以后,就不会再容器启动时创建并配置bean,而是会在我们第一次getbean的时候进行加载。下面我们用一个例子来进行演示lazy-init demo首先我们新建两个类,一个叫Com
2021-03-18 13:28:33
386
1
原创 自定义ioc/aop(二)
自定义AOP什么是AOP实现原理自定义实现AOPTransationManager 事务控制管理器ProxyFactory 动态代理工厂Beans.xml测试什么是AOPaop:Aspect oriented Programming 面向切面编程,区别于我们熟知的oop面向对象,aop是对于oop的一种补充。oop是一种垂直的继承关系,子类继承父类,可以避免大多数的重复代码,但是有一些重复代码的问题,无法通过继承解决,比如说A类是父类,B、C是子类,A类已有的方法,B、C不需要重复去实现,但是如果A里的
2021-03-12 15:35:16
209
原创 Mybatis——plugIn插件
Mybatis——plugIn插件简介原理自定义插件源码分析pageHelper分页插件通用Mapper简介mybatis作为一个优秀的ORM框架,其框架本身具有很高的灵活性,有四大组件提供了简单易用的拓展机制。Mybatis支持用插件对这四大核心组件进行拦截,对核心功能进行增强,增强功能的实现就是借助底层的动态代理功能实现的。Mybatis允许拦截的方法:1、执行器Executor (update、query、commit、rollback等方法);2、SQL语法构建器StatementHand
2020-12-21 17:47:40
722
原创 Mybatis缓存——二级缓存
Mybatis缓存——二级缓存概述示例配置二级缓存使用二级缓存二级缓存整合redis源码二级缓存标签配置文件 cacheEnabledMpper.xml :cache标签查询概述二级缓存的原理和一级缓存一样,同样是第一次查询会从数据库中查询,然后放入到缓存中,第二次就从缓存中获取数据。区别是一级缓存是基于sqlSession的,二级缓存是基于同一个Mapper的namespace的,也就是说如果两个不同的mapper,但是namepace相同,那么这两个mapper查询出来的数据,也会存放到同一个二级缓
2020-12-21 12:25:01
808
1
原创 Mybatis缓存——一级缓存
Mybatis缓存——一级缓存示例源码剖析示例在mybatis中一级缓存是默认的,在同一个sqlsession中相同的代码,第一次会走数据库,第二次则是会走缓存,我们通过下面的代码验证一下 @Test public void firstCache(){ SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper mapper = sqlSession.getMapper(UserM
2020-12-15 16:36:25
900
2
原创 Mybatis自定义持久层框架
Mybatis自定义持久层框架概述思路解析XML配置文件构建Session,调用执行方法执行器Executor客户端调用最后一问概述Mybatis使我们常用的持久层框架,他的本质是通过反射和动态代理的方式对JDBC(这里以jdbc为例,当然mybatis不只是jdbc)的进一步封装,所以我们通过反射和动态代理来尝试自己实现一个建议的持久层框架。思路我们在开始之前先整理一下,我们的思路,根据我们使用mybatis的经验,来总结我们可能需要用到的东西。数据库连接的xml配置文件和我们写sql的xml
2020-12-12 18:16:36
278
转载 mybatis查询结果返回map,选取表的两个字段分别作为key和value
Mapper.xml 书写定义resultMap <resultMap id="retMap" type="java.util.HashMap"> <result property="key" column="pwid_KEY" javaType="java.lang.String"/> <result prope...
2019-09-27 16:29:32
6189
转载 转发跨域问题
https://blog.youkuaiyun.com/caozhangyingfei0109/article/details/53439377
2019-07-02 18:13:32
1408
原创 文件上传
-----------------------------------------------jsp文件上传--------------------------------------------------- function uploadfile(e) { var layerIndex = ''; var limit = 10 * 1024; // ...
2019-05-31 12:23:07
306
7
转载 [转]ajax携带cookie信息跨域请求
转载自:氵小翼原博客链接https://blog.youkuaiyun.com/jxllove1120/article/details/89970946转载请注明出处!
2019-05-30 11:03:13
242
6
原创 git备份
gitlab手动备份当完成gitlab搭建,所有用户完成备份以后,修改/etc/gitlab/gitlab.rb里面的默认存放备份文件的目录:gitlab_rails['backup_path'] = '/var/opt/gitlab/backups'修改完以后保存,使用如下命令来重载配置文件:sudo gitlab-ctl reconfigure当完成以上操作以后,我们用下面...
2018-12-09 21:40:57
961
4
原创 zookeeper SolrCloud 集群配置 Error: Could not find or load main class org.apache.solr.cloud.ZkCLI
搭建SolrCloud集群 把solrhome中的配置文件上传到zookeeper集群。使用zookeeper的客户端上传。客户端命令位置:/root/solr-4.10.3/example/scripts/cloud-scripts执行命令 ./zkcli.sh -zkhost 192.168.172.128:2181,192.168.172.128:2182,192.168....
2018-10-21 16:16:14
1010
20
原创 ERROR: Could not find a valid gem 'redis' (>= 0) in any repository
虚拟机安装redis的时候,执行下面的命令gem install redis报了这个错ERROR: Could not find a valid gem 'redis' (>= 0) in any repository经过查找资料发现,一部分原因是gem source应该包含https://rubygems.org所以,我们首先要执行下列命令,查看是否存在ht...
2018-10-07 17:10:26
6061
10
原创 guip压缩教程
构建打包之后执行gulp压缩前提:Gulp压缩的一般都是js,css,html,image等文件。使用gulp压缩之后代码会更加安全体积会变小。Gulp插件不同所涉猎的功能也不同。常用的gulp插件步骤:1全局安装gulp ----cnpm install gulp –g2本地安装gulp ----cnpm install gulp –save注:全局安装gulp是...
2018-08-12 21:42:15
1911
18
原创 angular rxjs升级rxjs6遇到的问题
angular6现在内部用RxJS6,因此你要更新你的应用 RxJS 6改变了import的方式//RxJS5 版本 import { Observable } from 'rxjs/Observable'; import 'rxjs/add/observable/of'; import 'rxjs/add/operator/map'; const squares$: Observ...
2018-07-29 21:46:12
4021
42
原创 Navicat链接mysql8.0报1251错
最近下了个 MySQL8.0,发现Navicat连接不上,总是报错1251,原因是MySQL8.0版本的加密方式和MySQL5.0的不一样,连接会报错。试了很多种方法,终于找到一种可以实现的:更改加密方式1.先通过命令行进入mysql的root账户:PS C:\Windows\system32> mysql -uroot -p2.再输入root的密码:Enter passwor...
2018-07-11 17:54:24
421
23
原创 angular ng build --prod 打包报错解决方案
1。npm, angular cli安装成功后2。安装依赖时用npm install ,由于需要FQ,一直安装不下去3。用了taobao镜像 用cnpm install 依赖安装成功4。在用ng build时成功,但用ng build -prod时出错。错误如下大致意思是找不到package.json,之前用angular4.0没问题,装到最新的就有问题了,可能是使用cnpm装依赖引起的,因为np...
2018-05-06 21:31:36
6096
16
原创 (LINQ to Entities)使用日期判断条件Truncate日期函数
Entity Framework(LINQ to Entities)使用日期判断条件Truncate日期函数,类似Convert函数,MYSQL数据库可以直接使用convert(varchar(10),a.cjrq,120)LINQ to Entities使用日期字段查询,截取日期,不包括时间,测试环境SQL Server2005/2008,Entity Framework4.0public vo...
2018-04-07 20:23:49
2823
14
原创 Navicat无法远程连接数据库
最近用Navicat连接数据库的时候发现本地连接没有问题,一连就连上了,而使用别人的电脑远程连接我电脑上的数据库的时候就报了这样的错。 然后我就郁闷了,只好一步一步的来进行排查,首先,查看数据库是否允许远程连接,选中数据库根目录,右击查看属性,查看是否允许远程连接到此服务器。如果是允许连接就查看一下SQLserver配置管理器中的MSSQLSERVER的协议是否配置正确。点...
2018-03-04 16:34:57
5189
18
原创 使用jQuery实现图片的懒加载
敲了一天的jQuery,感觉自己要疯了,头疼的不行,于是,去你的吧,找些有意思的事情做吧,在网上翻啊翻啊,看到一篇关于图片懒加载的介绍,好吧,相对于学习jQuery实战,这个要有趣的多,于是实现了下,以下是过程。 首先为啥要用懒加载,不懒我勤快点不行吗?你当然可以,可是在网页上,常常要用到图片,而图片需要消耗较大的流量,正常情况下,浏览器会解析整个HTML代码,然后从上到下依次加载
2018-02-07 11:50:30
893
14
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人