1、TextBlock 的示例 1
Controls/TextControl/TextBlockDemo1.xaml

  1. <Page
  2. x:Class="Windows10.Controls.TextControl.TextBlockDemo1"
  3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:local="using:Windows10.Controls.TextControl"
  6. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  7. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  8. mc:Ignorable="d">
  9.  
  10. <Grid Background="Transparent">
  11. <StackPanel Margin="10 0 10 10">
  12.  
  13. <!--
  14. TextBlock 的常用属性
  15. Text - 显示的文本,如果需要显示引号等特殊字符需要使用相应的 HTML 编码
  16. Foreground - 文本颜色
  17. FontFamily - 首选字体,多个用“,”分隔,找不到第 1 个就用第 2 个,找不到第 2 个就用第 3 个,以此类推
  18. FontSize - 字号大小(单位:像素)
  19. FontWeight - 字体粗细,默认值是 Normal
  20. FontStyle - 字体样式,默认值是 Normal
  21. Italic - 使用字体自带的斜体
  22. Oblique - 通过程序让正常字体倾斜(对于自身不带斜体的字体可以使用此值让字体倾斜)
  23. FontStretch - 字体的拉伸值,默认值是 Normal(大部分字体都不支持这个属性)
  24. Padding - Padding
  25. IsTextScaleFactorEnabled - 是否启用文本自动放大功能(默认值是 true)
  26. 在“设置”->“轻松使用”中可以调整文本缩放大小,IsTextScaleFactorEnabled 就是用于决定 TextBlock 显示的文本是否跟着这个设置走
  27. -->
  28. <TextBlock Text="i am a &quot;TextBlock&quot;" Margin="5"
  29. Foreground="Blue"
  30. FontFamily="微软雅黑"
  31. FontSize="24"
  32. FontWeight="Bold"
  33. FontStyle="Italic"
  34. FontStretch="Normal"
  35. Padding="5" />
  36.  
  37. <!--
  38. TextAlignment - 文本的水平对齐方式
  39. Center, Left(默认值), Right, Justify(两端对齐)
  40. -->
  41. <TextBlock Text="i am a &quot;TextBlock&quot;" Margin="5" TextAlignment="Justify" />
  42.  
  43. <!--
  44. TextWrapping - 换行方式
  45. NoWrap - 不换行
  46. Wrap - 换行,必要时可截断单词
  47. WrapWholeWords - 换行,但是绝不截断单词,即使单词可能会显示不全
  48. -->
  49. <TextBlock Width="100" HorizontalAlignment="Left" Text="abcdefghijklmnopq www" Margin="5" TextWrapping="NoWrap" />
  50. <TextBlock Width="100" HorizontalAlignment="Left" Text="abcdefghijklmnopq www" Margin="5" TextWrapping="Wrap" />
  51. <TextBlock Width="100" HorizontalAlignment="Left" Text="abcdefghijklmnopq www" Margin="5" TextWrapping="WrapWholeWords" />
  52.  
  53. <!--
  54. TextTrimming - 内容溢出时的修整方式
  55. None - 不修整文本
  56. Clip - 在像素级别修整文本
  57. WordEllipsis - 在单词级别修整文本,同时用省略号代替剩余文本
  58. CharacterEllipsis - 在字符级别修整文本,同时用省略号代替剩余文本
  59. -->
  60. <TextBlock Width="100" HorizontalAlignment="Left" Text="abcdefghi jklmnopqrstuvwxyz" Margin="5" TextTrimming="None"/>
  61. <TextBlock Width="100" HorizontalAlignment="Left" Text="abcdefghi jklmnopqrstuvwxyz" Margin="5" TextTrimming="Clip"/>
  62. <TextBlock Width="100" HorizontalAlignment="Left" Text="abcdefghi jklmnopqrstuvwxyz" Margin="5" TextTrimming="WordEllipsis"/>
  63. <TextBlock Width="100" HorizontalAlignment="Left" Text="abcdefghi jklmnopqrstuvwxyz" Margin="5" TextTrimming="CharacterEllipsis"/>
  64.  
  65. <!--
  66. MaxLines - 用于指定文本最大的显示行数
  67. -->
  68. <TextBlock MaxLines="3" Margin="5">
  69. <TextBlock.Inlines>
  70. <Run>111111</Run>
  71. <LineBreak />
  72. <Run>222222</Run>
  73. <LineBreak />
  74. <Run>333333</Run>
  75. <LineBreak />
  76. <Run>444444</Run>
  77. <LineBreak />
  78. <Run>555555</Run>
  79. </TextBlock.Inlines>
  80. </TextBlock>
  81.  
  82. <!--
  83. CharacterSpacing - 用于设置字符间距
  84. 具体字符间隔像素计算公式如下:字体大小 * CharacterSpacing值 / 1000 = 字符间距像素值
  85. LineHeight - 行高
  86. LineStackingStrategy - 控制行高的策略
  87. MaxHeight - 每行的行高以 LineHeight 值和每行的自然行高中的最大值为准。默认值
  88. BlockLineHeight - 每行的行高以 LineHeight 值为准,以字符区域为参考
  89. BaselineToBaseline - 每行的行高以 LineHeight 值为准,以基线为参考(什么是基线:英文字符的基线基本相当于单词本4条线中的第3条线)
  90. Inlines - 内联元素的集合。包括 span, bold, italic, underline 等,但是 InlineUIContainer 不可用,其需要在 RichTextBlock 中使用
  91. -->
  92. <TextBlock Margin="5" CharacterSpacing="100" LineStackingStrategy="MaxHeight" LineHeight="50">
  93. <TextBlock.Inlines>
  94. <Run Foreground="Red">Run</Run>
  95. <Span Foreground="Blue">Span</Span>
  96. <LineBreak />
  97. <Bold>Bold</Bold>
  98. <Italic>Italic</Italic>
  99. <Underline>Underline</Underline>
  100. </TextBlock.Inlines>
  101. </TextBlock>
  102.  
  103. <!--
  104. TextLineBounds - 行框的绘制方式
  105. Full - 正常,默认值
  106. TrimToCapHeight - 行框顶部和大写字体的顶部一致
  107. TrimToBaseline - 行框底部与文本基线一致(什么是基线:英文字符的基线基本相当于单词本4条线中的第3条线)
  108. Tight - 行框顶部和大写字体的顶部一致,行框底部与文本基线一致
  109. -->
  110. <Grid Background="Red" Margin="5">
  111. <TextBlock Text="Aj" FontSize="24" TextLineBounds="Full" />
  112. </Grid>
  113. <Grid Background="Red" Margin="5">
  114. <TextBlock Text="Aj" FontSize="24" TextLineBounds="TrimToCapHeight" />
  115. </Grid>
  116. <Grid Background="Red" Margin="5">
  117. <TextBlock Text="Aj" FontSize="24" TextLineBounds="TrimToBaseline" />
  118. </Grid>
  119. <Grid Background="Red" Margin="5">
  120. <TextBlock Text="Aj" FontSize="24" TextLineBounds="Tight" />
  121. </Grid>
  122.  
  123. </StackPanel>
  124. </Grid>
  125. </Page>

