自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 【无标题】使用Go (或者 Python) 执行外部命令,直接模式和 Shell模式的区别

Go 执行外部命令的两种方式

2024-09-03 20:47:04 328

原创 解决 Django + Gunicorn + Nginx 的 ”upstream prematurely closed connection while reading response“ 问题

解决 Django + Gunicorn + Nginx 环境下的 upstream premeaturely closed 问题

2023-01-03 15:45:13 663

翻译 REST API设计最佳实践

REST API 设计最佳实践

2022-07-07 14:27:53 635

原创 Docker compose up -d 与 Docker restart 的区别

在现场修改 docker 容器的代码或配置时,docker-compose up -d 和 docker restart 的区别。

2022-07-07 11:10:32 14569

原创 Hibernate 自动生成 表结构的坑

Hibernate 经过配置,可以自动生成表结构,非常方便。但在过程中,我遇到了几个坑。不能生成外键的问题标注了 @ManyToOne + @JoinColumn,但生成的表却不带 Foreign Key! 真是奇怪后来发现,是 Hibernate 用的 MySQL 的 Dialect 问题。要用 MySQL 5.5 以上的 InnoDBDialect 也管用换了 Dialect,立即就...

2019-05-23 17:31:08 487

原创 Hibernate ManyToOne Bidirectional JoinTable 的一个大坑

背景由于对象设计的关系,我愚蠢地用了多级继承。在持久化的时候,还用了 PerClass Join 的方式。这下子惹了麻烦。最底层的表要往上 Join 很多次才能形成完整的数据,如果同处于较底层的两个表 Join,就费死劲了,有一次还突破了 MySQL 61 层 Join 的限制。非常槽糕。问题由于我不想通过 ManyToOne - JoinColumn / OneToMany - Mapp...

2019-05-08 15:50:19 565

原创 BLOB 还是文件?

我们在设计系统时,有时候需要保存一些二进制格式的文件。最常见的是:小图片大段文本(比如交换机配置)经过思考,我的建议是:如果要保存的文件都不大,比如 2MB 以内,就使用 BLOB原因是,用 BLOB 统一放在数据库里,容易备份,容易迁移。而因为文件不大,不会对数据库造成太大压力。反之,就要考虑文件系统了。...

2019-04-09 17:16:42 2250

原创 JPA CascadeType.ALL 的坑

今天遇到了一个 JPA cascadeType 不管用的问题,折腾了半天。现象:一个 Server 对象, ManyToOne Unidirectional 包含了 OS 对象。但是保存 Server 对象时, CascadeType.PERSIST 不管用。非得用 CascadeType.ALL 才行。可是我又不想用 CascadeType.ALL, 因为里面也含有 CascadeTyp...

2019-04-08 17:49:28 2134

原创 Windows 环境下,通过 Putty 配置SSH免认证登录

这篇文章写得比较清楚,按照它做,也能配通。 http://www.jb51.net/LINUXjishu/33586.html 要点是:使用 puttykeygen.exe 生成密钥。 缺省是 RSA 2048 位。 点击保存私钥(可以不设置密码保护),不要生成公钥,因为PUTTY生成的公钥OpenSSH无法使用.SSH密码方式登入远端Linux服务器/VPS,创建.ssh/aut...

2018-05-30 09:14:49 2366

原创 学习 Docker

今天看了一下 Docker 的内容。感觉它是把一系列的应用组件容器化。比如,容器化的 MySQL,容器化的 Tomcat,容器化的 Httpd。轻量+隔离 = 组件级的虚拟机 –> 快速部署好处是,隔离。比如,在一台服务器上,你如果没有 Docker,通常你只能部署一个 MySQL 的实例。但是,有了 Docker,你可以起多个 MySQL 的实例。 这样,部署起来就灵活得多,...

2018-05-29 15:46:52 185

原创 MVC 架构-业务逻辑写在哪儿

问题之前自己写乱写的时候,总是把业务逻辑写在 Controller 里面。 也看到有人说,要把逻辑放在 DAO 之上的 Service 层。 在最近的一个小项目中,发现逻辑稍微复杂一点儿,把业务逻辑放在 Controller 里面就不可维护了。感觉又象是回到了以前过程式的编程,一点儿面向对象的味道都没有了。 那么,到底在哪些写业务逻辑?解决在 SO上查了一查,发现大家都建...

