宝塔按钮pm2后,node就装好了。对于前端开发人员来说,配置后端服务器的工作都是脑瓜疼的,好在宝塔这种可视化工具还是挺好用在部署上线前,假设你的项目已经写好的了。1. 在宝塔上添加新的站点2. 打包你的项目到站点目录下(我的放在根目录下)3. 安装pm2pm2是一个带有负载均衡功能的Node应用的进程管理器。当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载,
mongodb管理器Driver\Manager 入口文件,一般都要先实例化该类Driver\BulkWrite 读写类,数据库的增、删、改都要先靠该类来实现Driver\Query 查询类,MongoDB支持丰富的查询方式,所以单独拿出来组建了一个类Driver\Cursor 返回结果类,其实就是一个Cursor类的一个对象,该类有内置的toArray()函数可以结果转换成数组形式的BSON\O
阅读目录Laravel异常处理API数据返回1.创建异常2.异常类3调用方式laravel 自定义 ApiException 继承 Exceptiontry 捕获异常示例throw 直接抛出异常示例render 方法Laravel 方法知识点firstOrCreatefirstOrNewupdateOrCreate总结Laravel异常处理API数据返回1.创建异常创建自定义异常类:php art
目录1、说明2、代码1、说明netty 的 ByteBuf 中的 readerIndex 和 writerIndex 的设置十分巧妙,它内部对读取和写入位置进行控制,避免自己处理index的时候的各种麻烦,大大减少业务处理时的代码量用 C++ 重构一下,删减了 netty 的 ByteBuf 中的一些不常用的接口代码中其中只用到了 STL 的 string 和 unique_ptr,除此以外,再无
目录1、前言2、线程同步2.1、互斥锁2.2、条件变量2.3、读写锁2.4、信号量3、总结1、前言几年的编程生涯中,线程的使用可以说是非常常见的,从工作第一年把GUI和后台工作放在同一个线程中导致界面卡死(想想以前还装专业地给生产的同事写SOP,让他们在操作的时候别点击界面,真可笑),到现在能随随便便就能封装一个简易的线程池,这中间这么些年却从来没有系统地整理过线程的一些重要的知识点,今天翻了翻旧
目录1、说明2、数据类型2.1、uv_loop_t2.2、uv_walk_cb3、API3.1、uv_loop_init3.2、uv_loop_configure3.3、uv_loop_close3.4、uv_default_loop3.5、uv_run3.6、uv_loop_alive3.7、uv_stop3.8、uv_loop_size3.9、uv_backend_fd3.10、uv_back
1、uv_timer_t - 计时器句柄 使用该类型句柄来调用计时器回调 2、API 2.1、uv_timer_init int uv_timer_init(uv_loop_t* loop, uv_timer_t* handle) 初始化计时器句柄 2.2、uv_timer_start int uv
目录1、说明2、API2.1、uv_queue_work2.2、uv_cancel3、代码示例1、说明libuv 提供了一个线程池,可用于运行用户代码,libuv 中的工作队列中的任务会在线程池中执行libuv 中的线程池在内部用于运行所有文件系统操作以及 getaddrinfo() 和 getnameinfo() 请求libuv 中的线程池的默认数量为4,可以在启动时修改环境变量 UV_THRE
1、简介我们先不谈Redis,来看一下跳表。1.1、业务场景场景来自小灰的算法之旅,我们需要做一个拍卖行系统,用来查阅和出售游戏中的道具,类似于魔兽世界中的拍卖行那样,还有以下需求:拍卖行拍卖的商品需要支持四种排序方式,分别是:按价格、按等级、按剩余时间、按出售者ID排序,排序查询要尽可能地快。还要支持输入道具名称的精确查询和不输入名称的全量查询。这样的业务场景所需要的数据结构该如何设计呢?拍卖行
1、说明当我们使用 Redis 的 Hash 操作时,底层的实现就是字典。在介绍字典之后,我们先回忆一下 Redis 中的 Hash 操作。最常用的就是 HSET 和 HGET 了127.0.0.1:6379> HSET user name sherlock
(integer) 1
127.0.0.1:6379> HSET user age 20
(integer) 1
127.0.0
前言好早以前就像研究一下Redis了,一直以前都没有时间和机会,其实都是自己找的借口而已。做技术的基础要打牢,下面准备跟着黄建宏老师的Redis的 设计与实现 一书,学习巩固一下最基本的数据结构。Redis作为一个纯C语言写成的高性能中间件,不像Java、Python等高级语言内置很多数据结构,研究其数据结构的写法肯定会有着不小的收获。接下来我会根据我的进度整理学习笔记,做一个跟着Redis学数据
report使用 QWeb 实现报告打印步骤一:在模块目录下新建 reports 文件夹(文件夹名称随意),并新建报告xml文件,并将XML文件添加进 __mainfest__.py 文件的 data 列表中步骤二:在xml中添加 report<odoo>
<data>
<report id="model_report"
m
目录1、说明1.1、多路复用的几种机制2、函数简介2.1、select2.2、poll2.3、epoll2.3.1、epoll_create2.3.2、epoll_ctl2.3.3、epoll_wait2.4、其他方法3、epoll3.1、LT模式和ET模式3.2、优缺点1、说明socket编程的demo中使用的都是最基本的,但是一般不会真正用在项目中的代码。而实际项目中,需要面临复杂多变的需求环
1、说明springboot 是国内最常用的web框架,因为它的http server功能是最重要的。本文列举了一些现在通用的restful形式的接口所需要的注解2、@RequestMapping@RequestMapping 注解用于请求地址的解析,是最常用的一种注解源码如下:@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(R
这些年C++下的开发习惯了大而全的库,突然有一天,不能使用这些库了,才发现缺少一套自己常用的库基于std::string的字符串处理使用.hpp文件,不需要加入项目中,只要#include文件即可使用StringUtil.hpp#ifndef STRING_UTIL_H
#define STRING_UTIL_H
#include <string>
#include <stri
1、安装环境nginx 使用源码编译安装,环境及组件如下:make 环境openssl-fips-2.0.10pcre-8.44zlib-1.2.11nginx-1.10.2需要注意各组件的版本,有些版本会不配套,导致编译失败./configure 或 ./config
make
make install安装完成之后,可以进 /usr/local/nginx 查看目录,目录结构如下:conf/ -
1、说明springboot 框架的亮点之一就是依赖注入和自动装配,它避免了我们在写代码时纠结类的生命周期问题本文只记录一些注解的常用方法,并不深入说明2、@Autowired顾名思义,该注解的作用是自动装配,和以前的 spring 不同的地方在于,它不需要再配置xml而使用getBean() 方法获取对象,而可以直接使用注解,简单方便@Autowired 源码如下:@Target({Elemen
一、说明理论上,Qt和boost是同等级别的C++库,如果使用Qt,一般不会需要再用boost,但是偶尔也会有特殊情况,比如,第三方库依赖等等。本文主要介绍boost在windows Qt(MinGW)中的使用。MinGW是一组工具集,其中使用的gcc编译器,这里就需要使用gcc编译boost。二、配置gcc(1)检查gcc环境变量gcc工具位于Qt的安装目录下 ..\Qt\Qt5.5.1\Too
当我们需要处理图像文件时,经常需要确定图像文件的类型以便进行相应的处理,例如压缩、解码、转换等操作。imghdr模块可以帮助我们判断文件是否为有效的图像文件,并返回该文件的类型,以及检查图像文件的内容是否符合特定类型的要求。安装由于imghdr是Python的内置模块,因此无需安装即可使用。只需使用import语句导入即可:import imghdr判断图像类型要判断一个文件是否为图像文件,可以使