最近动态

Linux

linux下mysql的root密码忘记解决方法

1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。
因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的
状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对
外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全
状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。
2.修改MySQL的登录设置:

vi /etc/my.cnf

在[mysqld]的段中加上一句:skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables
保存并且退出vi。
3.重新启动mysqld

/etc/init.d/mysqld restart

Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
4.登录并修改MySQL的root密码

/usr/bin/mysql

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.23.56
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> USE mysql ;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user SET Password = password ( ‘new-password’ ) WHERE User = ‘root’ ;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> flush privileges ;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
5.将MySQL的登录设置修改回来

vi /etc/my.cnf

将刚才在[mysqld]的段中加上的skip-grant-tables删除
保存并且退出vi。
6.重新启动mysqld

/etc/init.d/mysqld restart

Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
文章转自:http://www.cnblogs.com/allenblogs/archive/2010/08/12/1798247.html

阅读剩下更多

默认配图
算法

各种排序算法介绍

1.直接插入排序算法(Straight Insertion Sort):
基本思想:
将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。
算法的实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//
// main.cpp
// Straight Insertion Sort
//
// Created by anthony on 15-10-8.
// Copyright (c) 2015年 anthony. All rights reserved.
//

#include <iostream>
using namespace std;

void print(int a[], int n ,int i){
cout<<i <<":";
for(int j= 0; j<n; j++){
cout<<a[j] <<" ";
}
cout<<endl;
}
void InsertSort(int a[], int n)
{
for(int i= 1; i<n; i++){
if(a[i] < a[i-1]){ //若第i个元素大于i-1元素,直接插入。小于的话,移动有序表后插入
int j= i-1;
int x = a[i]; //复制为哨兵,即存储待排序元素
a[i] = a[i-1]; //先后移一个元素
while(x < a[j]){ //查找在有序表的插入位置
a[j+1] = a[j];
j--; //元素后移
}
a[j+1] = x; //插入到正确位置
}
print(a,n,i); //打印每趟排序的结果
}
}

int main(int argc, const char * argv[]) {
int a[8] = {5,6,1,3,2,8,9,7};
InsertSort(a,8);
print(a,8,8);
return 0;
}

运行结果:

1:5 6 1 3 2 8 9 7

2:1 5 6 3 2 8 9 7

3:1 3 5 6 2 8 9 7

4:1 2 3 5 6 8 9 7

5:1 2 3 5 6 8 9 7

6:1 2 3 5 6 8 9 7

7:1 2 3 5 6 7 8 9

8:1 2 3 5 6 7 8 9

Program ended with exit code: 0

时间复杂度:O(n^2).

2.选择排序—简单选择排序(Simple Selection Sort):

基本思想:
>
在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。

操作方法:

阅读剩下更多

默认配图
学习笔记

[作业]Servlet简易聊天室

简单例子-Servlet聊天室,所用工具:NetBeans IDE(配备GlassFish)
本次例子重在思路,页面未做任何美化。
最后结果展示:http://demo.dshui.wang/tomcat/First_chat_room/
首先,需要一个登陆页面。
Login.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%
Cookie[] cookies = request.getCookies();
String uname = "";
String upwd = "";
if(cookies!=null){
for(int i=0;i<cookies.length;i++)
{
Cookie cookie=cookies[i];
if(cookie.getName().equals("remname"))
{
uname = cookie.getValue();
}
else if(cookie.getName().equals("rempwd"))
{
upwd = cookie.getValue();
}
}
}
//上面代码用来判断用户是否曾保存过登陆信息
%>
<!DOCTYPE html>
<html>
<head>
<title>牛逼的登陆界面</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div>
<form action="Main" method="post" name="loginform">
<table>
<tr>
<td>用户名:</td>
<td>
<input type="text" name="username" value="<%=uname%>" />
</td>
</tr>
<tr>
<td>密码:</td>
<td>
<input type="password" name="password" value="<%=upwd%>" />
</td>
</tr>
<tr>
<td colspan="2" style="text-align: right;">
记住信息<input name="remember" type="checkbox" value="true" />
<input type="submit" name="submit" value="登录"/>
<input type="reset" name="" value="重置"/>
</td>
</tr>
</table>

</form>
</div>
</body>
</html>

新建一个用来处理登录信息的Servlet: Main.java 所有的处理都在DoPost()完成

阅读剩下更多

默认配图
学习笔记

Discuz的数据库的迁移

