- 博客(36)
- 收藏
- 关注
原创 linux指令整合(centos系统持续更新中。。。)
nohup java -jar jar包路径 -Xms512m -Xmx512m > 日志路径 2>&1 &java -jar jar包路径。lsof -i:端口号。kill -9 进程号。3、 启动java程序。4、查看服务器资源占用。1、查询java进程。
2024-07-01 15:52:32
157
原创 定位OOM(Out of Memory)
其中-XX:HeapDumpPath=xxx是发生oom时保存记录文件的路径。例如:visualvm_jdkhome="D:\jdk18"打开etc下的visualvm.conf添加jdk目录。双击运行bin目录下的exe文件即可。通过官网下载后的压缩包进行解压。成功找出问题出现位置。
2024-07-01 14:49:35
576
原创 synchronized对象锁和类锁
顾名思义 对象锁可以锁住同一对象下synchronized修饰的方法,但不会影响其他对象。synchronized修饰普通方法就为对象锁。类锁static synchronized修饰一个方法,当一个线程在执行该方法时,其他任何线程用任何对象调用static synchronized修饰的方法都需要等待。
2024-05-10 14:19:05
681
原创 记录minio的bug(Object name contains unsupported characters.)
但图片都还在121.xxx.xxx.xxx服务器上,同样我10.xxx.xxx.xxx也安装了minio并且我的后端服务配置的minio地址也是10.xxx.xxx.xxx。此时有一个业务通过minio客户端获取图片(getObject方法),url是121.xxx.xxx.xxx的图片。场景是我将后端服务从121.xxx.xxx.xxx服务器上转移到了另一台服务器10.xxx.xxx.xxx。我采用了第一种方法,第二种只需要通过url获取到ip信息,再通过获取到的信息查询对应的配置记录即可。
2024-05-07 13:05:08
1358
原创 Mysql主从复制
source_log_file:binlog文件名(mysql-bin.000008)source_password:赋权主从的用户的密码('Root@123456')Slave_SQL_Running为读取relaylog执行sql操作到本地的。INSERT into tb_user VALUES(1,'小明','0');Slave_IO_Running为读取binlog二进制日志的。source_log_pos:运行位置(6564104)source_user:赋权主从的用户('abc')
2024-05-06 20:15:48
537
原创 微服务入门学习笔记(黑马商城)
自定义过滤器有两种GatewayFilterFactory和GlobalFilter,前者可以设置单个服务过滤,也可以设置全局过滤,后者创建完后自动生效全局过滤实现更加简单。这样就实现了网关登录校验并且将用户信息传递给其他服务,但其他服务互相调用时还是不会传递用户信息。所以我们需要在服务之间发送http请求是带上用户信息的请求头。登录校验过滤器实现:将过滤校验所需的配置类和工具类转移到网关。创建网关模块,引入springcloud的网关依赖。配置网关转跳路由和过滤器,我的网关端口为8090。
2024-04-29 11:19:26
5164
1
原创 枚举、策略模式、工厂设计、模板设计使代码更加优雅
以上的业务逻辑outLetter是没有返回值的,现在我提升一下需求,tag为0,1,2时我需要输出对应字母,而tag为3,4时我要获取到对应字母。这样的需求根据现在的代码只能在总接口加一个返回值String类型的getLetter方法,但是这样所有的实现类都需要实现这个方法,那么每个实现类里都要有个空的方法,显然这么做是不合理的,这时候我们就需要使用。我们在调用时注入多个Service,通过filter找出需要的实现类,这样拓展时只需要新建一个实现类,继承策略方法总接口就可以了。
2024-04-15 09:00:00
738
原创 记录linux从0部署java项目(宝塔)
运行安装脚本安装完成后访问内网面板地址,填写用户名密码。在软件商店中安装nginx、mysql、redis开放3306和6379端口(为了本地测试连接)
2024-04-08 14:17:44
4253
原创 线程池的七个参数
如果任务数大于核心线程数和阻塞队列的容量,线程池会创建临时线程(临时线程数等于最大线程数-核心线程数数量)来处理多出来的任务。如果临时线程没有任务了则会进入空闲状态,等到空闲时间到则会销毁该临时线程。如果任务数大于最大线程数和阻塞队列容量则会触发拒绝策略,拒绝多余的任务。如果任务数大于核心线程数则会将任务存储放到阻塞队列中。线程池接收任务时,优先会使用核心线程来处理任务。
2024-04-02 13:07:29
324
原创 Java多线程三种实现方式
输出结果:线程1输出内容线程2输出内容线程1输出内容线程2输出内容线程2输出内容线程2输出内容线程2输出内容线程2输出内容线程2输出内容线程1输出内容线程2输出内容线程1输出内容线程1输出内容线程1输出内容线程1输出内容线程2输出内容线程2输出内容线程1输出内容线程1输出内容线程1输出内容最简单的实现多线程的方法,但拓展性差,Java中只能继承一个父类,也就意味着不能继承其他类了。
2024-03-30 20:07:34
427
原创 IO流详解
需要注意的时字符流读取数据会将读取到的二进制码转变成十进制,我们把(char)强转删除就能看到。输出结果: [97, -27, -107, -118, -24, -65, -103]在执行read方法时会从目标文件中试图获取8KB的数据,然后从缓冲区中读取数据。idea默认使用的时Unicode的utf-8编码格式,中文字符占3个字节。除了缓冲区写满,调用flush和close方法也会将缓冲区的数据写入目标文件。第二次读取三分之一的“啊”和三分之二的“这”第三次读取剩下的三分之一的“这”
2024-03-22 17:24:15
556
原创 Java的集合Collection和Map
java中的集合分为两大家族,单列集合和双列集合,分别是Collection和Map。LinkedHashSet:特点:有序、不重复、无索引(数组+双向链表+红黑树)HashSet特点:无序、不重复、无索引(数组+链表+红黑树)LinkedList特点:有序、可重复、有索引(双向链表)TreeMap特点:添加的键是可排序、不重复、无索引的。ArrayList特点:有序、可重复、有索引(数组)TreeSet特点:可排序、不重复、无索引(红黑树)HashMap特点:添加的键是无序、不重复、无索引的。
2024-03-16 13:24:57
476
1
原创 解决部署至服务器后获取时间不正确的问题
好好好date: cannot set date: Operation not permitted说我没有权限,我是root进入的linux但docker里的系统怎么拿权限啊?然后为了下次部署方便再dockerfile中加上ENV TZ=Asia/Shanghai,完美!我第一时间反应就是服务器的时间没设对,打开服务器date一下这里过了几分钟。哦哦哦哦哦哦哦我是docker部署的我得去docker容器里看。然后我改容器内时间总可以了吧。先解决眼前的问题我直接。这是我现在本地的时间。
2024-03-13 09:00:00
605
原创 HashMap底层原理
hashMap是一个无序,不重复,无索引的双列集合,通过hashCode方法和equals方法保证键唯一hashMap主要依靠数组、链表、红黑树的数据结构实现,当发生哈希 碰撞时新加的元素会接在原来数组的元素后面形成一个链表,当链表长度大于等于8数组长度大于等于64时会将链表转化成红黑树来增加查询效率。注:哈希碰撞即在不同对象不同属性的情况下计算出的哈希值相同(概率很小)
2024-03-12 13:48:58
1511
1
原创 Mysql中时间类型查询处理记录
格式:SELECT DATE_SUB(date,INTERVAL expr unit)需求说明:需要查询下次检查时间为今天或者明天的设备。
2024-03-11 15:30:19
503
原创 Map集合的遍历方法
用keySet()方法将双列集合的key变成一个单列集合遍历key集合获取value当然除了增强for还可以使用迭代器或者forEach。
2024-03-05 16:06:28
286
原创 数组和链表的区别
数组所记录的数据存在于一个内存中,当我们需要查询数组中的一个数据时,只需要拿到数组的地址值,再通过索引就可以找到对应数据,所以数组的查询效率高。但当我们要新增或者删除一个数组元素时,就需要改动被删或增元素后的所有元素的索引值,所以数组增删效率低。
2024-03-04 15:06:29
245
1
原创 Ruoyi-vue-plus5.0登录流程详解
这里我们可以看到对encrypt-key这个密匙是进行了两次加密,一次Base64一次RSA加密后续后端也会解密两次。我们看到这个类中有多个实现类对应着每个授权类型。根据传入的授权类型获取容器中对应的bean对象来区分调用哪一个实现类中的login方法。这个拦截器会拦截除登录相关接口的所以请求,处理检查是否有token外,还会校验请求。先获取header中的密匙解密两次后解密请求体中的参数。一个客户端可以有多种授权类型,只要满足其中一个即可。这里的配置对应拦截器中的参数。这里两个文件对应两种环境。
2024-03-02 15:55:13
2532
原创 Java中的Switch
输出内容为“这是一”不写default程序不会报错当a!=1且a!=2时不做任何处理删除了case 1 的break如果a=1程序不会再case1 中跳出会继续执行所以输出内容是“这是一 这是二”
2024-03-01 10:02:44
444
1
原创 Mybatis通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗?
接口的全限名,就是映射文件中的 namespace 的值;接口的方法名,就是映射文件中 Mapper 的 Statement 的 id 值;Mapper 接口的工作原理是 JDK 动态代理,Mybatis 运行时会使用 JDK。动态代理为 Mapper 接口生成代理对象 proxy,代理对象会拦截接口方法,转而。Mapper 接口里的方法,是不能重载的,因为是使用 全限名+方法名 的保存和寻。Mapper 接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符。参数,就是传递给 sql 的参数。
2024-02-29 16:20:03
290
原创 Mybatis中${}和#{}的区别
会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值,可以有效的防止 SQL 注入,提高系统安全性。${}使用Statement对象,使用的字符串连接方式, 有sql注入的风险。
2024-02-29 15:30:23
174
原创 springboot出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)原因总结
新人在使用mybatis时一定总是出现:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)的错误吧。首先出现这条报错的原因是因为程序在运行中需要执行mapper中的方法但找不到对应的xml文件或者xml中没有此方法。解决方案:在application.yml文件中加入。以上两种问题只需要将文件名或者方法名对上即可。我们发现编译后target里压根没有xml。
2024-02-29 15:12:55
6606
3
原创 Java中基础数据类型和引用数据类型的区别
1、基本数据类型:有且只有整数、浮点、布尔、字符类型在java中由int、double、boolean、char表示。2、引用数据类型:除了以上数据类型都是引用数据类型。
2024-02-28 21:33:13
274
1
原创 Java中int类型和Integer的区别
new Integer()出的对象其地址不同所以直接使用“==”返回一定时false,而直接赋值在-128到127之间时java通过缓存获取数据其地址相同所以“==”返回true,而越过-128到127这个范围赋值,其与直接new Integer()无异,地址终究不相同所以时false。
2024-02-28 17:46:49
590
原创 面向对象和面向过程的区别
面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程开发面向对象:是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。面向对象有封装、继承、多态的特性,所以易维护、易复用、易扩展。可以设计出低耦合的系统。 但是性能上来说,比面向过程要低。
2024-02-28 15:54:34
354
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人