V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  awanganddong  ›  全部回复第 18 页 / 共 27 页
回复总数  539
1 ... 10  11  12  13  14  15  16  17  18  19 ... 27  
2021-03-19 13:08:05 +08:00
回复了 awanganddong 创建的主题 程序员 c 语言帮忙解释下什么意思
@konar 再请教你下面这段的意思。

```
if(pos>=L->length) {
*(L->elem+pos-1)=data;
L->length+=pos; //这个不是应该++吗????
} else {
for (int i=L->length; i>=pos; i--) {
*(L->elem+i)=*(L->elem+i-1); //循环位置移动,把 7 的位置,放到 8 的位置
}
L->length++;
*(L->elem+pos-1)=data; //这个是赋值,这里又不太清楚了
}
```
2021-03-18 17:31:23 +08:00
回复了 awanganddong 创建的主题 程序员 c 语言帮忙解释下什么意思
@konar 透彻了。 感谢各位
2021-03-18 17:26:52 +08:00
回复了 awanganddong 创建的主题 程序员 c 语言帮忙解释下什么意思
@konar 明白了

那这个 ListPtr 后面跟的 L 是声明 long 类型吗
还有就是 malloc 分配内存成功之后,返回的值是该内存地址的值。按我的理解是一个 16 地址,
这里可以转化成具体指针类型是为了什么
2021-03-18 17:17:39 +08:00
回复了 awanganddong 创建的主题 程序员 c 语言帮忙解释下什么意思
```
#include <stdio.h>
#include <stdlib.h>
#define LIST_TNIT_SIZE 100
typedef int ElemType;
typedef enum Status
{
success,fail,fatal,range_error
} Status;

typedef struct Sqlist
{
ElemType *elem;
int length;
int listsize;
} Sqlist,*ListPtr;//重命名并且定义一个结构体指针

Status List_Init(ListPtr L)
{
Status status = fatal;
L->elem = (ElemType *)malloc(LIST_TNIT_SIZE*sizeof(ElemType));
if(L->elem!=NULL)
{
L->length=0;
L->listsize=LIST_TNIT_SIZE;
status = success;
}
return status;
}
//------------------插入函数-----------------
void List_Input(ListPtr L)
{
int n;
printf("请输入数据元素的个数(1 - 5):");
while(1)
{
scanf("%d",&n);
if(n>LIST_TNIT_SIZE||n<=0)
printf("数据出错,请重新输入:\n");
else
break;
}
for(int i=0; i<n; i++)
{
printf("请输入第%d 个数据元素:",i+1);
scanf("%d",L->elem+i);
L->length++;
}
}
//-------------------输出-----------------
void print(ListPtr L)
{
printf("顺序表中的元素为:");
for(int i=0; i<L->length; i++)
{
printf("%d ",*(L->elem+i));
}
printf("\n");
}
//--------------------插入------------------
void List_Insert(ListPtr L)
{
int pos,data;
printf("请输入插入元素的位置:");
scanf("%d",&pos);
printf("请输入插入元素的数值:");
scanf("%d",&data);
if(pos>=L->length)
{
*(L->elem+pos-1)=data;
L->length+=pos;
}
else
{
for(int i=L->length; i>=pos; i--)
{
*(L->elem+i)=*(L->elem+i-1);
}
L->length++;
*(L->elem+pos-1)=data;
}
}
//---------------------主函数---------------
int main()
{
ListPtr L;
Status status = fail;
L = (ListPtr)malloc(sizeof(Sqlist));
List_Init(L);
List_Input(L);
print(L);
List_Insert(L);
print(L);
//printf("%d",L->listsize);
return 0;
}
```
整体代码是这个样子,但是我追 ListPtr L 没找到它的定义
2021-03-16 09:47:10 +08:00
回复了 awanganddong 创建的主题 Redis 查看日志,发现 redis socket 报错
@ebingtel 出现过几次这种情况。
我现在追了下 php 代码,引起这个原因的代码是这里。
现在打算追下 redis 代码,看看这个异常从那里来的。
然后再做分析,
主要是查看同时间段 redis.log 日志是正常的
2021-03-15 21:42:42 +08:00
回复了 awanganddong 创建的主题 Redis 查看日志,发现 redis socket 报错
@ebingtel 看代码提示这里报错的
```
-- Get all of the jobs with an expired "score"...
local val = redis.call('zrangebyscore', KEYS[1], '-inf', ARGV[1])

-- If we have values in the array, we will remove them from the first queue
-- and add them onto the destination queue in chunks of 100, which moves
-- all of the appropriate jobs onto the destination queue very safely.
if(next(val) ~= nil) then
redis.call('zremrangebyrank', KEYS[1], 0, #val - 1)

for i = 1, #val, 100 do
redis.call('rpush', KEYS[2], unpack(val, i, math.min(i+99, #val)))
-- Push a notification for every job that was migrated...
for j = i, math.min(i+99, #val) do
redis.call('rpush', KEYS[3], 1)
end
end
end
```

