本文基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。...点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...由于需要记录点赞人和被点赞人,还有点赞状态(点赞、取消点赞),还要固定时间间隔取出 Redis 中所有点赞数据,分析了下 Redis 数据格式中 Hash 最合适。...设点赞人的 id 为 likedPostId,被点赞人的 id 为 likedUserId ,点赞时状态为 1,取消点赞状态为 0。...{ LIKE(1, "点赞"), UNLIKE(0, "取消点赞/未点赞"), ; private Integer code; private String msg;
本文基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。...点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...由于需要记录点赞人和被点赞人,还有点赞状态(点赞、取消点赞),还要固定时间间隔取出 Redis 中所有点赞数据,分析了下 Redis 数据格式中 Hash 最合适。...设点赞人的 id 为 likedPostId,被点赞人的 id 为 likedUserId ,点赞时状态为 1,取消点赞状态为 0。...LikedStatusEnum { LIKE(, "点赞"), UNLIKE(, "取消点赞/未点赞"), ; private Integer code;
使用到的知识点: 1、使用with临时存储sql语句,格式【with as xxx(), as xxx2() 】以减少代码; 2、使用round()取小数点后几位; 3、使用to_char()将时间格式的数据转换为...text型; 4、使用split_part(xx,xx2,xx3)函数对文本型数据进行切分; 5、使用group by之后利用count()进行统计; 6、join 以及 left join之间的区别;...7、使用join连接多个表,基本格式:【a join b on a.id = b.id join c on a.id = c.id】; 8、嵌套查询(select * from (select * from...-01-28,使用now()获取当前时间戳,使用select to_char(now(),'YYYY')获取年; 11、使用【||】进行字符串的拼接; 12、使用to_timestamp ( CURRENT_DATE...; 14、使用:【字段::类型】可以将字段转换为指定类型,或者使用【cast(字段 as 类型)】; 15、使用【insert into 表名(字段名1,字段名2) select * from 表名2
1.装好Postgres 2.开启远程访问 配置postgresql.conf文件 listen_addresses = '*' 配置pg_hba.conf文件 host all
下载postgres镜像 $ sudo docker pull postgres 启动postgres容器 $ sudo docker run --name mypostgres -e POSTGRES_PASSWORD...如果在启动容器的时候需要执行一些初始化操作,我们可以写一些脚本(比如:.sh或者.sql),然后放到scripts文件夹中,启动容器的时候使用-v参数挂载到容器中,容器启动的时候会自动执行这些脚本,比如...docker-entrypoint-initdb.d postgres 使用命令行连接到postgres数据库 启动一个容器并使用psql连接到容器 $ sudo docker run -it --rm...--link mypostgres postgres psql -h mypostgres -U postgres Password for user postgres: psql (16.4 (Debian...postgres=# \dt postgres=# select 1; 使用nodejs连接到postgres数据库 安装pg库 npm install pg 连接并查询postgres数据库 const
点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...由于需要记录点赞人和被点赞人,还有点赞状态(点赞、取消点赞),还要固定时间间隔取出 Redis 中所有点赞数据,分析了下 Redis 数据格式中 Hash 最合适。...设点赞人的 id 为 likedPostId,被点赞人的 id 为 likedUserId ,点赞时状态为 1,取消点赞状态为 0。...LikedStatusEnum { LIKE(1, "点赞"), UNLIKE(0, "取消点赞/未点赞"), ; private Integer code;...另外,点赞 / 取消点赞 跟 点赞数 +1/ -1 应该保证是原子操作 , 不然出现并发问题就会有两条重复的点赞记录 , 所以要给整个原子操作加锁 .
本文基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。...点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...由于需要记录点赞人和被点赞人,还有点赞状态(点赞、取消点赞),还要固定时间间隔取出 Redis 中所有点赞数据,分析了下 Redis 数据格式中 Hash 最合适。...设点赞人的 id 为 likedPostId,被点赞人的 id 为 likedUserId ,点赞时状态为 1,取消点赞状态为 0。...LikedStatusEnum { LIKE(1, "点赞"), UNLIKE(0, "取消点赞/未点赞"), ; private Integer code;
点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...由于需要记录点赞人和被点赞人,还有点赞状态(点赞、取消点赞),还要固定时间间隔取出 Redis 中所有点赞数据,分析了下 Redis 数据格式中 Hash 最合适。...设点赞人的 id 为 likedPostId,被点赞人的 id 为 likedUserId ,点赞时状态为 1,取消点赞状态为 0。...LikedStatusEnum { LIKE(1, "点赞"), UNLIKE(0, "取消点赞/未点赞"), ; private Integer code;...comment '点赞状态,0取消,1点赞', `create_time` timestamp not null default current_timestamp comment '创建时间'
点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...由于需要记录点赞人和被点赞人,还有点赞状态(点赞、取消点赞),还要固定时间间隔取出 Redis 中所有点赞数据,分析了下 Redis 数据格式中 Hash 最合适。...设点赞人的 id 为 likedPostId,被点赞人的 id 为 likedUserId ,点赞时状态为 1,取消点赞状态为 0。...LikedStatusEnum { LIKE(1, "点赞"), UNLIKE(0, "取消点赞/未点赞"), ; private Integer code;...另外,点赞/取消点赞 跟 点赞数 +1/ -1 应该保证是原子操作 , 不然出现并发问题就会有两条重复的点赞记录 , 所以要给整个原子操作加锁 .
领读: 点赞是个频率比较高的事件,也不是特别重要的记录,使用缓存来存储还是比较合理的,另外像排行榜、热议等都可以使用缓存,先来看看点赞是如何实现的吧,详细代码可以clone看下哈,跟紧脚步,学技术~ -...点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...由于需要记录点赞人和被点赞人,还有点赞状态(点赞、取消点赞),还要固定时间间隔取出 Redis 中所有点赞数据,分析了下 Redis 数据格式中 Hash 最合适。...设点赞人的 id 为 likedPostId,被点赞人的 id 为 likedUserId ,点赞时状态为 1,取消点赞状态为 0。...另外,点赞 / 取消点赞 跟 点赞数 +1/ -1 应该保证是原子操作 , 不然出现并发问题就会有两条重复的点赞记录 , 所以要给整个原子操作加锁 .
在本文中,我们将一起学习如何使用docker安装PostgreSql。 我最喜欢使用[docker]的原因就是,我们真的不必太担心构建系统或配置。...=postgres -d postgres 注意: 要创建容器,使用此命令 docker run -it -d –name 识别容器的标签 -e POSTGRES_PASSWORD是创建容器时的强制参数...postgres 如何使用psql直接连接到数据库 现在,让我们执行psql连接到数据库。...root@67a4705c263c:/# psql -U postgres 连接到数据库的另一种方法是在连接到Postgres容器本身时使用psql。...$ docker exec -it 67a4705c263c psql -U postgres 让我们使用以下查询命令: postgres=# select now(); now
而嵌套的层次会按照你所期待的被应用。 nested 查询肯定可以匹配到多个嵌套的文档。每一个匹配的嵌套文档都有自己的相关度得分,但是这众多的分数最终需要汇聚为可供根文档使用的一个分数。...使用嵌套字段排序 尽管嵌套字段的值存储于独立的嵌套文档中,但依然有方法按照嵌套字段的值排序。...嵌套聚合 在查询的时候,我们使用 nested 查询就可以获取嵌套对象的信息。同理, nested 聚合允许我们对嵌套对象里的字段进行聚合操作。...嵌套对象的使用时机 嵌套对象在只有一个主要实体时非常有用,这个主要实体包含有限个紧密关联但又不是很重要的实体,例如我们的blogpost 对象包含评论对象。...nested 查询肯定可以匹配到多个嵌套的文档。每一个匹配的嵌套文档都有自己的相关度得分,但是这众多的分数最终需要汇聚为可供根文档使用的一个分数。
双击点赞 和 双击取消点赞 如:在抖音中双击屏幕之后就可以点赞,小红心就会变亮 [在这里插入图片描述] 把白色和红色的心形图片复制到 media 下 [在这里插入图片描述] [在这里插入图片描述] 需要图片的可以自取...: [在这里插入图片描述] 双击屏幕后取消点赞: [在这里插入图片描述] 2....(上面已实现),再次双击屏幕之后,不会取消点赞,只有点击后红心之后才能取消点赞。 单击红心也可以点赞,再次单击红心就会取消点赞 实现思路: 给最外层的布局添加双击事件,双击之后点赞,变成红色心。...代码实现: 上面布局文件不变,MainAbilitySlice 如下: 给布局添加双击事件,因为再次双击不会取消点赞,所以把else代码里设置为红色后就把 flag 取反去掉,就不会出现再次双击取消点赞了...,只有点击小红心才能取消点赞 [在这里插入图片描述]
SET PGPATH=D:\PostgreSQL\12\pg_dump SET SVPATH=F:\backup\autobackup\ SET PRJDB=uacp_ipss SET DBUSR=postgres...SET DBROLE=postgres FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k FOR /F "...如果忽略这些,则使用标准输出。 -F format --format=format 选择输出的格式。...那么使用这个选项。否则,不应该使用这个选项。 -O --no-owner 不把对象的所有权设置为对应源数据库。...,点击新建,新建一个时间,可以选择什么时候执行类型,选择好后点击确定 选择“操作”,点击新建,设置你的批处理路径,也可以点击浏览选择,点击确定 点击确定后就创建好了,一个定时任务,我设置的是凌晨3点执行备份数据库批处理脚本
john1337/article/details/104237974,在这篇文章中博主讲述了如何通过配置Swagger的host来使得swagger页面显示的ip为部署服务的服务器地址,springboot使用下面的配置...PathSelectors.any()) .build(); } } 但是博主有些同事本地配置中没有swagger2.host的配置,这样就会导致swagger页面使用的端口为...8080,这样如果本地配置的不是8080端口,上面的host配置就会导致本来能正常工作的swagger不能正常工作了,其实说白了这个问题产生的原因在于端口固定为8080了,而没有使用系统的server.port...配置,找到问题根源了,接下来的问题就转换为端口使用server.port配置了,也就是说如果配置文件中设置了swagger2.host,如果没有配置swagger2.host,那么swagger使用的host...的地址就为127.0.0.1:{server.host}的值,这就涉及到@Value注解嵌套使用问题,下面为优化后的swagger配置: @Configuration public class SwaggerConfig
只需授予生成id列的序列的使用权限即可:postgres=# grant usage on sequence events_id_seq to gizem;或者,切换到标识列。...Postgres 没有发出任何警告或错误。...更糟糕的是,您无法恢复id列返回到serial.相反,您需要创建一个新序列,并使用alter table ... set default.这真是个麻烦!现在,让我们用 identity 列来尝试一下。...id of table pings2 requires itHINT: You can drop column id of table pings2 instead.可以看到有个error报错,提示在使用中...current_timestamp);3、 alter sequence events_id_seq owned by events.id;part4、identity和serial在设置id的时候使用方法类似
-11.5/bin:$PATH # 如果mysql是编译安装的,这里可能还需要载入mysql的环境变量,类似这样 export PATH=/usr/local/mysql:$PATH(我们mysql使用.../mysql_fdw.git cd mysql_fdw make USE_PGXS=1 make USE_PGXS=1 install chown postgres.postgres /usr/local...### 其它命令: 删除外部表: drop foreign table screens; 删除扩展 postgres=# drop foreign table screens; postgres=# drop... user mapping for postgres server mysql_server_db10 ; postgres=# drop server mysql_server_db10 ; DROP... SERVER postgres=# drop extension mysql_fdw ; DROP EXTENSION
46、sql 聚合函数嵌套使用 在达梦数据库中是支持聚合函数嵌套使用的 如下所示: SELECT NVL(SUM(COUNT(*)),0)as gdTotal FROM...CASE_REGISTER, CASE_ISPUBLIC, CASE_ISURGENT 结果: mysql 中是不支持的: 这里是在人大金仓数据库环境下操作的 只能使用嵌套子查询语句进行修改
$lookup函数可以用于在同一数据库中的不同集合之间进行关联查询,并将查询结果合并到一个文档中,例如:
id int primary key auto_increment, — 主键id
领取专属 10元无门槛券
手把手带您无忧上云