一.简介

  上一篇,咱们基本把左侧导航栏给搞定,这一篇文章,开始来做一下播放进度条和控制按钮;老规矩,咱们先来看一下原版的效果:

首先,它这个专辑图片,有一个按钮效果,鼠标移入会显示出伸缩箭头;移出后消失,另外,点击此按钮后,弹出播放器歌词页面;歌词页面后面再说,先来看看按钮效果,如下:

还有就是音量按钮了,点击音量按钮,会弹出音量设置面板。面板中存放音量进度条;如下:

特殊的就这两个,下面开始来看一下怎么实现;

二.正文

  专辑图片按钮

  此按钮看上去可能有点复杂,实际实现起来很简单,咱们可以利用image上面放一个按钮来实现;然后设置鼠标事件,默认按钮为Hidden,当鼠标移入时,设置Visibility = Visibility,代码如下:

xaml代码:

 <Image Source="/CloudMusic;component/Images/AlbumCover/jay.jpg" HorizontalAlignment="Center" Grid.Column="0" Width="60"
Height="60" MouseEnter="Image_MouseEnter" Margin="1"/>
<Button x:Name="LrcMaxBtn" Margin="1" HorizontalAlignment="Center" Grid.Column="0" Width="60" Height="60" MouseLeave="LrcMaxBtn_MouseLeave"
Focusable="False" Visibility="Hidden" Click="LrcMaxBtn_Click"
Foreground="White"
Background="#33000000"
HorizontalContentAlignment ="Center"
VerticalContentAlignment="Center"
Padding="1">
<Path Data="{StaticResource LrcMaxIcon}" x:Name="LrcBtnIcon"
Stretch="Fill" Height="30" Width="30"
SnapsToDevicePixels="True"
Fill="{StaticResource SystemButtonColor}" >
</Path>
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="grid" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}" Background="#00FFFFFF">
<ContentPresenter x:Name="contentPresenter"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
RecognizesAccessKey="True" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="White" />
<!--<Setter TargetName="contentPresenter" Property="Opacity" Value="1" />-->
<Setter TargetName="grid" Property="Background" Value="#33000000" />
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="#ADADAD" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>

cs代码:

 /// <summary>
/// 专辑图片按钮_鼠标单击
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void LrcMaxBtn_Click(object sender, RoutedEventArgs e)
{ LrcBtnIcon.Data = LrcBtnIcon.Data != this.FindResource("LrcMinIcon") as Geometry ? this.FindResource("LrcMinIcon") as Geometry : this.FindResource("LrcMaxIcon") as Geometry;
}
/// <summary>
/// 专辑图片按钮_鼠标离开
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void LrcMaxBtn_MouseLeave(object sender, MouseEventArgs e)
{
LrcMaxBtn.Visibility = Visibility.Hidden;
}
/// <summary>
/// 专辑图片按钮_鼠标进入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Image_MouseEnter(object sender, MouseEventArgs e)
{
LrcMaxBtn.Visibility = Visibility;
}

按钮图标Path:

 <PathGeometry x:Key="LrcMaxIcon">F1M21.6552734375,30.3450126647949L22.6806640625,30.8332939147949 23.095703125,31.8830986022949 22.705078125,33.0061454772949 4.78515577316284,50.0471611022949 15.478515625,50.0471611022949 16.4794921875,50.4866142272949 16.89453125,51.5364189147949 16.50390625,52.5862236022949 15.478515625,53.0256767272949 1.51367175579071,53.0256767272949 0.537109375,52.5862236022949 0.09765625,51.5120048522949 0.09765625,37.2053642272949 0.488281220197678,36.1799736022949 1.46484363079071,35.7405204772949 2.51464867591858,36.1799736022949 2.97851538658142,37.2053642272949 2.97851538658142,47.8010673522949 3.07617163658142,47.8010673522949 20.703125,30.7112236022949 21.6552734375,30.3450126647949z M34.521484375,3.22098922729492L48.486328125,3.22098922729492 49.462890625,3.66044235229492 49.90234375,4.73466110229492 49.90234375,19.0413017272949 49.51171875,20.0666923522949 48.53515625,20.5061454772949 47.4853515625,20.0666923522949 47.021484375,19.0413017272949 46.923828125,8.44559860229492 29.296875,25.4377861022949 28.3447265625,25.8039970397949 27.3193359375,25.3157157897949 26.904296875,24.2659111022949 27.294921875,23.1428642272949 45.21484375,6.19950485229492 34.521484375,6.19950485229492 33.5205078125,5.76005172729492 33.10546875,4.71024751663208 33.49609375,3.66044235229492 34.521484375,3.22098922729492z</PathGeometry>
