自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小爷欣欣

记录点滴,以成永恒

  • 博客(481)
  • 资源 (12)
  • 收藏
  • 关注

原创 @Transactional7种事务传播机制,子类对象指向父类引用,Eureka同步机制,redis操作客户端,rpc与http,cap,base64 md5 大小栈堆

总之 就是范围大的向范围小的转换时,不需要强转。如 父类 = 子类。这里是子类对象指向父类引用,而且子类的范围(可以理解成功能)肯定要大于父类,所以不需要强转。2,@Transactional7种事务传播机制。1,子类对象指向父类引用。

2024-08-20 13:36:24 182

原创 mysql主从分离,k8s简介,bfs dfs,工厂模式,AI协助,构造器,内存泄漏,mysql表类型,@SpringBootApplication,SpringBoot启动流程,声明和注入bean

2 kubernates k8s 是一个容器,相当于为操作人员提供了一个操作众多微服务的窗口。k8s内部分两大块一个控制平面,一个node节点,node节点是工作节点,控制平面自然是控制台了。可以采用强一致性方式,让主从写入在一个事务中,同步完成才返回接口。看业务吧,写少读多的场景,这样是可行的。主从分离也是增加处理量和容灾的好方式。主节点负责写,每次写的时候会产生binlog日志,并将日志发送到从节点,从节点接收完成同步。总之,最终还是要通过增加硬件性能、网络速度来提升数据传送和写入处理能力。

2024-07-19 12:11:25 22

原创 幂等,kafka,mysql,kafka,redis,linux,bean声明周期,spring启动,AQS,位运算模运算,sql取每个班级的前3名,各种文件流,nginx, aop,分库分表

redis主从复制的原理:从服务器连接到主服务器,发送SYNC命令。主服务器接收到SYNC命令后,开始执行BGSAVE命令生成RDB文件。主服务器BGSAVE执行完毕后,将RDB文件发送给从服务器。从服务器收到RDB文件后,载入数据。主服务器在生成RDB期间的命令会保存在缓冲区中,同时也会将新的写操作也发送给从服务器。后者跟windos 差不多,都属于操作系统,可以直接部署在物理机上。但是这些操作系统的内核,或者说使用的语音都是linux。幂等在接口、消息队列 和防抖中都有见到,所以也是经常被问到的。

2024-07-16 00:31:11 18

原创 再次理解 动态代理,反射,数组排序优化案例,数组实现队列,Redis过期 Key 的删除策略,引用类型 ,Bean常见作用域,两种代理方式的区别,锁升级,微服务边界划分,B树和B+树,mysql锁

首先肯定不能抛给用户,再者如果是写公共组件 则直接抛出就行,如果是写业务层 就需要捕获了,如文件中找不到,那就啥文件找不到给前端即可。特点:反射是可入侵的,通过设置setAccessiable(true) 可以调用私有方法。此外调用会有性能影响。还有就是调用三方接口的异常,就把他们的异常说明直接返回,但是返回码要重新编译。使用过程:要调用的目标类对象.class.getDeclaredMethod。定义:就是把方法名当做参数,动态的调用。还有就是未知的异常就直接系统异常。

2024-07-05 11:09:05 18

原创 7 springCloud 引入hystrix

熔断是后续请求不再进来了,一直到感知服务正常后再恢复。降级:就是改用备用方案,一般两种方式,一是重试,而是返回固定报错。也可以主动降级,如大促时关闭核心服务,后续慢慢处理。被动降级就是 限流、熔断、超时了。hystrix 是熔断器,是一种保护机制,当服务端宕机了,熔断器会做降级、熔断处理,快速返回备用接口,不至于让请求堆积。熔断器的触发场景有很多种,如限流触发降级、请求超时触发降级、请求失败次数达到阈值降级。下面对失败率触发降级、请求超时触发降级、限流触发降级分别做测试。

2024-06-30 00:07:42 222

原创 6 springCloud 引入ribbon

