2017-08-25 C++ C++:头文件篇 在学习c++,被头文件搞得一头包,时常出现重定义的错误,今天就理一下c++的头文件,彻底把它搞懂。C++与C一样,所有变量都需要先声明才能使用,这种”啥都别说,先报名字”的做法,不仅应用在了变量身上,一个函数也需要先声明后使用,并且这个函数只能定义一次。 起步比如: 123456789void A(){ B(); // 未声明调用}void B(){... 阅读全文…
2017-08-12 操作系统 浅析IO模型 在之前的同步异步文章中埋了个坑,今天就来填一下吧。当CPU发起IO调用,需要读取文件里的东西时,由于IO处理的速度没有CPU那么快,因此,通常都是CPU在等待IO处理完毕返回数据。当IO处理中到CPU拿到文件数据,这里存在几种IO模型,分别是read,select,poll,epoll,kqueue。在此先说一下fd,系统在读写文件的时候,需要文件描述符(file descriptor简称f... 阅读全文…
2017-08-12 系统部署 玩转SSH 我们知道,连接linux服务器最好用的是ssh,linux机器连接linux机器,直接使用ssh命令即可,不过每次都要一堆登录参数,也是十分麻烦,最重要的是ssh连接时需要填写要登录服务器的ip,ip什么的又难记,难免会影响到工作效率,那有没有办法像window上的xshell一样,免登陆密码,并且登录时命令不用这么复杂呢? 答案是有的!今天就讲讲SSH免登录密码+Bash里的alias... 阅读全文…
2017-08-12 系统部署 Linux下go1.8安装方法 之前迷上了神奇的Go语言,就在windows上装上了Go1.8,挺顺风顺水的,不过最近换上了Linux时,编译安装就炸了,各种报错。今天就留个记录,备个份! 编译安装Go1.8的主体思路: 从github中clone下来 确保linux系统安装较新的libc,gcc(apt,yum随便搞上) 切换库分支至1.4(刚clone下来的库),去到src目录,执行all.bash 把编译安装完的1... 阅读全文…
2017-08-08 数据库 mysql锁机制知识整理 并发处理时我们经常谈到的问题。在数据库操作中,有时候需要考虑并发的问题,比如我们常见的库存管理系统以及银行转账等问题,这些场景都需要用到数据库的锁机制以及事务,不然很容易造成”脏数据”等常见的在并发中遇到的问题。今天浅谈一下mysql锁机制。 表级锁与行级锁Mysql的锁机制大概分为两种,一种是表级锁,一种是行级锁。顾名思义,表级锁就是在进行读写操作时,把涉及到的目标表锁住,阻塞其他连接对相... 阅读全文…
2017-08-08 编程规范 SOLID原则 SOLID原则其实是由面向对象的五大设计原则组成,也是各种设计模式的基础理论。适当遵守SOLID原则,能写出高内聚,松耦合的代码,便于当需求变动能更快的拓展。废话不多说,下面立即正片。 原则名称 英文原义 中文含义 Single Responsibility Principle A class should have one, and only one, reason to c... 阅读全文…
2017-07-31 操作系统 异步同步阻塞非阻塞详解 相信刚入门计算机科学的小伙伴们来说,这四个词–异步,同步,阻塞,非阻塞,直接搞晕,因为单单理解四个词就算了,他们还能组合,同步阻塞,同步非阻塞,异步阻塞,异步非阻塞+_+。因此今天就主要谈谈这几个词,顺便备个份,怕是我哪一天忘记了回来看看2333333 首先,这些概念出现的场景发生在应用程序调用系统内核之间。我们知道例如十分耗时的IO操作就是由内核完成的,由于应用程序(cpu)处理的速度十分... 阅读全文…
2017-07-29 PHP JWT-Auth&Laravel-Auth源码浅读 故事发生月黑风高的…..啊呸,扯题了。简单来说前几天在配置JWT-Auth的时候,因为自己建的用户表没有用国际标准的’password’字段,而是自己随便起了个userPassword,导致不是在挖坑就是在挖坑的路上.不得不阅读其源码解决问题。 前置条件不过结构复杂的Laravel,里面运用了许多魔术方法及其核心的Ioc容器,阅读前拿到以下几种工具才好动手: 读一下Laravel作者的Fr... 阅读全文…
2017-07-27 PHP Laravel中应用JWT JWT-Json Web Token,一种基于json格式的开放标准,常常被用作替代cookie的认证方式,特别适合前后端分离的WEB应用,以及api接口。今天就讲讲如何在Laravel应用中使用JWT,虽然网上找到的Laravel集成JWT的方法,不过要么就坑点太多,要么就有诸多限制(比如要验证的模型有多个怎么配置)。 实验环境 Laravel 5.2+ PHP 5.5+ tymon/jw... 阅读全文…
2017-07-19 PHP Laravel的数据填充Seeder食用方法 在日常开发中,经常需要往数据库里填充数据,以便调试接口发现bug。Laravel自带的数据填充器seeder也十分好用,纯自动化填充,还支持一键回滚,只需在使用之前定义些方法即可,下面就介绍一下seeder普遍的用法。 版本 Laravel 5.2 流程介绍 生成Seeder填充类 按实际情况定义模型工厂 执行artisan命令自动化填充数据到数据库 回滚,恢复到实际生产环境 起步首先利... 阅读全文…