<PathGeometry x:Key="LrcMinIcon">F1M20.60546875,27.7815361022949L21.6796875,28.2698173522949 22.16796875,29.3440361022949 22.16796875,45.0666923522949 21.6796875,46.1409111022949 20.60546875,46.6291923522949 19.482421875,46.1409111022949 19.04296875,45.0666923522949 19.04296875,33.2014579772949 2.685546875,49.5588798522949 1.5625,49.9983329772949 0.439453125,49.5588798522949 0,48.4358329772949 0.439453125,47.3127861022949 16.845703125,30.9553642272949 4.98046875,30.9553642272949 3.857421875,30.4670829772949 3.41796875,29.3928642272949 3.857421875,28.2698173522949 4.98046875,27.8303642272949 20.60546875,27.7815361022949z M48.4375,-0.00166702270507813L49.560546875,0.437786102294922 50,1.56083297729492 49.560546875,2.68387985229492 33.154296875,19.0413017272949 45.01953125,19.0413017272949 46.142578125,19.5295829772949 46.58203125,20.6038017272949 46.142578125,21.7268486022949 45.01953125,22.1663017272949 29.39453125,22.2151298522949 28.3203125,21.7268486022949 27.83203125,20.6526298522949 27.83203125,4.92997360229492 28.3203125,3.85575485229492 29.39453125,3.36747360229492 30.517578125,3.85575485229492 30.95703125,4.92997360229492 30.95703125,16.7952079772949 47.314453125,0.437786102294922 48.4375,-0.00166702270507813z</PathGeometry>

  播放暂停按钮

 <local:FButton   Width="33" Height="33" Margin="0 0 12 0" Style="{StaticResource PlayButton}"  Tag="{StaticResource glyphicon-step-backward}"
x:Name="Backward_Btn" PressedSize="32" FontSize="12" /> <local:FButton Margin="0 0 12 0" Style="{StaticResource PlayButton}" CornerRadius="25" Tag="{StaticResource glyphicon-play}"
x:Name="playBtn" FontSize="12" Click="playBtn_Click"/>
<local:FButton Width="33" Height="33" Margin="0 0 6 0" Style="{StaticResource PlayButton}" Tag="{StaticResource glyphicon-step-forward}"
x:Name="Forward_Btn" PressedSize="32" FontSize="12" />

xaml样式代码:

 <Style x:Key="PlayButton" TargetType="{x:Type local:FButton}">
<Setter Property="Background" Value="#E03636" />
<Setter Property="Foreground" Value="White" />
<Setter Property="PressedBackground" Value="#33000000"/>
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="Width" Value="35" />
<Setter Property="Height" Value="35" />
<Setter Property="PressedSize" Value="34"/>
<Setter Property="FontSize" Value="14" />
<Setter Property="Padding" Value="3,1,3,1" />
<Setter Property="Content" Value="{x:Null}" />
<Setter Property="Template" >
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:FButton}">
<Border x:Name="back" CornerRadius="25" Background="{TemplateBinding Background}" BorderBrush="{StaticResource MainColor}" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}" >
<Border x:Name="border" Background="Transparent"
Height="{TemplateBinding Height}"
CornerRadius="25"
BorderBrush="{TemplateBinding Background}"
Width="{TemplateBinding Width}">
<Path Data="{TemplateBinding Tag}"
Stretch="Fill" Width="{TemplateBinding FontSize}" Height="{TemplateBinding FontSize}"
SnapsToDevicePixels="True"
Fill="{StaticResource SystemButtonColor}" >
</Path>
</Border>
</Border>
<!--触发器-->
<ControlTemplate.Triggers>
<!--设置鼠标进入时的背景、前景样式
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},
Path=PressedBackground}" TargetName="border" />
</Trigger>-->
<!--鼠标按下时的前景、背景样式-->
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},
Path=PressedBackground}" TargetName="border" />
<Setter Property="Width" Value="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},
Path=PressedSize}" TargetName="back"/>
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},
Path=PressedSize}" TargetName="back"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Opacity" Value="0.5" TargetName="border"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

