- 博客(48)
- 收藏
- 关注
原创 git命令-基本使用
git安装后-指定名称和邮箱:#查看远程分支:#查看本地分支:git branch#切换分支:#创建新分支:#将工作区的被修改的文件和新增的文件提交到暂存区:git add .# 将暂存区所有文件添加到本地仓库:# 将文件添加到远程仓库:git push# 将代码推送到指定的远程分支:# 从远程仓库拉取代码到工作空间:git pull# 从远程仓库拉取指定分支代码:# 用于合并指定分支到当前分支:
2024-12-03 15:09:02
464
2
原创 Java反射机制
是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。简单来说,反射机制指的是程序在运行时能够获取自身的信息。在Java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。
2024-09-19 11:50:09
943
原创 RestAPI操作ES
ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。官方文档地址: https://www.elastic.co/guide/en/elasticsearch/client/index.html我们学习的是Java HighLevel Rest Client客户端API。
2024-09-04 19:27:02
1403
2
原创 ElasticSearch搜索引擎的索引库操作
索引库就类似数据库表,mapping映射就类似表的结构。我们要向es中存储数据,必须先创建“库”和“表”。
2024-09-04 18:52:54
1324
原创 对象存储服务MinIO
MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的 图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配 置简单,基本是复制可执行程序,单行命令可以运行起来。MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志 文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
2024-08-27 23:13:11
1433
原创 freemarker模板引擎
FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网 页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一 款程序员可以嵌入他们所开发产品的组件。模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言, 不是像PHP那样成熟的编程语言。那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。
2024-08-27 19:32:42
1079
原创 Bean 实例化的基本流程和生命周期
1.自定义MyBeanPostProcessor@OverrideSystem.out.println("BeanPostProcessor的before方法...");@OverrideSystem.out.println("BeanPostProcessor的after方法...");2.注入配置MyBeanPostProcessor3.测试控制台打印即可。
2024-08-18 18:31:39
871
原创 SpringBoot自动配置--原理探究
需求: 自定义redis-starter,要求当导入redis坐标时,SpringBoot自动创建Jedis的Bean。
2024-08-18 16:42:24
1491
原创 Redis 删除策略
Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态XX :具有时效性的数据-1 :永久有效的数据-2 :已经过期的数据或被删除的数据或未定义的数据问:过期的数据真的删除了吗?答:不是的。
2024-08-15 19:15:55
642
原创 Java 操作 Redis和redis持久化
Bean//1.创建自定义模板类//配置json类型的序列化工具//这样key会用字符串方式保存2.具体代码了解:/*** 测试自定义* 法意:定义配置类JavaConfig,自定义序列化策略* */@Test//保存对象Student stu = new Student(1,"xx","拉面");//获取对象Student stu2 = new Student(2,"ll","拉面");
2024-08-15 19:06:44
1695
原创 了解Redis
Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数 据库特征:1. 数据间没有必然的关联关系2. 内部采用单线程机制进行工作3. 高性能,官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是 81000次/s。4. 多数据类型支持5. 持久化支持。可以进行数据灾难恢复。
2024-08-14 19:36:57
895
原创 SpringMVC的用法
意义:处理用户的请求,相似于doget与dopost位置: 类上:一级目录方法:二级目录例如:user/save属性:value = "",path = ""表示请求路径method=常量,此请求的类型(get,post),若不设置则此请求适配所有的请求方式限制请求参数,例如:params={"msg1","msg2"}表示请求路径中必须携带参数名为msg1与msg2的参数注意:1.超链接默认发送的是get请求2.所有请求所携带的参数格式均为:key = value。
2024-08-14 19:10:56
996
原创 SpringBoot-enjoy模板引擎
主要用于Web开发,前后端不分离时的页面渲染。1.将页面保存在templates目录下。2.添加enjoy的坐标。3.开启配置(配置类)
2024-08-12 23:26:41
559
原创 初识SpringBoot
YAML是一种直观的能够被电脑识别的的数据数据序列化格式, 并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比 如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。YAML文件的扩展名可以使用.yml或者.yaml。
2024-08-12 19:15:13
867
原创 Spring
包括:IoC Container(Ioc容器)、Events(事件通知机制)、Resources(资源加载机制)、i18n(国际化)、Validation(数据校验)、Data Binding(数据绑定),Type Conversion(类型转换)、SpEl(Spring表达式)、AOP(面向切面编程);包括:Spring MVC(Spring基于MVC模式设计封装的web框架),WebSocket(spring集成WebSocket,WebSocket是一个服务器与客户端双向通信的技术)等;
2024-08-05 22:34:05
566
原创 索引小tips
9. 【建议】对单表的多次alter操作必须合并为⼀次 对于超过100W⾏的⼤表进⾏alter table,必须经过DBA审核,并在业务低峰期执⾏,多个alter需整合在⼀起。7. 【建议】在多表 JOIN 的SQL⾥,保证被驱动表的连接列上有索引,这样JOIN 执⾏效率最⾼。B+树的设计特别适合磁盘存储, 其节点可以容纳更多的键值对,减少了磁盘I/O次数。3. 【建议】主键的名称以 pk 开头,唯⼀键以 uni 或 uk 开头,普通索引以 idx 开头,⼀律 使⽤⼩写格式,以字段的名称或缩写作为后缀。
2024-08-05 19:20:30
787
原创 Mybatis基础
ORM 模型是数据库的表和简单 Java 对象(Plain Ordinary Java Object,简称 POJO)的映射关系模型,主要解决数据库数据和 POJO 对象的相互映射。Java对象 POJO 对象(Plain Ordinary Java Object): 简单的 Java 对象,实际就是普通 JavaBeans。映射配置 配置分为:类与数据库中表的映射;对象与表中记录的映射;类的属性与数据库中 表的字段的映射。数据库 按照数据结构来组织、存储 和管理数据的仓库,ORM 模型中最底层的内容。
2024-07-29 20:18:50
1111
1
原创 非关系型数据库MongoDB的基础操作
更新数据 语法: db.集合名.update({查询条件},{$set:{更新内容}}, { upsert: , multi: , } )gf:[{stuname:'小红'},{stuname:'小黄'},{stuname:'小孩' }]3. MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++, PHP,C#等多种语言。db.student.insert({stuname:'张三',age:16});// {upsert:true}把没匹配到的数据 作为新增的值添加到mongo中。
2024-07-28 19:25:14
853
1
原创 sql注入和防止sql注入的方法
SQL注入(SQL Injection)是一种网络安全漏洞,允许攻击者在应用程序的SQL查询中插入恶意代码。使用ORM(Object-Relational Mapping)工具:许多ORM工具会自动处理SQL构建,减少注入风险。占位符,并通过编程语言的库绑定参数。使用存储过程(Stored Procedures):将SQL代码预先存储在数据库中,并通过参数调用。通过一些特殊的符号让原本的sql失效,让sql执行新的sql指令。验证和清理用户输入:确保用户输入不包含恶意字符或SQL关键字。
2024-07-27 20:21:46
526
原创 JDBC(Java访问数据库)
Java Database Connectivity:Java访问数据库的解决方案JDBC定义了一套标准接口,即访问数据库的通用API, 不同的数据库厂商根据各自数据库的特点去实现这些接口。JDBC希望用相同的方式访问不同的数据库,让具体的数据库操作与数据库厂商实现无关,从而在不同数据库之间轻易的进行切换。下载对应的数据库的驱动 mysql-connector-java-5.0.4-bin.jar将驱动类加载到项目中 Eclipse: Build Path。
2024-07-27 19:55:33
459
原创 Mysql高级DQL数据查询
只有完全满足条件(主外键关系)的数据才能出现的结果#1.1非等值联查 笛卡尔积 两个结果集的相乘 逻辑上有错误#1.2等值联查-- 查询出学生和班级信息student class 相同字段做主键那个是主表 做外键那个是子表where student.classid=class.classid and ssex='男';-- 5张表全部联查起来stduent class sc cource teacher#面试题:查询出学过张三老师课程的学生信息。
2024-07-22 21:35:24
1145
1
原创 Linux下vim编辑器的使用方法
ctrl+w+j/k 通过j/k可以上下切换,或者:ctrl+w加上下左右键,还可以通过快速双击ctrl+w依次切换窗口。:vsplit+窗口名(保存后就是文件名) 打开一个新窗口,vsplit可以简写为vsp。:split+窗口名(保存后就是文件名) 打开一个新窗口,split可以简写为sp。O 为在目前光标所在处的上一行插入新的一行。a 从目前光标所在的下一个字符处开始插入。A 从光标所在行的最后一个字符处开始插入。o 在目前光标所在的下一行处插入新的一行。r 只会取代光标所在的那一个字符一次。
2024-07-18 23:34:25
504
原创 shell的基本操作
(1)变量名称可以由字⺟、数字和下划线组成,但是不能以数字开头,环境变量名建议⼤写。(2)等号两侧不能有空格(3)在bash中,变量默认类型都是字符串类型,⽆法直接进⾏数值运算。(4)变量的值如果有空格,需要使⽤双引号或单引号括起来。
2024-07-18 19:28:33
1586
原创 Linux常用操作命令
r:重启 可以加参数21:00ls [选项] [文件或目录]选项:-l : 每列仅显示一个文件或目录名称。-a 或--all : 下所有文件和目录。-i 或--inode: 显示文件和目录的inode编号。(ls -ai:命令累加使用,查看加inode编号的隐藏文件)cd [文件或目录]~:当前用户的家目录绝对路径:一定由根目录/写起相对目录:相对于某一路径,其中 .代表当前目录, ..代表上一级目录。
2024-07-17 22:58:01
1132
原创 String、StringBuilder和StringBuffer的区别
String 是 Java 中的一个类,用于表示字符串。它是不可变的,因为内部使用字符数组来保存字符串内容,用于存放值的value[ ]是final类型,因此只能被赋值一次,不能被更改,即一旦创建就不能被修改。StringBuilder的实现原理与 StringBuffer 相同,唯一的区别是 StringBuilder 不是线程安全的,而 StringBuffer 是线程安全的。当对 String 进行修改时,实际上是创建了一个新的 String 对象,将修改后的字符串复制到新的对象中。
2024-07-15 19:06:16
415
原创 Java网络编程
1.在Java中,可以通过InetAddress类的静态方法getLocalHost()来获取本地主机的IP地址2.在Java中,如果需要测试网络是否通畅,可以使用Runtime对象的exec()执行ping命令3.如果想检查主机与目标主机之间的网络是否通畅,可以使用ping命令来测试,请求超时代表网络不通畅,有正常答复响应代表网络通畅。在Windows操作系统中,可以通过ipconfig命令查看本地主机的IP地址。
2024-07-13 10:12:10
283
1
原创 如何处理压缩文件?
(1).根据原始路径(字符串),创建源文件(File对象)(2).创建根目录(File对象),判断根目录是否已经存在,如果存在,则删除(//rootDir.delete();仅能删除空目录,非空白目录则需使用commons-io包提供的FileUtils工具类进行删除),如果不存在,则在磁盘上创建根目录(3).ZipInputStream:用于进行zip格式的压缩文件输入流;遍历压缩包中的每个子目录或子文件(ZipEntry类型的对象)
2024-07-11 19:20:00
539
1
原创 String字符串的常见方法总结
split(String regex):分割字符串,参数为正则表达式,以regex所表达的字符串为分隔符,返回一个分割后的字符串数组。equals():用于比较字符串内容是否相等,返回值为boolean类型,若相等返回true,不相等返回false。toString():用于将对象转换为字符串类型返回字符串本身,返回值为String类型。toLowerCase():将字符串转成小写字母,返回String类型的值。toUpperCase():将字符串转成大写字母,返回String类型的值。
2024-02-18 21:21:41
440
1
原创 String为什么是不可变的?
String是一个引用类型,而它引用的是一个字符串对象,从源码可以看出,它是个char类型的数组,被final修饰为常量,其次,value数组是用private修饰的,且String外部不提供修改这个数组的方法,所以初始化之后没法继续改变value数组的内容,String类被final修饰,也就是不可继承,即不可被继承后修改破坏。
2024-02-18 21:06:54
419
原创 数组常见算法代码总结
采用二分查找的基本思想,将查找的值和数组的中间值作比较(要求这个数组必须有序)如果被查找的值小于中间值,就在中间值左侧数组继续查找;否则中间值就是要找的元素。采用冒泡排序的基本思想,就是把小的元素往前移或者把大的元素往后移。相邻的两个元素进行比较,交换也发生在这两个元素之间,若两个元素相等,则不会交换。数组旋转可以分为向左旋转和向右旋转,向左旋转即正序循环遍历交换相邻两个元素,向右旋转即逆序循环遍历交换相邻两个元素,外层循环控制旋转的位数。采用双指针的思想,即从头、尾部同时开始进行比较,查询速率快。
2024-02-18 20:30:45
472
原创 今日Java小问题:List、Set、Map
插入、删除数据时,LinkedList的效率比较高,因为ArrayList要移动数据,ArrayList适用于遍历、查找。Vector只要是关键性的操作,方法前面都加了synchronized关键字,来保证线程的安全性。List 以索引来存取元素,有序的,元素是允许重复的,可以插入多个null。ArrayList是数组的数据结构,LinkedList是链表的数据结构。Set 基于 Map 实现,Set 里的元素值就是 Map的键值。Vector是线程安全的,ArrayList不是线程安全的。
2024-01-28 16:10:52
420
1
原创 今日Java小问题:跨平台性、接口、抽象类
接口与实现它的类之间可以不存在任何层次关系,接口可以实现毫不相关类的相同行为,比抽象类的使用更加方便灵活;因为是运行在jvm虚拟机上的,所以它的代码就能不经修改在不同平台的jvm上运行,window或unix的jvm是已经开发好了的,有jvm就可以四处运行(而jvm是安装jre或jdk就有的)。java语言是一次编译,多次运行的,java编译器会将源文件编译为二进制字节码(.class),然后字节码在jvm上直接运行(解释执行)的。使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。
2024-01-23 22:04:28
423
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