实习周记(附):学习笔记
Posted 欧阳青星
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实习周记(附):学习笔记相关的知识,希望对你有一定的参考价值。
因为本人自己有一个存笔记的文件体系,这些知识比较散,整理后就进入自己的体系了,这里就放出未整理(实习期间的笔记)。
本人是javaweb,如果有同样方向的同学,看到下面的不了解的名词时尽量能够查一下看一看,应该在工作中会接触到。
1.rewriteBatchedStatements = true 驱动才会帮你批量执行SQL
需要注意的是,即使rewriteBatchedStatements=true, batchDelete()和batchUpdate()也不一定会走批量: 当batchSize <= 3时,驱动会宁愿一条一条地执行SQL。所以,如果你想验证rewriteBatchedStatements在你的系统里是否已经生效,记得要使用较大的batch.
2.Maven一个项目管理工具 通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
3.消息树 包含真正的消息头和用户数据,结构是树状,消息树的根为Root,当消息被输入节点接收并解析时,将生成消息树
4.主从数据库 为了提高性能,写操作都交给主数据库,读操作交给从数据库
5.SSH (全称 Secure Shell)是一种加密的网络协议。使用该协议的数据将被加密,如果在传输中间数据泄漏,也可以确保没有人能读取出有用信息。要使用 SSH,目标机器应该安装 SSH 服务端应用程序,因为 SSH 是基于客户-服务模式的。
当你想安全的远程连接到主机,可中间的网络(比如因特网)并不安全,通常这种情况下就会使用 SSH。
Xshell 和 Xftp 都是 NetSarang 出品的优秀网络管理、安全传输工具。
Xshell 是一个免费的安全终端仿真器,可以作为 SSH、TELNET 或 RLOGIN 的终端模拟,能够从 Windows 平台安全连接 Linux 服务器;
Xftp 则是安全传输客户端,支持 FTP 和 SFTP 协议,两者都支持标签化的会话窗口。
6.Intellij idea
7.谷歌搜索 云帆翻墙工具 设置-扩展程序-拖拽 (不稳定) 老D http://laod.cn/
8.英文阅读习惯
9.ProcessOn 建立在并行计算和分布式存储架构之上 一个面向垂直专业领域的作图工具和社交网络
10.Spring boot 项目旨在帮助开发者更容易地创建基于Spring的应用程序和服务,使得现有的和新的Spring开发者能够最快速地获得所需要的Spring功能。
11.ssm Spring+SpringMVC+mybatis Spring来将各层进行整合,管理持久层(mybatis)管理handler
12.loh4j Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;
我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
13.Druid 通过长期在极高负载的生产环境中实际使用、修改和完善,让Druid逐步发展成最好的数据库连接池。Druid在监控、可扩展性、稳定性和性能方面都有明显的优势。
14.公钥(Public Key)与私钥(Private Key) 私有的钥匙,仅有用户才拥有.公开的钥匙,可公开发行配送,只要有要求即取得.
git的公钥和密钥可以 $ cat ~/.ssh/id_rsa.pub 和 $ cat ~/.ssh/id_rsa 来查看
15.把别人修改的分支 更新到 自己的分支上
可通过例如 $ git checkout master $ git pull 来完成
16.关于pull项目 建议步骤 1.在一个合适的地方建文件夹projectName 2.进入文件夹新建仓库 3.再进行pull
17. Spring的Controller和struts的Action
dao(数据访问对象):持久层,主要负责与数据库打交道
dto(数据传输对象):层间传递参数的对象
service(BO) - 服务层,又叫业务层
controller(action) 位于view与service层之间
SpringMVC @Controller 负责注册一个bean 到spring 上下文中
@RequestMapping 注解为控制器指定可以处理哪些 URL 请求
@Component 把普通pojo实例化到spring容器中
@Autowired 可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。
18.Hosts C:\\Windows\\System32\\drivers\\etc\\hosts 是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,
当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,
一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析,
如果发现是被屏蔽的IP或域名,就会禁止打开此网页!
19.$ git reset --hard 返回最新的一次提交的版本
20.能够有自己的作品集 包括其他不常用的框架,不一定全是自己开发,但是要能够熟悉,能够对项目作出优化,有足够多自己的注释。
如当前我需要有的 struts项目 springMVC项目
21.serialVersionUID 相当于java类的身份证。主要用于版本控制。
serialVersionUID作用是序列化时保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
有两种生成方式: 一个是默认的1L,比如:private static final long serialVersionUID = 1L;
一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:private static final long serialVersionUID = xxxxL;
22.在线激活 idea15 http://blog.csdn.net/xiao_jun_0820/article/details/50261137
里的连接http://www.iteblog.com/idea/key.php
23.Spring Quartz Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz
Spring中使用Quartz有两种方式实现:第一种是任务类继承QuartzJobBean,第二种则是在配置文件里定义任务类和要执行的方法,类和方法仍然是普通类。
很显然,第二种方式远比第一种方式来的灵活。
24.cron表达式
7个字段 允许值 允许的特殊字符 触发器利用一系列特殊字符
秒 0-59 , - * / 反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。
分 0-59 , - * / 星号(*)字符是通配字符,表示该字段可以接受任何可能的值。
小时 0-23 , - * / 井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。
月内日期 1-31 , - * ? / L W C 在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日。把“1W”放在月内日期字段中,表示把执行安排在当月的第一个工作日内。
月 1-12 或者 JAN-DEC , - * / 问号(?)字符和字母 L 字符只有在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值。所以,如果指定月内日期,可以在周内日期字段中插入“?”,表示周内日期值无关紧要。字母 L 字符是 last 的缩写。放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果“L”单独存在,就等于“7”,否则代表当月内周内日期的最后一个实例。所以“0L”表示安排在当月的最后一个星期日执行。
周内日期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选字段) 留空, 1970-2099 , - * /
表达式示例
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在 每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
0 6 * * * 每天早上6点
0 */2 * * * 每两个小时
0 23-7/2,8 * * * 晚上11点到早上8点之间每两个小时,早上八点
0 11 4 * 1-3 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 4 1 1 * 1月1日早上4点
25.mvc:view-controller
两种用法
1、重定向
<mvc:view-controller path="/" view-name="redirect:/admin/index"/>
即如果当前路径是/ 则重定向到/admin/index
2、view name
<mvc:view-controller path="/" view-name=admin/index"/>
如果当前路径是/ 则交给相应的视图解析器直接解析为视图
如
<bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="2">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="contentType" value="text/html"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
则得到的视图时 /WEB-INF/jsp/admin/index.jsp
mvc:resources 这个标签来帮你分类完成获取静态资源的责任。
26.Spring MVC集成Tiles使用方法
<%@taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles"%>
<html>
<head>
<title><tiles:getAsString name="title"/></title>
</head>
<body>
the title is:<tiles:getAsString name="title"/><br>
<tiles:insert name="header"/><br>
<tiles:insert name="content"/><br>
<tiles:insert name="footer"/><br>
</body>
</html>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
<tiles-definitions>
<definition name="template" page="/tiles/mainTemplate.jsp">
<put name="title" value="default title"/>
<put name="header" value=".header"/>
<put name="content" value="/tiles/content.jsp"/>
<put name="footer" value="/tiles/footer.jsp"/>
</definition>
<definition name="courseDetail" extends="template">
<put name="title" value="courseDetail title"/>
<put name="content" value="/tiles/courseContent.jsp"/>
</definition>
<definition name=".header" page="/tiles/header.jsp" controllerClass="Action.HeaderTilesController">
</definition>
</tiles-definitions>
# 标题
* 列表
*** 分割线
*words* 斜体
**words** 粗体
`codes` 代码
> 引用
![](){ImgCap}{/ImgCap} 图片
[]() 链接
     首行缩进