Controls/TextControl/TextBlockDemo1.xaml.cs

  1. /*
  2. * TextBlock - 文本显示框(继承自 FrameworkElement, 请参见 /Controls/BaseControl/FrameworkElementDemo/)
  3. */
  4.  
  5. using Windows.UI.Xaml;
  6. using Windows.UI.Xaml.Controls;
  7.  
  8. namespace Windows10.Controls.TextControl
  9. {
  10. public sealed partial class TextBlockDemo1 : Page
  11. {
  12. public TextBlockDemo1()
  13. {
  14. this.InitializeComponent();
  15. }
  16. }
  17. }

2、TextBlock 的示例 2
Controls/TextControl/TextBlockDemo2.xaml

  1. <Page
  2. x:Class="Windows10.Controls.TextControl.TextBlockDemo2"
  3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:local="using:Windows10.Controls.TextControl"
  6. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  7. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  8. mc:Ignorable="d">
  9.  
  10. <Grid Background="Transparent">
  11. <StackPanel Margin="10 0 10 10">
  12.  
  13. <!--
  14. IsTextSelectionEnabled - 文本是否可以被选中
  15. SelectionHighlightColor - 选中文本的颜色
  16. -->
  17. <TextBlock Name="textBlock1" Margin="5" IsTextSelectionEnabled="True" SelectionHighlightColor="Red">
  18. <TextBlock.Inlines>
  19. <Run>abcdefg</Run>
  20. <LineBreak />
  21. <Run>hijklmn</Run>
  22. <LineBreak />
  23. <Run>opqrst</Run>
  24. </TextBlock.Inlines>
  25. </TextBlock>
  26. <!--显示 textBlock1 中被用户选中的文本-->
  27. <TextBlock Name="lblMsg1" Margin="5" />
  28.  
  29. <TextBlock Name="textBlock2" Margin="5" IsTextSelectionEnabled="True" SelectionHighlightColor="Red">
  30. <Run>abcdefghijklmn</Run>
  31. <LineBreak />
  32. <Run>opqrstuvwxyz</Run>
  33. </TextBlock>
  34. <TextBlock Name="lblMsg2" Margin="5" />
  35.  
  36. <Grid Background="Red" Margin="5">
  37. <TextBlock Name="textBlock3" Text="abcdefghijklmnopqrstuvwxyz" FontSize="24" />
  38. <!--用于绘制基线-->
  39. <Line Name="line" Stroke="Blue" StrokeThickness="1" X1="0" X2="300" />
  40. </Grid>
  41. <TextBlock Name="lblMsg3" Margin="5" />
  42.  
  43. <!--用于显示 Segoe UI Emoji 字符-->
  44. <TextBlock Name="textBlock4" Margin="5" FontSize="24" TextWrapping="Wrap" />
  45.  
  46. <!--用于演示如何计算 TextBlock 的实际宽度和实际高度-->
  47. <Grid Name="grid" Margin="5">
  48. <Grid.ColumnDefinitions>
  49. <ColumnDefinition x:Name="gridColumn1" Width="Auto" />
  50. <ColumnDefinition x:Name="gridColumn2" Width="*" />
  51. </Grid.ColumnDefinitions>
  52. <TextBlock Name="textBlock5" FontSize="24">
  53. <Run>abc</Run>
  54. <LineBreak />
  55. <Run>xyz</Run>
  56. </TextBlock>
  57. </Grid>
  58. <TextBlock Name="lblMsg5" Margin="5" />
  59.  
  60. </StackPanel>
  61. </Grid>
  62. </Page>

