技术博客
Hibernate中用criteria builder处理日期与时间分开的字段
现有系统中原先在设计数据库字段的时候,把日期与时间分别存入两个不同的字段,但是这两个字段在数据库中都是以timestamp类型来保存。这样的话,如果需要在where条件中把这两个字段与某个特定的时间做比较,则需要分别截取有效的信息。对于日期字段仅仅取出日期的值,把时间舍弃;对于时间字段仅仅取出时间的值,把日期舍弃。
December 6, 2018
记一次打开Excel文件错误的排查
在生产环境中,某个结果集导出的excel文件用Microsoft Excel无法打开,看到如下错误: 最开始怀疑是在生成文件的时候,文件损坏掉了,但是重新生成多次,得到的结果都是一样的。在相同的界面,导出其他结果集所生成的文件却都是可以成功打开的,这样就可以排除代码功能方面的问题。如果和代码无关,那么就可能和数据有关系。根据出错提示给出的文件地址“C:\Users\ZHANGZ~1\AppData\Local\Temp\error083200_01.xml”, 打开该临时文件,可以看到下面的信息
December 5, 2018
配置Nginx支持长轮询
对于需要用到长轮询的web项目,可以在Nginx做一些配置来支持请求转发。分别在http与server块中加入下面的配置: http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } } server { location /your-api-url/ { proxy_pass http://127.0.0.1:9000/your-api-url/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection …
November 21, 2018
shell中用tr命令转换字符大小写
在写shell脚本的时候,可能需要将特定的英文字符转换大小写。可以借助tr命令来实现这个功能。 (1)tr的下面这个命令表示把string1替换成string2
July 25, 2018
Docker Compose创建minio集群
Minio是一个简单易用的轻量级对象存储服务,同时它也支持集群环境。使用Minio的docker镜像可以快速地搭建集群环境。 下面是docker-compose.yml文件的示例。分布式的Minio服务至少需要4个节点,所以在docker-compose.yml文件中,至少要配置4个服务。每个服务的command配置必须一样,保证集群环境正常运行。
July 18, 2018
date命令按指定locale所对应的日期格式输出
在Linux,Unix或者MacOS的命令行输入date命令,可以获取到当前的系统时间。默认情况下,date命令是按照当前系统的locale的时间格式来输出的。
July 4, 2018
排序算法 - (直接)插入排序 (Insertion Sort)
基本思路假设按照从小到大排列,总共有n个元素。 整个数组从逻辑上会被分成两个部分,左边部分是有序的序列,右边部分是待排序的元素。当然,刚开始左边的有序序列仅有一个元素,即第一个元素 将右边待排序元素的第一个元素,与左边有序序列进行比较。比较的时候,是从有序序列的末端(即有序序列最大的一个数)开始进行比较,如果比它大或者与之相等则直接插在其后面,否则一直往前面找,直到找到该插入的位置。插入的时候,需要把所插入位置右边的所有元素往右移。 重复上面的步骤,直到所有待排序的元素处理完毕
July 2, 2018
通过SSH和JMX远程监控Java服务
在日常工作中,可以使用一些监控数据的图形展示工具(比如Grafana等)来查看服务器上面JVM的使用情况,比如内存或者CPU的占用情况。但是,在需要解决实际问题的时候,比如CPU或者内存占用过高,还是需要连接到远程的服务器,查看JVM的具体运行情况来分析问题产生的原因。
June 28, 2018
使用redis-cli与AOF迁移数据
把一台Redis上的数据,迁移到另外一台Redis服务器上,有很多种方式。其中一个简便的方法是,利用Redis自带的命令行工具redis-cli,实现数据的无缝迁移。
June 27, 2018
Ubuntu 16.04系统自带截屏工具快捷键
Ubuntu 16.04系统自带了截屏工具,可以实现窗口截屏、区域截屏等。默认的快捷键是: Print 全屏截图 Ctrl + Print 全屏截图并保存到剪贴板 Alt + Print 窗口截图 Ctrl + Alt + Print 窗口截图并保存到剪贴板 Shift + Print 区域截图 Ctrl + Shift + Print 区域截图并保存到剪贴板 Ctrl + Shift + Alt + R 录制屏幕短视频
June 25, 2018
排序算法 - (简单)选择排序 (Selection Sort)
基本思路假设按照从小到大排列,总共有n个元素 第一轮,找出数组中最小的元素,与第一个元素交换 第二轮,找出剩余元素中最小的元素,与第二个元素交换 第三轮,找出剩余元素中最小的元素,与第三个元素交换 如此重复上述步骤,直至处理完所有元素 性能时间复杂度:O(n2)
June 20, 2018
如何控制grep命令显示在相关文本前后的行数
在Linux/Unix系统中使用grep命令的时候,有时候我们想要把匹配文本的前后几行的信息也同时显示出来。这可以通过设置一些参数来达到目的。
June 19, 2018
排序算法 - 冒泡排序(Bubble Sort)
算法思路基本思路 假设按照从小到大排列,总共有n个元素 从第一个元素开始至第n-1个元素,依次比较当前元素与它后面相邻元素的大小,如果前面一个比后面一个大,交换两个元素的位置。第一遍处理之后,最后一个元素就是当前循环中最大的一个。 重复上面的步骤,第二遍处理第一至第n-2个元素,第三遍处理第一至第n-3个元素……直到仅剩一个元素。 改进后的思路 上面的基本思路中需要进行n-1轮的比较。但是存在一种可能,在其中的某一轮之后,该数组就已经是有序的了,也就意味着后面就不需要再进行额外的比较和交换。可以设置一个标志位,用来表示当前这一轮是否存在元素交换,如果没有的话,就结束整个排序过程
June 17, 2018
设置Postgres数据库的默认schema
查看当前的schema SHOW search_path; 设置默认schema,仅对当前连接有效 SET search_path TO your_schema; 设置默认schema,数据库级别,修改之后的所有连接都有效
June 15, 2018
实现InputStream的序列化
InputStream本身是不支持序列化的,但是在实际开发的过程中有时会需要将输入流通过socket传输,比如RMI的远程调用。 在Serializable的Java文档文档中有下面的描述: Classes that require special handling during the serialization and deserialization process must implement special methods with these exact signatures:
June 12, 2018