置顶随笔

[置顶]执子之手--与子偕老

 

谁,吻我之眸,遮我半世流离;

谁,抚我之面,慰我半世哀伤;

谁,携我之心,融我半世冰霜;

谁,扶我之肩,驱我一世沉寂。

谁,唤我之心,掩我一生凌轹。

谁,弃我而去,留我一世独殇;

谁,可明我意,使我此生无憾;

谁,可助我臂,纵横万载无双;

谁,可倾我心,寸土恰似虚弥; 

谁,可葬吾怆,笑天地虚妄,吾心狂。

伊,覆我之唇,祛我前世流离; 

伊,揽我之怀,除我前世轻浮。

  

执子之手,陪你痴狂千生;

深吻子眸,伴你万世轮回。

执子之手,共你一世风霜;

吻子之眸,赠你一世深情。

我, 牵尔玉手, 收你此生所有;

我, 抚尔秀颈, 挡你此生风雨。 

予,挽子青丝,挽子一世情思;

予,执子之手,共赴一世情长;

曾,以父之名,免你一生哀愁;

曾,怜子之情,祝你一生平安!

 

posted @ 2011-08-25 17:38 青蛙學堂 阅读(508) | 评论 (1)编辑 收藏

2022年9月12日

linux vi 目录



1. 列出目录内容 ls

2. 进入目录: cd 

3. 创建文件
   touch   test2.txt

4. 打开文件
    vi test2.txt

5. 切换至插入模式(Insert mode)编辑文件
   插入模式输入字符
   您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。
   按「i」切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件;
  按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
 
6. esc 进入命令行模式(command mode)
   命令模式删除字符,使用光标
   在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
    
7.在命令行模式删除文字
  「x」:每按一次,删除光标所在位置的"后面"一个字符。
  「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。
  「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。
  「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。
  「dd」:删除光标所在行。
  「#dd」:从光标所在行开始删除#行
8.Last line mode下命令,进入输入命令模式
    输入:后才可以输入命令
  在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。  
 
9.搜索及替换命令 :
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令,完成搜索后直接按n
N:在反方向上重复上一次搜索命令  ,上一次完成后直接按N
   
10.退出vi及保存文件
  在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:
: w filename (输入 「w filename」将文章以指定的文件名filename保存)
: wq (输入「wq」,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi)
 
   
   
   
   
   
   
   

posted @ 2022-09-12 15:57 青蛙學堂 阅读(98) | 评论 (0)编辑 收藏

2022年8月26日

Elasticsearch简介

Elasticsearch简介

Elasticsearch (ES)是一个基于Apache Lucene™的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。

但是,Lucene只是一个库。想要发挥其强大的作用,你需使用C#将其集成到你的应用中。Lucene非常复杂,你需要深入的了解检索相关知识来理解它是如何工作的。

Elasticsearch是使用Java编写并使用Lucene来建立索引并实现搜索功能,但是它的目的是通过简单连贯的RESTful API让全文搜索变得简单并隐藏Lucene的复杂性。

不过,Elasticsearch不仅仅是Lucene和全文搜索引擎,它还提供:

分布式的实时文件存储,每个字段都被索引并可被搜索

实时分析的分布式搜索引擎

可以扩展到上百台服务器,处理PB级结构化或非结构化数据

而且,所有的这些功能被集成到一台服务器,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行与之交互。

上手Elasticsearch非常简单,它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它开箱即用(安装即可使用),只需很少的学习既可在生产环境中使用。Elasticsearch在Apache 2 license下许可使用,可以免费下载、使用和修改。

随着知识的积累,你可以根据不同的问题领域定制Elasticsearch的高级特性,这一切都是可配置的,并且配置非常灵活。



使用C#操作ES

NEST是一个高层的客户端,可以映射所有请求和响应对象,拥有一个强类型查询DSL(领域特定语言),并且可以使用.net的特性比如协变、Auto Mapping Of POCOs,NEST内部使用的依然是Elasticsearch.Net客户端。

