章节重复度20190523003
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

pre(预定义格式文本)

HTML <pre> 元素表示预定义格式文本。在该元素中的文本通常按照原文件中的编排,以等宽字体的形式展现出来,文本中的空白符(比如空格和换行符)都会显示出来。(紧跟在 <pre> 开始标签后的换行符也会被省略)

复杂的例子

1. Plain text rendering
   - This is a simple text block in <pre> format.
   - All spaces, tabs, and newlines are preserved.

2. Code snippet
   for (int i = 0; i < 10; i++) {
       Console.WriteLine($"Value: {i}");
   }

3. Tables with spaces for alignment
   Name         Age    Country
   John Doe     25     USA
   Alice Smith  30     UK
   张伟         35     中国

4. ASCII art
   _______
  /       \
 |  O   O  | 
 |    ^    |   <-- A simple face!
  \_______/

5. Special characters
   - HTML entities: <, >, &, "
   - Unicode: ✔, ✘, ☺, ☀, ✈, 🧑‍💻

6. Mixed languages
   English: Hello, World!
   中文:     你好,世界!
   日本語:    こんにちは、世界!
   Español:  ¡Hola, Mundo!

7. Wide characters
   ┌───────────┬────────────┐
   │   Header  │   Values   │
   ├───────────┼────────────┤
   │  Data A   │ 1234567890 │
   └───────────┴────────────┘

8. Nested tags (escaped)
   - <b>Bold</b>
   - <i>Italic</i>
   - <a href='example.com'>Link</a>

9. Indentation and tabs
   Root
       ├── Child 1
       │       ├── Subchild 1.1
       │       └── Subchild 1.2
       └── Child 2
           └── Subchild 2.1

简单单行代码

cd $HOME && git clone https://github.com/black-forest-labs/flux

简单多行代码

from flux.api import ImageRequest

# this will create an api request directly but not block until the generation is finished
request = ImageRequest("A beautiful beach", name="flux.1.1-pro")
# or: request = ImageRequest("A beautiful beach", name="flux.1.1-pro", api_key="your_key_here")

# any of the following will block until the generation is finished
request.url
# -> https:<...>/sample.jpg
request.bytes
# -> b"..." bytes for the generated image
request.save("outputs/api.jpg")
# saves the sample to local storage
request.image
# -> a PIL image

多行代码带缩进

using System;

class Program
{
    static void Main(string[] args)
    {
        int[] array = { 34, 7, 23, 32, 5, 62 };

        Console.WriteLine("Original array:");
        PrintArray(array);

        QuickSort(array, 0, array.Length - 1);

        Console.WriteLine("Sorted array:");
        PrintArray(array);
    }

    static void QuickSort(int[] array, int left, int right)
    {
        if (left < right)
        {
            int pivotIndex = Partition(array, left, right);
            QuickSort(array, left, pivotIndex - 1); // Sort left part
            QuickSort(array, pivotIndex + 1, right); // Sort right part
        }
    }

    static int Partition(int[] array, int left, int right)
    {
        int pivot = array[right];
        int i = left - 1;

        for (int j = left; j < right; j++)
        {
            if (array[j] <= pivot)
            {
                i++;
                Swap(array, i, j);
            }
        }

        Swap(array, i + 1, right);
        return i + 1;
    }

    static void Swap(int[] array, int i, int j)
    {
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }

    static void PrintArray(int[] array)
    {
        Console.WriteLine(string.Join(", ", array));
    }
}

超长代码压缩为一行