表格
| Tables | Are | Cool |
| ------------- |:-------------:| -----:|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
28.客户端工具插入中文是没问题的,但是用Java程序就变成问号了。
遇到这种问题肯定是字符集造成的,先检查数据库,表的字符集,没问题,
然后将连接字符串改为jdbc:mysql://xxxxx:3306/dbname?useUnicode=true&characterEncoding=utf-8解决问题了。
如果你的连接串是在xml文件中,请将&改为&客户端连接的时候默认似乎是GBK的,所以指定为utf8.
29.常用Linux 指令
ls -la 看当前目录下的文件
cd .. 上级目录
cd /home 切换到home目录下
scp -P 58422 ../target/gamedatasync.jar root@116.211.1.160:/home/sync/ 复制文件到远程
sz rz 下载 上传 注意先配置路径
rm -rf 目录名字 删除
mkdir 新建文件夹
tar -zcvf 压缩文件名.tar.gz tar -zxvf 压缩文件名.tar.gz 压缩 解压
./startup.sh 启动Tomcat
vi i Esc 查看编辑文件 ZZ退出
netstat –apn 查看端口情况
30.idea project Structure Artifacts配置 build make project打包
31.ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8; 从10001开始
COMMENT '注释'
DEFAULT 如果不插入给默认值
32. log4j
log4j.logger.operationrecord=INFO,operationrecord
log4j.appender.operationrecord=org.apache.log4j.FileAppender
log4j.appender.operationrecord.File=operationRecord.log
log4j.appender.operationrecord.layout=org.apache.log4j.PatternLayout
log4j.appender.test2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n
log4j.appender.operationrecord.Encoding=UTF-8
33. 数据库加密 md5 salt
所谓加Salt,就是加点“佐料”。当用户首次提供密码时(通常是注册时),由系统自动往这个密码里加一些“Salt值”,
这个值是由系统随机生成的,并且只有系统知道。然后再散列。而当用户登录时,系统为用户提供的代码撒上同样的“Salt值”,
然后散列,再比较散列值,已确定密码是否正确。
这样,即便两个用户使用了同一个密码,由于系统为它们生成的salt值不同,他们的散列值也是不同的。
即便黑客可以通过自己的密码和自己生成的散列值来找具有特定密码的用户,但这个几率太小了(密码和salt值都得和黑客使用的一样才行。
34. 多封装常用的自写的工具类
35. Java加密与解密的艺术
36. Java Archive file class、properties文件,是文件封装的最小单元;包含Java类的普通库、资源(resources)、辅助文件(auxiliary files)等
Web Archive file Servlet、JSP页面、JSP标记库、JAR库文件、HTML/XML文档和其他公用资源文件,如图片、音频文件等
37. Tomcat的conf文件夹里有个server.xml文件 端口号修改
bin目录主要是用来存放tomcat的命令 修改catalina可以设置tomcat的内存
conf目录主要是用来存放tomcat的一些配置文件
lib目录主要用来存放tomcat运行需要加载的jar包
logs目录用来存放tomcat在运行过程中产生的日志文件,非常重要的是在控制台输出的日志
temp目录用户存放tomcat在运行过程中产生的临时文件。
webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包、jar包的形式发布应用。
work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。
38. disabled会使文本框变灰,而且通过request.getParameter("name")得不到文本框中的内容(如果有的话),
readonly只是使文本框不能输入,外观没有变化,而且通过request.getParameter("name")可以得到内容。
Readonly只针对input(text / password)和textarea有效,而disabled对于所有的表单元素都有效,包括select, radio, checkbox, button等。
从"true" 改成 "" 即可解除
39. 持续集成
持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
40. EntityManager update
OperUser operUser = commonDAO.getEntityManager().find(OperUser.class, userId);
operUser.setOperPassword(newPassword); //方法执行完后即可更新数据
41 .value=""; .innerHTML = '修改后的文字内容';
42. dump (备份文件系统)
(1)在特定时刻,将整个储存装置或储存装置之某部分的内容记录在另一储存装置中。存储的目的通常是为了防止发生错误。
(2) 将具备可读格式的数据从主要或辅助储存体复制至外部媒体,如磁带、磁盘或打印机等媒体。
(3) 为收集错误信息而复制整个虚拟储存体或虚拟储存体之某部分的内容。
43. 文件的md5 文件签名。 Message-Digest Algorithm 5.
MD5将任意长度的[字节串"变换成一个128bit的大整数.并且它是一个不可逆的字符串变换算法.
换句话说就是.即使你看到源程序和算法描述.也无法将一个MD5的值变换回原始的字符串.
从数学原理上说.是因为原始的字符串有无穷多个.这有点象不存在反函数的数学函数.
MD5在论坛上、软件发布时经常用,是为了保证文件的正确性,防止一些人盗用程序,加些木马或者篡改版权,设计的一套验证系统。
每个文件都可以用MD5验证程序算出一个固定的MD5码来。软件作者往往会事先计算出他的程序的MD5码并帖在网上。
因此,在网上看到某个程序下载旁注明了MD5码时,可以把它记下来,下载了这个程序后用MD5验证程序计算你所下载的文件的MD5码,和你之前记下MD5码比较,就知道你下的是不是原版了。
44.
overflow:scroll; /*任何时候都强制显示滚动条*/
overflow:auto; /*需要的时候会出现滚动条*/
overflow-x:auto; /*控制X方向的滚动条*/
overflow-y:auto; /*控制Y方向的滚动条*/
45. 获取一个指定数据库的指定表的表结构 select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your_table_name' and table_schema = 'your_db_name';
46. 对一个东西一无所知的时候最好是能够看一下基础文档或者教程 再进行开发
否则后期浪费的时间将远超过节省下来没看的时间
47. <dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
以上是关于实习周记(附):学习笔记的主要内容,如果未能解决你的问题,请参考以下文章