Controls/TextControl/TextBlockDemo2.xaml.cs

  1. /*
  2. * TextBlock - 文本显示框(继承自 FrameworkElement, 请参见 /Controls/BaseControl/FrameworkElementDemo/)
  3. * SelectedText - 获取选中的文本内容
  4. * SelectionChanged - 选中的文本内容发生变化后触发的事件
  5. * ContentStart - 开头内容的 TextPointer 对象
  6. * ContentEnd - 结尾内容的 TextPointer 对象
  7. * Focus(FocusState value) - 获取焦点
  8. * SelectAll() - 选中全部内容(先要获取焦点后,才能做这个操作)
  9. * Select(TextPointer start, TextPointer end) - 选中指定范围的内容(先要获取焦点后,才能做这个操作)
  10. * SelectionStart - 选中内容的起始位置(TextPointer 对象)
  11. * SelectionEnd - 选中内容的结束位置(TextPointer 对象)
  12. * BaselineOffset - 获取基线的位置(什么是基线:英文字符的基线基本相当于单词本4条线中的第3条线)
  13. * IsColorFontEnabled - 是否以彩色方式显示 Segoe UI Emoji 之类的字符(默认值是 true)
  14. *
  15. *
  16. * TextPointer - 文本框中的指针对象
  17. * Offset - 指针的位置
  18. * LogicalDirection - 指针的逻辑方向
  19. * Backward - 向后,即从右到左(比如,如果插入字符的话,就会在指针位置的左边插入)
  20. * Forward - 向前,即从左到右(比如,如果插入字符的话,就会在指针位置的右边插入)
  21. * Rect GetCharacterRect(LogicalDirection direction) - 返回当前指针的矩形框
  22. * TextPointer GetPositionAtOffset(offset, LogicalDirection direction) - 将指针位置偏移指定的距离(正代表向右偏移,负代表向左偏移)
  23. */
  24.  
  25. using System;
  26. using System.Text;
  27. using Windows.Foundation;
  28. using Windows.UI.Xaml;
  29. using Windows.UI.Xaml.Controls;
  30. using Windows.UI.Xaml.Documents;
  31.  
  32. namespace Windows10.Controls.TextControl
  33. {
  34. public sealed partial class TextBlockDemo2 : Page
  35. {
  36. public TextBlockDemo2()
  37. {
  38. this.InitializeComponent();
  39.  
  40. this.Loaded += TextBlockDemo2_Loaded;
  41. }
  42.  
  43. private void TextBlockDemo2_Loaded(object sender, RoutedEventArgs e)
  44. {
  45. textBlock1.SelectionChanged += (x, y) =>
  46. {
  47. // 显示用户选中的文本内容
  48. lblMsg1.Text = textBlock1.SelectedText;
  49. };
  50.  
  51. textBlock1.ContextMenuOpening += (x, y) =>
  52. {
  53. // 触发条件:触摸屏长按或鼠标右键
  54. };
  55.  
  56. // 获取焦点
  57. textBlock2.Focus(FocusState.Programmatic);
  58. TextPointer start = textBlock2.ContentStart;
  59. TextPointer end = textBlock2.ContentEnd;
  60. // textBlock2 的 Text 的内容一共有 26 个字符,但是这里的指针位置 offset 是从 0 到 34,一共 35 个指针位置
  61. // <LineBreak /> 占 4 个指针位置,开头占 2 个指针位置,结尾占 2 个指针位置。剩下的就比较好理解了,就是 26 个字符拥有 27 个指针位置
  62. lblMsg2.Text = $"ContentStart.Offset: {start.Offset}, ContentEnd.Offset: {end.Offset}";
  63. lblMsg2.Text += Environment.NewLine;
  64.  
  65. // 从左到右偏移 3 个位置,即指针位置在第 1 个字符的右边
  66. start = start.GetPositionAtOffset(3, LogicalDirection.Backward);
  67. // 从右到左偏移 3 个位置,即指针位置在最后一个字符的左边
  68. end = end.GetPositionAtOffset(-3, LogicalDirection.Forward);
  69. textBlock2.Select(start, end); // SelectAll() - 选中全部
  70. lblMsg2.Text += $"SelectionStart.Offset: {textBlock2.SelectionStart.Offset}, SelectionEnd.Offset: {textBlock2.SelectionEnd.Offset}";
  71.  
  72. // 获取基线的位置,并通过 Line 绘制基线
  73. lblMsg3.Text += $"BaselineOffset: {textBlock3.BaselineOffset}";
  74. line.Y1 = textBlock3.BaselineOffset;
  75. line.Y2 = textBlock3.BaselineOffset;
  76.  
  77. // 显示 Segoe UI Emoji 字符
  78. StringBuilder strContect = new StringBuilder();
  79. for (int code = 0x1F600; code < 0x1F6C6; code++)
  80. {
  81. strContect.Append(char.ConvertFromUtf32(code));
  82. }
  83. // 是否以彩色方式显示 Segoe UI Emoji 之类的字符(默认值是 true)
  84. textBlock4.IsColorFontEnabled = true;
  85. textBlock4.Text = strContect.ToString();
  86.  
  87. // 通过封一层 Grid 的方式计算 TextBlock 的实际宽度和实际高度
  88. lblMsg5.Text = $"textBlock5 的实际高度: {grid.ActualHeight}";
  89. lblMsg5.Text += Environment.NewLine;
  90. lblMsg5.Text += $"textBlock5 的实际宽度: {gridColumn1.ActualWidth}";
  91. lblMsg5.Text += Environment.NewLine;
  92.  
  93. // 通过 TextPointer 的方式计算 TextBlock 的实际高度
  94. TextPointer last = textBlock5.ContentEnd;
  95. last = last.GetPositionAtOffset(-3, LogicalDirection.Forward);
  96. Rect rectLast = last.GetCharacterRect(LogicalDirection.Forward);
  97. lblMsg5.Text += $"textBlock5 的实际高度: {rectLast.Bottom}";
  98. lblMsg5.Text += Environment.NewLine;
  99.  
  100. // 通过 TextPointer 的方式计算 TextBlock 的实际宽度
  101. int count = textBlock5.ContentEnd.Offset - textBlock5.ContentStart.Offset;
  102. double width = 0;
  103. for (int i = 0; i < count; i++)
  104. {
  105. TextPointer current = textBlock5.ContentStart.GetPositionAtOffset(i, LogicalDirection.Backward);
  106. width = Math.Max(width, current.GetCharacterRect(LogicalDirection.Backward).Right);
  107. }
  108. lblMsg5.Text += $"textBlock5 的实际宽度: {width}";
  109. }
  110. }
  111. }

