## 前言 因为个人爱好,购买了云服务器,上面部署了静态博客网站,科学上网服务,内网穿透服务。 上述条件弄完之后,还剩下很多性能。所以决定自己实现一个服务器应用程序,代码比较简单,也可以说就是练练手。 ## 访问统计 `/api/v1/visit_analysis` `/api/v1/most_viewed_urls` `/api/v1/latest_viewed_urls` 表名:visit_analysis | 字段名 | 数据类型 | 约束条件 | 解释 | | --------------- | -------- | --------------------- | ---- | | id | INTEGER | NOT NULL,PRIMARY KEY | | | url | TEXT | NOT NULL | | | visitor_uuid | TEXT | NOT NULL | | | last_user_agent | TEXT | NOT NULL | | | last_view_time | INTEGER | NOT NULL | | | page_view_count | INTEGER | NOT NULL | | 1. 创建table visit_analysis。 2. 插入 url,visitor_uuid,last_user_agent ,last_view_time至表中,如果表中已存在url,visitor_uuid 相同的item,则更新last_user_agent ,last_view_time,并将page_view_count加1,否则创建新的item,并将page_view_count赋值为1。 3. 根据url 获取 不同的visitor_uuid的个数作为访客数量统计,将所有 page_view_count 累加作为访问次数统计。 4. 将 url 的 所有 page_view_count 累加,统计出 n 个最大的记录。 5. 将 url 的 last_view_time进行排序,统计出最新的 n 个记录。 6. 将所有记录的不同 visitor_uuid 相加作为网站总访客数,将所有page_view_count相加作为网站总访问次数。 ## Live2D 模型添加 在 XML 配置文件定义`Live2dModelsRoot` 字段,值默认为 `resources/live2d`。 模型相关文件放置在 DocumentRoot/resources/live2d下。 ## 任务清单 | 字段名 | 数据类型 | 约束条件 | 解释 | | ------------- | ------------ | --------------------- | ---- | | id | INTEGER | NOT NULL,PRIMARY KEY | | | create_time | INTEGER | NOT NULL | | | parent_id | INTEGER | | | | content | VARCHAR(512) | NOT NULL | | | finished | BOOL | | | | finished_time | INTEGER | | | ## Core Dump 通过命令`ulimit -a`查看: ``` real-time non-blocking time (microseconds, -R) unlimited core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 6846 max locked memory (kbytes, -l) 228312 max memory size (kbytes, -m) unlimited open files (-n) 65535 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 6846 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited ``` core file size这一项为0,说明不生成core dump文件。 在`/etc/profile`里面加入 ``` ulimit -c unlimited sysctl -w kernel.core_pattern=core_%t_%s_%d_%e ``` 查看帮助`man 5 core`。 ## 微信公众号对接 1. 公众号管理网页:设置与开发→基本配置→服务器配置。 2. 由于使用的是测试公众号,因此只能够接受消息,微信服务器会将该信息发送至我们的服务器,然后我们可以对该消息进行回复,随后该连接将被关闭。 ```mermaid stateDiagram-v2 [*] --> Idle Idle --> WaitSetAlarmClock : input 1 WaitSetAlarmClock --> Idle : process input Idle --> WaitSetText : input 2 WaitSetText --> Idle : process input Idle --> Idle : not found ``` ## 修改历史 ### 2025/02/28 1. 重新新建项目,只存放服务器业务相关代码和文件。 2. 去除Web Toolkit,以后不再使用它了。 ### 2021/09/03 1. 通过阿里云申请免费SSL证书放置cert目录中。 2. 修改`conf/nginx.conf`文件,使http全部重定向至https。