Simiam

求知若渴,虚怀若谷


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

  • 公益404

  • 搜索

Java小问题汇总

发表于 2016-11-08 | 分类于 Java |

1. MySQL5.7下的JSON字段中文乱码问题

中文乱码问题在Java Web开发中经常碰到,大部分原因是后端与前端的编码不一致造成的(如tomcat的默认编码为ISO-8859-1,而前端为GBK),解决办法也简单,只需要加一个CharsetEncodingFilter就行。但本文要讲的不是这一类总是,而是纯粹的后端问题。

1.1 环境准备

假设MySQL的默认CharSet为UTF-8,应用及部署环境也为UTF-8

  • 创建包含JSON字段的数据库表
1
2
3
4
5
6
7
8
CREATE TABLE "ipms_device_feature" (
"ID" int(11) NOT NULL AUTO_INCREMENT,
"DEVICE_SERIAL_NUMBER" varchar(100) NOT NULL DEFAULT '' COMMENT '设备SN',
"DEVICE_IP" varchar(32) NOT NULL DEFAULT '' COMMENT '设备IP',
"FEATURES" json DEFAULT NULL COMMENT '设备巡检指标集',
"UPDATETIME" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY ("ID")
)
阅读全文 »

Composer学习笔记

发表于 2016-09-01 | 分类于 Composer |

#Composer学习笔记

一、安装(MacOS)

系统要求:PHP5.3.2+以上版本
学习参考:Composer官方文档

Composer安装分两种:

1.局部安装

将composer.phar文件内嵌于PHP应用目录下,命令如下:

1
2
3
4
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

以上命令分别做如下几件事件:

  • 下载安装器
  • 校验
  • 执行安装
  • 删除安装器

安装完成后,会在当前工作目录下生成可执行文件:composer.phar,你可以通过如下方式使用(运行)composer来进行项目的依赖管理:

1
2
php composer.phar <command>
# command指install等composer命令
阅读全文 »

MAC下搭建Apache+PHP开发环境

发表于 2016-07-01 | 分类于 Php |
  • apache配置文件为:/etc/apache2/httpd.conf
  • OSX下默认集成了apache与php;
  • Mac Apache 有2个默认的网站目录,一个是/Library/WebServer/Documents/,一个是用户目录下的Sites目录(推荐使用),默认未开启;
  • Apache 基本命令:
1
2
3
启动:sudo apachectl start
停止:sudo apachectl stop
重启:sudo apachectl restart

1. 配置apache

Step 1. 在用户目录下用Finder创建 Sites 文件夹;

Step 2. 在/etc/apache2/users/目录下添加 username.conf文件(username要替换成真正的用户名,下同):

1
2
cd /etc/apache2/users  
sudo vim username.conf

Step 3. 在username.conf文件中添加如下内容:
username.conf内容

阅读全文 »

JNI引起的堆外内存泄漏问题分析

发表于 2016-02-26 | 分类于 Java |

背景

客户现场的监控系统中有一个网络听诊器功能,其每隔1分钟会对全网设备进行ping操作,以此来尽可能快的发现设备及网络是否出现异常。暂且不说通过该功能来对设备及网络作健康检测是否靠谱。由于JAVA对于网络层以下的协议是无能为力的,而ping操作涉及ICMP与ARP协议,因此监控系统只能借助JNI机制来搞定。

BUG现象

监控系统的java.exe进程每隔几个小时就异常退出

问题定位

  1. 通过应用系统的日志看是否为业务相关的异常引起的 –》日志中并无任何异常信息
  2. 打开GC日志,并观察一段时间,看是否存在堆内存回收异常(泄漏或溢出) –》堆内存一切正常
  3. 此时忽然想起,java.exe进程异常退出应该会生成相关的hs_err.log文件,果然在应用目录下找到了一堆错误文件。该日志也叫crash日志。
  4. 通过查看hs_err.log内容得知,原来是jni ping引入的dll调用异常导致java.exe进程异常中止了。

    PS:如果能早点想起步骤3,那就不用浪费步骤2的功夫了。

阅读全文 »

Laravel 5.2中文文档:HTTP路由

发表于 2016-01-20 | 分类于 Translation |

基本路由

所有的Laravel路由规则都定义在app/Http/routes.php文件中,Laravel框架在初始化时将自动加载该文件。Laravel中最基本的路由规则如下:

Route::get('foo', function () {
    return 'Hello World';
});

其接受两个参数:匹配该路由的URI、路由处理闭包Closure;该闭包定义了具体的路由规则。

默认路由文件

默认情况下,routes.php中可以定义简单的路由,或者将这些路由定义在路由组中。路由组将利用web中间件为定义在其中的路由规则提供’会话状态’与CSRF保存等功能。

阅读全文 »
<i class="fa fa-angle-left"></i>1…345<i class="fa fa-angle-right"></i>

24 日志
18 分类
33 标签
RSS
GitHub Weibo
我的收藏
  • Simiam
  • 并发编程网
  • Readhub
© 2015 - 2021 simiam  

闽ICP备18023112号

 

闽公网安备 35012102500070号