- VS系列编译器对函数不安全报错的解决办法
考研小昂
安全c#c++
1.定义预定义符号_CRT_SECURE_NO_WARNINGS错误信息:errorC4996:'scanf':Thisfunctionorvariablemaybeunsafe.Considerusingscanf_sinstead.Todisabledeprecation,use_CRT_SECURE_NO_WARNINGS.Seeonlinehelpfordetails.意为:scanf函数
- 学习014-03-01-04 Disable the Audit Trail Module(禁用审计跟踪模块)
汤姆•猫
XAF学习.netXAFDevC#SecurityAudit
DisabletheAuditTrailModule(禁用审计跟踪模块)DisabletheModulePermanently(永久禁用该模块)Thistechniqueallowsyoutostoptrackingchangesthroughouttheapplication.Todothis,usethestandardDbContextFactoryinsteadofAuditedDbCon
- 线程池ThreadPool封装测试
云中飞鸿--**峰
#线程线程池
1、ThreadPool#ifndef_ThreadPool_H_#define_ThreadPool_H_#pragmawarning(disable:4530)#pragmawarning(disable:4786)#include#include#include#include#include#includeusingnamespacestd;classThreadTask//任务基类{pu
- 地表最强命令行函数表达式计算器C源代码
#pragmawarning(disable:4996)#define_INTEGRAL_MAX_BITS64/*---------------------------------------函数型计算器(VC++2010,Win32Console)功能:目前提供了10多个常用数学函数:⑴正弦sin⑵余弦cos⑶正切tan⑷开平方sqrt⑸反正弦arcsin⑹反余弦arccos⑺反正切arctan
- 防火墙、沙盒等
2501_92703078
开发语言linuxphp
防火墙临时关闭防火墙systemctlstopfirewalld永久关闭防火墙systemctldisablefirewalld开放端口firewall-cmd--add-port=8080/tcp临时允许TCP8080端口firewall-cmd--add-port=8080/tcp--permanent永久允许firewall-cmd--list-all查看防火墙当前区域的规则systemct
- Linux基础服务(2)
2501_92703078
linuxphp运维
NFS/SMB:网络文件系统,共享目录NFS:(NetworkFileSystem)网络文件系统。可以像挂载本地磁盘一样挂载网络文件目录。共享目录步骤共享目录为同一个文件,在服务端上,客户端只是挂载服务端1.关闭防火墙、沙盒(SElinux)systemctlstopfirewalldsystemctldisablefirewalldsetenforce02.安装yuminstall-ynfs-u
- 在 React 中实现全局防复制hooks
用于防止页面内容被复制、剪切或通过右键菜单操作。它接受三个可配置参数:disableCopy(禁用复制,默认true)、disableCut(禁用剪切,默认true)和disableContextMenu(禁用右键菜单,默认true)。通过监听copy、cut和contextmenu事件并阻止默认行为来实现防复制功能,并在组件卸载时自动移除事件监听器。该Hook使用useEffect管理事件监听器
- Redis秒杀lua脚本
Java都不学
Redisjavaredis
intresult=stringRedisTemplate.execute(SECKILL_SCRIPT,//seckill.luaCollections.emptyList(),voucherId,userId,orderId).intValue();--seckill.lua--创建消息组XGROUPCREATEstream.ordersg10MKSTREAM--参数列表localvouche
- What does disable_existing_loggers do?
captainOO7
Pythonlogging--divedeeppythonloggingdjango
disable_existing_loggers–IfspecifiedasFalse,loggerswhichexistwhenthiscallismadeareleftenabled.ThedefaultisTruebecausethisenablesoldbehaviourinabackward-compatibleway.Thisbehaviouristodisableanyexistin
- 系统休眠(System Suspend)和设备中断处理
天亮ing
Linux系统suspend
系统休眠(SystemSuspend)和设备中断处理一、设备IRQ的suspend和resume本小节主要解决这样一个问题:在系统休眠过程中,如何suspend设备中断(IRQ)?在从休眠中唤醒的过程中,如何resume设备IRQ?一般而言,在系统suspend过程的后期,各个设备的IRQ(interruptrequestline)会被disable掉。具体的时间点是在各个设备的latesuspe
- 【OS】AUTOSAR架构下的Interrupt详解(下篇)
汽车电子嵌入式
AUTOSAR精进之路AUTOSAROSInterruptEnableInterruptSuspendISR
目录3.代码分析3.1中断配置代码3.2OS如何找到中断处理函数3.3Os_InitialEnableInterruptSources实现3.4Os_EnableInterruptSource3.5DisableAllInterrupts3.5.1Os_IntSuspendCat13.5.2Os_InterruptDisableAllEnter3.5.3Disable二类中断3.5.4Disabl
- Mac中 “XX”文件已损坏,无法打开 解决方案
恰在灯火阑珊处
Q&Amacos
前言Mac中打开软件出现“XX”文件已损坏,无法打开的提示怎么处理?操作总结1、查看当前Gatekeeper是否启用spctl--status2、完全关闭Gatekeeper(允许安装任何来源应用)sudospctl--master-disable3、打开“系统设置->“隐私与安全性”最下方选择“允许所有来源”至此,可以重新打开软件,基本已成功。4、恢复系统安全设置【成功之后收尾】sudospct
- google-web浏览器域名和公网ip下服务 无法访问局域网ip服务
风一样的男子&
tcp/ip前端网络
因为google的安全策略导致的防止非安全上下文向更多专用IP地址发出子资源请求说白了就是防止公网上的资源直接向局域网ip发起请求,火狐目前可以这么干如果谷歌也想解开这个限制,那么你需要简单配置一下:chrome://flags/#block-insecure-private-network-requests在谷歌浏览器里打开这个代码将Default改为Disabled然后Relaunch即可
- xLua热更新解决方案知识点汇总
窗外听轩雨
Lua热更新luaunityunity3d
XLua热更新解决方案知识点汇总文章目录XLua热更新解决方案知识点汇总前言热更新的本质C#CallLua相关知识点Lua解析器:LuaEnvC#获取Lua的基础类型C#获取Lua的全局函数functionC#获取Lua的表TableLuaCallC#相关知识点程序主入口Lua调用C#的类Lua调用C#枚举Lua调用C#的数组Lua调用C#的ListLua调用C#的DictionaryLua调用C
- 【农业模型】GPT地学领域应用、AquaCrop、R贝叶斯生态、Copula函数、DSSAT、APSIM、WOFOST、DNDC、CERRES、SWACRO、RZWQM、POTATO、SOLANUM
weixin_贾
遥感数据与作物模型地理遥感生态模型ChatGPT4/DeepSeekgptr语言无人机经验分享
农业模型依据研究对象分为农业生物模型、农业环境模型、农业技术模型、农业经济模型作物模型,即作物生长模拟模型(或称作物生长模型),是从系统科学的角度,基于作物生理过程机制,将气候、土壤、作物品种和管理措施等对作物生长的影响因素作为一个整体系统的数值模拟系统。能够以特定时间步长对作物在单点尺度上生长发育的生物学参数以及作物产量进行动态模拟,定量化研究环境因子以及田间管理措施对作物生长发育的影响。通用型
- QuACK:用纯 Python 把 H100 推到“光速”
吴脑的键客
人工智能python开发语言gpu算力
FlashAttention的共同作者TriDao与普林斯顿大学的两位博士生最近联合推出了一个名为QuACK的新内核库。这一创新的内核库引起了广泛关注,尤其是在高性能计算领域。QuACK的开发背景QuACK的开发完全基于Python和CuTe-DSL,令人瞩目的是,它不涉及任何CUDAC++代码。这一设计理念打破了传统的编程框架,使得开发者能够在更友好的环境中进行高效的GPU编程。性能优势在强大的
- 双击重复请求的方法
北北~Simple
vue2vue
1、限制点击次数2、vue中可以自定义一个属性指令preventReClick.js中定义:importVuefrom'vue'Vue.directive('preventReClick',{inserted:(el,binding)=>{el.addEventListener('click',()=>{if(!el.disabled){el.disabled=truesetTimeout(()=
- 【FR801xH】富芮坤FR801xH系统函数
沧海一笑-dj
物联网专栏FR801xH富芮坤系统函数富芮坤系统函数FreqchipBLESDK
00.目录文章目录00.目录01.FR801xH概述02.FR801xH功能框图03.Version相关函数3.1get_SDK_compile_date_time04.系统函数4.1system_power_off4.2system_sleep_enable4.3system_sleep_disable4.4system_get_curr_time05.程序示例06.附录01.FR801xH概述
- 12行脚本实现duckdb自动完成tpch测试
l1t
数据库编程语言软件工程数据库sqlgithub
核心思想:利用duckdbtpch插件内置的tpch_queries()表函数输出查询Sql语句到qs.txt,然后读入生成的qs.txt,将结果输出到res.txt,在控制台输出计时。autotpch.txt脚本如下:LOADtpch;PRAGMAdisable_progress_bar;CALLdbgen(sf=0.3);.outputqs.txt.modelist.headeroffsele
- docker启动报错
时时刻刻看着自己的心
docker容器运维
[root@96-8-0-231~]#systemctlstatusdocker●docker.service-DockerApplicationContainerEngineLoaded:loaded(/etc/systemd/system/docker.service;enabled;vendorpreset:disabled)Active:failed(Result:exit-code)si
- ffmpeg下编译tsan
泰勒朗斯
FFmpegffmpeg
如何在ffmpeg下编译tsan,如下配置:./configure\--prefix=/workspace/ffmpeg_gcu\--disable-stripping\--disable-optimizations\--disable-x86asm\--toolchain=gcc-tsan\--enable-pic\--enable-swscale\--enable-static\--enabl
- MySQL数据库主从复制
KellenKellenHao
数据库mysql
概述1、master开启二进制日志记录2、slave开启IO进程,从master中读取二进制日志并写入slave的中继日志3、slave开启SQL进程,从中继日志中读取二进制日志并进行重放4、最终,达到slave与master中数据一致的状态,我们称作为主从复制的过程。基础环境设置防火墙和上下文#主从[root@slave~]#systemctldisable--nowfirewalldRemov
- vue禁止页面中的鼠标右键操作
No labor _no gain
vue.jsjavascript前端
一、第一步二、第二步exportdefault{methods:{disableRightClick(event){event.preventDefault();//阻止默认右键菜单的显示}}};
- rook-ceph配置dashboard代理无法访问
在ceph-tools的pod中看看dashboard是否开启kubectl-nrook-cephexec-itrook-ceph-tools-7b75b967db-jn68d–bashcephmgrservices查看集群内地址使用curl测试能否访问cephmgrmoduledisabledashboard关闭cephmgrmoduleenabledashboard开启rook中关于ceph部
- java: JPS 增量注解处理被禁用
因我你好久不见
mavenintellij-idea
java:JPSincrementalannotationprocessingisdisabled.Compilationresultsonpartialrecompilatio2022.3.17号早上11点30分,突然出现这个问题,运行项目直接编译失败,出现oom。原因是项目文件过大,导致编译所需内存不够。调整为700,重新运行项目,一切ok。
- 配置uwsgi为系统服务遇到State ‘stop-sigterm‘ timed out解决方法
fangeqin
linux系统服务linuxuwsgisystemctl
[root@localhostlearning_log]#systemctlstartuwsgi启动服务[root@localhostlearning_log]#systemctlstatusuwsgi●uwsgi.service-TheuWSGIserverLoaded:loaded(/usr/lib/systemd/system/uwsgi.service;disabled;vendorpre
- 笔记: vs2022 编译lua应用程序
h799710
c++vsc++vs2022
注意:单纯笔记,略显粗糙,但绝对可以用;看不懂可以问我一、创建项目创建一个空项目二、设置属性:1。导入*.c文件到源文件【这里要注意:lua.c和luac.c需要分开编译,会得到两个不同的程序(不分开会报错,main()函数重复)】2。配置属性->C/C+±>预编译头->取消预编译3。配置属性->C/C+±>常规->包含附加目录:设置include目录【./h文件目录。别导入,没用。。】4。配置属
- openssh-server
EmoGP
Ubuntu服务器linux运维
默认地,Ubuntu桌面版不带SSH服务器1检查服务是否存在ls/usr/sbin/sshd2安装服务aptinstallopenssh-server3关闭防火墙ufwdisable4启动服务servicesshstart
- Hbase-表操作
红笺Code
Hbasehbase大数据数据分析非关系型数据库zookeeper
目录一、创建表:1.创建表时指定列族的属性2.创建表时不指定列族的属性多学一招:克隆表二、查看表信息三、查看表四、停用和启用表1.停用表2.启用表多学一招:停用或启用多个表五、判断表1.exists命令2.is_enabled命令3.is_disabled命令六、修改表1.修改表属性(1)添加属性(2)删除属性2.修改列族(1)修改列族属性(2)添加列族(3)删除列族七、删除表drop命令多学一招
- shopex48mysql索引优化
showker
mysql
altertablesdb_pluginsaddindexidx_type_identifier(plugin_type,plugin_ident);CREATEINDEXidx_disabled_varnameONsdb_magicvars(disabled,var_name);CREATEINDEXidx_goods_type_spec_typeidONsdb_goods_type_spec(
- windows下源码安装golang
616050468
golang安装golang环境windows
系统: 64位win7, 开发环境:sublime text 2, go版本: 1.4.1
1. 安装前准备(gcc, gdb, git)
golang在64位系
- redis批量删除带空格的key
bylijinnan
redis
redis批量删除的通常做法:
redis-cli keys "blacklist*" | xargs redis-cli del
上面的命令在key的前后没有空格时是可以的,但有空格就不行了:
$redis-cli keys "blacklist*"
1) "blacklist:12:
[email protected]
- oracle正则表达式的用法
0624chenhong
oracle正则表达式
方括号表达示
方括号表达式
描述
[[:alnum:]]
字母和数字混合的字符
[[:alpha:]]
字母字符
[[:cntrl:]]
控制字符
[[:digit:]]
数字字符
[[:graph:]]
图像字符
[[:lower:]]
小写字母字符
[[:print:]]
打印字符
[[:punct:]]
标点符号字符
[[:space:]]
- 2048源码(核心算法有,缺少几个anctionbar,以后补上)
不懂事的小屁孩
2048
2048游戏基本上有四部分组成,
1:主activity,包含游戏块的16个方格,上面统计分数的模块
2:底下的gridview,监听上下左右的滑动,进行事件处理,
3:每一个卡片,里面的内容很简单,只有一个text,记录显示的数字
4:Actionbar,是游戏用重新开始,设置等功能(这个在底下可以下载的代码里面还没有实现)
写代码的流程
1:设计游戏的布局,基本是两块,上面是分
- jquery内部链式调用机理
换个号韩国红果果
JavaScriptjquery
只需要在调用该对象合适(比如下列的setStyles)的方法后让该方法返回该对象(通过this 因为一旦一个函数称为一个对象方法的话那么在这个方法内部this(结合下面的setStyles)指向这个对象)
function create(type){
var element=document.createElement(type);
//this=element;
- 你订酒店时的每一次点击 背后都是NoSQL和云计算
蓝儿唯美
NoSQL
全球最大的在线旅游公司Expedia旗下的酒店预订公司,它运营着89个网站,跨越68个国家,三年前开始实验公有云,以求让客户在预订网站上查询假期酒店时得到更快的信息获取体验。
云端本身是用于驱动网站的部分小功能的,如搜索框的自动推荐功能,还能保证处理Hotels.com服务的季节性需求高峰整体储能。
Hotels.com的首席技术官Thierry Bedos上个月在伦敦参加“2015 Clou
- java笔记1
a-john
java
1,面向对象程序设计(Object-oriented Propramming,OOP):java就是一种面向对象程序设计。
2,对象:我们将问题空间中的元素及其在解空间中的表示称为“对象”。简单来说,对象是某个类型的实例。比如狗是一个类型,哈士奇可以是狗的一个实例,也就是对象。
3,面向对象程序设计方式的特性:
3.1 万物皆为对象。
- C语言 sizeof和strlen之间的那些事 C/C++软件开发求职面试题 必备考点(一)
aijuans
C/C++求职面试必备考点
找工作在即,以后决定每天至少写一个知识点,主要是记录,逼迫自己动手、总结加深印象。当然如果能有一言半语让他人收益,后学幸运之至也。如有错误,还希望大家帮忙指出来。感激不尽。
后学保证每个写出来的结果都是自己在电脑上亲自跑过的,咱人笨,以前学的也半吊子。很多时候只能靠运行出来的结果再反过来
- 程序员写代码时就不要管需求了吗?
asia007
程序员不能一味跟需求走
编程也有2年了,刚开始不懂的什么都跟需求走,需求是怎样就用代码实现就行,也不管这个需求是否合理,是否为较好的用户体验。当然刚开始编程都会这样,但是如果有了2年以上的工作经验的程序员只知道一味写代码,而不在写的过程中思考一下这个需求是否合理,那么,我想这个程序员就只能一辈写敲敲代码了。
我的技术不是很好,但是就不代
- Activity的四种启动模式
百合不是茶
android栈模式启动Activity的标准模式启动栈顶模式启动单例模式启动
android界面的操作就是很多个activity之间的切换,启动模式决定启动的activity的生命周期 ;
启动模式xml中配置
<activity android:name=".MainActivity" android:launchMode="standard&quo
- Spring中@Autowired标签与@Resource标签的区别
bijian1013
javaspring@Resource@Autowired@Qualifier
Spring不但支持自己定义的@Autowired注解,还支持由JSR-250规范定义的几个注解,如:@Resource、 @PostConstruct及@PreDestroy。
1. @Autowired @Autowired是Spring 提供的,需导入 Package:org.springframewo
- Changes Between SOAP 1.1 and SOAP 1.2
sunjing
ChangesEnableSOAP 1.1SOAP 1.2
JAX-WS
SOAP Version 1.2 Part 0: Primer (Second Edition)
SOAP Version 1.2 Part 1: Messaging Framework (Second Edition)
SOAP Version 1.2 Part 2: Adjuncts (Second Edition)
Which style of WSDL
- 【Hadoop二】Hadoop常用命令
bit1129
hadoop
以Hadoop运行Hadoop自带的wordcount为例,
hadoop脚本位于/home/hadoop/hadoop-2.5.2/bin/hadoop,需要说明的是,这些命令的使用必须在Hadoop已经运行的情况下才能执行
Hadoop HDFS相关命令
hadoop fs -ls
列出HDFS文件系统的第一级文件和第一级
- java异常处理(初级)
白糖_
javaDAOspring虚拟机Ajax
从学习到现在从事java开发一年多了,个人觉得对java只了解皮毛,很多东西都是用到再去慢慢学习,编程真的是一项艺术,要完成一段好的代码,需要懂得很多。
最近项目经理让我负责一个组件开发,框架都由自己搭建,最让我头疼的是异常处理,我看了一些网上的源码,发现他们对异常的处理不是很重视,研究了很久都没有找到很好的解决方案。后来有幸看到一个200W美元的项目部分源码,通过他们对异常处理的解决方案,我终
- 记录整理-工作问题
braveCS
工作
1)那位同学还是CSV文件默认Excel打开看不到全部结果。以为是没写进去。同学甲说文件应该不分大小。后来log一下原来是有写进去。只是Excel有行数限制。那位同学进步好快啊。
2)今天同学说写文件的时候提示jvm的内存溢出。我马上反应说那就改一下jvm的内存大小。同学说改用分批处理了。果然想问题还是有局限性。改jvm内存大小只能暂时地解决问题,以后要是写更大的文件还是得改内存。想问题要长远啊
- org.apache.tools.zip实现文件的压缩和解压,支持中文
bylijinnan
apache
刚开始用java.util.Zip,发现不支持中文(网上有修改的方法,但比较麻烦)
后改用org.apache.tools.zip
org.apache.tools.zip的使用网上有更简单的例子
下面的程序根据实际需求,实现了压缩指定目录下指定文件的方法
import java.io.BufferedReader;
import java.io.BufferedWrit
- 读书笔记-4
chengxuyuancsdn
读书笔记
1、JSTL 核心标签库标签
2、避免SQL注入
3、字符串逆转方法
4、字符串比较compareTo
5、字符串替换replace
6、分拆字符串
1、JSTL 核心标签库标签共有13个,
学习资料:http://www.cnblogs.com/lihuiyy/archive/2012/02/24/2366806.html
功能上分为4类:
(1)表达式控制标签:out
- [物理与电子]半导体教材的一个小问题
comsci
问题
各种模拟电子和数字电子教材中都有这个词汇-空穴
书中对这个词汇的解释是; 当电子脱离共价键的束缚成为自由电子之后,共价键中就留下一个空位,这个空位叫做空穴
我现在回过头翻大学时候的教材,觉得这个
- Flashback Database --闪回数据库
daizj
oracle闪回数据库
Flashback 技术是以Undo segment中的内容为基础的, 因此受限于UNDO_RETENTON参数。要使用flashback 的特性,必须启用自动撤销管理表空间。
在Oracle 10g中, Flash back家族分为以下成员: Flashback Database, Flashback Drop,Flashback Query(分Flashback Query,Flashbac
- 简单排序:插入排序
dieslrae
插入排序
public void insertSort(int[] array){
int temp;
for(int i=1;i<array.length;i++){
temp = array[i];
for(int k=i-1;k>=0;k--)
- C语言学习六指针小示例、一维数组名含义,定义一个函数输出数组的内容
dcj3sjt126com
c
# include <stdio.h>
int main(void)
{
int * p; //等价于 int *p 也等价于 int* p;
int i = 5;
char ch = 'A';
//p = 5; //error
//p = &ch; //error
//p = ch; //error
p = &i; //
- centos下php redis扩展的安装配置3种方法
dcj3sjt126com
redis
方法一
1.下载php redis扩展包 代码如下 复制代码
#wget http://redis.googlecode.com/files/redis-2.4.4.tar.gz
2 tar -zxvf 解压压缩包,cd /扩展包 (进入扩展包然后 运行phpize 一下是我环境中phpize的目录,/usr/local/php/bin/phpize (一定要
- 线程池(Executors)
shuizhaosi888
线程池
在java类库中,任务执行的主要抽象不是Thread,而是Executor,将任务的提交过程和执行过程解耦
public interface Executor {
void execute(Runnable command);
}
public class RunMain implements Executor{
@Override
pub
- openstack 快速安装笔记
haoningabc
openstack
前提是要配置好yum源
版本icehouse,操作系统redhat6.5
最简化安装,不要cinder和swift
三个节点
172 control节点keystone glance horizon
173 compute节点nova
173 network节点neutron
control
/etc/sysctl.conf
net.ipv4.ip_forward =
- 从c面向对象的实现理解c++的对象(二)
jimmee
C++面向对象虚函数
1. 类就可以看作一个struct,类的方法,可以理解为通过函数指针的方式实现的,类对象分配内存时,只分配成员变量的,函数指针并不需要分配额外的内存保存地址。
2. c++中类的构造函数,就是进行内存分配(malloc),调用构造函数
3. c++中类的析构函数,就时回收内存(free)
4. c++是基于栈和全局数据分配内存的,如果是一个方法内创建的对象,就直接在栈上分配内存了。
专门在
- 如何让那个一个div可以拖动
lingfeng520240
html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml
- 第10章 高级事件(中)
onestopweb
事件
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- 计算两个经纬度之间的距离
roadrunners
计算纬度LBS经度距离
要解决这个问题的时候,到网上查了很多方案,最后计算出来的都与百度计算出来的有出入。下面这个公式计算出来的距离和百度计算出来的距离是一致的。
/**
*
* @param longitudeA
* 经度A点
* @param latitudeA
* 纬度A点
* @param longitudeB
*
- 最具争议的10个Java话题
tomcat_oracle
java
1、Java8已经到来。什么!? Java8 支持lambda。哇哦,RIP Scala! 随着Java8 的发布,出现很多关于新发布的Java8是否有潜力干掉Scala的争论,最终的结论是远远没有那么简单。Java8可能已经在Scala的lambda的包围中突围,但Java并非是函数式编程王位的真正觊觎者。
2、Java 9 即将到来
Oracle早在8月份就发布
- zoj 3826 Hierarchical Notation(模拟)
阿尔萨斯
rar
题目链接:zoj 3826 Hierarchical Notation
题目大意:给定一些结构体,结构体有value值和key值,Q次询问,输出每个key值对应的value值。
解题思路:思路很简单,写个类词法的递归函数,每次将key值映射成一个hash值,用map映射每个key的value起始终止位置,预处理完了查询就很简单了。 这题是最后10分钟出的,因为没有考虑value为{}的情