php怎么格式化,正则表达式?
php正则表达式是一种描述字符串结构的语法规则,是一个特定的格式化模式,可以匹配、替换、截取匹配的字串
格式化命令format参数?
FORMAT命令的参数:
/Q 快速格式化磁盘。这个命令只格式化磁盘的文件分配表,文件内容没有受到损坏,所以使用这个参数格式化磁盘以后,里面的文件基本上是能够恢复的。另外,一般的时候推荐大家使用这个参数,1)因为格式化速度快;2)减少对磁盘的磨损。
/U 无条件格式化。使用这个参数以后格式化命令会对这个磁盘格式化,这样做既有好处也有坏处。好处是能够彻底的检查磁盘,清除所有数据;坏处是速度很慢而且对磁盘有一定的磨损。
/S 格式化以后传输DOS系统。使用这个参数以后,当你格式化后,系统会把系统传输给这张被格式化的磁盘,以后这张磁盘就能够启动电脑了。
你有过一个简单bug查询了很久才解决的经历吗?
程序员总会遇到一些稀奇古怪的问题,或由于编码错误,或由于对见识浅薄,一些问题解决之后,或者说说透了,就那么简单,但是在解决的过程中,总是会有一些弯路。敲了这么多年的代码,也陆续发现了一些线上问题,至今对两个 bug 的背景和解决过程仍记忆犹新,我就简单的分享一下,有类似体验的可以多深入了解一下,如果感觉不知所言的,跳过即可,娱乐为主。
第一个要分享的bug,是Java语言通过 HTTP 客户端 RestTemplate 调用弱语言 PHP封装的 HTTP 接口引起的,对方将配置数据,处理成 JSON 提供给我,其数据结构如下:
[{
"operateWord": "测试1",
"title": "测试1",
"url": "https://www.baidu.com"
}, {
"operateWord": "测试2",
"title": "测试2",
"url": "https://www.baidu.com"
}]
Java 这边通过对象的列表来接收 java.util.List<Banner>
@Setter
@Getter
public class Banner{
private String operateWord;
private String title;
private String url;
}
自测验证,测试通过后上线,偶尔会出现可用率降低的情况,其异常日志的主要信息如下
java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to com.alibaba.fastjson.JSONArray
后来此问题延续了一段时间,通过我这边的出入参日志,和对方的接口日志,来配合复现,当该JSON中只有一个元素时,数据结构会由 对象数组退化为对象,即当该返回值只有一个元素时,其返回结果如下:
{
"operateWord": "测试2",
"title": "测试2",
"url": "https://www.baidu.com"
}
而Java这边是强一致语言,仍通过对象的数组去接收,如何能成功接收呢?随后,PHP侧的接口同事将其提供的返回值数据结构进行格式化,确保任何时候都返回对象的数组的JSON数据结构,Java这边就可以正常解析了。大家需要关注的是:弱语言的返回值,可能因元素个数的不同而转化其数据结构,从而在与Java的交互中出问题。
第二个要分享的bug是,RestTemplate 使用过程中的不规范编码问题,对其通过Bean机制创建共享服务理解不透导致。通过 RestTemplate 获取配置信息,测试上线,7天时间内,无任何问题,时间一长,可用率陆陆续续下降,重启 docker 服务,该接口的可用率恢复,出现的异常信息如下
org.springframework.web.client.RestTemplate GET request for "http://xxx" resulted in 400 (Bad Request); invoking error handler
Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 400 Bad Request
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:88)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:532)
由于 400 这个状态码,第一感觉就是对方接口有变更,从而引起我的业务可用率下降。经对方同事排期,其7天内无任何变更,和我这边的应用部署时间一致。近一个月的时间内,只能通过重启保障线上业务的正常可用。而我这边在预发环境对该接口进行了多次压测,发现该400的状态可以复现。复现后,发现 RestTemplate 的请求头信息过大,已超过 4k。再和代码对照起来看,将 RestTemplate 初始化Bean之后,在service代码中,不断的设置头信息,即
public class WxMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter {
private ObjectMapper objectMapper = new ObjectMapper();
public WxMappingJackson2HttpMessageConverter() {
List<MediaType> mediaTypes = new ArrayList<MediaType>();
mediaTypes.add(new MediaType("text", "html", Charset.forName("UTF-8")));
mediaTypes.add(new MediaType("text", "plain", Charset.forName("UTF-8"))); //加入text/html类型的支持
setSupportedMediaTypes(mediaTypes);// tag6
objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
setObjectMapper(objectMapper);
}
}
private final static WxMappingJackson2HttpMessageConverter httpMessageConverter = new WxMappingJackson2HttpMessageConverter();
restTemplate.getMessageConverters().add(httpMessageConverter);
该请求头过大,而ngix默认的请求头信息限制 4k,当超时 4k 时,拒绝提供服务,从而导致 400 的状态码。
这两个bug,都是线上正常运行一段时间后,才出现的,这种往往更恼火,在测试阶段很隐蔽,线上出现之后,也不是很容易排查。编写代码时,还是需要用心去写,尽量避免这些bug呢。
作者:夕阳雨晴,欢迎关注我的头条号:偶尔美文,主流Java,为你讲述不一样的码农生活。
shop的时间控制?
将时间处理为时间戳local_date('Y-m-d H:i', $row['start_time']); 时间戳处理函数 lib_time.php 页面/**
* 将GMT时间戳格式化为用户自定义时区日期
*
* @param string $format
* @param integer $time 该参数必须是一个GMT的时间戳
*
* @return string
*/ function local_date($format, $time = NULL)
{
$timezone = isset($_SESSION['timezone']) ? $_SESSION['timezone'] : $GLOBALS['_CFG']['timezone']; if ($time === NULL)
{
css和php有什么区别?
php是服务器端语言,css是层叠样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言,俗称客户端语言。一个网站可分为美工样式和功能两部分,PHP是来控制程序功能的,而CSS是来控制美工样式。
CSS可以控制页面样式,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。
php是服务器端语言,一种常用于Web应用程序开发的脚本语言,可以动态生成网页。