- 版本控制的核心:Git中的哈希与默克尔树解析
liuwill
开发技术git源代码管理
Git是最常用的代码版本控制工具。它帮助我们跟踪代码的更改、管理代码版本,同时保证代码库的完整性和安全性。我们知道Git中有一些基本的操作,比如commit、merge、rebase等,但这些操作的底层机制是如何实现的呢?哈希函数和默克尔树扮演了非常重要的角色。本文将探讨Git中哈希和默克尔树的机制及其实际应用。什么是哈希函数?哈希函数是一种将输入数据转换为固定长度的输出(通常为字符串)的算法。G
- **项目推荐:探索全球化的Web应用 —— Apache Sling I18N**
解然嫚Keegan
项目推荐:探索全球化的Web应用——ApacheSlingI18Nsling-org-apache-sling-i18nApacheSlingI18NSupport项目地址:https://gitcode.com/gh_mirrors/sl/sling-org-apache-sling-i18n在全球化日益加深的今天,软件和网络服务的国际化与本地化(I18N)变得至关重要。ApacheSling,
- 2020 年 Github 上最牛的 Java 进阶教程及 Java 实战项目都在这里了!
C陈三岁
javajavagithub开发语言面试架构
写在前面大家都知道Github是一个程序员福地,这里有各种厉害的开源框架、软件或者教程。这些东西对于我们学习和进步有着莫大的进步,所以我有了这个将Github上非常棒的Java开源项目整理下来的想法。觉得不错的话,欢迎小伙伴们去star一波。很多小伙伴都不知道学习什么开源项目,这篇文章定能为你解决疑惑。不论你想要看Java教程方向的开源项目、Java实战项目、SpringBoot教程还是说想要看微
- MoveNet: PyTorch实现的轻量级人体姿态估计框架
侯深业Dorian
MoveNet:PyTorch实现的轻量级人体姿态估计框架movenet.pytorch项目地址:https://gitcode.com/gh_mirrors/mo/movenet.pytorchMoveNet是一个基于PyTorch的人体姿态估计算法实现,由开发者fire717贡献至GitCode平台。该项目旨在提供一个高效、易用的解决方案,用于实时处理视频或图像中的人体动作识别。通过其强大的性
- MoveNet PyTorch 项目教程
邢琛高
MoveNetPyTorch项目教程movenet.pytorch项目地址:https://gitcode.com/gh_mirrors/mo/movenet.pytorch项目介绍MoveNet是一个超快速且精确的模型,用于检测人体的17个关键点。本项目是GoogleMoveNet的PyTorch实现,包含了训练代码和预训练模型。Google最近发布了预训练模型(tfjs或tflite),但这些
- 推荐一个跨平台的Unity插件——UnityPython
夏磊讳
推荐一个跨平台的Unity插件——UnityPythonunity-pythonPythonpluginforUnity3D.项目地址:https://gitcode.com/gh_mirrors/un/unity-python在游戏开发领域,尤其是Unity引擎的爱好者中,能够灵活运用多种编程语言进行创作无疑是提高效率和创新力的一大助力。今天要向大家介绍的UnityPython,正是这样一个能让
- 微信防撤回插件 - WeChatIntercept,让信息不再稍纵即逝!
毕艾琳
微信防撤回插件-WeChatIntercept,让信息不再稍纵即逝!WeChatIntercept微信防撤回插件,一键安装,仅MAC可用,支持v3.7.0微信项目地址:https://gitcode.com/gh_mirrors/we/WeChatIntercept项目介绍我们很高兴向你推荐一款专为Mac用户设计的独特插件——WeChatIntercept。这个开源项目能够帮助你在微信上实现消息防
- Medium Editor Markdown扩展:无缝集成Markdown编辑功能
毕艾琳
MediumEditorMarkdown扩展:无缝集成Markdown编辑功能medium-editor-markdown:pencil:AMediumEditorextensiontoaddmarkdownsupport.项目地址:https://gitcode.com/gh_mirrors/me/medium-editor-markdown1.项目介绍:pencil:MediumEditorM
- node-samlp 项目教程
毕艾琳
node-samlp项目教程node-samlpSAMLProtocolsupportfornode(onlyIdPfornow)项目地址:https://gitcode.com/gh_mirrors/no/node-samlp1.项目的目录结构及介绍node-samlp/├──.github/│└──workflows/├──lib/│└──templates/├──test/├──.gitig
- Karaoke 开源项目教程
毕艾琳
Karaoke开源项目教程karaokeWillbethebestkaraokesystem.项目地址:https://gitcode.com/gh_mirrors/kar/karaoke1.项目介绍Karaoke是一个开源的卡拉OK应用程序,旨在为用户提供一个简单易用的平台来享受卡拉OK的乐趣。该项目支持多种音频和视频格式,并提供了丰富的功能,如歌词同步、音调调整、音量控制等。Karaoke项目
- UnityPython:在Unity中无缝运行Python代码
岑晔含Dora
UnityPython:在Unity中无缝运行Python代码unity-pythonPythonpluginforUnity3D.项目地址:https://gitcode.com/gh_mirrors/un/unity-python注意:这个项目已不再维护。但如果你想了解过去如何在Unity中集成Python的方案,那么请继续阅读。项目介绍UnityPython是一个为Unity3D开发的游戏引
- Unity-Python 项目使用指南
秋或依
Unity-Python项目使用指南unity-pythonPythonpluginforUnity3D.项目地址:https://gitcode.com/gh_mirrors/un/unity-python项目介绍Unity-Python是一个开源项目,旨在为Unity游戏引擎提供Python脚本支持。该项目通过集成Python解释器,使得开发者可以在Unity中使用Python进行游戏逻辑的编
- 使用PyTorch实现的DeepSpeech模型: 强大的语音识别利器
毕艾琳
使用PyTorch实现的DeepSpeech模型:强大的语音识别利器deepspeech.pytorchSpeechRecognitionusingDeepSpeech2.项目地址:https://gitcode.com/gh_mirrors/de/deepspeech.pytorch在今天的数字化世界中,语音识别技术已成为人机交互的关键组成部分。deepspeech.pytorch是一个由Sea
- 探索Unity3D与Python的无缝结合:一个创新的游戏开发新视角
毕艾琳
探索Unity3D与Python的无缝结合:一个创新的游戏开发新视角Unity3D-Python在Unity里使用Python脚本项目地址:https://gitcode.com/gh_mirrors/un/Unity3D-Python在这个数字化时代,游戏开发已经成为一项集技术、艺术和创新于一体的热门领域。Unity3D作为业界广泛使用的跨平台游戏引擎,为我们提供了强大的工具来创造精彩纷呈的互动
- python字符串 字节串
xiaogeldx
python
文章目录字符串str字符串方法:增使用+join字符串的格式化利用%格式化用format格式化删stripreplace改upperlowercapitalizetitle查countfindtypeisdigitisalphastartswithendswithisupperislowersplit转义字符转义字符用法原始字符串None字节串例字符串str-用来表示一串文字信息-表示:单引号,双
- ASP.NET Core 开源项目详解与入门指南
沈菱嫱Marie
ASP.NETCore开源项目详解与入门指南aspnetcoredotnet/aspnetcore:是一个ASP.NETCore应用程序开发框架的官方GitHub仓库,它包含了ASP.NETCore的核心源代码和技术文档。适合用于ASP.NETCore应用程序开发,特别是对于那些需要深入了解ASP.NETCore框架实现和技术的场景。特点是ASP.NETCore官方仓库、核心源代码、技术文档。项目
- Vercel的Hyper网站构建教程
郦祺嫒Amiable
Vercel的Hyper网站构建教程hyper-siteTheofficialwebsitefortheHyperterminal项目地址:https://gitcode.com/gh_mirrors/hy/hyper-site1.项目介绍Vercel的Hyper-site是Hyper终端的官方网站源码,Hyper是一个高度可定制化的现代终端模拟器,它利用了Electron平台来提供丰富的用户体验
- UPnP服务器(upnpserver)快速入门指南
郦祺嫒Amiable
UPnP服务器(upnpserver)快速入门指南upnpserverFastandlightupnpserverfornode项目地址:https://gitcode.com/gh_mirrors/up/upnpserver1.项目目录结构及介绍本项目upnpserver是一个基于Node.js实现的UPnP服务器。下面是其基本的目录结构概览:upnpserver│├──package.json
- 推荐使用:Models——简化WordPress自定义类型的高效工具
郦祺嫒Amiable
推荐使用:Models——简化WordPress自定义类型的高效工具modelsWordPressplugintocreatecustomposttypesandtaxonomiesusingJSON,YAMLorPHPfiles项目地址:https://gitcode.com/gh_mirrors/models7/models在追求灵活和定制化的Web开发道路上,WordPress凭借其强大的社
- RapidJson递归去除空值元素Value
Cloudox_
RapidJson是一款高效的C++处理JSON字符串的库。教程:http://rapidjson.org/zh-cn/md_doc_tutorial_8zh-cn.html#QueryObject源码:https://github.com/Tencent/rapidjson但不得不说教程写的不太全,网上资料也很少,大都重复教程的范畴。项目中有个蛋疼的需求要把JSON字符串中值为空的键值对去掉,C
- Docker Compose——MySQL 8.x,adminer,gitlab,Jenkins,tomcat
小龙Hibernation
docker运维dockermysql
DockerComposedocker三剑客之一#下载1.25.0dockercomposesudocurl-L"https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname-s)-$(uname-m)"-o/usr/local/bin/docker-compose#添加可执行权限sudochmo
- 探索 Puppeteer-Screen-Recorder:高效网页录屏工具
白威东
探索Puppeteer-Screen-Recorder:高效网页录屏工具puppeteer-screen-recorder项目地址:https://gitcode.com/gh_mirrors/pu/puppeteer-screen-recorder项目介绍Puppeteer-Screen-Recorder是一款基于Puppeteer的插件,利用原生的ChromeDevToolsProtocol实
- 使用Puppeteer-with-Fingerprints:轻松管理浏览器指纹
章雍宇
使用Puppeteer-with-Fingerprints:轻松管理浏览器指纹puppeteer-with-fingerprintsAnonymousautomationviapuppeteerwithfingerprintreplacementtechnology.项目地址:https://gitcode.com/gh_mirrors/pu/puppeteer-with-fingerprints
- Puppeteer-Sharp:无头浏览器.NET API探索
井唯喜
Puppeteer-Sharp:无头浏览器.NETAPI探索puppeteer-sharp项目地址:https://gitcode.com/gh_mirrors/pup/puppeteer-sharp项目介绍Puppeteer-Sharp是一个.NET版本的官方Node.jsPuppeteer库的移植。它允许开发者在.NET环境下远程控制Chromium或Chrome浏览器,进行网页操作、截图、生
- Puppeteer Cluster:自动化网页操作的新利器
宋溪普Gale
PuppeteerCluster:自动化网页操作的新利器puppeteer-clusterthomasdondorf/puppeteer-cluster:PuppeteerCluster是一个基于Puppeteer的库,用于并行处理多个网页操作任务,可以提高网页抓取和自动化任务的效率。项目地址:https://gitcode.com/gh_mirrors/pu/puppeteer-cluster在
- PyCharm配置教程,手把手教你如何配置
E绵绵
Everythingpycharmidepython
文章目录引言1.安装PyCharm1.1下载和安装1.2初次启动2.基本配置2.1设置界面2.2常用配置项3.项目配置3.1创建新项目3.2配置解释器4.虚拟环境配置4.1创建虚拟环境4.2使用已有虚拟环境4.3管理依赖5.插件和扩展5.1安装插件5.2推荐插件6.调试配置6.1配置调试器6.2设置断点和启动调试7.版本控制集成7.1配置Git7.2克隆仓库7.3使用Git插件8.代码风格和检查8
- python使用rocketmq发送消息_阿里云消息队列RocketMQ使用示例
weixin_39953481
本文代码示例参见:https://gitee.com/imlichao/RocketMQ-exampleApacheRocketMQ文档:http://rocketmq.apache.org/docs/quick-start/阿里云RocketMQ文档:https://help.aliyun.com/product/29530.html简介消息队列RocketMQ是阿里巴巴集团自主研发的专业消息中
- svn迁移到gitlab并保留commit历史记录
Blue summer
版本控制svn迁移到gitnoauthorgitlab
背景项目上使用的svn作为代码版本管理工具,由于资源整合,需要迁移到gitlab上,同时要保留历史提交记录。迁移过程1、获取svn提交用户名因为在git上每个提交需要有用户的提交信息,如邮箱,因此我们得先获取到所有的用户名,然后生成如下对应的git格式,用于稍后的gitclone上。Jordan=JordanKobe=Kobe在windows对应工程目录下打开cmd命令窗口,执行以下命令,svnl
- Git 修改已提交 commit 的信息
麦田里的守望者_zhg
Gitgitgithub服务器
1使用背景在使用git的时候,经常会用到一个命令,那就是gitcommit-m'msg',但是这个msg还是有要求的,那就是在push代码的时候,msg不能少于5个字符(中英文都算一个字符),但是在执行gitcommit的时候,这个msg是可以写任意个字符的,也就是说当你commit的时候,没有写够5个字符,那么在push的时候,就会提示不能push,所以就需要用到修改已提交commit的信息。2
- COI实验室技能:图像到图像的深度学习开发框架(pytorch版)
山颠海涯
深度学习pytorch人工智能
Basicdeeplearningframeworkforimage-to-image这个开发框架旨在帮助科研人员快速地实现图像到图像之间的模型开发。github连接:https://github.com/SituLab/Basic-deep-learning-framework-for-image-to-image目录1模型开发1-1克隆项目到本地1-2深度学习开发2环境配置2-1安装conda
- sql统计相同项个数并按名次显示
朱辉辉33
javaoracle
现在有如下这样一个表:
A表
ID Name time
------------------------------
0001 aaa 2006-11-18
0002 ccc 2006-11-18
0003 eee 2006-11-18
0004 aaa 2006-11-18
0005 eee 2006-11-18
0004 aaa 2006-11-18
0002 ccc 20
- Android+Jquery Mobile学习系列-目录
白糖_
JQuery Mobile
最近在研究学习基于Android的移动应用开发,准备给家里人做一个应用程序用用。向公司手机移动团队咨询了下,觉得使用Android的WebView上手最快,因为WebView等于是一个内置浏览器,可以基于html页面开发,不用去学习Android自带的七七八八的控件。然后加上Jquery mobile的样式渲染和事件等,就能非常方便的做动态应用了。
从现在起,往后一段时间,我打算
- 如何给线程池命名
daysinsun
线程池
在系统运行后,在线程快照里总是看到线程池的名字为pool-xx,这样导致很不好定位,怎么给线程池一个有意义的名字呢。参照ThreadPoolExecutor类的ThreadFactory,自己实现ThreadFactory接口,重写newThread方法即可。参考代码如下:
public class Named
- IE 中"HTML Parsing Error:Unable to modify the parent container element before the
周凡杨
html解析errorreadyState
错误: IE 中"HTML Parsing Error:Unable to modify the parent container element before the child element is closed"
现象: 同事之间几个IE 测试情况下,有的报这个错,有的不报。经查询资料后,可归纳以下原因。
- java上传
g21121
java
我们在做web项目中通常会遇到上传文件的情况,用struts等框架的会直接用的自带的标签和组件,今天说的是利用servlet来完成上传。
我们这里利用到commons-fileupload组件,相关jar包可以取apache官网下载:http://commons.apache.org/
下面是servlet的代码:
//定义一个磁盘文件工厂
DiskFileItemFactory fact
- SpringMVC配置学习
510888780
springmvc
spring MVC配置详解
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了。不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理。
一、Spring MVC环境搭建:(Spring 2.5.6 + Hi
- spring mvc-jfreeChart 柱图(1)
布衣凌宇
jfreechart
第一步:下载jfreeChart包,注意是jfreeChart文件lib目录下的,jcommon-1.0.23.jar和jfreechart-1.0.19.jar两个包即可;
第二步:配置web.xml;
web.xml代码如下
<servlet>
<servlet-name>jfreechart</servlet-nam
- 我的spring学习笔记13-容器扩展点之PropertyPlaceholderConfigurer
aijuans
Spring3
PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是BeanFactoryPostProcessor接口的一个实现。关于BeanFactoryPostProcessor和BeanPostProcessor类似。我会在其他地方介绍。PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java P
- java 线程池使用 Runnable&Callable&Future
antlove
javathreadRunnablecallablefuture
1. 创建线程池
ExecutorService executorService = Executors.newCachedThreadPool();
2. 执行一次线程,调用Runnable接口实现
Future<?> future = executorService.submit(new DefaultRunnable());
System.out.prin
- XML语法元素结构的总结
百合不是茶
xml树结构
1.XML介绍1969年 gml (主要目的是要在不同的机器进行通信的数据规范)1985年 sgml standard generralized markup language1993年 html(www网)1998年 xml extensible markup language
- 改变eclipse编码格式
bijian1013
eclipse编码格式
1.改变整个工作空间的编码格式
改变整个工作空间的编码格式,这样以后新建的文件也是新设置的编码格式。
Eclipse->window->preferences->General->workspace-
- javascript中return的设计缺陷
bijian1013
JavaScriptAngularJS
代码1:
<script>
var gisService = (function(window)
{
return
{
name:function ()
{
alert(1);
}
};
})(this);
gisService.name();
&l
- 【持久化框架MyBatis3八】Spring集成MyBatis3
bit1129
Mybatis3
pom.xml配置
Maven的pom中主要包括:
MyBatis
MyBatis-Spring
Spring
MySQL-Connector-Java
Druid
applicationContext.xml配置
<?xml version="1.0" encoding="UTF-8"?>
&
- java web项目启动时自动加载自定义properties文件
bitray
javaWeb监听器相对路径
创建一个类
public class ContextInitListener implements ServletContextListener
使得该类成为一个监听器。用于监听整个容器生命周期的,主要是初始化和销毁的。
类创建后要在web.xml配置文件中增加一个简单的监听器配置,即刚才我们定义的类。
<listener>
<des
- 用nginx区分文件大小做出不同响应
ronin47
昨晚和前21v的同事聊天,说到我离职后一些技术上的更新。其中有个给某大客户(游戏下载类)的特殊需求设计,因为文件大小差距很大——估计是大版本和补丁的区别——又走的是同一个域名,而squid在响应比较大的文件时,尤其是初次下载的时候,性能比较差,所以拆成两组服务器,squid服务于较小的文件,通过pull方式从peer层获取,nginx服务于较大的文件,通过push方式由peer层分发同步。外部发布
- java-67-扑克牌的顺子.从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1,J为11,Q为12,K为13,而大
bylijinnan
java
package com.ljn.base;
import java.util.Arrays;
import java.util.Random;
public class ContinuousPoker {
/**
* Q67 扑克牌的顺子 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。
* 2-10为数字本身,A为1,J为1
- 翟鸿燊老师语录
ccii
翟鸿燊
一、国学应用智慧TAT之亮剑精神A
1. 角色就是人格
就像你一回家的时候,你一进屋里面,你已经是儿子,是姑娘啦,给老爸老妈倒怀水吧,你还觉得你是老总呢?还拿派呢?就像今天一样,你们往这儿一坐,你们之间是什么,同学,是朋友。
还有下属最忌讳的就是领导向他询问情况的时候,什么我不知道,我不清楚,该你知道的你凭什么不知道
- [光速与宇宙]进行光速飞行的一些问题
comsci
问题
在人类整体进入宇宙时代,即将开展深空宇宙探索之前,我有几个猜想想告诉大家
仅仅是猜想。。。未经官方证实
1:要在宇宙中进行光速飞行,必须首先获得宇宙中的航行通行证,而这个航行通行证并不是我们平常认为的那种带钢印的证书,是什么呢? 下面我来告诉
- oracle undo解析
cwqcwqmax9
oracle
oracle undo解析2012-09-24 09:02:01 我来说两句 作者:虫师收藏 我要投稿
Undo是干嘛用的? &nb
- java中各种集合的详细介绍
dashuaifu
java集合
一,java中各种集合的关系图 Collection 接口的接口 对象的集合 ├ List 子接口 &n
- 卸载windows服务的方法
dcj3sjt126com
windowsservice
卸载Windows服务的方法
在Windows中,有一类程序称为服务,在操作系统内核加载完成后就开始加载。这里程序往往运行在操作系统的底层,因此资源占用比较大、执行效率比较高,比较有代表性的就是杀毒软件。但是一旦因为特殊原因不能正确卸载这些程序了,其加载在Windows内的服务就不容易删除了。即便是删除注册表中的相 应项目,虽然不启动了,但是系统中仍然存在此项服务,只是没有加载而已。如果安装其他
- Warning: The Copy Bundle Resources build phase contains this target's Info.plist
dcj3sjt126com
iosxcode
http://developer.apple.com/iphone/library/qa/qa2009/qa1649.html
Excerpt:
You are getting this warning because you probably added your Info.plist file to your Copy Bundle
- 2014之C++学习笔记(一)
Etwo
C++EtwoEtwoiterator迭代器
已经有很长一段时间没有写博客了,可能大家已经淡忘了Etwo这个人的存在,这一年多以来,本人从事了AS的相关开发工作,但最近一段时间,AS在天朝的没落,相信有很多码农也都清楚,现在的页游基本上达到饱和,手机上的游戏基本被unity3D与cocos占据,AS基本没有容身之处。so。。。最近我并不打算直接转型
- js跨越获取数据问题记录
haifengwuch
jsonpjsonAjax
js的跨越问题,普通的ajax无法获取服务器返回的值。
第一种解决方案,通过getson,后台配合方式,实现。
Java后台代码:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String ca
- 蓝色jQuery导航条
ini
JavaScripthtmljqueryWebhtml5
效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/39.htmHTML文件代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery鼠标悬停上下滑动导航条 - 柯乐义<
- linux部署jdk,tomcat,mysql
kerryg
jdktomcatlinuxmysql
1、安装java环境jdk:
一般系统都会默认自带的JDK,但是不太好用,都会卸载了,然后重新安装。
1.1)、卸载:
(rpm -qa :查询已经安装哪些软件包;
rmp -q 软件包:查询指定包是否已
- DOMContentLoaded VS onload VS onreadystatechange
mutongwu
jqueryjs
1. DOMContentLoaded 在页面html、script、style加载完毕即可触发,无需等待所有资源(image/iframe)加载完毕。(IE9+)
2. onload是最早支持的事件,要求所有资源加载完毕触发。
3. onreadystatechange 开始在IE引入,后来其它浏览器也有一定的实现。涉及以下 document , applet, embed, fra
- sql批量插入数据
qifeifei
批量插入
hi,
自己在做工程的时候,遇到批量插入数据的数据修复场景。我的思路是在插入前准备一个临时表,临时表的整理就看当时的选择条件了,临时表就是要插入的数据集,最后再批量插入到数据库中。
WITH tempT AS (
SELECT
item_id AS combo_id,
item_id,
now() AS create_date
FROM
a
- log4j打印日志文件 如何实现相对路径到 项目工程下
thinkfreer
Weblog4j应用服务器日志
最近为了实现统计一个网站的访问量,记录用户的登录信息,以方便站长实时了解自己网站的访问情况,选择了Apache 的log4j,但是在选择相对路径那块 卡主了,X度了好多方法(其实大多都是一样的内用,还一个字都不差的),都没有能解决问题,无奈搞了2天终于解决了,与大家分享一下
需求:
用户登录该网站时,把用户的登录名,ip,时间。统计到一个txt文档里,以方便其他系统调用此txt。项目名
- linux下mysql-5.6.23.tar.gz安装与配置
笑我痴狂
mysqllinuxunix
1.卸载系统默认的mysql
[root@localhost ~]# rpm -qa | grep mysql
mysql-libs-5.1.66-2.el6_3.x86_64
mysql-devel-5.1.66-2.el6_3.x86_64
mysql-5.1.66-2.el6_3.x86_64
[root@localhost ~]# rpm -e mysql-libs-5.1