3、使用自定义字体, 使用 Unicode 编码
Controls/TextControl/Tips.xaml

  1. <Page
  2. x:Class="Windows10.Controls.TextControl.Tips"
  3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:local="using:Windows10.Controls.TextControl"
  6. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  7. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  8. mc:Ignorable="d">
  9.  
  10. <Grid Background="Transparent">
  11. <StackPanel Margin="10 0 10 10">
  12.  
  13. <!--
  14. 文本类控件使用自定义字体
  15. 1、将字体文件复制到项目中
  16. 2、通过 FontFamily 指定字体文件的路径,在路径后加“#”并在其后写上字体名称(通过“Windows 字体查看器”可以查看字体文件的字体名称)
  17. -->
  18. <TextBlock Text="逐浪大雪钢笔体" FontSize="36" Margin="5"
  19. FontFamily="/Controls/TextControl/MyFont.otf#逐浪大雪钢笔体">
  20.  
  21. </TextBlock>
  22.  
  23. <!--
  24. 文本类控件使用 Unicode 编码
  25. 1、无法在 xaml 中使用 \u(在 code-behind 中可以)
  26. 2、通过 &#0000; 的方式来显示 Unicode 字符(注:unicode 的 0 - 127 与 ascii 一样)
  27. -->
  28. <TextBlock Text=""123"
  29. 123" FontSize="36" Margin="5" />
  30.  
  31. </StackPanel>
  32. </Grid>
  33. </Page>

