Mysql之mysqldump工具
作者:admin 日期:2022-05-18
VB.NET利用纯真IP数据库查询IP地址及信息
作者:admin 日期:2022-05-13
几年前从某个博客抄来的,已经忘记原地址了,如果需要C#版的,可以在博客园搜到吧。
我因为自己用,所以转换为了VBNET代码,而且也放置了很久,今天无意间翻出来,就分享给大家吧。
首先,先下载 纯真数据库,名称应该是 QQWry.dat 。
之后将数据库文件复制到程序的主目录即可。
Imports System.IO Imports System.Text Imports System.Text.RegularExpressions Imports System.Net Imports System.Net.Sockets ''' <summary>IP地址查询</summary> Public NotInheritable Class IPQuery ''' <summary>IP地址描述</summary> Public Structure IPLocation Sub New(ByVal i As String, ByVal c As String, ByVal l As String) IP = i Country = c Local = l End Sub ''' <summary>IP地址</summary> Dim IP As String ''' <summary>地域\国家\机构</summary> Dim Country As String ''' <summary>地域描述</summary> Dim Local As String ''' <summary>返回完整名称</summary> Overloads Function ToString() As String Return Me.Country & Me.Local End Function ''' <param name="ls">连接字符</param> Overloads Function ToString(ByVal ls As String) As String Return Me.Country & ls & Me.Local End Function ' 强制转换 Public Shared Widening Operator CType(ByVal o As IPLocation) As String Return o.ToString End Operator End Structure Shared encoding As Encoding = encoding.GetEncoding("GB2312") Shared ipCount As Integer Shared fsinoffiset As Integer Shared lsinoffiset As Integer Shared data As Byte() ' 加强线程访问安全 Shared rwl As New Threading.ReaderWriterLock ''' <summary>刷新IP数据库</summary> Shared Sub ReIPData(ByVal dataPath As String) rwl.AcquireWriterLock(-1) '设置写权限,禁止读权限 ' 尝试回收内存中的数据库 If data IsNot Nothing Then data = Nothing GC.Collect() End If ' 读取数据 data = IO.File.ReadAllBytes(dataPath) fsinoffiset = CInt(data(0)) + (CInt(data(1)) << 8) + (CInt(data(2)) << 16) + (CInt(data(3)) << 24) lsinoffiset = CInt(data(4)) + (CInt(data(5)) << 8) + (CInt(data(6)) << 16) + (CInt(data(7)) << 24) ipCount = (lsinoffiset - fsinoffiset) / 7 + 1 rwl.ReleaseWriterLock() If ipCount <= 1 Then Throw New ApplicationException("提供的IP数据错误!") End Sub Shared Sub New() ' TODO 替换为自己的数据库地址 ReIPData(Application.StartupPath & "\QQWry.dat") End Sub ''' <summary>返回数据库中IP纪录总数</summary> Shared ReadOnly Property Count() As Integer Get Return ipCount End Get End Property ''' <summary>查询一组IP地址</summary> Shared Function QueryAll(ByVal ParamArray ips As String()) As IPLocation() If ips Is Nothing orElse ips.Length = 0 Then Return Nothing Dim ipls(ips.Length - 1) As IPLocation For i As Integer = 0 To ips.Length - 1 ipls(i) = Query(ips(i)) Next Return ipls End Function ''' <summary>查询IP地址</summary> Shared Function Query(ByVal ip As String) As IPLocation rwl.AcquireReaderLock(-1) '设置读权限 Dim ads As IPAddress = IPAddress.Parse(ip) If ads.AddressFamily <> AddressFamily.InterNetwork Then Throw New ArgumentException("不支持非IPV4协议") If IPAddress.IsLoopback(ads) Then rwl.ReleaseReaderLock() Return New IPLocation(ip, "本机或保留地址", "") End If 'Dim intIp As UInteger = CUInt(IPAddress.HostToNetworkOrder(CInt(ads.Address))) Dim intIp As UInteger = m_ip2uint(ads.ToString) Dim iplon As IPLocation : iplon.IP = ip Dim right As UInteger = ipCount Dim left, middle, startIp, endIpOff, endIp As UInteger Dim countryFlag As Integer = 0 While left < (right - 1) middle = (right + left) / 2 startIp = GetStartIp(middle, endIpOff) If intIp = startIp Then left = middle Exit While End If If intIp > startIp Then left = middle Else right = middle End If End While startIp = GetStartIp(left, endIpOff) endIp = GetEndIp(endIpOff, countryFlag) If startIp <= intIp And endIp >= intIp Then Dim local As String = "" iplon.Country = GetCountry(endIpOff, countryFlag, local) If local = " CZ88.NET" Then local = "" '优化 用于去除部分IP地址返回的广告数据 iplon.Local = local Else iplon.Country = "未知地区" iplon.Local = "" '"火星网友" End If rwl.ReleaseReaderLock() Return iplon End Function Private Shared Function GetStartIp(ByVal left As UInteger, ByRef endIpOff As UInteger) As UInteger Dim leftOffset As Integer = CInt(fsinoffiset + (left * 7)) endIpOff = CUInt(data(leftOffset + 4)) + (CUInt(data(leftOffset + 5)) << 8) + (CUInt(data(leftOffset + 6)) << 16) Return CUInt(data(leftOffset)) + (CUInt(data(leftOffset + 1)) << 8) + (CUInt(data(leftOffset + 2)) << 16) + (CUInt(data(leftOffset + 3)) << 24) End Function Private Shared Function GetEndIp(ByVal endIpOff As UInteger, ByRef countryFlag As Integer) As UInteger countryFlag = data(endIpOff + 4) Return CUInt(data(endIpOff)) + (CUInt(data(endIpOff + 1)) << 8) + (CUInt(data(endIpOff + 2)) << 16) + (CUInt(data(endIpOff + 3)) << 24) End Function Private Shared Function GetCountry(ByVal endIpOff As UInteger, ByVal countryFlag As Integer, ByRef local As String) As String Dim country As String = "" Dim offset As UInteger = endIpOff + 4 Select Case countryFlag Case 1, 2 country = GetFlagStr(offset, countryFlag, endIpOff) offset = endIpOff + 8 local = IIf(countryFlag = 1, "", GetFlagStr(offset, countryFlag, endIpOff)) Case Else country = GetFlagStr(offset, countryFlag, endIpOff) local = GetFlagStr(offset, countryFlag, endIpOff) End Select Return country End Function Private Shared Function GetFlagStr(ByRef offset As UInteger, ByRef countryFlag As Integer, ByRef endIpOff As UInteger) As String Dim flag As Integer = 0 Do flag = data(offset) If flag <> 1 And flag <> 2 Then Exit Do If flag = 2 Then countryFlag = 2 endIpOff = offset - 4 End If offset = CUInt(data(offset + 1)) + (CUInt(data(offset + 2)) << 8) + (CUInt(data(offset + 3)) << 16) Loop If offset < 12 Then Return "" Return GetStr(offset) End Function Private Shared Function GetStr(ByRef offset As UInteger) As String Dim lowByte As Byte = 0, highByte As Byte = 0 Dim sb As New StringBuilder(16) Do lowByte = data(offset) : offset += 1 If lowByte = 0 Then Return sb.ToString If lowByte > &H7F Then highByte = data(offset) : offset += 1 If highByte = 0 Then Return sb.ToString sb.Append(encoding.GetString(New Byte() {lowByte, highByte})) Else sb.Append(ChrW(lowByte)) End If Loop End Function ''' <summary>将ip地址转换为uint</summary> Private Shared Function m_ip2uint(ByVal ip As String) As UInteger Dim bs As Byte() = IPAddress.Parse(ip).GetAddressBytes Return CUInt(bs(3)) + (CUInt(bs(2)) << 8) + (CUInt(bs(1)) << 16) + (CUInt(bs(0)) << 24) End Function End Class
如果你要设置自定义的数据库位置,记得修改 Shared Sub New 这个方法,或者干脆删除它,自己调用 ReIPData 来设置数据库的地址。
VB.NET URL(域名)转IP地址
作者:admin 日期:2022-05-13
vb.net的正则表达式
作者:admin 日期:2022-05-12
正则表达式的作用是从一个字符串中捕获符合要求的字符串。
使用正则表达式需使用一下语句:
Import System.Globalization
Import System.IO
Import System.Text
Import.System.Text.RegularExpressions
先看一个最简单的捕获:
正则表达式 /123/ 捕获任意字符串中的 ”123” 。如:
“a123b”
“aaab12bb13123c”
匹配:
如果一个字符串中存在至少一个捕获,就算这个正则表达式匹配此字符串。如果只存在一个捕获,而且此捕获是整个字符串,则算完全匹配。
“或”符号(“|”):
正则表达式 /123|a/ 捕获 ”123” 或者 ”12a”,如:
“12ac123”
“12abcc”
“01262312343”
并:
任何两个正则表达式放在一起就成了并,如 /a/ 是一个合法的正则表达式,它捕获 ”a” 字符, /b/ 也是一个合法的正则表达式,它捕获 ”b” 字符。/ab/ 这个正则表达式捕获连在一起的 ”ab” 这样的字符串。在并的时候,两个正则表达式之间形成了断言。(关于断言会在下面讲到)。
括号:
可以用括号可以者强调符号的结合顺序,如正则表达式/(123)|(abc)/”捕获”123”或者”abc”
字符类:
可以用 [abc] 的形式来表示 (a|b|c) ,如:
正则表达式 /[abc]/ 捕获 ”a” 、”b” 或者 ”c”。
字符类的特殊构造:
“^” 放在 [] 的开头表示不捕获这些字符,如:
正则表达式 /[^abc]/ 捕获除了 ”a” 、 ”b” 和 ”c” 以外的任何字符。
“-“ 放在两个字符之间,表示匹配在字符表上这两个字符之间的所有字符。如:
[a-z] = [abcdefghijklmnopqrstuvwxyz]
[a-Z] = [a-zA-Z] = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
[0-9] = [0123456789]
特殊的字符类:
\w = [a-zA-Z_0-9]
\W = [^\w]
\s = [ \f\n\r\t\v](注1)
\S = [^\s]
\d = [0-9]
\D = [^\d]
. = 任何字符(如果没有加SingleLine参数则不匹配”\n”)
注1:\f\n\r\t\v与C语言转义字符串含义相同。如(\n换行符, \t跳格符)
重复:
正则表达式 /a{1,3}/表示/(a)|(aa)|(aaa)/,捕获”a”、”aa”或者”aaa”。
另有特殊字符约定如下:
* = {0,无穷大}
+ = {1,无穷大}
? = {0,1}
重复可以与括号一起用,如:
正则表达式 /(abc){1,2}/捕获”abc”或者”abcabc”。
零重复的作用:
零重复代表不捕获任何字符。单独使用无意义,但可以组合。如:
正则表达式/abc?/捕获”ab”或者”abc”。
以上所有的不包含无穷大重复的正则表达式都可以转化为只包含,或、并和括号的正则表达式。
(如数学中的3x5 = 1x5+2x5 ^_^)
如正则表达式:/([abc]1){2,3}/ = /(((a|b|c)1)((a|b|c)1))|(((a|b|c)1)((a|b|c)1)((a|b|c)1))/
断言:
任何两个合法的正则表达式并在一起的时候,在它们之间就形成断言。如正则表达式: /ab/ 是由正则表达式 /a/ 和 /b/ 并而组成的,在a和b之间就形成了断言。/ab/ 正则表达式中的 /a/ 只能捕获在字符 ”b” 前面的 ”a”,而 /b/ 也只能捕获字符 ”a” 后面的 ”b”。
零宽度(非捕获)断言符:
“$”断言此处一定是字符串的结尾,如:
正则表达式/abc$/捕获在字符串结尾处的abc,而忽略字符串中间任何的”abc”,如:
“123abcc”,无捕获,不匹配。
“$” 断言此处一定是字符串的结尾,如:
正则表达式 /abc$/捕获在字符串结尾处的abc,而忽略字符串中间任何的 ”abc”,如:
“123abcc”,无捕获,不匹配
“abcsabc”
“^”断言此处一定是字符串的开头。
VB.Net常用的正则表达式(实例)
作者:admin 日期:2022-05-12
正则表达式之替换
作者:admin 日期:2022-05-12
正则表达式非常有用,查找、匹配、处理字符串、替换和转换字符串,输入输出等。而且各种语言都支持,例如.NET正则库,JDK正则包, Perl, JavaScript等各种脚本语言都支持正则表达式。下面整理一些常用的正则表达式。
PHP通过Http Post请求发送Json对象数据
作者:admin 日期:2022-05-06
- /**
- * PHP发送Json对象数据
- * @param $url 请求url
- * @param $jsonStr 发送的json字符串
- * @return array
- */
- function send_post_json($url, $jsonStr)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array(
- 'Content-Type: application/json; charset=utf-8',
- 'Content-Length: ' . strlen($jsonStr)
- )
- );
- $response = curl_exec($ch);
- $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
- curl_close($ch);
- return array($httpCode, $response);
- }
- $target = "http://texst.api.cn/api/dev/start";
- $postdata=array();
- $postdata["token"]="99d710a1f7bc11eab31a00508c";
- $postdata["imei"]="868739053737";
- $jsonStr = json_encode($postdata);
- $result = send_post_json($target,$jsonStr);
- var_dump($result);
- //Json字符串转换成类对象 即可
PHP如何接收post传递的json数据
作者:admin 日期:2022-05-06
使用VB.net建立excel文件
作者:admin 日期:2022-05-03
' Add the following code snippet on top of Form1.vb
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim appXL As Excel.Application '声明一个application对象
Dim wbXl As Excel.Workbook '声明一个工作簿对象
Dim shXL As Excel.Worksheet '声明一个工作表对象
Dim raXL As Excel.Range '声明一个范围对象
' Start Excel and get Application object.
appXL = CreateObject("Excel.Application")
appXL.Visible = True
' Add a new workbook.
wbXl = appXL.Workbooks.Add
shXL = wbXl.ActiveSheet
' Add table headers going cell by cell.
shXL.Cells(1, 1).Value = "First Name"
shXL.Cells(1, 2).Value = "Last Name"
shXL.Cells(1, 3).Value = "Full Name"
shXL.Cells(1, 4).Value = "Specialization"
' Format A1:D1 as bold, vertical alignment = center.
With shXL.Range("A1", "D1")
.Font.Bold = True
.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
End With
' Create an array to set multiple values at once.
Dim students(5, 2) As String
students(0, 0) = "Zara"
students(0, 1) = "Ali"
students(1, 0) = "Nuha"
students(1, 1) = "Ali"
students(2, 0) = "Arilia"
students(2, 1) = "RamKumar"
students(3, 0) = "Rita"
students(3, 1) = "Jones"
students(4, 0) = "Umme"
students(4, 1) = "Ayman"
' Fill A2:B6 with an array of values (First and Last Names).
shXL.Range("A2", "B6").Value = students
' Fill C2:C6 with a relative formula (=A2 & " " & B2).
raXL = shXL.Range("C2", "C6")
raXL.Formula = "=A2 & "" "" & B2"
' Fill D2:D6 values.
With shXL
.Cells(2, 4).Value = "Biology"
.Cells(3, 4).Value = "Mathmematics"
.Cells(4, 4).Value = "Physics"
.Cells(5, 4).Value = "Mathmematics"
.Cells(6, 4).Value = "Arabic"
End With
' AutoFit columns A:D.
raXL = shXL.Range("A1", "D1")
raXL.EntireColumn.AutoFit()
' Make sure Excel is visible and give the user control
' of Excel's lifetime.
appXL.Visible = True
appXL.UserControl = True
' Release object references.
raXL = Nothing
shXL = Nothing
wbXl = Nothing
appXL.Quit()
appXL = Nothing
Exit Sub
Err_Handler:
MsgBox(Err.Description, vbCritical, "Error: " & Err.Number)
End Sub
End Class
vb.net 下的 CSV文件操作
作者:admin 日期:2022-05-03
常见CSV文件的操作
Private Function ExportCsvProcess(ByVal FilePath As String ByVal, dt As DataTable) As Boolean
Dim fileStream As System.IO.FileStream
Dim streamWriter As System.IO.StreamWriter
Dim intRow, intCol As Integer
Dim strRow As String
'删除旧CSV文件
If (System.IO.File.Exists(FilePath)) Then
System.IO.File.Delete(FilePath)
End If
Try
fileStream = New FileStream(FilePath, System.IO.FileMode.CreateNew, System.IO.FileAccess.Write)
If Not dt Is Nothing Then
streamWriter = New StreamWriter(fileStream, System.Text.Encoding.Default)
strRow = ""
'讀列名
For intCol = 0 To dt.Columns.Count - 1
strRow += dt.Columns(intCol).ColumnName
If intCol < dt.Columns.Count - 1 Then
strRow += ","
End If
Next
streamWriter.WriteLine(strRow)
'读每行的值
For intRow = 0 To dt.Rows.Count - 1
strRow = ""
For intCol = 0 To dt.Columns.Count - 1
strRow += CStr(dt.Rows(intRow).Item(intCol))
If intCol < dt.Columns.Count - 1 Then
strRow += ","
End If
Next
streamWriter.WriteLine(strRow)
Next
streamWriter.Close()
End If
Catch ex As Exception
MessageShow(ex.ToString())
Return False
Finally
fileStream.Close()
End Try
Return True
End Function
广告位