首页
留言
友链
架子鼓
更多
壁纸
直播
时光机
关于
Search
1
谷豆电视直播代理源码,谷豆代理原理解析
45,168 阅读
2
华为鸿蒙系统无法安装 xapk APP 闪退 ( youtube vanced ) 的解决办法
27,006 阅读
3
[转载]青龙面板+Ninja从零安装教程
19,150 阅读
4
docker 之 typecho 镜像-不推荐
13,112 阅读
5
typecho插件 - 在线下载主题到服务器 - addTheme 发布
8,894 阅读
技术
php
linux
mysql
redis
typecho
nginx
go
python
dnmp
工具
日记
理财日记
生活日记
生活
kindle 资源
公告
虚拟机
登录
Search
标签搜索
msyql
主从
华为
鸿蒙
xapk
闪退
APP 闪退
kindle
mobi
docker
pip
alpine
梦浪的小虾米
累计撰写
143
篇文章
累计收到
588
条评论
首页
栏目
技术
php
linux
mysql
redis
typecho
nginx
go
python
dnmp
工具
日记
理财日记
生活日记
生活
kindle 资源
公告
虚拟机
页面
留言
友链
架子鼓
壁纸
直播
时光机
关于
搜索到
78
篇与
的结果
2022-10-15
帮客户解决一个¥3000w的问题
前言写这个并不是为了炫耀什么,也不是为了说明什么,而是为日后面试做素材积累。背景我身处外包公司,目前手头上有三个项目并行上线。一个项目是某公司前景项目A,一个是深圳某真金巨头B(一心搞钱,技术外包)。今天A项目要从0开始上线了,但是还有部分释放功能没有写, 所以任务落在了我的头上。B项目因为各种历史原因,导致释放数据达到20G因为A项目想要赶紧出来,然后抢占市场,公司方面也特别重视这个项目(公司也希望转型这方面),B项目因为各种原因,公司不重视了,甚至没有心思去解决它的问题。而我则是恰逢其会下,在两个项目内承担了一定的角色- A和B的绝对主力开发、绝对上线员、服务器管理员。经过A 今天要上线,B 的释放有问题,导致 B 站管理暂时关闭了释放,因为每天的释放可能导致上千万的损失,所以 B 也是迫切要求我赶紧解决问题。因为时间有限,我只能让同事写 B 的释放返还逻辑(B 方要求这样改),然后我则写 A 的释放(这是老板交给我的主要工作),我在 A 上写完第一版后,A 又加了几个释放规则,并要求明天上线,在这种情况下,我趁着测试和产品下班的情况下,本着一颗责任心把同事写的 B 的返还逻辑给过了一遍,然后又指点一遍,发现还是不行,于是自己基于他的版本复制并改了一遍,终于跑通了。终于把 B 给解决了。事后老板说了B 项目虽然很急,但是 A 项目更急,但如果解决不了 B 的问题,B 的市场直接就炸了。因为释放的都是钱,不释放就意味着 B 的用户以为 B 跑路了。这件事如果没有解决,我的良心难安,虽然老板说不是我的问题,但是我还是想进进自己的力。B 方老板在我回家的时候给我讲,这个问题导致 B 方将会损失了 3000W , B 没有办法,强行返还释放。end明天还要上线 A ,实在没有精力看逻辑和文字是否存在错误了。因为如果不上 A 的话,A 可能也要黄了,公司就尴尬了,所以,抱歉,对不起读者。
2022年10月15日
1,358 阅读
2 评论
0 点赞
2022-09-15
https 双向证书认证踩坑 (nginx)
背景公司的后台被别有用心的人攻击了,导致公司损失了几个小目标。恰巧与世隔绝的技术总监回来了,他提出把后台设置成证书访问(https 双向访问认证),即:用户访问后台地址的时候,本地需要安装特定的公钥证书,然后才能访问后台,不然 nginx 就直接返回 400 ,然后让我来试试看怎么弄。踩了一下午的坑,总算是走通了流程。看看原理不复制了,你们自己去看:https://blog.csdn.net/easylife206/article/details/107776854小白流程创建根证书openssl genrsa -out root.key 2048创建根证书请求文件:openssl req -new -out root.csr -key root.key创建根证书openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650在创建证书请求文件的时候需要注意三点,下面生成服务器请求文件和客户端请求文件均要注意这三点:Common Name 填写证书对应的服务域名;所有字段的填写,根证书、服务器端证书、客户端证书需保持一致最后的密码可以直接回车跳过。创建服务器端证书私钥openssl genrsa -out server.key 1024创建服务器端证书请求文件openssl req -new -out server.csr -key server.key创建服务器端公钥文件openssl x509 -req -in server.csr -out server.crt -signkey server.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650创建客户端证书私钥openssl genrsa -out client.key 1024创建客户端证书请求文件openssl req -new -out client.csr -key client.key创建客户端证书公钥openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650创建win可用的p12格式证书 openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12 (-clcerts 可以去掉)修改nginx配置(示例)server { listen 443 ssl; server_name www.yourdomain.com; ssl on; ssl_certificate /data/sslKey/server.crt; #server公钥证书 ssl_certificate_key /data/sslKey/server.key; #server私钥 ssl_client_certificate /data/sslKey/root.crt; #客户端公钥证书 ssl_verify_client on; #开启客户端证书验证 location / { root html; index index.html index.htm; } }测试配置是否正常curl --cacert root.crt --cert ./client.crt --key ./client.key https://test.cc --resolve test.cc:443:127.0.0.1 把生成的证书导入本地浏览器root.crt 导入受信任的根证书颁发机构 client.p12 直接点击该文件进行自动导入,一切默认选项。 Tips所有字段的填写,根证书、服务器端证书、客户端证书需保持一致最后的密码可以直接回车跳过。本博主建议:配置完 nginx 后,重启了 nginx 就开始使用 curl 进行请求,确认自己的配置是否 ok。然后在进行浏览器的调整。我一开始都摸不着头脑,不知道怎么弄。本博主建议使用 ie 浏览器调整浏览器访问的效果,不然谷歌和火狐坑的你不知道东南西北。ie 是改完就能看到效果,而 chrome 是需要重启电脑才会看到效果。根证书的Common Name填写root就可以,所有客户端和服务器端的证书这个字段需要填写域名,一定要注意的是,根证书的这个字段和客户端证书、服务器端证书不能一样(本博主在总结一下:ca证书是指颁发机构的名字,所以尽量写一个自己知道的名字,而服务器要和客户端的名字一样);Nginx 的 ssl_client_certificate 需要配置根证书 root.crt,而不是客户端证书;有一点需要注意的就是,如果客户端证书不是由根证书直接颁发的,配置中还需要加一个配置:ssl_verify_depth 1;一些快捷键windows: mmc 证书管理 certmgr.msc 证书管理参考https://www.cnblogs.com/xiao987334176/p/11041241.htmlhttps://blog.51cto.com/tchuairen/1782945https://blog.csdn.net/easylife206/article/details/107776854https://blog.51cto.com/u_15148274/5502780https://www.jianshu.com/p/2b2d1f511959https://www.jianshu.com/p/003c6fb3dc2dhttps://www.cnblogs.com/smilexumu/p/9039251.htmlhttps://blog.csdn.net/a82514921/article/details/104587416https://blog.csdn.net/a82514921/article/details/104587416https://blog.csdn.net/weixin_39611308/article/details/110794666https://www.xitongcheng.com/jiaocheng/win10_article_67483.htmlhttps://github.com/avwo/whistle/issues/22https://blog.csdn.net/Drug_/article/details/100893157https://www.hi-linux.com/posts/38492.html#vip-container
2022年09月15日
1,117 阅读
1 评论
1 点赞
2022-09-12
[解决]linux 服务器的硬盘满了,但是真实空间并没有满
这两天公司的测试服务器崩了,崩的原因很简单:磁盘满了,没有空间了。但是深究后发现原因并非如此。实际上是:删除文件的进程未释放文件使用 df -lh 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 7.7G 0 7.7G 0% /dev tmpfs 7.7G 0 7.7G 0% /dev/shm tmpfs 7.7G 711M 7.0G 10% /run tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup /dev/mapper/cl-root 70G 70G 0G 100% / /dev/sdb1 916G 31G 839G 4% /data /dev/mapper/cl-home 851G 243G 608G 29% /home /dev/sda3 1014M 242M 773M 24% /boot /dev/sda1 146M 20M 127M 14% /boot/efi tmpfs 1.6G 1.2M 1.6G 1% /run/user/42 tmpfs 1.6G 4.0K 1.6G 1% /run/user/1009 tmpfs 1.6G 0 1.6G 0% /run/user/0 当时的命令查询后发现/dev/mapper/cl-root 70G 70G 0G 100% / 这个系统盘已经被用满了,但是通过 du -lh --max-depth=1 / 后发现,统计的文件占用只有9G,实际上有61个G不见了后来通过百度得知:系统自动删除文件的进程并没有执行,导致文件句柄没有被释放。于是我试了试,# 查询删除未释放的进程 lsof |grep deleted # 上述命令得到的结果 lsof -n / |grep deleted xxxxx 751 root 8r REG 253,0 61G 202150797 /xxxxx/xxxxx (deleted) 果然发现了一个占用非常大的文件,为了方便,直接显示一个,仅作演示,实际请自行查看自己的于是执行kill -9 751(上一个命令得到 pid )然后再次 执行第一个命令,发现空间已经恢复正常大小了。真是一次奇妙的经历。
2022年09月12日
1,219 阅读
0 评论
0 点赞
2022-08-11
教你排查外网无法通过公网 ip 访问内网服务器的原因
公司搬迁,导致了以前外网可以访问内网的功能没有了,今天特地来排查一下问题。问题分析因为以前是可以用的,硬件都没有换,宽带账户网络都没有变动,所以可以推定路由器配置是好的(为了以防万一,我检查了下,确认正常)因为是搬迁,然后硬件有光猫+交换机+路由器+服务器,所以推测可能是因为层级不一样,导致分配的ip不一样。确认自己的网络ip是不是真的就是公网ip排查过程因为自己也不懂这方面的东西,所以先检查了一下路由器的配置,趁机偷偷师,看看大佬是怎么配置的。确认完毕后,发现配置应该没有少。然后又确认了一下服务器的路由层级,通过在内网ssh登陆服务器,发现是可以登陆的,然后可以确认应该不是层级问题(因为我没去公司,远程操作的)最后最不可能的就是公网ip问题,因为按照我原来的想法是:公司以前都有公网ip,只是搬迁了环境,账户啥的都是以前的,应该不会有问题吧,结果打开 ip138.com 查询到我的 ip 是以前的公网 ip (这让我坚定了信念-公网ip没掉,还是以前的,说明应该是硬件的问题),然后查询路由器上的 ip 是一个内网 ip (这里和 138 查询的不一样,此时就已经说明了问题,这个只要和 138 的不一样就说明 ip 不是公网 ip ,但是我当时没有意识到)。我又开始看硬件层级,看来看去,发现应该是没有问题。于是打算从头确认一下,先联系宽带商,联系不上。于是联系路由器厂商,联系上了,路由器厂商说:大部分情况下,如果有公网ip,那么路由器的 ip 一定是公网 ip,恰巧电信联系上了,我又去联系了问了一下电信,电信说因为你们搬迁,所以公网ip掉了,然后让他们重新给个ip,重启路由器,在路由器页面又是公网 ip 了。至此,问题解决了。以上就是我解决问题的思路,仅供参考。Tips不用纠结路由器有没有收到你的外网请求,因为只要虚拟主机设置好后,只要路由器收到请求就会自动转发到你的内网服务器。路由器主页显示的 wan ip(就是路由器显示的 ip)一定是你当前对外网的 ip,如果它显示的是内网 ip,那一定是内网,不用犹豫,直接电话联系客服。关于第二点。有时候,你的光猫上有一些配置,比如多层级,多个路由器,所以光猫会给你的路由器配置内网 ip, 这个时候,你要确认一下是不是光猫有配置。光猫的ip是不是外网 ip动态域名我一开始不理解这个是干嘛的,后来才知道,这个玩意就是因为公网 ip 一直变,所以路由器会把你的实时公网ip上报到动态域名商哪里,然后动态域名商会把你的域名解析地址换成最新的 ip参考https://service.tp-link.com.cn/detail_article_2576.html 虚拟主机设置https://m.300.cn/itzspd/385162.html 动态域名绑定
2022年08月11日
1,322 阅读
0 评论
0 点赞
2022-07-27
记一次 redis 神操作-又名踩坑日记
前言好久不更新博客了,我又来更新了。这次遇到的问题是 redis 里面删除 key 和 查询 key。项目背景老规矩,开头说一下项目背景。原商城项目二开,客户要求增加一个附近功能,而附近商家功能,我们以前已经有了,所以只需要打开上上去就行了。问题如果真是这么简单,那我岂不是没有文章可以写了?当然不是。把项目上到测试环境后,产品测试了一下,反馈说不能管理首页的 banner 和商品列表。我的第一反应就是:这个功能是好的,肯定是新来的产品啥都不懂。但为了防止被打脸,我特地试了一下,结果真的有问题。查看代码,发现是后台删除了 redis,但是没有删除完。因为有N个程序员开发过这一块,所以导致了这一块的功能特别拥挤,像屎一样,各种骚操作。现在需求是:每个城市每个地区都有对应的商家供其选择,如果没有商家,默认就取一个指定的城市。某一任程序员就写了一个神奇的操作:如果后台没有某个城市的数据,就取默认城市的数据放到该城市里面去,那么这里就有一个神奇的事情发生了:后台管理城市数据的时候,比如更新或者删除城市数据,但是前端并没有该城市数据,导致了后台删除了相关的redis,并没有删除那些已经存在的 redis 。例如:用户在前端请求北京市的数据,但是后台并没有北京市,所以默认把深圳市的数据给了北京,并且缓存到 redis 的 key 为北京的数据里面了,此时,在后台更新深圳市或者新增北京的时候,redis 并没有做相应的更新操作。解决方案那么如何解决这个问题呢?我为了图快,我是直接增加了一个集合。设置一个集合,不存在的 key 都放在集合里面,这样每次可以判断在不在集合里面了,而后台删除的时候,判断对应的城市key是否存在集合里面,存在就删除集合里面的对应的值。其它逻辑照常执行。比如已经存在的城市缓存就直接删除(unlink)后台为什么不做写操作?因为这个key可能很久都没有访问后记效率及功能分析当时改这段逻辑的时候,各种考虑,最后还是用了这种方式,原因为:set比list少一点重复,也就是说不用管数据重复问题。为什么不使用有序集合,因为不需要排序,只需要知道是否存在就行了。业务方面分析:原始版本:无法删除对应城市 redis 缓存修改了第一版本:增加了集合,后台删除的时候,使用 hscan + unlink 删除集合和已经缓存的城市 key,然后原始逻辑不变。最快实现。此时问题:前端请求后台不存在的城市数据会缓存到内存中,造成内存的浪费。修改了第二版本:前端先判断这个城市数据是否存在,如果不存在,判断集合中是否存在这个城市值,如果存在,返回默认的城市的缓存。而后台只需要删除集合里面需要新增的值就行了。鸣谢感谢大佬们的文章参考参考https://blog.csdn.net/u012998306/article/details/105417611 redis sadd 命令 以及 删除set集合或者单独删除set中的一/多条记录https://bbs.huaweicloud.com/blogs/317523 为了拿捏 Redis 数据结构,我画了 40 张图(完整版)https://blog.csdn.net/fuzhongmin05/article/details/119531696 数据结构如何造就Redis的快http://jinguoxing.github.io/redis/2018/09/04/redis-scan/ scan的使用https://www.lixueduan.com/post/redis/redis-scan/ Redis Scan 原理解析与踩坑https://nyogjtrc.github.io/posts/2019/12/delete-keys-matching-a-pattern-in-redis/ 刪除 Redis 中符合 Pattern 的 Keyhttps://redis.io/commands/unlink/ unlink http://mysql.taobao.org/monthly/2018/10/05/ redis lazyfree · 大key删除的福音https://blog.csdn.net/loophome/article/details/105204427 Redis删除大集合操作(Lists,Sets)
2022年07月27日
1,815 阅读
0 评论
0 点赞
1
...
3
4
5
...
16