按钮Path:

 <PathGeometry x:Key="glyphicon-play">F1M7.32421827316284,3.17216110229492L42.626953125,28.1233329772949 7.32421827316284,53.0745048522949 7.32421827316284,3.17216110229492z</PathGeometry>
<PathGeometry x:Key="glyphicon-pause">F1M34.130859375,12.4983329772949L35.3515625,13.0354423522949 35.888671875,14.2561454772949 35.888671875,41.9416923522949 35.3515625,43.2112236022949 34.1064453125,43.6995048522949 32.861328125,43.2112236022949 32.373046875,41.9416923522949 32.373046875,14.2561454772949 32.861328125,13.0354423522949 34.130859375,12.4983329772949z M15.91796875,12.4983329772949L17.138671875,13.0354423522949 17.626953125,14.2561454772949 17.626953125,41.9416923522949 17.138671875,43.2112236022949 15.8935546875,43.6995048522949 14.6484375,43.2112236022949 14.16015625,41.9416923522949 14.16015625,14.2561454772949 14.6484375,13.0354423522949 15.91796875,12.4983329772949z</PathGeometry>
<PathGeometry x:Key="glyphicon-step-forward">F1M38.28125,9.42216110229492L39.9169921875,10.0813407897949 40.625,11.7170829772949 40.625,44.5295829772949 39.9169921875,46.1653251647949 38.28125,46.8245048522949 36.6455078125,46.1653251647949 35.9375,44.5295829772949 35.9375,31.1506767272949 13.037109375,46.3850517272949 11.81640625,46.7512626647949 10.6201171875,46.4827079772949 9.716796875,45.6282157897949 9.375,44.4319267272949 9.375,13.3772392272949 9.6923828125,12.1809501647949 10.595703125,11.3264579772949 11.81640625,11.0579032897949 13.037109375,11.4241142272949 35.9375,26.7073173522949 35.9375,11.7170829772949 36.6455078125,10.0813407897949 38.28125,9.42216110229492z</PathGeometry>
<PathGeometry x:Key="glyphicon-step-backward">F1M19.78515625,10.0779161453247L20.7421875,10.2341651916504 21.396484375,10.9568214416504 21.640625,12.1872901916504 21.640625,31.4060401916504 21.396484375,32.6413917541504 20.7421875,33.3786964416504 19.775390625,33.5495948791504 18.59375,33.0857276916504 3.82812523841858,23.9451026916504 3.3984375,23.6716651916504 3.3984375,32.3435401916504 3.10546875,33.1052589416504 2.34374976158142,33.4372901916504 1.09375,33.4372901916504 0.31249988079071,33.1052589416504 -7.35418552721967E-08,32.3435401916504 -7.35418552721967E-08,11.2888526916504 0.31249988079071,10.5271339416504 1.09375,10.1951026916504 2.34374976158142,10.1951026916504 3.10546875,10.5271339416504 3.3984375,11.2888526916504 3.3984375,20.3904151916504 3.78906226158142,20.1169776916504 18.6328125,10.5466651916504 19.78515625,10.0779161453247z</PathGeometry>

  播放进度条

 <StackPanel Grid.Column="2" Orientation="Vertical"  VerticalAlignment="Center">
