- 博客(65)
- 资源 (5)
- 问答 (2)
- 收藏
- 关注
原创 Java Spring Boot 热部署
一、IDEA配置当我们修改了Java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译:(1)File->Settings->Compiler->Build Project automatically(2)File->Settings->Advanced settings->Allow auto-make to start even if devel
2022-04-07 17:51:04
260
1
原创 Golang channel的使用总结
Go语言中,最最最优秀的莫过于channel了。3大特点:1、线程安全2、其数据结构是队列(先进先出)3、有基本的数据类型通道使用前必须先初始化,否则会error无缓冲的通道:接收和发送是同步的,意味着,向其发送数据,必须有一个接收者,否则发送阻塞,接收也阻塞。缓冲通道:发送和接收不同步,1.发送不会阻塞 2.接收会阻塞关闭通道后,再次关闭会panic(划重点,通道一般有发送者关闭)关闭通道后,在往channel发送数据会panic关闭通道后,可以一...
2021-07-24 15:36:34
288
原创 HTTPS实现原理
以前只知道https,可以对传输的数据进行加密。主要面试经常喜欢问些此类的问题,接下来讲解下原理申请过域名证书的都知道,有2个文件1、证书文件证书文件包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;签名的生成是单向散列公开的明文信息的信息摘要,然后用私钥将信息摘要加密,就得到签名2、私钥私钥获取签名时有用到的。SSL握手协议,如下图主要看证书验证那块客户端拿到证书后,因为本.
2021-07-18 21:28:02
120
原创 DNS的实现,面试常问
很多公司面试都会有这个问题,比如从浏览器输入www.baidu.com打开到显示页面,经过哪些。从这个简单的问题,可以看出应聘者对网络这块的了解程度。DNS说白了,就是将域名解析成IP的过程。为什么要解析ip,因为ip才是你真正要访问的东西的地址。解析的过程中,会产生DNS挟持,DNS污染使得解析的IP错误,造成大面积访问404的问题,所以很多公司采用httpDNS的方式,来缓存到本地环境,减少这块的错误。一般DNS解析过程分为1、递归查询,即发一次请求,等你给结果,主要用于
2021-07-18 12:45:51
746
原创 Laravel项目优化,WRK压测
普通的php-fpm执行的后端应用(单机),很难支撑起数百万的流量,创业公司有做不完的需求,改不完的bug。项目因为需求的增加,变得无比的庞大,连路由文件都10几个,当就路由文件的加载,耗时都巨大,可见项目优化的空间是有多大路由文件,根据项目请求的url加载,而不是一次性全部加载,减少api接口的时延, 增大了每秒可处理的请求。以下环境win10wrk环境搭建:docker pull williamyeh/wrkdocker run -it --rm williamyeh/wr.
2021-07-07 00:17:39
251
原创 Go语言数组学习
go 语言的数组:1、长度固定2、长度是数组类型的一部分3、值类型(参数以复制的方式传递)// 值传递例子package mainimport "fmt"func test(b [3]int){ fmt.Printf("\nb 地址:%p",&b)}func main() { fmt.Println("Hello, World!") var a = [3]int{1,2,3} fmt.Printf("a 地址:%p",&a) a[2] = 4
2021-07-04 00:25:21
98
原创 Python自动爬取拉钩教育课程
本课程纯属学习交流,如有侵权,请告知,立马删除import requestsimport jsonimport csvimport timeimport random# import shlex# print(random.randint(1,17))# exit()courseId = "1" # 想学哪一门,改这里url = "https://*****/getCourseLessons?courseId=" + courseIdpayload = {}headers
2021-06-26 20:58:15
235
1
原创 Gin框架执行流程
// gin.gogin.Run() // gin启动http.ListenAndServe(address, engine)// server.goserver := &Server{Addr: addr, Handler: handler}server.ListenAndServe()ln, err := net.Listen("tcp", addr) // 网络监听srv.Serve(ln)c := srv.newConn(rw) // 网络连接c := ...
2021-06-07 10:35:24
1388
原创 php项目的瓶颈,可以试试facebook的这个工具
facebook 出品的xhprof函数的调用耗时远远大于自带函数的耗时如下一段代码,抛出的函数耗时function test($arr, $key=null){ // echo microtime(true);echo '<br>'; if(array_key_exists($key,$arr)){ return $arr[$key]; } // echo microtime(true);echo '<br>';;
2021-04-21 10:47:09
96
原创 微服务高可用
1、隔离2、超时控制(context.withTimeout)3、过载保护(滑动均值)4、限流(google.com/x/rate、uber)5、降级(注意降级数据一定要测试)6、重试(一般只在报错那个节点做)
2021-04-05 11:22:06
203
原创 Gin框架 ShouldBindJSON详解
为什么第二次使用ShouldBindJSON就失效了呢?今天debug看了下,主要是 http.Request的io buffer第一次取完之后,http.body 结构体中的sawEOF=true第二次去读取,发现已经是true了。直接返回了err = io.EOF....
2021-03-28 15:44:12
9305
原创 利用PHP数组实现元素0的处理
分享一道面试题,也当做警醒自己,面试讲究战术的,不要被面试官套路,自己应该有自己的准备。$arr = [2,0,6,0,8,5,0];数组arr,将其中的非0整数按照顺序输出,0 最后输出。其实时间足够还是很简单的,被面试官催,我真的太难了。$arr = [2,0,6,0,8,5,0];foreach ($arr as $k => $a) { echo $a.PHP_EOL; if ($a == 0) { unset($arr[$k]); .
2021-03-15 14:19:45
314
原创 阶梯计费-PHP实现最简洁
最近遇到一个阶梯计费的case ,想了挺久的,还是没有很好的解决方案,今天突发奇想,被我发现了。哈哈哈哈其实当时想了配置文件,但是没有想到这个点子上,所以记录下,下次项目中参考使用<?php// 阶梯计费代码function calcMoney($n, $config) { $money = 0; foreach ($config as $k => $value) { if ($n >= $value['min'] && $n
2021-03-06 16:53:57
1316
原创 Beego数据库迁移migration
一直在学习go语言,Beego,migration摸索遇到的一些问题go mod 下载的版本,开始beego包下,没有migration包,查了下,说是版本不支持,重新mod了目前beego版本:require github.com/astaxie/beego v1.12.3可以看到vendor下有migration包,点进去可以看到源码,推荐大家阅读一下源码,可以更好的学习go, 其实很简单的实现,遇到了2个坑吧1、空字符串无法表达,后面尝试了下,可以用以下方式m.NewC
2020-11-22 17:11:23
779
原创 Go语言学习-TCP编程
Go小白一枚,有错误,还请各位大佬指出TCP协议-三次握手,四次挥手那么Go语言如何实现了,我直接上代码,一切都在代码中talk is cheap,show me code...TCP服务端package mainimport ( "fmt" "net" "net/http" "bufio" _ "net/http/pprof" //可以用于查看协程信息)// HandleConnetion 处理请求func HandleConnetion(conn ...
2020-10-30 19:29:14
146
原创 Go语言管道的使用-死锁情况
管道分为带缓存的和不带缓存的带缓存的,make的时候指定大小,且管道未关闭状态,如果一直取不到值,发生错误func main() { chan1 := make(chan int) chan2 := make(chan int) go func() { chan2 <- 1 chan1 <- 2 }() <- chan1 }fatal error: all goroutines are asleep
2020-09-19 11:30:08
592
原创 Go语言的自增操作也不安全
Golang 证实++,-- 操作是不安全的,开启10万个协程同时进行。计算机操作系统原理,对于自增操作,是先从内存中取出来,然后加1操作,在存进去,在这之间就有时间差。package mainimport ( "fmt")var n = 100000func test(k int) { res := 1 for j := 1; j < 20; j++ { res *= j } n--}func main() { for i := 1; i <...
2020-09-16 17:13:52
598
原创 laravel 导出文件乱码解决
最近做导出功能,发现导出的文件名出现乱码查阅资料发现,头部没有统一的编码,需要对不同的浏览器做兼容处理在此记录一下,解决方法,可以参考一下//修改下载导出的头部信息function changeHeader($h,$filename) { $h['Content-Disposition'] = 'attachment;filename="'.$filename.'.xlsx";filename*=utf-8\'\''.$filename.'.xlsx'; return .
2020-09-16 10:52:48
1548
2
原创 MySQL优化基础三部曲
功能的优化主要就2个:代码的优化,MySQL的优化代码的优化就不说了,多看,多学习大佬们写的代码下面讲讲MySQL的优化,从简单的慢查询开始,SQL语句执行计划分析“三步曲”1. 查看 SQL 执行计划:explain SQL;查看各个指标是否正常范围,索引是否使用desc 表名;show create table 表名。2. 通过 Profile 定位 QUERY 代价消耗:set profiling=1;执行 SQL;show profiles; 获取 Que
2020-07-05 22:16:08
129
原创 python如何实现网页爬取,并翻译成中文
import ioimport sysimport urllib.requestfrom lxml import etreesys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码url = 'https://www.fastcompany.com/90519693/report-highly-sensitive-police-department-data-hacked-for-a-wiki.
2020-06-24 07:55:44
4197
4
原创 PHP针对其他语言的DES解密
最近对接第三方的接口,需要DES解密java的DES加密数据看了好久,研究java,还搭建了一个java环境最终失败。仔细思量,发现是方向错了, php本身也有DES解密,只是对照着解密就好了,管他什么语言,做好php解密的事情就好了。对方给的DES秘钥格式: 12,23,34,45,56,67,78加密数据:‘***************‘<?php/** * openssl 实现的 DES 加密类,支持各种 PHP 版本 */class DE...
2020-06-22 23:27:04
275
原创 美好的一天都被它给搅和了,不过又让我找回了曾经的样子
工欲善其事,必先利其器。一款良好的编辑器对于我们不可或缺,提升效率的同时 ,享受其中,不能自拔。美好的周末,从此刻开启回到家后每次都需要重新找激活码,好吧,重回sublime text 的怀抱应该没有谁进入IT行业的第一款工具不是SublimeText吧。有的话举起你们的爪子,报个到接下来安利一下sublimeText 编写python的环境配置,也方便以后查阅。1、首先下载安装sublime text2(说实话,更喜欢2的样子,不喜欢版本3的图标 )...
2020-06-20 08:45:22
202
原创 进程唤醒
(进程的操作,都是有原语(函数,具有原子性)去执行的)圈起来,以后会考进程创建参数:进程标识,优先级,进程起始地址,CPU初始状态,资源清单。。。进程创建步骤:1、创建一个空白PCB()2、获取一个进程标识符3、为进程分配空间4、初始化PCB5、插入就绪队列进程撤销:1、PCB队列中检索出PCB2、进程状态,进行中的话,立即终止,递归处理子进程3、释放资源4、将进程从PCB队列中移除进程阻塞:1、停止进程运行2、将PCB中的状态由运行态->阻
2020-06-14 13:00:44
7314
2
原创 每日的工作总结-更新2020年7月6日
努力工作,我的眼里只有工作早上8点出门,9点上班,中午休息2个小时,下午6点下班,加班1小时,回家1小时也就是你一天花在工作上的时间12个小时。睡觉的时间平均是7个小时,那就还有5个小时是你自己的。突然个想法,5个小时中利用1小时回忆今天工作遇到的不熟悉的函数(自己百度过的)第一天:2020年5月21日laravel mysql包whereBetween 方法-范围值-包含start和end的值//取出field大于等于1小于等于5的所有数据$model->whereBet
2020-05-21 23:09:56
231
原创 程序员的工作观
工作的意义· 为什么工作?· 工作为了什么?· 工作意味着什么?· 工作与个人、他人以及社会有什么关联?· 好工作或者所谓有价值的工作,是什么?· 工作和金钱有什么关系?· 一个人的经历、成长、成就感和工作有什么关系?...
2020-05-17 22:54:44
287
原创 docker部署go环境
最近找工作有点忙,php开发感觉遇到瓶颈了。Boss直聘上面搜索后端开发,很多大公司都是招golang开放工程师,也可能引发了phper的忧虑。于是就有了学习golang开发的想法玩过docker的可以略过,因为比较简单1、首先到相应的目录(这里统称"G:\")创建go目录,进入go目录,mkdir code目录,存放我们的代码2、在go目录下创建Dockerfile文件FR...
2020-04-25 18:01:58
1595
原创 shell脚本修改mysql密码
不知道你们有没有过这种经历,刚安装的mysql,立马就忘记了密码,或者过了一段时间就忘记了,找回太难了,得翻各种配置。下面 教大家一个脚本,专治mysql密码忘记的功能,一行命令就可以搞定,你一定会喜欢的#!/bin/bash# Check if user is rootif [ $(id -u) != "0" ]; then echo "must root" ...
2020-04-05 11:31:58
3744
Python selenium Firefox 模拟F5按键无效
2019-12-10
scrapy爬虫, pipelines 中无法打印出东西
2019-05-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人