如果WEB服务器迁移,除了将论坛所有的文件转移到新的服务器上之外,还需要将数据库一同迁移。文件转移完毕之后,并不能算完成了,因为这里还有数据库的配置没有修改。
Discuz论坛,如果需要迁移数据库,那么我们在转移的数据库的所有数据之后,还需要重新配置一下Discuz的配置文件:
论坛连接Ucenter的配置:config/config_ucenter.php
论坛的配置:config/config_global.php
Ucenter的配置:uc_server/data/config.inc.php
在这三个文件里面,修改对应的数据库地址、数据库名称、用户名、密码。
全部配置完毕之后,保存就可以了。

阅读剩下更多

默认配图
Linux

Linux之CentOS 6.7 下无网络? 原来是网卡没启动!

CentOS-Network-eth0
今天用Vbox安装了CentOS 6.7 准备测试游戏服务器,需要下载一个服务端,使用wget时发现无wget命令,聪明的我马上想到使用yum install wget 来安装一个,谁知道出现了无法连接镜像列表的报错,通过查看ifconfig发现,原来是网卡没有启动,于是查看了资料:

1
vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改开启自启:

1
2
3
4
5
6
7
DEVICE=eth0
HWADDR=00:0C:29:2E:37:F0
TYPE=Ethernet
UUID=69cd9740-184f-49b7-857f-e397e57f265b
ONBOOT=yes //修改此处
NM_CONTROLLED=yes //修改此处
BOOTPROTO=dhcp

然后重启网络:

1
2
3
//重启网络
/etc/init.d/network restart
//查看IP

阅读剩下更多

默认配图
游戏

SAMP-LS中心医院围栏+自动门

