自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(266)
  • 资源 (1)
  • 收藏
  • 关注

原创 数据库读写分离与分库分表

数据库读写分离与分库分表

2022-03-03 17:52:21 1621

原创 CodeTop字节飞书算法

leetcode146. LRU缓存机制(双向链表+HashMap)代码太长了,先看别的leetcode121. 买卖股票的最佳时机(记录到当前遍历位置为止股票价格最小值,当前遍历值减最小值即为到当前位置为止最大利润,leetcode该题有视频讲解)// 只买卖一次股票,所以要尽可能的在低点买入,高点卖出public class Solution { public int maxProfit(int prices[]) { // 记录到当前遍历位置位置股票价格最小值,

2021-11-02 13:31:56 2056 1

原创 SpringAop关键概念解释及实例

1. 什么是AOPAOP是Aspect Oriented Progamming(面向切面编程)的简称,和OOP(面向对象编程)一样是一种编程思想,是对OOP的一种补充。AOP旨在将横切关注点从业务主体逻辑中进行剥离,实现关注点分离,以提高程序的模块化程度。即业务模块只需要关注业务逻辑,无需关注日志、安全、事务等通用逻辑。2. AOP相关术语切面(Aspect):一个关注点的模块化(比如日志、事务、权限验证等)。以注解@Aspect的形式放在类上方,声明一个切面。连接点(Joinpoi

2021-10-30 20:09:57 336

原创 一文理解BIO/NIO/AIO

BIO(blocking io)定义同步并堵塞(传统堵塞型): 服务器实现模式为一个线程处理一个请求(连接). 即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的开销.NIO(non-blocking io)定义同步非堵塞.服务器实现模式为一个线程处理多个请求(连接). 即客户端发送的连接请求都会注册到多路复用器上.多路复用器轮询到有IO请求的连接就进行处理.AIO(Asynchronous io 目前用的少,还不太成熟)异..

2021-07-22 17:02:44 247

原创 elasticsearch、ik分词器的安装及初步使用

elasticsearch定义Elasticsearch 是一个分布式的免费开源搜索和分析引擎,它可以快速的存储、搜索和分析适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的海量数据.它以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名.elasticsearch中的index(索引)、type(类型)、document(文档)index如果当作名词相当于mysql中的database,如果当作动词相当于mysql中的inserttype相当于my..

2021-07-12 07:07:35 402 2

原创 JavaIO文件输出输出详解

java.io.FIle类文件或目录路径名的抽象表示形式.可以使用File类对文件或文件夹进行操作,比如:创建一个新的文件/文件夹删除文件/文件夹获取文件/文件夹判断文件/文件夹是否存在对文件夹进行遍历获取文件的大小注: File类是一个与操作系统无关的类,任何操作系统都可以使用这个类中的方法....

2021-07-11 12:36:46 2332 3

原创 使用阿里云代理仓库解决maven中导入不了jar包的问题

有的时候依赖国外人开发的 一些jar包,在maven中导入时由于网速过慢等原因,导入失败,这时可以使用阿里云的代理仓库,从阿里云代理仓库中下载所需的jar包,速度飞快。只需在xml文件中导入以下repositories标签中的代码即可<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaL

2021-07-09 15:25:02 650

原创 动态代理和静态代理

动态代理和静态代理都是代理.那什么是代理模式呢?代理模式是指,为其他对象提供一种代理以控制这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户类和目标对象之间起到中介的作用.换句话说,使用代理对象,是为了在不修改目标对象的基础上,增强主业务逻辑(即代理对象可以在目标对象的基础上增加一些新的功能).客户端真正想要访问的对象是目标对象,但是客户类真正可以访问的对象是代理对象,客户类对目标对象的访问是通过访问代理来实现的.当然,代理类和目标类要实现同一个接口.例如:

2021-07-07 19:08:23 350 1

原创 线程池+HttpClient连接池读取指定目录下的所有内容作为参数下载数据

由于工作需要,希望读取文件中的数据作为参数,调用API,返回结果存入到数据库或者excel文件中,如果使用单线程以及File包,如下代码:File file = new File("文件路径");InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(template[i]), encoding);BufferedReader bufferedReader = new BufferedReader(

2021-07-07 19:06:28 979

原创 java反射机制及类加载过程

在讲java反射机制之前,先了解下静态语言和动态语言.动态语言:是一类在运行时可以改变其结构的语言.在运行时代码可以根据某些条件改变自身结构.例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其结构上的改变.比如动态语言有: Python、PHP、C#、JavaScript、Object-C静态语言:和动态语言相对,在运行时结构不可变的语言.比如静态语言有:Java、C、C++.虽然Java不是动态语言,但是Java可以被称之为“准动态语言”,原因就在于Java的反射机制可.

2021-07-05 00:52:54 331

原创 http、https(加密解密、签名验签、ca证书签发机构).看完十来篇文章的总结

加密解密对称加密加密和解密的密钥是同一个.优点: 加密速度快缺点: 密钥的安全问题.如果通过传输的方式传输密钥,那么和传递消息一样可能会被劫持,不安全.如果直接在主机上写入密钥,那么客户端机器上的密钥可能会被黑客获取,从而获取加密的信息内容.(服务器的安全性比较高,不容易被获取).非对称加密加密和解密的密钥不是同一个.一般使用公钥加密,私钥解密.这样即使黑客获取客户端的公钥,也无法获取信息的内容,因为需要服务器的私钥进行解密.优点: 安全性高缺点: 加密速度慢...

2021-06-29 01:41:07 565 1

原创 date格式数据前端界面时间显示包括时间以及时区问题解决

背景: mysql数据库表时间类型为datetime,在实体类中时间类型为date格式在前端界面显示如下:但是只想获取日期数据,其他数据不想要。解决办法如下:方法1:@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")private Date findTime;方法2:前端使用substr(0,10)函数提取日期(猜测时区问题需要另外处理,否则可能会由问题,还未验证。)dataForm.rdnsEntities[0].time.s

2021-06-25 11:05:13 1326 1

原创 跨域问题的解决

没有配置跨域,导致浏览器提示在A域名下不可以访问B域名的api,这样的错误很好解决,只需要在后端加入cors配置,就可以解决这类跨域问题,我们在springmvc的java配置中加入以下代码即可package com.yonyou.threatIntelligence.cyber_threat_gateway.config;import org.springframework.context.annotation.Bean;import org.springframework.context.a..

2021-06-24 01:06:09 237

原创 使用alibaba gateway但是不能路由成功问题的解决

gateway网关的重要作用之一便是进行路由转发工作。经常遇到转发失败的问题。比如前端配置如下: // api接口请求地址 window.SITE_CONFIG['baseUrl'] = 'http://localhost:90/api';gateway的application.yml配置如下:server: port: 90spring: application: name: threat-gateway cloud: gateway: routes:

2021-06-24 00:24:04 4493 3

原创 mybatis报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)解决

