个人面试和项目开发中的实用干货分享

以下是个人在学习中遇到的难点和入行以来发现的各种坑,有错误的地方还请大家指出。
1.在mysql中,每个数据库最多可创建20亿个表,一个表允许定义1024列,每行的最大长度为8092字节
(不包括文本和图像类型的长度)。当表中定义有varchar、nvarchar或varbinary类型列时,如果向表中插入
的数据行超过8092字节时将导致Transact-SQL语句失败,并产生错误信息。SQL Server对每个表中行的数量没有
直接限制,但它受数据库存储空间的限制。每个数据库的最大空间1048516TB,所以一个表可用的最大空间为10485
16TB减去数据库类系统表和其它数据库对象所占用的空间。
2.mysql中的游标:在数据库中,游标是一个十分重要的概念。游标简单来说就是查询出来的数据索引,
通过对游标的操作(第一个位置、最后一个位置、上一个位置、下一个位置)可以遍历出数据。。
游标总是与一条SQL  选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条
记录)和结果集中指向特定记录的游标位置组成。
4.spring容器会挂在web容器上,随着web容器的创建而创建。
5.web.xml的初始化顺序:context-param --> listener --> filter --> servlet 。
web容器读取加载了它的若干配置参数,然后再通过一个ServletContextEvent事件通知它的监听器:
“我启好了哦”。事件是包含消息内容的,这个发给ContextLoaderListener的事件里,就包含了ServletContext
即web容器的上下文,web容器的上下文里就包含了context-param(我们在①处配置的那些参数),
那么我们的ContextLoaderListener就能读到我们的contextConfigLocation的配置信息了。接到了事件通知,
又从通知事件里拿到了配置参数,接下来去巴拉巴拉启动spring容器就顺利成章
6.maven依赖中的scope属性:
compile默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,
当然后续的测试,运行周期也参与其中,是一个比较强的依赖。
test scope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit。
runntime表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。
provided provided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供
system 从参与度来说,也provided相同,不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,
一定需要配合systemPath属性使用。
7.esayUi中的load和reload方法的区别:load方法它传给后台的分页信息是从第一页开始的。
reload方法,使用方式也跟load的一样,$(“#grid”).datagrid(“reload”,{ });但它传给后台的分布信息是当前的页码,
就是实现刷新当前页的功能
8.tomcat只能承受200线程同时访问
三月 03, 2017 6:07:34 下午 org.apache.tomcat.util.net.JIoEndpoint createWorkerThread
信息: Maximum number of threads (200) created for connector with address null and port 80
9.spring容器会在项目启动时为里面配置的bean创建了一个对象(scope属性为singleton,默认就是单例的),
如果配置的是scope=“prototype”,每次调用getBean方法时会创建新的对象
在默认情况下,只要在Spring容器中配置了一个bean,容器在启动时就会实例化该bean,单例模式。
如果在Spring配制文件时设置懒加载模式(lazy-init=”true”),在getBean时才会实例化对象。
如果scope=”prototype”时,无论lazy-init的值是什么都只会在使用时才会创建,当struts2的
action和spring容器整合的时候,action的scope设置成prototype。
10.maven引入spring框架只需要搜索springframework ,引入hibernate:hibernate-core和hibernate-entitymanager
11.help命令只能显示shell内部的命令帮助信息。help pwd;help cd;
而对于外部命令的帮助信息只能使用man命令或者info命令查看。man tar;man 
12.测试多线程高并发:jconsole+jmeter
jconsole在jdk的bin目录下,jmeter是apache的一个开源软件,很小很小
其中jconsole用来监控web应用的负载情况,包括内存、cpu、线程数、句柄数等等;
jmeter用来产生高并发,指定并发量和访问地址,得到丢失率和平均响应时间。
整体就是先开jconsole来监控,再用jemter模拟高并发
13.linux中vi 编辑器中的复制与粘贴:
1、移动光标到你要开始复制的那行,按3yy,就可以复制3行了
2、可以直接用3,10y复制第3行到第10行按p就是粘贴,你想粘贴到哪一行,直接移动光标过去就可以了
查看redis服务:ps -ef | grep -i redis
启动redis: cd/usr/local/redis/;./bin/redis-server  ./redis.conf
14.mysql数据库建立索引:CREATE INDEX 索引名 ON 表名(表中的某个字段),
删除索引:drop index index_name on table 
15.查看一张表中的所有索引:show keys/index from table;
16.事务传播行为
PROPAGATION_REQUIRED 如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。
PROPAGATION_SUPPORTS 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。但是对于事务同步的事务管理器,PROPAGATION_SUPPORTS与不使用事务有少许不同。
PROPAGATION_MANDATORY 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
PROPAGATION_REQUIRES_NEW 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
PROPAGATION_NOT_SUPPORTED 总是非事务地执行,并挂起任何存在的事务。
PROPAGATION_NEVER 总是非事务地执行,如果存在一个活动事务,则抛出异常
PROPAGATION_NESTED如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务, 则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行
17.有return的情况下try catch finally的执行顺序
1、不管有木有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,
返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
18.mvc注解驱动的作用:
<mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,
简写形式可以让初学都快速应用默认配置方案。<mvc:annotation-driven /> 会自动注册
DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC
为@Controllers分发请求所必须的。并提供了:数据绑定支持,@NumberFormatannotation支持,
@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。
后面,我们处理响应ajax请求时,就使用到了对json的支持。
后面,对action写JUnit单元测试时,要从spring IOC容器中取DefaultAnnotationHandlerMapping
与AnnotationMethodHandlerAdapter 两个bean,来完成测试,取的时候要知道是<mvc:annotation-driven />
这一句注册的这两个bean。
19.同步与异步:
进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,
等前一件做完了才能做下一件事.就像早上起床后,先洗涮,然后才能吃饭,不能在洗涮没有完成时,就开始吃饭.
按照这个定义,其实绝大多数函数都是同步调用。
异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的
部件在完成后,通过状态、通知和回调来通知调用者。
20.聚合:所谓聚合,顾名思义,就是把多个模块或项目聚合到一起。分层架构、分模块开发,来提高代码的清晰和重用
21.代码中尽量不要写死一些参数,可以抽取到配置文件中(name=value),然后扫描,用ognl表达式取值:@Value("${name}")
22.SELECT * FROM  (  SELECT A.*, ROWNUM RN  
FROM (SELECT * FROM TABLE_NAME) A  WHERE ROWNUM <= 40  )  WHERE RN >= 21  
其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。
ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。
23.mysql的存储引擎:innoDB.若要修改默认引擎,可以修改配置文件中的default-storage-engine
mysql除了聚合函数外的其他函数:
24.多个filter的执行顺序
先执行带有url-pattern标签的filter,再执行带有servlet-name标签的filter,
如果同为url-pattern或servlet-name,则会按照在web.xml中的声明顺序执行。
25.javaScript,typeof的返回值有undefined boolean string number object function
26.创建一张表,数据全部来源与另一张表:CREATE TABLE liyang AS SELECT * FROM liyang_test
27.查看Linux是Redhat 还是centos 还是:more /etc/issue
28.vi编辑器跳转行:nG,输入:行数+G,跳转到最后一行:"G"
vi编辑器设置行号:":set nu"
动态查看日志:tail -f 文件名
shift+zz 保存并退出
剪切块,用d
剪切整行用dd
粘贴:p
yy复制当前行
29.linux远程登录到另一台服务器:ssh ip@username
30.查看一个存储过程里的代码:select text from all_source where type = 'PROCEDURE' and name = 'PRO_DERIV_PRODUCT_ENT'
31.清空catalina.out文件:catalina.out:echo ''>catalina.out
32.oracle表分区:alter table P_TCN_INFO(表名) add PARTITION P201709(表分区名) values less than 
(TO_DATE(' 2017-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))(分区的value值) tablespace TCN_TABLESPACE(表空间名);
33.数据库进程卡死的处理:
1.查看所有的连接session:select session_id from v$locked_object;
2.根据sid和你登录的帐户找到seria;SELECT sid, serial#, username, osuser FROM v$session where sid = 779;
3.杀死进程:ALTER  SYSTEM KILL SESSION '779,54579';
34.plsql调试打印出错误信息:声明一个变量result_msg varchar2(100);然后用SQLCODE、SQLERRM这两个关键字来获取异常信息,然后在exception后面打印出来。
EXCEPTION
WHEN OTHERS THEN
 result_msg := SQLCODE || ' ' || SQLERRM;
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值