Java
记录java相关
想花
有趣有想法,然后通过代码、硬件实现
展开
-
k8s部署elk+filebeat;springCloud集成elk+filebeat+kafka+zipkin实现多个服务日志链路追踪聚合到es
如今2023了,大多数javaweb架构都是springboot微服务,一个前端功能请求后台可能是多个不同的服务共同协做完成的。例如用户下单功能,js转发到后台,然后到,然后到,然后到,后续还有发货、客户标签等等服务。其中每个服务会启动多个实例做负载均衡,这样一来我们想看这个功能的完成流程日志,需要找到对应的服务器ip,日志文件在哪,其中又要确定具体负载转发到哪些台服务器上了。原创 2023-01-23 18:20:10 · 2311 阅读 · 0 评论 -
k8s部署sleuth-zipkin
【代码】k8s部署sleuth-zipkin。原创 2023-01-23 11:21:02 · 254 阅读 · 0 评论 -
k8s部署kafka+zookeeper
决定在一个pod中部署这两个容器先拉取images。原创 2023-01-21 22:41:05 · 1416 阅读 · 0 评论 -
长时长视频java存储及vue播放解决方法
例如时长1小时的一个文件,使用此工具按照每5秒分割一个一个的小视频,生成的每个小视频后缀都是。标签指定播放地址为m3u8那个文件就可以了,有专门的视频播放js类库,会自己解析。格式的文件,这个文件就是上图这些小视频的"索引"了,记录着每一帧在哪个。这样就可以一小个视频来进行存储了。本人使用vue3框架播放视频。处理,使用的工具软件。原创 2023-01-18 09:06:27 · 1616 阅读 · 0 评论 -
springcloud项目日常升级,config server服务报错原因
【代码】springcloud项目日常升级,config server服务报错原因。原创 2022-11-21 10:27:46 · 334 阅读 · 0 评论 -
spring cloud gateway整合security实现统一权鉴
方法,返回对象包含数据库查询出的用户账号和密码,然后和用户录入的账号密码比较验证。当登录成功后会把token返回给前端,后续的调用业务接口都会把token携带上进行。因为gateway框架使用的是netty的webflux技术,不是springmvc的servlet。上图的是否 2、3是我自定义的角色,在查询数据库用户账户密码时候,也查询了角色,并且一起封装到。security有两个版本,一个是sevlet,一个是webflux。当验证完成账户密码成功后,进行权限验证,判断请求的路径。原创 2022-11-06 20:33:43 · 4022 阅读 · 0 评论 -
String判空问题
a!=""原创 2022-08-10 07:31:14 · 144 阅读 · 0 评论 -
记录一个bug:springboot项目打包把第三方jar依赖分离
因为springboot项目打包默认会把第三方jar也打包进项目。这样就导致我们的项目有100M,然而我们自己的项目一共100K。原创 2022-07-17 09:34:02 · 407 阅读 · 0 评论 -
springboot下载文件功能
下载功能其实就是用户输入指定文件路径信息,然后把文件返回给用户。(不同于上传的概念)同时需要考虑下文件的类型,从而选择使用字符流还是字节流操作,如果传输图片,用的是字符流,可能会造成文件内容缺失,毕竟是字符为单位传输的。无论什么文件,使用字节流肯定没错。实现步骤pom文件中引入了springboot-tater-web依赖新建cotroller类,其中的RequestMapping方法的方法参数中配置HttpServletResponse类方法中实现读取服务器文件流操作类,servlet写入流操原创 2022-05-26 18:55:29 · 1719 阅读 · 1 评论 -
SVN快速上手使用(适用于新入职同事)
今天2022/04/19号,发现新公司使用的svn,特此写贴熟悉下1. 拉取checkout检出远程svn仓库的项目代码首先你要有安装svn客户端,并且有登陆帐号密码,并且有指定仓库的代码操作权限。在磁盘找一个干净的目录,鼠标右键单击选择checkout检出注意有两个概念是远程仓库和工作副本,分别代表着远程svn服务器的代码、已经拉取到本地的代码。2. 提交commit代码当你在本地的代码工作副本中修改/删除/新增代码或者文件,并且已经进行了add操作,然后就可以进行提交了,最后别忘了写注释,注原创 2022-04-19 22:50:59 · 1071 阅读 · 0 评论 -
java实现【国密SM4】加密解密-CBC模式
网上有很多个版本,但是算法都是一样的,有可能使用相同的参数来加密解密文本得到的加密字符是不一样的。在此统一说下。SM4实现的功能商业加密。SM4功能是加密文本。例如客户A把字符串"hello world"通过SM4的cbc模式加密后得到密文"234a",然后把密文发送给客户B,客户B通过SM4解密,得到原文"hello world"。SM4的cbc模式使用条件加密或解密都需要相同的密钥和向量SM4的密钥和向量实际上都是操作128bit的数据,也就是32个字符串长度的十六进制字符串,也就原创 2022-04-02 11:23:38 · 21910 阅读 · 2 评论 -
java生产者消费者同步模式
开启2个线程,A线程分别打印字符ABC,B线程分别打印123。实现交替打印最终结果是A1B2C3实现一使用java的synchronized和wait() notify()实现https://gitee.com/shenshuxin01/spring-cloud-demo-202202/blob/master/ssx-utils/src/main/java/ssx/demo/ssxutils/learn/Main.java...原创 2022-03-24 19:26:39 · 109 阅读 · 0 评论 -
k8s部署redis单机版
apiVersion: apps/v1kind: Deploymentmetadata: labels: app: redis name: ssx-redis-dm namespace: ssxspec: replicas: 1 selector: #标签选择器,与上面的标签共同作用 matchLabels: #选择包含标签app:mysql的资源 app: redis template: #这是选择或创建的Pod的模板 metad原创 2022-03-23 16:44:21 · 1449 阅读 · 0 评论 -
maven打包失败:自定义项目工具类打包给其他微服务使用\springboot项目默认打jar包后项目结构发生变化
原因单独为util依赖包install正常,但是其他服务引用后打包不行,这样可能是因为util是spring boot项目,是通过spring boot的maven插件进行打包的,打包后的结构并不是自己的原创 2022-02-23 19:04:57 · 563 阅读 · 0 评论 -
java操作hbase使用hbase-client2依赖
介绍了单一curd和批量curd1. 导入maven依赖<!-- hbaseClient依赖包,需要排除日志log4j,不然和springboot的冲突了--> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId>原创 2022-02-18 17:26:41 · 1273 阅读 · 0 评论 -
使用Dockerfile制作jre环境基础镜像
因为直接使用java:8当做基础镜像的话,最终生成的镜像包600M多,我只需要jre,并不想要jdkDockerfile内容FROM docker.io/jeanblanchard/alpine-glibc# 选择轻量级基础镜像#注意这个文件夹会重命名为myjre 最终目录 /myjre/bin 这里的宿主机jre文件夹是把jdk里面的jre复制出来的 ADD jre /myjre/ ENV JAVA_HOME /myjreENV PATH ${PATH}:${JAVA_HOM原创 2022-02-17 22:29:57 · 2009 阅读 · 0 评论 -
使用Dockerfile部署docker生成容器-模板
# 这是docker运行jar包的模板 运行此Dockerfile文件时建议 把此Dockerfile文件+xx.jar单独放到一个文件夹,然后执行 `docker build -t hellowold-jar-images:v1.0 .`FROM java:8# 作者MAINTAINER ssx <ssx17852015601@163.com>#因为容器运行后可能一直产生日志文件,导致容器数据变大,合理利用挂载点# 容器挂载的意思就是容器内部的某个目录映射到宿主机某个目录,操作容原创 2022-02-16 00:20:02 · 729 阅读 · 0 评论 -
springboot集成logback配置文件模板
定义logback的配置文件为 logback-spring.xml就可以使用spring的一些特性模板<?xml version="1.0" encoding="UTF-8"?><!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 d原创 2022-02-15 09:16:37 · 800 阅读 · 0 评论 -
json工具类使用
1. 一般的springboot项目中集成了jackson1.1 直接在方法参数中使用public String hello(@RequestBody MyPOJO v){...}1.2 由于某些原因,只能方法参数使用Sting类型,需要在方法内部转换public String hello(@RequestBody String v){ MyPOJO my = new com.fasterxml.jackson.databind.ObjectMapper().readValue(原创 2021-12-22 16:56:06 · 249 阅读 · 0 评论 -
nacos配置中心信息 nacos版本2.0.3
nacos信息安装版本是2.0.3单机版配置管理新建配置文件DataId:nacosclientdemo-dev.properties内容:hello = this_is_cloud_configserver.port=8089原创 2021-12-20 18:11:44 · 1345 阅读 · 0 评论 -
JAVA正则
10. JAVA正则matcher.find()和matcher.matches()的区别1. matches() 功能:尝试根据模式匹配整个区域 注意:匹配的是整个区域 下面是测试源代码: //创建指定匹配规则的模型 Pattern pattern = Pattern.compile("ab([1-8]*)f");//创建匹配器 Matcher matcher = pattern.matcher("ab5625836f");原创 2021-12-16 11:18:29 · 260 阅读 · 0 评论 -
java动态代理机制
9. java动态代理机制动态代理在Java中有着广泛的应用,比如Spring AOP、Hibernate数据查询、测试框架的后端mock、RPC远程调用、Java注解对象获取、日志、用户鉴权、全局性异常处理、性能监控,甚至事务处理等。本文主要介绍Java中两种常见的动态代理方式:JDK原生动态代理和CGLIB动态代理。9.1 代理模式给某一个对象提供一个代理,并由代理对象来控制对真实对象的访问。代理模式是一种结构型设计模式。 可以分为静态代理、动态代理。9.2 静态代理适合已经确定了被代理的服原创 2021-12-16 11:17:58 · 770 阅读 · 0 评论 -
JNDI配置数据源
7. JNDIJNDI是 Java 命名与目录接口(Java Naming and Directory Interface)典型的使用例子就是数据库连接配置:如果不使用jndi的话,我们java连接mysql就需要 自己配置url账号密码等,如果后期修改mysql会很麻烦Class.forName("com.mysql.jdbc.Driver", true, Thread.currentThread().getContextClassLoader()); conn=DriverManager.原创 2021-12-16 11:17:10 · 2539 阅读 · 0 评论 -
java线程池服务ExecutorService
5. ExecutorServiceExecutorService的submit和executeExecuteService代表的是Executors创建的线程池submit提交的是Callable方法,返回Future,说明submit是有返回值的execute执行的是Runnable方法,没有返回值所以submit和execute的区别是提交的方法和是否有返回值ExecutorService的shutdown,shutdownNow,awaitTerminationshutdown方法:平原创 2021-12-16 11:16:28 · 243 阅读 · 0 评论 -
CountDownLatch类使用api
4. CountDownLatch类使用api源码countDownLatch类中只提供了一个构造器://参数count为计数值public CountDownLatch(int count) { }; 类中有三个方法是最重要的://调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行public void await() throws InterruptedException { }; //和await()类似,只不过等待一定的时间后count值还没变为0原创 2021-12-16 11:15:35 · 160 阅读 · 0 评论 -
maven依赖的作用域\<scope>
3. maven依赖的作用域<scope>属性包括Scope的作用域范围包括compile、test、provided、runtime、system、import。 编译、测试、运行,并且还可以加上是否被打入包中。compile此范围为默认依赖范围,是一个比较强的依赖,适用于所有阶段。这些dependencie(依赖)的jar,会传递到其他依赖的上层项目中。由于运行时需要所以编译范围的依赖会被打包,会随着项目一起发布。范围:编译、测试、运行(部署)都有效 。test表示原创 2021-12-16 11:14:52 · 730 阅读 · 0 评论 -
java注解使用
2. java注解使用自定义注解,可以把注解定义在变量上注解就是一种注释说明,可以配置相应属性的值,通过java反射机制把注解的值取出来,然后逻辑中使用例子定义注解public @interface Excel{/*** 导出到Excel中的名字.*/public String name() default “”;}```使用注解```javapublic class USer{@Excel(name = “用户编号”)private String u原创 2021-12-16 11:12:58 · 217 阅读 · 0 评论 -
springboot自动装配原理
24. springboot自动装配原理之前搭建ssm框架的时候,需要些3个xml配置文件,用来配置mybatis、spring、springmvc组件。然而现在有了springboot,我们甚至可以0配置直接启动web服务了。为什么springboot不需要进行配置了呢?其实他们自动帮我们配好了。下面整理下如何自动配置的。依springmvc为例子。在项目的maven的pom文件导入<artifactId>spring-boot-starter-web</artifactId>原创 2021-12-14 10:05:01 · 1204 阅读 · 1 评论 -
zk和redis分布式锁比较
一、zookeeper简介统一管理分布式集群,ZooKeeper 是一个集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务。分布式应用程序以某种形式使用所有这些类型的服务。每次实现它们时,都需要进行大量工作来修复不可避免的错误和竞争条件。由于实现这些服务的难度,应用程序最初通常会吝啬它们,这使得它们在发生变化时变得脆弱且难以管理。即使正确完成,这些服务的不同实现也会导致部署应用程序时的管理复杂性。主要是监听各个节点的情况,ZooKeeper 是分布式应用的高性能协调服务。它在一个简单的界面中原创 2021-12-06 11:41:28 · 2010 阅读 · 0 评论 -
java多线程并发
java笔记多线程并发无论是继承Thread类重写run()方法、实现函数式接口Runnable的run()方法、实现函数式接口Callable的V call()方法。其底层代码都是调用java的Thread类的start()方法开启多线程。方式一:不使用线程池启动继承Thread类方式public class ThreadA extends Thread{ @Override public void run(){ System.out.println("继承T原创 2021-07-27 11:40:54 · 95 阅读 · 0 评论 -
HTML5 WebSocket
前言参考文档:https://www.runoob.com/html/html5-websocket.htmlWebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,原创 2021-06-28 18:26:19 · 126 阅读 · 1 评论 -
后台解析数据--form表单get、post方法的使用(如何上传图片到服务器)
浏览器行为:Form表单提交action:url 地址,服务器接收表单数据的地址method:提交服务器的http方法,一般为post和getname:最好好吃name属性的唯一性enctype: 表单数据提交时使用的编码类型,默认使用"pplication/x-www-form-urlencoded",如果是使用POST请求,则请求头中的content-type指定值就是该值。如果表单中有上传文件,编码类型需要使用"multipart/form-data",类型,才能完成传递文件数据get原创 2021-05-10 14:19:25 · 1063 阅读 · 0 评论 -
java项目打jar包,并且在cmd命令行运行
在idea中给项目打jar包按快捷键 接下来就是按需求操作了。看下图模型选择相应的。Main Class如果留空的话,那么在配置文件里面就不会有以下内容也就是说你在命令行运行jar的时候若不指定运行类,就会报错如果指定类,就不报错Jar Files from lib 选项决定了你最终生成的jar包的结构,第一项是把项目的代码+额外的jar包依赖(例如ojdbc.jar)全部整合到一起,最终输出一个jar文件。第二项是把项目代码和额外的依赖jar包分开,生成好几个j原创 2021-04-22 18:53:11 · 946 阅读 · 0 评论 -
java二维数组冷知识
int[2][] //这样就行了,后面那个中括号写不写都行//代表声明了两个数组,每个数组的长度是不确定的。其实定义二维数组 int[][]原创 2021-04-02 14:29:02 · 90 阅读 · 0 评论