ribbon是做负载均衡的,感觉跟nginx的区别是nginx是服务端要做的,ribbon是客户端做的,可以通过端口指定使用哪个分布式微服务。ribbon默认的策略是轮询。即多个服务端异常请求。测试,多次刷新请求,会发现端口重复出现8281 8285。在feign的测试中已经引入ribbon需要的依赖了。这里复制一个demo2服务,端口不一样,服务名一样。demo2 接口做如下修改,标识调用的是哪个服务。启动副本demo2,重启demo1,demo2。这里测试 还是使用demo1调用demo2。

2024-06-29 23:51:42 33

原创 5 springCloud 引入 feign

feign 作用是 在微服务内部间服务间的调用,不显示使用http,服务间的调用跟调用普通代码一样简单。这里就不用再建服务了。而是使用 demo1做客户端,demo2做服务端,用demo1调用demo2。然后重启demo1,demo2 看看调用demo1的接口能不能返回demo2的接口信息。建个service包,再建个接口,feignclient的值是服务端的服务名。controller再建个接口,注入feign。demo2中建个controller。demo1引入openfeign依赖。

2024-06-29 23:35:38 44

原创 4 springCloud 引入 gateway

说明:这里主要使用了网关的路由功能。这样的作用是可以将所有的微服务对外的域名(ip+端口)保持一个,然后不同微服务的请求 通过域名后面的服务名再做转发。这样对外是很友好的。网关可以用来做路由、负载均衡、请求拦截等功能。是微服务集群对外的门户。pom 中也需要把 gateway注册到eureka中。也就是 下面两种方式都能够访问demo1服务中的接口。同理,直接建个网关微服务模块。通过网关需要服务服务名。可以注册到eureka。

2024-06-29 23:14:04 112

原创 3 springCloud 引入 Eureka security

Eureka是注册中心,所有微服务都会注册到这里管理,可观察服务状态,服务个数等信息。还能够在服务间的调用提供联络功能。接着把demo1 和demo2 注册到eureka。有时候会自动生成,下面的版本控制信息,直接删掉就行。刷新eureka 可以看到两个demo都能注册进来。启动类 添加启动erueka服务配置。然后分别重启demo1 demo2。前端可以打开eureka页面。启动类 开启eureka。

2024-06-29 22:54:01 43

原创 2 springCloud 创建两个微服务

先总结:需要引入父依赖,然后加上spring-boot-starter-web 就可以直接启动了。创建两个子模块微服务(demo1,demo2) 作为生产者和消费者,留着后面使用。并把下面这块删掉,没有了,都沿用父依赖的配置。添加application.yml文件。再加个controller 测试接口。修改pom 把父依赖的坐标粘过来。同理 再建个demo2。

2024-06-29 22:27:48 65

原创 1 springCloud 创建父依赖

直接下一步,直接结束,部分配置 还需要再建成后改。使用spring initializr的方式。建成后长这样,把下面这些删掉 或 修改。

2024-06-29 22:04:45 67

原创 spring 指定bean id 来加载相同类名 不同包路径的bean 并使用set方法注入

业务场景,数据源可能是mysql也可能是impala。在mapper层级方法都是一样的。所以抽象出来一个父接口,再分别用mysql包下面的一个mapper和一个impala包mapper接口分别继承它。注意这俩mapper的beanid要区分开。然后使用set注入,使用全局变量参数区分使用那种mapper实现。使用:首先有两个bean在不同的包下面,但是这俩类名是一样的。

2024-05-27 11:51:16 390

原创 mybatis mapper重载坑爹

在mapper层级可以使用重载,但是参数名必须相同。

2024-05-09 18:28:11 517

原创 排查高CPU出现的代码位置,java restful上传下载文件,长连接和短连接,回调函数,泛型使用,k8s,mybatis二级缓存,mybatis断点,sql调优,gateway网关,业务设计模式

4.multipartentitybuilder上传文件乱码可setmode(HttpMultipartMode.RF6532)3.multipartentitybuilder传参值只能是file或者字符串,如果是数组类型可在接口处以字符串接收即可。2.后端用 multipartfile接收 如果是多文件,那就是multipartfile[]1.上传文件 content-type:multipart/form-data。5.multipartentitybuilder可另外指定上传的文件名。

