VCGPGSZO


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索

java注解

发表于 2017-08-19 | 分类于 笔记本 | 阅读次数
字数统计 436 | 阅读时长 2

说起 java 的注解,通常被用于 javadoc 的生成和一些框架中。
用过 Spring Boot 的都会被其快捷的开发方式所折服,我们完全不需要配置那些令人头疼的 xml 文件。
只需要专注于代码的编写即可,而做到这些都归功于 java 的注解。

另外值的一说的是注解依靠的是 java 的反射实现的

定义

java 的注解是在 JDK5 的时候引入的,其提供了四种元注解,专门负责新注解的创建工作。

1
2
3
4
5
6
7
8
@Retention(RetentionPolicy.RUNTIME) // 生命周期
@Target({ElementType.FIELD,ElementType.METHOD}) // 范围
@Documented // 用于生成文档
@Inherited // 表示子类也可继承父类注解
public @interface Test { // 自定义注解使用 @interface
// 方法定义为无参数的。可使用 default 来定义默认值
int value() default 0; // 只有一个的话,只能为 value
}

阅读全文 »

java动态代理

发表于 2017-08-14 | 分类于 笔记本 | 阅读次数
字数统计 150 | 阅读时长 1

动态代理

动态代理是设计模式中的代理模式的一种,指为其他对象提供一种代理而能够访问控制该对象

其好处在于可以在不修改代码的情况下实现对原方法的扩展

example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
interface App { void say(); }
class AppImpl implements App {
@Override
public void say() {
System.out.print("hello world");
}
}
class ProxyHandler implements InvocationHandler {
private Object proxied;
public ProxyHandler(Object proxied) { this.proxied = proxied; }
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(proxied,args);
}
}
public class Demo {
public static void main(String[] args) {
AppImpl app = new AppImpl();
App proxyApp = (App) Proxy.newProxyInstance(App.class.getClassLoader()
,new Class[]{App.class}
,new ProxyHandler(app));
proxyApp.say();
}
}

mybatis分页

发表于 2017-08-12 | 分类于 笔记本 | 阅读次数
字数统计 380 | 阅读时长 2

关于 web 开发中的分页实现

在 web 开发中大体上有两套分页实现

  • 假分页

    先查询所有数据然后通过前端分页(数据量大

  • 真分页

    根据分页页数查询对应数据(数据量少

真分页

思路

Page 类的属性

  1. 当前页
  2. 每页数据量 = 30
  3. 总页数

伪代码

1
2
3
4
5
6
7
8
9
10
11
12
{
if (Page.当前页 == null) {
Page.当前页 = 1;
else {
Page.当前页 = 当前页
}
总记录数 = 通过 count() 获取总记录;
Page.总页数 = (总记录数 % 30 == 0) ? 总记录数 / 30 : (总记录数 / 30) + 1;
查询起始条数 = (当前页 - 1) * 每页数据量;
查询结束记录 = 当前页 * 每页数据量;
最终的数据 = 在数据库中查询从起始条数 ~ 结束条数的记录
}

大体上就是这种思路
我们公司是用 Mybatis 拦截器来做的就是了 - 。-

利用 Mybatis 拦截器实现分页

Mybatis 拦截器实现使用的是 java 的动态代理(InvocationHandler)
Plugins 就是代理类对象,他实现了 InvocationHandler 接口。所以最后会执行 Plugins 的 invoke 方法;

阅读全文 »

使用 docker 快速部署 Oracle

发表于 2017-08-06 | 分类于 笔记本 | 阅读次数
字数统计 214 | 阅读时长 1

至于为什么用 docker 部署而不直接使用虚拟机?docker 好处都有啥,谷歌一下你就知道 :)
本质上就是部署一台已经安装了 oracle 的 linux。

  • 以下操作默认你已安装完 docker

安装 Oralce

1
2
docker pull alexeiled/docker-oracle-xe-11g # 获取镜像
docker run -h "oracle" --name "oracle" -d -p 49160:22 -p 49161:1521 -p 49162:8080 alexeiled/docker-oracle-xe-11g # 启动并部署镜像

连接 Oracle

1
2
3
4
5
docker ps
docker exec -it CID /bin/bash # 此处 CID 为 CONTAINER ID
sqlplus
sys as sysdba # 默认有两个账户 sys 与 system 默认密码都是 oracle
oracle
阅读全文 »

换电脑遇到的问题

发表于 2017-08-05 | 分类于 笔记本 | 阅读次数
字数统计 211 | 阅读时长 1

由于这刚换了 MBP 所以还不是很熟悉,在配置项目上出了很多问题

环境变量配置

Mac 配置环境变量不像 Windows 那样简单。不过也绝不复杂就是了。
首先设置环境变量需要在对应的终端配置文件里写入你要配置的环境变量
例如系统默认的 bash 终端

1
2
3
echo 'export M2_HOME=/Users/hluglk/dev/maven/apache-maven-3.0.4' >> ~/.bash_profile
echo 'export PATH=$PATH:$M2_HOME/bin' >> ~/.bash_profile
source ~/.bash_profile

ehcache 无法写入数据

导致这个问题的原因是项目中对于 ehcache 配置的路径是用的绝对路径;也就是 / 开头,在项目运行的时候他会从根目录开始找寻。
而他又没有系统权限,所以就导致项目初始化失败了。
不过为什么 Windows 就没问题呢?

123…7
hluglk

hluglk

sudo   rm   -rf   /

34 日志
3 分类
27 标签
GitHub PSNINE Steam Telegram 网易云音乐 v2ex
友链
  • RyuuNote
  • IT蘑菇
© 2017 hluglk
Hosted by Coding Pages
由 Hexo 强力驱动
主题 - NexT.Pisces
0%