- vue el-date-picker 直接赋值时控件失效
梓暮
ITvue.js前端elementui
项目场景:前端vueel-date-picker控件无故失效问题描述本人是主打后端,新进的公司要求前后端全干,然后又因为前端做得少,所以经常碰到一些奇怪的问题,比如以下操作,是给vue前端el-date-picker这个时间控件赋值,但是发现,数据是赋值上去了,但是控件失效了,怎么点都没用if(resData.batchEntity.manage_scene_start_time!=null&&r
- elementUI轮播图组件el-carousel适配移动端大小(图片加载好后根据大小适配)
printf_824
elementuijavascriptvue.js
获取img实例,动态设置el-carousel高度import{ref,onMounted,onBeforeUnmount,nextTick}from'vue';constbanners=ref(['/images/banner/banner1.png','/images/banner/banner1.png','/images/banner/banner1.png','/images/banne
- Python各版本发布时间和重要特性
mosquito_lover1
python
1.Python1.x:-Python1.0(1994年1月):第一个正式版本。-Python1.6(2000年9月):最后一个1.x版本。2.Python2.x:-Python2.0(2000年10月):引入了列表推导、垃圾回收等特性。-Python2.7(2010年7月):Python2.x系列的最后一个版本,长期支持至2020年1月1日。3.Python3.x:-Python3.0(2008
- memstr 从内存找字符串
#includechar*memstr(char*full_data,intfull_data_len,char*substr){if(full_data==NULL||full_data_len=sublen);if(memcmp(cur,substr,sublen)==0){//foundreturncur;}}cur++;}returnNULL;}intmain(){chara[26]={'
- Docker基本概念——AI教你学Docker
LuckyLay
docker容器运维
1.1Docker概念详解1.Docker是什么?Docker是一个开源的应用容器引擎,它让开发者可以将应用及其依赖打包到一个可移植的容器(Container)中,并在任何支持Docker的Linux、Windows或macOS系统上运行。这样做极大地提升了应用的可移植性、一致性和部署效率。2.核心概念2.1镜像(Image)镜像是一个只读的模板,包含了运行容器所需的程序、库、环境变量和配置文件等
- 基于OpenCV-python的人脸识别系统
transuperb
完整代码opencvpython人工智能
importsysimportosimporttkinterastkfromtkinter.ttkimportStyleimportnumpyasnpimportcv2fromPILimportImageTk,ImageDraw,ImageFontfrompanel.models.tabulatorimportthemefromModelimport*fromtkinterimportttk,fi
- Python视觉实战项目31讲源码地址
机械小蛟龙
笔记opencvpython深度学习
Python视觉实战项目31讲源码地址来源:公众号小白学视觉2月1日使用OpenCV实现猜词游戏https://github.com/spmallick/learnopencv/tree/master/Hangman使用OpenCV实现图像修复https://github.com/spmallick/learnopencv/tree/master/Image-Inpainting自适应显着性的图像
- MySQL:索引失效场景及解决方案
目录一、前言二、索引失效场景及解决方案1.在索引列上使用函数或表达式2.使用类型隐式转换3.使用不等于或不包含操作符4.使用OR操作符连接不同的索引列5.使用LIKE操作符且以通配符开头6.对索引列进行运算7.查询条件中的字段顺序与复合索引的顺序不一致8.在WHERE子句中使用ISNULL或ISNOTNULL9.查询的数据占表中数据的比例较大10.索引字段的数据重复度过高11.使用不等值范围查询1
- 洛谷P3871 [TJOI2010] 中位数
xwztdas
算法数据结构FHQTreap
洛谷P3871[TJOI2010]中位数洛谷题目传送门题目描述给定一个由NNN个元素组成的整数序列,现在有两种操作:1adda\texttt{1add}\textit{a}1adda:在该序列的最后添加一个整数aaa,组成长度为N+1N+1N+1的整数序列。2mid\texttt{2mid}2mid:输出当前序列的中位数。中位数是指将一个序列按照从小到大排序后处在中间位置的数。(若序列长度为偶数,
- Java开发者必备:5个提升编码效率的实用技巧
Java鼠鼠吖
开发语言java
导语在日常开发中,巧妙运用语言特性可以大幅提升代码质量和开发效率。本文分享5个经过验证的Java实用技巧,涵盖资源管理、集合操作和API设计等场景,附可直接复用的代码模板,帮助您写出更优雅健壮的代码。免费获取Java学习资料一、自动化资源管理技巧场景:传统try-finally代码冗长且易遗漏关闭操作改进方案://传统写法(易出错)FileInputStreamfis=null;try{fis=n
- [SQLSERVER][SQL]监控SQlserver存储过程
awonw
sqlserversqlserversql数据库
USE[master]GO/******Object:StoredProcedure[dbo].[sp_who_run_plus]ScriptDate:2021-09-1016:51:26******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEPROC[dbo].[sp_who_run_plus]ASBEGINSELECTDB_NAME(er.[
- 【uniapp】给图片添加水印
改bug的101天
uniappuni-appvue.js前端
1、创建画布varcontext=uni.createCanvasContext('Canvas')2、获取本地图片uni.chooseImage({count:1,success:(res)=>{varfile=res.tempFilePaths[0];consttempFiles=res.tempFiles[0]})})3、获取图片信息----添加水印uni.getImageInfo({src
- C++补充知识+专题思维导图
Cyrus_柯
C++c++算法开发语言面向对象
补充知识:1.nullptrNULL在源码中就是一个0,因此可能会出现一些二义性的问题。#includeusingnamespacestd;voidfunc(inta){coutusingnamespacestd;voidfunc(inta){coutusingnamespacestd;intmain(){autoa=10;//a的类型被推导为整型(int)coutusingnamespacest
- Fast Image Deconvolution using Hyper-Laplacian Priors论文阅读
青铜锁00
#退化论文阅读论文阅读图像处理
FastImageDeconvolutionusingHyper-LaplacianPriors1.论文的研究目标与实际意义2.论文的创新方法2.1核心框架:交替最小化(AlternatingMinimization)2.2x子问题:频域FFT加速2.3w子问题:高效求解的核心创新2.3.1问题形式2.3.2查找表法(LUT)2.3.3解析解法(特定α\alphaα)2.3.4通用α\alphaα
- Kotlin作用域函数:掌握apply/let/run/with/also精髓
每次的天空
android学习javakotlin
一、作用域函数详解1.apply:对调用对象进行配置或操作,并返回该对象本身。接收者引用:this(可省略,直接调用接收者成员)返回值:接收者对象本身(T)核心用途:对对象进行初始化或配置,返回配置后的对象null安全:不支持(接收者需非null)作用域:接收者作用域(this指向接收者)openvalsessionHandler:Handlerbylazy{Handler(HandlerThre
- 代码随想录day15 二叉树3
m0_74187270
算法数据结构
题目:110.平衡二叉树(优先掌握递归)257.二叉树的所有路径(优先掌握递归)404.左叶子之和(优先掌握递归)222.完全二叉树的节点个数(优先掌握递归)需要重做:全部110.平衡二叉树(优先掌握递归)思路:getHeight函数,如果不平衡,返回-1,否则返回当前左右子树最大值+1;注意:此题需if(cur==null)就返回,因为不一定是叶子!可能1的左子树不为空,右子树为空,这样就遍历不
- 代码随想录day15 Java版 二叉树部分
洒水水儿
代码随想录打卡算法leetcode数据结构
222.完全二叉树的节点个数自己做没想出来完全二叉树这个条件怎么利用,直接递归遍历了classSolution{publicintcountNodes(TreeNoderoot){if(root==null)return0;returncountNodes(root.left)+countNodes(root.right)+1;}}但看了题解,如果判断子树为满二叉树,可以直接套公式关键在于怎么判断
- 代码随想录day15二叉树3
皮蛋瘦肉粥_121
二叉树
文章目录222.完全二叉树的节点个数110.平衡二叉树257.二叉树的所有路径404.左叶子之和222.完全二叉树的节点个数题目链接文章讲解/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nul
- php内置aes加密,PHP进行AES加密
一只御姐姐
php内置aes加密
一、AES简介高级加密标准(AES,AdvancedEncryptionStandard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:注:此处暂时不详细介绍AES加密的内容,想进一步了解的读者可以去查找相关资料。二、使用PHP进行AES加密:classAes{private$key=null;/****@para
- 双重检查锁定及单例模式
@逾越
笔记面试单例模式java开发语言
publicclassSingleton{privatestaticSingletoninstance;privateSingleton(){}publicstaticsynchronizedSingletongetInstance(){if(instance==null){instance=newSingleton();}returninstance;}}由于对getInstance()方法做了
- 单例模式-双重检查锁定
Java牛码
Java基础单例模式java数据结构
publicclassMQThreadextendsThread{//私有静态实例,保证全局唯一privatestaticvolatileMQThreadinstance;//获取单例实例的静态方法publicstaticMQThreadgetInstance(){if(instance==null){synchronized(MQThread.class){if(instance==null){
- [arXiv 2024] Medical SAM 2: Segment Medical Images as Video via Segment Anything Model 2
alfred_torres
医学图像分割SAM2
arXiv2024|MedicalSAM2:通用2D/3D医学分割新范式,“把医学图像当视频分割”论文信息标题:MedicalSAM2:SegmentMedicalImagesasVideoviaSegmentAnythingModel2作者:JiayuanZhu,AbdullahHamdi,YunliQi,YuemingJin,JundeWu单位:牛津大学、新加坡国立大学项目主页:https:/
- [CVPR 2025] 高效无监督Prompt与偏好对齐驱动的半监督医学分割
alfred_torres
prompt医学图像分割
CVPR2025|优化SAM:高效无监督Prompt与偏好对齐驱动的半监督医学分割论文信息标题:EnhancingSAMwithEfficientPromptingandPreferenceOptimizationforSemi-supervisedMedicalImageSegmentation作者:AishikKonwer,ZhijianYang,ErhanBas,CaoXiao,Pratee
- 图14CLIP 模型在 “分布偏移场景” 下的鲁棒性优化策略|学习笔记
学渣67656
笔记人工智能
一、先明确:左图的核心对比维度左图的横轴是“模型在标准分布上的准确率”,纵轴是“模型在分布偏移数据集上的准确率”,本质是对比“不同模型/策略在“标准性能”与“鲁棒性”之间的权衡,图中每条曲线代表一类模型/策略的“标准性能-鲁棒性”趋势,而红色箭头标注的“AdapttoImageNet”是一种“干预策略”,作用于CLIP模型后,使其性能点落在对应曲线上。二、左图中6条曲线的含义(按图例颜色+模型类型
- 前端ul-image的src接收base64快捷写法
peachSoda7
前端
前端ul-image的src接收base64快捷写法data:image/png;base64,你的base64数据注意如果是jpg就改成jpg,中间的逗号格式要注意,/注意不要反了假设后端返回的detail中的url已经是base64格式,下面是示例
- No module named ‘skimage‘的问题及解决
蓝天居士
AIpycharm
项目中执行importtorchxrayvisionasxrv时出现以下错误:Traceback(mostrecentcalllast):File"D:/研究生/毕业设计/COVID19/COVID19_CT/conduct.py",line14,inimporttorchxrayvisionasxrvFile"D:\研究生\毕业设计\COVID19\COVID19_CT\torchxrayvis
- java鱼眼相机标定_鱼眼相机标定以及OpenCV实现
元宿six
java鱼眼相机标定
开始标定doublefisheye::calibrate(InputArrayOfArraysobjectPoints,InputArrayOfArraysimagePoints,constSize&image_size,InputOutputArrayK,InputOutputArrayD,OutputArrayOfArraysrvecs,OutputArrayOfArraystvecs,int
- MySQL派生表查询大数据量无结果问题分析与解决
GreatSQL社区
mysql数据库
MySQL派生表查询大数据量无结果问题分析与解决一、问题发现在客户现场的一次问题报告中发现某个带有派生表进行查询的时候,数据量少的时候有结果,但是数据量大的时候返回无记录。看下面例子:1、准备表CREATETABLE`cmdb_item`(`cm_item_id`varchar(350)NOTNULL,`cm_model_id`varchar(350)NOTNULL,PRIMARYKEY(`cm_
- Halcon 检测物体定位点
吃个糖糖
Halcon人工智能计算机视觉深度学习
文章目录get_domain返回所有输入图像的定义域作为一个区域add_channels给区域增加灰度值find_shape_model发现匹配模板find_shape_models发现最佳模板示例get_domain返回所有输入图像的定义域作为一个区域Halcon中的区域get_domain(Image:Domain::)Image:图像(input_object):类型可以是(多通道-)图像数
- Halcon中如何对特定目标进行定位查找
极客晨风
#Halcon例程项目讲解计算机视觉人工智能图像处理Halconc++
一、项目代码下载项目的完整代码可以通过以下链接进行下载:通过网盘分享的文件:垫片查找.7z链接:https://pan.baidu.com/s/1cexsR99mMWcC2v0k0MJ5LQ?pwd=jkcf提取码:jkcf二、算法流程图像预处理:首先,通过read_image函数读取图像,并利用fast_threshold函数进行图像的阈值化处理。阈值化后的图像会提取出强度值在特定范围内的区域,
- 插入表主键冲突做更新
a-john
有以下场景:
用户下了一个订单,订单内的内容较多,且来自多表,首次下单的时候,内容可能会不全(部分内容不是必须,出现有些表根本就没有没有该订单的值)。在以后更改订单时,有些内容会更改,有些内容会新增。
问题:
如果在sql语句中执行update操作,在没有数据的表中会出错。如果在逻辑代码中先做查询,查询结果有做更新,没有做插入,这样会将代码复杂化。
解决:
mysql中提供了一个sql语
- Android xml资源文件中@、@android:type、@*、?、@+含义和区别
Cb123456
@+@?@*
一.@代表引用资源
1.引用自定义资源。格式:@[package:]type/name
android:text="@string/hello"
2.引用系统资源。格式:@android:type/name
android:textColor="@android:color/opaque_red"
- 数据结构的基本介绍
天子之骄
数据结构散列表树、图线性结构价格标签
数据结构的基本介绍
数据结构就是数据的组织形式,用一种提前设计好的框架去存取数据,以便更方便,高效的对数据进行增删查改。正确选择合适的数据结构,对软件程序的高效执行的影响作用不亚于算法的设计。此外,在计算机系统中数据结构的作用也是非同小可。例如常常在编程语言中听到的栈,堆等,就是经典的数据结构。
经典的数据结构大致如下:
一:线性数据结构
(1):列表
a
- 通过二维码开放平台的API快速生成二维码
一炮送你回车库
api
现在很多网站都有通过扫二维码用手机连接的功能,联图网(http://www.liantu.com/pingtai/)的二维码开放平台开放了一个生成二维码图片的Api,挺方便使用的。闲着无聊,写了个前台快速生成二维码的方法。
html代码如下:(二维码将生成在这div下)
? 1
&nbs
- ImageIO读取一张图片改变大小
3213213333332132
javaIOimageBufferedImage
package com.demo;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
/**
* @Description 读取一张图片改变大小
* @author FuJianyon
- myeclipse集成svn(一针见血)
7454103
eclipseSVNMyEclipse
&n
- 装箱与拆箱----autoboxing和unboxing
darkranger
J2SE
4.2 自动装箱和拆箱
基本数据(Primitive)类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。虽然为您打包基本数据类型提供了方便,但提供方便的同时表示隐藏了细节,建议在能够区分基本数据类型与对象的差别时再使用。
4.2.1 autoboxing和unboxing
在Java中,所有要处理的东西几乎都是对象(Object)
- ajax传统的方式制作ajax
aijuans
Ajax
//这是前台的代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+
- 只用jre的eclipse是怎么编译java源文件的?
avords
javaeclipsejdktomcat
eclipse只需要jre就可以运行开发java程序了,也能自动 编译java源代码,但是jre不是java的运行环境么,难道jre中也带有编译工具? 还是eclipse自己实现的?谁能给解释一下呢问题补充:假设系统中没有安装jdk or jre,只在eclipse的目录中有一个jre,那么eclipse会采用该jre,问题是eclipse照样可以编译java源文件,为什么呢?
&nb
- 前端模块化
bee1314
模块化
背景: 前端JavaScript模块化,其实已经不是什么新鲜事了。但是很多的项目还没有真正的使用起来,还处于刀耕火种的野蛮生长阶段。 JavaScript一直缺乏有效的包管理机制,造成了大量的全局变量,大量的方法冲突。我们多么渴望有天能像Java(import),Python (import),Ruby(require)那样写代码。在没有包管理机制的年代,我们是怎么避免所
- 处理百万级以上的数据处理
bijian1013
oraclesql数据库大数据查询
一.处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 o
- mac 卸载 java 1.7 或更高版本
征客丶
javaOS
卸载 java 1.7 或更高
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
成功执行此命令后,还可以执行 java 与 javac 命令
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
成功执行此命令后,还可以执行 java
- 【Spark六十一】Spark Streaming结合Flume、Kafka进行日志分析
bit1129
Stream
第一步,Flume和Kakfa对接,Flume抓取日志,写到Kafka中
第二部,Spark Streaming读取Kafka中的数据,进行实时分析
本文首先使用Kakfa自带的消息处理(脚本)来获取消息,走通Flume和Kafka的对接 1. Flume配置
1. 下载Flume和Kafka集成的插件,下载地址:https://github.com/beyondj2ee/f
- Erlang vs TNSDL
bookjovi
erlang
TNSDL是Nokia内部用于开发电信交换软件的私有语言,是在SDL语言的基础上加以修改而成,TNSDL需翻译成C语言得以编译执行,TNSDL语言中实现了异步并行的特点,当然要完整实现异步并行还需要运行时动态库的支持,异步并行类似于Erlang的process(轻量级进程),TNSDL中则称之为hand,Erlang是基于vm(beam)开发,
- 非常希望有一个预防疲劳的java软件, 预防过劳死和眼睛疲劳,大家一起努力搞一个
ljy325
企业应用
非常希望有一个预防疲劳的java软件,我看新闻和网站,国防科技大学的科学家累死了,太疲劳,老是加班,不休息,经常吃药,吃药根本就没用,根本原因是疲劳过度。我以前做java,那会公司垃圾,老想赶快学习到东西跳槽离开,搞得超负荷,不明理。深圳做软件开发经常累死人,总有不明理的人,有个软件提醒限制很好,可以挽救很多人的生命。
相关新闻:
(1)IT行业成五大疾病重灾区:过劳死平均37.9岁
- 读《研磨设计模式》-代码笔记-原型模式
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/**
* Effective Java 建议使用copy constructor or copy factory来代替clone()方法:
* 1.public Product copy(Product p){}
* 2.publi
- 配置管理---svn工具之权限配置
chenyu19891124
SVN
今天花了大半天的功夫,终于弄懂svn权限配置。下面是今天收获的战绩。
安装完svn后就是在svn中建立版本库,比如我本地的是版本库路径是C:\Repositories\pepos。pepos是我的版本库。在pepos的目录结构
pepos
component
webapps
在conf里面的auth里赋予的权限配置为
[groups]
- 浅谈程序员的数学修养
comsci
设计模式编程算法面试招聘
浅谈程序员的数学修养
- 批量执行 bulk collect与forall用法
daizj
oraclesqlbulk collectforall
BULK COLLECT 子句会批量检索结果,即一次性将结果集绑定到一个集合变量中,并从SQL引擎发送到PL/SQL引擎。通常可以在SELECT INTO、
FETCH INTO以及RETURNING INTO子句中使用BULK COLLECT。本文将逐一描述BULK COLLECT在这几种情形下的用法。
有关FORALL语句的用法请参考:批量SQL之 F
- Linux下使用rsync最快速删除海量文件的方法
dongwei_6688
OS
1、先安装rsync:yum install rsync
2、建立一个空的文件夹:mkdir /tmp/test
3、用rsync删除目标目录:rsync --delete-before -a -H -v --progress --stats /tmp/test/ log/这样我们要删除的log目录就会被清空了,删除的速度会非常快。rsync实际上用的是替换原理,处理数十万个文件也是秒删。
- Yii CModel中rules验证规格
dcj3sjt126com
rulesyiivalidate
Yii cValidator主要用法分析:
yii验证rulesit 分类: Yii yii的rules验证 cValidator主要属性 attributes ,builtInValidators,enableClientValidation,message,on,safe,skipOnError
 
- 基于vagrant的redis主从实验
dcj3sjt126com
vagrant
平台: Mac
工具: Vagrant
系统: Centos6.5
实验目的: Redis主从
实现思路
制作一个基于sentos6.5, 已经安装好reids的box, 添加一个脚本配置从机, 然后作为后面主机从机的基础box
制作sentos6.5+redis的box
mkdir vagrant_redis
cd vagrant_
- Memcached(二)、Centos安装Memcached服务器
frank1234
centosmemcached
一、安装gcc
rpm和yum安装memcached服务器连接没有找到,所以我使用的是make的方式安装,由于make依赖于gcc,所以要先安装gcc
开始安装,命令如下,[color=red][b]顺序一定不能出错[/b][/color]:
建议可以先切换到root用户,不然可能会遇到权限问题:su root 输入密码......
rpm -ivh kernel-head
- Remove Duplicates from Sorted List
hcx2013
remove
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,Given 1->1->2, return 1->2.Given 1->1->2->3->3, return&
- Spring4新特性——JSR310日期时间API的支持
jinnianshilongnian
spring4
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
- 浅谈enum与单例设计模式
247687009
java单例
在JDK1.5之前的单例实现方式有两种(懒汉式和饿汉式并无设计上的区别故看做一种),两者同是私有构
造器,导出静态成员变量,以便调用者访问。
第一种
package singleton;
public class Singleton {
//导出全局成员
public final static Singleton INSTANCE = new S
- 使用switch条件语句需要注意的几点
openwrt
cbreakswitch
1. 当满足条件的case中没有break,程序将依次执行其后的每种条件(包括default)直到遇到break跳出
int main()
{
int n = 1;
switch(n) {
case 1:
printf("--1--\n");
default:
printf("defa
- 配置Spring Mybatis JUnit测试环境的应用上下文
schnell18
springmybatisJUnit
Spring-test模块中的应用上下文和web及spring boot的有很大差异。主要试下来差异有:
单元测试的app context不支持从外部properties文件注入属性
@Value注解不能解析带通配符的路径字符串
解决第一个问题可以配置一个PropertyPlaceholderConfigurer的bean。
第二个问题的具体实例是:
 
- Java 定时任务总结一
tuoni
javaspringtimerquartztimertask
Java定时任务总结 一.从技术上分类大概分为以下三种方式: 1.Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务; 说明: java.util.Timer定时器,实际上是个线程,定时执行TimerTask类 &
- 一种防止用户生成内容站点出现商业广告以及非法有害等垃圾信息的方法
yangshangchuan
rank相似度计算文本相似度词袋模型余弦相似度
本文描述了一种在ITEYE博客频道上面出现的新型的商业广告形式及其应对方法,对于其他的用户生成内容站点类型也具有同样的适用性。
最近在ITEYE博客频道上面出现了一种新型的商业广告形式,方法如下:
1、注册多个账号(一般10个以上)。
2、从多个账号中选择一个账号,发表1-2篇博文