Elasticsearch.net(NEST)客户端提供了强类型查询DSL,方便用户使用,源码下载。(https://github.com/elastic/elasticsearch-net/releases/tag/2.4.4)

一、如何安装NEST

打开VS的工具菜单,通过NuGet包管理器控制台,输入以下命令安装NEST

Install-Package NEST

安装后引用了以下三个DLL

Elasticsearch.Net.dll(2.4.4)

Nest.dll(2.4.4)

Newtonsoft.Json.dll(9.0版本)

二、链接elasticsearch

你可以通过单个节点或者指定多个节点使用连接池链接到Elasticsearch集群,使用连接池要比单个节点链接到Elasticsearch更有优势,比如支持负载均衡、故障转移等。

通过单点链接:

var node = new Uri(“http://myserver:9200”);

var settings = new ConnectionSettings(node);

var client = new ElasticClient(settings);

通过连接池链接:

var nodes = new Uri[]

{
new Uri("http://myserver1:9200"),

new Uri("http://myserver2:9200"),

new Uri("http://myserver3:9200")
};

var pool = new StaticConnectionPool(nodes);

var settings = new ConnectionSettings(pool);

var client = new ElasticClient(settings);

NEST Index

为了知道请求需要操作哪个索引,Elasticsearch API期望收到一个或多个索引名称作为请求的一部分。

一、指定索引

1、可以通过ConnectionSettings使用.DefaultIndex(),来指定默认索引。当一个请求里没有指定具体索引时,NEST将请求默认索引。

var settings = new ConnectionSettings()

.DefaultIndex("defaultindex");
2、可以通过ConnectionSettings使用.MapDefaultTypeIndices(),来指定被映射为CLR类型的索引。

var settings = new ConnectionSettings()

.MapDefaultTypeIndices(m => m

    .Add(typeof(Project), "projects")

);
注意:通过.MapDefaultTypeIndices()指定索引的优先级要高于通过.DefaultIndex()指定索引,并且更适合简单对象(POCO)

3、另外还可以显示的为请求指定索引名称,例如:

var response = client.Index(student, s=>s.Index(“db_test”));

var result = client.Search(s => s.Index(“db_test”));

var result = client.Delete(null, s => s.Index(“db_test”));

……

注意:当现实的为请求指定索引名称时,这个优先级是最高的,高于以上两种方式指定的索引。

4、一些Elasticsearch API(比如query)可以采用一个、多个索引名称或者使用_all特殊标志发送请求,请求NEST上的多个或者所有节点

//请求单一节点

var singleString = Nest.Indices.Index(“db_studnet”);

var singleTyped = Nest.Indices.Index();

ISearchRequest singleStringRequest = new SearchDescriptor().Index(singleString);

ISearchRequest singleTypedRequest = new SearchDescriptor().Index(singleTyped);

//请求多个节点

var manyStrings = Nest.Indices.Index(“db_studnet”, “db_other_student”);

var manyTypes = Nest.Indices.Index().And();

ISearchRequest manyStringRequest = new SearchDescriptor().Index(manyStrings);

ISearchRequest manyTypedRequest = new SearchDescriptor().Index(manyTypes);

//请求所有节点

var indicesAll = Nest.Indices.All;

var allIndices = Nest.Indices.AllIndices;

ISearchRequest indicesAllRequest = new SearchDescriptor().Index(indicesAll);

ISearchRequest allIndicesRequest = new SearchDescriptor().Index(allIndices);

二、创建索引

Elasticsearch API允许你创建索引的同时对索引进行配置,例如:

var descriptor = new CreateIndexDescriptor(“db_student”)

.Settings(s => s.NumberOfShards(5).NumberOfReplicas(1));
client.CreateIndex(descriptor);

这里指定了该索引的分片数为5、副本数为1。

三、删除索引

Elasticsearch API允许你删除索引,例如:

var descriptor = new DeleteIndexDescriptor(“db_student”).Index(“db_student”);

client.DeleteIndex(descriptor)

这里制定了要删除的索引名称“db_student”,以下为更多删除用例:

//删除指定索引所在节点下的所有索引

var descriptor = new DeleteIndexDescriptor(“db_student”).AllIndices();

NEST Mapping

NEST提供了多种映射方法,这里介绍下通过Attribute自定义映射。

一、简单实现

1、定义业务需要的POCO,并指定需要的Attribute

[ElasticsearchType(Name = “student”)]

public class Student

{
[Nest.String(Index = FieldIndexOption.NotAnalyzed)]

public string Id { getset; }

[Nest.String(Analyzer = "standard")]

public string Name { getset; }

[Nest.String(Analyzer = "standard")]

public string Description { getset; }

public DateTime DateTime { getset; }
}

2、接着我们通过.AutoMap()来实现映射

var descriptor = new CreateIndexDescriptor(“db_student”)

.Settings(s => s.NumberOfShards(5).NumberOfReplicas(1))

.Mappings(ms => ms

    .Map<Student>(m => m.AutoMap())

);
client.CreateIndex(descriptor);

注意:通过.Properties()可以重写通过Attribute定义的映射

二、Attribute介绍

1、StringAttribute

2、NumberAttribute

3、BooleanAttribute

属性名 值类型 描述
Boost double 加权值,值越大得分越高
NullValue double 插入文档时,如果数据为NULL时的默认值

4、DateAttribute

属性名 值类型 描述
Boost double 加权值,值越大得分越高
NullValue string 插入文档时,如果数据为NULL时的默认值
Format string

5、ObjectAttribute

属性名 值类型 描述
type string/Type 构造函数参数,指定当前属性的类型T
Dynamic DynamicMapping

NEST Search

NEST提供了支持Lambda链式query DLS(领域特定语言)方式,以下是简单实现及各个query的简述。

一、简单实现

1、定义SearchDescriptor,方便项目中复杂业务的实现

var query = new Nest.SearchDescriptor<Models.ESObject>();

var result = client.Search(x => query)

2、检索title和content中包含key,并且作者不等于“wenli”的文档

query.Query(q =>

q.Bool(b =>

    b.Must(m =>

        m.MultiMatch(t => t.Fields(f => f.Field(obj => obj.Title).Field(obj => obj.Content)).Query(key))

    )

    .MustNot(m =>

        m.QueryString(t => t.Fields(f => f.Field(obj => obj.Author)).Query("wenli"))

    )

)
);

注意:

如果Elasticsearch使用默认分词,Title和Content的attribute为[Nest.String(Analyzer = “standard”)]

如果Elasticsearch使用的是IK分词,Title和Content的attribute为[Nest.String(Analyzer = “ikmaxword”)]或者[Nest.String(Analyzer = “ik_smart”)]

Author的attribute为[Nest.String(Index = FieldIndexOption.NotAnalyzed)],禁止使用分析器

3、过滤作者等于“wenli”的文档

query.PostFilter(x => x.Term(t => t.Field(obj => obj.Author).Value(“wenli”)));

4、过滤作者等于“wenli”或者等于“yswenli”的文档,匹配多个作者中间用空格隔开

query.PostFilter(x => x.QueryString(t => t.Fields(f => f.Field(obj => obj.Author)).Query(“wenli yswenli”)));

5、过滤数量在1~100之间的文档

query.PostFilter(x => x.Range(t => t.Field(obj => obj.Number).GreaterThanOrEquals(1).LessThanOrEquals(100)));

6、排序,按照得分倒叙排列

query.Sort(x => x.Field("_score", Nest.SortOrder.Descending));

7、定义高亮样式及字段

query.Highlight(h => h

.PreTags("<b>")

.PostTags("</b>")

.Fields(

    f => f.Field(obj => obj.Title),

    f => f.Field(obj => obj.Content),

    f => f.Field("_all")

)
);

8、拼装查询内容,整理数据,方便前段调用

var list = result.Hits.Select(c => new Models.ESObject()

{
Id = c.Source.Id,

Title = c.Highlights == null ? c.Source.Title : c.Highlights.Keys.Contains("title") ? string.Join("", c.Highlights["title"].Highlights) : c.Source.Title, //高亮显示的内容,一条记录中出现了几次

Content = c.Highlights == null ? c.Source.Content : c.Highlights.Keys.Contains("content") ? string.Join("", c.Highlights["content"].Highlights) : c.Source.Content, //高亮显示的内容,一条记录中出现了几次

Author = c.Source.Author,

Number = c.Source.Number,

IsDisplay = c.Source.IsDisplay,

Tags = c.Source.Tags,

Comments = c.Source.Comments,

DateTime = c.Source.DateTime,
})

二、query DSL介绍

elasticsearch.net Document

文档操作包含添加/更新文档、局部更新文档、删除文档及对应的批量操作文档方法。

一、添加/更新文档及批量操作

添加/更新单一文档

Client.Index(student);

批量添加/更新文档

var list = new List();

client.IndexMany(list);

二、局部更新单一文档及批量操作

局部更新单一文档

client.Update<Student, object>(“002”, upt => upt.Doc(new { Name = “wenli” }));

局部更新批量文档

var ids = new List() { “002” };

var bulkQuest = new BulkRequest() { Operations = new List() };

foreach (var v in ids)

{
var operation = new BulkUpdateOperation<Student, object>(v);

operation.Doc = new { Name = "wenli" };

bulkQuest.Operations.Add(operation);
}

var result = client.Bulk(bulkQuest);

三、删除文档及批量操作

删除单一文档

client.Delete(“001”);

批量删除文档

var ids = new List() { “001”, “002” };

var bulkQuest = new BulkRequest() { Operations = new List() };

foreach (var v in ids)

{
bulkQuest.Operations.Add(new BulkDeleteOperation<Student>(v));
}

var result = client.Bulk(bulkQuest);

posted @ 2022-08-26 14:18 青蛙學堂 阅读(156) | 评论 (0)编辑 收藏

2022年8月10日

ES C# 增删改



索引(添加)
var settings = new ConnectionSettings(new Uri("http://****:9200/")).DefaultFieldNameInferrer(name => name);
    var client = new ElasticClient(settings);

    //index、indexDocument:添加
    {
        var indexResponse1 = client.IndexDocument<People>(new People { Id = 4, Age = 4, Name = new Name { Firstname = "wj", Lastname = "f" } });
        var indexResponse2 = client.Index<People>(new People { Id = 4, Age = 4 }, i => i
            .Index("my_index")
            .Id(1)
            .Routing("1")
            .Refresh(Refresh.True));
        var indexResponse3 = client.IndexDocument<People>(new People { Id = 4, Age = 4, Name = new Name { Firstname = "wj", Lastname = "f" } });
    }
删除
    //delete、deleteByQuery:删除
    {
        //删除指定id文档
        client.Delete<ElasticUserModel>(3, d => d.Index("index13"));
        //删除指定条件的文档
        client.DeleteByQuery<ElasticUserModel>(d => d.Index("index13").Query(q => q.Term("UserID", 4)));
    }
修改
    //update:修改
    {
        //Update<object>只会修改指定的字段,如下只修改Name,其他字段不变。
        var updateResponse = client.Update<object>(2, u => u
                                    .Index("index13")
                                    .Doc(new
                                    {
                                        Name = "fan22"
                                    })
        );
    }
批量增删改
    //bulk:批量增删改
    {
        var bulkResponse = client.Bulk(b=>b
                                            .Update<object>(u=>u.Index("index13").Id(2).Doc(new { Name="fan222" }))
                                            .Delete<ElasticUserModel>(d=>d.Index("index13").Id(1))
                                            .Index<ElasticUserModel>(i=>i.Index("index13").Document(new ElasticUserModel {UserID=11,Name="fan11",Age=11,CreateTime=DateTime.Now,Handle="handle11" }))
                                       );
    }
version(乐观锁)
查询时获取文档版本号,修改时传版本号,如果相同就修改

//查询到版本号
 var result = _client.Search<TestModel5>(
    s =>
        s.Index(indexName)
            .Query(q => q.Term(tm => tm.Field(fd=>fd.State).Value(1))).Size(1)
            .Version()//结果中包含版本号
            );
foreach (var s in result.Hits)
{
    Console.WriteLine(s.Id + "  -  " + s.Version);
}

var path = new DocumentPath<TestModel5>(1);
//更新时带上版本号 如果服务端版本号与传入的版本好相同才能更新成功
var response = _client.Update(path, (p) => p
    .Index(indexName)
    .Type(typeof(TestModel5))
    .Version(2)//限制es中版本号为2时才能成功
    .Doc(new TestModel5() { Name = "测测测" + DateTime.Now })
    );




posted @ 2022-08-10 11:20 青蛙學堂 阅读(400) | 评论 (0)编辑 收藏

2022年7月25日

bat 关闭win10更新

BlockWin10AU 是一款轻量的开源 Windows 自动更新管理工具。
只需要下载一段 7 KB 的 .bat 批处理文件,

右键以管理员身份运行 “Block WAU[vxia.net].bat” 即可禁止Windows10的自动更新功能
由于涉及到系统关键位置,记得先关闭类似360的安全软件

注:但正因为它如此简单,之后想恢复更新时的步骤也会比较麻烦。
开源地址(感谢分享者开源):https://github.com/f1tz/BlockWin10AU


相关代码:


@echo off
title BLOCK Win10AU!
mode con cols=70 lines=15
color 1f
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo ※ 禁用Windows10自动更新 ※
echo ※ ※
echo ※ Block Windows X Automatic Update By F1tz ※
echo ※ ※
echo ※ 请先退出360等安全管家! ※
echo ※ 请确认右键选择“以管理员身份运行”此脚本 ※
echo ※ ※
echo ※ Please quit your Anti-Malware software first! ※
echo ※ Make sure Right-click on script select "Run as administrator". ※
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo.
pause

echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo ※ ※
echo ※ 结束进程 / Stopping Process ※
echo ※ ※
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

taskkill /im Windows10UpgraderApp.exe 2>nul
del /f /q "%USERPROFILE%\Desktop\微软 Windows 10 易升.lnk" 2>nul
del /f /q "%USERPROFILE%\Desktop\Windows 10 Update Assistant.lnk" 2>nul

echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo ※ ※
echo ※ 添加防火墙规则 / Adding firewall rules ※
echo ※ ※
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

netsh advfirewall firewall add rule name="Block_Windows10UpgraderApp" dir=in program="%SYSTEMDRIVE%\Windows10Upgrade\Windows10UpgraderApp.exe" action=block
netsh advfirewall firewall add rule name="Block_WinREBootApp32" dir=in program="%SYSTEMDRIVE%\Windows10Upgrade\WinREBootApp32.exe" action=block
netsh advfirewall firewall add rule name="Block_WinREBootApp64" dir=in program="%SYSTEMDRIVE%\Windows10Upgrade\WinREBootApp64.exe" action=block
netsh advfirewall firewall add rule name="Block_bootsect" dir=in program="%SYSTEMDRIVE%\Windows10Upgrade\bootsect.exe" action=block
netsh advfirewall firewall add rule name="Block_DW20" dir=in program="%SYSTEMDRIVE%\Windows10Upgrade\DW20.EXE" action=block
netsh advfirewall firewall add rule name="Block_DWTRIG20" dir=in program="%SYSTEMDRIVE%\Windows10Upgrade\DWTRIG20.EXE" action=block
netsh advfirewall firewall add rule name="Block_GatherOSState" dir=in program="%SYSTEMDRIVE%\Windows10Upgrade\GatherOSState.EXE" action=block
netsh advfirewall firewall add rule name="Block_GetCurrentRollback" dir=in program="%SYSTEMDRIVE%\Windows10Upgrade\GetCurrentRollback.EXE" action=block
netsh advfirewall firewall add rule name="Block_HttpHelper" dir=in program="%SYSTEMDRIVE%\Windows10Upgrade\HttpHelper.exe" action=block
netsh advfirewall firewall add rule name="Block_UpdateAssistant" dir=in program="%SYSTEMROOT%\UpdateAssistant\UpdateAssistant.exe" action=block
netsh advfirewall firewall add rule name="Block_UpdateAssistantCheck" dir=in program="%SYSTEMROOT%\UpdateAssistant\UpdateAssistantCheck.exe" action=block
netsh advfirewall firewall add rule name="Block_Windows10Upgrade" dir=in program="%SYSTEMROOT%\UpdateAssistant\Windows10Upgrade.exe" action=block
netsh advfirewall firewall add rule name="Block_UpdateAssistantV2" dir=in program="%SYSTEMROOT%\UpdateAssistantV2\UpdateAssistant.exe" action=block
netsh advfirewall firewall add rule name="Block_UpdateAssistantCheckV2" dir=in program="%SYSTEMROOT%\UpdateAssistantV2\UpdateAssistantCheck.exe" action=block
netsh advfirewall firewall add rule name="Block_Windows10UpgradeV2" dir=in program="%SYSTEMROOT%\UpdateAssistantV2\Windows10Upgrade.exe" action=block

echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo ※ ※
echo ※ 设置ACL / Configurating ACL ※
echo ※ ※
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

echo y|cacls C:\Windows\UpdateAssistant\*.exe /t /p everyone:n 2>nul
echo y|cacls C:\Windows10Upgrade\*.exe /t /p everyone:n 2>nul
echo.
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo ※ ※
echo ※ 停止Windows Update服务 / Disable Windows Update ※
echo ※ ※
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

net stop wuauserv
sc config wuauserv start= disabled

echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo ※ ※
echo ※ 删除计划任务 / Delete task ※
echo ※ ※
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

schtasks /delete /TN "\Microsoft\Windows\UpdateOrchestrator\UpdateAssistant" /f 2>nul
schtasks /delete /TN "\Microsoft\Windows\UpdateOrchestrator\UpdateAssistantAllUsersRun" /f 2>nul
schtasks /delete /TN "\Microsoft\Windows\UpdateOrchestrator\UpdateAssistantCalendarRun" /f 2>nul
schtasks /delete /TN "\Microsoft\Windows\UpdateOrchestrator\UpdateAssistantWakeupRun" /f 2>nul

echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo ※ ※
echo ※ 设置注册表 / Editing Registry ※
echo ※ ※
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

del /q /f %SYSTEMDRIVE%\NAU.reg 2>nul
echo Windows Registry Editor Version 5.00 >> %SYSTEMDRIVE%\NAU.reg
echo.>> %SYSTEMDRIVE%\NAU.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate]>> %SYSTEMDRIVE%\NAU.reg
echo "DoNotConnectToWindowsUpdateInternetLocations"=dword:00000001 >> %SYSTEMDRIVE%\NAU.reg
echo.>> %SYSTEMDRIVE%\NAU.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]>> %SYSTEMDRIVE%\NAU.reg
echo "NoAutoUpdate"=dword:00000001>> %SYSTEMDRIVE%\NAU.reg
REG IMPORT %SYSTEMDRIVE%\NAU.reg
del /q /f %SYSTEMDRIVE%\NAU.reg 2>nul

echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo ※ ※
echo ※ 任务结束 / All Done! ※
echo ※ ※
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
pause

posted @ 2022-07-25 08:28 青蛙學堂 阅读(1179) | 评论 (0)编辑 收藏

2022年7月18日

js 页面加载时间

在页面Head部分加入初始时间
代码如下:

<script language=javascript>
var t1 = new Date().getTime();
</script>

在Body中加入
代码如下:

<SCRIPT LANGUAGE="JavaScript">
window.onload = function()
{
document.getElementById("TimeShow").innerHTML = "加载本页耗时 "+ (new Date().getTime()-t1) +" 毫秒";
}
</SCRIPT>

posted @ 2022-07-18 16:33 青蛙學堂 阅读(389) | 评论 (0)编辑 收藏

2022年7月14日

ES SEARCH 数据限制

一般我们使用es的可视化工具来操作es
我们进入kibana的页面通过
http://ip:5601/app/kibana
在设置中找到索引管理
找到我们需要修改的索引,选择Edit settings,
添加"index.max_result_window": "1000000",
最后save就可以了

posted @ 2022-07-14 11:09 青蛙學堂 阅读(203) | 评论 (0)编辑 收藏

2022年7月11日

.net core 连sqlserver


.net core使用EF core连接mssqlserver数据库
一,打开控制台
二,输入以下代码
1.Install-Package Microsoft.EntityFrameworkCore

