开源Mitab

MapX生成图元的效率真的不敢恭维,如果要做动态播放,轨迹跟踪等工作,会让你有股把电脑砸了的冲动!幸好GIS是一门科学,更是一门技术,有好多的热心人士为GIS的发展进步默默地奉献青春,开源Mitab库就是这样一群人做的好东东.废话不多说,开源包里想要的东东都有,这个是vb.net下的API声明,具体怎么用,大家可以自己去研究。。。。。

'/*******************************************************************************
'ModuleName:Mitab
'Author:  Contect:Giselite@163.com
'DateTime: Mar 29, 2010
'Desc:
'        1.API declare For the mass-data low efficiency problem of MapX,in order
'          to appreciate the effort of OpenGIS,please keep the Annotations unchanged
'          below.Look more infomation at http://mitab.maptools.org/
'History:
'        1.Introduced by Me on  Mar 29, 2010
'Note:
'        1.Need the file of "Mitab.dll"
'CopyRight: XXXXXX TEC.LMT.CO
'**********************************************************************************
Option Strict Off
Option Explicit On
Imports System.Runtime.InteropServices

Public Module Mitab
    ' **********************************************************************
    ' * $Id: mitab.vb,v 1.11 2005/04/01 16:22:54 dmorissette Exp $
    ' *
    ' * Name:     mitab.vb
    ' * Project:  MapInfo TAB Read/Write library
    ' * Language: Visual Basic
    ' * Purpose:  Visual Basic include file for MITAB API prototypes using STDCALL
    ' *           calling convention. Used with MITAB dll compiled with
    ' *           the /Gz qualifier.
    ' * Author:   Bo Thomsen, bvt@sns.dk
    ' *
    ' **********************************************************************
    ' * Copyright (c) 2002, Bo Thomsen
    ' *
    ' * Permission is hereby granted, free of charge, to any person obtaining a
    ' * copy of this software and associated documentation files (the "Software"),
    ' * to deal in the Software without restriction, including without limitation
    ' * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    ' * and/or sell copies of the Software, and to permit persons to whom the
    ' * Software is furnished to do so, subject to the following conditions:
    ' *
    ' * The above copyright notice and this permission notice shall be included
    ' * in all copies or substantial portions of the Software.
    ' *
    ' * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    ' * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    ' * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
    ' * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    ' * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    ' * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    ' * DEALINGS IN THE SOFTWARE.
    ' **********************************************************************
    ' *
    ' * $Log: mitab.vb,v $
    ' * Revision 1.11  2005/04/01 16:22:54  dmorissette
    ' * Updated to Libversion = 1004000 for 1.4.0 release
    ' *
    ' * Revision 1.10  2004/07/07 22:10:32  dmorissette
    ' * Update for 1.3.0 release by BVT
    ' *
    ' * Revision 1.10  2004/07/06 18:51:00  bvt
    ' * Added declaration for:
    ' * mitab_c_load_coordsys_table
    ' * mitab_c_get_extended_mif_coordsys_vb
    ' * mitab_c_get_feature_count
    ' * mitab_c_get_field_as_double
    ' *
    ' * Revision 1.9  2003/08/07 18:51:00  dmorissette
    ' * Added mitab_c_getlibversion declaration (BVT - Bug 21)
    ' *
    ' * Revision 1.8  2003/07/29 14:39:26  dmorissette
    ' * Update for v1.2.4 from BVT (mitab_c_add_field declaration changed)
    ' *
    ' * Revision 1.8  2003/07/29 13:53:11  daniel
    ' * Update for v1.2.4 from BVT (mitab_c_add_field declaration changed)
    ' *
    ' * Revision 1.7  2002/09/07 17:57:01  daniel
    ' * Update for version 1.2.2 (from BVT)
    ' *
    ' * Revision 1.6  2002/09/07 13:59:38  daniel
    ' * (Update From BVT) Numerous fixes in the declarations
    ' *
    ' * Revision 1.5  2002/08/01 13:59:38  daniel
    ' * (Update From BVT) Fixed mitab_c_get_vertex_x/y() declarations
    ' *
    ' * Revision 1.4  2002/07/07 22:04:22  bvt
    ' * Added declaration for mitab_c_is_interior_ring
    ' *
    ' * Revision 1.3  2002/05/09 22:04:22  daniel
    ' * Added missing TABFC_MultiPoint=10
    ' *
    ' * Revision 1.2  2002/05/08 20:23:53  daniel
    ' * Update from Bo, and re-re-renamed mitab_vb.dll to mitab.dll (stdcall is default now)
    ' *
    ' * Revision 1.21  2002/05/07 13:43:30  bvt
    ' * changed the dll name to mitab_vb.dll. Changed the vb file name
    ' * to mitab_vb.vb to reflect the new name of the dll.
    ' *
    ' * Revision 1.2  2002/05/05 13:43:30  bvt
    ' * Added mitab_c_get_field_width and mitab_c_get_field_precision to api.
    ' *
    ' * Revision 1.1  2002/02/22 13:43:30  daniel
    ' * Initial Revision from Bo Thomsen
    ' *
    ' * Revision 1.00  2002/02/20 12:35:00  bvt
    ' * New - used in conjunction with mitab_capi.cpp,v 1.15 compiled with
    ' * /Gz (stdcall calling convention)
    ' *
    ' *