2018-04-16 15:25:50 10762

原创 Mac Homebrew 管理服务

在 Centos 下,用 systemctl 启停服务非常方便。 而在 Mac 下,可以用 Homebrew 提供的方法,管理服务。具体命令是brew service listbrew service start brew service stop十分方便Tomcat, Mariadb 这类服务,都可以用 brew service 来管理。...

2018-02-25 14:34:45 2435 1

原创 自行车棚效应

自行车棚效应争论一些琐碎的事情而逃避那些困难的问题是一种常见的现象,这里有大量著名的理论描述了这一现象。有一个最著名的理论就是帕金森琐碎定律 (Parkinson’s Law of Triviality),它描述了:一个组织中的成员往往会把过多的经历,花费在一些琐碎的事情上。帕金森用了一个虚构例子来解释了这个定律:在一个审核新核电站计划的委员会中,会员把主要的时间用于争论员工自行车棚使...

2018-02-23 09:25:10 3927 1

原创 Fusion 下创建虚拟机模板

目标小型 Linux (CentOS) 虚拟机能作为模板,供不同的应用安装环境使用思路安装 CentOS Minimal 版本导出成 OVF 文件每次创建新虚机时,导入这个 OVF 文件,生成新的虚机

2017-04-24 10:13:00 2487

原创 解决 OVF/OVA 导入时 Unsupported Hardware Family 问题

问题在工作中,我们经常需要把虚机拷给客户。 客户在导入时,因为两边 VMware 版本的问题,有时用报错:Unsupported Hardware Family vmx-12 (或者 vmx-10)原因是导出侧的 VMware 版本太低,不支持虚机上的虚拟硬件版本。这里列出了不同的 VMware 版本与虚拟硬件版本的兼容性。https://kb.vmware.com/selfservice/mic

2017-04-21 10:07:45 10262

原创 Dao 的 Interface 和 Service 的 Interface

之前写 Spring MVC 时,傻乎乎的。由于不懂 Spring 是怎么进行注入的。以为只能靠 @Autowired,依赖 Interface 注入。其实 @Autowired 主要是根据类型进行注入。但是一旦在@Transactional 注解下,使用 Proxy,就要 Interface(这部分我到现在还不太懂… )这篇讲到了 Spring Proxy http://stackoverflow

2017-03-27 16:52:19 3128 1

原创 对 Spring MVC 的一些错误理解

用过 Spring MVC 开发过一些项目。觉得它很好用,层次清楚,一旦搭建好框架,使用起来十分简单。但是,由于没有经过系统的学习和牛人指点,对 Spring MVC 的理解还有很多错误。Service 层和 DAO 层我之前图简单,没有理解 Service 层和 DAO 层各是干什么用的。直接在 DAO 上做了一个简单的封装就是 Service 了。实际上不是这样。Service 层可以用来处理

2017-03-27 15:59:43 451

原创 Spring Multipart 的一个坑

Spring Multipart 的一个坑用 Spring MVC 写文件上传,解析。但是怎么都不成功。Required MultipartFile parameter ‘file’ is not present, syntactical error.折腾了一个上午,才发现是在 web.xml 里面,对spring-mvc 的 Servlet 配置时,要打开 Mulitpart 。否则,Tomca

2017-02-09 14:50:24 951

原创 Tomcat 7 在 Centos 6 上启动慢的解决办法

问题Tomat 7 在 Centos 6 上,每次重启 Tomcat 时,总要花3~4分钟。通过日志看,是 SecureRandom 的计算用了太长的时间。从网上查,这是 Oracle 的一个 Bug。需要在你的 JRE 中,在 lib/seecurity 下编辑 java.security。把securerandom.source=file:/dev/urandom改成securerandom

2016-09-27 08:36:41 2623

原创 Spring 的使用与配置

理解 @Component, @Repository, @Controller, @Service其实后三个本质上都是 @Component。不过 @Repository 有一些多的功能,比如能把数据库的 Exception 转到更高层。 @Repository 可以通过 @Repository("name") 来标识一个 Bean, 十分好用。装配到 InterfaceSpring 在 @Aut

