此项目为 https://yike.io 的后端 API,基于 Laravel 5 开发。
�� 此次开源只是应大家的要求,所以请不要联系我咨询任何使用问题,遇到问题请自行解决,熟读 Laravel 文档。如果你有兴趣参与改进,请直接 PR 即可。
�� 快速上手视频:053. 优秀的开源社区——yike.io
本项目代码使用 PHP 框架 Laravel 5 开发,本地开发环境使用 Laravel Homestead。
下文将在假定读者已经安装好了 Homestead 的情况下进行说明。如果您还未安装 Homestead,可以参照 Homestead 安装与设置 进行安装配置。
克隆源代码到本地:
> git clone git@github.com:overtrue/api.yike.io.git
1). 运行以下命令编辑 Homestead.yaml 文件:
homestead edit
2). 加入对应修改,如下所示:
folders:
- map: ~/my-path/api.yike.io/ # 你本地的项目目录地址
to: /home/vagrant/api.yike.io
sites:
- map: api.yike.io.test
to: /home/vagrant/api.yike.io/public
databases:
- api_yike_io
3). 应用修改
修改完成后保存,然后执行以下命令应用配置信息修改:
homestead provision
随后请运行 homestead reload
进行重启。
composer install
cp .env.example .env
你可以根据情况修改 .env
文件里的内容,如数据库连接、缓存、邮件设置等:
APP_URL=http://api.yike.io.test
...
DB_HOST=localhost
DB_DATABASE=api_yike_io
DB_USERNAME=homestead
DB_PASSWORD=secret
在 Homestead 的网站根目录下运行以下命令
$ php artisan migrate --seed
初始的用户角色权限已使用数据迁移生成。
$ php artisan key:generate
$ php artisan passport:install
将生成的 password grant 对应的 id 与 secret 记录下来,用于配置 env 变量。
PASSPORT_PASSWORD_CLIENT_ID=
PASSPORT_PASSWORD_CLIENT_SECRET=
如果你忘记了,就去找 oauth_clients
表中找吧。
echo "192.168.10.10 api.yike.io.test" | sudo tee -a /etc/hosts
去 腾讯防水墙 注册账号,创建验证码服务(你可能需要创建两个验证,一个用于发布文章,一个用于注册账号),获取对应的配置填写到 .env
中:
# 用于发布文章的验证码
CAPTCHA_ID_PUBLISH=
CAPTCHA_SECRET_PUBLISH=
# 用于用户注册用的验证码
CAPTCHA_ID_REGISTER=
CAPTCHA_SECRET_REGISTER=
帖子搜索基于 ElasticSearch 实现,所以你需要在任何机器上部署一个 ES 服务,然后将地址与索引名称配置到:
ELASTICSEARCH_INDEX=yike
ELASTICSEARCH_HOST=http://127.0.0.1:9200
请自行寻找敏感词库,将敏感词放置于 storage/SensitiveWords.txt
中,每行一个:
敏感词1
敏感词2
...
管理员账号请自己添加 UserSeeder 创建。
至此, 安装完成 ^_^。
扩展包 | 一句话描述 | 本项目应用场景 |
---|---|---|
overtrue/easy-sms | 多网关短信发送组件 | 发送验证码 |
overtrue/laravel-emoji | emoji 转换组件 | 帖子与评论 emoji 解析 |
overtrue/laravel-filesystem-qiniu | 七牛 CDN SDK | 帖子内容图片存储 |
overtrue/laravel-follow | Laravel 用户关系组件 | 用户关注与帖子订阅 |
overtrue/laravel-lang | Laravel 多语言 | 报错信息本地化 |
overtrue/laravel-mail-aliyun | 阿里云邮件 SDK | 发送通知邮件 |
overtrue/laravel-socialite | 社交登录组件 | 用户使用第三方登录 |
overtrue/laravel-uploader | Laravel 上传功能封装 | 帖子内容图片上传 |
overtrue/laravel-query-logger | Laravel SQL 监听工具 | 开发环境查看 SQL 记录 |
Intervention/image | 图片处理功能库 | 用于图片裁切 |
guzzlehttp/guzzle | HTTP 请求套件 | 我也记不得,反正就是要用 |
predis/predis | Redis 官方首推的 PHP 客户端开发包 | 缓存驱动 Redis 基础扩展包 |
mewebstudio/Purifier | 用户提交的 Html 白名单过滤 | 帖子内容的 Html 安全过滤,防止 XSS 攻击 |
laravel/passport | 用户授权 | 基于 Personal Access Token 的前后端用户认证 |
laravel/horizon | 队列监控面板 | 监听队列使用情况 |
laravolt/avatar | 生成用户头像 | 用户头像 |
sentry/sentry-laravel | Sentry 报错监控 | 监控系统错误 |
spatie/laravel-activitylog | 用户行为记录 | 个人中心的用户动态 |
spatie/laravel-url-signer | URL 加密 | 用户激活链接 |
tamayo/laravel-scout-elastic | Laravel Scout ES 驱动 | 帖子搜索 |
tucker-eric/eloquentfilter | 模型字段过滤 | 接口字段过滤 |
vinkla/hashids | HashID 实现 | 暂时好像没用到 |
beyondcode/laravel-self-diagnosis | Laravel 基础环境检查工具 | 检查配置是否正确 |
命令行名字 | 说明 | Cron | 代码调用 |
---|---|---|---|
es:init |
初始化 ES 模板 | 无 | 无 |
想知道如何从零开始构建 PHP 扩展包?
请关注我的实战课程,我会在此课程中分享一些扩展开发经验 —— 《PHP 扩展包实战教程 - 从入门到发布》
MIT
1.mongoose 1.安装mongoose mongose 是一种以关系性数据库的思想来设计非关系性数据库 npm i mongoose 2.引入mongoose 并连接数据库 const mongoose = require("mongoose") mongoose.connect('mongodb://localhost/test') localhost默认使用(27017) 可用127
html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="socket.io.js"></script> </head> <body> <h1>Echo Test</h1> <input id="sendTxt"
package io; import java.io.FileInputStream; import java.io.IOException; /** * 文件输入流,用于读取文件数据 * @author ChenYi * @date 2019.08.28 */ public class FISDemo { public static void main(String[] args)
字节流 文件字节输入流:FileInputStream 构造器 说明 public FileInputStream (File file) 创建字节输入流管道与源文件对象接通 public FileInputStream (String pathname) 创建字节输入流管道与源文件路径接通 FileInputStream fis = new FileInputStream(new File(
/* * 拼多多api接口演示 * @Author: lovefc * @Date: 2020-08-17 08:34:21 */ // 接口配置 $config = array( 'client_id' => 'xxxx', //client_id 'client_secret' => 'xxxxxx', //client_secret 'backurl' => 'xxxxx', //回调地址
只考虑demo用途,不考虑任何商用。如发生纠纷,本文不负责。(不定期更新) 【1】daimajia提供的干货集中营: http://gank.io/api 【2】github的api: https://api.github.com/ 举个栗子: URL: https://api.github.com/users 【3】鸿洋大神的玩android: http://www.wanandroid.com
Java-API、集合、IO 学习参考资料来自博客园的:来自 https://www.cnblogs.com/fire-dong/p/13414699.html 学习资料:Java 菜鸟教程 – https://www.runoob.com/java/java-tutorial.html 1、常用API 1.1、Date java.util 包提供了 Date 类来封装当前的日期和时间。 Date
个人理解 IOC:控制反转(DI依赖注入),将以前由我们自己手动创建对象的过程交给了Spring,Spring帮助我们生产对象、管理对象、管理对象和对象之间的依赖关系。降低了代码的耦合度,方便我们后期对项目做维护。 三种注入方式: 1.setter注入 2.构造器注入 3.属性注入(注解) @Autowired:默认根据类型进行匹配 @Resource:首先根据名称进行匹配,再根据类型进行匹配 自
//1、注册驱动类 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //2、连接数据库: Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseNam //3、创建Statemen
File文件对象: 一个File对象表示的就是一个文件 或者 文件夹 文件:文件有很多种 文本文件:txt、java、sql、doc 软件:exe 视频文件:mp4、avi 音频文件:mp3 创建File文件: 例如:System.out.println(文件名.createNewFile()); 删除File文件: 例如:System.out.println(文件
http://www.just4e.com/里面有很多文档的api。比如mysql,android,httpClient等等
IO 创建方式 <script src="/socket.io/socket.io.js"></script> <script> const socket = io('http://localhost'); </script> 或者使用require或import const io = require('socket.io-client'); // or with import syntax
要获取一个 API,你需要找到提供该 API 的公司或机构,然后按照他们的说明注册帐户,并同意他们的 API 使用条款。通常,这些公司或机构会提供 API 文档,描述了如何使用他们的 API。一旦你完成了这些步骤,就可以使用 API 来获取数据或执行特定操作。
# coding: utf-8 import requests # ----------------------------执行API调用并处理响应------------------------------- url = 'https://api.github.com/search/repositories?q=language:python&sort=stars' r = requests
程序员对API肯定不陌生,但刚入行的小白并不了解,网上一搜,你就会搜到好多高大上的解释,but,咱能不能用平白的话解释清楚呢,我的理解就是抄作业,抄作业虽然是老师们反对的,但是如果我们能理解的去抄,而不是不经思考的抄,那么学习效率将会事半功倍。用API就像一个学渣,啥也不会,你不让他抄,他几天也写不完,如果你把大佬的作业借给他,然后他在抄的过程中又添加了自己的思考和见解,那么就会收获很大 API(
旨在为开发、产品、测试人员提供更优雅的接口管理服务 可以现在官网注册账号进行体验 依赖谷歌浏览器 及 谷歌扩展程序YApi 依赖mongodb 及 node 环境,好像是个前端老大哥写的 官网: http://yapi.demo.qunar.com/ ,好像又和去哪儿网有点什么关系 内网部署教程: https://hellosean1025.github.io/yapi/devops/index.
6.2. 社区资源 寻求实时帮助,可以在Freenode IRC服务器的#go-nuts频道里找到其他的用户或是开发人员。 Go语言的官方邮件列表是Go Nuts。 报告Bug可以使用Go问题追踪器。 对于想及时了解开发进度的读者,可以加入另一个邮件列表golang-chenkins,这样在有人往Go代码库中checkin新代码时就会收到一封简要的邮件。
3.9. 社区资源 在 Freenode IRC 上,可能有很多#go-nuts的开发人员和用户,你可以获取即时的帮助。 还可以访问Go语言的官方邮件列表 Go Nuts。 Bug可以在 Go issue tracker 提交。 对于开发Go语言用户,有令一个专门的邮件列表 golang-checkins。 这里讨论的是Go语言仓库代码的变更。 如果是中文用户,请访问:Go语言中文论坛。
一面不涉及项目,聊了下之前的实习 涉及到的八股主要是按我简历上写的来问,这里记录一下没怎么答上来的 Redis分布式锁的实现,线程获得锁的过期时间是怎么设置的?过长或者过短有什么问题? watcDog的实现原理,每个锁都对应一个watcDog线程吗?你会如何设计watcDog线程? ThreadLocalMap中的key(ThreadLocal)为什么要设计为弱引用? Redis中的大key有什么
个人背景:3年Java后端开发 面试历时50分钟 项目拷打20分钟 假设数据量暴增,日数据量千万级别,项目如何优化 白板写一下项目某流程的伪代码 (面试官说我代码写的有问题,后面复盘应该是异常处理吧?) 写一下项目流程中用到的一条sql, 然后一转数据库八股文 Mysql 相关 msyql 的底层是B+树,B+ 树是什么? 事务是什么? 事务的ACID,各自是是什么展开说说? 一条sql 执行的过
社区能源共享 功能描述 本 合约 以纽约实验性的能源微电网为例,作为一个简单的案例进行实现。 “在总统大道的一边,五户家庭通过太阳能板发电;在街道的另一边的五户家庭可以购买对面家庭不需要的电力。而连接这项交易的就是区块链网络,几乎不需要人员参与就可以管理记录交易。”但是这个想法是非常有潜力的,能够代表未来社区管理能源系统。” 布鲁克林微电网开发商 LO3 创始人 Lawrence Orsini 说
联系我们 Nacos Gitter-https://gitter.im/alibaba/nacos Nacos 微博-https://weibo.com/u/6574374908 Nacos segmentfault-https://segmentfault.com/t/nacos 邮件列表 邮件列表建议讨论任何与Nacos有关的事情。具体请看参考手册描述如何订阅我们的邮件列表。 dev-naco