<StructLayout(LayoutKind.Sequential)> Public Structure mitab_projinfo
        <VBFixedArray(255)> Dim ph() As Byte

Public Sub Initialize()
            ReDim ph(255)
        End Sub
    End Structure

' feature type values

Public Const TABFC_NoGeom As Short = 0
    Public Const TABFC_Point As Short = 1
    Public Const TABFC_FontPoint As Short = 2
    Public Const TABFC_CustomPoint As Short = 3
    Public Const TABFC_Text As Short = 4
    Public Const TABFC_Polyline As Short = 5
    Public Const TABFC_Arc As Short = 6
    Public Const TABFC_Region As Short = 7
    Public Const TABFC_Rectangle As Short = 8
    Public Const TABFC_Ellipse As Short = 9
    Public Const TABFC_MultiPoint As Short = 10

' field types

Public Const TABFT_Char As Short = 1
    Public Const TABFT_Integer As Short = 2
    Public Const TABFT_SmallInt As Short = 3
    Public Const TABFT_Decimal As Short = 4
    Public Const TABFT_Float As Short = 5
    Public Const TABFT_Date As Short = 6
    Public Const TABFT_Logical As Short = 7

' text justification

Public Const TABTJ_Left As Short = 0
    Public Const TABTJ_Center As Short = 1
    Public Const TABTJ_Right As Short = 2

' text spacing

Public Const TABTS_Single As Short = 0
    Public Const TABTS_1_5 As Short = 1
    Public Const TABTS_Double As Short = 2

' test linetype

Public Const TABTL_NoLine As Short = 0
    Public Const TABTL_Simple As Short = 1
    Public Const TABTL_Arrow As Short = 2

' version

Public Const Libversion As Integer = 1004000

