思路:当前aoeiu的个数的奇偶,减去该奇偶性之前首次出现的位置即为当前下标结尾满足条件的最长长度具体实现:int(大于5位)来记录每个字符出现的奇偶性。flag^(1pos(32,INT_MAX);//记录32种状态首次出现的位置intstatus=0,ans=0;auton=s.size();pos[0]=-1;//5个元音都没出现的第一个位置是-1for(inti=0;i
AlphaFold2的思路总结(十五)
xiaofengzihhh
蛋白质结构预测深度学习人工智能神经网络
2021SC@SDUSC这学期的代码分析工作接近尾声了,我想简单总结一下AlphaFold2的总体思路 具体来看,AlphaFold2主要利用多序列比对(MSA),把蛋白质的结构和生物信息整合到了深度学习算法中。它主要包括两个部分:神经网络EvoFormer和结构模块(Structuremodule)。一、EvoFormer 在EvoFormer中,主要是将图网络(Graphnetworks)
LeetCode每日一题5月20日 LeetCode1371. 每个元音包含偶数次的最长子字符串
青日五月
LeetCode刷题记录字符串leetcode动态规划
问题描述:给你一个字符串s,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即'a','e','i','o','u',在子字符串中都恰好出现了偶数次。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-the-longest-substring-containing-vowels-in-even-counts示例1:输入:s="e
【阅读总结】AlphaFold3 unedited version 通读 + 服务器使用总结
Lasgalena
论文阅读软件使用论文阅读服务器
省流:AlphaFold3能做什么:预测蛋白质、DNA、RNA与允许的配体/离子/共价修饰的复合物结构为什么要用AlphaFold3:有强大的泛化性和准确率,除了RNA结构略差于AIchemy_RNA2外,预测精度高于现有方法(包括Vina和RosettaFold-All-Atom)AlphaFold3怎么用:代码不开源,网站https://alphafoldserver.com/需注册使用,每日
LeetCode 3090.每个字符最多出现两次的最长子字符串
爱笑的coder
算法刷题-滑动窗口leetcode算法职场和发展
题目:给你一个字符串s,请找出满足每个字符最多出现两次的最长子字符串,并返回该子字符串的最大长度。思路:用一个数组代替hashset记录字符出现次数代码:classSolution{publicintmaximumLengthSubstring(Strings){char[]ch=s.toCharArray();intans=0;int[]record=newint[26];intleft=0;f
一步教你轻松实现--Word方括号打勾☑
韦_恩
windows日常使用总结word
开门见山,不说废话,本文介绍两种方法任君选择!1.方法1:在需要输入“方框打勾”符号的地方按着【Alt】键的同时,输入数字“9745”,输入完之后再松开【Alt】键,你会发现这个数字瞬间变成了“方框打勾”符号【如果没有就再按下回车键】。2.方法2:需要输入“方框打勾”符号的地方输入“2611”,然后按下【Alt+X】的组合键,即可看到“2611”瞬间变成了“方框打勾”符号。alt+x键后:以上两种
mysql8 MHA集群部署
L白眸
数据库mysql数据库
服务器环境系统主机名IPcentos7.9mha-master192.168.200.41、192.168.200.45(vip)centos7.9mha-slave01192.168.200.42centos7.9mha-slave02192.168.200.43centos7.9mha-monitor192.168.200.40SSH互信mha-master、mha-slave01、mha-s
震惊!996加班写教程?OUT了!我用Python+AI,一键自动生成,效率提升100倍!
lizhijianwill
人工智能python开发语言改行学itjavajavascript
导语:你是否还在为了撰写技术教程而苦苦挣扎?是否还在996的工位上,熬夜爆肝,只为输出一篇高质量的技术文档?醒醒吧!这个时代变了!今天,我就要告诉你一个颠覆传统的秘密武器,让你彻底告别低效的手工教程编写模式,拥抱AI,解放生产力,让效率飞起来!时代焦虑:AI浪潮来袭,你还在用“石器时代”的方法写教程?2024年,AI技术已经渗透到我们生活的方方面面。“AI智能体”、“思维链”、“生产力革命”这些词
Python知识点:基于Python工具和技术,如何使用Truffle进行智能合约开发与部署
杰哥在此
Python系列python智能合约开发语言编程面试
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候!如何使用Truffle与Python进行智能合约开发与部署Truffle是一个强大的开发框架,它为以太坊智能合约的开发、测试和部署提供了一整套工具。虽然Truffle主要使用JavaScript和Solidity,但是它也可以与Python工具和技术配合使用,以实现更灵活的开发流程。
C++11:开启高效编程之旅(万字详解)
Main. 24
c++开发语言
1.列表初始化1.1.C++98传统的{}C++98中⼀般数组和结构体可以⽤{}进行初始化。structPoint{int_x;int_y;};intmain(){//初始化数组intarray1[]={1,2,3,4,5};intarray2[5]={0};//初始化结构体Pointp={1,2};return0;}1.2.C++11中的{}C++11以后想统⼀初始化⽅式,试图实现⼀切对象皆可⽤
拥抱健康养生,开启活力人生
yy0821yy
生活
在快节奏的现代生活中,人们越发意识到健康养生的重要性。健康养生并非是一种短暂的行为,而是一种贯穿日常生活的理念和习惯,它能帮助我们维持身体的最佳状态,享受高质量的生活。合理饮食是健康养生的基石。我们应遵循食物多样、谷类为主的原则,多吃新鲜的蔬菜、水果、全谷类、优质蛋白质,如豆类、鱼类、瘦肉等,减少高油、高糖、高盐食物的摄入。一日三餐要规律,早餐吃好、午餐吃饱、晚餐吃少,避免暴饮暴食和过度节食。这样
将不同的git 分支代码相互合并并上传到远程
weixin_42113341
git
在Git中,分支是用于并行开发不同功能或修复的机制。根据您的描述,您当前在yhp分支上进行开发,并希望将这部分代码上传到远程的yhy分支。以下是两种常见的方法及其详细操作步骤:方法一:将yhp分支的代码合并或变基到yhy分支,然后推送这种方法适用于您希望将yhp分支上的所有提交记录保留在yhy分支上的情况。步骤:确保本地仓库是最新的首先,拉取远程仓库的最新更改,确保您的本地仓库是最新的。gitfe
Swift 周报 第二十八期
Swift社区
Apple周刊swift开发语言ios
文章目录前言新闻和社区外媒:iPhone的平均售价直逼1000美元创历史新高分析师:iPhone需求良好,苹果股价还能涨22%准备好迎接即将在5月9日推出的增强全球定价机制提案通过的提案正在审查的提案Swift论坛推荐博文话题讨论关于我们前言本期是Swift编辑组自主整理周报的第十九期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。欢迎投稿或推荐内容。目前计划每两周周一发布,欢迎志同
喜讯!云起无垠获评“国家高新技术企业”认证
云起无垠
人工智能
近日,依据《高新技术企业认定管理办法》以及《高新技术企业认定管理工作指引》的相关规定,北京市认定机构对2024年认定报备的第二批高新技术企业展开备案公示,北京云起无垠科技有限公司成功斩获“国家高新技术企业”认定资质。“国家高新技术企业”堪称国家科技创新型企业的巅峰荣誉,它指那些于国家重点扶持的高新技术领域内,锲而不舍地进行研发工作并实现技术成果转化,进而构筑起企业核心自主知识产权,以之为根基开展经
浅谈redis
zhaoyang9999
redisredis数据库java
redis谈谈你对redis的理解非关系数据库他是单线程的:数据放在内存中,单线程操作效率高(多线程会造成CPU的上下文切换)基于内存操作(周期性的把更新的数据写入到磁盘(RDB)或者把修改操作写入追加的文件记录(AOF))五大基本数据类型strng(最常用)list(列表)底层链表可以用来消息订阅set(集合)hash(哈希hsetkeyfieldvalue)map集合更适合对象的存储Zset(
参加【2025年春季】全国CTF夺旗赛-从零基础入门到竞赛,看这一篇就稳了!
白帽子凯哥
web安全学习安全CTF夺旗赛网络安全
基于入门网络安全/黑客打造的:黑客&网络安全入门&进阶学习资源包目录一、CTF简介二、CTF竞赛模式三、CTF各大题型简介四、CTF学习路线4.1、初期1、html+css+js(2-3天)2、apache+php(4-5天)3、mysql(2-3天)4、python(2-3天)5、burpsuite(1-2天)4.2、中期1、SQL注入(7-8天)2、文件上传(7-8天)3、其他漏洞(14-15
参加【2025年春季】全国CTF夺旗赛-从零基础入门到竞赛,看这一篇就稳了!
白帽子凯哥
web安全学习安全CTF夺旗赛网络安全
基于入门网络安全/黑客打造的:黑客&网络安全入门&进阶学习资源包目录一、CTF简介二、CTF竞赛模式三、CTF各大题型简介四、CTF学习路线4.1、初期1、html+css+js(2-3天)2、apache+php(4-5天)3、mysql(2-3天)4、python(2-3天)5、burpsuite(1-2天)4.2、中期1、SQL注入(7-8天)2、文件上传(7-8天)3、其他漏洞(14-15
C++随笔记录:区别()和{}创建对象
jax不摆烂
C++入门到精通算法
C++在C++11之前的初始化方式五花八门,所以C++11引入统一初始化语法。初始化值要用圆括号()或者花括号{}括起来,或者放到等号=的右边:不管是基本类型、数组还是复杂容器,都可以用花括号{}来初始化;int x(0); //使用圆括号初始化int y= 0; //使用"="初始化int z{ 0 }; //使用花括号初始化 这里的=运算符可能会让人产生
安全可靠测评结果公告(2024年第1号)
Kunpeng_Ascend小白
服务器科技政务
附表一、中央处理器(CPU)(同一等级按产品名称首字笔画为序排列)序号产品名称送测单位安全可靠等级1飞腾腾云S5000C飞腾信息技术有限公司Ⅱ级2飞腾腾珑E2000飞腾信息技术有限公司Ⅱ级3飞腾腾锐D3000飞腾信息技术有限公司Ⅱ级4龙芯3A5000(DA版)龙芯中科技术股份有限公司Ⅱ级5龙芯3A6000龙芯中科技术股份有限公司Ⅱ级6龙芯3C5000龙芯中科技术股份有限公司Ⅱ级7龙芯3D5000龙
2013年蓝桥杯第四届C&C++大学B组真题及代码
GR鲸鱼
蓝桥杯C&C++真题蓝桥杯c++数据结构算法c语言
目录1A:高斯日记(日期计算)2B:马虎的算式(暴力模拟)3C:第39级台阶(dfs或dp)4D:黄金连分数(递推+大数运算)5E:前缀判断(代码填空)(枚举)6F:三部排序(代码填空)7G:错误票据(枚举)8H:翻硬币(找规律)9I:带分数(全排列暴力)10J:连号区间数(找规律)蓝桥杯大赛是从第四届才开始划分ABC组的,因此前三届的题目所有院校都是一样的。所以这里此专栏就从第四届开始刷题了,应
pwn7(利用格式化字符串泄露libc)
再劝
网络安全算法linux服务器数据库
题目[HNCTF2022WEEK4]ezcanaryint__fastcallmain(intargc,constchar**argv,constchar**envp){chars[96];//[rsp+0h][rbp-170h]BYREFcharbuf[264];//[rsp+60h][rbp-110h]BYREFunsigned__int64v6;//[rsp+168h][rbp-8h]v6=
命令模式 - 命令模式的设计思想
w(゚Д゚)w吓洗宝宝了
C++从0到1命令模式c++
引言在软件开发中,设计模式是解决常见问题的经典解决方案。命令模式(CommandPattern)是行为型设计模式之一,它将请求封装为对象,从而使你可以用不同的请求对客户进行参数化,并且支持请求的排队、记录日志以及撤销操作。本文将详细介绍命令模式的设计思想,并通过C++代码示例帮助读者深入理解。命令模式的定义命令模式的核心思想是将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化。命令
第四届先进材料与机械电子国际学术会议(ICAMM 2024)
2301_79125431
java
第四届先进材料与机械电子国际学术会议(ICAMM2024)【前三届均已见刊EI检索,检索信息均可查询!四大高校联合支持】2024年第四届先进材料与机械电子国际题解|字符串排序-golang最简洁最易懂解法packagemainimport("bufio""fmt&q题解|#数列求和#publicclassMain{publicstaticvoidmain(Str第四届图像处理与智能控制国际学术会议
Java序列化进阶篇
g21121
java序列化
1.transient
类一旦实现了Serializable 接口即被声明为可序列化,然而某些情况下并不是所有的属性都需要序列化,想要人为的去阻止这些属性被序列化,就需要用到transient 关键字。
escape()、encodeURI()、encodeURIComponent()区别详解
aigo
JavaScriptWeb
原文:http://blog.sina.com.cn/s/blog_4586764e0101khi0.html
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:,decodeURI,decodeURIComponent 。
下面简单介绍一下它们的区别
1 escape()函
ArcgisEngine实现对地图的放大、缩小和平移
Cb123456
添加矢量数据对地图的放大、缩小和平移Engine
ArcgisEngine实现对地图的放大、缩小和平移:
个人觉得是平移,不过网上的都是漫游,通俗的说就是把一个地图对象从一边拉到另一边而已。就看人说话吧.
具体实现:
一、引入命名空间
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Controls;
二、代码实现.
Java集合框架概述
天子之骄
Java集合框架概述
集合框架
集合框架可以理解为一个容器,该容器主要指映射(map)、集合(set)、数组(array)和列表(list)等抽象数据结构。
从本质上来说,Java集合框架的主要组成是用来操作对象的接口。不同接口描述不同的数据类型。
简单介绍:
Collection接口是最基本的接口,它定义了List和Set,List又定义了LinkLi
旗正4.0页面跳转传值问题
何必如此
javajsp
跳转和成功提示
a) 成功字段非空forward
成功字段非空forward,不会弹出成功字段,为jsp转发,页面能超链接传值,传输变量时需要拼接。接拼接方式list.jsp?test="+strweightUnit+"或list.jsp?test="+weightUnit+&qu
全网唯一:移动互联网服务器端开发课程
cocos2d-x小菜
web开发移动开发移动端开发移动互联程序员
移动互联网时代来了! App市场爆发式增长为Web开发程序员带来新一轮机遇,近两年新增创业者,几乎全部选择了移动互联网项目!传统互联网企业中超过98%的门户网站已经或者正在从单一的网站入口转向PC、手机、Pad、智能电视等多端全平台兼容体系。据统计,AppStore中超过85%的App项目都选择了PHP作为后端程
Log4J通用配置|注意问题 笔记
7454103
DAOapachetomcatlog4jWeb
关于日志的等级 那些去 百度就知道了!
这几天 要搭个新框架 配置了 日志 记下来 !做个备忘!
#这里定义能显示到的最低级别,若定义到INFO级别,则看不到DEBUG级别的信息了~!
log4j.rootLogger=INFO,allLog
# DAO层 log记录到dao.log 控制台 和 总日志文件
log4j.logger.DAO=INFO,dao,C
SQLServer TCP/IP 连接失败问题 ---SQL Server Configuration Manager
darkranger
sqlcwindowsSQL ServerXP
当你安装完之后,连接数据库的时候可能会发现你的TCP/IP 没有启动..
发现需要启动客户端协议 : TCP/IP
需要打开 SQL Server Configuration Manager...
却发现无法打开 SQL Server Configuration Manager..??
解决方法: C:\WINDOWS\system32目录搜索framedyn.
[置顶] 做有中国特色的程序员
aijuans
程序员
从出版业说起 网络作品排到靠前的,都不会太难看,一般人不爱看某部作品也是因为不喜欢这个类型,而此人也不会全不喜欢这些网络作品。究其原因,是因为网络作品都是让人先白看的,看的好了才出了头。而纸质作品就不一定了,排行榜靠前的,有好作品,也有垃圾。 许多大牛都是写了博客,后来出了书。这些书也都不次,可能有人让为不好,是因为技术书不像小说,小说在读故事,技术书是在学知识或温习知识,有些技术书读得可
document.domain 跨域问题
avords
document
document.domain用来得到当前网页的域名。比如在地址栏里输入:javascript:alert(document.domain); //www.315ta.com我们也可以给document.domain属性赋值,不过是有限制的,你只能赋成当前的域名或者基础域名。比如:javascript:alert(document.domain = "315ta.com");
关于管理软件的一些思考
houxinyou
管理
工作好多看年了,一直在做管理软件,不知道是我最开始做的时候产生了一些惯性的思维,还是现在接触的管理软件水平有所下降.换过好多年公司,越来越感觉现在的管理软件做的越来越乱.
在我看来,管理软件不论是以前的结构化编程,还是现在的面向对象编程,不管是CS模式,还是BS模式.模块的划分是很重要的.当然,模块的划分有很多种方式.我只是以我自己的划分方式来说一下.
做为管理软件,就像现在讲究MVC这
NoSQL数据库之Redis数据库管理(String类型和hash类型)
bijian1013
redis数据库NoSQL
一.Redis的数据类型
1.String类型及操作
String是最简单的类型,一个key对应一个value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。
Set方法:设置key对应的值为string类型的value
Tomcat 一些技巧
征客丶
javatomcatdos
以下操作都是在windows 环境下
一、Tomcat 启动时配置 JAVA_HOME
在 tomcat 安装目录,bin 文件夹下的 catalina.bat 或 setclasspath.bat 中添加
set JAVA_HOME=JAVA 安装目录
set JRE_HOME=JAVA 安装目录/jre
即可;
二、查看Tomcat 版本
在 tomcat 安装目
【Spark七十二】Spark的日志配置
bit1129
spark
在测试Spark Streaming时,大量的日志显示到控制台,影响了Spark Streaming程序代码的输出结果的查看(代码中通过println将输出打印到控制台上),可以通过修改Spark的日志配置的方式,不让Spark Streaming把它的日志显示在console
在Spark的conf目录下,把log4j.properties.template修改为log4j.p
Haskell版冒泡排序
bookjovi
冒泡排序haskell
面试的时候问的比较多的算法题要么是binary search,要么是冒泡排序,真的不想用写C写冒泡排序了,贴上个Haskell版的,思维简单,代码简单,下次谁要是再要我用C写冒泡排序,直接上个haskell版的,让他自己去理解吧。
sort [] = []
sort [x] = [x]
sort (x:x1:xs)
| x>x1 = x1:so
java 路径 配置文件读取
bro_feng
java
这几天做一个项目,关于路径做如下笔记,有需要供参考。
取工程内的文件,一般都要用相对路径,这个自然不用多说。
在src统计目录建配置文件目录res,在res中放入配置文件。
读取文件使用方式:
1. MyTest.class.getResourceAsStream("/res/xx.properties")
2. properties.load(MyTest.
读《研磨设计模式》-代码笔记-简单工厂模式
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
package design.pattern;
/*
* 个人理解:简单工厂模式就是IOC;
* 客户端要用到某一对象,本来是由客户创建的,现在改成由工厂创建,客户直接取就好了
*/
interface IProduct {
SVN与JIRA的关联
chenyu19891124
SVN
SVN与JIRA的关联一直都没能装成功,今天凝聚心思花了一天时间整合好了。下面是自己整理的步骤:
一、搭建好SVN环境,尤其是要把SVN的服务注册成系统服务
二、装好JIRA,自己用是jira-4.3.4破解版
三、下载SVN与JIRA的插件并解压,然后拷贝插件包下lib包里的三个jar,放到Atlassian\JIRA 4.3.4\atlassian-jira\WEB-INF\lib下,再
JWFDv0.96 最新设计思路
comsci
数据结构算法工作企业应用公告
随着工作流技术的发展,工作流产品的应用范围也不断的在扩展,开始进入了像金融行业(我已经看到国有四大商业银行的工作流产品招标公告了),实时生产控制和其它比较重要的工程领域,而
vi 保存复制内容格式粘贴
daizj
vi粘贴复制保存原格式不变形
vi是linux中非常好用的文本编辑工具,功能强大无比,但对于复制带有缩进格式的内容时,粘贴的时候内容错位很严重,不会按照复制时的格式排版,vi能不能在粘贴时,按复制进的格式进行粘贴呢? 答案是肯定的,vi有一个很强大的命令可以实现此功能 。
在命令模式输入:set paste,则进入paste模式,这样再进行粘贴时
shell脚本运行时报错误:/bin/bash^M: bad interpreter 的解决办法
dongwei_6688
shell脚本
出现原因:windows上写的脚本,直接拷贝到linux系统上运行由于格式不兼容导致
解决办法:
1. 比如文件名为myshell.sh,vim myshell.sh
2. 执行vim中的命令 : set ff?查看文件格式,如果显示fileformat=dos,证明文件格式有问题
3. 执行vim中的命令 :set fileformat=unix 将文件格式改过来就可以了,然后:w
高一上学期难记忆单词
dcj3sjt126com
wordenglish
honest 诚实的;正直的
argue 争论
classical 古典的
hammer 锤子
share 分享;共有
sorrow 悲哀;悲痛
adventure 冒险
error 错误;差错
closet 壁橱;储藏室
pronounce 发音;宣告
repeat 重做;重复
majority 大多数;大半
native 本国的,本地的,本国
hibernate查询返回DTO对象,DTO封装了多个pojo对象的属性
frankco
POJOhibernate查询DTO
DTO-数据传输对象;pojo-最纯粹的java对象与数据库中的表一一对应。
简单讲:DTO起到业务数据的传递作用,pojo则与持久层数据库打交道。
有时候我们需要查询返回DTO对象,因为DTO
Partition List
hcx2013
partition
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of th
Spring MVC测试框架详解——客户端测试
jinnianshilongnian
上一篇《Spring MVC测试框架详解——服务端测试》已经介绍了服务端测试,接下来再看看如果测试Rest客户端,对于客户端测试以前经常使用的方法是启动一个内嵌的jetty/tomcat容器,然后发送真实的请求到相应的控制器;这种方式的缺点就是速度慢;自Spring 3.2开始提供了对RestTemplate的模拟服务器测试方式,也就是说使用RestTemplate测试时无须启动服务器,而是模拟一
关于推荐个人观点
liyonghui160com
推荐系统关于推荐个人观点
回想起来,我也做推荐了3年多了,最近公司做了调整招聘了很多算法工程师,以为需要多么高大上的算法才能搭建起来的,从实践中走过来,我只想说【不是这样的】
第一次接触推荐系统是在四年前入职的时候,那时候,机器学习和大数据都是没有的概念,什么大数据处理开源软件根本不存在,我们用多台计算机web程序记录用户行为,用.net的w
不间断旋转的动画
pangyulei
动画
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M
自定义annotation
sha1064616837
javaenumannotationreflect
对象有的属性在页面上可编辑,有的属性在页面只可读,以前都是我们在页面上写死的,时间一久有时候会混乱,此处通过自定义annotation在类属性中定义。越来越发现Java的Annotation真心很强大,可以帮我们省去很多代码,让代码看上去简洁。
下面这个例子 主要用到了
1.自定义annotation:@interface,以及几个配合着自定义注解使用的几个注解
2.简单的反射
3.枚举
Spring 源码
up2pu
spring
1.Spring源代码
https://github.com/SpringSource/spring-framework/branches/3.2.x
注:兼容svn检出
2.运行脚本
import-into-eclipse.bat
注:需要设置JAVA_HOME为jdk 1.7
build.gradle
compileJava {
sourceCompatibilit
利用word分词来计算文本相似度
yangshangchuan
wordword分词文本相似度余弦相似度简单共有词
word分词提供了多种文本相似度计算方式:
方式一:余弦相似度,通过计算两个向量的夹角余弦值来评估他们的相似度
实现类:org.apdplat.word.analysis.CosineTextSimilarity
用法如下:
String text1 = "我爱购物";
String text2 = "我爱读书";
String text3 =