二分法作为比较基础的算法,虽然工作中不常使用,但是作为编程基础,还是很有必要整理下的,下面是二分法递归版本的代码,记录在blog,以备后面查看温习。
Code
1 | #include <stdio.h> |
Compile and Run
1 | gcc main.c -o main |
二分法作为比较基础的算法,虽然工作中不常使用,但是作为编程基础,还是很有必要整理下的,下面是二分法递归版本的代码,记录在blog,以备后面查看温习。
1 | #include <stdio.h> |
1 | gcc main.c -o main |
二分法作为比较基础的算法,虽然工作中不常使用,但是作为编程基础,还是很有必要整理下的,下面是二分法的一个版本的代码,记录在blog,以备后面查看温习。
1 | #include <stdio.h> |
1 | gcc main.c -o main |
最近项目中使用了websocket,后台使用flask,所以就使用了flask_socketio这个库,使用起来也比较方便,在github中找到库的项目,
源码中附带的例子就可以直接使用跑起来。项目中遇到的问题记录如下。
客服端的网页请求到后台的socket.io,返回信息是400 bad requests。刚开始测试使用的是flask_socketio自带的demo,请求后台的首页,
在页面中进行web socket测试,一切正常。后来查阅资料,才知道是跨域的问题。demo中请求的是后台的页面,不存在跨域。客户端的网页有自己
的地址,然后跨域请求后台,就牵扯到了跨域问题。修改方法如下:
1 | socketio = SocketIO(app, async_mode=async_mode,cors_allowed_origins="*") |
最近手上有个项目使用了flask_security这个模块进行用户的登陆注册,后台主要自己使用,放在公网上怕有人随意注册,所以就准备关闭注册接口。关闭注册,有两个地方需要修改。
在代码中添加
1 | app.config['SECURITY_REGISTERABLE'] = False |
一般登陆页面会存在注册的进入入口,登陆页面一般是模板提供,所以就需要重写模板,重新模板的方法如下:
之前对于mysql出在一个会用能用的阶段,最近有个项目因为并发的原因,导致cpu使用率很高,系统很卡,这几天通过设计优化和mysql优化初步
解决了卡顿的问题。记录一下初步心得,后续有进步持续增加输出。
对于并发数高的系统,查询频繁的表项,设计上可以放到缓存中的,建议就放到缓存中,比如redis。我在项目优化中,起初将一个170万条表项的数据放在了mysql中,大量的查询,就把数据库的使用率拉的很高,优化之后,效果明显。
增加索引
频繁查询的字段建议增加索引,可以明显提高查询速度
最小值最大值查询比较
对于匹配最小值最大值比较,建议通过order by 方式查询,然后在代码之中进行判断比较,对于性能提升有一定的帮助。
初步接触mysql优化,我从最开始的一脸懵逼,到现在有了初步了解,先把这几天学习到的技巧记录如下。
1 | MariaDB [xxdb]> show processlist; |
如果开着web-server,默认就会有tcp的链接.
show processlist 显示的信息都是来自MySQL系统库 information_schema 中的 processlist 表。所以使用下面的查询语句可以获得相同的结果:
1 | MariaDB [xxdb]> select * from information_schema.processlist |
1 | MariaDB [xxdb]> select * from information_schema.`PROCESSLIST` where info is not null; |
查看当前执行的现场,并排序,可以找到比较耗时的命令,进一步进行优化。
1 | MariaDB [xxdb]> show variables like "%slow%"; |
上述命令是查询慢查询的配置,可以打开慢查询。
打开慢查询
将 slow_query_log 全局变量设置为“ON”状态
1 | MariaDB [xxdb]> set global slow_query_log='ON'; |
设置慢查询日志存放的位置
1 | MariaDB [xxdb]> set global slow_query_log_file='/var/log/mariadb/mysql-slow.log'; |
查询超过1秒就记录
1 | MariaDB [xxdb]> set global long_query_time=1; |
修改配置文件my.cnf,在[mysqld]下的下方加入
1 | [mysqld] |
重启mysql或者mariadb.
1 | # systemctl restart mariadb |
测试慢查询
1.执行一条慢查询SQL语句
1 | MariaDB [xxdb]> select sleep(3); |
2.查看是否生成慢查询日志
1 | # ls /var/log/mariadb/mysql-slow.log |
如果日志存在,MySQL开启慢查询设置成功!
这几天上线一个项目,并发数大概有1000,导致mysql性能很差。性能调优这块刚刚接触,很多参数都是懵逼的状态,所以找了两个工具:mytop 和doDBA,两个工具都不错,可以将mysql的状态信息实时显示出来,方便查看。
1 | $ sudo yum install epel-release |
添加信息如下:
1 | host=localhost |
最后执行命令:
1 | # mytop |
1 | # wget https://raw.githubusercontent.com/dblucyne/dodba_tools/master/doDBA --no-check-certificate |
编辑doDBA.conf 文件,填入mysql信息。
执行命令:
1 | # ./doDBA -h '127.0.0.1' -mysql |
下一步好好研究一下各个参数的含义。
在工作中有个项目仓库是建在公司服务器,远程pull或者push都是通过虚拟局域网进行,偶尔会出现虚拟局域网不太稳定的情况,所以准备将仓库直接推送到github,正好github也推出了个人私有仓库免费项目。
在github中新建仓库,直接在网页操作即可。提醒:千万不要添加说明文件,空的仓库即可。
在本地添加github远程仓库地址,例如:
1 | $ git remote add github https://github.com/shan3275/xxx.git |
直接将当前分支推送到远程空仓库
1 | $ git push -u github master |
说明如果想要本地分支和远程分支名字不同,可以执行如下命令:
1 | $ git push -u github 本地分支名字:远程分支名字 |
查看本地分支和远程分支的对应关系,可以执行如下命令:
1 | $ git branch -vv |
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
1 | $ hexo new "My New Post" |
More info: Writing
1 | $ hexo server |
More info: Server
1 | $ hexo generate |
More info: Generating
1 | $ hexo deploy |
More info: Deployment