- 博客(67)
- 收藏
- 关注
原创 实现公网数据传输给内网(使用frp)
如果你想在内网设备2上运行 FRP 服务器端(frps),在内网设备3上运行 FRP 客户端(frpc),并使用公网设备1来完成数据传输,你需要通过公网设备1来访问设备2,然后设备2再转发请求到设备3。这种情况下,公网设备1实际上充当了一个转发或接入点的角色。
2024-03-29 16:50:12 346
原创 shell脚本执行需要sudo权限的命令,如何避免人工输入密码
然而,需要强调的是,这种做法在安全性方面存在明显的风险,特别是在生产环境中。密码以明文形式出现在命令行或脚本中,可能会被恶意用户利用。因此,虽然这种方法在某些场景下看起来方便快捷,但在实际应用中应当尽量避免,特别是在涉及敏感或安全性要求高的环境中。更推荐的做法是使用无密码sudo配置(通过编辑/etc/sudoers文件),或者使用密钥认证等更安全的认证方式。该命令在Unix或Linux系统中用于以超级用户(root)权限执行命令,而不需要通过标准的sudo密码提示手动输入密码。
2024-03-29 14:30:56 284
原创 Linux chown命令详解
命令用于设置文件所有者和文件关联组的命令。Linux/Unix 是多人多工操作系统,所有的文件皆有拥有者。利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符。。chown 需要超级用户 root 的权限才能执行此命令。只有超级用户和属于组的文件所有者才能变更文件关联组。非超级用户如需要设置关联组可能需要使用命令。: root。
2024-03-29 14:11:07 484
原创 ssh远程如何使用密钥免密码登录(配置过程)
配置完后,就可以在客户端使用密钥ssh服务器了,使用如下方法,还可以使用外部程序,控制服务端的重启、关机功能。但是存放在什么位置呢?我这边是放到了服务端用户目录下的xx目录/.ssh目录下,并将id_rsa.pub(公钥)文件改名为authorized_keys。本博客主要阐述客户端和服务端都是用管理员(不是超级管理员)账号如何配置客户端文件、目录等,以及如何解决一些由于权限问题导致配置失败的问题。生成公钥和私钥,在.ssh/目录下,会新生成两个文件:id_rsa.pub(公钥)和 id_rsa(私钥)。
2024-03-27 22:02:24 177
原创 InnoDB存储引擎中的锁(整理)
在数据库中锁是为了解决资源争抢的问题,锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。数据库系统使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。InnoDB存储引擎区别于MyISAM的两个重要特征就是:InnoDB存储引擎支持事务和行级别的锁,MyISAM只支持表级别的锁。
2024-03-20 15:02:54 884
转载 MySQL中如何实现事务提交和回滚
事务是由数据库中一系列的访问和更新组成的逻辑执行单元事务的逻辑单元中可以是一条SQL语句,也可以是一段SQL逻辑,这段逻辑要么全部执行成功,要么全部执行失败举个最常见的例子,你早上出去买早餐,支付宝扫码付款给早餐老板,这就是一个简单的转账过程,会包含两步从你的支付宝账户扣款10元早餐老板的账户增加10元这两步其中任何一部出现问题,都会导致整个账务出现问题假如你的支付宝账户扣款10元失败,早餐老板的账户增加成功,那你就Happy了,相当于马云请你吃早餐了,O(∩_∩)O哈哈~
2024-03-19 16:25:42 29 1
原创 数据库中DQL、DML、DDL、DCL的概念与区别
数据库语言可以根据其功能被分为几个不同的类别:DQL(数据查询语言)、DML(数据操纵语言)、DDL(数据定义语言)和DCL(数据控制语言)。这些类别反映了数据库管理系统中执行的不同类型的操作。
2024-03-18 15:36:50 449
原创 索引相关知识总结
当查询的数据,在索引树中找不到的时候,需要通过非主键索引获取主键,再到主键索引树中去获取所要查询的记录,这个过程叫回表。如:select * from Table where age = 22;通过执行计划(explain)的Extra字段值,可以看到当前sql是否进行了回表,如果Extra字段值为Using index则表示当前查询通过覆盖索引可以获取到,无需通过回表查询记录。select的数据列只用从索引中就能够取得,不必回表,换句话说:查询列要被所建的索引覆盖。最左前缀匹配原则。
2024-03-11 15:24:15 579
转载 聊聊cpu个数、核数、线程数
是只把多个核心直接封装在一起,比如Intel早期的PD双核系列,就是把两个单核直接封装在一起,但两核心只能共同拥有一条前端总线,在两个核心满载时,两个核心会争抢前端总线,导致性能大幅度下降,所以早期的PD被扣上了“高频低能”的帽子,要提高封装多核的性能,在多任务的高压下尽量减少性能损失,只能不断的扩大前端总线的总体大小,来弥补多核心争抢资源带来的性能损失,但这样做只能在一定程度上弥补性能的不足,和原生的比起来还是差了很多,而且后者成本比较高,优点在于多核心的发展要比原生快的多。,是CPU最重要的组成部分。
2024-03-05 14:08:26 85
原创 drop、delete与truncate
truncate, drop是ddl(数据定义语言),操作立即生效,原数据不放到rollback segment中,不能回滚,操作不触发trigger。则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。(5)当表被truncate后,这个表和索引所占用的空间会恢复到初始大小,delete操作不会减少表或索引所占用的空间。执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。delete可以是table和view。
2024-02-27 17:05:04 347
原创 MySQL表分区技术介绍
分区功能并不是在存储引擎层完成的,因此不是只有 InnoDB 存储引擎支持分区,常见的存储引擎 MyISAM、NDB 等都支持。但也并不是所有的存储引擎都支持,如CSV, FEDORATED, MERGE等就不支持。在使用分区功能前,应该对选择的存储引擎对分区的支持有所了解。MySQL数据库在5.1版本时添加了对分区的支持。分区的过程是将一个表或索引分解为多个更小、更可管理的部分。就访问数据库的应用而言,从逻辑上讲,只有一个表或一个索引,但是在物理上这个表或索引可能由数十个物理分区组成。
2024-02-27 14:50:09 1264
原创 InnoDB的逻辑存储结构(表、段、区、页、行)
InnoDB存储引擎是面向列(row-oriented)的,也就是说数据是按行来进行存放的(数据表中的一行),而每个页的存放的行记录也是有硬性定义的,最多允许存放7992数量的行记录(计算公式为16 * 1024 /2 - 200,16是指页的大小为16KB)。其实这是因为,在每个段开始时,会先用32个页大小的碎片页来存放数据,在使用完这些碎片页才会进行区的申请(直接申请4~5个区),这样做的目的在于,对于一些小表,可以在开始时就占用比较少的空间,节省磁盘容量的开销。
2024-02-26 15:04:21 946
原创 InnoDB特性之两次写(Double Write)
在对缓冲池的脏页进行刷新时,并不直接写磁盘,而是会通过memcpy函数将脏页先复制到内存中的doublewrite buffer,之后通过doublewrite buffer再分两次,每次1MB顺序地写入共享表空间的物理磁盘上,然后马上调用fsync函数,同步磁盘,避免缓冲写带来的问题。这样就可以解决上文提到的部分写失效的问题,因为在磁盘共享表空间中已有数据页副本拷贝,如果数据库在页写入数据文件的过程中宕机,在实例恢复时,可以从共享表空间中找到该页副本,将其拷贝覆盖原有的数据页,再应用重做日志即可。
2024-02-22 11:44:53 368
原创 网络编程知识整理
器的T C P端口号都是 2 1,每个Te l n e t服务器的 T C P端口号都是 2 3,每个T F T P (简单文件传送协议)服务器的 U D P端口号都是 6 9。在T C P / I P协议族中,网络层协议包括 I P协议(网际协议),I C M P协议(I n t e r n e t互联网控制报文议),以及IGMP协议(Internet组管理协议)。在 T C P / I P领域中,域名系统( D N S)是一个分布的数据库,由它来提供 I P地址和主机名之间的映射信息。
2024-02-21 10:55:08 910
原创 字符串由数字和字母组合如何自定义排序
这段代码首先定义了一个字符串列表,然后使用Collections.sort()方法对其进行排序。在这个比较器中,我们首先使用正则表达式\\D(匹配任何非数字字符)来提取字符串中的数字部分,并将其转换为整数。然后,我们比较这两个数字。如果数字相同,我们就使用字符串的自然顺序(即字典顺序)来比较字母部分。要实现这个功能,你可以使用Java中的Collections.sort()方法,结合自定义的比较器(Comparator)。这个比较器首先会比较字符串中的数字部分,如果数字相同,则会比较字母部分。
2024-02-20 09:39:45 170
原创 序列化和反序列化
序列化(Serialization):将对象状态或数据结构转换成一种格式(如JSON, XML, 字节流等)以便在网络中传输或保存到文件中。反序列化(Deserialization):它是将序列化过的数据格式(如JSON, XML, 字节流等)转换回原来的对象状态或数据结构。
2024-01-31 16:46:32 1044
原创 Web开发中HTTP请求、响应等相关知识
使用"params"来传递数据可能会导致数据暴露在URL中,而且有些服务器或框架可能不支持从"params"中获取POST请求的数据。因此,通常情况下,建议使用"form data"或"request body"来传递POST请求的数据,而不是使用"params",使用"params" 的方式更适合GET请求。如果您想在POST请求中使用"params",通常意味着您将数据附加到URL的查询字符串中,而不是将其作为请求的主体发送到服务器。- GET请求对传输的数据长度有限制,因为URL的长度是有限制的。
2024-01-23 14:49:50 884
原创 MyBatis处理LIKE查询时,如何将传值中包含下划线_和百分号%等特殊字符处理成普通字符而不是SQL的单字符通配符
在XML配置的MyBatis中处理LIKE查询时,如果前端传递的值中包含了下划线_,并且你想要这个下划线被视为普通字符而不是SQL的单字符通配符,你需要在MyBatis的XML映射文件中对这个字符进行转义。在这个例子中,REPLACE(#{pattern}, '_', '\\_')函数将传入的参数中的所有下划线_替换为转义后的下划线\\_。如果这种字符不经过处理,并且你的模糊查询sql语句书写如下,那么在你的前端页面搜索框中输入下划线或者百分号时候,搜索到的数据就是全量数据,未达到我们的预期。
2024-01-18 12:02:54 878
原创 @PreAuthorize注解
例如,v-hasPermi="['monitor:job:add']"会检查用户是否具有monitor:job:add这个权限,如果有,那么相关的UI元素就会显示。用户此时已经登陆系统,假设用户操作的是角色管理模块的查询按钮,当点击该按钮时,会通过网络映射到后端的接口方法。通过这种方式,RuoYi框架可以实现精细的基于权限的访问控制,确保只有具有相应权限的用户才能访问特定的资源。如果当前用户的权限集合中,包含当前被@PreAuthorize标注的方法的权限,则返回true。等集合信息返回给前端。
2024-01-12 14:44:53 1306
原创 Linux chmod命令详解
Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。: 所有使用者。
2024-01-10 14:29:19 1836
原创 Vue实现版本号输入、删除时光标自动移动到上、下一个输入框前端demo
首先声明,我平时的工作主要是后端JAVA开发,该demo为前端练习,记录一下劳动成果,希望对大家有所帮助,如果有写的不妥的地方,欢迎大家指正,一起学习、共同进步。
2024-01-05 16:26:55 1117
原创 聊聊Java算法的时间复杂度
所以,这些增长数量级并不是一个准确的性能评价,可以理解为一个近似值,时间的增长近似于logN、NlogN的曲线。时间复杂度这个东西,其实更准确点说应该是描述一个算法在问题规模不断增大时对应的时。常见时间复杂度之间的关系。
2023-12-25 16:25:36 154
原创 mysql驱动和druid连接池总结
在Spring Boot应用程序中,你需要在pom.xml文件中添加druid-spring-boot-starter的依赖,然后在yml或properties文件中配置Druid的相关信息(如initialSize、minIdle、maxActive等)。在这个配置中,spring.datasource.url、username、password和driver-class-name是mysql-connector-java的配置,type和druid下的配置是druid的配置。
2023-12-15 16:15:15 260
原创 报错:merge sql error, dbType mysql, sql : select...
使用Mybatis和druid连接池报错merge sql error, dbType mysql, sql : select
2023-12-11 10:06:36 435
原创 解决413 Request Entity Too Large(请求实体太大)
如果我们实际上传的文件大于1m,则浏览器报错请求实体太大。1.找到我们部署的nginx的nginx.conf文件。Nginx默认的request body是1m。2.在http{}中添加一行配置。
2023-11-29 12:05:40 1615
转载 RabbitMQ如何保证消息不丢失
At most once:至多一次。消息在传递时,最多会被送达一次。也就是说,没什么消息可靠性保证,允许丢消息。At least once:至少一次。消息在传递时,至少会被送达一次。也就是说,不允许丢消息,但是允许有少量重复消息出现。Exactly once:恰好一次。消息在传递时,只会被送达一次,不允许丢失也不允许重复,这个是最高的等级 这个服务质量标准不仅适用于MQTT,对所有的消息队列都是适用的。
2023-11-23 14:55:40 102
转载 如何保证RabbitMQ消息不被重复消费(幂等性)
幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。
2023-11-23 14:01:28 203
转载 RabbitMQ基础概念、交换机类型
也就是表明不同的类型将决定绑定的Queue不同,换言之就是说生产者发送了一个消息,Routing Key的规则是A,那么生产者会将Routing Key=A的消息推送到Exchange中,这时候Exchange中会有自己的规则,对应的规则去筛选生产者发来的消息,如果能够对应上Exchange的内部规则就将消息推送到对应的Queue中去。headers类型的Exchange不依赖于routing key与binding key的匹配规则来路由消息,而是根据发送的消息内容中的headers属性进行匹配。
2023-11-23 11:50:00 35
转载 RabbitMQ运转流程
主要是为了生产者和mq之间的一个确认机制,当消息到没到mq,会提供相应的回调,在项目中 RabbitSender 这个类中进行了相应的配置。(1) 消费者连接到 RabbitMQ Broker ,建立一个连接(Connection ,开启一个信道(Channel)(2) 消费者向 RabbitMQ Broker 请求消费相应队列中的消息,可能会设置相应的回调函数, 以及做 些准备工作。(6) 相应的交换器根据接收到的路由键查找相匹配的队列 如果找到 ,则将从生产者发送过来的消息存入相应的队列中。
2023-11-23 10:58:48 49
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人