掘友等级
Java Senior Engineer
|
某垂直行业B2B电商平台 拥有10年以上软件开发和系统架构经验,擅长Java分布式架构。 获得徽章 0
1. 现在写代码还是这么随意吗真的还可以做的更好!
2.建议做技术的同学多学学技术之外的东西,比如结构化表达、写作等。工作多年以后发现,把语文学好、把管理做好真的太重要了。
这个代码中proxy_next_upstream是什么意思?
location / {
proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;
proxy_pass http://jzgr_portal;
proxy_set_header Host tjsjzgr.gov.cn.qa;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}
在Nginx的配置中,proxy_next_upstream 指令用于定义当与代理服务器的连接出现何种问题时,Nginx会尝试与上游服务器的下一个实例建立连接。
在给出的配置中,proxy_next_upstream 后面列出了多个HTTP状态码,这些状态码表示当与 jzgr_portal 的连接返回这些状态码时,Nginx会尝试与上游服务器的下一个实例建立连接。
具体来说,这里的配置表示:
当返回502错误时,尝试与上游服务器的下一个实例建立连接。
当返回504错误时,尝试与上游服务器的下一个实例建立连接。
当返回404错误时,尝试与上游服务器的下一个实例建立连接。
当出现其他任何错误时,尝试与上游服务器的下一个实例建立连接。
当请求超时时,尝试与上游服务器的下一个实例建立连接。
当收到无效的头部时,尝试与上游服务器的下一个实例建立连接。
这样配置的好处是,当一个上游服务器出现问题时,Nginx可以自动地尝试连接到其他健康的上游服务器,从而提高了系统的可用性和可靠性。
工作中用的MacOS,有时候又需要远程到Windows电脑中处理一些事情,因此遇到无法使用Command键的问题。通过ChatGPT发现有解决方案,最终选择了这个mackeyboard1.安装 autuhotkey v2.0
2.GitHub中下载mackeyboard
3. 将内容复制到C:\Apps\misc\ahkscripts
4. Ctrl+R运行命令 shell:startup,在运行打开的目录中放置一个bat文件mackeyboard.bat,内容如下:
@echo off
start "C:\Program Files\AutoHotkey\UX\AutoHotkeyUX.exe" "C:\Apps\misc\ahkscripts\mackeyboard.ahk"
exit
5.重启电脑,就可以使用Command+V/C/A之类的快捷键了。
nginx 中这代码是什么意思?try_files $uri $uri/ /index.html;
在Nginx配置中,try_files 指令用于指定一组文件或目录,Nginx会按照从左到右的顺序检查这些文件或目录是否存在,并返回第一个找到的文件或目录。
具体来说,try_files $uri $uri/ /index.html; 这行代码的意思是:
1. 首先,Nginx会尝试查找与 $uri 变量对应的文件。例如,如果请求的URL是 /somepath/somefile.txt,Nginx会尝试查找该路径下的 somefile.txt 文件。
2. 如果该文件不存在,Nginx会尝试查找与 $uri 变量对应的目录。例如,如果请求的URL是 /somepath/somefile.txt,并且没有找到 somefile.txt 文件,Nginx会尝试查找该路径下的 somepath/somefile.txt/ 目录。
3. 如果目录也不存在,Nginx会尝试查找默认的 /index.html 文件。这意味着,无论请求的是什么URL,如果没有找到匹配的文件或目录,Nginx都会返回 /index.html 文件的内容。
这种配置通常用于前端单页应用(SPA)的部署,其中前端路由由JavaScript处理,而Nginx只提供静态文件服务。通过将所有请求都重定向到 /index.html,SPA能够正常工作。
#每天一个知识点# 今天上午学会了nginx location return 301的写法
location ~ ^/info/.*$ {
return 301 xxx.yyyqa.cn$uri;
}
注意$uri的示例值为/info/xxx, 它以/开头
最近几天把项目部署从supervisord切换到docker环境了,感觉真不错。
Dockerfile
# 构建 Nginx 镜像,版本根据项目需要更换
FROM nginx:1.21.3-alpine
# 复制编译后的前端代码到 Nginx 静态资源目录
COPY ./templates /templates
COPY ./static/assets /static/assets
COPY wkhtmltoimage /
COPY wkhtmltopdf /
COPY move_templates.sh /
COPY move_wkhtmltopdf.sh /
# 复制自定义的 Nginx 配置文件
COPY nginx.conf /etc/nginx/nginx.conf
RUN mkdir -p /tmp/nginx/XXX_cache
RUN mkdir -p /data/XXX/templates
# 暴露端口
EXPOSE 80
# 启动 Nginx
CMD ["nginx", "-g", "daemon off;"]
命令:
# 构建镜像
docker build -t mynginx .
# 启动镜像实例
docker run -d -p 80:80 -v /Users/james/data/XXX:/data/XXX --name mynginx-demo mynginx
#如何写好代码#
禁止在Service类中写@Value注入参数,必须统一写在BussinessConfig类中。这样的好处是便于分析、评估设计、编码是否合理,便于评估配置参数,便于分析外部依赖等等。
帮忙点个赞呗
掘金2023年度人气创作者打榜中,快来帮我打榜吧~ activity.juejin.cn
掘友们,写作很难,坚持写作更难。即使copy人家的文章也不容易。哈哈,给投个票,鼓励一下呗。
掘金2023年度人气创作者打榜中,快来帮我打榜吧~ activity.juejin.cn
#如何写好代码#
Java编程:消除“过多”的if分支
1. 将if分支代码重构成多个方法
2. 利用面向对象的多态性, 也避免了每次新增逻辑加一个elseif 的行为,因为这不符合“开闭原则”。通过增加新类就符合开闭原则,因为它不会有副作用,不会影响原来已有的代码:封装一个抽象类,其中包含抽象方法,然后让不同的子类集成抽象类,并实现自己的方法,实现多态。
3. 将条件判断内联为&& 和 ||
4. 提前return, 就是所谓的优先使用卫语句: 结合防御性编程的思想来理解,把异常、不怎么样等场景先返回。
5. 使用枚举
6. 表驱动法
Map<String, Function<?> action> actionMap = new HashMap<>();
action.put("code1",() -> {doAction1()});
7. 策略模式 + 工厂方法模式:它和上面的表驱动法有点儿类似。它需要创建不同的策略类,然后通过工厂方法来把代码“耦合”在一起。
8. 责任链模式
9. 使用Function
10. Optional判空 :return Optional.ofNullable(order).map(o -> o.getOrderStatus()).orElse("-1");
下午看自己去年写的代码,发现了以下问题:
1. 生成word和pdf这两种文件的代码没有拆分。比如好的方式应该是拆分到三个类种(一个父类,两个子类),让代码逻辑更清楚。让上帝的归上帝,让凯撒的归凯撒。
2. 生成word的逻辑,本质上可以复用生成pdf的前半部分逻辑,即都先生成html。然后再分别用docx4j和wkhtmltopdf/wkhtmltoimage生成相应格式的文档。只有彻底看清事物的本质,才能更好地实现代码复用。
来看一段很有用的代码,哈哈。先用word template生成参数化的word文档,然后再用docx4j将富文本编辑器中的html添加进去。
原来我用AltChunkType.Html, 后来用户反馈不能显示图片。
经过思考后,果断用Xhtml, 神奇地发现可以显示图片了。
还需要多多思考和学习。不断拓展自己的拉伸区
下一页