Controls/TextControl/Tips.xaml.cs

  1. /*
  2. * 演示文本类控件如何使用自定义字体,以及使用 Unicode 编码
  3. */
  4.  
  5. using Windows.UI.Xaml.Controls;
  6.  
  7. namespace Windows10.Controls.TextControl
  8. {
  9. public sealed partial class Tips : Page
  10. {
  11. public Tips()
  12. {
  13. this.InitializeComponent();
  14. }
  15. }
  16. }

控件(文本类): TextBlock的更多相关文章

  1. 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中的元素

    [源码下载] 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中 ...

  2. 背水一战 Windows 10 (74) - 控件(控件基类): UIElement - 与 CanDrag 相关的事件, 与 AllowDrop 相关的事件

    [源码下载] 背水一战 Windows 10 (74) - 控件(控件基类): UIElement - 与 CanDrag 相关的事件, 与 AllowDrop 相关的事件 作者:webabcd 介绍 ...

  3. 背水一战 Windows 10 (73) - 控件(控件基类): UIElement - 拖放的基本应用, 手动开启 UIElement 的拖放操作

    [源码下载] 背水一战 Windows 10 (73) - 控件(控件基类): UIElement - 拖放的基本应用, 手动开启 UIElement 的拖放操作 作者:webabcd 介绍背水一战 ...

  4. Web控件文本框Reset的功能

    在前一篇中<怎样实现Web控件文本框Reset的功能>http://www.cnblogs.com/insus/p/4120889.html Insus.NET只实现了文本框的功能.单个或 ...

  5. IOS 学习笔记(5) 控件 文本视图(UITextView)的使用方法

    相对于UILabell所支持的较短文本内容,UITextView对于长文本的支持更好.UITextView能够以滚动的方式全部浏览到长文本,并且就像UILabel那样,从ISO6,他也提供了对NSAt ...

  6. 背水一战 Windows 10 (77) - 控件(控件基类): ContentControl, UserControl, Page

    [源码下载] 背水一战 Windows 10 (77) - 控件(控件基类): ContentControl, UserControl, Page 作者:webabcd 介绍背水一战 Windows ...

  7. 背水一战 Windows 10 (75) - 控件(控件基类): FrameworkElement - 基础知识, 相关事件, HorizontalAlignment, VerticalAlignment

    [源码下载] 背水一战 Windows 10 (75) - 控件(控件基类): FrameworkElement - 基础知识, 相关事件, HorizontalAlignment, Vertical ...

  8. 背水一战 Windows 10 (72) - 控件(控件基类): UIElement - UIElement 的位置, UIElement 的布局, UIElement 的其他特性

    [源码下载] 背水一战 Windows 10 (72) - 控件(控件基类): UIElement - UIElement 的位置, UIElement 的布局, UIElement 的其他特性 作者 ...

  9. 背水一战 Windows 10 (70) - 控件(控件基类): UIElement - Transform3D(3D变换), Projection(3D投影)

    [源码下载] 背水一战 Windows 10 (70) - 控件(控件基类): UIElement - Transform3D(3D变换), Projection(3D投影) 作者:webabcd 介 ...

  10. 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性

    [源码下载] 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性 作者:w ...

