@Autowired vs @Resource vs @Inject 的区别

为了实现依赖注入 DI 而引入,Java 提供 javax.annotation.Resource , javax.inject.Inject 注解,Spring 框架提供了 org.springframework.beans.factory.annotation.Autowired 。依赖注入(Denpendency Injection,DI), 控制反转(Inversion of Control, IoC),主要的目的是去除代码耦合。具体可参考其他资料。 使用 Spring 注入的方式有多种,可以写在 field 上,可以写在 setter 方法 Read more ...


Spring Interceptor vs Filter 拦截器和过滤器区别

Spring的Interceptor(拦截器)与Servlet的Filter有相似之处,都能实现权限检查、日志记录等。不同的是: Filter Interceptor Summary Filter 接口定义在 javax.servlet 包中 接口 HandlerInterceptor 定义在org.springframework.web.servlet 包中   Filter 定义在 web.xml Read more ...

2017-08-14 Spring , Java , Web

Spring @Component vs @Service vs @Controller vs @Repository

@Component, @Service, @Controller 和 @Repository 四个注解在 Spring 中等同于在XML中定义 <bean> 标签,他们注解的对象都是 Spring 的 Bean。@Service,@Controller 和 @Repository 本质上就是 @Component。 @Controller,@Service,@Repository 他们在功能上几乎相同,主要的功能是用来给应用分层。 @Controller: 处理对应的请求,对应表现层(控制层),使用 @RequestMapping Read more ...

2017-08-13 Spring , Bean , Java , DI , IoC

使用 itsdangerous 签名校验

一般在开发网站时使用 session 或者 cookie 来处理用户登陆等等权限问题,而在移动应用中要验证用户身份采用登录时给用户生成一个 token(令牌)的方式。每次用户发出需要身份认证的请求时,就需要验证一次 token 是否有效,无效的情况包括 token 无法被解析等。在向不可信环境发送数据时,确保数据经过签名,使用只有自己知道的密钥来签名数据,加密后发送,在取回数据时,确保没有人篡改过。 Python 有个 itsdangerous 包含了很多安全校验 token 验证相关的方案。 itsdangerous 就是这样一个签名校验的工具,内部 Read more ...

2017-08-12 itsdangerous , python , sign

Java enum 相等比较 == or equal

能否使用 == 来针对 enum 来比较? 答案是:YES, 枚举谨慎的实例化管理允许使用 == 来进行比较,JLS 8.9 Enums 中有Java 语言的规范定义: 枚举类型除了定义时的枚举常量外没有其他实例 如果显示的实例化枚举类型,会产生编译时异常。final clone 方法保证了 Enum 变量不会被 clone, 序列化的机制也保证了重复的实例在反序列化时不会创建额外的枚举变量。通过反射实例化 Enum 类型是被禁止的。所有这四种方式确保了 enum 类型不存在额外的实例,除了定义时的常量 因为每一个枚举常量只有一个实 Read more ...

2017-08-10 Java , enum

在 Ubuntu 下安装并使用 Cinnamon

Ubuntu 16.04 LTS 或者 Ubuntu 17.04 下可以通过 PPA 来安装 Cinnamon,感谢维护者 命令如下: sudo add-apt-repository ppa:embrosyn/cinnamon sudo apt update && sudo apt install cinnamon 当安装完成之后,Log out 或者 重启,在登录界面选择 Cinnamon 来使用。 我在使用一段时间之后才发现没有安装 Nemo 的插件,以至于右击都没有压缩的选项,通过一下步骤安装 Nemo 以及相关套件。 Read more ...

2017-08-07 Ubuntu , Linux , Cinnamon , LinuxMint

给常用的 git 命令添加 alias 提升效率

之前有写过 Git alias 的文章, 不过已经过去了很多时间,现在对 Git 命令越来越熟悉就希望更快的提高输入效率,也越来越感受到 alias 的重要性,不管是直接在 bash 中的 alias 还是 Git 的 alias。所以准备找一些合适的 alias 添加到自己的 gitconfig 文件中长期使用。 添加 alias 使用命令的方式添加 git config --global alias.co checkout git config --global alias.ci commit git config --global alias Read more ...

