作者:AlbertWen
添加时间:2016-01-10 08:59:30
修改时间:2026-02-19 08:15:13
分类:
18.系统设计/UML建模
编辑
现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验证信息。实现上,大部分都采用token的认证方式,一般流程是:
- 用户用密码登录成功后,服务器返回token给客户端;
- 客户端将token保存在本地,发起后续的相关请求时,将token发回给服务器;
- 服务器检查token的有效性,有效则返回数据,若无效,分两种情况:
- token错误,这时需要用户重新登录,获取正确的token
- token过期,这时客户端需要再发起一次认证请求,获取新的token
作者:AlbertWen
添加时间:2015-12-15 16:09:00
修改时间:2026-02-09 03:09:20
分类:
11.PHP基础
编辑
后台往往需要导出各种数据到 Excel文档中。通常我们是导出 .csv文件格式,PHP导出函数参考代码如下:
/**
* 导出数据到CSV文件
*
* @param array $data 二维数组(模拟数据表记录)
* @param array $titleList 标题数组列表
* @param string $fileName CSV文件名
*/
function csv_export(&$data, $titleList = array(), $fileName = '')
作者:AlbertWen
添加时间:2017-10-29 20:47:55
修改时间:2026-02-19 21:20:36
分类:
21.Golang编程
编辑
关于管道 Channel
- Channel 用来同步并发执行的函数并提供它们某种传值交流的机制。
- Channel 的一些特性:通过 channel 传递的元素类型、容器(或缓冲区)和 传递的方向由“<-”操作符指定。
c <- 123,把值 123 输入到管道 c,<-c,把管道 c 的值读取到左边,value := <-c,这样就是读到 value 变量里面。
作者:AlbertWen
添加时间:2019-04-19 09:42:30
修改时间:2026-02-24 01:35:32
分类:
08.Java基础
编辑
Channel是一个通道,可以通过它读取和写入数据,它就像自来水管一样,网络数据通过Channel读取和写入。通道与流的不同之处在于通道是双向的,流只是在一个方向上移动(一个流必须是InputStream或者OutputStream的子类),而且通道可以用于读、写或者同事用于读写。因为Channel是全双工的,所以它可以比流更好地映射底层操作系统的API。特别是在UNIX网络编程模型中,底层操作系统的通道都是全双工的,同时支持读写操作。
作者:AlbertWen
添加时间:2019-02-25 10:15:22
修改时间:2026-02-19 09:18:56
分类:
招聘/面试/总结
编辑
主要中间件和组件:
Web服务:Tengine/OpenResty&Tomcat
缓存:Redis/Memcache
队列:RocketMQ
数据存储:Mysql/MongoDB/Hadoop/Cassandra/ElasticSearch
大数据计算:JStorm/Hive/MapReduce/MaxCompute
分布式锁:Zookeeper
服务化:SpringCloud
框架:SpringBoot/Spring/Struts/Ibatis
容器:Docker
作者:AlbertWen
添加时间:2016-02-18 15:28:42
修改时间:2026-02-20 08:11:39
分类:
12.PHP库/系统
编辑
大部分PHP框架中,为了防止一个类被重复实例化,往往采用“单例模式”实例化类。我们的项目框架是这样做的:
先写好一个基类 /framework/Base.class.php,内容如下:
<?php
namespace framework;
defined('SITE_PATH') or die('Access Denied');
/**
* 业务基类
*
* @package framework
*/
class Base {
/**
* 类实例化(单例模式)
*
* @return mixed
* @throws Exception
*/
public static function instance() {
static $_instance = array();
$classFullName = get_called_class();
if (!isset($_instance[$classFullName])) {
core_load_class($classFullName);
if (!class_exists($classFullName, false)) {
throw new Exception('"' . $classFullName . '" was not found !');
}
$_instance[$classFullName] = new $classFullName();
}
return $_instance[$classFullName];
}
}
?>
作者:AlbertWen
添加时间:2019-09-10 21:55:06
修改时间:2026-02-23 15:46:09
分类:
01.Linux基础
编辑
今天在以SSH免密方式,拉取git代码(git pull)时,报错:
WARNING:Your password has expired
作者:AlbertWen
添加时间:2017-12-29 16:45:37
修改时间:2026-02-23 15:40:38
分类:
08.Java基础
编辑
我们在 Java IO 流的分类介绍 这篇博客中介绍知道:
根据功能分为 节点流 和 包装流(处理流)
节点流:可以从或向一个特定的地方(节点)读写数据,如FileReader。
包装流(处理流):是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
作者:AlbertWen
添加时间:2018-11-04 20:36:27
修改时间:2026-02-18 20:25:50
分类:
08.Java基础
编辑
sigh,很遗憾,没有写完整,还有很多想做而没有做的事情,总结一下想做而没有做的事情吧
1)性能测试,没有条件和环境给我做这个事情
2)对portal,对页面的支持,没有一个可以直观的可视页面
3)注册中心对zookeeper的支持
4)监控中心链路调用的追踪的支持,这个很重要,不过没有做
作者:AlbertWen
添加时间:2017-11-02 12:56:10
修改时间:2026-02-19 21:14:27
分类:
01.Linux基础
编辑
Mac/Linux 平台下,通用命令:
lsof -i:8080 (8080 为 端口号,根据需要,替换为其他端口号)
可以查看该端口被什么程序占用,并显示 pid,方便 kill 掉