古老的榕树

Java 定时器的几种用法

Java 定时器的几种用法,网络上转载的: package com.lid; import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class Test { public static void main(String[] args) { //timer1(); timer2(); //timer3(); //timer4(); } // 第一种方法:设定指定任务task在指定时间tim ... 阅读全文
转载于 2016-01-29 09:52 阅读(2336) 评论(0) 赞(0)

让 Go 代码自动加载

有时 Go 项目开发过程中,让新增、修改的代码智能编译重启,避免人为频繁 build 工作,是不错的事情。 然而 Go 是不会内置这些东西的, 目前 Go 领域,有哪些类似的库呢?我们可以使用第三方的库实现这种工作,但仅限于开发的阶段,正式服务环境,应该不是非常必要这么做。 第三方实现的类库有这两个,使用起来都很方便: gin https:/ ... 阅读全文
发表于 2016-04-16 15:14 阅读(5402) 评论(0) 赞(1)

Go 通过身份证号获取生日年龄性别

我记得之前看到一个 Java 版本,通过身份证号获取出生日期,年龄和性别这些有用的信息,但一时记不起具体出处了,因为现在的项目都采用了 Go 开发,找了相关的库,竟然找不到, 现在想用 Go 实现一个,自己动手丰衣足食,身份证号的位数代表的含义,通过百度百科可以查到,这是关键点,不再累赘说明,代码里说吧 //中国居民身份证 工 ... 阅读全文
发表于 2018-06-22 21:02 阅读(3017) 评论(0) 赞(3)

用 Go 开发终端接口服务--按需写 service 服务层逻辑

service 服务层是整个项目的枢纽部分,它调用下面 dao 数据层的函数,给上面 controller 控制层输送数据,此外,项目的业务逻辑、数据事务都在服务层完成的,结合以上特征,我们对服务层做法做了一些约定:服务层每个对外函数和 controller 控制层的接口是一一对应的,每个函数只为一个接口服务,保证所有业务逻辑都在服务层函数里实 ... 阅读全文
发表于 2019-05-14 16:54 阅读(2267) 评论(0) 赞(0)

HTML 中 JAVASCRIPT 应该放在哪里好

Java 的 Servlet 其实就是把 HTML 的内容用字符串的形式,输出给浏览器,浏览器接收到全部的内容后,才进入 HTML 的解析流程。 HTML 文档 DOM 树 装载顺序就不累赘了;平时有点疑惑,JAVASCRIPT 脚本放在哪个位置最好呢? 有的人喜欢 放在 HEAD 里,并在 STYLE 样式之后,有的喜欢放在 BODY 与 HTML 之间,理由是让 DOM 树全部装载完 ... 阅读全文
发表于 2016-03-07 23:34 阅读(2427) 评论(0) 赞(0)

Go 语言最新值得关注的 Web 框架

最近 Go 语言排名已经跌到前50名,其实这是 TIOBE 编程语言排行的数据,每个月都有,大不可作为学习或不学习的依据。有些语言不一定差,确排在不是很理想的位置。选语言要看市场的适应范围。选择通用的,生态环境繁荣的语言是错不了的,比如 Java C# C++ C 就是此类的语言。如果你觉得精力很充沛,需要学习借鉴其他语言的精髓,拓展个 ... 阅读全文
发表于 2015-08-04 23:14 阅读(2442) 评论(2) 赞(1)

用 Go 开发终端接口服务--环境搭建和开发工具选择

在主流操作系统上搭建 Go 环境,其实都很简单,一般分两个步骤。以下只对最常用的 Windows 系统和 Linux 系统搭建方法做介绍。 在 Go 官网上 https://golang.google.cn/dl/ 选择最新版的安装文件(截止目前最新版本是 go1.12.5)下载: windows 版本 :https://dl.google.com/go/go1.12.5.windows-amd64.msi linux 版本 :https://d ... 阅读全文
发表于 2019-05-14 14:52 阅读(1771) 评论(0) 赞(0)

2019年是让人难过的年度

每次离开之后,和老板都成为互信的朋友,他们会断断续续找我帮忙做一些小项目,与其说做项目糊口,不如说是一种友谊的保持。我在上家公司待了将近4年,尽自己所能,招兵买马,一共做了5,6个项目,最终还是没有成功,几年烧了几百万, 公司不堪重负, 还是被迫解散了,这一年里看着自己的同学陆陆续续离开,心里不是滋味。曾经为一些 ... 阅读全文
发表于 2019-06-06 00:17 阅读(1522) 评论(2) 赞(0)

Java 的异步线程片段使用

一个大操作,有多个子操作时,子操作有优先等级,和时间关系不太大,这时可以用上 Java 的异步线程来做了,特别有些不太重要又非常耗时的子操作,使用以下代码很适合: new Thread() { @Override public void run() { // TODO: 和时间关系不大,但又很耗时的子操作 } }.start(); 这种做法虽然很零碎,但很管用! ... 阅读全文
发表于 2016-01-03 12:09 阅读(2415) 评论(0) 赞(0)

Tomcat 8.0 同一个项目部署多个服务

看标题有点奇怪,同一个项目为什么部署多个服务?实际场景是这样的,Java 开发了一个 reset api 接口项目,部署到一个资源相当富裕的服务器上,单单使用一个 tomcat 跑 Java 项目总会遇到瓶颈,打个比方说,县城里只有一条高速,进城的车子来来往往,遇到赶集,车子越来越多,结果只能排成长龙车头车尾缓缓而行。但如果富裕的县城拥有 ... 阅读全文
发表于 2016-01-06 23:51 阅读(4267) 评论(0) 赞(0)

Go 语言的包

包是函数和数据的集合。用 package 关键字定义一个包。文件名不需要与包名一致。包名的约定是使用小写字符。 Go 包可以由多个文件组成,但是使用相同的 package <name> 这一行。让我们在文件 even.go 中定义一个叫做 even 的包。 Listing 3.1. 一个小包 package even ← 开始自定义的包 func Even(i int) bool { ← 可导出函数 ... 阅读全文
发表于 2016-04-12 21:08 阅读(2844) 评论(0) 赞(1)

Go 语言的一个配置文件解析器

Go 语言里找一个配置文件解析器,无意间发现了 https://github.com/robfig/config 这个库是 robfig 从 https://github.com/miguel-branco/goconfig 里分支修改过来的。看了下时间,已有一年多没动过了,估计库已相当完善,够用了。 在 github 里很多优秀的库或人,已经尘封了很长的时间,不知道什么原因,让人挺感慨的,毕竟前人花费 ... 阅读全文
发表于 2016-04-14 22:27 阅读(4414) 评论(0) 赞(1)

Go 常用 AES 加密解密代码

Go 中常用到 AES 对称加密解密算法,以下把关键代码分享出来: // AES 加密 AES-128。key string 长度:16, 24, 32 bytes 对应 AES-128, AES-192, AES-256 func AesEncrypt(origData, key []byte) ([]byte, error) { block, err := aes.NewCipher(key) if err != nil { return nil, err } blockSize := block.BlockSize() blockMode : ... 阅读全文
发表于 2018-05-10 15:19 阅读(2091) 评论(0) 赞(0)

Go 现在有哪些框架或类库

Go 现在有哪些框架或类库?在 Github 上有热心网友收集了一些,但远远不是全部,越到后面应该越丰富,收集的机构是awesome,观看地址是 : https://github.com/avelino/awesome-go http://awesome-go.com/ 还有一个go-kit 机构的: https://github.com/go-kit/kit ... 阅读全文
发表于 2015-12-27 00:25 阅读(2565) 评论(0) 赞(0)

用 Go 开发终端接口服务--Go 语言基本语法

Go 语言本身是一门极简的语言,它是 “大道至简” ,“少即是多” 理念的典范语言,而我们的接口服务用到东西又只是一小部分,所以学员需要掌握的基本语法是极少的。 Go 语言一共25个 关键字 ,对于新手很容易记 关键字 关键字 关键字 关键字 关键字 break default func interface select case defer go map struct chan else goto pa ... 阅读全文
发表于 2019-05-14 15:03 阅读(1491) 评论(0) 赞(0)

Eclipse 常用的快捷键

查看资源: 1. Ctrl+Shift+R:打开资源 这可能是所有快捷键组合中最省时间的了。这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xml。美中不足的是这组快捷键并非在所有视图下都能用。 2. Ctrl+shift+T: 打开类型(Open type)。 如果你不是有意磨洋工,还是忘记通过源码 ... 阅读全文
发表于 2016-03-14 23:37 阅读(2810) 评论(0) 赞(1)

用 Go 开发终端接口服务--测试已写好的接口

项目的测试工作相当重要,它直接影响到项目的质量。通常一个项目,虽然外围测试团队会进行高强度、多维度的测试,但作为开发者的我们,在测试团队正式测试之前,自己编写一些测试案例,输入一些常规的数据,测试接口是否返回正确的数据,这种工作是非常有必要的,开发者不能没有经过测试,就直接扔给测试团队。 编写测试案例,总体思 ... 阅读全文
发表于 2019-05-14 18:30 阅读(2063) 评论(0) 赞(0)

Go bytes.Buffer 和 strings.Builder 性能比较

Go 语言里字符拼接是常用到的,而且只是进行少量的字符串拼接,这次专门根据这个场景进行做基准测试,具体代码如下,如果测试方法有什么欠妥的地方,还请读者提出来。本次测试力求测试的公平性。 测试目标方法代码: /** strbyt.go package src import("bytes""fmt""strings") func AppendWithAdd() { var s string for i: =0; i < ... 阅读全文
发表于 2018-03-18 21:36 阅读(5407) 评论(0) 赞(0)

2020年的新冠肺炎

2020年新冠肺炎影响,远超过自己的预期,原先想正月十五就可以正常出门了,没想到至今还仍未完全解除防疫封锁。上周尝试去公司上班,没几天又回来了,现在待在租房这里远程办公。因为深圳的公交和地铁实在太挤了,公司年前搬到了很远的东边,每天上下班一来回需要4小时,也就是说每天在拥挤的公交上待上4小时,风险非常高。 到了上有 ... 阅读全文
发表于 2020-03-03 15:45 阅读(802) 评论(0) 赞(1)

Go 生成一个友好的 URL 工具类 slug

不经意发现 Go 写的一个工具类 slug,什么是slug?要知道浏览器上的地址,如果越规范,越容易被搜素引擎收录,比如 http://2goo.info/article/how-do-you-do 要比 http://2goo.info/article/1 好一些,从人的感官上说,前者,一看就比较好理解,搜索也是相似的。 那么我们写的博客,怎么样把标题转成 友好的 URL 呢? 这时 slug 就派 ... 阅读全文
发表于 2015-07-03 23:10 阅读(2546) 评论(0) 赞(0)

Go 优雅的 SQL 语句拼接库

大部分时间都在使用数据库的业务操作,对我而言,这一部分的东西很重要,当初选择了很接近于 Go 原生 database/sql 的 sqlx 库,使用习惯了,感觉已经够用了。不过有些项目,让我很怀念 mybatis 这种介于 ORM 的组件库,有时候,我们需要优雅的拼接一个 SQL 语句,而不是使用多个字符串拼接来操作,因为对面特定的 sql 语法和 sqlx 的 ... 阅读全文
发表于 2018-07-03 23:51 阅读(5983) 评论(0) 赞(1)

让 MySQL 支持 Emoji 表情

让 MySQL 支持 Emoji 表情,涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集。utf8mb4 和 utf8 到底有什么区别呢?原来以往的 MySQL 的 utf8 一个字符最多3字节,而 utf8mb4 则扩展到一个字符最多能有4字节,所以能支持更多的字符集。 解决方案:将 MySQL 的编码从 utf8 转换成 utf8mb4。 需要 MySQL 5.5.3 版本或以上版本 ... 阅读全文
转载于 2016-01-07 00:16 阅读(2880) 评论(0) 赞(0)

Ubuntu 14.04 搭建 vsftpd 服务器

需要搭建一个 独立 静态文件服务器,作为源服务器,给阿里云做 CDN 文件分发,我没有选择阿里云的 OSS 作为源存储,而是用自己的服务器。 多个应用程序选择 FTP 上传文件,到源文件服务器上。而放弃了挂载的方式,一来是集中管理,二来担心挂载出现问题,所以决定配置 FTP 服务器的方式做。我不能确定这种方式是否是最好的,在我这边 ... 阅读全文
发表于 2016-08-21 18:30 阅读(3331) 评论(0) 赞(2)

移动终端和 Java 服务端数据传输封装类

移动互联时代,常常碰到的是移动终端和服务端数据交互。终端把某种形式的数据传递给服务端,服务端收到数据后,需要根据双方约定的数据格式,取值再做处理。 传递的数据有哪些形式?一般分成三种形式 1:JSON 的流形式 2:纯粹的键值对形式 3:键值对和文件流并存的形式 其实 2-3 可以合并成一种形式来处理,以下将以 Java 服务端情况 ... 阅读全文
发表于 2017-03-05 17:55 阅读(2861) 评论(0) 赞(2)

停留在 2016-04-07 23点 那刹间

心情沮丧,怀念小时候一周都炒素芹菜的日子,和被托管的松柏林。 记得 那时满地都是木屑,整个大厅弥漫着松香味,大厅摆满了木工道具:刨子,凿子,尺子,木块...自己常常碍手碍脚拿道具玩,但从未被训斥过... 从未被训斥过,即时自己反复不懂事的恶作剧,也如此。在我印象中,外公只会笑,咯咯的大笑,特别在我调皮碍事的时候。这种 ... 阅读全文
发表于 2016-04-08 21:17 阅读(2549) 评论(1) 赞(1)

Go 定时器 cron 表达式的使用

上次在《Go 定时器 cron 的使用》里说 cron 简单使用方法,如果想更灵活的使用定时,可能会涉及到更复杂的六位表达式的使用方法,如每半小时执行一次: 0 30 * * * * 六位的表达式看起来,有点费解,好比正则表达式一样,我们需要按步骤来理解; 理解六个作用域的意义 0 0 0 1 1 * 0 0 0 1 * * 0 0 0 * * 0 0 0 0 * * * 0 0 * * * * ... 阅读全文
发表于 2018-01-11 00:02 阅读(2230) 评论(0) 赞(1)

数据库的命名 - 数据库最佳实践系列

很少留意数据库的命名规范,其实这件事情还挺重要的,好的数据库命名规则,有助于项目的维护成本,本人结合经手的项目,发现自己喜欢这样的命名方式。 数据库名,避开驼峰命名法,采用了全部小写,如果数据库名有多各单词,则可加_,比如 abcd, ab_cd,这么做也是顾虑到有些系统或数据库体系,大小写敏感。 表名,同样使用以上的办法 ... 阅读全文
发表于 2016-02-22 22:40 阅读(3237) 评论(0) 赞(0)

Java 中级开发笔记试题

Java 中级开发笔记试题,网上摘录,不提供大概,纯粹学习用途。 一、 填空题(40分) 1. 打印 b 的值为? String a = "abv"; String b = a; a = null; System.out.println(b); 2. 线程 Thread 有几种状态 3. Vetor 和 ArrayList 有什么区别? Enumeration 和 Iterator 有什么区别? 4. TCP 连接发生几次握手,断开连接呢? 5. Java.ut ... 阅读全文
发表于 2016-03-14 00:09 阅读(2803) 评论(0) 赞(0)

Go 查询数据库 Scan Null 字段报错解决办法

Go 语言基本类型都有默认值,比如整型,长整型,浮点型,字符串等等,都会有自己唯一的默认值 0,空字符串"",而不是nil, 这是它自身的特征,因为这个原因,Go 操作数据库,返回结果扫描填充结构体的时候,往往差强人意。当数据库字段是null值的时候,Goscan 数据填充结构体就出错了。 遇到这种情况,部分用户只能使用 sql.Null*** ... 阅读全文
发表于 2016-12-25 10:44 阅读(3301) 评论(0) 赞(1)

让 Ubuntu Nginx 使用 Let's Encrypt SSL 证书

看到 DiamondFsd 在 开源中国发表了《 Let's Encrypt 使用教程,免费的SSL证书,让你的网站拥抱 HTTPS 》,之前使用了腾讯云免费一年的商业 SSL,其中 Certbot 能通过 corn 定时更新证书,算是准永久免费的方案,所以也想试试 Let's Encrypt ,可惜 DiamondFsd 写的是基于 CentOS 服务器的,自己的是 Ubuntu ,所以在上文的基础上作修 ... 阅读全文
发表于 2017-02-12 23:26 阅读(3485) 评论(0) 赞(0)

用 Go 开发终端接口服务--小册介绍

小册介绍 大家好,我是潘军杰,很高兴大家进来看我写的小册,进来了就是有缘人,我们有共同的爱好,都是喜欢 Go 语言的同学,相聚在这里,希望大家可以一起成长和进步。 Go 是近几年开始流行的工程化系统语言,特别是微服务的盛行,很多同学开始从其他语言转向 Go,既系统学习了语法层面上的东西,又观摩了不少书籍上的示例代码,但真 ... 阅读全文
发表于 2019-05-14 14:29 阅读(1473) 评论(0) 赞(0)

PostgreSQL 不依赖客户端常用的命令

/** 连接到数据库控制台 **/ /opt/PostgreSQL/10/psql -U postgres -d database_name -h 192.168.1.250 -p 5432 /** 输入密码后,进入控制台如下: **/ mytest=# \h:查看SQL命令的解释,比如\h select。 \?:查看psql命令列表。 \l:列出所有数据库。 \c [database_name]:切换到其他数据库。 \d:列出当前数据库的所有表格。 \d [ta ... 阅读全文
发表于 2018-05-16 15:50 阅读(1725) 评论(0) 赞(1)

SVN 出现 Item is out of date 的解决办法

SVN 出现 Item is out of date 问题,如下: commit -m "" -N E:/workspace/4.5.1/project/src/cn/company/xxx/job Deleting E:/workspace/4.5.1/project/src/cn/company/xxx/job Transaction is out of date svn: Commit failed (details follow): svn: '/project/src/cn/company/xxx/job' is out of date 问题可能是 svn 上 ... 阅读全文
发表于 2016-01-09 10:03 阅读(4554) 评论(0) 赞(0)

Java Map 按 key 升序排序

最近开发微信和支付宝的 服务端 支付,涉及到字典的排序和 url 参数转换成字典的操作,整理了一个工具类: import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.uti ... 阅读全文
发表于 2017-03-18 23:48 阅读(5267) 评论(0) 赞(1)

Go 时间中文个性化处理

现在有些时间比较个性化,比如:5年前,11月前,20天前,23小时前,59分钟前,59秒前,刚刚... 等等,Go 语言可没有这些函数处理,我相信多数语言也不会内置处理此类的东西的,现在自己写个方法,首先要算出当前时间和给定的时间差,就是秒差,有了这个秒差,再进一步人工处理。废话少说,贴上代码吧(代码只是瞬间的思路和随手写法, ... 阅读全文
发表于 2016-09-26 00:06 阅读(2503) 评论(0) 赞(4)

Ubuntu Debian 内核调优配置

服务器默认安装的 Ubuntu 和 Debian,内核是没有经过优化的,要想压榨服务器极限的性能,对内核调整起到关键的作用,废话少说,以下是做法: 打开内核配置文件 sysctl.conf nano /etc/sysctl.conf 末尾增加以下配置参数: net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = ... 阅读全文
发表于 2015-12-27 00:24 阅读(3758) 评论(1) 赞(0)

在 Ubuntu 上搭建单机版 Redis

为什么用到 Redis? 最近开发一个类似抢拍的拍卖 App;有个环节是需要秒刷新的,而且多少个商品同时需求秒请求订单数据,这时想想长期以往 MySQL 肯定应付不了, 所以采用了内存数据库的方案,当然就先到 Redis 了;其实 memcached 也是比较好的选择,但后期的数据结构需保留一定的灵活性,所以选择了 Redis。终端请求的数据,生命周 ... 阅读全文
发表于 2018-01-14 00:33 阅读(2206) 评论(0) 赞(1)

ubuntu aptitude 的使用

工作中,遇到了问题,再次发现aptitude 似乎比 apt-get 要好用。以下是介绍: aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干 ... 阅读全文
发表于 2016-03-24 17:16 阅读(3169) 评论(0) 赞(0)

Go 发起 HTTP 请求及获取相关参数

Go 要请求远程网页,可以使用net/http包中的client提供的方法实现。查看了官方网站有一些示例,没有太全面的例子,于是自己整理了一下。 Get 请求 Get 请求可以直接 http.Get 方法,非常简单。 func httpGet() { resp, err := http.Get("http://www.01happy.com/demo/accept.php?id=1") if err != nil { // handle error } ... 阅读全文
转载于 2017-05-01 11:48 阅读(5306) 评论(0) 赞(0)

Ubuntu 14.04 安装 64位的 MySQL 5.7.9

到官网 http://dev.mysql.com/downloads/mysql/ 下载 针对 Ubuntu 14.04 的 64 位版本 Ubuntu Linux 14.04 (x86, 64-bit), DEB Bundle MySQL Server 5.7.9 237.6M (文件名: mysql-server_5.7.9-1ubuntu14.04_amd64.deb-bundle.tar) 放在 /home/soft/ 下解压: cd /home/soft/ sudo chmod +x mysql-server_5.7.9-1ubuntu14.04_amd64.d ... 阅读全文
发表于 2015-07-04 23:12 阅读(2875) 评论(2) 赞(1)

用 Go 开发终端接口服务--把项目部署到服务器

本章节主要讲解三部分内容:打包项目源码,通过 supervisord 启动和守护服务进程,最后用 nginx 代理服务和绑定域名。 Go 编译代码生成二进制包的时候,只处理 go 类型文件,静态文件、配置文件、 HTML 等那些非 go 类型文件都原样保留。进入项目根目录下,执行打包指令如: go build -ldflags "-w -s" Go 在不同的操作系统上编译出来 ... 阅读全文
发表于 2019-05-14 18:47 阅读(2199) 评论(0) 赞(0)

Go 定时器 cron 的使用

cron 是 robfig 开发的一个定时作业库,robfig 总是想的比别人早,给了我们这些 Gopher 不少急需的东西,想当年 revel 的出现也是这样的。看看 cron 的使用,还是一如既往的简洁明了,发现 Go 的世界里,有些产品还是有鲜明的个人特质的,那就是所谓的个人魅力吧?! 总之 robfig 开发的产品都是有一定超前性,比较有理论基础,使用起 ... 阅读全文
发表于 2018-01-10 23:57 阅读(2383) 评论(0) 赞(3)

部署 Go 语言开发的 Web 项目

Go 语言开发的 Web项目部署也算简单, Go 语言内置有自己的服务器,这个有别于 Java ,Java 需要借助 一些容器,把项目放置到容器中执行,比如 Tomcat Jetty Jboss WildFlyGlassfish 等等很多成熟的容器。 我平时用得最多的算 Java,部署比起 脚本语言部署,来得简单直接一些,但比起 部署 Go 语言项目,那就不算最简单的了。 Go 语言 ... 阅读全文
发表于 2016-01-02 12:58 阅读(6722) 评论(2) 赞(4)

Negroni 应用教程系列(二)

在介绍 Negroni 经典实例三大组件:日志 Logger,异常 Recovery,静态文件 Static 之前,需要说说它们采用的底层内幕,那就是中间件。Negroni 负责把一个个中间件链接起来,按照顺序逐一执行,形成一个中间件链。 Negroni 中间件实质是一个接口,名为 Handler,我们看看它的定义: type Handler interface { ServeHTTP(rw http.Respon ... 阅读全文
发表于 2018-01-10 23:52 阅读(2405) 评论(1) 赞(2)

用 Go 开发终端接口服务--项目整体结构介绍

通常一个项目我们建议分 dao service controller 三层 ,这样可以重用一些关键的部件,模块尽量趋于松耦合,分工明确便于维护。数据的传输方式,我们采用 JSON 格式数据发起 POST 请求,再返回 JSON 格式数据给终端,这样终端和服务端的数据格式都统一了,便于协调沟通,还可以提高数据传输过程中的安全性。但凡事不能绝对,主要还是 ... 阅读全文
发表于 2019-05-14 16:06 阅读(1836) 评论(0) 赞(0)

Go 的 net/http 另一实现 fasthttp

最近发现一个第三方 Go http 包,据作者的介绍很厉害,它是net/http的另一个实现包,高性能,低内存占用,比 Go net/http 内置包快 10 倍,哇,这也太叼了吧。以下是作者的包介绍,项目开源地址: https://github.com/valyala/fasthttp Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. ... 阅读全文
发表于 2016-01-02 11:35 阅读(7463) 评论(0) 赞(0)

Ubuntu Debian 安装 Go 语言步骤

Ubuntu Debian 安装 Go 语言,其实算是超级简单的,之前不懂,自己下载了源码,安装 C 来编译,想想有点麻烦,如今一般用户不需如此,只需要下载 Go 语言压缩包,放置某个路径下(用户自行选): /usr/local/go 然后在某个路径下(用户自行选)新建一个 GOPATH 文件夹: cd /var/ mkdir GOPATH 最后配置一下,打开全局的 profile: nan ... 阅读全文
发表于 2016-01-02 12:33 阅读(2536) 评论(0) 赞(1)

让远程用户访问 MySQL 的步骤

为了安全,MySQL 数据库默认安装是不支持外网 ip 访问的,如果项目需要,可以配置外网 IP 访问,配置很很简单,只需两步完成配置。 以下的配置,可能会带来安全隐患,需要谨慎考虑。我的项目,由于采用了分布式的部署,服务器并不在一个内网段里,不得已只能开放外部访问了,同时我希望 MySQL 既能外部 IP 访问,也能 使用 127.0.0.1 ... 阅读全文
发表于 2016-09-17 12:19 阅读(3338) 评论(0) 赞(1)

Negroni 应用教程系列(一)

创建一个 Web 服务器 Negroni 本身和 Go 语言哲学是一脉相承的,这是作者的初衷。我们看看怎么创建一个 Web 服务器。 新建一个 server.go 文件,代码如下: package main import ( "fmt" "net/http" "github.com/urfave/negroni" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, req *ht ... 阅读全文
发表于 2018-01-10 23:48 阅读(1913) 评论(0) 赞(2)

JFinal 使用 HikariCP 数据库连接池

看了HikariCP 的源码,比较感兴趣,想在 JFinal 中集成这样的数据库连接池,发现并没有支持的插件,于是自己动手尝试写了 JFinal HikariCPPlugin 插件 ,得益于 JFinal 这么简洁的架构,几分钟时间就测试出炉了,肉眼测试,不严谨,如果有什么不妥的地方,希望网友补充斧正吧! 直接上代码,是程序员最喜欢干的事情: package com.jfi ... 阅读全文
发表于 2017-03-28 23:25 阅读(5515) 评论(0) 赞(2)

解决烦人的 E: Sub-process /usr/bin/dpkg returned an error code (1)

服务器以前安装东西,不小心有些包安装失败了,造成包的依赖也被破坏了,后续再安装其他包的时候,你可能会遇到以下类似的错误: Errors were encountered while processing: openssh-server ssh exim4-base exim4-daemon-light exim4 E: Sub-process /usr/bin/dpkg returned an error code (1) 解决办法: ## 现将info文件夹更名 sud ... 阅读全文
发表于 2018-05-04 18:34 阅读(2388) 评论(0) 赞(0)

最近的状态

受新冠肺炎疫情的影响,公司逐渐推行远程办公制度,我已经一个多月没有去公司上班了,前期在深圳租房那里上班,现在回老家一个月了,每天下班后和小孩玩,已经不想回深圳去了,那里刚刚拉了一年的宽带,有点可惜了,租房也没有退掉,每月都1200-1500 的房租,打算这么放着几个月。 公司远程办公刚开始是不适应的,摄像头对着人脸,后 ... 阅读全文
发表于 2020-05-25 08:49 阅读(633) 评论(1) 赞(89)

安装 Memcached 后遇到的问题

根据业务的需求,安装了 Memcached 后,,清理键盘,不小心把配置文件的东西搞糟了,竟然无法启动了。(拍键盘的时候我真的不知道按了哪个键,可想而知,配置文件已经面目全非了) 启动 Memcached 的时候,出现以下错误: Starting memcached: Can't use an undefined value as a subroutine reference at /usr/share/memcached/scrip ... 阅读全文
发表于 2016-03-24 17:14 阅读(3458) 评论(2) 赞(0)

Go 语言 json 的时间格式化

Go 语言开发 reset 的接口,结构体转成 json 的时间都是带时区信息的,这并不是我们想要的,例如: 结构体: type Article struct { WebSite string Title string Created time.Time } 结构体实例转成 json 后,结构: {"Created":"2016-03-20T20:44:25.371Z","Title":"测试标题5","WebSite":"5-wow.com"} 实际上我们需要这样的 json ... 阅读全文
发表于 2016-04-14 23:35 阅读(4153) 评论(0) 赞(1)

60,000毫秒内对 Linux 的性能诊断

当你为了解决一个性能问题登录到一台 Linux 服务器:在第一分钟你应该检查些什么? 在 Netflix,我们有一个巨大的 EC2 Linux 云,以及大量的性能分析工具来监控和诊断其性能。其中包括用于云监控的 Atlas,以及用于按需实例分析的 Vector。虽然这些工具可以帮助我们解决大多数问题,但我们有时仍需要登录到一个服务器实例,并运行一些 ... 阅读全文
转载于 2016-01-21 09:38 阅读(2219) 评论(0) 赞(0)

Java 的可变函数另类使用

Java 的可变函数的使用,以前局限于传人零散的参数,当然参数是不会局限数量的,这是可变参数函数的便捷性。如: package com.5_wow.utils; public class JavaTest { public static void main(String[] args) { System.out.format("传人可变参数,结果:%d \n", Add(1, 2, 3, 4, 5)); } public static Integer Add(Integer... args) { ... 阅读全文
发表于 2016-03-08 20:38 阅读(2704) 评论(0) 赞(0)

Go 生成合法的 IP

利用 Go 语言,生成合法的 IP,代码如下: package util import ( "fmt" "math/rand" "time" ) // 随机生成合法 IP,如: 222.16.123.95 func RandomIp() string { // IP 范围二维数组 ranges := ipRange() idx := newRand().Intn(10) return numToIp(ranges[idx][0] + newRand().Intn(ranges[idx][1]-ranges[idx][0])) } // 随机生成 ... 阅读全文
发表于 2017-07-19 11:14 阅读(4336) 评论(0) 赞(1)

用 Go 开发终端接口服务--保证高性能项目的法宝

我们在《 准备项目所需的 Go 类包 》章节里,选择所需的类包,其实是为保证项目的高性能做好了准备。整个项目自上而下,我们都尽量避免产生性能损耗发生的情况。 最顶层路由器部分,是终端每次请求服务必经的模块,我们直接放弃了第三方的路由器,采用 Go 原生内置的 ServeMux 路由器, 并全面禁止在 URL 上携带任何参数,每个 URL 在 ... 阅读全文
发表于 2019-05-14 18:54 阅读(1918) 评论(1) 赞(0)

myblog 博客采用的技术方案

自己学习 Go语言,只看一些语法,不实践,感觉有点缺点什么,所以干脆开发一个自己的博客,很普通很通用的那种,开源出来做个纪念,但有点苦恼, 一时想不到好的名字,暂时叫它 myblog 吧,后期放到 github 里。 myblog 这么一个简单的 web 项目,竟然花了好几天的时间,想想做程序的就是有点苦逼,东西改来改去的,看似小不点,花费 ... 阅读全文
发表于 2016-01-02 13:28 阅读(4057) 评论(3) 赞(3)

用 Go 开发终端接口服务--Go 语言编码规范

初学者使用 Go 语言开发项目的时候,首先需要熟悉一下该语言的编码规范,逐渐养成良好的编码习惯,提高自己的编码质量,对自己,对项目团队都受益匪浅。 **【强制】程序内部命名方式** ,一律采用驼峰命名方式。常量、变量、函数名都统一采用驼峰命名,公用对象首字母需大写,私有对象首字母可小写。有些特定名词或缩写名词,建议全部 ... 阅读全文
发表于 2019-05-14 15:25 阅读(1505) 评论(0) 赞(0)

Markdown 写接口文档不错

一直使用 Windows 作为开发环境,有一天切换到 OSX 有点不适应,另外发现使用 word 写接口文档,有点后悔,OSX 下office 难用不说,开始要找合适的代替品也有点困难,干脆寻找另类的产品试试,要求不高,就是写一些 标题 正文 和表格,有些示例,偶尔加点代码。 这些要求也许直接写html 比较好,但总不能上sublime text 吧,有点太原 ... 阅读全文
发表于 2016-08-04 21:02 阅读(5129) 评论(3) 赞(0)

对 sqlx 误解的澄清

上次在《 Go 数据操作之 grop 和 sqlx 》上说,使用 sqlx 过程中,对它产生一些误会,其实当时是拿它与 gorp 做比较,本身 gorp 是一个半自动型的 orm 库,而 sqlx 并不是在 orm 范畴。便利性没有比拟性的。 sqlx 有它的应用场合,因为使用它连接数据库,很简单,不用配置 struct 实体关联到表,直接可以把执行 sql 的结果(结果集) ... 阅读全文
发表于 2016-02-17 15:51 阅读(3756) 评论(4) 赞(0)

Go 1.5 怎么样?

2goO.info 使用了Go 语言开发的技术型网站,最近把 Go 的版本从 1.4.2 升级到 1.5 后,观察了服务器的内存占用量,发现增加了 接近 50% 的内存,不过还不算特别高,程序占用大概是 46M 左右的内存,之前大概是 20-26M 之间,这个数值是参考 VmRSS;而 VmSize 的数值,分别是 460 和 268 左右。实际使用的物理内存,应该是VmSize吧。 ... 阅读全文
发表于 2015-08-04 23:13 阅读(2114) 评论(1) 赞(1)

PostgreSQL 常用命令

最近一直在学习PostgreSQL,下面是自己整理的PostgreSQL的常用命令 连接数据库, 默认的用户和数据库是postgres psql -U user -d dbname 切换数据库,相当于mysql的use dbname \c dbname 列举数据库,相当于mysql的show databases \l 列举表,相当于mysql的show tables \dt 查看表结构,相当于desc tblname,show columns from tbname \d ... 阅读全文
发表于 2016-01-31 18:18 阅读(3172) 评论(0) 赞(0)

Java 用一条语句搞定 Map 和 List 的定义和赋值

Java 里 Map 和 List 一般都先定义(初始化),然后赋值,最后使用的,有时候常量类里,想定义一个 Map 或 List 常量,上面说的做法就不适用了,有没有一个语句就同时搞定他们的定义和赋值呢? 这样做是可以的,请看代码: Map 的例子: @SuppressWarnings("serial") Map wallet_type_map = new HashMap () {{ put(1, "担保金(充值) ... 阅读全文
发表于 2016-04-18 17:33 阅读(3510) 评论(0) 赞(3)

MyBatis 自定义通用 Mapper

Mybatis 提供自动生成 Mapper 的工具,看看生成的 Mapper,不是尽如人意,比如多表关联和返回的数据类型和传入参类型上。一直想写一个通用的 Mapper,传参类型是 Map,返回 Map 类型;大体分两种数据库操作 DDL 和 DML 操作,而且 DML 分别提供获取一条记录和多条,插入一条记录,批量插入记录,更新,删除一条记录。其中 DDL 是参考 ... 阅读全文
发表于 2017-04-08 18:08 阅读(7351) 评论(2) 赞(3)

Java 的孤岛现象

Java 是会自动内存回收的,程序员可以通过 System.gc() 来发出内存回收的指令, Jvm 收到此类的指令后,会及时尽可能把用完的对象进行回收。 另外有一种不是很正式的概念,就是孤岛,多个对象相互关联起来,为成为一个“岛”对象,比如: Dog dog1= new Dog(1); Dog dog2 = new Dog(2); Dog dog3 = new Dog(3); dog1=dag2; dog2=dag3; ... 阅读全文
发表于 2018-03-04 22:18 阅读(2030) 评论(0) 赞(0)

PostgreSQL 新手入门

自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选。 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手。以下内容基于Debian操作系统,其他操作系统实在没有精力兼顾,但是大部分内容应该普遍适用。 postgresql 一、安装 首先,安装PostgreSQL客户端。 sudo apt-get install postgresql-client 然后,安装P ... 阅读全文
转载于 2016-01-31 18:17 阅读(2379) 评论(0) 赞(0)

自己网站实际使用了多少内存?

有些人好奇,想知道自己的网站或项目实际使用了多少内存?多数就是查看服务剩余内存来大概推算,有的网站部署在 Linux 下,稍微准确点的,会使用 top 指令查看网站的进程内存,CPU 占用情况,以我的博客为例,可以比较准确查到的,因为网站部署在 Debian 系统上,使用 Go 语言开发的,实际部署的时候,只启用了一个进程跑,所以除了 t ... 阅读全文
发表于 2020-04-12 00:17 阅读(718) 评论(0) 赞(1)

PostgreSQL 备份与恢复

PostgreSQL备份与恢复备忘录(Linux 版本) PostgreSQL 9.4 安装在 /opt/PostgreSQL/9.4/ 数据库备份 /opt/PostgreSQL/9.4/bin/pg_dump -h localhost -U postgres(用户名) mydb(数据库名称) > mydb.bak 数据库恢复 /opt/PostgreSQL/9.4/bin/psql -h localhost -U postgres(用户名) mydb(数据库名称) < mydb.bak PostgreSQL备份 ... 阅读全文
发表于 2016-01-31 18:16 阅读(3236) 评论(0) 赞(0)

用 Go 开发终端接口服务--前言

从2006年 Go 语言诞生至今,在程序员眼里 Go 语言一直都是带着光环的,不仅仅是因为它出自于 Google 公司,更是因为发明它的人都是大神级别的人物,Rob Pike、Ken Thompson、Robert Griesemer 哪一个不是大名鼎鼎、如雷贯耳的!他们这些大牛们就是一个顶级品牌,发明了 C 语言,并使用 C 语言开发了 Unix 系统,定制了 UTF-8 编码标准 ... 阅读全文
发表于 2019-05-14 14:33 阅读(1492) 评论(0) 赞(0)

分布式部署一点理解

一个服务器硬件资源足够强(比如 CPU 内存 SSD磁盘 配置都很优秀),也难免有瓶颈的时候,理论上说,一个单机服务器,并发量是有限的,以 Linux 服务器为例,即使 CPU 有无数个,核心顶配,内存同样很大,SSD磁盘很快,最终也会遇到连接数爆棚的时候,这时,以上的配置都没有用武之地了,因为 Linux 服务器是有最大连接数的,同一个时 ... 阅读全文
发表于 2016-09-17 13:11 阅读(2830) 评论(0) 赞(2)

用 Go 开发终端接口服务--灵活写 Dao 数据层函数

上一章节把实体层的结构体都准备就绪了,dao 数据层主要是进行数据操作,以实体层结构体为载体返回给上层使用。数据层的函数,我们尽量提高它们的可复用性和扩展性。数据层的函数根据功能性一般可以抽象几个分类出来,读和写相关的两种类型函数,读函数再细分读取一条记录、读取多条记录、读取聚合统计单列数据;而写函数可以细分 插 ... 阅读全文
发表于 2019-05-14 16:43 阅读(2369) 评论(0) 赞(0)

用 Go 开发终端接口服务--准备项目所需的 Go 类包

我们选择第三方类包,主要是为了方便快速开发,把主要精力放在业务流程上,为了避免走弯路,我们坚持选择稳定、符合 Go 语言哲学、开发团队活跃的类包作为优先选包原则。下面将罗列我们项目用到的第三方类包,并简单说明用途和特征。 github.com/codegangsta/gin **gin 用途**: 开发环境自动热编译部署工具,方便开发使用,只需启动 ... 阅读全文
发表于 2019-05-14 16:13 阅读(1850) 评论(0) 赞(0)

MySQL 常用恢复备份指令

备份MySQL数据库的命令 mysqldump -h hostname -u username -p password databasename > backupfile.sql 备份MySQL数据库为带删除表的格式备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。 mysqldump ---add-drop-table -u username -p password databasename > backupfile.sql 直接 ... 阅读全文
转载于 2016-02-28 21:20 阅读(2531) 评论(0) 赞(1)

用 Go 开发终端接口服务--快速编写一个 Web 服务器

上一章节我们搭建好了 Go 环境,本节准备在 Windows 下用 Go 写一个简单的 Web 服务器,Go 本身对 Web 开发支持的相当完善,不依赖任何第三方的类库,也不需要依赖容器来运行我们的 Web 服务,编写一个基本 Web 服务器也只要几行代码。 首先我们新建项目,打开 cmder 命令控制台工具,进入 E:\GOPATH\src 路径,新建一个 chapter01 文 ... 阅读全文
发表于 2019-05-14 16:03 阅读(2000) 评论(0) 赞(0)

用 Go 开发终端接口服务--定义 model 实体层结构体

本教程主要讲解项目的构建方法,并不会涉及错综复杂的业务,错综复杂的业务是由多个业务实体和多个实体关系组成的,我们进阶教程会讲解到,所以我们项目的实体也是简单的,现在我们主要挑选典型的 Product 产品和 Product Photo 产品图片业务进行讲解,把构建的方法和流程说明清楚,其他业务模块因项目不同而异,但再复杂的项目,万变 ... 阅读全文
发表于 2019-05-14 16:37 阅读(1967) 评论(0) 赞(0)

分表分库浅谈 - 数据库最佳实践系列

早在 Web 互联网时代,数据已经很庞大,到了移动互联时代,数据更大了,一个稍微知名的 App ,不到半年的光景,数据已经不是一台服务能装得下了,工作中,碰到了这样的事情,喜出望外之后,有点发愁了,数据日益剧增,小团队找不到更好的方案。 看了很多知名团队的方案,都如出一辙,基本原理就是数据库分布式架构,分表分库。 分表分 ... 阅读全文
发表于 2016-02-22 18:49 阅读(3700) 评论(0) 赞(0)

Ubuntu 以 APT 方式安装最新的 MySQL

记得上次写了 《 Ubuntu 14.04 安装 64位的 MySQL 5.7.9 》的文章,发现对于一般用户,操作起来还是繁琐,主要是多个包互相的依赖关系造成的,有些人问能不能使用 Ubuntu apt-get install 来安装最新的 MySQL?答案是可以的。 甲骨文官方提供了这种方案,不仔细看,还真不好发现,下面说说步骤: 1: 先到 MySQL 官网上,找到 APT 包 ... 阅读全文
发表于 2017-09-03 22:54 阅读(3445) 评论(2) 赞(1)

配置编译 Nginx 让网站用上 HTTP2

HTTP2 出来有一阵子了,一直想把公司的项目用上 HTTP2,了解了一下技术要求。首先 HTTP2 似乎需要到 SSL 证书,腾讯云和阿里云都有免费试用一年的 SSL 证书,腾讯云的证书用满一年后,还可以重新免费申请续用,至少目前还是这样的。 使用 HTTP2 只要搞定 Web 服务器,比如 Apached 和 Nginx,其他的后端程序不用做任何改动。当然前提 ... 阅读全文
发表于 2018-02-07 23:34 阅读(2019) 评论(0) 赞(2)

Go 的表单绑定器

Go 做 Web 开发,也算成熟了,平时后台开发,需要一款得心应手的表单绑定器,表单绑定器能快捷把表单数据填充业务实体类,免去 request 里一个个获取数据,赋值给实体类,省去了大量的时间和代码。 目前发现两个比较好用的表单绑定器: binding: https://github.com/mholt/binding bind: https://github.com/robfig/bind 自己常用的 ... 阅读全文
发表于 2016-01-10 23:21 阅读(2878) 评论(0) 赞(0)

Go template 模板语法简明教程

[模板标签] 模板标签用"{{"和"}}"括起来 [注释] {{/* a comment */}} 使用“{{/*”和“*/}}”来包含注释内容 [变量] {{.}} 此标签输出当前对象的值 {{.Admpub}} 表示输出Struct对象中字段或方法名称为“Admpub”的值。 当“Admpub”是匿名字段时,可以访问其内部字段或方法,比如“Com”:{{.Admpub.Com}} , 如果“Com”是一个方法 ... 阅读全文
转载于 2015-12-27 20:26 阅读(3565) 评论(4) 赞(0)

用 Go 开发终端接口服务--写在最后

本系列教程,所讲到的内容,源码不能一一列举,以下是 chapter01 源码,读者可以自行下载和学习。下载地址: https://github.com/panjunjie/course/blob/master/chapter01.zip 源码要正常运行,除了配置 Go 环境之外,还需要注意以下事项: 本教程项目数据库为 MySQL 5.6 ,数据库生成脚本位于根目录下的 database.sql 文件里,读者可 ... 阅读全文
发表于 2019-05-14 18:57 阅读(1718) 评论(0) 赞(0)

用 Go 开发终端接口服务--公共类关键函数

我们所说的公共类包,包括 dbutil、util、common 这三个包,下面展开一一说明它们里面关键的函数。 **dbutil** 顾名思义就是数据库工具类,我们采用了第三方 sqlx 类包来操作数据库, sqlx 的 DB 对象在 dbutil 里完成初始化工作,我们把这个简单的功能独立到一个包里,是为了以后遇到新的需求,易于扩展。比如 sqlx 有更换成 gorp、g ... 阅读全文
发表于 2019-05-14 16:28 阅读(1698) 评论(0) 赞(0)

Go 语言的 os 包使用

本文摘自博客园的 yumuxu,原地址: package main import ( "fmt" "io/ioutil" "os" "reflect" "time" ) func main() { dir, _ := os.Getwd() fmt.Println("dir:", dir) err := os.Chdir("d:/project/test2") dir, _ = os.Getwd() fmt.Println("dir:", dir) //参数不区分大小写 //不存在环境变量就返回空字符 ... 阅读全文
转载于 2016-03-29 00:08 阅读(3348) 评论(0) 赞(0)

Ubuntu Debian 快速安装 Java 环境

Java 的安装很简单,总结说只有两步即可完成: 1. 官网下载对应版本的压缩文件 2. 系统上配置关联 闲话不说了,以 jdk 8u65 为例子,直接到官网 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载压缩文件,因为系统是 Ubuntu 14.04 64位的版本,所以选择了 jdk-8u65-linux-x64.tar.gz 压缩 ... 阅读全文
发表于 2016-01-07 23:51 阅读(2620) 评论(0) 赞(0)

Go 用 Go 来开发后

Go 1.4 后开始计划自举,也就是Go 用 Go 开发和编译。很少听到一门语言这么做,感觉很新鲜。最初 Go 1.5 采用 Go 1.4 开发并编译出包,现在 Go 1.6 都准备出来了,回顾 2015 年 Go 发明者的自举做法,个人觉得非常成功。 为什么这么说呢,我发现 Go 1.5.2 的效能很不错,原先以为性能上估计会大打折扣的,结果自举后的版本和 C 开发的 ... 阅读全文
发表于 2016-01-02 19:31 阅读(2750) 评论(0) 赞(1)

用 Go 开发终端接口服务--暴露 controller 控制层接口

控制层主要负责接收外部的请求参数,然后把参数传递给 service 服务层,等服务层处理返回数据,再把数据序列化输出给外部。所以实际上 controller 控制层,是负责把终端提交的 JSON 数据转成对象,传递给 service 服务层函数,然后再把服务层函数返回的对象转成 JSON 返回给终端,这些流程都是可以封装在一些通用的函数里,可以节省很 ... 阅读全文
发表于 2019-05-14 17:04 阅读(1787) 评论(0) 赞(0)

Ubuntu下 PostgreSQL 启动 重启 停止

Ubuntu下PostgreSQL 启动 重启 关闭 ,首先看看以下目录有没有postgres 的启动服务: ls /etc/init.d/ 拿PostgreSQL 9.4 为例,你如果发现 postgresql-9.4 的启动服务,可以用以下指令启动 重启 关闭PostgreSQL 数据库。 /etc/init.d/postgresql-9.4 start|restart|stop postgres 的启动服务提供start|restart|stop几个选项,用户自行 ... 阅读全文
发表于 2016-01-31 18:19 阅读(7828) 评论(0) 赞(0)

Go 数据操作之 grop 和 sqlx

一直使用 grop ,当时觉得它够轻量,但又不是纯粹的 ORM ,所以造就它拥有非常简便和较高性能的特征,实际使用中,印证了它这两个优点。使用它的时候,有使用 Java 界 Jfinal ORM 的感觉,非常接近,我不知道 他们两者是否参照了同一个前辈产品。当然 Java 和 Go 特征上有很大的差别,比如 泛型 等等,Go 是没有泛型的,造成了个别差 ... 阅读全文
发表于 2015-12-27 00:27 阅读(3319) 评论(0) 赞(1)

Java 8 在 Ubuntu 14.04 上的时间偏差

最近升级 Java 到 8;不幸遇到一个问题:时间比真实时间晚点了2个小时,折腾了很久,终于找到问题了。网络上有的说晚了 8 小时,我这里确实 2 小时;可能服务位置的差异。 问题的根源是Java 8 的默认时区的问题,需要给 jvm 显性指定 自己的时区,以下配置代码只适合 Linux 的: export JAVA_HOME=/usr/java/jdk1.8.0_72 export CLASS ... 阅读全文
发表于 2016-02-17 18:17 阅读(2778) 评论(0) 赞(0)

优雅地关闭 Go HTTP 服务

Go 1.8 之后,http.Server 增加了 Shutdown 函数,类似于第三方的 graceful 插件一样,可以平滑的关闭自身 HTTP 服务了,我们看看代码: package main import ( "context" "github.com/urfave/negroni" "log" "net/http" "os" "os/signal" "time" ) func main(){ mux := http.NewServeMux() mux.HandleFunc("/", func(w http.Response ... 阅读全文
发表于 2018-01-11 11:51 阅读(3618) 评论(0) 赞(1)

吐槽一下 Go 语言

学习 Go 语言有一段时间了,不是刻意的去学,心血来潮就看看,用着 Java 开发项目,又好奇的 看看 Go;发现这种学习方法就是一种煎熬,因为 Java 的东西实在太多了,整个生态链是我见过最多最丰富的,只要能想到的,一般都能找到实现的东东;Go 这门语言很奇怪,完全不是跟风的做法,C# F# Java Python Ruby 很多好的东西,Go 却没有 ... 阅读全文
发表于 2016-01-02 12:08 阅读(2487) 评论(0) 赞(0)
第 2 页 共 5 页 上一页 下一页

关于作者

About Me

忘却理想,只为洒脱地活着!

文章数(93)

评论数(34)

访问数(282065)