Public Declare Function mitab_c_add_field Lib "mitab.dll" Alias "_mitab_c_add_field@28" (ByVal handle As Integer, ByVal field_name As String, ByVal field_type As Integer, ByVal width As Integer, ByVal precision As Integer, ByVal indexed As Integer, ByVal unique As Integer) As Integer
    Public Declare Sub mitab_c_close Lib "mitab.dll" Alias "_mitab_c_close@4" (ByVal handle As Integer)
    Public Declare Function mitab_c_create Lib "mitab.dll" Alias "_mitab_c_create@44" (ByVal filename As String, ByVal mif_or_tab As String, ByVal mif_projectiondef As String, ByVal north As Double, ByVal south As Double, ByVal east As Double, ByVal west As Double) As Integer
    Public Declare Function mitab_c_create_feature Lib "mitab.dll" Alias "_mitab_c_create_feature@8" (ByVal handle As Integer, ByVal feature_type As Integer) As Integer
    Public Declare Sub mitab_c_destroy_feature Lib "mitab.dll" Alias "_mitab_c_destroy_feature@4" (ByVal feature As Integer)
    Public Declare Function mitab_c_get_brush_bgcolor Lib "mitab.dll" Alias "_mitab_c_get_brush_bgcolor@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_brush_fgcolor Lib "mitab.dll" Alias "_mitab_c_get_brush_fgcolor@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_brush_pattern Lib "mitab.dll" Alias "_mitab_c_get_brush_pattern@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_brush_transparent Lib "mitab.dll" Alias "_mitab_c_get_brush_transparent@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_field_as_string_vb Lib "mitab.dll" Alias "_mitab_c_get_field_as_string_vb@16" (ByVal feature As Integer, ByVal field As Integer, ByVal value As String, ByVal l As Integer) As Integer
    Public Declare Function mitab_c_get_field_count Lib "mitab.dll" Alias "_mitab_c_get_field_count@4" (ByVal handle As Integer) As Integer
    Public Declare Function mitab_c_get_field_name_vb Lib "mitab.dll" Alias "_mitab_c_get_field_name_vb@16" (ByVal handle As Integer, ByVal field As Integer, ByVal name As String, ByVal l As Integer) As Integer
    Public Declare Function mitab_c_get_field_type Lib "mitab.dll" Alias "_mitab_c_get_field_type@8" (ByVal handle As Integer, ByVal field As Integer) As Integer
    Public Declare Function mitab_c_get_font_vb Lib "mitab.dll" Alias "_mitab_c_get_font_vb@12" (ByVal feature As Integer, ByVal font As String, ByVal l As Integer) As Integer
    Public Declare Function mitab_c_getlibversion Lib "mitab.dll" Alias "_mitab_c_getlibversion@0" () As Integer
    Public Declare Function mitab_c_get_mif_coordsys_vb Lib "mitab.dll" Alias "_mitab_c_get_mif_coordsys_vb@12" (ByVal dataset As Integer, ByVal coordsys As String, ByVal l As Integer) As Integer
    Public Declare Function mitab_c_get_extended_mif_coordsys_vb Lib "mitab.dll" Alias "_mitab_c_get_extended_mif_coordsys_vb@12" (ByVal dataset As Integer, ByVal coordsys As String, ByVal l As Integer) As Integer
    Public Declare Function mitab_c_get_parts Lib "mitab.dll" Alias "_mitab_c_get_parts@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_pen_color Lib "mitab.dll" Alias "_mitab_c_get_pen_color@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_pen_pattern Lib "mitab.dll" Alias "_mitab_c_get_pen_pattern@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_pen_width Lib "mitab.dll" Alias "_mitab_c_get_pen_width@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_projinfo Lib "mitab.dll" Alias "_mitab_c_get_projinfo@4" (ByVal dataset As Integer) As mitab_projinfo
    Public Declare Function mitab_c_get_symbol_color Lib "mitab.dll" Alias "_mitab_c_get_symbol_color@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_symbol_no Lib "mitab.dll" Alias "_mitab_c_get_symbol_no@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_symbol_size Lib "mitab.dll" Alias "_mitab_c_get_symbol_size@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_text_vb Lib "mitab.dll" Alias "_mitab_c_get_text_vb@12" (ByVal feature As Integer, ByVal text As String, ByVal l As Integer) As Integer
    Public Declare Function mitab_c_get_text_angle Lib "mitab.dll" Alias "_mitab_c_get_text_angle@4" (ByVal feature As Integer) As Double
    Public Declare Function mitab_c_get_text_bgcolor Lib "mitab.dll" Alias "_mitab_c_get_text_bgcolor@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_text_fgcolor Lib "mitab.dll" Alias "_mitab_c_get_text_fgcolor@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_text_height Lib "mitab.dll" Alias "_mitab_c_get_text_height@4" (ByVal feature As Integer) As Double
    Public Declare Function mitab_c_get_text_justification Lib "mitab.dll" Alias "_mitab_c_get_text_justification@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_text_linetype Lib "mitab.dll" Alias "_mitab_c_get_text_linetype@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_text_spacing Lib "mitab.dll" Alias "_mitab_c_get_text_spacing@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_text_width Lib "mitab.dll" Alias "_mitab_c_get_text_width@4" (ByVal feature As Integer) As Double
    Public Declare Function mitab_c_get_type Lib "mitab.dll" Alias "_mitab_c_get_type@4" (ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_vertex_count Lib "mitab.dll" Alias "_mitab_c_get_vertex_count@8" (ByVal feature As Integer, ByVal part As Integer) As Integer
    Public Declare Function mitab_c_get_vertex_x Lib "mitab.dll" Alias "_mitab_c_get_vertex_x@12" (ByVal feature As Integer, ByVal part As Integer, ByVal vertex As Integer) As Double
    Public Declare Function mitab_c_get_vertex_y Lib "mitab.dll" Alias "_mitab_c_get_vertex_y@12" (ByVal feature As Integer, ByVal part As Integer, ByVal vertex As Integer) As Double
    Public Declare Function mitab_c_getlasterrormsg_vb Lib "mitab.dll" Alias "_mitab_c_getlasterrormsg_vb@8" (ByVal errormsg As String, ByVal l As Integer) As Integer
    Public Declare Function mitab_c_getlasterrorno Lib "mitab.dll" Alias "_mitab_c_getlasterrorno@0" () As Integer
    Public Declare Function mitab_c_next_feature_id Lib "mitab.dll" Alias "_mitab_c_next_feature_id@8" (ByVal handle As Integer, ByVal last_feature_id As Integer) As Integer
    Public Declare Function mitab_c_open Lib "mitab.dll" Alias "_mitab_c_open@4" (ByVal filename As String) As Integer
    Public Declare Function mitab_c_read_feature Lib "mitab.dll" Alias "_mitab_c_read_feature@8" (ByVal handle As Integer, ByVal feature_id As Integer) As Integer
    Public Declare Sub mitab_c_set_arc Lib "mitab.dll" Alias "_mitab_c_set_arc@52" (ByVal feature As Integer, ByVal center_x As Double, ByVal center_y As Double, ByVal x_radius As Double, ByVal y_radius As Double, ByVal start_angle As Double, ByVal end_angle As Double)
    Public Declare Sub mitab_c_set_brush Lib "mitab.dll" Alias "_mitab_c_set_brush@20" (ByVal feature As Integer, ByVal fg_color As Integer, ByVal bg_color As Integer, ByVal pattern As Integer, ByVal transparent As Integer)
    Public Declare Sub mitab_c_set_field Lib "mitab.dll" Alias "_mitab_c_set_field@12" (ByVal feature As Integer, ByVal field_index As Integer, ByVal value As String)
    Public Declare Sub mitab_c_set_font Lib "mitab.dll" Alias "_mitab_c_set_font@8" (ByVal feature As Integer, ByVal font_name As String)
    Public Declare Sub mitab_c_set_pen Lib "mitab.dll" Alias "_mitab_c_set_pen@16" (ByVal feature As Integer, ByVal width As Integer, ByVal pattern As Integer, ByVal color As Integer)
    Public Declare Sub mitab_c_set_points Lib "mitab.dll" Alias "_mitab_c_set_points@20" (ByVal feature As Integer, ByVal part As Integer, ByVal vertex_count As Integer, ByRef x As Double, ByRef y As Double)
    Public Declare Function mitab_c_set_projinfo Lib "mitab.dll" Alias "_mitab_c_set_projinfo@8" (ByVal dataset As Integer, ByVal projinfo As mitab_projinfo) As Integer
    Public Declare Sub mitab_c_set_symbol Lib "mitab.dll" Alias "_mitab_c_set_symbol@16" (ByVal feature As Integer, ByVal symbol_no As Integer, ByVal symbol_size As Integer, ByVal symbol_color As Integer)
    Public Declare Sub mitab_c_set_text Lib "mitab.dll" Alias "_mitab_c_set_text@8" (ByVal feature As Integer, ByVal text As String)
    Public Declare Sub mitab_c_set_text_display Lib "mitab.dll" Alias "_mitab_c_set_text_display@48" (ByVal feature As Integer, ByVal angle As Double, ByVal height As Double, ByVal width As Double, ByVal fg_color As Integer, ByVal bg_color As Integer, ByVal justification As Integer, ByVal spacing As Integer, ByVal linetype As Integer)
    Public Declare Function mitab_c_write_feature Lib "mitab.dll" Alias "_mitab_c_write_feature@8" (ByVal handle As Integer, ByVal feature As Integer) As Integer
    Public Declare Function mitab_c_get_field_width Lib "mitab.dll" Alias "_mitab_c_get_field_width@8" (ByVal handle As Integer, ByVal field As Integer) As Integer
    Public Declare Function mitab_c_get_field_precision Lib "mitab.dll" Alias "_mitab_c_get_field_precision@8" (ByVal handle As Integer, ByVal field As Integer) As Integer
    Public Declare Function mitab_c_is_interior_ring Lib "mitab.dll" Alias "_mitab_c_is_interior_ring@8" (ByVal feature As Integer, ByVal requestedringindex As Integer) As Integer
    Public Declare Function mitab_c_load_coordsys_table Lib "mitab.dll" Alias "_mitab_c_load_coordsys_table@4" (ByVal filename As String) As Integer
    Public Declare Function mitab_c_get_feature_count Lib "mitab.dll" Alias "_mitab_c_get_feature_count@4" (ByVal handle As Integer) As Integer
    Public Declare Function mitab_c_get_field_as_double Lib "mitab.dll" Alias "_mitab_c_get_field_as_double_vb@8" (ByVal feature As Integer, ByVal field As Integer) As Double
End Module

以下代码随机生成点,经测试100万个点耗时约1分40秒,大概1秒1万个点,这与MapX 100个点耗时1秒相比,兼职就是拖拉机和动车的区别。

Public Function CreateTraceLayer(ByVal sLayerName As String) As String
        Try
            Dim sPath As String = My.Application.Info.DirectoryPath & "/temp"
            If Not My.Computer.FileSystem.DirectoryExists(sPath) Then
                My.Computer.FileSystem.CreateDirectory(sPath)
            End If
            sPath = sPath & "/" & TraceLayerName & ".tab"

Dim Feature, Dataset, Field_Index As Integer
            Dim x As Double
            Dim y As Double
            Dim sTmp As String
            Dim clor As Integer
            Dataset = mitab_c_create(sPath, "tab", "CoordSys Earth Projection 1, 0", 90, -90, 180, -180)

If (Dataset = 0) Then
                sTmp = Space(255)
                i1 = mitab_c_getlasterrormsg_vb(sTmp, 255)
                MsgBox("Failed to create " & "tab" & " file: " & sPath & vbCrLf & Left(sTmp, i1))
                CreateTraceLayer = ""
                Exit Function
            End If

Field_Index = mitab_c_add_field(Dataset, "Index", TABFT_Integer, 0, 0, 1, 1)
            Field_Index = mitab_c_add_field(Dataset, "Longitude", TABFT_Decimal, 10, 6, 0, 0)
            Field_Index = mitab_c_add_field(Dataset, "Latitude", TABFT_Decimal, 10, 6, 0, 0)

Dim counter As Integer = 0
            Randomize()

Do While counter < 10000  '颜色设置值越界引起内存溢出错误   生成1百万个点约1分40秒
                Feature = mitab_c_create_feature(Dataset, TABFC_Point)
                x = 180 * Rnd()
                y = 90 * Rnd()
                Call mitab_c_set_points(Feature, 0, 1, x, y)
                clor = Color.Red.R * 65536 + Color.Red.G * 256 + Color.Red.B 'i1 * i2
                Call mitab_c_set_symbol(Feature, 36, 15, clor)

Call mitab_c_set_field(Feature, 0, counter.ToString)
                Call mitab_c_set_field(Feature, 1, Format(x, "##0.##0000"))
                Call mitab_c_set_field(Feature, 2, Format(y, "##0.##0000"))
                Call mitab_c_write_feature(Dataset, Feature)
                Call mitab_c_destroy_feature(Feature)
                counter += 1
            Loop

mitab_c_close((Dataset))

If (mitab_c_getlasterrorno() <> 0) Then
                sTmp = Space(255)
                i1 = mitab_c_getlasterrormsg_vb(sTmp, 255)
                MsgBox("Last Error: " & Left(sTmp, i1))
            End If

CreateTraceLayer = sPath
        Catch Ex As Exception

Finally

End Try

End Function

完成加载图层的代码

Dim sTabPath As String
            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
            '出错或者崩毁问题都来自用mitab库生成图元时参数不正确。一定注意不要溢出,参数都要格式化输入
            '方案1:
            sTabPath = CreateTraceLayer(TraceLayerName)
            Map.Refresh()

脚注:一开始我就对MapX这个东东不太支持,似乎他真的是过时了。接触一段时间后发现其实不然,技术在革新,但科学只是在进步而已。无论用什么技术,只要拥有足够的智慧,任何能想到的东西基本都是可以实现地。

但是我还是更喜欢ESRI,ArcGIS真的很强大!另外对SupMap充满了希望!

MapX系列-- 开源Mitab相关推荐

  1. Uncode系列开源组件简介

    概述 Uncode 是基于Java 语言的一系列企业级开源组件,作者冶卫军 (开源作者花费大量时间维护开源项目,期望正确使用).主要包括:移动后端开发框架Uncode-BaaS ,通用数据库访问组件U ...

  2. GPT“高仿”系列开源了!最大可达GPT-3大小,还能自主训练

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 虽然GPT-3没有开源,却已经有人在复刻GPT系列的模型了. 例如,慕尼黑工业大学的Connor Leahy,此前用200个小时.6000R ...

  3. 《Dotnet9》系列-开源C# Winform控件库1《HZHControls》强力推荐

    大家好,我是Dotnet9小编,一个从事dotnet开发8年+的程序员.我最近在写dotnet分享文章,希望能让更多人看到dotnet的发展,了解更多dotnet技术,帮助dotnet程序员应用dot ...

  4. 【开源】Easy系列开源与免费流媒体音视频方案汇总(持续更新)

    Easy系列从开源到SDK组件,再到产品.解决方案.硬件,从2012年EasyDarwin开始,专注于流媒体音视频这一领域已经非常多年了,积累了丰富的行业经验,同时也积累了众多的产品,产品的名称非常多 ...

  5. JS组件系列——开源免费图表组件:Chart.js

    前言:最近被开源免费得有点上火了,各种组件首先想到的就是是开源否.是否免费.是否和bootstrap风格一致.想着以后做报表肯定要用到图表组件的,于是在Bootstrap中文网上面找到了Chart.j ...

  6. MapX系列-- 地图浏览

    地图浏览 mapX封装的很好,将ZoomIn,ZoomOut,Pan等基本地图浏览功能全部预制好了,用户只需要通过设置Map控件的CurrentTool属性即可,并且地图的CurrentTool属性值 ...

  7. 研发效能系列----开源的数据库版本管理工具Flyway

    1. 简介 网址:https://flywaydb.org/ Flyway是一款开源的数据库版本管理工具,Flyway可以独立于应用实现管理并跟踪数据库的变更,Flyway根据自己的约定,不需要复杂的 ...

  8. 《Dotnet9》系列-开源C# WPF控件库2《Panuon.UI.Silver》强力推荐

    国内优秀的WPF开源控件库,Panuon.UI的优化版本.一个漂亮的.使用样式与附加属性的WPF UI控件库,值得向大家推荐使用与学习. 今天站长(Dotnet9,站长网址:https://dotne ...

  9. 开源OSS.Social微信项目进阶介绍

    在开源OSS.Social微信项目解析的随笔中,我简单给大家分享了进行中微信项目的概要设计,主要在讲述解决思路和过程,没有详细实现和使用介绍.本着不能马虎的态度,这篇文章我来给大家分解一下项目结构,使 ...

最新文章

  1. 你不知道的Vue响应式原理
  2. 阿里专家张磊:云原生为什么对云计算生态充满吸引力?
  3. 大家眼中的桌面技术支持是什么样的?
  4. 不好意思,食言而肥了
  5. Windows MySQL8.0安装出错解决方案(Start Server 失败)
  6. 多目标跟踪(MOT)领域近期值得读的几篇论文
  7. cocos 事件分发2
  8. tf.train.GradientDescentOptimizer().minimize()细致探索
  9. 开机显示erro:file'/boot/grub/i386-pc/normal.mod' not解决
  10. ch cc 2019Mac(ch cc 2019直装版)2.1中文特别版
  11. 应用 Remoting
  12. 基于Vivado和Ego1的密码锁设计
  13. 《嵌入式 – GD32开发实战指南》第9章 呼吸灯
  14. RFC(请求注解)--各种协议-标准
  15. 黑盒测试方法-----状态转换图
  16. 美通企业日报 | 麦德龙在重庆开第4家店;假日品牌在华第100家酒店开业
  17. C++程序设计:考研路茫茫——早起看书
  18. 2022年科技期刊最新影响因子在线查询
  19. 线性规划:单纯形算法之处理退化
  20. B2B2C多用户商城系统如何选择

热门文章

  1. inplace = True 是什么意思
  2. 关于error C2065 错误
  3. 做数学建模不得不会的数据特征分析---相关性分析
  4. linux系统添加根证书 linux证书信任列表
  5. Android之WebView
  6. 【Python】窗口界面 按钮 文本框
  7. 离行式ATM机搭建数据传输VPN安全网络解决方案
  8. 2007-08-03 16:04 unresolved external symbol Direct3DCreate9
  9. Visual Studio 好用的插件
  10. 游戏AI行为选择算法一览