• echarts-liquidfill水球图教程


    接到了一个水球图的需求,如上图所示,点击不同的水球,下面的进度条呈现不同维度的百分比情况 。

    第一步,安装插件

    1. npm install echarts
    2. npm install echarts-liquidfill

    注意在这里需要查看echarts版本是4还是5,echarts@5的版本与echarts-liquidfill@3兼容,echarts@4的版本与echarts-liquidfill@2兼容,如果版本不对应,会报错!!!因为我踩坑了😂我的echarts版本是4.9.0,装的依赖是最新版的,也就是echarts-liquidfill@3,后来就报错了,然后看官网发现得用2的,我就下载了echarts-liquidfill@2.0.6版本的。

    报错1:echart--Uncaught Error: Component series.wordCloud not exists. Load it first.

    解决办法:先检查echarts 和 echarts-liquidfill 是否安装  echarts 4.几的版本对应 liquidfill 2.0.6的版本

     第二步,引入

    1. import * as echarts from 'echarts';
    2. import 'echarts-liquidfill'

     以下是我封装的简单粗糙的组件

    1. <template>
    2. <div>
    3. <div id="waterPoloChart" ref="waterPoloChart" :style="{ width: chartWidth, height: chartHeight }" />
    4. </div>
    5. </template>
    6. <script>
    7. import * as echarts from "echarts";
    8. import 'echarts-liquidfill'
    9. export default {
    10. props: {
    11. chartData: {
    12. type: Object,
    13. default: () => { },
    14. },
    15. chartWidth: {
    16. type: String,
    17. default: "",
    18. },
    19. chartHeight: {
    20. type: String,
    21. default: "",
    22. },
    23. },
    24. data () {
    25. return {
    26. };
    27. },
    28. created () {
    29. },
    30. computed: {
    31. chartOptions () {
    32. // let that = this
    33. const options = {
    34. title: {
    35. left: 'center',
    36. subtext: this.chartData.name,
    37. subtextStyle: { //文字样式
    38. color: "#fff",
    39. fontSize: 14,
    40. fontWeight: 600,
    41. // bottom: "center"
    42. },
    43. itemGap: 10, //主副标题间距
    44. bottom: 25,
    45. textStyle: {
    46. color: '#333',
    47. fontWeight: 'normal',
    48. fontSize: 14
    49. }
    50. },
    51. series: [{
    52. // name: '水球图',
    53. type: 'liquidFill',
    54. radius: '96%',
    55. center: ['50%', '50%'],
    56. waveAnimation: 10, // 动画时长
    57. amplitude: 20, // 振幅
    58. data: [this.chartData.value], // 使用合并后的数据
    59. // data: [0.7],//水球百分比
    60. color: 'rgba(68, 197, 253,1)',//设置波形颜色
    61. label: {
    62. normal: {
    63. color: '#fff',//百分比颜色
    64. textStyle: {
    65. fontSize: 16,
    66. fontWeight: 'normal'
    67. }
    68. }
    69. },
    70. outline: { //外边框
    71. show: false,
    72. borderDistance: 5,
    73. itemStyle: {
    74. borderColor: 'rgba(68, 197, 253,1)',
    75. borderWidth: 2
    76. }
    77. },
    78. backgroundStyle: { //水球背景色
    79. color: '#87cbfa'
    80. }
    81. }]
    82. }
    83. return options;
    84. }
    85. },
    86. mounted () {
    87. console.log(this.chartData, 'this.chartData')
    88. // this.$nextTick(() => {
    89. // this.initEcharts();
    90. if (this.chartData !== null && this.chartData !== undefined) {
    91. this.initEcharts();
    92. }
    93. // });
    94. },
    95. methods: {
    96. // initChart () {
    97. // const _this = this;
    98. // _this.waterPoloChart = echarts.init(this.$refs.waterPoloChart);
    99. // window.addEventListener("resize", function () {
    100. // _this.waterPoloChart.resize();
    101. // });
    102. // },
    103. initEcharts () {
    104. // 初始化echarts实例
    105. const _this = this;
    106. _this.waterPoloChart = echarts.init(this.$refs.waterPoloChart);
    107. // 显示图表
    108. _this.waterPoloChart.setOption(this.chartOptions);
    109. },
    110. }
    111. }
    112. </script>
    113. <style lang='less' scoped></style>

    以下的是父组件,引入注册之后直接使用上面的组件 并且传入数据和水球图的宽高

    1. <template>
    2. <div class="compClass">
    3. <div class="compClass-kno">
    4. <h3>知识点掌握情况</h3>
    5. <div class="compClass-kno-bubble">
    6. <div style="display: flex;justify-content: center;" v-for="(item, index) in chartData" :key="index"
    7. @click="clickBubble(item)">
    8. <waterPoloChart :chartData="item" :chartHeight="chartHeight" :chartWidth="chartWidth">
    9. </waterPoloChart>
    10. </div>
    11. </div>
    12. <div class="compClass-kno-chart">
    13. <h3 style="color: #34BEEA;font-size: 20px;font-weight: 500;margin-bottom: 40px;">{{ knoChartTitle }}</h3>
    14. <div class="progress-status">
    15. <span>{{ title }}</span>
    16. <span id="progressBarContainer">
    17. <span id="progressBar" :style="{ width: progressBarWidth }"></span>
    18. </span>
    19. <span>{{ progressBarWidth }}</span>
    20. </div>
    21. </div>
    22. </div>
    23. </div>
    24. </template>
    25. <script>
    26. import waterPoloChart from '../components/waterPoloChart.vue'
    27. export default {
    28. components: {
    29. waterPoloChart,
    30. },
    31. data () {
    32. return {
    33. chartHeight: '138px',
    34. chartWidth: '138px',
    35. chartData: [
    36. { value: 0.5, name: "有理数", title: '无理数', cat: '50%' },
    37. { value: 0.6, name: "整数", title: '小数', cat: '60%' },
    38. { value: 0.2, name: "方程", title: '一元一次方程', cat: '20%' },
    39. { value: 0.7, name: "几何", title: '勾股定理', cat: '70%' },
    40. { value: 0.3, name: "实数", title: '实数1', cat: '30%' },
    41. { value: 0.9, name: "相交平行线", title: '平行线永不相交', cat: '90%' },
    42. ],
    43. knoChartTitle: '有理数',
    44. title: '整数',
    45. progressBarWidth: '50%'//进度条占比
    46. };
    47. },
    48. methods: {
    49. clickBubble (item) {
    50. this.knoChartTitle = item.name;
    51. this.title = item.title
    52. this.progressBarWidth = item.cat;
    53. console.log(this.progressBarWidth, '8888')
    54. },
    55. },
    56. };
    57. </script>
    58. <style lang="scss">
    59. .compClass {
    60. >div {
    61. background: #fff;
    62. margin-bottom: 16px;
    63. }
    64. &-kno {
    65. padding: 16px 20px;
    66. &-bubble {
    67. display: flex;
    68. flex-wrap: wrap;
    69. justify-content: flex-start;
    70. margin-top: 32px;
    71. >div {
    72. cursor: pointer;
    73. width: 33%;
    74. text-align: center;
    75. margin-bottom: 50px;
    76. }
    77. }
    78. &-chart {
    79. .progress-status {
    80. margin-bottom: 50px;
    81. display: flex;
    82. align-items: center;
    83. #progressBarContainer {
    84. display: inline-block;
    85. margin: 0 24px 0 12px;
    86. position: relative;
    87. width: 625px;
    88. // border: 1px #669CB8 solid;
    89. height: 20px;
    90. border-radius: 10px;
    91. background-color: #E1E9EE;
    92. // background: -webkit-gradient(linear, 0 0, 0 100%, from(#E1E9EE), to(white));
    93. #progressBar {
    94. position: absolute;
    95. top: 0;
    96. left: -1px;
    97. background-color: #7BC3FF;
    98. // width: 0%;
    99. height: 20px;
    100. border-radius: 10px;
    101. // transition: width 1s ease-in-out;
    102. }
    103. }
    104. }
    105. }
    106. }
    107. }
    108. </style>

    粗糙的实现情况如下:

     

    1.简单示例

     

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <title>水球图</title>
    5. <script type="text/javascript" src="echarts.min.js"></script>
    6. <script type="text/javascript" src="echarts-liquidfill.min.js"></script>
    7. </head>
    8. <body>
    9. <div id="app" style="width: 100%;height: 400px"></div>
    10. <script type="text/javascript">
    11. var myChart = echarts.init(document.getElementById('app'));
    12. var option = {
    13. series: [{
    14. type: 'liquidFill',
    15. data: [0.6]
    16. }]
    17. };
    18. myChart.setOption(option);
    19. </script>
    20. </body>
    21. </html>

    2.定制化水球图 

     2.1 多个波形

    将多个波形表示出来,既可以表示多个数据,也可以提高图表的视觉效果。

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. data: [0.6, 0.5, 0.4, 0.3]
    5. }]
    6. };

    0.6,0.5,0.4,0.3表示分别在60%,50%,40%,30%处各有一个波形
    要几个波形,data值就写几个 

    2.2 设置波形的颜色,透明度

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. data: [0.5, 0.4, 0.3],
    5. color: ['red', '#0f0', 'rgb(0, 0, 255)'],//设置波形颜色
    6. itemStyle: {
    7. opacity: 0.6//设置normal时候的透明度
    8. },
    9. emphasis: {
    10. itemStyle: {
    11. opacity: 0.9//设置hover时候的透明度
    12. }
    13. }
    14. }]
    15. };

     或者

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. data: [0.5, 0.4, {
    5. value: 0.3,
    6. itemStyle: {
    7. color: 'red',
    8. opacity: 0.6
    9. },
    10. emphasis: {
    11. itemStyle: {
    12. opacity: 0.9
    13. }
    14. }
    15. }]
    16. }]
    17. };

    2.3 设置静态的波形

    为了防止波浪向左或向右移动动画,将waveAnimation设置为false。禁用波浪上升的动画,设置animationDuration和animationDurationUpdate为0。

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. waveAnimation: false,
    5. animationDuration: 0,
    6. animationDurationUpdate: 0,
    7. data: [0.6, 0.5, 0.4, 0.3]
    8. }]
    9. };

     2.4 设置水平的静态波形

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. data: [0.6, 0.5, 0.4, 0.3],
    5. amplitude: 0,
    6. waveAnimation: 0//考虑性能,建议将该值设置false
    7. }]
    8. };

    2.5 改变某个波形样式

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. data: [0.6, {
    5. value: 0.5,
    6. direction: 'left',//波形向左移动
    7. itemStyle: {
    8. color: 'red'//波形颜色
    9. }
    10. }, 0.4, 0.3]
    11. }]
    12. };

    direction: 设为 'left' 或 'right',指定波浪的移动方向

    2.6 设置水球图背景色和内边框样式

     

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. data: [0.6, 0.5, 0.4, 0.3],
    5. backgroundStyle: {
    6. borderWidth: 5,//边框宽度
    7. borderColor: 'red',//边框颜色
    8. color: 'yellow'//背景色
    9. }
    10. }]
    11. };

    2.7 设置外边框 

     

    1. 设置outline.show为 false,隐藏外边框
    2. var option = {
    3. series: [{
    4. type: 'liquidFill',
    5. data: [0.6, 0.5, 0.4, 0.3],
    6. outline: {
    7. show: false
    8. }
    9. }]
    10. };

    2.8 设置水球图形状

    设置shape值:
    1) 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'

    1. var options = [{
    2. series: [{
    3. type: 'liquidFill',
    4. data: [0.6, 0.5, 0.4, 0.3],
    5. shape: 'diamond'
    6. }]
    7. }];

    2)'container':装满容器的形状。

     

    1. option = {
    2. series: [{
    3. type: 'liquidFill',
    4. data: [0.5, 0.4, 0.3, 0.2],
    5. shape: 'container',
    6. outline: {
    7. show: false
    8. }
    9. }]
    10. };

    3)一个以'path://'开头的SVG路径。

     

     

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. data: [0.6, 0.55, 0.4, 0.25],
    5. radius: '60%',
    6. outline: {
    7. show: false
    8. },
    9. backgroundStyle: {
    10. borderColor: '#156ACF',
    11. borderWidth: 1,
    12. shadowColor: 'rgba(0, 0, 0, 0.4)',
    13. shadowBlur: 20
    14. },
    15. shape: 'path://M367.855,428.202c-3.674-1.385-7.452-1.966-11.146-1.794c0.659-2.922,0.844-5.85,0.58-8.719 c-0.937-10.407-7.663-19.864-18.063-23.834c-10.697-4.043-22.298-1.168-29.902,6.403c3.015,0.026,6.074,0.594,9.035,1.728 c13.626,5.151,20.465,20.379,15.32,34.004c-1.905,5.02-5.177,9.115-9.22,12.05c-6.951,4.992-16.19,6.536-24.777,3.271 c-13.625-5.137-20.471-20.371-15.32-34.004c0.673-1.768,1.523-3.423,2.526-4.992h-0.014c0,0,0,0,0,0.014 c4.386-6.853,8.145-14.279,11.146-22.187c23.294-61.505-7.689-130.278-69.215-153.579c-61.532-23.293-130.279,7.69-153.579,69.202 c-6.371,16.785-8.679,34.097-7.426,50.901c0.026,0.554,0.079,1.121,0.132,1.688c4.973,57.107,41.767,109.148,98.945,130.793 c58.162,22.008,121.303,6.529,162.839-34.465c7.103-6.893,17.826-9.444,27.679-5.719c11.858,4.491,18.565,16.6,16.719,28.643 c4.438-3.126,8.033-7.564,10.117-13.045C389.751,449.992,382.411,433.709,367.855,428.202z',
    16. label: {
    17. position: ['38%', '40%'],
    18. formatter: function() {
    19. return 'ECharts\nLiquid Fill';
    20. },
    21. fontSize: 40,
    22. color: '#D94854'
    23. }
    24. }]
    25. };

    2.9 动画

    一般来说,在液体填充图中有两种类型的动画。
    1)第一类是初始动画,具有起浪的效果。这个动画的easing方法由animationEasing控制,它的持续时间由animationDuration控制。
    2)第二种类型是更新动画,通常在数据变化和波高变化时使用。它们由animationEasingUpdate和animationDurationUpdate控制。
    例如,要禁用上升动画,并将动画更新时间设置为2秒,使用以下选项:

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. data: [0.6, 0.5, 0.4, 0.3],
    5. animationDuration: 0,
    6. animationDurationUpdate: 2000,
    7. animationEasingUpdate: 'cubicOut'
    8. }]
    9. };
    10. chart.setOption(option);
    11. setTimeout(function () {
    12. chart.setOption({
    13. series: [{
    14. type: 'liquidFill',
    15. data: [0.8, 0.6, 0.4, 0.2]
    16. }]
    17. })
    18. }, 3000);

    2.10 改变文字

    1)默认情况下,液体填充图的文本标签显示第一个数据的百分比。例如,对于数据为[0.6,0.5,0.4,0.3]的图表,默认文本为60%。
    2)要更改文本,可以使用标签。格式化程序,可以设置为字符串或函数。
    3)如果是字符串,{a}表示序列名,{b}表示数据名,{c}表示数据值。

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. name: 'Liquid Fill',
    5. data: [{
    6. name: 'First Data',
    7. value: 0.6
    8. }, 0.5, 0.4, 0.3],
    9. label: {
    10. formatter: '{a}\n{b}\nValue: {c}',
    11. fontSize: 28
    12. }
    13. }]
    14. };

     或者

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. name: 'Liquid Fill',
    5. data: [{
    6. name: 'First Data',
    7. value: 0.6
    8. }, 0.5, 0.4, 0.3],
    9. label: {
    10. formatter: function(param) {
    11. return param.seriesName + '\n'
    12. + param.name + '\n'
    13. + 'Value:' + param.value;
    14. },
    15. fontSize: 28
    16. }
    17. }]
    18. };

     

    文本位置默认位于center。label.position可以设置为'inside', 'left', 'right', 'top', 'bottom',或水平和垂直位置,例如:['10%','20%'],这意味着左边的'10%'(由label.align控制,可以设置'left', 'center', or 'right')和“20%”顶部(由label.baseline控制,可以设置 'top', 'middle', or 'bottom')。

    2.11 阴影

     默认情况下,波浪和轮廓有阴影。以下是如何改变它们的方法

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. data: [0.6, 0.5, 0.4, 0.3],
    5. itemStyle: {
    6. shadowBlur: 0
    7. },
    8. outline: {
    9. borderDistance: 0,
    10. itemStyle: {
    11. borderWidth: 5,
    12. borderColor: '#156ACF',
    13. shadowBlur: 20,
    14. shadowColor: 'rgba(255, 0, 0, 1)'
    15. }
    16. }
    17. }]
    18. };

    2.12 提示框
    添加tooltip,鼠标移入后的提示框信息显示 

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. data: [0.6],
    5. name: 'Liquid Fill'
    6. }],
    7. tooltip: {
    8. show: true
    9. }
    10. };

    2.13 点击事件

    在waves上添加点击事件:

    1. chart.setOption(option);
    2. chart.on('click', function() {
    3. console.log(arguments);
    4. // do something useful here
    5. });

     与其他图表类型一样,上述代码只会触发wave上的事件。如果你想在整个画布或特定元素上跟踪事件,你可以像这样在zrender中添加监听器:

    1. chart.getZr().on('click', function() {
    2. console.log(arguments);
    3. });

    Non-interactable
    要使一个元素(例如,一个波)非交互,只需将silent设置为true。

    3、API

    默认项参数

    1. {
    2. data: [],
    3. color: ['#294D99', '#156ACF', '#1598ED', '#45BDFF'],
    4. center: ['50%', '50%'],
    5. radius: '50%',
    6. amplitude: '8%',
    7. waveLength: '80%',
    8. phase: 'auto',
    9. period: 'auto',
    10. direction: 'right',
    11. shape: 'circle',
    12. waveAnimation: true,
    13. animationEasing: 'linear',
    14. animationEasingUpdate: 'linear',
    15. animationDuration: 2000,
    16. animationDurationUpdate: 1000,
    17. outline: {
    18. show: true,
    19. borderDistance: 8,
    20. itemStyle: {
    21. color: 'none',
    22. borderColor: '#294D99',
    23. borderWidth: 8,
    24. shadowBlur: 20,
    25. shadowColor: 'rgba(0, 0, 0, 0.25)'
    26. }
    27. },
    28. backgroundStyle: {
    29. color: '#E3F7FF'
    30. },
    31. itemStyle: {
    32. opacity: 0.95,
    33. shadowBlur: 50,
    34. shadowColor: 'rgba(0, 0, 0, 0.4)'
    35. },
    36. label: {
    37. show: true,
    38. color: '#294D99',
    39. insideColor: '#fff',
    40. fontSize: 50,
    41. fontWeight: 'bold',
    42. align: 'center',
    43. baseline: 'middle'
    44. position: 'inside'
    45. },
    46. emphasis: {
    47. itemStyle: {
    48. opacity: 0.8
    49. }
    50. }
    51. }

    3.1 data {(number|Object)[]}

    1)data里的每一项必须为0-1之间的值
    2)data的每一项也可以是Object,设置单波形样式

    1. //设置第二波形为红色
    2. var option = {
    3. series: [{
    4. type: 'liquidFill',
    5. data: [0.6, {
    6. value: 0.5,
    7. itemStyle: {
    8. color: 'red'
    9. }
    10. }, 0.4, 0.3]
    11. }]
    12. };

    3.2 color {string[]}

    设置波形颜色

    color: ['#294D99', '#156ACF', '#1598ED', '#45BDFF']

    3.3 shape {string}

    设置水球图形状
    1)'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
    2)一个以'path://'开头的SVG路径

    3.4 center {string[]}

    水球图的位置。第一个值是x位置,第二个是y位置。每个值都可以是一个相对值,比如‘50%’,它是相对于容器宽度和高度的较小值,或者是一个绝对值,比如100px。

    3.5 radius {string}

    图表的半径,可以是一个相对值,如“50%”,这是相对于容器的宽度和高度的较小值,或一个绝对值,如“100px”。

    3.6 amplitude {number}

    水波的振幅,以像素或百分比表示。如果是百分比,那就是相对于直径。

    3.7 waveLength {string|number}

    水波的波长,可以是一个相对值,如“50%”,这是相对于直径,或绝对值,如“100px”或“100”。

    3.8 phase {number}

    弧度系统中波的相位。默认情况下,是auto即每一个波比前面一个波大`Math.PI / 4的相位。

    3.9 period {number|'auto'|function}

    向前移动一个波长所需的毫秒数。默认情况下,它被设置为“auto”即前面的波有更高的速度。
    它也可以是一个函数格式。

    1. var option = {
    2. series: [{
    3. type: 'liquidFill',
    4. data: [0.6, 0.5, 0.4, 0.3],
    5. radius: '70%',
    6. phase: 0,
    7. period: function (value, index) {
    8. // This function is called four times, each for a data item in series.
    9. // `value` is 0.6, 0.5, 0.4, 0.3, and `index` is 0, 1, 2, 3.
    10. return 2000 * index + 1000;
    11. }
    12. }]
    13. }

    3.10 direction {string}

    水波移动的方向,可以设置为'right'或者'left'

    3.11 waveAnimation {boolean}

    是否允许水波向左移动或向右移动。

    3.12 animationEasing {string}

    初始动画的缓动效果,例如当波从底部开始上升

    3.13 animationEasingUpdate {string}

    数据更新动画的缓动效果,例如,当数据值变化和波的位置变化时。

    3.14 animationDuration {number}

    初始动画的时长,单位为毫秒。

    3.15 animationDurationUpdate {number}

    数据更新动画的时长,单位为毫秒。

    3.16 outline.show {boolean}

    是否显示外边框

    3.16 outline.borderDistance {number}

    外边框与内圈之间的距离。

    3.17 outline.itemStyle.borderColor {string}

    外边框颜色

    3.18 outline.itemStyle.borderWidth {number}

    外边框宽度

    3.19 outline.itemStyle.shadowBlur {number}

    外边框阴影的模糊大小

    3.20 outline.itemStyle.shadowColor {string}

    外边框阴影颜色

    3.21 backgroundStyle.color {string}

    内圈背景色

    3.22 backgroundStyle.borderWidth {string}

    内圈描边边框

    3.23 backgroundStyle.borderColor {string}

    内圈描边边框颜色

    3.24 backgroundStyle.itemStyle.shadowBlur {number}

    背景色阴影的模糊大小

    3.25 backgroundStyle.itemStyle.shadowColor {string}

    背景色阴影的颜色

    3.26 backgroundStyle.itemStyle.opacity {number}

    背景色的透明度

    3.27 itemStyle.opacity {number}

    水波透明度

    3.28 itemStyle.shadowBlur {number}

    水波阴影的模糊大小

    3.29 itemStyle.shadowColor {string}

    水波阴影的颜色

    3.30 emphasis.itemStyle.opacity {number}

    当鼠标移入后,水波的透明度

    3.31 label.show {boolean}

    是否显示文本标签

    3.32 label.color {string}

    文本标签的颜色(background上的)

    3.33 label.insideColor {string}

    文本标签的颜色(wave上的)即文本标签在wave上的颜色

    3.34 label.fontSize {number}

    文本标签的字体大小

    3.35 label.fontWeight {string}

    文本标签的字体粗细

    3.36 label.align {string}

    文本标签的对齐。 'left', 'center''right'.

    3.37 label.baseline {string}

    文本标签的垂直对齐方式, 'top', 'middle''bottom'.

    3.38 label.position {string|string[]}

    文本标签的位置,默认是center。值可以设置为 'inside', 'left', 'right', 'top', 'bottom'或水平和垂直位置”(“10%”,“20%”)”,意思是“10%”的左边,“20%”。

     

  • 相关阅读:
    亚马逊云AI应用科技创新下的Amazon SageMaker使用教程
    Qt编程-QTableView同时冻结行和列
    Go的优雅终止姿势
    E. Block Sequence-Codeforces Round 903 (Div. 3)
    【八大经典排序算法】堆排序
    Nginx 丢失Cookies问题。所需的防伪表单字段“__RequestVerificationToken”不存在
    电脑格式化后文件还能恢复吗?
    基于springboot实现职称评审管理系统演示【项目源码+论文说明】分享
    【从0到1设计一个网关】性能优化---缓存
    JAVA自行车在线租赁管理系统2021计算机毕业设计Mybatis+系统+数据库+调试部署
  • 原文地址:https://blog.csdn.net/ll123456789_/article/details/133898722