- 一文掌握python常用的list(列表)操作
程序员neil
pythonpython开发语言
目录一、创建列表1.直接创建列表:2.使用list()构造器3.使用列表推导式4.创建空列表二、访问列表元素1.列表支持通过索引访问元素,索引从0开始:2.还可以使用切片操作访问列表的一部分:三、修改列表元素四、添加元素1.append():在末尾添加元素2.insert():在指定位置插入元素五、删除元素1.del:删除指定位置的元素2.remove():删除指定值的第一个匹配项3.pop():
- leetcode中等.数组(21-40)python
九日火
pythonleetcode
80.RemoveDuplicatesfromSortedArrayII(m-21)Givenasortedarraynums,removetheduplicatesin-placesuchthatduplicatesappearedatmosttwiceandreturnthenewlength.Donotallocateextraspaceforanotherarray,youmustdoth
- 2021-08-24 Say no to the next social
春生阁
Youknowthesort.Drinkswitholdfriendsyouhavenothingincommonwithanymore.Yoursecondcousinonceremoved’sbabyshowerwitha$100minimumpresentspend.Thesesortsofsocialengagementssuckthelivingtimeandmoneyoutofyou.
- Python OS模块操作文件
小丫头呀
#Python随笔python
在Python中,可以使用os模块主要对文件进行重命名,删除等一些操作以下为os模块常用的方法示例:重命名操作importosos.rename('Test.txt','Test_重命名.txt')#参数1:要重命名的源文件#参数2:对源文件要重新命名的名称删除文件importosos.remove('Test_重命名.txt')#参数为要删除的源文件名称,如果该文件不存在则抛出异常创建空文件夹i
- Java的迭代器接口
shymoy
java开发语言
文章目录是什么iterator内部方法iterabe内部方法如何实现是什么iteratorIterator是java中用于遍历集合中元素的一个接口,提供了一种通用方法来遍历集合中的元素。内部方法booleanhasNext():检查是否还有下一个元素。如果有,返回true,否则返回false。Tnext():返回集合中的下一个元素。voidremove():从集合中移除最后一次调用next()返回
- Jetpack LiveData源码分析
xiangxiongfly915
#AndroidJetpack系列JetpackLiveData源码分析
文章目录JetpackLiveData源码分析前提源码分析注册订阅流程LiveData#observe()LifecycleRegistry#addObserver()ObserverWithState#dispatchEvent()LiveData#removeObserver()LiveData$LifecycleBoundObserver类LifecycleBoundObserver#sho
- 11-js事件基础
echozzi
JavaScript基础javascript前端开发语言
文章目录一、事件概念二、事件绑定方式1.onxxx2.事件监听器addEventListener三、事件解绑方式方法1:覆盖原事件处理(置空)方法2:移除事件监听器removeEventListener四、事件派发方式方法1:onxxx方法2:dispatchEvent五、事件对象window.event六、点击事件的光标坐标点1.以页面为参考坐标page2.以可视窗口为参考client3.相对事
- vue3打包 error in node_modules/@types/node/stream/web.d.ts 错误解决办法
柒先生~
前端javascript开发语言
ue3项目打包的时候突然报错,错误如下ERRORFailedtocompilewith1error14:13:57errorinnode_modules/@types/node/stream/web.d.ts:469:56TS1005:'?'expected.467|//IfReportingObservercheckisremoved,thetypeherewillformacircularre
- Hbase - kerberos认证异常
kikiki2
之前怎么认证都认证不上,问题找了好了,发现它的异常跟实际操作根本就对不上,死马当活马医,当时也是瞎改才好的,给大家伙记录记录。KrbException:ServernotfoundinKerberosdatabase(7)-LOOKING_UP_SERVER>>>KdcAccessibility:removestorm1.starsriver.cnatsun.security.krb5.KrbTg
- 坚持自己,而不是被环境改变·115天(Youtube语言学习方法)
左撇子槿希
图片发自App1.Pleaseremovetheblackpart/bit.黒い(くろい)ところは取り除(とりのぞ)いてください。2.I’mlookingoraplacetostay.泊まる(とまる)所(ところ)を探(さが)しています。3.Doyouknowwhoisthatperson?あの人は誰(だれ)か知っていますか。4.Whichrestaurantischeap?レストランはどこが安い(
- Spring 在多线程环境下如何确保事务一致性
「已注销」
SpringBootspringmysqljava
目录问题在现如何解决异步执行多线程环境下如何确保事务一致性事务王国回顾事务实现方式回顾编程式事务利用编程式事务解决问题问题分析完了,那么如何解决问题呢?小结问题在现我先把问题抛出来,大家就明白本文目的在于解决什么样的业务痛点了:public void removeAuthorityModuleSeq(Integer authorityModuleId, IAuthorityService iAut
- Java集合-----List接口及其实现类:ArrayList、LinkedList、Vector
Colourful.
Java集合java集合
文章目录List接口概述List接口的常用方法List接口的实现类ArrayList源码分析类继承关系ArrayList中的属性:ArrayList构造函数:ArrayList中常用方法添加操作:add()删除操作:remove()获取元素:get()ArrayList是如何实现序列化的?ArrayList的总结LinkedList源码分析类继承关系类成员属性类构造器LinkedList的List
- idea2023版使用Free MyBatis plugin插件报错
涛哥是个大帅比
问题mybatisjavaidea
项目场景:新版的idea使用FreeMyBatisplugin插件报错问题描述错误信息java.lang.Throwable:'#LineMarkerInfo(T,TextRange,Icon,int,Function,GutterIconNavigationHandler,Alignment)'isdeprecatedandgoingtoberemovedsoon.Pleaseuse`LineM
- linux--vim
猿饵块
linuxvim运维
上下左右---变为--ABCD原因是vim的版本有问题,卸载原来的版本,重新下载即可:sudoapt-getremovevim-commonsudoapt-getinstallvim
- Golang 使用 os 及 filepath库 操作文件及目录
MissU o_O
Golanggolang开发语言后端
一、文件和目录操作方法文件操作//创建文件os.Create(namestring)//删除文件os.Remove(namestring)//使用strings.HasSuffix()判断是否包含此后缀名或者使用数组判断//重命名文件os.Rename(oldpath,newpathstring)//读取文件os.ReadFile(namestring)//重写文件os.WriteFile(nam
- Ubuntu 开机出现 recovering journal 无法进入图形界面解决流程(不通用,自用)
Artintel
学习ubuntu
远程连接进入命令行:rm-rf/etc/X11/xorg.confcp/etc/X11/xorg.conf.failsafe/etc/X11/xorg.confsudoservicelightdmstopsudoapt-getremovenvidia*cdjohn/qudong+cuda9.0\+\cudnn/sudochmoda+xnv.runsudo./nv.run-no-x-check-no
- 聊聊nacos ServiceManager的removeInstance
go4it
序本文主要研究一下nacosServiceManager的removeInstanceServiceManagernacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/core/ServiceManager.java@Component@DependsOn("nacosApplicationContext")publicclassSer
- Error: Could not installed packages due to anOSError: [Errno 28] No space left on device
不废江河954
linux
Error:CouldnotinstalledpackagesduetoanOSError:[Errno28]Nospaceleftondevice前言安装torch时出现标题所示报错。尝试1(失败)可能是磁盘占用过多,查看磁盘占用情况:df-h,发现剩余空间绰绰有余。但还是使用sudoaptautoremove--purgesnapd清理了下。果然没有任何用,继续报同样的错。尝试2(失败)可能是
- 【OS】L17信号量临界区保护
JustNow_Man
OSC
靠临界区来保护信号量,靠信号量来实现进程间的同步;同步就是进程间的走走停停;“ANDNEVERREMOVETHISEMPTYLOOOP!!!”临界区保护的三种解法面包店算法//Peterson算法:标记+轮转的结合(针对两个进程)flag[i]=true;turn=j;while(flag[i]&&turn==j);临界区flag[i]=false;剩余区//面包店算法:标记+轮转的结合(针对多个
- 精准打击:Conda中conda remove命令的高效使用指南
2401_85743969
conda
精准打击:Conda中condaremove命令的高效使用指南在Python项目开发中,Conda作为Anaconda发行版中的包管理器,不仅用于安装和管理包,还提供了强大的环境管理功能。随着项目的发展,有时需要从环境中移除不再需要的包。condaremove命令是Conda提供的一个关键工具,它允许用户从当前环境中移除特定的包。本文将详细介绍如何在Conda中使用condaremove命令,并通
- [C题目]力扣203. 移除链表元素
GLC8866
链表leetcodec语言
203.移除链表元素-力扣(LeetCode)方法一:删除val值的结点,并将其前后的结点连接上。structListNode*removeElements(structListNode*head,intval){structListNode*prev=NULL;//prev标记cur前一个结点的位置structListNode*cur=head;//cur表示当前要检查的结点while(cur)
- 移除链表元素 - 力扣(LeetCode)C语言
XYLoveBarbecue
C语言数据结构练习链表leetcode数据结构
203.移除链表元素-力扣(LeetCode)(点击前面链接即可查看题目)/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*removeElements(structListNode*head,intval){structListNode*cur=h
- ThreadLocal原理
有什么奇怪!
#SSM#JUCjava大数据threadLocal
文章目录1、ThreadLocal简介2、ThreadLocal和Synchronize的区别3、ThreadLocal源码理解3.1Thread与ThreadLocalMap3.2ThreadLocal3.2.1ThreadLocal的set()方法3.2.2ThreadLocal的get()3.2.3ThreadLocal的remove()4、ThreadLocal常见使用场景5、Thread
- ThreadLocal 释放的方式有哪些
程序猿进阶
Java并发编程(多线程)java开发语言并发编程ThreadLocal线程池架构性能优化
ThreadLocal基础概念:IT-BLOG-CNThreadLocal是Java中用于在同一个线程中存储和隔离变量的一种机制。通常情况下,我们使用ThreadLocal来存储线程独有的变量,并在任务完成后通过remove方法清理这些变量,以防止内存泄漏。然而,在使用线程池时,线程会被重用,这可能导致ThreadLocal变量未被及时清理,从而引发内存泄漏问题。除了直接调用ThreadLocal
- ThreadLocal
一个在努力为老板实现梦想的搬砖工
springcloudjava开发语言
ThreadLocal原理API场景使用ThreadLocal思路代码原理ThreadLocal只有当前线程可以访问,每个线程都有自己的变量副本。线程消亡他也消亡,他是变量对象,不是线程。其中存储的内容只有当前线程能访问的APIvoidset(Tvalue)设置当前线程的threadlocal的值Tget()该方法返回当前线程threadlocal的值voidremoved()将当前线程threa
- sqlalchemy session.remove
youhebuke225
sqlAlchemysqlalchemy
sqlalchemy.session.remove()是一个用于管理SQLAlchemy会话生命周期的方法。它并不是用来删除数据库中的记录,而是用来关闭并删除当前的会话对象。当你的应用程序不再需要使用某个会话时,可以调用remove方法来清理资源。下面是一个简单的示例,展示了如何创建一个会话并在不再需要时调用remove方法来关闭会话:fromsqlalchemyimportcreate_engi
- ArrayList删除元素的细则
乐只乐之
技林漫步java
删除ArrayList数组中某个元素,通常会使用for循环匹配目标元素完成删除操作。publicvoidremove(Listlist,Stringstr){Iteratorit=list.iterator();while(it.hasNext()){if(str.equals(it.next())){it.remove();}}}publicvoidremove(Listlist,Strin
- CSDN文章无水印转成PDF
Hoxy.R
pdfswift开发语言
文章目录一、打开检查二、点击进入控制台三、在控制台中输入代码一、打开检查f11或者右键打开检查二、点击进入控制台三、在控制台中输入代码(function(){'usestrict';vararticleBox=$("div.article_content");articleBox.removeAttr("style");varhead_str="";varfoot_str="";varolder=
- docker使用实例
k5003
docker
删除DockerCE$sudoyumremovedocker-ce$sudorm-rf/var/lib/docker安装redisdockerrun-d--nameredis-p6379:6379-vredis:/data-erequirepass="123456"redis--appendonlyyes-nameredis-server:指定容器名称-p6379:6379:端口映射--requi
- Docker容器编程
neo_Ggx23
服务器docker容器javanginxredis
文章目录安装、卸载、配置镜像加速数据卷volume网络通讯DockerCompose容器编排docker-compose.yml命令清单相关实战Docker启动MySQL镜像Docker启动YapiDocker部署前后端分离项目安装、卸载、配置镜像加速卸载$sudoyumremovedocker\docker-client\docker-client-latest\docker-common\do
- java解析APK
3213213333332132
javaapklinux解析APK
解析apk有两种方法
1、结合安卓提供apktool工具,用java执行cmd解析命令获取apk信息
2、利用相关jar包里的集成方法解析apk
这里只给出第二种方法,因为第一种方法在linux服务器下会出现不在控制范围之内的结果。
public class ApkUtil
{
/**
* 日志对象
*/
private static Logger
- nginx自定义ip访问N种方法
ronin47
nginx 禁止ip访问
因业务需要,禁止一部分内网访问接口, 由于前端架了F5,直接用deny或allow是不行的,这是因为直接获取的前端F5的地址。
所以开始思考有哪些主案可以实现这样的需求,目前可实施的是三种:
一:把ip段放在redis里,写一段lua
二:利用geo传递变量,写一段
- mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性
dcj3sjt126com
mysql
timestamp有两个属性,分别是CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP两种,使用情况分别如下:
1.
CURRENT_TIMESTAMP
当要向数据库执行insert操作时,如果有个timestamp字段属性设为
CURRENT_TIMESTAMP,则无论这
- struts2+spring+hibernate分页显示
171815164
Hibernate
分页显示一直是web开发中一大烦琐的难题,传统的网页设计只在一个JSP或者ASP页面中书写所有关于数据库操作的代码,那样做分页可能简单一点,但当把网站分层开发后,分页就比较困难了,下面是我做Spring+Hibernate+Struts2项目时设计的分页代码,与大家分享交流。
1、DAO层接口的设计,在MemberDao接口中定义了如下两个方法:
public in
- 构建自己的Wrapper应用
g21121
rap
我们已经了解Wrapper的目录结构,下面可是正式利用Wrapper来包装我们自己的应用,这里假设Wrapper的安装目录为:/usr/local/wrapper。
首先,创建项目应用
&nb
- [简单]工作记录_多线程相关
53873039oycg
多线程
最近遇到多线程的问题,原来使用异步请求多个接口(n*3次请求) 方案一 使用多线程一次返回数据,最开始是使用5个线程,一个线程顺序请求3个接口,超时终止返回 缺点 测试发现必须3个接
- 调试jdk中的源码,查看jdk局部变量
程序员是怎么炼成的
jdk 源码
转自:http://www.douban.com/note/211369821/
学习jdk源码时使用--
学习java最好的办法就是看jdk源代码,面对浩瀚的jdk(光源码就有40M多,比一个大型网站的源码都多)从何入手呢,要是能单步调试跟进到jdk源码里并且能查看其中的局部变量最好了。
可惜的是sun提供的jdk并不能查看运行中的局部变量
- Oracle RAC Failover 详解
aijuans
oracle
Oracle RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会影响用户的使用,连接到故障节点的用户会被自动转移到健康节点,从用户感受而言, 是感觉不到这种切换。
Oracle 10g RAC 的Failover 可以分为3种:
1. Client-Si
- form表单提交数据编码方式及tomcat的接受编码方式
antonyup_2006
JavaScripttomcat浏览器互联网servlet
原帖地址:http://www.iteye.com/topic/266705
form有2中方法把数据提交给服务器,get和post,分别说下吧。
(一)get提交
1.首先说下客户端(浏览器)的form表单用get方法是如何将数据编码后提交给服务器端的吧。
对于get方法来说,都是把数据串联在请求的url后面作为参数,如:http://localhost:
- JS初学者必知的基础
百合不是茶
js函数js入门基础
JavaScript是网页的交互语言,实现网页的各种效果,
JavaScript 是世界上最流行的脚本语言。
JavaScript 是属于 web 的语言,它适用于 PC、笔记本电脑、平板电脑和移动电话。
JavaScript 被设计为向 HTML 页面增加交互性。
许多 HTML 开发者都不是程序员,但是 JavaScript 却拥有非常简单的语法。几乎每个人都有能力将小的
- iBatis的分页分析与详解
bijian1013
javaibatis
分页是操作数据库型系统常遇到的问题。分页实现方法很多,但效率的差异就很大了。iBatis是通过什么方式来实现这个分页的了。查看它的实现部分,发现返回的PaginatedList实际上是个接口,实现这个接口的是PaginatedDataList类的对象,查看PaginatedDataList类发现,每次翻页的时候最
- 精通Oracle10编程SQL(15)使用对象类型
bijian1013
oracle数据库plsql
/*
*使用对象类型
*/
--建立和使用简单对象类型
--对象类型包括对象类型规范和对象类型体两部分。
--建立和使用不包含任何方法的对象类型
CREATE OR REPLACE TYPE person_typ1 as OBJECT(
name varchar2(10),gender varchar2(4),birthdate date
);
drop type p
- 【Linux命令二】文本处理命令awk
bit1129
linux命令
awk是Linux用来进行文本处理的命令,在日常工作中,广泛应用于日志分析。awk是一门解释型编程语言,包含变量,数组,循环控制结构,条件控制结构等。它的语法采用类C语言的语法。
awk命令用来做什么?
1.awk适用于具有一定结构的文本行,对其中的列进行提取信息
2.awk可以把当前正在处理的文本行提交给Linux的其它命令处理,然后把直接结构返回给awk
3.awk实际工
- JAVA(ssh2框架)+Flex实现权限控制方案分析
白糖_
java
目前项目使用的是Struts2+Hibernate+Spring的架构模式,目前已经有一套针对SSH2的权限系统,运行良好。但是项目有了新需求:在目前系统的基础上使用Flex逐步取代JSP,在取代JSP过程中可能存在Flex与JSP并存的情况,所以权限系统需要进行修改。
【SSH2权限系统的实现机制】
权限控制分为页面和后台两块:不同类型用户的帐号分配的访问权限是不同的,用户使
- angular.forEach
boyitech
AngularJSAngularJS APIangular.forEach
angular.forEach 描述: 循环对obj对象的每个元素调用iterator, obj对象可以是一个Object或一个Array. Iterator函数调用方法: iterator(value, key, obj), 其中obj是被迭代对象,key是obj的property key或者是数组的index,value就是相应的值啦. (此函数不能够迭代继承的属性.)
- java-谷歌面试题-给定一个排序数组,如何构造一个二叉排序树
bylijinnan
二叉排序树
import java.util.LinkedList;
public class CreateBSTfromSortedArray {
/**
* 题目:给定一个排序数组,如何构造一个二叉排序树
* 递归
*/
public static void main(String[] args) {
int[] data = { 1, 2, 3, 4,
- action执行2次
Chen.H
JavaScriptjspXHTMLcssWebwork
xwork 写道 <action name="userTypeAction"
class="com.ekangcount.website.system.view.action.UserTypeAction">
<result name="ssss" type="dispatcher">
- [时空与能量]逆转时空需要消耗大量能源
comsci
能源
无论如何,人类始终都想摆脱时间和空间的限制....但是受到质量与能量关系的限制,我们人类在目前和今后很长一段时间内,都无法获得大量廉价的能源来进行时空跨越.....
在进行时空穿梭的实验中,消耗超大规模的能源是必然
- oracle的正则表达式(regular expression)详细介绍
daizj
oracle正则表达式
正则表达式是很多编程语言中都有的。可惜oracle8i、oracle9i中一直迟迟不肯加入,好在oracle10g中终于增加了期盼已久的正则表达式功能。你可以在oracle10g中使用正则表达式肆意地匹配你想匹配的任何字符串了。
正则表达式中常用到的元数据(metacharacter)如下:
^ 匹配字符串的开头位置。
$ 匹配支付传的结尾位置。
*
- 报表工具与报表性能的关系
datamachine
报表工具birt报表性能润乾报表
在选择报表工具时,性能一直是用户关心的指标,但是,报表工具的性能和整个报表系统的性能有多大关系呢?
要回答这个问题,首先要分析一下报表的处理过程包含哪些环节,哪些环节容易出现性能瓶颈,如何优化这些环节。
一、报表处理的一般过程分析
1、用户选择报表输入参数后,报表引擎会根据报表模板和输入参数来解析报表,并将数据计算和读取请求以SQL的方式发送给数据库。
2、
- 初一上学期难记忆单词背诵第一课
dcj3sjt126com
wordenglish
what 什么
your 你
name 名字
my 我的
am 是
one 一
two 二
three 三
four 四
five 五
class 班级,课
six 六
seven 七
eight 八
nince 九
ten 十
zero 零
how 怎样
old 老的
eleven 十一
twelve 十二
thirteen
- 我学过和准备学的各种技术
dcj3sjt126com
技术
语言VB https://msdn.microsoft.com/zh-cn/library/2x7h1hfk.aspxJava http://docs.oracle.com/javase/8/C# https://msdn.microsoft.com/library/vstudioPHP http://php.net/manual/en/Html
- struts2中token防止重复提交表单
蕃薯耀
重复提交表单struts2中token
struts2中token防止重复提交表单
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年7月12日 11:52:32 星期日
ht
- 线性查找二维数组
hao3100590
二维数组
1.算法描述
有序(行有序,列有序,且每行从左至右递增,列从上至下递增)二维数组查找,要求复杂度O(n)
2.使用到的相关知识:
结构体定义和使用,二维数组传递(http://blog.csdn.net/yzhhmhm/article/details/2045816)
3.使用数组名传递
这个的不便之处很明显,一旦确定就是不能设置列值
//使
- spring security 3中推荐使用BCrypt算法加密密码
jackyrong
Spring Security
spring security 3中推荐使用BCrypt算法加密密码了,以前使用的是md5,
Md5PasswordEncoder 和 ShaPasswordEncoder,现在不推荐了,推荐用bcrpt
Bcrpt中的salt可以是随机的,比如:
int i = 0;
while (i < 10) {
String password = "1234
- 学习编程并不难,做到以下几点即可!
lampcy
javahtml编程语言
不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路。编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解。作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦。
1、确定目标
学习编程语言既充满乐趣,又充满挑战。有些花费多年时间学习一门编程语言的大学生到
- 架构师之mysql----------------用group+inner join,left join ,right join 查重复数据(替代in)
nannan408
right join
1.前言。
如题。
2.代码
(1)单表查重复数据,根据a分组
SELECT m.a,m.b, INNER JOIN (select a,b,COUNT(*) AS rank FROM test.`A` A GROUP BY a HAVING rank>1 )k ON m.a=k.a
(2)多表查询 ,
使用改为le
- jQuery选择器小结 VS 节点查找(附css的一些东西)
Everyday都不同
jquerycssname选择器追加元素查找节点
最近做前端页面,频繁用到一些jQuery的选择器,所以特意来总结一下:
测试页面:
<html>
<head>
<script src="jquery-1.7.2.min.js"></script>
<script>
/*$(function() {
$(documen
- 关于EXT
tntxia
ext
ExtJS是一个很不错的Ajax框架,可以用来开发带有华丽外观的富客户端应用,使得我们的b/s应用更加具有活力及生命力。ExtJS是一个用 javascript编写,与后台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。
ExtJs最开始基于YUI技术,由开发人员Jack
- 一个MIT计算机博士对数学的思考
xjnine
Math
在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进。为什么要深入数学的世界?作为计算机的学生,我没有任何企图要成为一个数学家。我学习数学的目的,是要想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些。说起来,我在刚来这个学校的时候,并没有预料到我将会有一个深入数学的旅程。我的导师最初希望我去做的题目,是对appe