20170206148636277144832.png
下面是围栏的创建,写入main()或者OnGameModeInit()函数即可;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CreateObject(966, 1209.32813, -1384.90000, 12.24180,   0.00000, 0.00000, 0.00000);//障碍底座
CreateObject(967, 1210.39294, -1384.90000, 12.24560, 0.00000, 0.00000, -90.00000);//看守台
CreateObject(970, 1187.95776, -1384.87561, 12.78820, 0.00000, 0.00000, 0.00000);//前面大门围栏
CreateObject(970, 1200.26697, -1384.90002, 12.78820, 0.00000, 0.00000, 0.00000);//前面大门围栏
CreateObject(970, 1192.11816, -1384.90002, 12.78820, 0.00000, 0.00000, 0.00000);//前面大门围栏
CreateObject(970, 1196.20007, -1384.90002, 12.78820, 0.00000, 0.00000, 0.00000);//前面大门围栏
CreateObject(1411, 1210.96069, -1383.11963, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1377.84949, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1372.57935, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1367.30921, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1362.03907, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1356.76893, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1351.49879, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1346.22865, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1340.95851, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1335.68837, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1330.41823, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1325.14809, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1319.87795, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1314.60781, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1309.33767, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1304.06753, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1298.79739, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(1411, 1210.96069, -1293.52725, 13.86000, 0.00000, 0.00000, 90.00000);//侧面围栏
CreateObject(978, 1206.48462, -1290.66870, 13.21470, 0.00000, 0.00000, 0.00000);//后面障碍
CreateObject(978, 1197.15100, -1290.66504, 13.21470, 0.00000, 0.00000, 0.00000);//后面障碍
CreateObject(978, 1187.76526, -1290.66870, 13.21470, 0.00000, 0.00000, 0.00000);//后面障碍

新建障碍门变量:

1
2
new hospitalgate1;//门关
new hospitalgate2;//门开

1
2
//写入OnGameModeInit()函数
hospitalgate1 = CreateObject(968, 1209.4478, -1384.9000, 13.0276, 0.00000, -90.00000, 0.00000);
1
2
3
4
5
6
7
public GateCloseHspt()
{
DestroyObject( hospitalgate2 );
hospitalgate1 = CreateObject(968, 1209.4478, -1384.9000, 13.0276, 0.00000, -90.00000, 0.00000);
lshospital = 0;
return 1;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//此段代码在输入指令/go(开门的指令)相关代码里面加入
else if(PlayerInfo[playerid][pMember] == 4 || PlayerInfo[playerid][pLeader] == 4)//医院
{
if (IsPlayerInRangeOfPoint(playerid, 15,1209.4478,-1384.9000,12.9476))
{
if(lshospital == 1) { SendClientMessage(playerid, COLOR_GREY, "** 医院大门已经打开了"); return 1; }
DestroyObject( hospitalgate1 );
hospitalgate2 = CreateObject(968, 1209.4478, -1384.9000, 13.0276, 0.00000, 0.00000, 0.00000);
//MoveObject(hospitalgate1,1209.44775,-1385.21558,12.94760,2,0.00000,0.00000,0.0000);
SetTimer("GateCloseHspt", 6000, 0);
SendClientMessage(playerid, COLOR_BLUE,"医院门打开了并将在6秒后关闭.");

format(string, sizeof(string), "* %s 打开了 医院大门.", sendername);
ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
lshospital = 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY,"* 你附近没有可以打开的门!.");
return 1;
}
}

阅读剩下更多

默认配图
游戏

SAMP-地图-新鞋停车场围栏Obj

2017020614863629785667.png

下面是围栏的创建,写入OnGameModeInit()函数即可;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
	CreateObject(985, 1407.17517, -2267.35474, 12.53770,   0.00000, 0.00000, 180.00000);
CreateObject(985, 1415.00610, -2267.35474, 12.53770, 0.00000, 0.00000, 180.00000);
CreateObject(985, 1399.33862, -2267.35474, 12.53770, 0.00000, 0.00000, 180.00000);
CreateObject(985, 1399.33862, -2267.35474, 12.53770, 0.00000, 0.00000, 180.00000);
CreateObject(985, 1391.50842, -2267.35474, 12.53770, 0.00000, 0.00000, 180.00000);
CreateObject(985, 1383.69531, -2267.35474, 12.53770, 0.00000, 0.00000, 180.00000);
CreateObject(985, 1371.91162, -2263.42041, 12.53770, 0.00000, 0.00000, 90.00000);
CreateObject(985, 1371.91162, -2255.59082, 12.53770, 0.00000, 0.00000, 90.00000);
CreateObject(985, 1371.91162, -2247.79932, 12.53770, 0.00000, 0.00000, 90.00000);
CreateObject(985, 1371.91162, -2240.01318, 12.53770, 0.00000, 0.00000, 90.00000);
CreateObject(985, 1371.91162, -2232.20728, 12.53770, 0.00000, 0.00000, 90.00000);
CreateObject(985, 1371.91162, -2224.41846, 12.53770, 0.00000, 0.00000, 90.00000);
CreateObject(985, 1371.91162, -2216.63135, 12.53770, 0.00000, 0.00000, 90.00000);
CreateObject(985, 1371.91162, -2208.81470, 12.53770, 0.00000, 0.00000, 90.00000);
CreateObject(985, 1383.63245, -2204.85791, 12.53770, 0.00000, 0.00000, 0.00000);
CreateObject(985, 1391.45520, -2204.85791, 12.53770, 0.00000, 0.00000, 0.00000);
CreateObject(985, 1399.27893, -2204.85791, 12.53770, 0.00000, 0.00000, 0.00000);
CreateObject(985, 1407.10815, -2204.85791, 12.53770, 0.00000, 0.00000, 0.00000);
CreateObject(985, 1418.95215, -2263.45361, 12.53770, 0.00000, 0.00000, -90.00000);
CreateObject(985, 1418.95215, -2255.62061, 12.53770, 0.00000, 0.00000, -90.00000);
CreateObject(985, 1418.95215, -2247.78955, 12.53770, 0.00000, 0.00000, -90.00000);
CreateObject(985, 1418.95215, -2239.96265, 12.53770, 0.00000, 0.00000, -90.00000);
CreateObject(985, 1418.95215, -2224.43652, 12.53770, 0.00000, 0.00000, -90.00000);
CreateObject(985, 1418.95215, -2208.79883, 12.53770, 0.00000, 0.00000, -90.00000);
CreateObject(985, 1418.95215, -2216.62427, 12.53770, 0.00000, 0.00000, -90.00000);
CreateObject(985, 1375.85364, -2267.35474, 12.53770, 0.00000, 0.00000, 180.00000);
CreateObject(985, 1375.78442, -2204.85791, 12.53770, 0.00000, 0.00000, 180.00000);

接下来是遥控门的代码:(左右打开的门)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/* 首先声明两个门的变量: */
new xxgate1;
new xxgate2;

/* 一个函数: */
forward GateCloseXx();

/* 初始化动态对象 写在public OnGameModeInit()函数体里面 */
xxgate1 = CreateObject(988,1419.0482,-2235.0635,13.5822,0.00000,0.00000,90.00000);
xxgate2 = CreateObject(988,1419.0477,-2229.5605,13.5822,0.00000,0.00000,90.00000);

/* 函数代码实例: */
public GateCloseXx()
{
//DestroyDynamicObject( xxgate2 );
MoveObject(xxgate1,1419.0482,-2235.0635,13.5822,2,0.00000,0.00000,90.0000);
MoveObject(xxgate2,1419.0477,-2229.5605,13.5822,2,0.00000,0.00000,90.0000);
lsxinxie = 0;
return 1;
}

/* 开门指令: */
/* 找到下面的代码 */
if(!strcmp(cmdtext, "/go", true)) // By CuervO_NegrO
{
if(IsAPDMember(playerid) || IsAFreecop(playerid))
{
.......
}
...
...
...
/* 下面是新增的 */
else if(PlayerInfo[playerid][pMember] == 11 || PlayerInfo[playerid][pLeader] == 11)
{
if (IsPlayerInRangeOfPoint(playerid, 15,1419.3103,-2232.0325,12.8972))
{
if(lsxinxie == 1) { SendClientMessage(playerid, COLOR_GREY, "** 新鞋停车场门已经打开了"); return 1; }
MoveObject(xxgate1,1419.0482,-2238.0635,13.5822,2,0.00000,0.00000,90.0000);
MoveObject(xxgate2,1419.0477,-2225.5605,13.5822,2,0.00000,0.00000,90.0000);
SetTimer("GateCloseXx", 6000, 0);
SendClientMessage(playerid, COLOR_BLUE,"新鞋停场大门打开了并将在6秒后关闭.");

format(string, sizeof(string), "* %s 打开了 新鞋停车场大门.", sendername);
ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
lsxinxie = 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY,"* 你附近没有可以打开的门 新鞋!.");
return 1;
}
}
/* 上面是新增的 */
/* 下面是已经有的 */
else
{
SendClientMessage(playerid, COLOR_GREY,"* 你没有开门的遥控器.");
}
return 1;
}