2016-08-15 21:59:05 421

原创 Eclipse 与 Git

背景我自己用 Eclipse 写程序,外面有一个公共的 Gitlab 服务器。 我想对自己的代码进行版本管理。在本地建立 Git 库Eclipse 本身集成一个 EGit,你可以在用它在本地建一个 Git 库。在你的 Project 上点右键,然后 Team > Share Project ,系统提示你新建一个 Repository,就好了。比较奇葩的是 EGit 提供一个选项,缺省在本项目的根目

2016-08-15 21:23:21 402

原创 @ManyToMany 映射

@ManyToMany 在对象关系中很常见。我觉得它有两个特点:必须使用 JoinTable, 否则没有办法表示在 cascade 操作时要小心。举例: 张三、李四都选了数学课。上到一半,张三退学了。如果在 @ManyToMany 中设置为 cascade = CascadeType.ALL,则在删除张三时,会把数学课也删除。所有的学生都没有数学课上了。结论:关联对象的 Cascade

2016-08-13 22:03:26 432

原创 Hibernate 的配置

初学 Hibnerate,虽然写了几个程序,但有时觉得其配置很魔幻。尤其是和 Spring 一块用的时候,好像不用 XML 也可以,直接用 Properties 文件就可以了,看上去十分诡异。仔细做了对比,才明白其中的规则。XML 优先 对于 Hibernate 而言, 同样在 ClassPath 下, hibernate.cfg.xml 要优于 hibernate.propertiesXML

2016-08-13 21:56:31 407

原创 路由表 (RIB) 与转发表 (FIB)

参见 http://aftabsiddiqui.com/index.php/ip-routing-table-rib-and-forwarding-table-fib/ 路由表 (Routing Table, Routing Info Base) 和转发表 (Forwarding Info Base) 是两种不同的表。它们共享相同的信息,但是用于不同的目的。RIB 路由表RIB 存储所有的路由信

2016-07-01 19:48:08 60332 2

原创 Spring MVC 中的 RedirectAttribute