2024-02-08 16:10:45 13

原创 分布式锁,处理的问题,impala,视图,接口转https,spring,mybatis,IOC,DI,AOP,自动装配,@Requestbody

乐观锁,就是加个version字段设置为0,在对要操作的数据将这条数据update set version=1 where version=0如果返回ture,表示这条数据没有被其他线程操作。如果返回false,表示这条数据正在被其他线程上锁,那当前线程就return,停止后续操作。因为相对于悲观锁,它的操作更方便,即使锁不释放,那只要改下数据值即可。悲观锁,就是使用for update ,再结合事务。处理,发现定时任务没有加锁,多个机器节点都执行了。原因,现网有同一个任务,定时任务多次发送。

2023-11-02 17:55:11 5

原创  查看服务所在目录属于哪个文件系统,以及剩余磁盘空间

命令: dh -lh 目录。如 dh -lh /home。

2023-10-11 16:32:19 184

原创 springboot bean管理,鉴权,异常统一处理、整合mybatis、单点登录,断言,统一http返回码,全局线程池接口字段校验,导出excel,google缓存结合stream判空,redis

2.1 mybaits执行过程:读取配置文件中数据库连接信息 -》创建一个sqlsessionFactory工厂 -》调用工厂中指的方法创建一个sqlsession会话实例-》sqlssesion.getMapper(.class)获取对应的mapper映射实例-》调用mapper中的方法执行sql -> 提交、关闭。简单理解:引入mybatis-spring-boot-starter,创建DataSource、sqlsessionFactory bean,完成对数据库的连接。2,整合mybatis。

2023-07-31 17:02:01 12

原创 项目管理,公钥加密, 私钥解密,快排,三级缓存

BIO NIO区别什么对象需要放到spring容器中单线程下stringbuffer 原stringbuilder的区别(偏向锁,轻量级锁,重量级锁)。使用了锁,默认是偏量锁,当有其他线程参与竞争时升级为轻量锁,再当自旋次数达到一定次数时升级为重量级锁。只能升不能降。观察者模式:构成有 被观察者 抽象被观察者,观察者,抽象观察者接口。在被观察者中注入观察者,被观察者有需要通知则依次循环通知观察者。乐观锁悲观锁 for updatemysql视图的存数据吗?怎么同步到原表中

2022-11-26 17:46:24 16

原创 规避http请求中的过滤器

规避http请求中的过滤器,在microservice.yaml中将enabled改为false如sercicecomb.http.filter.server.serverRestwArgs.enabled:false

2022-07-22 20:02:29 439 1

原创 新增面试题

1,吞吐量就是系统每秒处理的请求数。即tps对不同的接口要求不一样。差点的要十几个每秒,业务逻辑少的接口吞吐量在一百左右。平均三四十.

2022-03-27 17:08:05 154

原创 动态代理和@transactional事务传递简单理解

动态代理简述:有两种实现方式,一是jdk反射机制代理,二是CGLIB增强代理。这里只简述jdk反射机制的使用步骤:新建接口,新建接口的实现类,并编写具体实现内容,新建处理器类实现InvocationHandler,实现invoke方法,可以在其中写切面内容。然后使用时,调用Proxy.newProxyInstance方法,三个参数分别是,要代理的目标类的加载器,目标类实现的所有接口,处理器类。最后调用切点方法。spring使用@Transactional事务传递时,假如说controller调用serv

2021-09-28 11:54:10 1357 2

原创 面试解决的问题

1,jvm调优,调整jvm内存比例,建设fullGc次数2,某个页面跳转失败,Nginx路径配错3,新加的配置文件无法打包,pom文件增加.json文件后缀

2021-08-24 11:53:28 18

原创 stream 根据value排序map