<Grid HorizontalAlignment="Stretch" >
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
<TextBlock Text="夜曲" Foreground="#444" FontSize="12"/>
<TextBlock Text=" - " />
<TextBlock Text="周杰伦" Foreground="{StaticResource LineColor}" FontSize="12"/>
</StackPanel>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<TextBlock Text="00:00" Foreground="#444" FontSize="8"/>
<TextBlock Text=" / " FontSize="8"/>
<TextBlock Text="05:12" Foreground="#777" FontSize="8"/>
</StackPanel>
</Grid>
<Slider x:Name="musicSlider" Value="0" Maximum="100" Minimum="1" TickFrequency="1" Template="{StaticResource SliderStyleTemplate}"
/> </StackPanel>

进度条样式:

 <Style x:Key="DecreaseRepeatButtonStyle" TargetType="{x:Type RepeatButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RepeatButton}">
<Border Height="2" Background="{StaticResource MainColor}">
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Height" Value="19"/>
<Setter Property="VerticalAlignment" Value="Bottom"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Focusable" Value="False"/>
<Setter Property="SnapsToDevicePixels" Value="true" />
</Style>
<Style x:Key="IncreaseRepeatButtonStyle" TargetType="{x:Type RepeatButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RepeatButton}">
<Border Height="2" Background="#e7e7e7">
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="Height" Value="19"/>
<Setter Property="VerticalAlignment" Value="Bottom"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Focusable" Value="False"/>
</Style>
<Style x:Key="Slider_Thumb" TargetType="{x:Type Thumb}">
<Setter Property="Focusable" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Border BorderBrush="{StaticResource MainColor}" Background="White" BorderThickness="1" CornerRadius="25" Width="13" Height="13">
<Ellipse Name="e" Width="3" Height="3" Fill="{StaticResource MainColor}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<ControlTemplate x:Key="SliderStyleTemplate" TargetType="{x:Type Slider}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="20"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Track x:Name="PART_Track" Grid.Row="1" HorizontalAlignment="Stretch">
<Track.IncreaseRepeatButton>
<RepeatButton Style="{StaticResource IncreaseRepeatButtonStyle}"
Command="Slider.IncreaseLarge"/>
</Track.IncreaseRepeatButton>
<Track.DecreaseRepeatButton>
<RepeatButton Style="{StaticResource DecreaseRepeatButtonStyle}"
Command="Slider.DecreaseLarge"/>
</Track.DecreaseRepeatButton>
<Track.Thumb>
<Thumb Style="{StaticResource Slider_Thumb}" />
</Track.Thumb>
</Track>
</Grid>
</ControlTemplate>

  播放模式/音量控制等按钮

按钮太多了,就直接用iconfont了。。Path还是比较麻烦

 <StackPanel Grid.Column="3" Orientation="Horizontal">
<local:FButton x:Name="likeBtn" Click="FButton_Click_1" Width="28" Margin="20,0,10,0" FIconSize="16" Foreground="#a7a7a7" VerticalAlignment="Center" FIcon="" Style="{StaticResource FButton_Transparency}"/>
<local:FButton x:Name="PlayModel" Margin="10,0" Foreground="#a7a7a7" VerticalAlignment="Center" FIcon="" Style="{StaticResource FButton_Transparency}" Click="FButton_Click"/>
<local:FButton Margin="10,0" Foreground="#a7a7a7" VerticalAlignment="Center" FIcon="" Style="{StaticResource FButton_Transparency}"
Click="FButton_Click_2"/>
<local:FButton Margin="10,0,0,0" FIconSize="16" Foreground="#a7a7a7" VerticalAlignment="Center" FIcon="" Style="{StaticResource FButton_Transparency}"/>
<Border Background="#a7a7a7" CornerRadius="8" Width="25" Height="15">
<TextBlock Text="105" FontSize="10" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</StackPanel>

按钮事件cs:

  /// <summary>
