草庐IT

SpringBoot用slf4j日志 及其 项目配置、MVC支持

一、Slf4j日志的使用 我一直以来用的都是最传统的System.out.println()来打印一些错误信息时,其实我也面临过一些问题。这样做的话,错误信息和别的输出结果混在一起,我一直都很难从结果里面找到我调试出来的问题。而且我用这种传统的没有明确的标识和格式,也总是花太多时间。控制台打印日志的话,就比如像下面这样:而且我也知道,实际开发肯定会有很多的输出信息,所以接下来最近的学习我就专门从一些优秀博客中了解到了slf4j日志,发现别人这样用效率真的很高,我也得知,SpringBoot提供了一套日志系统,最好的就是那个,logback。1.1 外观模式 作为一种设计模式,当然是我应该了解的

SSTI模板注入-中括号、args、下划线、单双引号、os、request、花括号、数字被过滤绕过(ctfshow web入门370)

SSTI模板注入-中括号、args、下划线、单双引号、os、request、花括号、数字被过滤绕过(ctfshowweb入门370)写在前头由于request被过滤,我们就不能再使用传参的方式进行传递命令以及被过滤的关键字,下划线中括号花括号都被过滤,这样的话我们就只能使用{%%}来进行设置变量以及拼接方法的方式来进行利用SSTI漏洞。但是ctfshowweb入门370关相对于ctfshowweb入门369关多过滤数字,就是我们不能使用数字作为索引值来获取我们想要的字符了。这时就是需要我们自己来创造数字了。我们本篇还是先研究如何拿到本关的flag值,然后讲解绕过的原理。实例引入判断是否存在SS

SSTI模板注入-中括号、args、下划线、单双引号、os、request、花括号被过滤绕过(ctfshow web入门369)

SSTI模板注入-中括号、args、下划线、单双引号、os、request、花括号被过滤绕过(ctfshowweb入门369)写在前面由于request被过滤,我们就不能再使用传参的方式进行传递命令以及被过滤的关键字,下划线中括号花括号都被过滤,这样的话我们就只能使用{%%}来进行设置变量以及拼接方法的方式来进行利用SSTI漏洞。实例引入本章内容,咱们就先研究怎么做出ctfshowweb入门369这道题目,然后再讲解绕过的原理。判断是否存在SSTI模板注入漏洞由于双花括号被过滤,我们只能使用{%%}来判断,我们传入参数?name={%print123%},来观察页面是否回显123,如果回显12

docker-compose一键启动neo4j

下载镜像dockerpullneo4j:3.5.22-community编写配置文件参考文档编写docker-compose.yml文件version:"3"services:neo4j:image:neo4j:3.5.22-communitycontainer_name:neo4jrestart:alwaysports:-7474:7474-7687:7687environment:-NEO4J_AUTH:neo4j/neofj-TZ:Asia/Shanghaivolumes:-/etc/localtime:/etc/localtime:ro-/root/neo4j/data:/data-/

SpringBoot——Slf4j

背景介绍在开发中,我们经常使用System.out.println()来打印一些信息,但是这样不好,因为大量的使用System.out会增加资源的消耗。我们实际项目中使用的是slf4j的logback来输出日志,效率挺高的,SpringBoot提供了一套日志系统,logback是最优的选择。引用百度百科里的一段话:SLF4J,即简单日志门面(SimpleLoggingFacadeforJava),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。这段的大概意思是:你只需要按统一

Neo4j之REMOVE基础

在Neo4j中,REMOVE语句用于从节点中删除特定的属性。这在你需要更新或者清除节点属性时非常有用。1】删除单个属性:MATCH(p:Person{name:'Alice'})REMOVEp.age;这个查询会找到具有"Person"标签且属性"name"为"Alice"的节点,并从这些节点中删除"age"属性。2】删除多个属性:MATCH(p:Person{name:'Bob'})REMOVEp.age,p.email;这个查询会找到具有"Person"标签且属性"name"为"Bob"的节点,并从这些节点中同时删除"age"和"email"属性。3】条件删除属性:MATCH(p:Pers

Python中的*args和**kwargs:无限可能的函数参数详解

 概要 在Python编程中,*args和**kwargs是常用的两个特殊参数,用于处理不确定数量的函数参数。它们提供了一种灵活的方式来传递和接收参数,使函数的定义更加通用。本文将详细介绍*args和**kwargs的使用方法,并提供相关代码示例。 一、*args参数args是一个特殊的参数,在函数定义时以星号()开头,用于传递不确定数量的位置参数。在函数体内,*args将接收传递给函数的位置参数,将它们作为一个元组(tuple)来处理。以下是使用*args参数的示例代码:def sum_numbers(*args):    total = 0    for num in args:     

知识图谱02——使用python将信息录入neo4j

将文档传入chatgpt,生成对应的cypher语句链接:https://pan.baidu.com/s/1Ny-ttbBSpqYEigwYiCWMeA?pwd=c7sc提取码:c7sc使用命令行安装对应的包pipinstallneo4jchatgpt生成出的txt文档中的内容如下:MERGE(Node1:Entity{name:'原始舱单提运单信息'})MERGE(Node2:Entity{name:'到达卸货地日期和时间'})MERGE(Node1)-[:到达卸货地日期]->(Node2)MERGE(Node1:Entity{name:'原始舱单提运单信息'})MERGE(Node2:En

lua - 获取错误 : Wrong number of args calling Redis command From Lua script

我想用Redis测试Lua脚本,但我不断收到最简单命令的错误消息。截图如下:为什么这个简单的命令说我没有提供足够的参数? 最佳答案 我没有看到在v3.2的预发布版上运行此代码有任何错误:redis.call("ZADD","user",1,"one")returnredis.call("ZRANGE","user",0,-1)我将one打印到输出窗口。如果我跳过ZADD或ZRANGE调用中的一个参数,我确实会遇到同样的错误,例如在尝试运行redis.call("ZADD","user",1)时。

mysql - neo4j 在哪里保存它的数据?

我看了一些地方说用Redis做缓存服务器比较好,因为Redis把数据保存在内存中,所以如果你要保存很多数据,Redis不是一个好的选择。Redis非常适合保存临时数据。现在我的问题是:1.其余的数据库(尤其是neo4j和sqlserver)在哪里保存数据?他们不是将数据保存在内存中吗?如果没有,那么他们保存在哪里?如果是,我们为什么要使用它们来保存大量数据?2.“最好是在neo4j中保存索引/关系,在mysql中保存数据,然后从neo4j中检索索引,然后从mysql中获取与索引相关的数据”(我在哪里读过),是这样的吗因为neo4j和Redis有同样的问题?