在 Spring MVC 中,要 redirect 时,如何传参数? 如果把参数加到 url 的 query string 里则显得不太漂亮。这时,可以用 RedirectAttribute。@RquestMapping("/test")String test(Model model, RedirectAttributes ra){ ra.addFlashAttributes("msg",

2016-03-23 20:04:16 1374

原创 MySQL 中的 InnoDB 与 MyISAM

MySQL 有两个引擎,MyISAM 与 InnoDB。最初的 MySQL 缺省用的是 MyISAM,因为它更简单,更快。 而在 5.5 之后,MySQL 缺省使用 InnoDB 了。因为 InnoDB 对事务的支持更好,比如,InnoDB 支持外键约束,而 MyISAM 不支持。在MyISAM 中,你可以删除一个被其它记录引用的记录而不报错。如果要查看一个表的引擎。show table stat

2016-03-23 18:11:54 329

原创 递归删除文件

问题:在 Linux 下,我希望把某个目录下,所有文件名为 2013????.xml 的文件删除,这些文件散布在不同深度的不同目录下。解决方案: find dir -name 2013*.xml -delete简单吧!其实 find 还有很多功能,比如针对每一个找到的文件或目录执行一个文件。

2016-03-22 17:23:56 471

原创 Spring MVC 使用心得

这段时间用 Spring MVC 进行了开发,觉得很方便。不过也踩到了一些坑,有一些心得。Spring Autowired 注入通常的套路是先声明一个接口,再定义一个或多个该接口的实现。 Autowired 时侯只用接口类型就可以,Spring 会自动找接口的实现注入。 如果接口有多个实现,则可以入 @Bean 定义一个 返回具体对象新实例的函数,并在类中用 @Configuration 来配置

2016-03-09 15:01:55 504

原创 Tomcat 中的 Log

catalina.log vs localhost.logcatalina.log 是 Tomcat 内部的 Log 而 localhost.log 是 Tomcat 容器为 localhost 这个实例而建的 log。

2016-02-15 19:01:44 619

原创 Eclipse JSTL 标签告警

有时 Eclipse 在显示 JSTL 标签时告警: unknown tag “c: forEach”这时,把<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>把 % 与 @taglib 中间的空格去掉就好了。神奇吧?!

2016-02-15 18:59:40 713

原创 在 Tomcat 中使用 JSTL

Tomcat 在发行时自带了 JSTL在 webapps/examples/WEB-INF/lib 目录下,有两个文件:standard.jarjstl.jar 把这两个文件拷贝到你的 WEB-INF/lib 目录下即可。

2016-02-15 18:26:19 2478

原创 JSP 中的 Error Page

在 web.xml 中配置<error-page> <error-code>404</error-code> <location>/WEB-INF/pages/error/404.jsp</location></error-page><error-page> <error-code>500</error-code> <location>/WEB-INF/pages

2016-02-15 18:22:19 675

原创 Cisco Syslog 处理

Cisco Error decoder 下线了根据 Cisco 的网站,Cisco Error Decoder 下线了,不再维护。所有内容都在 cisco.com 上直接查。有好有坏。好处是能查到一个直接相关的文档,里面什么都有。坏处是不专门,需要二级转跳。Python 的页面抓取程序使用 Python 优秀的 requests 库,可以实现页面抓取。具体如下:#!/usr/bin/pythoni

2016-01-25 21:30:54 1119

原创 Accounttable vs Responsible

根据: http://www.diffen.com/difference/Accountability_vs_Responsibility The main difference between responsibility and accountability is that responsibility can be shared while accountability cannot. B

2016-01-20 10:56:51 1204

原创 Excel中的Array Formula

Excel 的 Array Formula 我以前都没听说过。但很强大。比如 A1:A10 是单价, B1:B10是销量, 则你选 C1:C10 之后,输入 =A1:A10*B1:B10, 然后按 Cmd + Shift + Enter系统会自动把A/B两列一一相乘,然后填到C1:C10的位置。 这种 Array Formula 的特点是:防误删 - 你要么把 C1:C10 全删掉,不能删除任何

2016-01-12 07:52:27 4843

原创 wget 与 curl

wget 与 curl 都是通过命令行抓取 URL 的利器。 从这篇文档 http://daniel.haxx.se/docs/curl-vs-wget.html 中显示, 它们的相同与不同如下。相同支持 FTP, HTTP and HTTPS可以发 HTTP POST requests支持 HTTP cookies设计为脚本方式,不需要用户交互都是开源软件,90 年代开始开发

2015-12-08 11:43:05 459

原创 Eclipse Project 无故消失的解决办法

有时候, Eclipse 中的 Project 无缘无故就不见了。你去看文件系统中,所有的目录,啥都在,就是 Project 没了。咋办?不要急,可以在 File -> Import 中 选择 “Existing project into Workspace”好了,这下就好了,齐活了,小功告成!

2015-12-02 21:43:45 7160 1

原创 理解 RPO 与 RTO

RPORecovery Point ObjectiveRTORecovery Time Objective

2015-12-02 21:37:22 1782

原创 录制屏幕解说

有时候我们写完了一个应用,希望自己录制一个带解说的 Demo ,可以让观众对我们的应用有一个更直观的认识。如果你用的是 Mac ,则可以用 QuickTime Player,对,是 Player 录制屏幕解说。步骤如下:如果你要解说的内容很长,最好提前准备一个脚本,否则你可能讲着讲着就讲不下去了,以前录的就白费了。找一个相对安静的环境,把你家里的猫关起来,以防止它在录的过程中“喵”的一声。在Q

2015-11-29 09:21:25 931

原创 制作图标小记

当我们设计完成一个项目时,往往需要 Logo。 如果艺术设计能力不足,往往会比较苦恼。以下是我的一些经验。 在某个项目里,我想制作一个 125x35 的 Logo。当时的步骤如下:通过 Google Image 找一个波浪状的背景作素材。最好要大一些的。比如宽度在 1000 像素以上的。使用 Pinta 把它裁剪成和 125x35 相同的比例,尺寸尽可以大。使用 Pinta 新建一图层,在

2015-11-29 08:38:00 409

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除