/// 播放模式按钮被单击
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FButton_Click(object sender, RoutedEventArgs e)
{
playmodeIndex++;
if (playmodeIndex == )
{
playmodeIndex = ;
}
string[] playmodeListsPath = { "\xe685", "\xe684", "\xe687", "\xe686" };
PlayModel.FIcon = playmodeListsPath[playmodeIndex];
}
/// <summary>
/// 我喜欢按钮被单击
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FButton_Click_1(object sender, RoutedEventArgs e)
{
likeBtn.FIcon = likeBtn.FIcon == "\xe68d" ? "\xe683" : "\xe68d";
Brush MainColor = this.FindResource("MainColor") as Brush;
Brush DefualtColor = this.FindResource("LineColor") as Brush;
likeBtn.Foreground = likeBtn.Foreground == MainColor ? DefualtColor : MainColor;
}
/// <summary>
/// 音量按钮被单击
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FButton_Click_2(object sender, RoutedEventArgs e)
{
GridVolume.Visibility = GridVolume.Visibility == Visibility ? Visibility.Collapsed : Visibility;
}

音量控制面板

  音量控制按钮主要利用Polyline画出外层边框,然后加入进度条即可,进度条样式和播放进度条一样;(不是我懒,网易云就是这样)

xaml代码

 <Grid Name="GridVolume" Width="283" Background="White" Height="65" Grid.Column="2" HorizontalAlignment="Right"
VerticalAlignment="Bottom" Margin="10,0" MouseLeave="GridVolume_MouseLeave" Visibility="Collapsed">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<Image Name="ImgVolume" Source="/CloudMusic;component/Images/Volume/volume_large.png"
Margin="10,2,10,2" Width="20" Height="20"/>
<Slider Name="sliderVolume" Template="{StaticResource SliderStyleTemplate}"
Width="230" Maximum="100" Minimum="0" Value="80"
VerticalAlignment="Center"/>
</StackPanel>
<Polyline Stroke="{StaticResource LineColor}" StrokeThickness="1"
StrokeLineJoin="Round" Points="280,0 280,45 175,45 165,55 155,45 0,45 0,0 280,0"
HorizontalAlignment="Center" VerticalAlignment="Bottom"> </Polyline>
</Grid>

事件cs:

         private void GridVolume_MouseLeave(object sender, MouseEventArgs e)
{
GridVolume.Visibility = Visibility.Collapsed;
}

 以上就是播放控制面板的所有代码样式了,来看看效果如何:

还原度百分之百有没有!简直不要太帅,haha

以上,就是本篇随笔的全部内容,请各位大侠指导。。