2017-08-04 git , alias , linux , oh-my-zsh , zsh , bash

每天学习一个命令:使用 split 分割文件

split 命令可以用来分割文件,支持按文本分割,也支持二进制分割。常见的格式 split [OPTION]... [FILE [PREFIX]] 输出的结果为多个文件 PREFIXaa,PREFIXab … 默认的大小是 1000 行,默认的 PREFIX 是 x。 如果没有 FILE 文件,或者当 FILE 参数是 - 时,会从标准输入读取。 举例 按文件大小 -C 指定分割文件大小: split -C 10M large_file.mp4 small 将大文件 large_file.mp4 按照 10M 大小进行分割,并指定分割 Read more ...

2017-08-04 split , command , linux

Python logging 模块使用

日志是每一个编程语言必备的模块,借助日志不仅可以监控在线服务的状态,也可以在出问题之后迅速的定位问题。 基本使用 # -*- coding: utf-8 -*- import logging import sys # 获取 logger 实例,如果参数为空则返回 root logger # 最基本的入口,该方法参数可以为空,默认的 logger 名称是 root,如果在同一个程序中一直都使用同名的 logger,其实会拿到同一个实例,使用这个技巧就可以跨模块调用同样的 logger 来记录日志 logger = logging.getLogger Read more ...

2017-08-03 python , logging , logger

使用 setuptools 创建并发布 python 包

If you write something, and you want to share with the world. And let others use through pip install, you can upload your package to pypi. Create project layout Put your code in some fold like douban. Write your own setup.py to give basic info about this lib or package. And you Read more ...

2017-08-02 python , linux , packages , module

最近文章

  • VideoLingo:一键自动将视频翻译成中文字幕 我之前的文章和视频中也介绍过好几款,或收费或开源的视频翻译工具,包括
  • 每天学习一个命令:wrk 单机性能测试工具 wrk 是一个使用 C 编写的 HTTP 压力测试工具,性能基准测试工具。可以在单机多核 CPU 的条件下,充分利用系统的高性能 IO,epoll,kqueue 等,通过多线程和事件,对目标机产生大量的负载。
  • 爱沙尼亚电子公民身份启动及邮件转发 今年 6 月份的时候申请 了爱沙尼亚电子居民卡,其实一个月左右就已经审批通过了,但是一直懒得没有去拿,直到 9 月底,终于抽出空来去了趟东京的爱沙尼亚大使馆,领取了实体卡片。
  • 使用 Tailscale Funnel 暴露本地服务 之前我介绍过 Tailscale,也介绍过如何使用 Tailscale 的出口节点功能配置流量出口,今天再介绍一个 Tailscale 的功能 Tailscale Funnel,可以将本地服务完全地暴露在互联网上。Tailscale Funnel 允许将运行在私有 Tailnet 上的 Web 服务与公共互联网共享,提供了一种简单的方式,无需配置复杂的网络。
  • 我购买了一台懒猫微服 前些天写了一篇文章,表达了一下我对懒猫微服 的一点看法,但是前两天没忍住还是在微信小程序上下了单,与此同时我还在京东购买 [[SER8]],准备将两台微型主机放到一起对比一下,并根据自己的需求分别给这两台机器不同的作用,懒猫微服在购买之前我就已经打算将其作为照片存储的一个备份,我在之前的文章中也提过一些我的疑虑,在机器拿到手之后有一些疑虑依然还是没有打消,尤其是数据安全性方面的问题,如果这个问题无法解决,那么我最多也只能将其作为照片备份的一个存储。另外就是会将懒猫微服作为家用的服务器,不折腾放在家中。但是 SER8 我则会根据之前我配置的 NAS 重新安装 [[Proxmox VE]] 然后安装 [[OpenMediaVault]] 作为 NAS 管理放在家中。