实用教程
未读Docker学习记录Docker常用的命令
显示Docker版本信息:
1docker version
显示Docker系统信息:
1docker info
拉取Docker镜像:
1docker pull <image_name>:<tag>
列出本地已安装的镜像:
1docker images
运行一个容器:
1docker run <image_name>
列出正在运行的容器:
1docker ps
列出所有容器(包括已停止的):
1docker ps -a
停止一个容器:
1docker stop <container_id>
启动一个已停止的容器:
1docker start <container_id>
重启一个容器:
1docker restart <container_id>
删除一个容器:
1docker rm <container_id>
进入容器的交互式终端:
1docker exec -it <container_id> /bin/bash
构建一个镜像:
1dock ...
工作记录
未读Nginx配置12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455# 全局配置user nginx;worker_processes auto;error_log /var/log/nginx/error.log;pid /var/run/nginx.pid;# 事件模块配置events { worker_connections 1024;}# HTTP模块配置http { # MIME类型配置 include /etc/nginx/mime.types; default_type application/octet-stream; # 日志格式配置 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' ...
工作记录
未读SVN命令
检出代码库(Checkout):
1svn checkout <repository_url>
更新代码库(Update):
1svn update
添加文件或目录(Add):
1svn add <file_or_directory>
提交修改(Commit):
1svn commit -m "Commit message"
查看文件或目录状态(Status):
1svn status
查看文件或目录差异(Diff):
1svn diff <file_or_directory>
恢复文件或目录到上一个版本(Revert):
1svn revert <file_or_directory>
删除文件或目录(Delete):
1svn delete <file_or_directory>
移动或重命名文件或目录(Move/Rename):
1svn move <source> <destination>
查看日志(Log):
1svn log
创建分支(Branch) ...
工作记录
未读Git常用命令Git 全局设置12git config --global user.name "账户名"git config --global user.email "邮箱"
克隆仓库123456git clone https://gitee.com/czcsw/git-learning.gitcd git-learningtouch README.mdgit add README.mdgit commit -m "add README"git push -u origin master
已有文件夹或仓库123456cd existing_foldergit initgit remote add origin https://gitee.com/czcsw/git-learning.gitgit add .git commitgit push -u origin master
Git创建本地仓库12345678# 初始化仓库git init# 查看仓库状态git status# 追踪 test.txt 文件git add ...
工作记录
未读Mysql命令显示数据表字段1desc t_message
Field
Type
Null
Key
Default
Extra
id
bigint unsigned
NO
PRI
NULL
create_by
varchar(255)
YES
NULL
create_time
datetime
YES
MUL
NULL
del_flag
tinyint(1)
YES
NULL
update_by
varchar(255)
YES
NULL
update_time
datetime
YES
NULL
create_send
bit(1)
YES
NULL
title
varchar(255)
YES
NULL
type
varchar(255)
YES
NULL
content
longtext
YES
NULL
info_id
bigint
YES
NULL
~
显示数据表完整信息(常用语数据库字典编写,复制粘贴)1show full columns from t_message;
...
服务器常用命令日志相关
查询指定文件
1cat -n xiaoke_application.log
查询指定文件包含某个关键词
1cat -n xiaoke_application.log |grep "1304537010200576"
查询指定行开始后的日志
1cat -n logs/caq_application.log |tail -n +4542|head -n 20
查询指定关键词最后的10行
1cat -n logs/wx-push.log |grep "完成,推送给{李福财}"|tail -n 60
查询指定关键词的前10行
1cat -n logs/wx-push.log |grep "完成,推送给{李福财}"|head -n 60
查询日志是排除某个词
1cat -n logs/wx-push.log |grep '开启消息推送任务,开始时间'|grep -v '商务室'|tail -n 20
...
存储空间清理服务器容量告警,查看当前服务器磁盘试用情况df -h
Journal维护
查看系统日志占用情况journalctl --disk-usage
指定日志文件保存多久journalctl --vacuum-time=1years
如只保留最近两天的日志journalctl --vacuum-time=2d
指定日志文件最大空间journalctl --vacuum-size=1G
追踪日志,实时查看日志journalctl -f
查看指定时间的日志,例如获取昨天的日志如下journalctl –since yesterday
获取某一个时间段到当前时间的前一个小时的日志journalctl --since 09:00 --until "1 hour ago"
获取当前时间的前20分钟的日志journalctl --since "20 min ago"
获取某一天到某一个时间段的日志信息journalctl --since "2023-08-15" --until "2023-08-23 09:00" ...
工作记录
未读修改一个已经编译好的第三方jar包的class文件,需要先反编译jar包,将其转化成可编辑的Java源码文件。可以使用一些反编译工具如jad、jd-gui、procyon等来实现反编译。这里以jd-gui为例,具体步骤如下:
下载并安装JD-GUI 1.6.6软件;
打开jd-gui软件,选择“File”→“Open”,在弹出的窗口中找到需要修改的jar包,然后点击“OK”;
在jd-gui中找到需要修改的类文件,右键点击该文件,选择“Save All Source”,将该jar包输出到本地目录。
使用IDEA或者其他开发工具打开项目目录,配置class文件输出目录
根据编译器提示,导入需要的包,保证项目编译通过
修改对应的Java源码文件,生成class文件;
将修改后的class文件替换原来的class文件,放到项目中测试。
一 背景公司很多服务都用到消息队列,不过之前只有正式的mq,和测试分不开,之前的crm补丁用的Play,服务在接收测试消息时影响到正式服务,还有一方面,因为网站端把注册,登录,推广,提醒消息都往一个mq里面发,这样会导致消息积累,注册数据进入CRM有延时,所以之前自建了一个mq,将消息进行转发,防止消息积累,也可以方便自己测试,和查看mq运行情况
二 安装环境
公网服务器一台
安装JDK环境
安装MAVEN环境
三 RocketMQ下载
从Apcehe下载
从GitHup上下载
下载rocketmq管理可视化页面
下载完成,解压文件
![]
四 配置文件修改
进入rocket4.7.1/conf,修改broker.conf配置文件
注意:默认服务端口是9876,在防火墙我们不仅需要放开9876端口,同时还要放开10911, 10912, 10909这三个端口才行,不然连接服务会报错。
10911是remotingServer使用的监听端口,remotingServer主要处理以下三类消息
producer发送的消息
conumser在消费失败或者消费超时发送的 ...
我playframework请求堵塞
ChatGPTPlay框架是一种异步的Web框架,它使用非阻塞I/O模型来处理请求。这意味着每个请求都不会阻塞线程,而是在异步的执行上下文中处理。
然而,如果您的应用程序中存在某些阻塞操作(如数据库查询或网络请求),它们可能会导致请求堵塞。这样做会使应用程序的性能变差,因为它会占用服务器上的线程,从而减少可用的线程池大小。
为了避免这种情况,您可以使用Play框架提供的异步API。这些API允许您将阻塞操作委托给另一个执行上下文,从而使请求不会被阻塞。
例如,如果您需要执行一个数据库查询,您可以使用Play的异步API来执行该查询并在完成后返回结果。这样,您的线程将在查询执行期间保持空闲状态,从而允许其他请求使用该线程。
总之,为了避免Play框架请求堵塞,您应该尽可能使用异步API,并避免在请求处理期间执行阻塞操作。
我异步api示例
ChatGPT以下是一个使用Play框架异步API的示例
我异步api示例
ChatGPT以下是一个使用Play框架异步API的示例:
1234567891011121314151617public cl ...