2.Install-Package Microsoft.EntityFrameworkCore.SqlServer

3.Install-Package Microsoft.EntityFrameworkCore.Tools

4.Scaffold-DbContext “Server=.;Database=EFCore;Trusted_Connection=True;User ID=用户名;Password=密码;” Microsoft.EntityFrameworkCore.SqlServer -OutputDir 要存放实体的文件夹名称

 using System.Linq;

posted @ 2022-07-11 19:56 青蛙學堂 阅读(776) | 评论 (0)编辑 收藏

2022年7月1日

ES ip访问

在虚拟机安装Elasticsearch后,浏览器可以正常访问9200端口,但是在宿主机上无法通过虚拟机地址加9200端口进入,找了很多资料,说的是修改配置文件elasticsearch.yml,加上network.host: 0.0.0.0,加上这条配置后es无法启动,最后查到需要加上如下四条配置,只加一条无法启动。

network.host: 0.0.0.0 http.port: 9200 transport.host: localhost transport.tcp.port: 9300

posted @ 2022-07-01 14:33 青蛙學堂 阅读(324) | 评论 (0)编辑 收藏

2022年6月7日

c# Encoding.Unicode.GetBytes 转码取字符串

  private string GetUnicodeString(byte[] buffer)
        {
            int size = 0;
            if (buffer != null && (size = buffer.Length) >= 2)
            {
                size -= size % 2; // sizeof(wchar_t)
                char[] value = new char[size / 2];
                for (int i = 0; i < size; i += 2)
                    value[i / 2] = (char)((buffer[i + 1] << 8) + buffer[i]);
                return new string(value);
            }
            return string.Empty;
        }
        public IActionResult Index()
        {

            

            List<byte> list = new List<byte> { 0, 8, 0, 0, 6, 1, 0, 0, 0, 8 };
            byte[] bytes = Encoding.Unicode.GetBytes("MSDTC");
            list.AddRange(BitConverter.GetBytes(bytes.Length));
            list.AddRange(bytes);
           
            byte[] rs = list.ToArray();
            //"000800000601000000080A0000004D005300440054004300"

            List<byte> nlist = new List<byte>();
            nlist.AddRange(rs);
            for(int i = 13; i>=0;i--)
            {
                nlist.RemoveAt(i);
            }
            rs = nlist.ToArray();
            var num = rs.Count();

            var hex = Convert.ToHexString(bytes);
            var hex1 = Convert.ToHexString(rs);
            
            var abc = Encoding.UTF8.GetString(bytes);
            var abc2 = Encoding.UTF8.GetString(rs);
            var ddd = abc;
            //"4D005300440054004300"
             
            hex = GetUnicodeString(bytes);
          var   hex2= GetUnicodeString(rs);
            string aa = hex;
            string bb = aa;
            return View();
        }

