Java事务管理
因为热爱,所以拼搏。 –RuiDer
事务
1 | 事务是什么? |
事务原则
1 | 数据库事务遵从ACID原则。 |
举例说明
1 | 事务管理在现实生活中被常用,比如两个人在线转money, |
我看好自己的认真
因为热爱,所以拼搏。 –RuiDer
1 | 事务是什么? |
1 | 数据库事务遵从ACID原则。 |
1 | 事务管理在现实生活中被常用,比如两个人在线转money, |
因为热爱,所以拼搏。 –RuiDer
Java Database Connectivity(JDBC)JDBC以一种统一的方式来对各种各样的数据库进行
存取。和ODBC一样,JDBC为开发人员隐藏了不同数据库的不同特性。另外,由于JDBC建立在
Java的基础上,因此还提供了数据库存取的平台独立性。JDBC定义了4种不同的驱动程序:
JDBC-ODBCBridge、JDBC-native driverbridge、JDBC-networkbridge、PureJavadriver。
在一个多层的企业级应用中,更大的可能是在客户端和一个EJB进行通信,采用EJB建立数据库连接。
为了实现和改进可伸缩性和系统性能, 也可以采用连接缓冲池(connection pool)优化数据库连接。
Java Naming and Directory Interface (JNDI)JNDI API被用于执行名字和目录服务。
它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,后者在应用服务
器中的对象。在JNDI中,在目录结构中的每一个结点称为context。每一个JNDI名字都是相对
于context的。应用可以通过这个初始化的context经有这个目录树来定位它所需要的资源或对象。
JNDI相对与JDBC来说是他的灵活性,程序员不需要关心“具体的数据库后台是什么?JDBC驱动程序
是什么?JDBC URL格式是什么?访问数据库的用户名和口令是什么?”等等这些问题,程序员编写
的程序应该没有对 JDBC 驱动程序的引用,没有服务器名称,没有用户名称或口令 —— 甚至没有
数据库池或连接管理。而是把这些问题交给J2EE容器来配置和管理,程序员只需要对这些配置和管
理进行引用即可。
因为热爱,所以拼搏。 –RuiDer
> Spring:一个分层架构(结构),一站式的Java开源框架。
Spring由7个模块组成
Spring Core:核心容器,提供了Spring的基本功能,基本组件是BeanFactory,
使用SpringIoc控制反转功能将配置信息与依赖规范和程序代码分开。
Spring上下文:用于配置信息的组件,包括JDBC,EJB,Email等配置信息的配置。
SpringDao:提供了一个有意义的异常结构,负责数据库方面的异常错误以及抛出程序运行时的相关异常。
Spring Web:web集成Struts,负责处理多web请求。
Spring ORM:提供JDBC,JNDI,Hibernate,orm等数据库事物对象。
Spring Aop: 通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。所以,
可以很容易地使 Spring 框架管理的任何对象支持AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供
了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
Spring MVC 框架: MVC框架是一个全功能的构建 Web应用程序的 MVC 实现。通过策略接口,MVC框架变成为
高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。模型由javabean
构成,存放于Map;视图是一个接口,负责显示模型;控制器表示逻辑代码,是Controller的实现。Spring框架的功能
可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同J2EE 环境(Web 或EJB)、独立应用程序、测试环境之间重用。
一站式:one stop,就是说Spring是一个完美的服务体系,夸赞语句。
因为热爱,所以拼搏。 –RuiDer
1 | EL:Expression Language 表达式语言,是在JSP 2.0引入的一个新特性,用于JSP文件中数据访问。它的作用相当于替代了JSP中 |
1 | 1.数据访问 |
1 | 形如 ${var} |
1 | 1.${empty var}表示var是否为空,如果为空,输出true,否则,输出false |
EL表达式定义了是一个隐含对象,他们都是java.util.Map类型,EL表达式可以通过他们Web应用中的数据。
1
2
3
4
5
6
7
8
9
10
11
12
13
14 1.applicationScope:把Web应用范围内的属性名和属性值进行映射。
2.cookie:把客户请求的cookie名和cookie对象进行映射
3.header:把Http请求头部的项目名和所有匹配的项目值进行映射。比如${header.host}等同于<%=request.getHeader("host")%>
4.headerValues:把请求头部的项目名和项目值的数组进行映射。
5.initParam:把web中的初始化参数名和参数值进行映射。
6.pageScope:把页面范围内的属性名和属性值进行映射。
7.pageContext:代表javax.servlet.jsp.PageContext对象
8.param:把请求参数名和参数值进行映射。
9.paramValues:把请求参数名和请求参数值的数组映射。
10.requestScope:请求范围内的属性名和属性值的映射。
11.sessionScope:会话范围内的属性名和属性值进行映射。
注意:对于含有 "-"字符的属性名或者参数名,必须采用"[]"来访问数据。比如:
${user["user-name"]}而不是${user.user-name}
EL表达式访问的数据是特定范围内的,不是任何命名变量,比如web应用范围内的,会话范围内,page范围内等特定范围内的数据。
1
2
3
4
5
6 比如:
<%
String name="tom";
%>
${name}
访问上面命名的name变量是错误的,如果在上面所述的特定范围内没有name属性名或者参数名,返回结果为空。
做过项目的都知道,EL表达式会在项目中普遍使用,尤其在前后端整合,相当便捷。这是我的博客
因为热爱,所以拼搏。 –RuiDer
ls 显示文件或目录
-l 列出文件详细信息l(list)
-a 列出当前目录下所有文件及目录,包括隐藏的a(all)
mkdir 创建目录
-p 创建目录,若无父目录,则创建p(parent)
cd 切换目录
touch 创建空文件
echo 创建带有内容的文件。
cat 查看文件内容
cp 拷贝
mv 移动或重命名
rm 删除文件
-r 递归删除,可删除子目录及文件
-f 强制删除
find 在文件系统中搜索某文件
wc 统计文本中行数、字数、字符数
grep 在文本文件中查找某个字符串
rmdir 删除空目录
tree 树形结构显示目录,需要安装tree包
pwd 显示当前目录
ln 创建链接文件
more、less 分页显示文本文件内容
head、tail 显示文件头、尾内容
ctrl+alt+F1 命令行全屏模式
stat 显示指定文件的详细信息,比ls更详细
who 显示在线登陆用户
whoami 显示当前操作用户
hostname 显示主机名
uname 显示系统信息
top 动态显示当前耗费资源最多进程信息
ps 显示瞬间进程状态 ps -aux
du 查看目录大小 du -h /home带有单位显示目录信息
df 查看磁盘大小 df -h 带有单位显示磁盘信息
ifconfig 查看网络情况
ping 测试网络连通
netstat 显示网络状态信息
man 命令不会用了,找男人 如:man ls
clear 清屏
alias 对命令重命名 如:alias showmeit=”ps -aux” ,另外解除使用unaliax showmeit
kill 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。
gzip:
bzip2:
tar: 打包压缩
-c 归档文件
-x 压缩文件
-z gzip压缩文件
-j bzip2压缩文件
-v 显示压缩或解压缩过程 v(view)
-f 使用档名
例:
tar -cvf /home/abc.tar /home/abc 只打包,不压缩
tar -zcvf /home/abc.tar.gz /home/abc 打包,并用gzip压缩
tar -jcvf /home/abc.tar.bz2 /home/abc 打包,并用bzip2压缩
当然,如果想解压缩,就直接替换上面的命令 tar -cvf / tar -zcvf / tar -jcvf 中的“c” 换成“x” 就可以了。
shutdown
-r 关机重启
-h 关机不重启
now 立刻关机
halt 关机
reboot 重启
将一个命令的标准输出作为另一个命令的标准输入。也就是把几个命令组合起来使用,后一个命令除以前一个命令的结果。
例:grep -r “close” /home/* | more 在home目录下所有文件中查找,包括close的文件,并分页输出。
dpkg (Debian Package)管理工具,软件包名以.deb后缀。这种方法适合系统不能联网的情况下。
比如安装tree命令的安装包,先将tree.deb传到Linux系统中。再使用如下命令安装。
sudo dpkg -i tree_1.5.3-1_i386.deb 安装软件
sudo dpkg -r tree 卸载软件
注:将tree.deb传到Linux系统中,有多种方式。VMwareTool,使用挂载方式;使用winSCP工具等;
APT(Advanced Packaging Tool)高级软件工具。这种方法适合系统能够连接互联网的情况。
依然以tree为例
sudo apt-get install tree 安装tree
sudo apt-get remove tree 卸载tree
sudo apt-get update 更新软件
sudo apt-get upgrade
将.rpm文件转为.deb文件
.rpm为RedHat使用的软件格式。在Ubuntu下不能直接使用,所以需要转换一下。
sudo alien abc.rpm
vim三种模式:命令模式、插入模式、编辑模式。使用ESC或i或:来切换模式。
命令模式下:
:q 退出
:q! 强制退出
:wq 保存并退出
:set number 显示行号
:set nonumber 隐藏行号
/apache 在文档中查找apache 按n跳到下一个,shift+n上一个
yyp 复制光标所在行,并粘贴
h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)
/etc/passwd 存储用户账号
/etc/group 存储组账号
/etc/shadow 存储用户账号的密码
/etc/gshadow 存储用户组账号的密码
useradd 用户名
userdel 用户名
adduser 用户名
groupadd 组名
groupdel 组名
passwd root 给root设置密码
su root
su - root
/etc/profile 系统环境变量
bash_profile 用户环境变量
.bashrc 用户环境变量
su user 切换用户,加载配置文件.bashrc
su - user 切换用户,加载配置文件/etc/profile ,加载bash_profile
sudo chown [-R] owner[:group] {File|Directory}
例如:还以jdk-7u21-linux-i586.tar.gz为例。属于用户hadoop,组hadoop
要想切换此文件所属的用户及组。可以使用命令。
sudo chown root:root jdk-7u21-linux-i586.tar.gz
因为热爱,所以拼搏。 –RuiDer
上一篇文章介绍了hexo+yilia主题添加访问量,如果需要点击hexo+yilia主题添加访问量
本文介绍畅言方式
1 | widgets: |
因为热爱,所以拼搏。 –RuiDer
hexo添加访问量统计功能可以用百度的站长统计、leancloud,还有不蒜子,我用的是不蒜子。
将下面代码添加在 /themes/yilia/layout/_partial/footer.ejs的末尾
1 | <script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script> |
将下面代码添加在 /themes/yilia/layout/_partial/footer.ejs中末尾。
1
2
3 <span id="busuanzi_container_site_uv">
本站访客数<span id="busuanzi_value_site_uv"></span>人次
</span>
将下面代码添加在 /themes/yilia/layout/_partial/article.ejs 中,位置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <!-- 添加代码 -->
<span id="busuanzi_container_page_pv">
本文总阅读量<span id="busuanzi_value_page_pv"></span>次
</span>
<!-- article.ejs自身代码-->
<span id="busuanzi_container_page_pv">
本文总阅读量<span id="busuanzi_value_page_pv"></span>次
</span>
</div>
</a>
</div>
<% } %>
</div>
<div class="article-info article-info-index">
<%if(post.top){%>
<div class="article-pop-out tagcloud">
<i class="icon-tuding"></i>
<a class="article-tag-list-link color3">置顶</a>
</div>
我们直接就这样放在yilia主题中,首页也会显示该网页的访问量,没法正常使用,所以我加一个判断,如果是首页不显示该文章的访问量,下面这段代码添加在/themes/yilia/layout/_partial/article.ejs的header的日期后面:
1 | <!-- article自身代码 --> |
Everything is ok..
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true