sfc修复:
Win+X—命令提示符(管理员)—sfc /scannow—Enter可以查看是否存在系统文件损坏等问题
以管理员权限运行命令提示符,执行“dism /online /cleanup-image /restorehealth”命令,Windows将自动联网修复损坏的文件。
sfc修复:
Win+X—命令提示符(管理员)—sfc /scannow—Enter可以查看是否存在系统文件损坏等问题
以管理员权限运行命令提示符,执行“dism /online /cleanup-image /restorehealth”命令,Windows将自动联网修复损坏的文件。
惯用命令—shutdown:
shutdown可达成如下工作:
* 可以选择自由关机模式:是要关机、重启或进入单用户操作模式均可;
* 可以设置关机时间:可以设置成现在立刻关机,也可以设置某一个特定的时间才关机;
* 可以自定义关机消息:在关机之前,可以将自己设置的消息传达给在线用户;
* 可以仅发出警告消息:有时有可能你要进行一些测试,而不想让其他用户干扰,或者是明白地告诉用户某段时间要注意下,这个时候可以使用shutdown来通知用户,但却不是真的要关机;
* 可以选择是否要用fsck检查文件系统.
常用的语法规则:
/sbin/shutdown [-t 秒] [-rkhncfF] 时间 [警告消息]
参数:
-t sec : -t 后面加秒数,即”过几秒后关机”的意思;
-r : 在将系统服务停掉之后就重启(常用);
-h : 将系统服务停掉后,立即关机(常用);
-k : 不是真的关机,只是发送警告消息出去;
-n : 不经过init程序,直接以shutdown的功能来关机;
-c : 取消已经在进行的shutdown命令内容;
-f : 关机并开机之后,强制略过fsck的磁盘检查;
-F : 系统重启之后,强制进行fsck的磁盘检查;
时间 : 这是一定要加入的参数.可以为now 10 13:00 ….
eg:
shutdown -h 10 ‘I will shutdown after 10 minutes’.
告诉大家:这台机器会在10分钟后关机,并且会显示在目前登录者的屏幕前方.
常用关机、重启命令:
重启命令:
reboot
hutdown -r now
init 6
关机命令:
shutdown -h now
halt -p
poweroff
init 0
小注:
shutdown 可以依据目前已启动的服务来逐次关闭服务后关机;而halt 却能够不理会目前系统状况下,进行硬件关机的特殊功能.
Dos
shutdown /?
没有参数 显示帮助。这与键入 /? 是一样的。
/? 显示帮助。这与不键入任何选项是一样的。
/l 注销。这不能与 /m 或 /d 选项一起使用。
/s 关闭计算机。
/r 完全关闭并重启计算机。
/h 休眠本地计算机。
可以与 /f 选项一起使用。
/t xxx 将关闭前的超时时间设置为 xxx 秒。
有效范围是 0-315360000 (10 年),默认值为 30。
如果超时时间大于 0,则默示为
/f 参数。
/c “comment” 有关重新启动或关闭的原因的注释。
最多允许 512 个字符。
/f 强制关闭正在运行的应用程序而不事先警告用户。
如果为 /t 参数指定大于 0 的值,
则默示为 /f 参数。
/d [p|u:]xx:yy 提供重新启动或关闭的原因。
p 指示重启或关闭是计划内的。
u 指示原因是用户定义的。
如果未指定 p 也未指定 u,则重新启动或关闭
是计划外的。
xx 是主要原因编号(小于 256 的正整数)。
yy 是次要原因编号(小于 65536 的正整数)。
防火墙开启可以有效防止外部非法访问,能够很好的保护内网电脑。可是开启防火墙之后,很多应用服务内外网访问都有限制,那么可以通过设置防火墙端口排除例外来解决这个问题,本经验以win2008R2系统为例
方法/步骤
1、Windows2008R2系统防火墙在,控制面板里面去找(还可以到服务器管理器里面找)
2、点击进入08防火墙设置选项卡,注意一下【高级设置】里面去设置
3、在防火墙设置右上方,有【创建规则】
4、入站规则
进入规则向导页面,选择【端口】类型
5、本案例以开放webmail自定义端口为例,选择特定端口如8008
6、操作设置
然后在操作设置里面,选择【允许连接】
7、安全域选择
接下来就是重点了,需要允许应用到的规则域区域。建议全部选择,
8、然后是规则的名称,可以任意取名。建议加上备注,比如XX服务器XX应用
9、检查配置(出站和入站的区别就是端口的指向)
设置好之后,点击入站规则里面查看。可以看到刚刚的配置设置
10、出站规则
出站规则设置方法是一样的,注意一下。协议类型,有TCP. UDP 你可以选择所有及 ALL类型
11、测试端口
设置好服务器防火墙端口开放之后,再内网的还需要在路由器上设置映射。可以通过站长工具在线测试,
注意事项
以上介绍的是08系统防火墙常规添加规则的方法,当然您也可以直接在网卡TCP/IP里面设置筛选也是一样的效果。
1、在Windows上安装Redis,安装的时候把加入到环境变量勾选上。
2、安装好后,win+r打开运行输入cmd进入控制台程序,直接输入redis-cli并且输入ping,回复pong则链接成功,
1、简单字符串存取
set key value
get key
···
3、安装RedisStudio,redis管理界面,个人觉得最好使用的。
1、在Vmware中安装Ubuntu虚拟机;
2、安装redis
//下载redis-3.2.6
sudo wget http://download.redis.io/releases/redis-3.2.6.tar.gz
//解压redis-3.2.6
sudo tar -zxvf redis-3.2.6.tar.gz
3、在~/下新建一个redis文件夹并且将redis-3.2.6下的文件全部拷贝进该redis文件夹下
//如果没有安装gcc
sudo apt-get install gcc
//进入redis文件夹执行make
sudo make
sudo make install
4、此时就将redis安装到了/usr/local/bin
(服务端,客户端都在里面启动)下了
//进入/usr/local/bin文件夹中
cd /usr/local/bin
//启动redis-server
redis-server ~/redis/redis.conf
redis-cli
5、为了能在我们的win中访问linux下的redis,我们还需要对redis.conf
进行少量的更改
protected-mode yes --> protected-mode no
bind 127.0.0.1 --> #bind 127.0.0.1
6、在终端输入ifconfig
,查看ubuntu的IP地址inet addr:xxx.xxx.xxx.xxx
1、Nuget安装StackExchange.Redis
,程序中加入SeRedisHelper类
/****************************************************************
* 作 者:xuxuzhaozhao
* CLR 版本:4.0.30319.42000
* 创建时间:2017/5/8 9:12:47
* 当前版本:1.0.0.1
*
* 描述说明: StackExchange.Redis 的帮助类
*
* 修改历史:
*
*****************************************************************/
using System;
using StackExchange.Redis;
using System.Configuration;
using System.Collections.Generic;
namespace Common.Redis
{
public class SERedisHelper
{
private static string _conn = ConfigurationManager.AppSettings["RedisConnectString"]
/// <summary>
/// 存下实体
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key">键</param>
/// <param name="t">实体</param>
/// <param name="ts">过期时间</param>
/// <returns></returns>
public static bool Set<T>(string key, T t, TimeSpan ts)
{
using (var client = ConnectionMultiplexer.Connect(_conn))
{
var jsonstr = Newtonsoft.Json.JsonConvert.SerializeObject(t);
return client.GetDatabase().StringSet(key, jsonstr, ts);
}
}
/// <summary>
/// 根据键来获取实体
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key">键</param>
/// <returns></returns>
public static T GetEntityBykey<T>(string key) where T : class
{
using (var client = ConnectionMultiplexer.Connect(_conn))
{
var jsonstr = client.GetDatabase().StringGet(key);
return string.IsNullOrEmpty(jsonstr) ? null : Newtonsoft.Json.JsonConvert.DeserializeObject<T>(jsonstr);
}
}
/// <summary>
/// 存单个键值对
/// </summary>
/// <param name="key">键</param>
/// <param name="value">值</param>
/// <param name="ts">过期时间</param>
/// <returns></returns>
public static bool StringSetSingle(string key, string value, TimeSpan ts)
{
using (var client = ConnectionMultiplexer.Connect(_conn))
{
return client.GetDatabase().StringSet(key, value, ts);
}
}
/// <summary>
/// 取单个值
/// </summary>
/// <param name="key">键</param>
/// <returns></returns>
public static string StringGetSingle(string key)
{
try
{
using (var client = ConnectionMultiplexer.Connect(_conn))
{
return client.GetDatabase().StringGet(key);
}
}
catch (Exception)
{
return null;
}
}
/// <summary>
/// 批量存值
/// </summary>
/// <param name="keys">键数组</param>
/// <param name="values">值数组</param>
/// <returns></returns>
public static bool StringSetMany(string[] keys, string[] values)
{
var count = keys.Length;
var keyValuePair = new KeyValuePair<RedisKey, RedisValue>[count];
for (int i = 0; i < count; i++)
{
keyValuePair[i] = new KeyValuePair<RedisKey, RedisValue>(keys[i], keys[i]);
}
using (var client = ConnectionMultiplexer.Connect(_conn))
{
return client.GetDatabase().StringSet(keyValuePair);
}
}
/// <summary>
/// 批量获取值
/// </summary>
/// <param name="keysStrings">键数组</param>
/// <returns></returns>
public static string[] StringGetMany(string[] keysStrings)
{
var count = keysStrings.Length;
var keys = new RedisKey[count];
var values = new string[count];
for (int i = 0; i < count; i++)
{
keys[i] = keysStrings[i];
}
try
{
using (var client = ConnectionMultiplexer.Connect(_conn))
{
var valuess = client.GetDatabase().StringGet(keys);
for (int i = 0; i < count; i++)
{
values[i] = valuess[i];
}
return values;
}
}
catch (Exception)
{
return null;
}
}
/// <summary>
/// 删除键,即把这条数据删除
/// </summary>
/// <param name="key">键</param>
/// <returns></returns>
public static bool DeleteKey(string key)
{
using (var client = ConnectionMultiplexer.Connect(_conn))
{
return client.GetDatabase().KeyDelete(key);
}
}
}
}
2、使用
/****************************************************************
* 作 者:xuxuzhaozhao
* CLR 版本:4.0.30319.42000
* 创建时间:2017/5/8 10:30:26
* 当前版本:1.0.0.1
*
* 描述说明:
*
* 修改历史:
*
*****************************************************************/
using System;
using Common.Redis;
namespace Redis.Test
{
class Program
{
static void Main(string[] args)
{
var loginUser = new LoginUser
{
Id = 1,
Name = "xuxuzhaozhao",
Gender = true,
CreateTime = DateTime.Today,
Money = 12.12M
};
var updateUser = new LoginUser
{
Id = 2,
Name = "xuchengyi",
Gender = false,
CreateTime = DateTime.Now,
Money = 19.92M
};
while (true)
{
Console.WriteLine();
Console.WriteLine("========================================");
Console.WriteLine("请输入想要对实体进行的操作:");
Console.WriteLine("1、将实体加入Redis;");
Console.WriteLine("2、从Redis查询实体;");
Console.WriteLine("3、从Redis更改实体;");
Console.WriteLine("4、从Redis删除实体;");
Console.WriteLine("=======================================");
var op = Console.ReadLine();
switch (op)
{
case "1":
Console.WriteLine("请输入键名:");
var key1 = Console.ReadLine();
if(SERedisHelper.Set(key1,loginUser,new TimeSpan(0,0,30,0)))
Console.WriteLine("实体成功加入Redis!过期时间为30分钟!");
else
Console.WriteLine("加入失败!");
break;
case "2":
Console.WriteLine("请输入要查询值对应的键:");
var key2 = Console.ReadLine();
LoginUser user = SERedisHelper.GetEntityBykey<LoginUser>(key2);
if (user != null)
{
Console.WriteLine("查询成功!实体信息如下:");
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(user));
}
else
Console.WriteLine("没有查询到{0}对应的实体!",key2);
break;
case "3":
Console.WriteLine("请输入要更改的键:");
var key3 = Console.ReadLine();
if(SERedisHelper.Set(key3,updateUser,new TimeSpan(0, 0, 30, 0)))
Console.WriteLine("实体更新成功!");
else
Console.WriteLine("更新失败!");
break;
case "4":
Console.WriteLine("请输入要删除实体对应的键:");
var key4 = Console.ReadLine();
if (SERedisHelper.DeleteKey(key4))
Console.WriteLine("实体删除成功!");
else
Console.WriteLine("删除失败!");
break;
default:
Console.WriteLine("请输入数字进行操作!");
break;
}
}
}
}
class LoginUser
{
public int Id { get; set; }
public string Name { get; set; }
public bool Gender { get; set; }
public DateTime CreateTime { get; set; }
public decimal Money { get; set; }
}
}
Redis可以到Linux公社资源站下载:
最近有台windows服务器主机偶尔会出现网络断掉的情况,网络图标感叹号状态。其他电脑的网络都是正常。
关路由器什么事呢?确实,是无关的。
原因分析与处理:
1.可能是服务器主机的ip被人顶掉?这个可能是有的,但应该比较小。
2.系统漏洞导致?
所以,更新了系统漏洞。
3.硬件驱动问题?
重新下载网卡驱动程序,重新安装。
4.网卡硬件问题,那只能换网卡了。现在还无法判断。
鉴于还是有可能出现断网的情况,为此,整理一段检查网络情况的代码,网络无法连接,可自动重启网卡。
代码如下,仅供参考:
@echo off
echo “网卡自动检查重启服务正在进行中…….”
echo “停止服务请按 Ctrl+C”
:begin
echo %date% %time% “ping……” >>ping.txt
ping 192.168.1.1 >>ping.txt
rem echo %errorlevel%
if %ERRORLEVEL% == 1 goto reboot
goto loop
:reboot
echo %date% %time% “网卡已重新启动” >>errlog.log
echo %date% %time% “网卡停用中….”
netsh interface set interface “本地连接 2” disabled
echo %date% %time% “网卡启动中….”
netsh interface set interface “本地连接 2” enabled
echo %date% %time% “网卡已重新启动….”
:loop
ping 127.0.0.1 -n 300 > nul
goto begin
说明:
netsh interface set interface “本地连接 2” enabled
这个本地连接 2 是可以换成某个网卡的,譬如 eth0或者eth1
上述流程中的ESP分区(标准的ESP分区可以使用Diskgenious软件创建),为UEFI下Windows的引导分区,实际上就是一个FAT格式的分区,并无其他特殊的要求。并不像在传统BIOS下,启动Windows需要“活动的主分区”。在ESP分区下,存在几个重要的文件(“√”表示必不可少的文件):bootmgfw.efi是由bootx64.efi或bootia32.efi改名来的。
EFI/Boot/bootx64.efi(或bootia32.efi)
√ EFI/Microsoft/Boot/bootmgfw.efi
√ EFI/Microsoft/Boot/BCD
EFI/Microsoft/Boot/zh-CN
上面这几个文件可以系统安装光盘中找到,我们只要简单的使用“复制”-“粘贴”,放到ESP分区即可。当然也可以通过命令进行操作:
bcdboot C:\windows /l zh-cn
上述命令成功执行的前提:1、必须存在bcdboot.exe文件(原版Windows8.1/8/7的C:\Windows\System32下有此文件)。2、命令在bcdboot.exe文件所在路径下执行。3、若自行创建的FAT分区(不是标准的ESP分区),则需要执行命令:bcdboot C:\windows /l zh-cn /s Y: (Y代表FAT分区盘符)。
上述操作的意义在于,UEFI环境下安装系统,可以将gho、wim系统映像应用到某分区,然后自行创建一个ESP分区,再通过执行上述命令修复一下启动文件即可大功告成。
详细方法说明:
PE下使用命令行修复UEFI启动模式的引导问题
进入PE(win8),
a、PE为传统启动方式:
打开命令提示符,输入 bcdboot c:\windows /s x: /f uefi /l zh-cn 回车即可。
命令解释:
c代表你的系统所在分区,x:代表esp分区,如果esp分区没有盘符,请先指定一个。
bcdboot – Bcd 启动文件创建和修复工具。
bcdboot.exe 命令行工具用于将关键启动文件复制到系统分区以及创建新的系统
BCD 存储。
“c:\windows” 指定 windows 系统根目录的位置。
/s 指定一个可选的卷号参数,该参数用于指定要将启动环境文件复制到哪个目标系统分区。默认值为固件标识的系统分区。
/f 与 /s 命令一起使用,指定目标系统分区的固件类型,<firmware> 的选项是 “UEFI”、”BIOS” 或 “ALL”。
/l 指定在初始化 BCD 存储时使用的可选区域设置参数,默认值为”简体中文”。
b、PE为UEFI启动方式:
打开命令提示符,输入 bcdboot c:\windows /l zh-cn回车即可。
注意事项:
如果该命令不能顺利执行,请检查你的win8PE的完整性,看bcdboot是否被精简了。
今天一客户反应windows server 2012启动后,只有黑屏,且有一个CMD对话框,怀疑客户删东西了。咨询后发现,客户删除framework后,就不能启动了。
.Net Framework 4.5是Windows Server 2012 中图形化界面(GUI) 的基础,所以出现了这个问题,解决办法也简单,在命令行输入如下命令:Dism /online /enable-feature /all /featurename:Server-Gui-Mgmt /featurename:Server-Gui-Shell /featurename:ServerCore-FullServer 回车后,等待一段时间,提示你是否重新启动计算机?(Y/N)。
输入Y,系统重新启动。再次进入系统,正常的图形界面了。
查看设置:netsh firewall show config
关闭windows防火墙:netsh firewall set opmode mode=disable
打开windows防火墙:netsh firewall set opmode mode=enable
“/”应用程序中的服务器错误。 配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。 源错误: 行 8: <configuration> 行 9: <system.web> 行 10: <compilation debug="true" targetFramework="4.5" /> 行 11: <httpRuntime targetFramework="4.5" /> 行 12: </system.web> 源文件: F:\Project\ExportExcel\ExportExcel\web.config 行: 10 版本信息: Microsoft .NET Framework 版本:2.0.50727.5485; ASP.NET 版本:2.0.50727.5483
可以看到错误信息里的 targetFramework="4.5", 而 “版本信息: Microsoft .NET Framework 版本:2.0.50727.5485; ASP.NET 版本:2.0.50727.5483”, 那么问题就是FrameWork版本不一致导致的。 解决办法: 打开IIS管理器(win+r,打开运行窗口 输入 inetmgr)进行如下操作,这里要选择 v4.0 然后确定。