阅读剩下更多

默认配图
数据库

数据库系统的基本概念

  1. 数据(Data):数据是数据库中存储的基本对象,它有多种表现形式。数据是描述事物的符号记录,这些符号可以是文字、图形、声音和图像等。
  2. 数据库(DataBase,DB):数据库是一个长期存储在计算机内的,有组织的、可共享的、统一管理的数据集合。
  3. 数据库管理系统(DataBase Management,DBMS):数据库管理系统是为数据库的建立、使用和维护而配置的系统软件。

    • 数据定义功能
    • 数据操作功能
    • 数据库的运行管理功能
    • 数据库的建立和维护功能
  4. 数据库管理员(DataBase Administrator,DBA):数据库管理员是负责管理和维护数据库服务器的人员

    1. DBA应参与数据库和应用系统的设计
    2. DBA应参与决定数据库的存储结构和存取策略的工作
    3. DBA要负责定义数据的安全性要求和完整性要求
    4. DBA负责监视和控制数据库系统的运行以及系统的维护和数据恢复工作
    5. DBA负责数据库的改进和重组
  5. 数据库系统(Database System,DBS):数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员和用户构成。

阅读剩下更多

默认配图
学习笔记

Mac OS(苹果电脑) 如何清空DNS缓存?

很多时候,因为域名的解析长时间未生效,我们无法通过域名访问刚刚解析的主机,最快的方法就是清空本地DNS缓存。
我们都知道,在Windows下面,想要清空本地dns缓存只需要执行一条CMD命令:

ipconfig/flushdns
但是在使用苹果这样高大上的Mac系统的时候,就得用它独特的命令了。不过,不同的MAC系统版本命令也不一样!
Tiger或更低版本 Mac OS:

sudo lookupd -flushcache

Leopard和Snow Leopard:

sudo dscacheutil -flushcache

而到了Lion、Mountain Lion和Mavericks:

sudo killall -HUP mDNSResponder

然后是Yosemite:

sudo discoveryutil mdnsflushcache

最后就到了EI Caption:

sudo dscacheutil -flushcache
另外,提一下,Linux下通用命令:

sudo /etc/init.d/dns-clean start

阅读剩下更多

默认配图
Linux

安装CentOS7之后win7引导没了,Grub解决

因为学习linux需要,虚拟机安装又显得太简单,所以在实验室win7电脑上装个windows和linux的双系统,自然采用最新的centos7来试着玩一玩咯!但是没想到装完cnetos7之后,windows进不去了(没有windows的引导),上网查了各种资料,最终确定了修改Grub的配置文件来增加对windows的引导。
首先我们要登陆Centos,打开Grub的配置文件:

执行命令:
vi /boot/grub2/grub.cfg
找到 ### BEGIN /etc/grub.d/30_os-prober ### 在下面添加:

1
2
3
4
5
menuentry "Windows 7 Loader On Dev/sda1" {
insmod ntfs
set root=(hd0,1)
chainloader +1
}

关键代码:set root=(hd0,1) 其中 hd0 表示硬盘,1 表示C盘 ,因为我这里win7是安装在C盘的,所以是1,如果你不是C盘(第一个分区),那么就要需改成你对应的分区号了。

阅读剩下更多

默认配图
返回顶部