winsw介绍 有时候我们需要在Windows下开机运行某些程序,这对于有图形界面的程序来说一般不是什么事,在选项中选中开机启动,然后它们就可以自动运行了。但是如果我们想运行一些命令行程序的话就没这么方便了。 原来我的做法是写一个bat脚本,然后将它的快捷方式复制到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp,这样就可以开机自启了。不过这种方式有一个非常大的缺点,就是开机之后会显示一个命令行窗口!而且这个窗口还不能关,一关程序就停了。 其实Windows自带了一个后台程序管理的功能,就是我们经常用到的服务。但是Windows的服务只有程序的开发者在写程序的时候引用到这个功能,我们才能利用服务来控制程序的启动和关闭。对于一般的命令行程序来说,没办法利用服务。所以今天我们就来使用一下标题的这个winsw。它可以将Windows上的任何一个程序注册为服务,如果不需要,也可以方便的卸载服务。 使用winsw 下载 首先要下载winsw。它是一个单个的可执行文件,我们到Github release这里就可以下载winsw了。一般来说当然是下载最新的。winsw可以运行在.NET2和.NET4两个版本上,当然如果使用Win10等比较新的系统,最好下载更新版本的.NET。 下载完之后最好把文件改成一个比较短小的名字,例如winsw.exe这样的,方便后面输入命令。 编写配置文件 我们需要编写一个和程序同名的XML文件作为winsw的配置文件。文件大体上长这样,这是官网的例子。
1 2 3 4 5 6 7 8 9 10 11 |
<service> <id>jenkins</id> <name>Jenkins</name> <description>This service runs Jenkins continuous integration system.</description> <env name="JENKINS_HOME" value="%BASE%"/> <executable>java</executable> <arguments>-Xrs -Xmx256m -jar "%BASE%\jenkins.war" --httpPort=8080</arguments> <logmode>rotate</logmode> </service> 看到XML的标签名,我想大家也能猜到这些参数是干嘛的,所以我就不介绍了。下面是我的一个配置文件例子。 |
1 2 3 4 5 6 7 8 |
<service> <id>kcp</id> <name>kcp</name> <description>这个服务用来将ss使用kcp协议加速</description> <executable>client_windows_amd64</executable> <arguments>-c kcp-config.json</arguments> <logmode>reset</logmode> </service> |
注册服务 编写好配置文件之后,记得把配置文件和可执行文件放在一起,这样winsw才能正确识别配置文件。然后我们打开一个管理员权限的命令提示符或Powershell窗口,然后输入下面的命令,如果返回值为0,说明已将程序注册为服务。
1 |
winsw install |
然后打开Windows的服务,我们可以看到这下已经出现了注册的服务,我们可以像一般服务那样开启、关闭它。 如果不再需要这个服务,使用winsw uninstall即可卸载服务。当然还有诸如start、stop这样的命令启动和关闭服务。更重要的是,没有那个既不美观又烦人的命令提示符窗口。 from:http://www.cnblogs.com/qianzf/p/6807167.html
View DetailsI was researching for a few feature rich UI frameworks based on React; that give the power of composability through React components that you can directly plug in into your React project Here is a compilation of a few ReactJS based UI frameworks (in no particular order), that I came across. Hope one of these choices will help you rapidly prototype your "ReactJS" ideas. Material UI Material-UI is a set of React components that implement Google’s Material Design . Out of the hundreds of UI frameworks out there, […]
View DetailsMySQL master/slave配置过程 一般master用来写,表类型采用InnoDB,在并发很多的情况下,InnoDB的表现肯定要比MyISAM强很多;slave用来读,表类型采用MyISAM,一个master可以对应一个或多个slave,一般情况下来说读比写多吧,不过也要根据实际情况来定。 A服务器(WindowsXP): 192.168.1.54 主服务器master B服务器(Linux): 192.168.1.23 副服务器slave A服务器设置 #提示,此处最好用mysql的命令行执行命令,用SQLyog等工具时可能不行 mysql -u root -p mysql>GRANT FILE ON *.* TO backup@192.168.1.23 IDENTIFIED BY '1234'; mysql>GRANT REPLICATION SLAVE ON *.* TO backup@192.168.1.23; mysql>exit; 上面是Master开放一个账号backup密码1234给IP:192.168.1.23有档案处理的权限 停止mysql的服务,防止数据库中增加新的数据,确保复制到slave中的数据是一样的 (此时如果是用mysqldump导出数据的话,则不能停止mysql服务,停止web server就可以了,net stop apache服务名称) 停止mysql mysqladmin -u root -p shutdown 或用net stop mysql服务名称(如mysql) 导出数据库结构及数据 D:\>mysqldump -u root -p ms_test > ms_test.sql Enter password: **** 备份Master所有数据库结构及数据, MySQL是要在stop情况下 在A机器上修改my.ini 在[mysqld]区段内加入参数 log-bin=mysql-bin server-id=1 #sql-bin-update-same binlog-do-db=ms_test 重启A服务器mysql B服务器设置 设定/etc/my.cnf 在[mysqld]区段加入 #added by alex in 08/21/1008 master-host=192.168.1.54 master-user=backup master-password=1234 master-port=3306 server-id=2 master-connect-retry=60 replicate-do-db=ms_test 将A上备份的数据库结构及数据copy到B服务器上,然后将数据库结构及数据导入到B服务器中 因为导出的文件ms_test.sql中不含有创建数据库的sql语句, 一是方法是在B服务器上手动创建数据库 另一种方法是把create database if […]
View Details如下是转的,今天遇到类似问题,按照此方法处理成功了: 补充change的点位到新日志的第一点也是可以的(mysql50--98;mysql51--106;mysql55--107) 今天一台MySQL 服务器突然停电,重启后复制无法启动,总是报如下错误: 080922 10:29:01 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000778' at position 2874108, relay log ' ./relay-bin.003287' position: 2874245 080922 10:29:01 [Note] Slave I/O thread: connected to master 'replication@192.168.0.10:3306', replication started in log 'mysql-b in.000778' at position 2874108 080922 10:29:01 [ERROR] Error reading packet from server: Client requested master to start replication from impossible position ( se rver_errno=1236) 080922 10:29:01 [ERROR] Got fatal error 1236: 'Client requested master to start replication from impossible position' from master wh en reading data from binary […]
View Details环境 配置Mysql的MasterSlave至少需要两台机器。我这里使用三台虚拟机进行测试。三台机器配置完全一样,MySQL安装的路径也是一样: 第一台:10.1.5.181; Windows 2008 DataCenter + MySQL Community Server 5.6.10.1 第二台:10.1.5.182; Windows 2008 DataCenter + MySQL Community Server 5.6.10.1 第三台:10.1.5.183; Windows 2008 DataCenter + MySQL Community Server 5.6.10.1 第一台10.1.5.181用作master,其他两台用做slave。 配置Master 在10.1.5.181这台服务器上找到MySQL的配置文件my.ini。我的具体路径是在C:\ProgramData\MySQL\MySQL Server 5.6下。 打开配置文件,在最下面添加如下配置: ************************************************************************************ #Master start #日志输出地址 主要同步使用 log-bin=master-bin.log #同步数据库 binlog-do-db=test #主机id 不能和从机id重复 server-id=1 #Master end ************************************************************************************ master的配置比较少,server-id是为这一组master/slave服务器定的唯一id,master/slave服务器中不能重复。在binlog-do-db中填写对象要同步的数据库,如果有多个,用逗号分隔,或再写一行如binlog-do-db=test2。 配置Slave 同样在第二台机器上10.1.5.181找到配置文件my.ini。打开配置文件,在最下面添加如下配置: ***************************************************************************** report-host = 10.1.5.181 report-user = root report-password = root123 log-bin = slave-bin.log replicate-do-db = test server-id = 2 ***************************************************************************** 这里需要添加master的IP,连接master的用户名和密码,生产环境中需要新建一个用户专门来处理replication,这里没有新建用户,用root做测试。端口没有配置,就是使用默认的3306,如果端口有变化,则通过report-port=?来配置。log-bin是记录日志的位置。 然后通过命令start slave来启动mysql的复制功能。如果在start slave过程中出现异常: The server is not configured as slave; fix in config […]
View Details获得当前日期+时间(date + time)函数:now()
1 2 3 4 5 6 7 |
mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ |
获得当前日期+时间(date + time)函数:sysdate() sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:
1 2 3 4 5 6 7 |
mysql> select now(), sleep(3), now(); +---------------------+----------+---------------------+ | now() | sleep(3) | now() | +---------------------+----------+---------------------+ | 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 | +---------------------+----------+---------------------+ |
sysdate() 日期时间函数,一般情况下很少用到。 MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()
1 2 3 4 5 6 7 |
mysql> select current_timestamp, current_timestamp(); +---------------------+---------------------+ | current_timestamp | current_timestamp() | +---------------------+---------------------+ | 2008-08-09 23:22:24 | 2008-08-09 23:22:24 | +---------------------+---------------------+ |
MySQL 日期转换函数、时间转换函数 MySQL Date/Time to Str(日期/时间转换为字符串)函数:date_format(date,format), time_format(time,format)
1 2 3 4 5 6 7 |
mysql> select date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s'); +----------------------------------------------------+ | date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s') | +----------------------------------------------------+ | 20080808222301 | +----------------------------------------------------+ |
MySQL 日期、时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的 一个逆转换。 MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format)
1 2 3 4 5 |
select str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09 select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09 select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09 select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30 select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2008-08-09 08:09:30 |
可以看到,str_to_date(str,format) 转换函数,可以把一些杂乱无章的字符串转换为日期格式。另外,它也可以转换为时间。“format” 可以参看 MySQL 手册。 MySQL (日期、天数)转换函数:to_days(date), from_days(days)
1 2 |
select to_days('0000-00-00'); -- 0 select to_days('2008-08-08'); -- 733627 |
MySQL (时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)
1 2 |
select time_to_sec('01:00:05'); -- 3605 select sec_to_time(3605); -- '01:00:05' |
MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)
1 2 3 |
select makedate(2001,31); -- '2001-01-31' select makedate(2001,32); -- '2001-02-01' select maketime(12,15,30); -- '12:15:30' |
MySQL (Unix 时间戳、日期)转换函数
1 2 3 4 |
unix_timestamp(), unix_timestamp(date), from_unixtime(unix_timestamp), from_unixtime(unix_timestamp,format) |
下面是示例:
1 2 3 4 5 6 7 8 9 |
select unix_timestamp(); -- 1218290027 select unix_timestamp('2008-08-08'); -- 1218124800 select unix_timestamp('2008-08-08 12:30:00'); -- 1218169800 select from_unixtime(1218290027); -- '2008-08-09 21:53:47' select from_unixtime(1218124800); -- '2008-08-08 00:00:00' select from_unixtime(1218169800); -- '2008-08-08 12:30:00' select from_unixtime(1218169800, '%Y %D %M %h:%i:%s %x'); -- '2008 8th August 12:30:00 2008' |
MySQL 日期时间计算函数 MySQL 为日期增加一个时间间隔:date_add()
1 2 3 4 5 6 7 8 9 10 11 12 13 |
set @dt = now(); select date_add(@dt, interval 1 day); -- add 1 day select date_add(@dt, interval 1 hour); -- add 1 hour select date_add(@dt, interval 1 minute); -- ... select date_add(@dt, interval 1 second); select date_add(@dt, interval 1 microsecond); select date_add(@dt, interval 1 week); select date_add(@dt, interval 1 month); select date_add(@dt, interval 1 quarter); select date_add(@dt, interval 1 year); select date_add(@dt, interval -1 day); -- sub 1 day |
MySQL adddate(), addtime()函数,可以用 date_add() 来替代。下面是 date_add() 实现 […]
View Details【发文时间是:1月9日,由于博客数据丢失近半年的,也不想修改添加日期了~】 到杭州游玩的朋友都想品尝一下杭州小吃,下面就详细介绍杭州比较有名的小吃一条街,让你了解杭州小吃街在哪里以及怎么走法。 杭州小吃一条街介绍,杭州小吃街在哪里 一、杭州胜利河小吃一条街 白天去的,人还是比较少的。 杭州胜利河小吃一条街本来是条曾经破败的老街,于2009年年底开创小吃街,这里有早就名声在外的老头儿油爆虾和外婆家运动会,还有丁记白切羊肉之类的特色小店。杭州胜利河小吃一条街的入口处设有停车场,这也是有车一族前来用餐的“有力保障”。 二、杭州河坊街小吃一条街 从河坊街的吴山广场西头走进去,快逛到东边尽头的时候就是大名鼎鼎的河坊街小吃一条街了,这里的小吃品种几乎不带重样,从温州的撒尿鱼丸到云南的油炸蝎子都能找到。不过,这里主要是做游客生意,小吃的价格有些偏高了。 三、杭州百井坊巷小吃一条街 杭州百井坊巷小吃一条街紧挨着武林银泰,可惜的是这条街的店面都比较小,是三五好友在逛街之余小聚一下的最佳选择。 四、杭州河东路小吃一条街 杭州河东路小吃一条街以夜宵出名,尤其是每到夏日的晚上,这条小吃街的生意最堪称火爆,最出名的当属街头的那家农夫烤鱼。另外,强烈推荐这里的凉拌海带,酸酸甜甜的做法,能刺激出你更大的胃口。 杭州小吃一条街介绍,杭州小吃街在哪里 五、杭州高银街小吃一条街 杭州高银街小吃一条街算得上是杭城美食街里的“老大哥”了。因为背靠河坊街,又离火车站特别近,到这里吃饭的游客总是络绎不绝。这里好吃的实在太多,别的不说,光看这条街上各色饭店的招牌,就足以让你迸发出随便找一家进去饕餮一番的念头了。 高银街最大的优点就是兼备了“阳春白雪”和“下里巴人”的两种风格,有亲民草根的特色小店,也有上得了台面的经典老店。 http://m.haocai777.com/Article/zixun/11319.html
View Details网站:bbs.osyunwei.com 程序在:Web服务器192.168.21.129上面 数据库在:MySQL服务器192.168.21.169上面 实现目的:增加一台MySQL备份服务器(192.168.21.168),做为MySQL服务器(192.168.21.169)的从服务器,这两台MySQL服务器之间实现双机热备。 即:从服务器(192.168.21.168)上面指定的数据库永远与主服务器(192.168.21.169)上面指定的数据库保持同步,并且随着主服务器(192.168.21.169)上面指定的数据库的变化而变化。 系统运维 www.osyunwei.com 温馨提醒:qihang01原创内容版权所有,转载请注明出处及原文链接 环境说明 1、Web服务器 系统:CentOS 6.2 IP:192.168.21.129 Web环境:apache+php 2、MySQL主服务器 系统:CentOS 6.2 IP:192.168.21.169 主机名称:MySQLMaster MySQL版本:mysql-5.5.22 3、MySQL从服务器 系统:CentOS 6.2 IP:192.168.21.168 主机名称:MySQLSlave MySQL版本:mysql-5.5.22 4、客户机 系统:Windows 7 IP:192.168.21.130 备注:作为主从服务器的MySQL版本建议使用同一版本!或者必须保证主服务器的MySQL版本要高于从服务器的MySQL版本(MySQL版本是向下兼容的) ####################################################################################### 教程开始: 一、安装MySQL 说明:在两台MySQL服务器192.168.21.169和192.168.21.168上分别进行如下操作,安装MySQL 5.5.22 1、配置防火墙,开启MySQL默认3306端口 vi /etc/sysconfig/iptables #编辑防火墙配置文件 -A INPUT -m state state NEW -m tcp -p tcp dport 3306 -j ACCEPT /etc/init.d/iptables restart #重启防火墙,使配置生效 2、关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq 保存,关闭。 shutdown -r now重启系统。 3、安装编译工具 yum install wget make apr* autoconf automake curl-devel gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel gd kernel […]
View Details前言:朋友咨询我说执行简单的update语句失效,症状如下: MySQL> update order_info set province_id=15 ,city_id= 1667 where order_from=10 and order_out_sn= 1407261241xxxx ; ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction mysql> QQ远程过去,开始check 1,查看数据库的隔离级别: mysql> select @@tx_isolation; + + | @@tx_isolation | + + | REPEATABLE-READ | + + 1 row in set (0.00 sec) mysql> 2,去查看先当前库的线程情况: mysql> show full processlist; + -+ + -+ + -+ + -+ + | Id | User | Host | db | Command | Time | State | Info | + -+ + -+ + -+ + -+ + | 1 | event_scheduler | localhost | NULL | Daemon | 9635385 | Waiting on empty queue | NULL | | 9930577 | business_web | 192.168.1.21:45503 | business_db | Sleep | […]
View DetailsEntity Framework(EF)的开发模式有多少种呢?有的说是三种,有的说是四种,到底哪个对呢? 先看下图: 再看这张: 那么明显开发模式是三种。 即:DateBase First(数据库优先)、Model First(模型优先)和Code First(代码优先)。 当然,如果把Code First模式的两种具体方式独立出来,那就是四种了。 Code First(New DataBase) :在代码中定义类和映射关系并通过model生成数据库,使用迁移技术更新数据库。 Code First(Existing DataBase):在代码中定义类和映射关系,给逆向工程提供工具。 Model First:在设计器中创建Model,并用Model生成数据库。所有的类由Model自动生成。 DateBase First:在设计器中逆向生成Model,并有Model自动生成所有的类。 from:http://www.cnblogs.com/jihua/archive/2013/05/23/efmoshi.html
View Details