自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM①Loading&JMM

文章目录class文件的加载过程java内存模型 JMM乱序问题对象内存布局对象创建过程对象在内存中的存储布局class文件的加载过程loading加载层次 低 --> 高Custom ClassLoader --> App --> Extension --> Bootstrap双亲委派 – 防止内部类被覆盖低 -> 高,依次在缓存中寻找需要加载的类,有就直接返回;都无,高 -> 低,依次加载类,若都失败,抛出 ClassNotFoundExceptio

2020-05-31 23:58:52 137

原创 NIO 与 Netty 之 Netty 一

NIO 与 Netty 之 Netty 一文章目录NIO 与 Netty 之 Netty 一Netty 核心APINetty 编码和解码概述Google 的 ProtobufNetty-demo & Netty 简易RPCNetty 核心APIChannelHandler: 自定义一个 Handler 类继承 ChannelInboundHandlerAdapter ,通过重写相应的方法实现业务逻辑。public void channelActive(ChannelHandlerCon

2020-05-27 23:50:02 127

原创 NIO 与 Netty 之 NIO

文章目录NIO与BIO的区别NIONIO - 文件 IONIO之文件IO codeNIO - 网络IONIO之网络IO codeIO对比总结NIO与BIO的区别BIO以流的方式进行操作缓冲区自己创建一个数组阻塞式NIO以通道 Channel 形式进行操作缓冲区提供 Buffer 进行操作非阻塞式NIONIO - 文件 IO缓冲区: 数据必须放到缓冲区中完成读写操作。public abstract ByteBuffer put(byte[] b); 存储字节数据到缓冲区

2020-05-27 00:35:09 101

原创 NIO之网络IO

文章目录一个Server 对 一个ClientClientServer一个Server 对 多个Client启动 ClientChatClientChatServer一个Server 对 一个ClientClientpublic class Client { public static void main(String[] args) throws Exception { // 1. 获取网络通道 SocketChannel channel = SocketCh

2020-05-27 00:20:43 95

原创 NIO之文件IO

public class TestFile { // 向本地文件写入数据 @Test public void testWriteFile() throws Exception { // 1. 创建输出流 FileOutputStream fos = new FileOutputStream("basic.txt"); // 2. 基于输出流创建通道 FileChannel fc = fos.getChannel();

2020-05-26 23:30:35 82

原创 多线程高并发

多线程高并发文章目录多线程高并发synchronizedvolatileCAS(无锁优化 自旋)ReentrantLockReentrantLock vs synchronizedCountDownLatch -- 倒计时/计数器CyclicBarrier -- 栅栏,满人执行。Phaser -- 分阶段执行(栅栏组)ReadWriteLock -- 读写锁Semaphore -- 控制线程运行数量Exchanger -- 交换器LockSupportSynchronized和ReentrantLoc

2020-05-25 16:01:28 172

原创 基于公私钥生成解析jwt令牌

生成jwtimport com.alibaba.fastjson.JSON;import org.junit.Test;import org.springframework.core.io.ClassPathResource;import org.springframework.security.jwt.Jwt;import org.springframework.security.jwt.JwtHelper;import org.springframework.security.jwt.c.

2020-05-12 16:26:57 412

原创 thymeleaf静态化

//1.获取context对象,用于存储数据Context context = new Context();//获取静态化页面的相关数据//2.设置生成的文件存放位置File dir = new File(path);//3.判断当前存储位置的文件夹是否存在,如果不存在,则新建if (!dir.exists()){ dir.mkdirs();}//4.定义输出流,完成文件的生成File file = new File(dir+"/"+(html名称唯一的数据)+".html")

2020-05-12 14:55:56 91

原创 thymeleaf基本语法

表单提交 th:action<form th:action="@{/test/hello}" > <input th:type="text" th:name="id"> <button>提交</button></form>对象遍历 th:each// user对象属性Integer id;String name;String address;model.addAttribute("users",userList);&lt

2020-05-12 14:46:49 226

原创 Springboot整合thymeleaf

pom文件<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version></parent><dependencies> <!--web起步依赖--> <d.

2020-05-12 14:19:22 68

原创 ES查询

@Servicepublic class SearchServiceImpl implements SearchService { @Autowired private ElasticsearchTemplate elasticsearchTemplate; /** * 关键字查询 * * @param searchMap * @return */ @Override public Map search(Map&l

2020-05-12 14:08:19 173

原创 canal_code

canal实现数据同步需求:当tb_ad(广告)表的数据发生变化时,远程调用nginx中的lua脚本更新redis中的广告数据。总流程1. 发送到rabbitmq创建监听类监听指定表变化@CanalEventListenerpublic class BusinessListener { @Autowired private RabbitTemplate rabbitTemplate; // 指定数据库, 表 @ListenPoint(schema = "ch

2020-05-12 13:55:06 362

原创 后台网关鉴权

jwtUtilpublic class JwtUtil { //有效期为 public static final Long JWT_TTL = 3600000L;// 60 * 60 *1000 一个小时 //设置秘钥盐 public static final String JWT_KEY = "xk"; /** * 创建token * @param id * @param subject * @param ttlM.

2020-05-11 22:49:47 385

原创 JJWT签发与认证token

JJWT签发与认证tokenpom文件<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.0</version></dependency>2.创建jwt//当前时间long currentTimeMillis = System.currentTimeMillis

2020-05-11 22:34:22 134

原创 redis令牌桶限流

redis令牌桶限流code每个ip 1秒内只能发送一次请求pom文件<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis-reactive</artifactId> <version>2.1.3.RELEASE</version></

2020-05-11 22:20:42 195

原创 RabbitMQ总结

RabbitMQ1. 什么是MQ(Message Queue)2. 为什么要使用MQ2.1 解耦2.2 异步2.3 削峰3. MQ的缺点与解决3.1 系统可用性降低3.1.1 RabbitMQ高可用3.2 系统复杂度提高3.2.1 消息幂等性处理 (保证消息没有重复消费)3.2.1.1 什么是消息幂等性3.2.1.2 幂等性实现方案3.2.2 处理消息丢失情况3.2.2.1 Producer弄丢数...

2020-04-10 13:26:12 149

原创 Springcloud常用组件功能及作用总结

Springcloud常用组件1.eureka注册中心2.Ribbon负载均衡3.Hystrix熔断器4.Feign声明式调用5.Gateway网关6.SpringcloudConfig配置中心SpringcloudBus消息总线1.eureka注册中心1.提供服务注册与发现功能2.管理监控各个微服务服务信息以及健康状况2.Ribbon负载均衡1.用于微服务之间调用的负载均衡。2.负...

2020-04-06 20:21:25 2077 1

原创 Springcloud

SpringcloudSpringcloud是什么Springcloud和dubbo的区别3.微服务架构优势与劣势Springcloud是什么SpringCloud是基于SpringBoot的一整套实现微服务的框架。Springcloud和dubbo的区别1.Springcloud使用的http协议服务间通信数据请求多,效率低。 dubbo使用的是自定义协议,数据交互少,效率高。2.S...

2020-04-06 10:20:36 96

原创 Springboot总结

Spriongboot总结1.Springboot是什么2.Springboot自动配置原理3.Springboot自定义starter演示1.创建redis-springboor-autoconfigure项目a.pom文件依赖b.创建RedisProperties配置类c.创建RedisAutoConfiguration配置类d.在META-INF/spring.factories配置文件中配...

2020-04-05 21:48:27 120

原创 运行前端项目显示Node Sass does not yet support your current environment

//卸载node-sassnpm uninstall node-sass//重新安装node-sasscnpm install node-sass -D

2019-09-08 16:59:52 107

原创 Docker相关操作

镜像查看镜像 docker images拉取镜像 docker search 镜像名称删除镜像 docker rmi 镜像id容器查看: 正在运行 docker ps 所有 docker ps -a容器参数 -i 运行容器 -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端 --name :为创建的容器命名 -...

2019-09-04 16:22:15 81

原创 使用Feign注入失败解决

使用feign时org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘xxx’Caused by: org.springframework.beans.factory.BeanCreationException注入bean失败原因: **使用@Path...

2019-08-29 10:01:43 1221 1

原创 springSecurity入门案例

1. pom.xml中设置1.1 pom.xml设置打包方式为war<packaging>war</packaging>1.2引入依赖(Tomcat7插件可以不用) <dependencies> <dependency> <groupId>org.springframework.secur...

2019-08-26 10:12:46 200

原创 VueJs遇到的一个问题

前台向后台传一个id数组一个对象前台代码save (){ this.pojo.status = 1; axios.post(`/admin/${this.pojo.id == null ? `add.do?ids=${this.ids}` : `update.do?ids=${this.ids}`}`, this.pojo).then(response => { ...

2019-08-24 18:54:25 71

空空如也

空空如也

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

TA关注的人

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