mybatis经常会报绑定异常,记录下以便以后查询方便。下面便是这次碰到的原因:mapper.xml位置如下方式:在application.yml中配置如下:mybatis-plus: mapper-locations: classpath:/mapper/*.xml``所以找不到xml文件,导致报错。修改后如下:```bashmybatis-plus: mapper-locations: classpath:/mapper/cyber_threat_ip/*.xml这样便修复

2021-06-23 09:13:46 585

原创 深入理解java虚拟机之一:java基础

jre和jdk的区别jre是java运行时环境,包含java虚拟机和java基础类库(javaSE API子集).jdk是java程序开发工具包.提供给程序员使用,包括java程序设计语言、java虚拟机、java类库.HotSpot虚拟机的优点使用准确式内存管理.准确式内存管理指虚拟机可以知道内存中某个位置的数据具体是什么类型(引用类型还是数据类型).从而避免了在Classic虚拟机中使用的基于句柄的对象查找方式.这样每次定位对象都少了一次间接查询的开销,显著提升执行性能.句柄..

2021-06-22 07:33:33 99

原创 使用vs code修改前端vue代码页面不更新问题的解决

管理-设置-搜索auto save,修改off为afterDelay即可。如下图:

2021-06-15 14:56:14 10298 10

原创 使用smtp协议实现邮箱信息发送

package com.yonyou.threatIntelligence.service.impl;import com.sun.mail.util.MailSSLSocketFactory;import com.yonyou.threatIntelligence.dao.EmailDOMapper;import com.yonyou.threatIntelligence.entity.Email;import com.yonyou.threatIntelligence.service.SendE

2021-06-09 10:52:30 1990

原创 爬虫爬取网站数据(urllib、requests、lxml)

简介urllib和requests都可以进行页面爬取操作,通过urllib.urlopen()、requests.get()等方法传入url从而获取url页面等信息.另外可以通过lxml中的etree方法通过xpath解析DOM树.其他的库比如BeautifulSoup和lxml一样都可以用来解析xml/html.使用实例代码(requests+lxml)# -*- coding: UTF-8 -*-import sysreload(sys)sys.setdefaultencoding(..

2021-06-02 16:14:58 589 1

原创 ASCII编码、GB2312编码、Unicode编码、UTF-8编码

ASCII编码(使用一个字节编码)ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。其中最后一位用于奇偶校验。问题:ASCII是单字节编码,无法用来表示中文(中文编码至少需要2个字节),所以,中国制定了GB2312编码,用来把中文编进去。但世界上有许多不同的语言,所以需要一种统一的编码。注: .

2021-06-01 18:07:22 2410

原创 windows+python2.7环境安装MySQLdb

pip install wheel去这个网站查找whl格式的MYSQL-pythonhttp://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python下载对应版本:MySQL_python‑1.2.5‑cp27‑none‑win_amd64.whl在下载目录进入cmd,执行pip install MySQL_python‑1.2.5‑cp27‑none‑win_amd64.whl多python版本环境可以指定相关版本的pythonpython2

2021-05-24 17:39:46 140

原创 linux系统防火墙开放端口用于在其他机器上访问

# 安装防火墙yum install firewalld firewalld-config# 开启防火墙systemctl start firewalld # 查看开放的端口firewall-cmd --list-all# 开放8080端口,并持久化firewall-cmd --add-port=8080/tcp --permanent# 重启防火墙firewall-cmd --reload# 查看机器ipifconfig# 通过ip:开放的端口号即可在其他机器上访问...

2021-05-20 16:35:17 323

原创 rabbitmq延时队列作用及代码编写

延时队列应用场景比如在下订单场景中,下订单之后有30分钟的时间去支付,如果30分钟之后订单还未支付则订单取消,如果每隔30分钟验证订单是否过期的方式(过期则判断是否支付成功,如果支付成功则订单生成,否则订单失效),那么在第一分钟下的订单请求可能要到第60分钟才能处理.延时过长.所以可以采用延时队列的方式,将下订单请求放到延时30分钟的队列中,30分钟之后将请求取出进行处理,如果下订单请求中已经支付成功,则下订单成功,否则失败.延时队列使用图示订单生成给交换机order-event-exch..

2021-03-28 18:57:57 160

原创 幂等性的解释及解决办法

什么是幂等性执行一次和执行多次的结果是一致的.对于接口幂等性而言,就是用户对于同一操作发起的一次请求和多次请求的结果是一致的,不会因为多次点击而产生了副作用.比如支付场景中,用户购买了商品支付扣款成功,但是返回结果时网络异常,此时扣款成功,用户再次点击按钮时再次扣款返回结果成功,有两条支付流水,这就没有保证接口的幂等性.什么情况下需要防止没有保证幂等性的情况用户多次点击按钮用户页面回退再提交微服务互相调用,由于网络问题,导致请求失败.feign触发重试机制幂等解决方案之tok..

2021-03-27 21:37:51 358

原创 feign远程调用丢失请求头问题解决

背景微服务调用的时候请求不会传递参数.比如调用方服务请求头中有cookie存放sessionId,而被调用方服务没有请求头,从而没有cookie信息,也就不能根据cookie中存放的sessionId获取session信息,影响后续操作.解决办法通过实现RequestInterceptor接口,完成对所有的Feign请求,传递请求头和请求参数。本质是通过ThreadLocal线程共享变量实现.代码实现package com.kenai.gulimall.order.feign;i..

2021-03-27 17:16:40 1145

原创 用户登录拦截器实现+ThreadLocal线程共享变量

配置类中添加拦截器package com.kenai.gulimall.order.config;import com.kenai.gulimall.order.interceptor.LoginUserInterceptor;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.sp.

2021-03-27 16:15:07 452

原创 单点登录(SSO)原理

什么是单点登录单点登录,即SSO(Single Sign On),是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统单点登录实现原理当访问某个系统时,先从session中获取用户信息,如果为null,则自动跳转到登录服务器(url中带上系统1浏览器的访问路径)进行登录,登录成功后,生成一个token,将token:用户信息放入到redis缓存中,并将token_id:token存入登录服务器的cookie中,然后重定向到系统1浏览器(带上token).系统1浏览器..

2021-03-24 10:02:38 2803

原创 分布式会话解决方案之SpringSession及session的redis缓存序列化和修改cookie域名

分布式环境下的session共享问题分布式环境下的session共享解决方案方案一: session同步(复制)优点tomcat原生支持,只需要修改配置文件缺点session同步需要数据传输,占用大量带宽任意一台服务器保存的session数据都是所有服务器的session数据总和,占用内存较大方案二: 将session数据存储在客户端优点将数据存储在客户端,在需要的时候直接从客户端获取,也就没有了分布式session的问题节省服务器端资源缺点数据存放在客户端的c.

2021-03-23 17:28:12 590

原创 JUC(java.util.concurrent)处理并发编程工具包

线程的创建方式继承Threadpackage thread.ThreadCreate;public class ExtendThread { public static void main(String[] args) { System.out.println("main...start..."); Thread thread = new Thread01(); thread.start(); System.out.pri.

2021-03-21 15:35:11 92

原创 使用springCache简化缓存开发

导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifact..

2021-03-17 21:11:32 99

原创 谷粒商城项目性能优化记录

动静分离将css、js、img、html等静态界面放在nginx,动态界面从应用服务器获取JVM内存优化(尽可能的使内存大些,这样垃圾回收占用的时间便会减少)-Xmx1024m: jvm最大可用内存为1024m-Xms1024m: jvm启动时分配的内存为1024m,此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。-Xmn512m: 新生代内存大小为512m,整个JVM内存大小=新生代大小 + 老年代大小 + 永久代大小数据库索引pms_category中的..

2021-03-17 15:54:25 462

原创 缓存数据一致性(缓存和数据库数据一致性)解决方案

缓存数据一致性解决方案之双写模式(写数据库的同时把缓存中的数据也改了)解决脏读方法: 加读写锁缓存数据一致性解决方案之失效模式(在修改数据库的同时删除缓存数据,下次请求时从数据库获取)可见,最后读缓存的时候由于写db-2没有操作成功,所以读取的数据为老数据,更新缓存的时候会把老数据更新上去,而不是新数据.解决办法: 加读写锁缓存数据一致性解决方案总结阿里中间件Canal解决缓存数据一致性谷粒商城项目/一般的缓存数据一致性解决方案缓存的所有数据都有过期时间,数..

2021-03-17 15:54:04 285

原创 redis和redisson分布式锁实现

分布式锁的基本原理多个服务同时去一个地方“占坑”,如果占到就执行逻辑,否则就继续等待,直到释放锁.“占坑”可以去redis,也可以去数据库,或任何所有服务都能访问的地方.等待可以使用自旋的方式.分布式锁的优化过程锁的自动续期先设置一个较大的过期时间.使用redis实现分布式锁@Overridepublic Map<String, List<Catelog2Vo>> getCatalogJson(){ // redis缓存存在的三个问题: ..

2021-03-17 15:26:31 484

原创 返回日期字段一行代码进行格式化处理

方法1: 使用@JsonFormat注解(放在date属性或者其get方法上都可以)@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss") private Date createTime; 方法2: 在配置文件中配置spring.jackson.date-formatspring: jackson: date-format: yyyy-MM-dd HH:mm:ss...

2021-03-10 16:21:58 101

原创 统一异常处理实现

引入依赖包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <version>2.3.4.RELEASE</version></dependency>后端逻辑代码/** * 使用统一异常处理,通过@RestCont..

2021-03-04 11:08:10 151 1

原创 JSR303数据校验(非空、数字、字母、URL等,包括分组校验)

引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <version>2.3.4.RELEASE</version></dependency>数据约束实体类代码BrandEntity.javapackage c..

2021-03-03 16:39:50 1454 2

原创 阿里云oss对象存储访问的使用

创建阿里云OSS对象存储服务创建bucket存储空间创建RAM子用户Accesskey进行API调用(安全性考虑)添加权限:代码有关操作引入阿里云oss依赖<!-- 使用阿里云的oss对象存储服务--><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-aliclo.

2021-03-01 11:50:07 1015 3

原创 gateway网关进行路由转发、权限校验、限流控制使用实例

新建gateway微服务module,并导入依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId></dependency>其余依赖参考链接在主启动类中配置@EnableDiscoveryClient注解开启服务注册与发现,这样网关微服务能够发现..

2021-02-21 22:27:53 1694 1

原创 nacos作为配置中心进行配置管理使用实例

为什么要使用配置中心当修改配置时,每次都要重新打包部署,不仅繁琐还影响服务的使用.导入依赖包<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>其他依赖见该链接在resources/boots..

2021-02-21 20:37:31 1127

原创 nacos作为注册中心使用实例

实现效果member会员服务调用coupon优惠券服务,查询用户所拥有的优惠券导入依赖包<!-- 导入服务发现包,这样能获取注册中心中的微服务--><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></depen..

2021-02-21 20:05:17 462

maven工程拆分的ssm框架

maven工程拆分的ssm框架(方便代码重用):父工程提供pom.xml文件,子工程包括ssm_web、ssm_service、ssm_dao三个子工程,其中ssm_web的pom.xml文件中导入ssm_service的依赖,ssm_service的pom.xml中导入ssm_dao的依赖.

2020-10-22

空空如也

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

TA关注的人

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