All posts by 龙生
idea的这款代码提示插件爱了
前言 Idea 是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展,可以根据开发人员的需要进行定制和扩展,从而提高开发效率,今天我们就来介绍一款国产的代码编辑增强工具-Alibaba Cloud AI Coding Assistant。 什么是Alibaba Cloud AI Coding Assistant? Alibaba Cloud AI Coding Assistant 是一款在IntelliJ IDEA编辑器中的插件,这款插件是Alibaba的团队开发的,其官方介绍是:是一款AI编程手提供代码智能补全和代码示例搜索能力,帮你更快更高效地写出高质量代码。 为什么要使用它? 使用 Alibaba Cloud AI Coding Assistant 其主要有以下几个功能: 代码智能补全 通过学习海量优质的开源代码,代码智能补全让你编码如行云流水般自然高效,事半功倍地完成编码工作。 正如官网介绍的一样,它不仅可以联想到对应的类,更能给出更多的代码提示,比如这里。 海量代码示例搜索 提供代码示例搜索功能,当你需要实现不熟悉的功能时,无需跳出到浏览器中,在IDE内仅需通过简单的语言描述,即可参考海量高质量的开源代码示例,为你打造沉浸式编码体验。 我们可以点击右边的的插件图标按钮,在搜索框里面点击搜索。在code snippest选项卡中即可给你搜索到开源的相关代码示例或者相关的问题解答。 优质技术文档搜索 集成多种高质量中英文技术文档数据源,当遇到错误日志或技术难点时,在IDE内便可以轻松查阅技术文档,官方辅助伴你同行。 同样,点击右侧的 document 就能看到各个网站对这个问题的相关回答。可以说是非常方便了,不需要在浏览器和idea之间互相切换了。 其他特性 通过深度学习模型和语法分析相结合,提供更精准的代码推荐能力,让你的开发过程专注又轻松。 仅需轻量的系统资源消耗,即可享受强大的AI引擎带来的智能编码体验。 用户的隐私高于一切,代码智能补全基于离线模式,不会分享或向其它设备上传你的代码及个人信息。 如何安装…插件 windows用户打开IntelliJ IDEA编辑器,在菜单栏中选择“File” -> “Settings”;mac用户点击 “IntelliJ IDEA” -> “Settings” 。 在“Settings”窗口中,选择“Plugins”选项卡,然后点击“Marketplace”按钮。 在搜索框中输入“alibaba”,然后点击“Search”按钮,第三个既是我们需要的那个。 找到 Alibaba Cloud AI Coding Assistant ****插件后,点击“Install”按钮进行安装。 心得体会 目前关于GPT的代码提示插件,几乎都需要帐号登陆或者无法访问。可以说这款插件就显的很香了,无需注册即可使用。完全本地化,没有代码泄漏的风险。而且以后不排除这款插件会集成自己的AI大模型-「通义千问 」。 还在等什么,赶紧下载使用起来吧。 最后 本文主要介绍了Alibaba Cloud AI Coding Assistant 插件,希望对大家有所帮助,以上内容就到这里,感谢各位看官老爷们的观看,如果觉得写得好,给个赞支持一下哈!!! 作者:Aqoo 链接:https://juejin.cn/post/7226301946839023675 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
View DetailsDocker 部署 zookeeper
1.单节点安装 官方镜像:https://registry.hub.docker.com/_/zookeeper/tags
1 2 3 4 5 6 7 8 9 10 |
docker pull zookeeper:3.6.4 # 创建卷 docker volume create zookeeper ; docker volume ls docker run -d \ -e TZ="Asia/Shanghai" \ -p 2181:2181 \ -v zookeeper:/data \ --name zookeeper \ --restart always zookeeper:3.6.4 docker run -it --rm --link zookeeper:zookeeper zookeeper:3.6.4 zkCli.sh -server zookeeper |
2.集群安装 2.1.docker-compose命令安装 Github:https://github.com/docker/compose/tree/v2.17.3
1 2 3 |
curl -L "https://github.com/docker/compose/releases/download/v2.17.3/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose --version |
2.2.配置docker-compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
cat > docker-compose.yml <<EOF version: '2' services: zoo1: image: zookeeper:3.6.4 restart: always container_name: zoo1 ports: - "2181:2181" environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 zoo2: image: zookeeper:3.6.4 restart: always container_name: zoo2 ports: - "2182:2181" environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 zoo3: image: zookeeper:3.6.4 restart: always container_name: zoo3 ports: - "2183:2181" environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 networks: default: driver: bridge EOF |
ZOO_MY_ID:zk服务的ID,取值为1-255之间的整数。 ZOO_SERVERS:表示zk集群的主机列表 注:这里3.5之后,ZOO_SERVERS后面要加上;2181,客户端端口。 启动:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
docker-compose up -d # 查看集群状态 docker-compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS zoo1 zookeeper:3.6.4 "/docker-entrypoint.…" zoo1 6 minutes ago Up 6 minutes 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 8080/tcp zoo2 zookeeper:3.6.4 "/docker-entrypoint.…" zoo2 6 minutes ago Up 6 minutes 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2182->2181/tcp, :::2182->2181/tcp zoo3 zookeeper:3.6.4 "/docker-entrypoint.…" zoo3 6 minutes ago Up 6 minutes 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2183->2181/tcp, :::2183->2181/tcp docker exec -it zoo1 /bin/bash # 查看选举 zkServer.sh status ps -ef | grep zookeeper netstat -lntup | grep 2181 zkCli.sh -server zoo1:2181 zkCli.sh -server zoo2:2181 zkCli.sh -server zoo3:2181 |
其他:
1 2 3 4 5 6 |
# 停止docker-compose服务 docker-compose stop # 启动docker-compose服务 docker-compose start # 重启docker-compose服务 docker-compose restart |
3.可视化工具 https://github.com/vran-dev/PrettyZoo/blob/master/README_CN.md 点击connect。 from:https://www.cnblogs.com/-k8s/p/17399169.html
View DetailsWebpack源代码泄露漏洞研究
Webpack 会为打包后的代码生成 Source Map 文件,以便在运行时可以调试源代码。然而,如果开发人员在生产环境中没有正确地配置 SourceMap,攻击者就可能获得敏感信息,例如源代码和服务器配置等。
攻击者可以通过发送 HTTP 请求来获取 Source Map 文件,并从中获取敏感信息。
View Detailslogback配置文件
logback-spring.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <springProperty scope="context" name="LOG_HOME" source="logback.path"/> <!-- 控制台输出 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}[%t:%r]-[%p] %logger{50}:%L %X{requestId} - %msg%n</pattern> </encoder> </appender> <!-- 按照每天生成日志文件 --> <appender name="LOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${LOG_HOME}/file.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <FileNamePattern>${LOG_HOME}/file-%d{yyyy-MM-dd}-%i.log</FileNamePattern> <!--日志文件保留天数--> <MaxHistory>280</MaxHistory> <!-- 超过500MB自动归档 --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>500MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}[%t:%r]-[%p] %logger{50}:%L %X{requestId} - %msg%n</pattern> </encoder> </appender> <logger name="com.ucmed.unified.mapper" level="INFO"></logger> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="LOGFILE"/> </root> </configuration> |
View Details
Logback使用conversionRule自定义字符的坑
Logback使用conversionRule自定义字符的坑 背景 想在logback输出的文件目录中加入ip,使用 <conversionRule conversionWord="ip" converterClass="com.test.config.LogIpConfig" />结果一直报错: There is no conversion class registered for conversion word [ip] [ip] is not a valid conversion word 原因 当需要在日志记录中添加自定义文本时,仅支持在<pattern>中添加ip或其他自定义的字段,不支持在目录或文件名<fileNamePattern>中使用。 可能是格式或类书写错误。如class路径错误,logger的name指向不存在的包名。 当使用失败时,建议使用删除大法,将各种配置都删除,只留下一个纯净的结构,如 http://logback.qos.ch/manual/layouts.html
1 2 3 4 5 6 7 8 |
public class MySampleConverter extends ClassicConverter { long start = System.nanoTime(); @Override public String convert(ILoggingEvent event) { long nowInNanos = System.nanoTime(); return Long.toString(nowInNanos-start); } } |
1 2 3 4 5 6 7 8 9 10 11 12 |
<configuration> <conversionRule conversionWord="nanos" converterClass="chapters.layouts.MySampleConverter" /> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%-6nanos [%thread] - %msg%n</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="STDOUT" /> </root> </configuration> |
其他方法 如果想在文件目录或文件名中添加自定义字段,可以引入springboot中的参数<springProperty scope="context" name="LOG_HOME" source="logPath"/>,此处不展开。 如果需要使用springboot配置中不存在的参数,可以在logback-spring.xml中加入<define> 如
1 2 3 4 5 6 7 |
<define name="initIp" class="com.test.util.InitIpUtil"/> <springProperty scope="context" name="port" source="server.port" /> ... <fileNamePattern> /data/logs/java-${initIp}-${port} </fileNamePattern> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@Component public class InitIpUtil extends PropertyDefinerBase { @Override public String getPropertyValue() { return initIpAndPort(); } public static String initIpAndPort() { String subIp = null; try{ InetAddress addr = InetAddress.getLocalHost(); String ip = addr.getHostAddress(); subIp = ip.substring(ip.lastIndexOf(".",ip.lastIndexOf(".")-1)+1); }catch (Exception e){ e.printStackTrace(); } return subIp; } } |
即可在目录或文件名中添加自己想要的参数。 from:https://blog.csdn.net/NNNathan/article/details/114667320
View DetailsRabbitMQ消费消息坑:failed to convert serialized Message content
@Bean
public MessageConverter messageConverter() {
return new Jackson2JsonMessageConverter();
}
Java开发中排除依赖项
Maven
1 2 3 4 5 6 7 8 9 10 |
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> </exclusion> </exclusions> </dependency> |
Gradle
1 2 3 |
implementation('org.springframework.boot:spring-boot-starter-web') { exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' } |
View Details
SpringBoot项目集成Swagger和swagger-bootstrap-ui以及常用注解使用方法
一、前言
二、SpringBoot项目集成swagger
1. 引入依赖
2. 编写配置文件
3. 启动访问页面
三、SpringBoot项目集成swagger-bootstrap-ui
1.引入依赖
2.配置资源处理规则
3.启动访问页面
四、Swagger常用注解介绍
1.Swagger2Config中相关swagger注解
2.controller中相关swagger注解
3.Model中相关swagger注解
Swagger文档在SpringBoot框架下的配置,Swagger配置登录验证
## 开启 Swagger的 Basic认证功能,默认是false
swagger:
# 是否关闭 swagger接口文档访问
# production: true
basic:
# 开启简单用户验证
enable: true
# 用户名(自由发挥)
username: xx
# 用户密码(自由发挥)
password: xx