自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (3)
  • 收藏
  • 关注

原创 apache和IIS同时存在,apache建立多个网站

apache使用80并作为代理,把请求转发到IIS上,IIS当然用的是另外的端口..apache的代理配置其实和虚拟主机差不多,可以参考下面的:http://www.360doc.com/content/081028/19/75523_1840294.html将apache设为使用80端口,IIS使用其它端口,比如81,然后将apache作为IIS的代理在httpd.conf里面,取消下面

2015-08-17 23:55:17 926

原创 php复制目录下的所有文件及文件夹

PHP复制文件夹及下面所有文件,参考如下:function xCopy($source, $destination, $child){   //用法:   // xCopy("feiy","feiy2",1):拷贝feiy下的文件到 feiy2,包括子目录   // xCopy("feiy","feiy2",0):拷贝feiy下的文件到 feiy2,不包括子目录   //参数说

2015-08-13 14:52:00 3108

原创 php将文件夹打包成zip文件

function addFileToZip($path,$zip){    $handler=opendir($path); //打开当前文件夹由$path指定。    while(($filename=readdir($handler))!==false){        if($filename != "." && $filename != ".."){//文件夹文件名字为'.'和

2015-08-13 14:12:51 504

转载 highcharts 时间少8小时问题

Highcharts 中默认开启了UTC(世界标准时间),由于中国所在时区为+8,所以经过 Highcharts 的处理后会减去8个小时。如果不想使用 UTC,有2种方法可供使用:1、在使用Highcharts的页面中添加如下代码: Highcharts.setOptions({ global: { useUTC: false } });

2015-07-10 10:22:53 694

转载 Highcharts + jQuery + Servlet 实现从后台获取JSON实时刷新图表

效果图如下:代码很详细,请详细阅读注释,HTML 代码如下: Highcharts + Ajax + Servlet Demo $(function() {

2015-07-10 10:18:16 634

转载 ajax定时刷新Highcharts

Highcharts Example  http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">>    //x轴值  var categories=;  //y轴值  var data=;      //创建图表  var chart;  $(document).ready(

2015-07-08 13:38:02 560

原创 highcharts如何动态获取数据

$(function () {       $(document).ready(function() {           Highcharts.setOptions({               global: {                   useUTC: false               }           });            

2015-07-08 11:21:39 757

原创 使用Highcharts生成折线图与曲线图

1、城市气温变化折线图通过以下配置,可以生成一个带网格的、显示数据点具体数据的、可放大的、去除LOGO标签的折线图。具体请看代码和注释var chart; $(function() { chart = new Highcharts.Chart({ chart: { renderTo: 'chart_line', //图表放

2015-07-08 11:02:01 1892

原创 jquery的setinterval使用方法

今天在使用jQuery的setInterval时总是不能成功,在网上找了一下,发现别人的也有很多错误,最后发现了setInterval的使用方法。下面上整个代码,如果要使用,要自己加入jQuery包:$(function(){  setInterval (showTime, 2000); function showTime() {      var toda

2015-07-08 10:23:19 5234

原创 socket通信常用的函数

socket_accept() 接受一个Socket连接socket_bind() 把socket绑定在一个IP地址和端口上socket_clear_error() 清除socket的错误或者最后的错误代码socket_close() 关闭一个socket资源socket_connect() 开始一个socket连接socket_create_listen() 在指定端口打开一

2015-07-01 11:12:54 475

转载 使用php的socket发送tcp请求

Of course.in PHP manual :Socket example: Simple TCP/IP clientThis example shows a simple, one-shot HTTP client. It simply connects to a page, submits a HEAD request, echoes the reply, and 

2015-07-01 11:02:07 2770

转载 php socket通信(tcp/udp)

注意   1.在socket_bind的时候ip地址不能真回环地址如127.0.0.1  2.server.php后台跑起来的时候 nohup php server.php > /var/tmp/a.log 2>&1 &一: udp 方式1) server.phpphp//error_reporting( E_ALL );set_time_limit( 0 );

2015-07-01 10:58:30 681

转载 php和c通过socket进行通信

一个php编写的客户端程序和一个用c编写的服务器程序通过socket进行通信的实例    在进行编程之前,我们需要打开socket,打开方法见下:   >gedit .bashrc    add things as follow    exportPATH=/usr/local/php5/bin:$PATH               //我的php安装在/usr/local/ph

2015-07-01 10:12:01 690

转载 php的socket通信

客户端客户端非常简单,利用现代浏览器的WebSocket API,这里介绍的很详细:http://msdn.microsoft.com/zh-cn/library/ie/hh673567核心代码:JAVASCRIPT12345var wsServer = 'ws://127.0.0.1:8080'; var ws = new WebSoc

2015-07-01 09:57:47 498

转载 PHP+mysql+Highcharts实现饼状统计图

Mysql首先我们建一张・chart_pie・表作为统计数据。[sql] view plaincopy-- edit http://www.lai18.com   -- 表的结构 `chart_pie`   --      CREATE TABLE IF NOT EXISTS `chart_pie` (    `id` int(11) NOT NULL AUTO_I

2015-07-01 09:40:08 586

转载 PHP-Socket服务端客户端发送接收通信实例详解

Socket介绍什么是socket 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket连接过程根据连接启动的方式以及本地套接字要连

2015-07-01 09:34:12 8229

转载 php实现socket

一、Socket 简介1、socket只不过是一个数据结构。2、使用这个socket数据结构去开始一个客户端和服务器之间的会话。3、服务器是一直在监听准备产生一个新的会话。当一个客户端连接服务器,它就打开服务器正在进行监听的一个端口进行会话。4、服务器端接受客户端的连接请求,那么就进行一次循环。现在这个客户端就能够发送信息到服务器,服务器也能发送信息给客户端。二、Socke

2015-07-01 09:23:20 271

转载 深入浅出讲解:php的socket通信

对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:1.         什么是TCP/IP、UDP?2.         Socket在哪里呢?3.         Socket是什么呢?4.         你会使用它们吗?什么是TCP/IP、UDP?         TCP/IP(Transmi

2015-07-01 09:17:26 317

原创 left join用法

select t,CONCAT(CURDATE(),' ',t,'点') as showdate, COALESCE(showup,0)  as showup, COALESCE(hit,0)  as hit,COALESCE(hit/showup*100,0) as rt from wifi_hours a left JOIN (select thour, sum(showup)as showu

2015-06-03 11:45:11 428

原创 FROM_UNIXTIME 格式化MYSQL时间戳函数

对MYSQL没有进行过深入的研究,基础知识匮乏,一遇到问题只能手册,看来要把MYSQL的学习安排进时间表了。函数:FROM_UNIXTIME作用:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示。语法:FROM_UNIXTIME(unix_timestamp,format)返回表示 Unix 时间标记的一个字符串,根据format字符串格式化

2015-06-03 10:29:46 317

原创 Mysql coalesce()函数认识和用法

Mysql coalesce()函数认识和用法 coalesce()解释:返回参数中的第一个非空表达式(从左向右);  鉴于在mysql中没有nvl()函数, 我们用coalesce()来代替。 coalesce相比nvl优点是,coalesce中参数可以有多个,而nvl()中参数就只有两个。 当然,在oracle中也可以使用 case when....then..

2015-06-03 10:24:55 1487

原创 MySQL CURDATE() 函数

定义和用法CURDATE() 函数返回当前的日期。语法CURDATE()实例例子 1下面是 SELECT 语句:SELECT NOW(),CURDATE(),CURTIME()结果类似:NOW()CURDATE()CURTIME()2008-12-29 16:25:462008-12-2916:25:46

2015-06-03 10:15:41 493

原创 SQL CONCAT函数

SQL CONCAT函数实例代码教程 - SQL CONCAT函数用于将两个字符串连接起来,形成一个单一的字符串。SQL CONCAT函数用于将两个字符串连接起来,形成一个单一的字符串。试试下面的例子:SQL> SELECT CONCAT('FIRST ', 'SECOND');+----------------------------+| CONCAT('FIRST ', '

2015-06-03 10:10:24 723

原创 Call to undefined function ssh2_connect()

如果出现这个Call to undefined function ssh2_connect()的错误,说明php没有安装ssh2的扩展库文件。需要安装ssh2库文件到php的/ext目录下,然后在php.ini文件中加载就可以了。

2015-05-29 10:40:49 4901

原创 windows7下安装php的php-ssh2扩展教程

因为想做一个往测试服务器传文件的需求,看到PHP支持ssh操作,所以整理了下安装过程,与大家分享下。安装步骤1. 下载 php extension ssh2下载地址 http://windows.php.net/downloads/pecl/releases/ssh2/0.12/根据自己PHP的版本去下载,我使用的是线程安全的,所以下载的是php_ssh2-0.12-5.4-t

2015-05-29 10:38:12 1926

转载 Zend Studio 使用 Xdebug 断点调试

部分内容参考自 这里1, 下载 Xdebug1# 下载地址2# http://xdebug.org/download.php3 4# 寻找和自己所安装的 php 版本对应的 Xdebug 下载

2015-05-28 12:02:56 414

原创 thinkphp中常用的系统常量和系统变量

---------------------------------------模板中使用的系统变量和常量----------------------------------------(1)系统变量:在模板中输出系统变量:包括server、env、session、post、get、request、cookie     {$Think.server.script_name} // 输出$

2015-05-27 17:43:09 67

原创 ThinkPHP常用配置路径

//系统常量定义 //去THinkPHP手册中进行查找 echo ""."网站的根目录地址".__ROOT__." "; echo ""."入口文件地址".__APP__." "; echo ""."当前模块地址".__URL__." "; echo ""."当前url地址".__SELF__." ";echo ""."当前操作地址".__ACTION__." ";echo "

2015-05-27 17:40:55 471

原创 变量输出

我们已经知道了在Action中使用assign方法可以给模板变量赋值,赋值后怎么在模板文件中输出变量的值呢?如果我们在Action中赋值了一个name模板变量:$name = 'ThinkPHP';$this->assign('name',$name);使用内置的模板引擎输出变量,只需要在模版文件使用:{$name}模板编译后的结果就是php echo($nam

2015-05-27 14:48:07 425

原创 ThinkPHP缓存方法S()概述

thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法,使用示例如下:. 代码如下:// 使用data标识缓存$Data数据S('data',$Data);  //前面的是缓存标示,后面的是缓存的数据. 代码如下:// 缓存$Data数据3600秒S('data',$Data,3600);. 代码

2015-05-27 14:06:03 912

原创 thinkphp C函数的实现原理

在写一个php原生函数的时候,想起使用thinkphp的C函数读取数据库配置非常方便,于是看了看源码的实现,原理很简单,分享一下:下面是common.php,实现了C函数:if(is_file("config.php") ){ // config.php文件返回一个数组 // C函数判断是一个数组,则会将这个数组赋值给 $_config,下面我们用在这个变量里面读

2015-05-27 13:59:33 417

原创 thinkphp查询语言

ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作,查询条件可以用于CURD等任何操作,作为where方法的参数传入即可,下面来一一讲解查询语言的内涵。查询方式ThinkPHP可以支持直接使用字符串作为查询条件,但是大多数情况推荐使用索引数组或者对象来作为查询条件,因为会更加安全。一、使用字符串作为查询条件这是最传统的方式,但是安全性不高,例如:

2015-05-27 12:10:11 397

原创 ThinkPHP函数详解:C方法

C方法是ThinkPHP用于设置、获取,以及保存配置参数的方法,使用频率较高。了解C方法需要首先了解下ThinkPHP的配置,因为C方法的所有操作都是围绕配置相关的。ThinkPHP的配置文件采用PHP数组格式定义。由于采用了函数重载设计,所以用法较多,我们来一一说明下。设置参数C('DB_NAME','thinkphp');表示设置DB_NAME配置参数的值为thinkphp

2015-05-27 11:43:07 414

原创 PHP explode() 函数

定义和用法explode() 函数把字符串分割为数组。语法explode(separator,string,limit)参数描述separator必需。规定在哪里分割字符串。string必需。要分割的字符串。limit可选。规定所返回的数组元素的最大数目。说明本函数返回由字符串组成的数组,其中的每个

2015-05-27 10:38:52 318

原创 I()函数分析

Thinkphp3.2添加了一个I方法,取义Input,用来获取前台提交过来的数据。下面来下I()方法的一些使用技巧:I方法是放在了/ThinkPHP/Common/function.php之中 /** * 获取输入参数 支持过滤和默认值 * 使用方法: * * I('id',0); 获取id参数 自动判断get或者post *

2015-05-27 10:25:51 846

原创 THINKPHP扩展类:log类的使用

[ 概述 ]ThinkPHP内置了日志处理类,无需导入就可以直接使用。Log类提供了包括记录系统异常和错误和调试信息,以及SQL信息等功能,日志文件分别对应为WEB_LOG_ERROR 、WEB_LOG_DEBUG和SQL_LOG_DEBUG三种类型,对应的日志文件名称为:systemErr.log主要用于WEB_LOG_ERROR类型日志用于记录系统异常,通常为抛出异常或者捕获严重错

2015-05-27 10:17:01 2612

原创 事务支持

ThinkPHP提供了单数据库的事务支持,如果要在应用逻辑中使用事务,可以参考下面的方法:启动事务:$User->startTrans();  提交事务:$User->commit(); 事务回滚:$User->rollback();事务是针对数据库本身的,所以可以跨模型操作的 。例如://  在User模型中启动事务$User->startTr

2015-05-27 09:45:45 434

原创 表单令牌

ThinkPHP内置了表单令牌验证功能,可以有效防止表单的重复提交等安全防护。表单令牌验证相关的配置参数有:'TOKEN_ON'=>true,  // 是否开启令牌验证'TOKEN_NAME'=>'__hash__',    // 令牌验证的表单隐藏字段名称'TOKEN_TYPE'=>'md5',  //令牌哈希验证规则 默认为MD5'TOKEN_RESET'=>true,  //令牌

2015-05-26 18:15:41 2818

原创 PHP unset销毁变量并释放内存

PHP的unset()函数用来清除、销毁变量,不用的变量,我们可以用unset()将它销毁。但是某些时候,用unset()却无法达到销毁变量占用的内存!我们先看一个例子:$s=str_repeat('1',255);//产生由255个1组成的字符串 $m=memory_get_usage(); //获取当前占用内存 unset($s);$mm=memory_get_usage();

2015-05-26 17:54:33 395

原创 ThinkPHP函数详解:cookie方法

cookie函数也是一个多元化操作函数,完成cookie的设置、获取和删除操作。Cookie 用于Cookie 设置、获取、删除操作用法cookie($name, $value='', $option=null)参数name(必须):要操作的cookie变量value(可选):要设置的cookie值option(可选):传入的cookie设置

2015-05-26 17:39:52 3349

seata1.3.0.zip

Seata的高可用模式是通过TC使用db模式共享全局事务会话信息,使用非file的seata支持的第三方注册中心和配置中心来共享全局配置的方式来实现的。 Seata支持的第三方注册中心有nacos 、eureka、redis、zk、consul、etcd3、sofa、custom,支持的第三方配置中心有nacos 、apollo、zk、consul、etcd3、custom。seata官方主推的应该是nacos(毕竟是一家的),但是由于本人平常使用的注册中心一直是zk,因此首先考虑通过zk作为注册中心来实现高可用模式。 环境准备 zk环境准备 本地已安装zk的可以忽略,如果本地未安装,先在本地安装zk,具体安装自行百度。 PS: 此处如果使用的是远程zk服务器,则本地可以只下载,不安装。 数据库环境准备 1、创建数据库seata 2、执行源码(version1.2.0)script -> server -> db 下面的mysql.sql文件,建立global_table,branch_table,lock_table表。 配置信息导入zk 1、打开本地seata源码(版本1.2.0) 2、编辑script -> config-center -> config.txt文件,修改store.mode=db,修改store.db相关的数据库连接信息,其它默认即可 3、进入script -> config-center ->zk,执行 sh zk-config.sh -h 127.0.0.1 -p 2181 -z /usr/local/zookeeper-3.4.14(-z 后面的参数为你本地zk目录) 上面命令会将config.txt中的配置信息写入zk的/seata节点下。 启动tc-server 1、编辑conf下面的registry.conf文件,修改registry.type=zk,修改config.type=zk,修改registry.zk及config.zk信息,如下: 注意:config的zk配置没有cluster属性。 2、启动server,在本地seata安装目录bin目录下执行./seata-server.sh -m db (此处也可以直接编译本地源码然后启动Server模块下的Server类)。 不出意外的话,启动会报错,错误信息是从zk读取配置的时候反序列化出问题。 错误原因:序列化问题,由于使用seata自带的zk-config.sh脚本向zk写入配置信息的时候,采用的序列化方式相当于String.getBytes(),而框架读取配置的时候使用的是org.101tec包中的Zkclient客户端,反序列化使用的是该包下面的SerializableSerializer序列化类,使用的ObjectOutputStream进行反序列化,和序列化方式不一致。 该问题在1.3.0版本中解决,解决方式是seata支持序列化方式配置,支持自定义序列化方式,同时提供默认序列化实现类DefaultZkSerializer,反序列化实现为new String()。 到此处,1.2.0版本无法进行下去,由于目前1.3.0正式版本还未出,只能拉取最新的开发分支源码,本地编译打包1.3.0-SNAPSHOT版本。 后续版本切为1.3.0-SNAPSHOT(20200701),删除原zk配置信息重新导入1.3版本的config.txt文件信息。 本地源码编译后直接Idea启动Server类。启动成功。 PS:启动日志里面会有一些getConfig失败的报错,这些不用管,这些新的配置参数是1.3版本新增的,由于当前是SNAPSHOT版本,还不完善。 PS: 如果遇到getServerCharset 空指针异常,这个主要是MySQL和MySQL驱动版本不一致引起的,看https://blog.csdn.net/zcs20082015/article/details/107087589 服务启动 配置修改 简单处理,这里不再建新的模块,直接使用zhengcs-seata-storage模块作为演示。 1、修改POM,引入zkclient,修改seata版本 2、修改application.yml,将注册和配置类型改为zk 另外需要注意的是seata.tx-service-group配置参数要和zk导入的配置信息相关参数保持一致,否则会找不到server集群 启动服务 1、引入全局事务 2、启动 测试 基本功能测试 单元测试用例: 手动插入异常 执行用例: 基本功能是没问题的,更详细全面的测试这里就不介绍了,大家自行尝试。 高可用测试 上面的单机版肯定无法满足高可用,tc-server一旦宕掉,整个全局事务会无法进行回滚,同时会在seata库下面的事务表里面留下事务记录(正常处理成功后会被删除)。 seata的高可用是通过多个tc-server实例组成的集群来实现的。 启动多个tc-server实例: 通过-p参数修改启动接口,同时勾选Allow parallel run,开启多个实例。 然后启动客服端服务: 从启动日志可以看出,客户端会同时向所有几点注册TM和RM。 执行测试用例: 那,如果在数据已提交,异常退出之前把对应的tc-server节点停掉,会怎么样呢?答案是:全局事务回滚。大家自行尝试一下。 还有一种情况,如果客户端在执行过程中中断了,会怎么样? 如果客户端是单节点部署,那么: 首先,seata库下面的事务处理表里面有遗留事务处理记录,然后你会发现tc-server端日志里面会持续刷上述日志,tc-server会持续的尝试回滚该事务。最遗憾的是:哪怕客户端服务重启,也不会回滚该事务!!! 不过还好的是,这种情况毕竟是特例,如果客户端服务是集群部署,那么seata是可以正常完成事务回滚的。 结语 从上面的情况来看,起码seata对于简单的分布式事务场景的高可用支撑是没问题的,但是seata毕竟还是一个新框架,在实际的复杂的业务场景下会否出现什么问题,其实应该说出现什么问题都是可能的,这个需要实践和时间才能出真知了。 另外,seata目前没有提供控制台,没有服务集群配套的HA机制,这个不知道什么时候会出,拭目以待,seata应该会是一个很不错的分布式事务解决方案。   参考资料 https://seata.io/zh-cn/docs/ https://github.com/seata/seata ———————————————— 版权声明:本文为CSDN博主「zhengcs已被占用」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/zcs20082015/article/details/107092936

2020-07-23

城市列表mysql

城市列表数据库的mysql数据库,有中国大陆还有非中国大陆

2014-10-16

LINUX下C编程

LINUX下C编程LINUX下C编程LINUX下C编程LINUX下C编程LINUX下C编程

2008-04-24

空空如也

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

TA关注的人

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