- 博客(67)
- 资源 (5)
- 收藏
- 关注
转载 什么是有状态登录和无状态登录
• 客户端请求依赖服务端,多次请求必须访问同一台服务器(如果集群了,相当于启动了多个tomcat,就需要在多个tomcat之间共享数据)基本原理:加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,无法根据密文推算出明文。基本原理:将明文分成N个组,然后使用密钥对各个组进行加密,形成各自的密文,最后把所有的分组密文进行合并,形成最终的密文。认证通过,将用户信息进行加密形成token,返回给客户端,作为登录凭证。2、Zuul将请求转发到授权中心,请求授权。
2023-08-31 18:35:40 213
原创 spring 使用 @Async 循环依赖时报 BeanCurrentlyInCreationException 的问题
spring中 @Async 报BeanCurrentlyInCreationException分析
2023-02-12 20:26:38 543
原创 ConcurrentHashMap源码分析_1.8
1.重要成员变量table:默认为null,初始化发生在第一次put操作,默认大小为16的数组,用来存储Node节点数据,扩容时大小总是2的幂次方。sizeCtl:默认为0,用来控制table的初始化和扩容操作 -1 代表table正在初始化 -N 表示有N-1个线程正在进行扩容操作
2021-06-07 11:12:29 154
原创 hashmap 源码分析_1.8
一、属性(n - 1) & hash == hash%n/** 1. 容量(capacity): HashMap中数组的长度 容量范围:必须是2的幂,最大容量:2的30次方 */ //默认容量 = 16 = 1<<4 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //最大容量 = 2的30次方(若传入的容量过大,将被最大值替换)static final int MAXIMUM_CAP
2021-06-07 11:10:32 391 1
原创 redis
redis的数据结构string hash set zset list 五种数据结构string为key value格式的一组组数据,key需要保持唯一性可以设置过期时间 set name zwj ex 10可以在不存在的情况下插入 setnx name test获取值 get name批量设置 mset name james age 19应用场景:缓存,减少数据库压力,将部分数据存储在redis中session共享,在集群的情况下通过spring sessi..
2021-05-14 17:47:24 433
原创 2021php面试题整理
基础类:单引号和双引号的区别 isset和empty的区别 常用的数组函数数据库类:mysql的索引有哪些 最左前缀原则 怎么优化mysql mysql的数据引擎 mysql事务隔离级别以及引起的问题 用的的nosql 及其相关知识算法类:冒泡排序 约瑟夫环 二叉树...
2021-05-14 17:40:39 229
原创 ReentrantLock、AQS 源码分析
如果 把ReentrantLock比做一个人的话,那么 AQS 就是他的灵魂。离开 AQS 谈论锁都是耍流氓ReentrantLock and AQS一.AQS使用方式和其中的设计模式二.重要参数三.了解其中的方法1.模板方法: 独占式获取 共享式获取 独占式释放锁 共享式释放锁2.需要子类覆盖的流程方法3.同步状态state:三、源码1.lock实现类源码:ReentrantLock 为例AbstractQueuedSynchronizer 源码如下为 addWaiter 方法 这
2020-09-24 16:47:09 613 1
原创 JAVA 中可重入锁的理解
感谢『石头StoneWang』对可重入锁的一句深入灵魂的总结:可重入就是说某个线程已经获得某个锁,可以再次获取这把锁而不会出现死锁。1.可重入锁synchronizedReentrantLock可重入锁的两个特性:当一个线程 A获得锁后,那么线程A在没有释放当前锁时可以再次获得这个锁而其他线程是不可以获得这个锁的。只有在这个线程 A 释放了当前锁后,其他线程才可以获得这个锁。1.1 synchronized可重入锁的特性:public class SynchronizedLockTe
2020-09-12 23:24:40 518
原创 史上最简明易懂的 rabbitmq 延时队列(一)
基本思路:在一个普通的mq 队列中设置死信交换器、死信路由键,然后把一个存放死信的队列与死信交换器、死信路由键三者捆绑。普通队列中设置消息过期时间,时间到了以后就会把消息发送到死信队列里面,等待消费者使用。具体代码如下:1.常量package com.lyf.www.testDelayQqueue;/** * @author liuyanfei * @description * @d...
2020-04-12 16:41:40 534 2
原创 一文读懂 nginx配置
一、文件说明html:放静态文件conf:配置文件logs:日志sbin:nginx 启动二、命令nginx #启动nginx -s stop / nginx -s quit #停止服务nginx -t 检查配置文件nginx -s reload # 重启 nginxnginx -c /usr/local/nginx/conf/nginx.conf #启动指定加载的配置文件...
2020-03-22 19:24:05 2611
原创 聊一聊spring的常用注解
一、@valuejavaBeanpublic class Bird { //使用@Value进行赋值:1,基本字符 2,springEL表达式, 3,可以读取 我们的配置文件 @Value("James") private String name; @Value("#{20-2}") private Integer age; @Value("${bird.color}")...
2020-03-22 18:55:34 249 1
原创 关于 mybatis 的MetaObject 源码解读
# 一.测试代码:```//①通过反射 实例化对象ObjectFactory objectFactory = new DefaultObjectFactory();TUser user = objectFactory.create(TUser.class);ObjectWrapperFactory objectWrapperFactory = new DefaultObjectWr...
2019-09-25 15:14:50 834
转载 mac 配置 php 环境
一、Apache1.启动Apache服务在Mac系统中已经安装好了Apache服务,我们只需要通过如下方式启动即可直接使用在终端中输入如下命令,启动Apache服务sudo apachectl start注: 因为sudo是系统管理指令,所以需要输入电脑密码(输入字符时不会显示,输入完成敲击回车即可)在终端中输入如下命令,查看Apache服务版本sudo apa...
2019-03-28 14:21:38 150
转载 Java并发编程:线程池的使用
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? ...
2018-12-07 15:31:26 183
原创 sleep()与wait()区别
1.sleep()是线程线程类(Thread)的静态方法。 wait()方法是Object类里的方法。 2. sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行 的机会;当一个线程执行到wait()方法时,它就进入到一个和该对象相关的等待池中,同时失去(释放)了对象的机锁(暂时...
2018-09-14 11:00:36 197
原创 vue-router 通过路由传值
1.通过地址栏传递:这种方式传递的值会显示在地址栏上 //1.router { path: 'hospitalDeliveryAddress/:id', name: 'hospitalDeliveryAddress', meta:{title: '医院收货地址编辑', hidden: true}, component: () => ...
2018-05-29 19:25:50 952
原创 idea快捷键
1.ctrl+E 查看最近打开过的文件 2.ctrl+shift+E 查看改变过的文件 3.ctrl+shift+backspace 查看上次更改过的文件4.ctrl+shift+A 搜索功能快捷键 5.ctrl+F11 加入书签 ctrl+对应书签序号 跳转书签页面6.alt+shift+F 在favorites中收藏某个类或者函数7.利用emacsIDeas快速...
2018-04-01 23:25:07 202
转载 websocket简介
在我们做web项目的过程中,经常需要做的一个模块是消息模块。典型的场景:一个商城系统的后台管理,我想实现如果前台有客户下单,后台就会接到消息,以便尽快发货处理。要实现上述的功能,我们有几种备选的方案。方案1.使用ajax短轮询,比如每隔1分钟去请求一次服务器,让服务器去数据库去查询,看看有无新的未处理的订单,然后返回给客户端。方案2.长轮询,长轮询的原理与上述类似,只不过采取了阻塞响应(respo...
2018-03-27 09:08:31 389
转载 java中websocket的应用
转自:https://www.cnblogs.com/roy-blog/p/7211761.htmljava中websocket的应用在上一篇文章中,笔者简要介绍了websocket的应用场景及优点,点这里这篇文章主要来介绍一下在java项目中,特别是java web项目中websocket的应用。场景:我做了一个商城系统,跟大多数商城系统,分为客户端和后台,客户端供客户浏览,下单,购买,后台主要...
2018-03-27 09:07:40 1081
原创 java中关于事务的面试要点
一:事务引发的问题: 1.dirty reads 脏读 一个事务正在对数据进行更新操作,但是更新还未提交,另一个事务这时也来操作这组数据,并且读取了前一个事务还未提交的数据,而前一个事务如果操作失败进行了回滚,后一个事务读取的就是错误的数据,这样就造成了脏读 2.不可重复读 一个事务多次读取同一个数据,在该事务还未结束时,另一个事务也对该数据进行了操作,而且在第一个事务两次读取之间,第...
2018-03-01 21:34:40 15031
原创 面试时java集合中的一些要点
一、概览 1.先来一张疯狂java的图 2.再来一张带注释的 3.再来一张接口图二、Interator 描述:iterator必须依附于collection对象,iterator本身并不提供盛装对象的能力,如果需要需要创建iterator对象,必须有一个被迭代的集合 1.主要有三个方法 boolean hasNext():如果被迭代的集合元素还没有被遍历...
2018-02-25 22:02:55 274
转载 linux的文件打包与压缩
转自:https://www.cnblogs.com/yang877/p/5860798.html简介Linux 上常用的压缩/解压工具,介绍了zip、rar、tar的使用。文件打包和压缩Linux 上的压缩包文件格式,除了 Windows 最常见的*.zip、*.rar、.7z 后缀的压缩文件,还有 .gz、.xz、.bz2、.tar、.tar.gz、.tar.xz、tar.bz2文件后缀名说明...
2018-02-08 23:54:09 311
原创 linux下配置nodejs,运行vue
1.下载 (1)nodejs(linux64,tar.zx版本) 有朋友说解压不了tar.zx文件,所以特打包了一个zip版本的 (linux下解压到当前文件夹命令:unzip node-v8.9.3-linux-x64.zip) 附:linux详细打包 (2) 下载项目 vuedemo2.把 nodejs 放到某个地方解压,比如放到 /usr/local/nodejs下,解压(t...
2018-02-08 11:53:07 3116
原创 安装node.js npm命令
1.下载node.js的绿色安装包 点这里2.将上述包解压到一个地方,如本人解压到D:根目录 为 D:\nodejs3.将node.exe所在的路径(即 D:\nodejs)加的环境变量path中,别忘了加的时候要用 ; 与以前的变量做分割 4.在环境变量中 增加环境变量NODE_PATH,值为D:\nodejs\node_modulesnodejs就装好了 在cmd
2018-02-06 22:12:40 1834
转载 Spring和SpringMVC父子容器关系初窥
原文:http://www.cnblogs.com/hafiz/p/5875740.htmlSpring和SpringMVC父子容器关系初窥一、背景 最近由于项目的包扫描出现了问题,在解决问题的过程中,偶然发现了Spring和SpringMVC是有父子容器关系的,而且正是因为这个才往往会出现包扫描的问题,我们在此来分析和理解Spring和SpringMVC的父子容器关系并且给出Spring和Sp
2018-01-18 18:49:14 191
转载 AOP实现方式3——通过<aop:config>来配置(纯POJO切面)
1.定义接口Performpackage com.show;/** * Created by kenneth on 2017/4/6. */public interface Perform { void sing();}2.接口Perform的实现类Boypackage com.show;/** * Created by ken
2017-12-15 00:15:31 418
转载 AOP实现方式2——通过AspectJ提供的注解实现AOP
1.Runable接口package com.animal;/** * Created by kenneth on 2017/4/6. */public interface Runable { void run();}2.Runable接口的实现类Dogpackage com.animal;/** * Created by kennet
2017-12-15 00:14:12 199
转载 AOP实现方式1——经典的基于代理的AOP实现
原文:http://blog.csdn.net/csdn_kenneth/article/details/693900641.定义接口Performpackage com.show;/** * Created by kenneth on 2017/4/6. */public interface Perform { void sing();}2.定义接口P
2017-12-15 00:12:57 253
转载 spring AspectJ的Execution表达式
Aspectj切入点语法定义在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点"例如定义切入点表达式 execution(* com.sample.service.impl..*.*(..))execution()是最常用的切点函数,其语法如下所示: 整个表达式可以分为五个部分:
2017-12-15 00:11:11 217
转载 解决java.lang.IncompatibleClassChangeError
原文:https://my.oschina.net/itblog/blog/528613今天整理了Maven的pom.xml文件后,把多个项目用maven集成在了一起,结果在启动Tomcat的时候,遇到一个奇葩的错误:严重: Servlet [spring] in web application [/AbcWeb] threw load() exceptionjava.lang.In
2017-12-15 00:05:58 3251
原创 idea快捷键
Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ OR ],可以跑到大括号的开头与结尾Ctrl+F12,可以显示当前文件的结构Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按 F3 可以选择Ctrl+N,可
2017-12-14 14:17:29 162
原创 关于 idea 部署运行异常,但是访问页面404的 坑爹bug
环境:win10 、IntelliJ IDEA 2016.2.4 、 jdk1.8 、 tomcat8 框架 spring+mybatis+maven在练习中,搭了一个项目。因为开始使用的jdk1.8 由于种种原因想用 jdk1.7去编译一下项目,从此便掉入了一个坑爹的坑中,事情是这样的:1.在pom.xml文件中我做了 如下配置xmlns="http://maven.a
2017-12-13 17:33:35 2585 3
转载 Java 里如何实现线程间通信?
转载:http://wingjay.com/2017/04/09/Java%E9%87%8C%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%BA%BF%E7%A8%8B%E9%97%B4%E9%80%9A%E4%BF%A1%EF%BC%9F/正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及
2017-10-10 11:08:56 355
node-v8.9.3-linux-x64.zip
2018-02-08
webpace2+vue2 demo
2018-02-08
node.js v6.9.4 包
2018-02-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人