function bubbleSort(arr){for(let i=0;i<arr.length;i++){for(let j=0;j<arr.length-i-1;j++){if(arr[j]>arr[j+1]){let temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}return arr;}let array=[5,3,8,4,2];console.log("Original Array:",array);console.log("Sorted Array:",bubbleSort(array));

带制表符的大型文本

$ kr scan http://192.168.195.132:8090 -w ~/api/wordlists/data/kiterunner/routes-large.kite
+----------------------+------------------------------------------------------------------
-------------------+------------------------------------------------------------------
| SETTING              | VALUE                                                           |
+----------------------+------------------------------------------------------------------
-------------------+------------------------------------------------------------------
| delay                | 0s                                                              |
| full-scan            | false                                                           |
| full-scan-requests   | 1451872                                                         |
| headers              | [x-forwarded-for:127.0.0.1]                                     |
| kitebuilder-apis     | [/home/hapihacker/api/wordlists/data/kiterunner/routes-large.kite] |
| max-conn-per-host    | 3                                                               |
| max-parallel-host    | 50                                                              |
| max-redirects        | 3                                                               |
| max-timeout          | 3s                                                              |
| preflight-routes     | 11                                                              |
| quarantine-threshold | 10                                                              |
| quick-scan-requests  | 103427                                                          |
| read-body            | false                                                           |
| read-headers         | false                                                           |
| scan-depth           | 1                                                               |
| skip-preflight       | false                                                           |
| target               | http://192.168.195.132:8090                                     |
| total-routes         | 957191                                                          |
| user-agent           | Chrome. Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36                 |
+----------------------+------------------------------------------------------------------
 
POST    400 [    941,   46, 11] http://192.168.195.132:8090/trade/queryTransationRecords
0cf689f783e6dab12b6940616f005ecfcb3074c4
POST    400 [    941,   46, 11] http://192.168.195.132:8090/event
0cf6890acb41b42f316e86efad29ad69f54408e6
GET     301 [    243,   7, 10] http://192.168.195.132:8090/api-docs -> /api-docs/?group=
63578 528&route=33616912 0cf681b5cf6c877f2e620a8668a4abc7ad07e2db

预格式文本中添加背景色

System Bootstrap, Version 12.1(3r)T2, RELEASE SOFTWARE (fc1)
Copyright (c) 2000 by cisco Systems, Inc.
C2600 platform with 32768 Kbytes of main memory
 
program load complete, entry point: 0x80008000, size: 0x8ceb78
Self decompressing the image :
############################################################################################################################################### [OK]
 
Smart Init is disabled. IOMEM set to: 10 
 
Configured I/O memory percentage was too large. Using 10 percent iomem.
              Restricted Rights Legend
 
Use, duplication, or disclosure by the Government is
subject to restrictions as set forth in subparagraph
(c) of the Commercial Computer Software - Restricted
Rights clause at FAR sec. 52.227-19 and subparagraph
(c) (1) (ii) of the Rights in Technical Data and Computer
Software clause at DFARS sec. 252.227-7013.
 
           cisco Systems, Inc.
           170 West Tasman Drive
           San Jose, California 95134-1706
 
 
 
Cisco Internetwork Operating System Software 
IOS (tm) C2600 Software (C2600-IPBASE-M), Version 12.3(5a), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2003 by cisco Systems, Inc.
Compiled Tue 25-Nov-03 05:59 by kellythw
Image text-base: 0x80008098, data-base: 0x80F002E0
 
cisco 2620 (MPC860) processor (revision 0x600) with 29696K/3072K bytes of memory.
Processor board ID JAD052306CS (1393757906)
M860 processor: part number 0, mask 49
Bridging software.
X.25 software, Version 3.0.0.
Basic Rate ISDN software, Version 1.1.
1 FastEthernet/IEEE 802.3 interface(s)
1 Serial network interface(s)
1 ISDN Basic Rate interface(s)
32K bytes of non-volatile configuration memory.
16384K bytes of processor board System flash (Read/Write)
 
 
         --- System Configuration Dialog ---
 
Would you like to enter the initial configuration dialog? [yes/no]:

带行号的代码以及连续两个代码块

在下面第8行后,是一个新的<pre>元素。

 1  #判断s的最大值
 2  for s in range(1000):
 3      r = 2**s
 4      a = 104513
 5      even = a - 1
 6
 7      if even%r == 0 and s != 0:
 8          print('n-1 = ',even, ', s=',s , ', r的最大值是:', s-1 ,'d= ', even/r )
 1  #米勒-拉宾素性检验
 2  import random
 3
 4  def power(x, y, p):
 5      """模幂运算"""
 6      res = 1 #初始化结果
 7      x = x % p #如果x大于或等于p,更新x
 8      while (y > 0):
 9
10          #如果y是奇数,乘以x
11          if (y & 1):
12              res = (res * x) % p
13
14          #如果y是偶数(也是必须的)
15          y = y>>1 # y = y/2
16          x = (x * x) % p
17      return res
18
19  def miillerTest(d, n):
20      """单次米勒-拉宾素性检验"""
21
22      #在区间[2..n-2]内随机选择a
23      a = 2 + random.randint(1, n - 4)#极端情况下,确保n > 4
24      x = power(a, d, n) #计算a^d % n
25
26      if (x == 1 or x == n - 1):
27          return True;
28
29      while (d != n - 1):
30          x = (x * x) % n
31          d *= 2
32
33          if (x == 1):
34              return False
35          if (x == n - 1):
36              return True
37
38      return False
39
40  def isPrime( n, k):
41      """判断是否是素数"""
42
43      #极端情况
44      if (n <= 1 or n == 4):
45          return False
46      if (n <= 3):
47          return True
48
49      #计算r和d
50      d = n - 1;
51      while (d % 2 == 0):
52          d //= 2
53
54      #迭代k次
55      for i in range(k):
56          if (miillerTest(d, n) == False):
57              return False
58      return True
59
60  k = 64
61
62  print(isPrime(int(a), k))
63  print(isPrime(1000000000061, k))
64  print(isPrime(1000000000063, k))
65  print(isPrime(798263, k))

代码块中有超链接注释

keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/local/tomcat7/conf/[1] <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/tomcat7/conf/"
keystorePass="Manager!@34" />

[1]/usr/local/tomcat7/conf/为证书存放位置,编辑conf/server.xml文件,取消SSL配置的注释,并添加证书路径keystoreFile和密码 keystorePass。