也就是 zrangebyrank 这里获取数据出现问题
2021-03-14 19:03:30 +08:00
回复了 ling516 创建的主题 生活 奔三了,感觉生活毫无意义
同样奔三,
偶尔也会感觉人生没有意义,
但是时常给自己打气。

唯一确定的是
有了一个可以安心的城市。
在这里,
以后应该会有亲人,会有朋友。


就像谭谈交通那句,
向前看。
2021-03-12 17:50:23 +08:00
回复了 jiaqidianbo 创建的主题 问与答 免密码登录有的成功,有的失败是怎么回事儿
标记以下, 现在也出现问题,学习下判断方法
2021-03-12 13:00:18 +08:00
回复了 flycorn 创建的主题 程序员 关于订阅功能信息流设计思路
你这个应该属于 feed 信息流吧

架构师之路上边有专门介绍思路的,你可以去找找看
2021-03-11 22:26:16 +08:00
回复了 slogon 创建的主题 程序员 为了注册微信小程序想去注册个公司,求打醒。。。
插一楼,现在个体化在成都的注册费用大概多少呢,一年大概消耗
2021-03-09 09:08:30 +08:00
回复了 bwd1991 创建的主题 数据库 sql 统计一段时间内巡检次数 7 天内的不重复计算
另外建一张表,专门存不重复数据。

可以实时同步写,也可以走队列定时刷数据到这张新表。
2021-03-07 21:36:21 +08:00
回复了 penguinn 创建的主题 成都 最近跳槽大厂成功,大家有什么问题吗?
这个真牛逼
2021-03-07 21:34:53 +08:00
回复了 gollwang 创建的主题 成都 迫于无奈,想找个 golang 的坑位(成都),目前在职
成都 go 环境怎么样,后期从 php 转 go
2021-03-07 19:45:08 +08:00
回复了 awanganddong 创建的主题 程序员 聊天会话列表该怎么处理
刚才思考了,opengps 的方法理解了。
带上最后一页时间或者主键 id,然后查接下来的数据。
2021-03-07 19:33:40 +08:00
回复了 awanganddong 创建的主题 程序员 聊天会话列表该怎么处理
@xuanbg 点击会话,触发请求。更改会话顺序,直接请求第一页,正好把张三放在第一页。

那如果,我不点击会话,一直上拉,中途新加入几个会话,这又乱序了。

至于你说的第二个方法,确实简单一些。
感谢诸位,对我找房子也有参考价值。
2021-03-07 15:28:43 +08:00
回复了 awanganddong 创建的主题 程序员 聊天会话列表该怎么处理
我这里想拉取的列表是比如现在有几个聊天好友的列表。而不是聊天消息。
2021-03-07 10:24:07 +08:00
回复了 awanganddong 创建的主题 程序员 聊天会话列表该怎么处理
如果分页,肯定牵扯到数据到变化,比如我分到第三页,有一个数据叫张三。这时候,数据变化,我分到第四页,又查到了这个张三的数据。(服务端数据变化)


那如果维持一个 list 列表,每次拉取数据,放 list 列表处理,这个容量限制呢?
2021-03-07 10:18:41 +08:00
回复了 awanganddong 创建的主题 程序员 聊天会话列表该怎么处理
@xuanbg 你这个魔改的分页,假设你在第三页找到会话。。。 从这里开始我就不明白什么意思了。
下边是微信 sdk 的说明

```
由于本地会话可能很多(例如超过 500 个),一次性全部加载完毕可能会耗时很久,导致界面展示比较慢。为了提升用户体验,getConversationList() 接口支持分页拉取能力:

首次调用 getConversationList() 接口时,可以指定其参数 nextSeq 为 0,表示从头开始拉取会话列表,并指定 count 为 50, 表示一次拉取 50 个会话对象。
IM SDK 按照从新到旧的顺序拉取会话列表,当首次拉取会话列表成功后,getConversationList() 的回调结果 V2TIMConversationResult 中会包含下次分页拉取的 nextSeq 字段以及会话拉取是否完成的 isFinish 字段:
如果 isFinished 返回 true,表示所有会话已经拉取完成。
如果 isFinished 返回 false,表示还有更多的会话可以拉取。此时并不意味着要立刻开始拉取“下一页”的会话列表。在常见的通信软件中,分页拉取通常由用户的滑动操作触发的,用户每下拉一次会话列表就触发一次分页拉取。
当用户继续下拉会话列表时,如果还有没有拉取下来的会话列表,可以继续调用 getConversationList 接口,并传入新一轮的 nextSeq 和 count 参数(数值来自上一次拉取返回的 V2TIMConversationResult 对象)。
重复执行 步骤 3 直至 isFinished 返回 true 。

```
2021-03-07 09:54:44 +08:00
回复了 awanganddong 创建的主题 程序员 聊天会话列表该怎么处理
那如果不分页的话,如果会话比较多怎么处理
1 ... 10  11  12  13  14  15  16  17  18  19 ... 27  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1163 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 18:23 · PVG 02:23 · LAX 11:23 · JFK 14:23
Developed with CodeLauncher
♥ Do have faith in what you're doing.