package com.kjgs.language.test;import java.util.*;import java.util.stream.Collectors;public class Test1 { public static void main(String[] args) { Map<Integer,Integer> map=new HashMap<>(); map.put(1,3); map.pu.

2021-08-24 10:56:16 1036

原创 正向代理和反向代理的区别

正反是以客户端为参考的。大多是客户端主动发起请求,即为正向!所以正向代理是隐藏客户端。反向代理是隐藏服务端

2021-08-05 12:16:51 171

原创 stream流直接判断返回方法的值,不用再赋值给其他变量,

optional.of(方法()).filter().map().orelse()

2021-07-19 18:20:05 859

原创 所谓抽象就是对同一类事物的相同特性的提取

所谓抽象就是对同一类事物的相同特性的提取

2021-07-14 21:57:55 235

原创 回调函数的理解

把A理解成客户端,把B理解成服务器。A要访问B,让B做事。但是B做的慢,于是B就先返回给A一个正在处理的状态,等处理完了再通知A处理结果,那么这个A通知B的手段就是回调了。通常为了加强适配性(因为服务器只有一个,而客户端有多个),客户端都会实现接口C,再把C注入到服务器,那么服务器对外提供带有参数C的方法即可。还有一种形式的回调,就是让服务方提供方法,在里面可以写自己的实现内容,再回调执行。如线程,我们先new Thread,并在里面写run方法,最后再调用start方法启动。这里的start方法里面

2021-04-20 17:19:50 233

原创 两个服务通过http传输excel文件

一个服务读取文件,放到字节流数组中,这个服务再返回这个数组。另一个服务再访问上面一个服务,拿到字节数组。写到文件中,如果事先知道文件格式是excel可以,给新生成的文件的后缀加上.xlsx...

2021-03-15 20:59:33 756

原创 linux kill/杀掉进程后 自动重启脚本

echo "************ autostart, Begin... **************"#得到对应服务的进程号str=`ps -ef | grep language-1.0-SNAPSHOT.jar | grep -v "grep"|awk '{print $2}'`#获取进程所在的目录pwd=`ls -l /proc/${str} | grep "cwd ->" | grep -v "grep" | awk '{print $NF}'`echo "进程目录是:"$pwd

2021-02-10 09:59:56 2857

原创 stream.filter不会空指针,stream.map会出现空指针

前者返回一个流对象,后者如果出来的值是空的,再.findfirst()等其他的方法就会出现空指针,所以最好给map的取值结果加个默认值,去stream.map(aa-> Maputils.getstring(aa,key,默认值))

2021-01-29 17:51:17 6549

原创 stream流带下标foreach循环

stream.iterate(0,i->i+1).limit(pars.size()).foeach(i ->{system.out.printlen(i)});

2021-01-29 15:00:49 6006

原创 stream.of 与list.stream的区别,在使用filter过滤时的区别

前者是把集合当做一个整体处理,后者是把一个个元素分开来遍历。所以要对集合中每个元素做判断过滤,要用后者list.stream

2021-01-28 17:15:05 1046

原创 idea上git提交忽略部分目录

问题网上比较流行的方法是 在editor中修改file types,把要修改的目录加到 ignore file and folders中,打算我要把resource整个目录都忽略掉,如果把resources;加到里面。在project中也不显示这个目录了。这就是问题所在。解决在git的工具栏中,选Changelists --》new Changelist,随便写个名字,然后提交,在提交的也右键不需要提交的目录或文件,选 move files to another changelist ,在弹窗中选择刚

2020-11-05 14:43:09 1788

原创 Task2 计算电梯运行时间线程

package main.com.lift;import com.google.common.collect.Lists;import com.sun.corba.se.spi.presentation.rmi.IDLNameTranslator;import java.math.BigDecimal;import java.util.List;import java.util.Queue;import java.util.TreeSet;import java.util.concurr.

2020-09-06 17:06:00 599 1

原创 Task 生成排队人数任务线程

package main.com.lift;import com.google.common.collect.Lists;import java.util.List;import java.util.Queue;import java.util.concurrent.Callable;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.LinkedBlockingQueue;public class.

2020-09-06 17:05:36 260

原创 MatchTitle 主程序入口

package main.com.lift;import com.alibaba.fastjson.JSON;import com.google.common.collect.Lists;import com.google.common.collect.Maps;import org.junit.Test;import java.util.*;import java.util.concurrent.LinkedBlockingQueue;public class MatchTitle .

2020-09-06 17:03:48 228

原创 ExecuteRun

package main.com.lift;import com.google.common.collect.Lists;import com.google.common.collect.Maps;import java.lang.annotation.Target;import java.util.LinkedList;import java.util.List;import java.util.Map;import java.util.Queue;import java.util..

2020-09-06 17:02:42 253

原创 BaseDao

package main.com.lift;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.Statement;public class BaseDao { public Connection getConnect(){ Connection connection=null; try{ .

2020-09-06 17:01:59 236

原创 常见算法题

一、去重和简单遍历package 算法;import java.util.HashSet;import java.util.Iterator;public class set去重和简单遍历 {public static void main(String[] args) {HashSet< String> set=new HashSet();set.add(“a”);set.add(“b”);set.add(“a”);set.add(“A”);Iterator iterato

2020-05-30 12:29:10 466

原创 java多线程面试题总结

文章目录1,线程和进程的区别2,创建线程的几种方式3,线程的执行的几种状态4,同步代码块和同步方法的区别5,监视器内部是如何线程同步的?程序应该做哪种级别的同步?6,什么是死锁(deadlock)?7,如何保证N个线程可以访问N个资源同时又不导致死锁?1,线程和进程的区别进程是应用程序,线程是进程中的一个执行序列,一个进程可以有多个线程。像java的jvm就是一个进程,里面的thread就是一...

2020-05-30 12:25:22 612 1

java常用知识,算法,学习

java常用知识,算法,学习

2022-04-05

带有分页技术的web案例

压缩包里是一个web工程,jar包和数据库都有,安装数据库,eclipse导入后直接在tomcat中运行即可。里面有分页技术,分页的简单原理说明http://blog.csdn.net/csdnliuxin123524/article/details/79590106这里有说明

2018-03-17

wordCount实例

wordCount实例,是一个maven工程,对应的解说在http://blog.csdn.net/csdnliuxin123524/article/details/79469665,是我写的一个博客专栏

2018-03-08

firefox浏览器26.0版本

压缩包中包含火狐浏览器26.0版本的,和gwt的扩展程序,

2018-02-23

eclipse和firefox浏览器的gwt插件

压缩包中包含eclipse和火狐浏览器上的gwt插件,解压后文件夹格式的是eclipse需要的gwt插件,里面包含gwt自带的案例和jar包,msi格式的是需要再火狐浏览器的扩展程序中添加的

2018-02-23

TCP和UDP socket调试工具V2.2

用户测试socket通讯,udp,tcp都可以使用,设定好ip地址和端口,参数点击发送就行。打开后解压直接使用,有个socke+xml通讯的截图案例。

2018-01-06

json转对象需要的jar包

commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph.jar,morph-1.0.1.jar

2018-01-04

dom4j.jar slf4j.jar log4j.jar 包下载

dom4j.jar slf4j.jar log4j.jar 包下载,,,,,,,,,,,,,,,,,,,,,,,,

2017-12-29

springMVC简单工程搭建

springMVC简单工程搭建,包含jar包,有静态文件,lib包,controller,service,dao层创建,结构清晰明了。并有简单controller想页面传数据的简单案例,十分适合初学者学习,对应的原理和工程搭建步骤介绍可见http://blog.csdn.net/csdnliuxin123524/article/details/78127114

2017-09-29

servlet-api.jar 适用于import javax.servlet.http.HttpSession;异常

servlet-api.jar 适用于import javax.servlet.http.HttpSession;异常 直接下载后直接导入 即可,

2017-09-21

struts+hibernate整合框架简单实例,包含数据库sql语句,框架所需jar包

对应的说明文档请见小编的博文,http://blog.csdn.net/csdnliuxin123524/article/details/77941606 博文中有对struts+hibernate框架的原理介绍。

2017-09-20

loadrunner安装、使用、分析教程

此文档包含loadrunner安装、使用、破解、汉化、分析等教程和解说。图文并存,比较直观。其中的图片需要放大看。

2017-09-06

空空如也

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

TA关注的人

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