WPF仿网易云音乐系列(三、播放进度条+控制按钮)的更多相关文章

  1. WPF仿网易云音乐系列(序)

    1.简介 由于之前做了一个播放器,苦于不懂界面设计,只得去借鉴借鉴一些成功的作品,网易云音乐就甚合朕心,哈哈,最后做出来的效果如下: 本系列文章就来和大家讨论以下,如何用WPF去仿制一个网易云音乐来: ...

  2. WPF仿网易云音乐系列(一、左侧菜单栏:Expander+RadioButton)

    1.简介 上一篇咱们说到,网易云音乐的左侧菜单栏可以通过Expander+RadioButton来实现,具体如何实现,咱们下面开始干: 首先来一张网易云音乐PC版原图(个人觉得PC版比UWP版左侧菜单 ...

  3. WPF仿网易云音乐系列(二、歌单创建窗口+登录设置模块)

    老衲牺牲午休时间写博客,都快把自己感动了,-_-!! 之前上一篇随笔,我看了下评论,有部分人说WPF已经凉凉了,这个我觉得,这只是一个达到自己目的的工具而已,只要自己能用这个工具,得心应手的做出自己想 ...

  4. C# WPF 仿网易云音乐(PC)Banner动画控件

    在自定义用户控件内添加3个border(左.中.右,以下分别简称为:b1.b2.b3),对border进行缩放和移动动画.往右切换时b1放大平移到b2的位置,b2缩小平移到b3的位置,b3平移到b1的 ...

  5. C# WPF 低仿网易云音乐(PC)Banner动画控件

    原文:C# WPF 低仿网易云音乐(PC)Banner动画控件 由于技术有限没能做到一模一样的动画,只是粗略地做了一下.动画有点生硬,还有就是没做出网易云音乐的立体感.代码非常简单粗暴,而且我也写有很 ...

  6. C# WPF 低仿网易云音乐(PC)歌词控件

    原文:C# WPF 低仿网易云音乐(PC)歌词控件 提醒:本篇博客记录了修改的过程,废话比较多,需要项目源码和看演示效果的直接拉到文章最底部~ 网易云音乐获取歌词的api地址 http://music ...

  7. Flutter仿网易云音乐:播放界面

    写在前头 本来是要做一个仿网易云音乐的flutter项目,但是因为最近事情比较多,项目周期跨度会比较长,因此分几个步骤来完成.这是仿网易云音乐项目系列文章的第一篇.没有完全照搬网易云音乐的UI,借鉴了 ...

  8. 《云阅》一个仿网易云音乐UI,使用Gank.Io及豆瓣Api开发的开源项目

    CloudReader 一款基于网易云音乐UI,使用GankIo及豆瓣api开发的符合Google Material Desgin阅读类的开源项目.项目采取的是Retrofit + RxJava + ...

  9. 新鲜出炉高仿网易云音乐 APP

    我的引语 晚上好,我是吴小龙同学,我的公众号「一分钟GitHub」会推荐 GitHub 上好玩的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注我. 项目中成长是最快的,如何成长,就 ...

随机推荐

  1. HDU 1840 Equations (简单数学 + 水题)(Java版)

    Equations 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1840 ——每天在线,欢迎留言谈论. 题目大意: 给你一个一元二次方程组,a(X^2 ...

  2. ERP项目应该由谁来主导?

    前段时间在朋友圈看到了别人分享的公众号,主要是谈ERP项目应该由谁来主导的问题.文章的观点认为应该由哪个部门主导ERP的判断标准如下: 1.应该由一个期望上进的部门主导ERP项目: 2.应该由一个有话 ...

  3. 单用户模式启动SQL Server实例总结

      在SQL Server的数据库维护过程中,有时候在一些特殊情况下需要在单用户模式下启动SQL Server实例. 下面总结一下单用户模式启动SQL Server的几种方式: 1:命令模式(sqls ...

  4. java----字符串的大写字母右移

    import java.util.Scanner; /** * Created by Admin on 2017/3/27. */ public class test02 { public stati ...

  5. webApi添加视图出现/Index.cshtml”处的视图必须派生自 WebViewPage 或 WebViewPage<TModel>。

    是因为webApi Views文件夹下缺乏web.config文件,从mvc项目相同目录拷贝一个web.Config文件放入 删除多余的namespaces 即可 web.config配置如下: &l ...

  6. windows下安装consul

    Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件, 由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行 ...

  7. 简述KVM架构和Xen架构

    暑假最后一篇更新,因为,,,明天我就回学校了. 以下均为个人理解,如果有不对的地方还望各位dalao不吝赐教. 虚拟化 虚拟化是通过Hypervisor程序实现的,Hypervisor的作用是将硬件虚 ...

  8. June 4. 2018 Week 23rd Monday

    Don't criticize what you can't understand. 不懂的,不要随意批判. From Bob Dylan. Don't criticize what you can' ...

  9. Java高级教程02

    目录 1.Java线程 1.1. 多线程和多进程 1.2. 线程的执行过程: 1.3. 创建线程的方法 (1). 方法1:通过run() (2). 方法2: 复写Runnable接口(推荐) 1.4. ...

  10. 推荐几本FPGA书籍(更新中)

    1.<数字信号处理的FPGA实现>第三版 讲解比较详细的DSP理论,使用FPGA实现,不过使用VHDL语言:也颇具参考性. 2. <Xilinx Zynq-7000 嵌入式系统设计与 ...