随机推荐

  1. [No00002F]3步,教你如何分解需求

    对于产品新人来说,如果没有好师傅带,单枪匹马很难形成好的产品思路.有时候和研发沟通,双方都无法理解对方的想法,或者自己在写需求的时候,不是东丢点就是西漏点,老是被开发追着走.今天我就简单说一下个人的需 ...

  2. CycleRotationView:自定义控件之轮播图

    CycleRotationView:自定义控件,主要功能是实现类似与各种商城首页的广告轮播图.其实像这种比较常见的自定义控件早就满大街了,虽然说"不要重复发明轮子",但是不代表不用 ...

  3. 如何在Actionbarsherlock中一直显示overflow效果?

    对Android开发一致性有一定考虑的程序员应当或多或少对Actionbarsherlock这个库有一定的了解.Actionbarsherlock的产生是因为Android在3.0(API 11)之后 ...

  4. (原创)AD账户误删导致Exchange邮箱被删 莫苦恼

    由于人员变动,离职人员AD账户和邮箱经常要删除.但是在删除AD账户的时候难免会犯错,将在用的用户给删除了,这是个痛苦的事情, 然后你会发现Exchange邮箱也会跟着删除,抓狂了..,还好,幸亏这里进 ...

  5. 获取iframe加载完毕事件

    function IframeLoad(o,fn) { if (document.all) { o.attachEvent('onload', fn); } else { o.onload = fn; ...

  6. Ice的HelloWorld(Java)

    Ice是一种面向对象的中间间平台,入门ice,简单的HelloWorld是必不可少的. 转载请注明http://www.cnblogs.com/zrtqsk/p/3745286.html,谢谢. 一. ...

  7. 直流调速系统Modelica基本模型

    为了便于在OpenModelica进行仿真,形成一个完整的仿真模型,没有使用第三方的库,参照了DrModelica的例程,按照Modelica库的开源模型定义了所用的基本元件模型. 首先给出一些基本类 ...

  8. 误人子弟的网络,谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目的时候,源码里面用到了HTTP的长轮询.由于之前没太接触过,因此LZ便趁着这个机会,好好了解了一下HT ...

  9. 前端人员一定要掌握的PS技巧

    一.PS与前端知多少 一般我们会认为PS是用来修改图片的,这些工作是美工人员做的事不是前端人员做的,其实这样想你就错了,因为在前端人员也是要学会一些简单的关于PS的技巧的,这样就不会应为一点点小小的需 ...

  10. B树和B+树

    当数据量大时,我们如果用二叉树来存储的会导致树的高度太高,从而造成磁盘IO过于频繁,进而导致查询效率下降.因此采用B树来解决大数据存储的问题,很多数据库中都是采用B树或者B+树来进行存储的.其目的就是 ...