一.简介

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

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

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

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

二.正文

  专辑图片按钮

  此按钮看上去可能有点复杂,实际实现起来很简单,咱们可以利用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. Django Admin后台管理用户密码修改

    方法一 在Terminal中执行:python manage.py changepassword your_name(其中“your_name”为你要修改密码的用户名),根据提示内容修改即可. 方法二 ...

  2. LeetCode题解之Squares of a Sorted Array

    1.题目描述 2.问题分析 使用过两个计数器. 3.代码 class Solution { public: vector<int> sortedSquares(vector<int& ...

  3. spring4笔记----PropertyPlaceholderConfigurer 属性占位符配置器

    driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/spring username=root password= ...

  4. linux 环境变量设置

    sudo gedit ~/.bashrc source ~/.bashrc

  5. VMare Workstation 安装Ubuntu 虚拟机教程

    1.VMware Workstation,选择左上角文件—新建虚拟机,开始新建一台虚拟机,典型的话许多配置为默认设置,因此,这里我选择自定义安装: 2.机硬件兼容性选择默认即可: 3.客户操作系统选择 ...

  6. LeetCode算法题-Intersection of Two Arrays II(Java实现)

    这是悦乐书的第208次更新,第220篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第76题(顺位题号是350).给定两个数组,编写一个函数来计算它们的交集.例如: 输入: ...

  7. IntelliJ IDEA 创建maven管理的webapp项目

    因为使用框架时基本需要使用maven管理项目,所以单独写一个搭建maven项目的流程 第一步:  File-->New--Project 第二步:  选择maven框架 第三步:  输入工程id ...

  8. HTTP1.0 、1.1

    网上有很多资料说明这个,但都很长的,觉得东西太多也记不住,就记点东西,权当笔记. HTTP 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一 ...

  9. AOP的底层实现:JDK动态代理与Cglib动态代理

    转载自 https://www.cnblogs.com/ltfxy/p/9872870.html SpringAOP底层的实现原理: JDK动态代理:只能对实现了接口的类产生代理.(实现接口默认JDK ...

  10. C# 基础知识之 Unix 时间戳转换

    unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒. /// 时间戳转为C#格式时间 private DateTime GetTime(string timeSt ...