posted @ 2022-06-07 16:34 青蛙學堂 阅读(901) | 评论 (1)编辑 收藏

2022年5月17日

python爬虫BeautifulSoup和urllib


import urllib,re
import urllib.request
from bs4 import BeautifulSoup
#file = open('./aatest.html', 'rb')



root = 'https://health.china.com/toutiao/13003338/20220517/42305957.html'

bs = BeautifulSoup(urllib.request.urlopen(root+u'/').read())

#file = open('https://www.runoob.com/', 'rb')
#
html = file.read()
#
bs = BeautifulSoup(html,"html.parser") # 缩进格式


#print(bs.prettify()) # 格式化html结构
print(bs.title) # 获取title标签的名称
#
print(bs.title.name) # 获取title的name
#
print(bs.title.string) # 获取head标签的所有内容
print(bs.head)
print(bs.p)
#print(bs.div)  # 获取第一个div标签中的所有内容
#
print(bs.div["id"]) # 获取第一个div标签的id的值
#
print(bs.a)
#
print(bs.find_all("a")) # 获取所有的a标签
#
print(bs.find(id="u1")) # 获取id="u1"
for item in bs.find_all("a"):
    s = item.get("href")
    if s[0:2]!="//" :
        print(s)
        #pass
    else:
        #print(s[2:])
        #print("https:"+s)
        pass
#    print(item.get("href")) # 获取所有的a标签,并遍历打印a标签中的href的值
#
for item in bs.find_all("a"):
#
    print(item.get_text())
#
for item in bs.find_all("p"):
#
    print(item.get_text())
for item in bs.find_all(name='div',attrs={"class":"article_notice"}):
    print(item.get_text())
    print(item)
    print(item.select('p'))

child = bs.find("div",{"id":"chan_breadcrumbs"})
print(child)
child2 = bs.find("div",class_="article_notice")
print(child2)
#[0].get_text()
print(bs.select('.article_notice'))  # 类选择器
print(bs.select('#chan_breadcrumbs'))  # id选择器
#
print(bs.select('p'))
#
print(bs.select('a'))

posted @ 2022-05-17 16:00 青蛙學堂 阅读(106) | 评论 (0)编辑 收藏

仅列出标题  下一页
<2020年10月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿(8)

随笔分类

随笔档案

收藏夹

青蛙学堂

最新评论

阅读排行榜

评论排行榜