jyoryo 发布的文章

散布于应用中的多处的 功能被称为横切关注点。
通过依赖注入(DI),可以对应用中的对象之间进行解耦;通过AOP,可以将关注点与它们所影响的对象之间进行解耦。比如场景:事务、安全、缓存等。
在面向切面编程时,我们可以在集中一个地方定义通用功能,可以通过声明的方式定义这个功能要以何种方式在何处应用,而不用修改受影响的类。

Spring只支持方法级别的连接点

- 阅读剩余部分 -

最近将之前关于Spring的书重新拿出来温故一番,并进行总结。

Bean容器

Spring的Bean容器其实不止一个,归结起来可以分为2类:

  • Bean工厂(由org.springframework.beans.factory.BeanFactory接口定义),是最简单的Bean容器,提供基本的DI支持;
  • 应用上下文(由org.springframework.context.ApplicationContext接口定义),基于BeanFactory构建,提供应用框架级别的服务。

常用应用上下文

  • AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文;
  • AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文;
  • ClassPathXmlApplicationContext:从类路径下的一个或多个Spring的XML配置文件中加载应用上下文;
  • FileSystemXmlApplicationContext:从文件系统下的一个或多个Spring的XML配置文件中加载应用上下文;
  • XmlWebApplicationContext:从Web应用下的一个或多个Spring的XML配置文件中加载应用上下文。

- 阅读剩余部分 -

背景:最近业务上经常遇到客户试用系统一段时候后,由于试用阶段对系统不熟悉,试用后需要将使用阶段的测试数据都要清空,然后进行正式使用系统。清空基础数据相关的表操作,但是有外键约束,是无法直接删除,需要先将有外键关联的表的数据清空,解除外键约束。

如果才能获取有哪些表引用了该表呢?其实我们可用从MySQL中的information_schema.KEY_COLUMN_USAGE来获取。

-- 获取所有信息
SELECT *
FROM information_schema.KEY_COLUMN_USAGE
WHERE CONSTRAINT_SCHEMA = '{database}'
  AND REFERENCED_TABLE_NAME = '{table}';

-- 获取引用表及外键关联列名
SELECT TABLE_NAME, COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE CONSTRAINT_SCHEMA = '{database}'
  AND REFERENCED_TABLE_NAME = '{table}';

表information_schema.KEY_COLUMN_USAGE字段说明

- 阅读剩余部分 -

本教程是基于搭载A10 arm处理器的Cubieboard 1!

一、安装Linux/Debian系统至TF/SD卡中

1. 下载系统镜像文件

Debian的wheezyjessie都支持Cubieboard,个人建议下载安装jessie版,毕竟版本比较新,软件源中的软件包会比较新,而且兼容性比较好。
Minimal Debian "Server" image

2. 将系统镜像文件写入TF/SD卡中

至少提供2G的TF/SD卡以及读卡器

  • Linux系统写入方法:

    # 将系统镜像重命名
    mv 2018-05-17-a10-debian-jessie-server-2gb.img.bz2 a10-debian-jessie-server.img.bz2
    # 获取TF卡对应的设备号,可以看到类似mmcblk0 或者 sdX。请将下面的内容<MMC_DEVICE>进行替换
    dmesg
    bzip2 -dc a10-debian-jessie-server.img.bz2 > /dev/<MMC_DEVICE>
  • Windows系统写入方法:
    先通过支持解压bz2的解压软件(7-Zip)解压系统镜像文件,然后用Win32 Disk Imager将解压的文件写入TF卡中。

3. 让Cubieboard获取1G内存而不是512M

通过上面的步骤,我们的的系统已经制作好了,但是此时如果插入Cubieboard上运行的话,系统只能显示512M内存,而不是1G内存。我们需要更改替换系统的bootloader,让系统识别1G内存。

- 阅读剩余部分 -

Linux PHP 7.2.11源码编译安装

说明:

  • 安装php版本为7.2.11
  • php解压后工作空间目录:/data/workspace/php
  • php安装目录:/data/soft/php

1、下载并解压PHP源码

# 下载
wget http://cn2.php.net/distributions/php-7.2.11.tar.gz
# 解压
tar zxf php-7.2.11.tar.gz -C /data/workspace
mv php-7.2.12 php
cd php

2、安装所需依赖和工具

apt-get install libxml2-dev libssl-dev libcurl4-gnutls-dev libwebp-dev libjpeg-dev libpng-dev libmcrypt-dev libicu-dev

- 阅读剩余部分 -

Linux Nginx 1.15.5源码编译安装

说明:

  • 安装nginx版本为1.15.5,其他版本类似
  • nginx解压后工作空间目录:/data/workspace/nginx
  • nginx安装目录:/data/soft/nginx
  • nginx依赖opensslpcrezlib,这些包可以下载解压,但不用安装

1、下载并解压nginx、openssl、pcre、zlib源码

# nginx (https://nginx.org/download/)
wget https://nginx.org/download/nginx-1.15.5.tar.gz
# openssl
wget https://www.openssl.org/source/openssl-1.1.0i.tar.gz
# pcre
wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
# zilb
wget https://www.openssl.org/source/openssl-1.1.0i.tar.gz
# 解压
tar zxf nginx-1.15.5.tar.gz -C /data/workspace
tar zxf openssl-1.1.0i.tar.gz -C /data/workspace
tar zxf pcre-8.42.tar.gz -C /data/workspace
tar zxf zlib-1.2.11.tar.gz -C /data/workspace
# 将nginx目录改名
mv nginx-1.15.5 nginx
cd nginx

2、安装所需依赖和工具

apt-get install make gcc g++ perl libperl-dev

- 阅读剩余部分 -

XML文档树图

xml_nodetree.gif

<?xml version="1.0" encoding="utf-8"?>
<bookstore> 
  <book category="COOKING"> 
    <title lang="en">Everyday Italian</title>  
    <author>Giada De Laurentiis</author>  
    <year>2005</year>  
    <price>30.00</price> 
  </book>  
  <book category="CHILDREN"> 
    <title lang="en">Harry Potter</title>  
    <author>J K. Rowling</author>  
    <year>2005</year>  
    <price>29.99</price> 
  </book>  
  <book category="WEB"> 
    <title lang="en">Learning XML</title>  
    <author>Erik T. Ray</author>  
    <year>2003</year>  
    <price>39.95</price> 
  </book> 
</bookstore>

一个xml文档由元素节点,属性节点,文本节点构成,其中bookstore被称为文档元素或根元素,也是一个元素节点。XML 文档中的每个成分都是一个节点Node

- 阅读剩余部分 -