JS实现本地图片预览的两种方式_js图片预览-CSDN博客

mikel阅读(243)

来源: JS实现本地图片预览的两种方式_js图片预览-CSDN博客

方式一:

第一种是用window.URL.createObjectURl方法对选择的图片数据(可以勉强理解为input的value)生成一个blob对象路径。

<template>
<div>
<input multiple type=”file” id=”file” @change=”handleChange”>
<div id=”imagebox”></div>
</div>
</template>

<script>
export default {
data() {
return {};
},
methods: {
handleChange() {
var file = document.getElementById(“file”).files[0]; // 获取input上传的图片数据;
var img = new Image();
var url = window.URL.createObjectURL(file); // 得到bolb对象路径,可当成普通的文件路径一样使用,赋值给src;
img.src = url;
document.getElementById(“imagebox”).appendChild(img);
},
},
};
</script>
方式二:

第二种是用获取 FileReader读取器。

用FileRader对像读取文件可分为四步;1、创建FileReader对像;2、调用readAsDataURL方法读取文件;3、调用onload事件监听,我们一需要拿到完整的数据,但我们又不知道文件何时读完,所以需要第三步监听;4、通过FileRader对像r的result属性拿到读取结果。

<template>
<div>
<input multiple type=”file” id=”file” @change=”handleChange”>
<div id=”imagebox”></div>
</div>
</template>

<script>
export default {
data() {
return {};
},
methods: {
handleChange() {
var file = document.getElementById(“file”).files[0]; // 获取input上传的图片数据;
var read = new FileReader(); // 创建FileReader对像;
read.readAsDataURL(file); // 调用readAsDataURL方法读取文件;
read.onload = function() {
var url = read.result; // 拿到读取结果;
var img = new Image();
img.src = url;
document.getElementById(“imagebox”).appendChild(img);
};
},
},
};
</script>
————————————————
版权声明:本文为CSDN博主「雪花女神」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46279019/article/details/119417948

C#中使用设置(Settings.settings) Properties.Settings.Default .(配置文件相当重要) - newlives - 博客园

mikel阅读(242)

来源: C#中使用设置(Settings.settings) Properties.Settings.Default .(配置文件相当重要) – newlives – 博客园

 

在设计时创建新设置的步骤

在“Solution Explorer”(解决方案资源管理器)中,展开项目的“Properties”(属性)节点。

在“Solution Explorer”(解决方案资源管理器)中,双击要在其中添加新设置的 .settings 文件。此文件的默认名称是 Settings.settings。

 

 

为设置键入新值,然后保存该文件。

在运行时使用设置

 

运行时应用程序可以通过代码使用设置。具有应用程序作用域的设置值能够以只读方式进行访问,而用户作用域设置的值可以进行读写。在 C# 中可以通过 Properties 命名空间使用设置。

在运行时读取设置

可在运行时使用 Properties 命名空间读取应用程序作用域及用户作用域设置。Properties 命名空间通过Properties.Settings.Default 对象公开了项目的所有默认设置。编写使用设置的代码时,所有设置都会出现在 IntelliSense 中并且被强类型化。因此,举例来说,如果设置的类型为 System.Drawing.Color,则无需先对其进行强制类型转换即可使用该设置,如下例所示:

this.BackColor = Properties.Settings.Default.myColor;

在运行时保存用户设置

应用程序作用域设置是只读的,只能在设计时或通过在应用程序会话之间修改 <AssemblyName>.exe.config 文件来进行更改。然而,用户作用域设置却可以在运行时进行写入,就像更改任何属性值那样。新值会在应用程序会话持续期间一直保持下去。可以通过调用 Settings.Save 方法来保持在应用程序会话之间对用户设置所做的更改。这些设置保存在 User.config 文件中。

在运行时写入和保持用户设置的步骤

访问用户设置并为其分配新值,如下例所示:

Properties.Settings.Default.myColor = Color.AliceBlue;
如果要保持在应用程序会话之间对用户设置所做的更改,请调用 Save 方法,如以下代码所示:

Properties.Settings.Default.Save();

 

 

 

=========================================================================================================================================================================================================================================================================================================================================================================================================

 

 

1、定义

 

在Settings.settings文件中定义配置字段。把作用范围定义为:User则运行时可更改,Applicatiion则运行时不可更改。可以使用数据网格视图,很方便;

2、读取配置值

text1.text = Properties.Settings.Default.FieldName;
//FieldName是你定义的字段

3、修改和保存配置

Properties.Settings.Default.FieldName = “server”;

Properties.Settings.Default.Save();//使用Save方法保存更改

4、也可以自己创建

创建一个配置类FtpSetting。在WinForm应用程序里,一切配置类都得继承自 ApplicationSettingsBase 类。

sealed class FtpSettings : ApplicationSettingsBase

{
[UserScopedSetting]
[DefaultSettingValue(“127.0.0.1”)]
public string Server
{
get { return (string)this[“Server”]; }
set { this[“Server”] = value; }
}
[UserScopedSetting]
[DefaultSettingValue(“21”)]
public int Port
{
get { return (int)this[“Port”]; }
set { this[“Port”] = value; }
}
}

使用上述配置类,可以用:

private void button2_Click(object sender, EventArgs e)
{
FtpSettings ftp = new FtpSettings();
string msg = ftp.Server + “:” + ftp.Port.ToString();
MessageBox.Show(msg);
}

我们在使用上述FtpSetting 配置时,当然要先进行赋值保存,然后再使用,后面再修改,再保存,再使用。
private void button2_Click(object sender, EventArgs e)
{
FtpSettings ftp = new FtpSettings();
ftp.Server = “ftp.test.com”;
ftp.Port = 8021;
ftp.Save();
ftp.Reload();
string msg = ftp.Server + “:” + ftp.Port.ToString();
MessageBox.Show(msg);
}
嗯。已经Save了,你可能会在应用程序文件夹里找不到它到底保存到哪里去了。由于我们是用UserScope的,所以其实该配置信息是保存到了你的Windows的个人文件夹里去了。比如我的就是 C:\Documents and Settings\brooks\Local Settings\Application Data\TestWinForm目录了。

 

 

=========================================================================================================================================================================================================================================================================================================================================================================================================

 

 

例:

using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Configuration;

namespace 设置文件读写测试
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Properties.Settings.Default.name = this.textBox1.Text;
Properties.Settings.Default.Save();
this.label1.Text = Properties.Settings.Default.name;
}

private void button2_Click(object sender, EventArgs e)
{
this.label1.Text = Properties.Settings.Default.name;
}

private void button3_Click(object sender, EventArgs e)
{
FtpSettings ftp = new FtpSettings();
string msg = ftp.Server + “:” + ftp.Port.ToString();
this.label2.Text = msg;
}

private void button4_Click(object sender, EventArgs e)
{
FtpSettings ftp = new FtpSettings();
ftp.Server = this.textBox2.Text ;
ftp.Port = Convert.ToInt32(this.textBox3.Text);
ftp.Save();
//ftp.Reload();
string msg = ftp.Server + “:” + ftp.Port.ToString();
this.label2.Text = msg;
}
}

sealed class FtpSettings : ApplicationSettingsBase
{
[UserScopedSetting]
[DefaultSettingValue(“127.0.0.1”)]
public string Server
{
get { return (string)this[“Server”]; }
set { this[“Server”] = value; }
}
[UserScopedSetting]
[DefaultSettingValue(“21”)]
public int Port
{
get { return (int)this[“Port”]; }
set { this[“Port”] = value; }
}
}
}

SQL Server查看库、表占用空间大小 - 郭大侠1 - 博客园

mikel阅读(318)

来源: SQL Server查看库、表占用空间大小 – 郭大侠1 – 博客园

查询数据文件与日志文件占用情况,查看数据大小,查看库大小

1. 查看数据文件占用(权限要求较大)

DBCC showfilestats

2. 查看日志文件占用

dbcc sqlperf(logspace) 

复制代码
USE master
go
--简易版
SELECT 
Name,
physical_name,
Size/128.0 AS [Size(MB)],
FILEPROPERTY(Name,'SpaceUsed')/128.0 AS [SpaceUsed(MB)],
STR(FILEPROPERTY(Name,'SpaceUsed')*1.0/Size*100,6,3) AS [SpaceUsed(%)] 
FROM master.sys.database_files
复制代码
复制代码
--详细版
SELECT a.name [文件名称] ,cast(a.[size]*1.0/128 as decimal(12,1)) AS [文件设置大小(MB)] ,
    CAST( fileproperty(s.name,'SpaceUsed')/(8*16.0) AS DECIMAL(12,1)) AS [文件所占空间(MB)] ,
    CAST( (fileproperty(s.name,'SpaceUsed')/(8*16.0))/(s.size/(8*16.0))*100.0 AS DECIMAL(12,1)) AS [所占空间率%] ,
    CASE WHEN A.growth =0 THEN '文件大小固定,不会增长' ELSE '文件将自动增长' end [增长模式] ,CASE WHEN A.growth > 0 AND is_percent_growth = 0 
    THEN '增量为固定大小' WHEN A.growth > 0 AND is_percent_growth = 1 THEN '增量将用整数百分比表示' ELSE '文件大小固定,不会增长' END AS [增量模式] ,
    CASE WHEN A.growth > 0 AND is_percent_growth = 0 THEN cast(cast(a.growth*1.0/128as decimal(12,0)) AS VARCHAR)+'MB' 
    WHEN A.growth > 0 AND is_percent_growth = 1 THEN cast(cast(a.growth AS decimal(12,0)) AS VARCHAR)+'%' ELSE '文件大小固定,不会增长' end AS [增长值(%或MB)] ,
    a.physical_name AS [文件所在目录] ,a.type_desc AS [文件类型] 
FROM sys.database_files a 
INNER JOIN sys.sysfiles AS s  ON a.[file_id]=s.fileid 
LEFT JOIN sys.dm_db_file_space_usage b ON a.[file_id]=b.[file_id] ORDER BY a.[type]
复制代码

 

转自:https://www.cnblogs.com/nikyxxx/archive/2012/10/08/2715423.html

SQL server查看所有表大小、所占空间

基于T-SQL

复制代码
SELECT 
   db_name() as DbName,
    t.NAME AS TableName,
    s.Name AS SchemaName,
    p.rows AS RowCounts,
    SUM(a.total_pages) * 8 AS TotalSpaceKB, 
    CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS 总共占用空间MB,
    SUM(a.used_pages) * 8 AS UsedSpaceKB, 
    CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB, 
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
    CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
FROM 
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN 
    sys.schemas s ON t.schema_id = s.schema_id
WHERE 
    t.NAME NOT LIKE 'dt%' 
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID > 0
GROUP BY 
    t.Name, s.Name, p.Rows
ORDER BY 
    总共占用空间MB desc
复制代码

 

基于存储过程(exec sp_spaceused)

–主要原理:
exec sp_spaceused ‘表名’ –取得表占用空間
exec sp_spaceused ”–數據庫所有空間

复制代码
复制代码
create table #Data(name varchar(100),row varchar(100),reserved varchar(100),data varchar(100),index_size varchar(100),unused varchar(100)) 
 
declare @name varchar(100) 
declare cur cursor  for 
    select name from sysobjects where xtype='u' order by name 
open cur 
fetch next from cur into @name 
while @@fetch_status=0 
begin 
    insert into #data 
    exec sp_spaceused   @name 
    print @name 
 
    fetch next from cur into @name 
end 
close cur 
deallocate cur 
 
create table #DataNew(name varchar(100),row int,reserved int,data int,index_size int,unused int) 
 
insert into #dataNew 
select name,convert(int,row) as row,convert(int,replace(reserved,'KB','')) as reserved,convert(int,replace(data,'KB','')) as data, 
convert(int,replace(index_size,'KB','')) as index_size,convert(int,replace(unused,'KB','')) as unused from #data  
 
select * from #dataNew order by data desc
复制代码
复制代码

 

 

查看索引大小

复制代码
--查看索引大小
如果您想要表的每个索引的大小,请使用以下两个查询中的一个:

SELECT
    i.name                  AS IndexName,
    SUM(s.used_page_count) * 8   AS IndexSizeKB
FROM sys.dm_db_partition_stats  AS s 
JOIN sys.indexes                AS i
ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
WHERE s.[object_id] = object_id('dbo.TableName')
GROUP BY i.name
ORDER BY i.name

---第2种方法
SELECT
    i.name              AS IndexName,
    SUM(page_count * 8) AS IndexSizeKB
FROM sys.dm_db_index_physical_stats(
    db_id(), object_id('dbo.TableName'), NULL, NULL, 'DETAILED') AS s
JOIN sys.indexes AS i
ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
GROUP BY i.name
ORDER BY i.name
结果通常略有不同,但在1%之内。
复制代码

 

 查看堆表及数据量超过10W行的

复制代码
select * from (
SELECT tables.NAME, 
       (SELECT rows 
        FROM   sys.partitions 
        WHERE  object_id = tables.object_id 
               AND index_id = 0 -- 0 is for heap 
               -- 1 is for clustered index 
                And rows >=100000
       )AS numberofrows 
FROM   db_tank.sys.tables tables 
WHERE  Objectproperty(tables.object_id, N'TableHasClustIndex') = 0
)t where numberofrows is not null
复制代码

 

 

查看表数据行数

但这种办法不是实时的,是SQL server定时做的统计操作,执行下面代码可进一步精确

DBCC UpdateUSAGE(DatabaseName,[TABLENAME])WITH ROW_COUNTS

复制代码
SELECT   a.name, b.rows
FROM      sysobjects AS a INNER JOIN
                 sysindexes AS b ON a.id = b.id
WHERE   (a.type = 'u') AND (b.indid IN (0, 1))
ORDER BY b.rows DESC

复制代码

SSMS 实用小技巧_ssms 格式化sql_郑小晨的博客-CSDN博客

mikel阅读(248)

来源: SSMS 实用小技巧_ssms 格式化sql_郑小晨的博客-CSDN博客

一、怎么看Table在哪被用到
选中表→右键→查看依赖关系(V),就可以看到有哪些地方用到这个表。

 

二、SQL格式化
SQL Pretty Printer:SSMS的SQL格式化小插件,对于那些很长的SP,真的挺好用。

下载链接:https://www.dpriver.com/dlaction.php

下载下来后安装,重启SSMS就可以用了。

 

点击SQL Beautifier

1、选择Format All SQL 格式化当前文档所有SQL语句。

2、选择Format Selected SQL格式化选中的SQL语句。

简单好用。。。

最重要的是它还可以设置SQL的格式

SQL Beautifier→SQL Formatter Options

 

三、执行计划
SQL优化一个很好用的东西,可以看到执行耗时,是否有走索引啊。。。

对于懒得去记那么多东西的人来说,超友好

 

四、查看最近执行的SQL
选择 当前连接→活动和监视器(M)

选择其中一条,右键→编辑查询文本

就可以看到执行的SQL语句了

————————————————
版权声明:本文为CSDN博主「郑小晨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012835032/article/details/118994774

IIS 错误解决:当前标识没有对 Temporary ASP.NET Files 的写访问权限 - 独立观察员 - 博客园

mikel阅读(257)

来源: IIS 错误解决:当前标识没有对 Temporary ASP.NET Files 的写访问权限 – 独立观察员 – 博客园

完整错误:

当前标识 (IIS APPPOOL\.NET v4.5) 没有对”C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files” 的写访问权限

 

其中的标识 “.NET v4.5” 是指你的应用程序池,所以每个人可能不一样;后面的路径也可能不一样,比如不是 “Framework” 而是 “Framework64” 之类的。

 

那么这个问题如何解决呢?我们需要使用 Windows PowerShell 来执行 “ASP.NET 注册选项”,具体地说,应该是使用 Aspnet_regiis.exe 程序的相关命令来” 为指定的用户或用户组授予权限,使其可以访问 IIS 元数据库和 ASP.NET 使用的其他目录”。我用网上(https://blog.csdn.net/qq_36981814/article/details/84997624 )提供的方法,在 PowerShell 中输入如下命令:

 

这个其实有点问题,网上的说法是出现这个界面就成功了,其实并不是,出现这种界面一般是命令有误,相关程序输出了帮助信息。不过也好,我们可以看到我们需要的 “-ga” 命令选项,右边是对其的解释 —— 为指定的用户或用户组授予权限,使其可以访问 IIS 元数据库和 ASP.NET 使用的其他目录。

 

那么正确的命令是什么呢?应该将用户或用户组用单引号引起来,如下(注意按实际情况修改):

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Aspnet_regiis.exe -ga ‘IIS APPPOOL\.NET v4.5’

 

还有要用管理员权限的 PowerShell,不然会有如下错误:

 

所以,我们右键 win10 开始菜单,点击 “Windows PowerShell (管理员)(A)”:

 

然后输入命令并回车,即可得到正确结果,问题解决:

vs出现错误,无法启动 Visual Studio。StreamJsonRpc.ConnectionLostException:在请求完成之前,与远程的JSON-RPC连接已丢失_客服专区-CSDN问答

mikel阅读(585)

来源: vs出现错误,无法启动 Visual Studio。StreamJsonRpc.ConnectionLostException:在请求完成之前,与远程的JSON-RPC连接已丢失_客服专区-CSDN问答

这个错误通常是由于Visual Studio的某些组件损坏或缺失导致的。你可以尝试以下方法来解决这个问题:

重置Visual Studio设置:在Visual Studio中,选择“工具”>“导入和导出设置”>“重置所有设置”,然后重新启动Visual Studio。
修复Visual Studio:在Visual Studio安装器中,选择“修改”,然后选择“修复”。
重新安装Visual Studio:如果以上两种方法都无法解决问题,则可以尝试重新安装Visual Studio。
此外,你可以尝试使用Developer Command Prompt for VS2019打开Visual Studio。如果这种方法也不起作用,你可以尝试使用以下命令打开Visual Studio:devenv /nosplash。

🔥🔥微服务架构:软件开发的革命还是短暂潮流? - 努力的小雨 - 博客园

mikel阅读(265)

来源: 🔥🔥微服务架构:软件开发的革命还是短暂潮流? – 努力的小雨 – 博客园

引言

从今天开始,我们将深入探讨服务网格(Service Mesh)这个领域的知识。尽管在我们的工作中可能还没有广泛应用,但服务网格确实是一种趋势。如果你还没有听说过这个概念,我希望你能够跟随我的步伐,一起了解这个特殊而重要的技术。首先,我将为大家介绍微服务的发展历程,从过去到现在,逐渐引入服务网格的概念,帮助大家全面理解这个领域的重要性。

微服务架构的特点

围绕业务构建团队

image

随着技术的不断发展,从最初的单体架构演变为现在的微服务架构。在单体架构中,页面、服务模块和数据库连接操作等都集中在一个系统中,尽管现在一些先进的公司已经将UI层剥离出来,但整体架构仍然相对单一。而微服务架构则将各个模块拆分成独立的微服务,每个微服务都有专门的开发人员负责,使得团队可以根据业务需求,组成几个人的小团队来开发单独的模块。这样的架构特点带来了更高的灵活性和扩展性,使得团队可以更加专注于各自负责的模块,提高开发效率和业务的可维护性。

去中心化的数据管理

image

去中心化的数据管理是微服务架构的一个重要特点。在传统的单体应用中,所有的业务数据都集中在一个数据库中。而在微服务架构中,每个微服务都可以拥有自己独立的数据库,负责维护自身所需的业务数据。这种去中心化的数据管理方式带来了一些优势。它可以提升数据库性能、增强系统的灵活性和可扩展性,同时也提高了系统的可维护性。这里我们不详细赘述了。

微服务架构的优势

微服务架构在团队层面和产品层面都带来了许多优势。

在团队层面,微服务架构鼓励团队内部的内聚性。每个微服务都专注于处理特定的业务功能,团队成员可以更加专注于自己负责的微服务开发和维护。这种独立开发业务的方式,使得团队成员可以更好地理解和掌握自己负责的业务领域,提高了开发效率和质量。

此外,由于每个微服务都是独立的,彼此之间没有直接的依赖关系。这意味着团队可以并行开发不同的微服务,不受其他团队的影响。团队成员之间的沟通和协作也更加简单和高效。

在产品层面,微服务架构的一个重要特点是服务的独立性。每个微服务都是一个独立的服务单元,可以独立部署和运行。这意味着当需要更新或修复某个微服务时,只需要针对该微服务进行部署,而不会影响其他微服务的正常运行。这样可以减少系统的停机时间和风险,提高了系统的可用性和容错性。

此外,由于每个微服务彼此独立,系统可以更加灵活地进行扩展。当某个微服务面临高并发或大数据量的情况时,可以单独对该微服务进行水平扩展,而不需要对整个系统进行扩展。这样可以避免资源的浪费,并且能够更好地应对系统的负载压力。

但是微服务是软件开发的最好选择吗?

微服务面临的问题

image

微服务架构中,服务间的网络调用是一个常见且容易出现问题的挑战。相较于单体架构,在微服务架构中,由于服务的细粒度拆分,服务调用链变得更加复杂。这意味着每个服务可能需要与其他多个服务进行通信,而每个网络调用都有可能引发潜在的故障或延迟。

为何网络通信是微服务的痛点

在微服务架构中,网络通信是一个常见的痛点,这是因为分布式计算中存在着一些被称为”分布式计算的8个谬论”(Fallacies of Distributed Computing)的观念误区。

网络是可靠的:实际上网络是容易受到各种因素干扰和故障的,如硬件故障、网络拥塞等,这可能导致服务之间的通信中断或延迟。

带宽是无限的:实际上网络带宽是有限的资源,当服务之间的数据传输量增加时,带宽可能变得紧张,导致网络通信的性能下降。

网络拓扑从不改变:实际上在分布式系统中,网络拓扑可能会因为硬件故障、网络设备调整等原因而发生变化,这会对服务之间的通信产生影响。

传输成本是0:实际上进行网络通信是需要消耗资源的,如网络带宽、计算能力等,因此进行大量的网络通信可能会导致成本增加。

网络延迟是0:实际上网络通信中存在着传输延迟,这取决于网络拓扑、网络负载、数据包大小等因素,这会对服务之间的通信性能产生影响。

还有一些观念误区,如网络是安全的、只有一个管理员、网络是同构的。

如何管理和控制网络间的通信

在微服务架构中,管理和控制网络间的通信是至关重要的。以下是一些常用的方法和策略:

  1. 服务注册/发现:通过服务注册和发现机制,服务可以在网络中注册自己的信息,并由其他服务发现和使用。这样可以实现动态的服务发现和调用,减少了对服务之间硬编码的依赖。
  2. 路由、流量转移:通过使用路由和流量转移机制,可以将请求从一个服务路由到另一个服务。这对于实现负载均衡、故障转移和容错是非常重要的。例如,可以使用负载均衡器来将请求分发到多个实例,以提高系统的性能和可靠性。
  3. 弹性能力(熔断、超时、重试):在网络通信中,存在各种故障和不可靠的情况。为了提高系统的弹性和容错能力,可以实现熔断、超时和重试机制。例如,当一个服务不可用或响应时间过长时,可以暂时关闭对该服务的请求,以避免系统的级联故障。
  4. 安全:网络通信中的安全性是非常重要的。可以使用各种安全措施,如身份验证、授权和加密,来保护服务之间的通信和数据的安全性。例如,可以使用HTTPS来加密网络通信,以防止信息被窃听或篡改。
  5. 可观测性:为了更好地管理和监控网络通信,可以引入可观测性的机制。这包括日志记录、指标收集和分析、分布式追踪等。通过收集和分析这些数据,可以获得对网络通信的实时和历史视图,以便进行故障排查、性能优化和系统监控。

如果你和我一样是以Java为主要开发语言,那么对于这些策略可能并不陌生,因为我们有一些成熟的开源框架可以用来解决这些问题。然而,问题来了,如果我们的系统不仅限于纯Java系统,还包含其他的业务系统,那么我们应该如何应对呢?

总结

在本文中,我们详细讲解了从单体架构到微服务的演变过程,并在阐述微服务的优势时也指出了微服务所面临的问题。接下来的章节中,我将带领大家深入了解服务网格是如何解决这些问题的。我们将探讨服务网格的核心概念、架构设计以及它如何提供弹性、可观察性和安全性等关键特性。

支持C#的开源免费、新手友好的数据结构与算法入门教程 - 追逐时光者 - 博客园

mikel阅读(284)

来源: 支持C#的开源免费、新手友好的数据结构与算法入门教程 – 追逐时光者 – 博客园

前言

前段时间完成了C#经典十大排序算法(完结)然后有很多小伙伴问想要系统化的学习数据结构和算法,不知道该怎么入门,有无好的教程推荐的。今天给大家推荐一个支持C#的开源免费、新手友好的数据结构与算法入门教程:Hello算法。

Hello算法介绍

Hello算法一个开源免费、新手友好的数据结构与算法入门教程。

  • 全书采用动画图解,内容清晰易懂、学习曲线平滑,引导初学者探索数据结构与算法的知识地图。
  • 源代码可一键运行,帮助读者在练习中提升编程技能,了解算法工作原理和数据结构底层实现。
  • 支持 Java, C++, Python, Go, JS, TS, C#, Swift, Rust, Dart, Zig 等语言。

内容结构

 

项目下载并使用Visual Studio2022打开

 

运行C#相关数据结构与算法示例

链表

贪心算法

二分查找算法

在线预览

 

 

 

 

 

 

获取更多逻辑算法学习资料

关注公众号追逐时光者回复关键字:算法

 

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

Github开源地址:https://github.com/krahets/hello-algo

直接访问地址:https://www.hello-algo.com/

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

加入DotNetGuide技术交流群

1、提供.NET开发者分享自己优质文章的群组和获取更多全面的C#/.NET/.NET Core学习资料、视频、文章、书籍,社区组织,工具和常见面试题资源,帮助大家更好地了解和使用 .NET技术。
2、在这个群里,开发者们可以分享自己的项目经验、遇到的问题以及解决方案,倾听他人的意见和建议,共同成长与进步。
3、可以结识更多志同道合的开发者,甚至可能与其他开发者合作完成有趣的项目。通过这个群组,我们希望能够搭建一个积极向上、和谐友善的.NET技术交流平台,为广大.NET开发者带来更多的价值。

解决SQL Server恢复时提示此备份集与现有数据库不同-CSDN博客

mikel阅读(316)

来源: 解决SQL Server恢复时提示此备份集与现有数据库不同-CSDN博客

我们在用SQL Server Management Studio来的GUI工具恢复数据库的时候,经常会遇到提示:此备份集与现在数据库不同。在网上有人说不要在数据库名上点右键,直接在“数据库”这个节点上点右键,然后选则要覆盖的数据库就会成功。我试过多次,有时能成功,有时还是不行,不知为什么,也没有深入去研究。

后来试用了用命令的方式来进行恢复,百试百灵,没有失败过。

右击系统数据库master,新建查询

RESTORE DATABASE mydb
FROM DISK = ‘C:\bak\mydb.bak’
WITH replace ,
MOVE ‘mydb’ TO ‘C:\msSQL\mydb.mdf’,
MOVE ‘mydb_log’ TO ‘C:\mssql\mydb_log.ldf’
如果你也遇到这个问题,将上面的路径换成你的备份文件和现有数据库的路径,试试看。
————————————————
版权声明:本文为CSDN博主「ctcwri」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ctcwri/article/details/8758768

【转】Chrome内核浏览器打开网页报 错误代码: ERR_TIMED_OUT - m_lm的个人空间 - OSCHINA - 中文开源技术交流社区

mikel阅读(295)

来源: 【转】Chrome内核浏览器打开网页报 错误代码: ERR_TIMED_OUT – m_lm的个人空间 – OSCHINA – 中文开源技术交流社区

我本机通过 “办法一” 解决的。

升级 win10 之后如果出现 chrome 内核的浏览器网页总是打不开 打开很慢  而 ie 和 edge 是可以正常访问的 用这个方法可以  我弄了几天终于 搞好了我直接转载过来了
近期,工程师收到大量反馈 360 浏览器,极速模式无法打开网页,兼容模式无此问题。
IE 浏览器和 Edge 都正常。用断网急救箱、重置 DNS、LSP 修复后问题依然存在。
下面的解决办法仅限于 Win10 有如上现象的情况。

解决办法一、1、删除 HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\Root\ProtectedRoots
2、删除 HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\Root\Certificates
3、删除 HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\Root

可以参照以下步骤 1、2、3、4 操作:
步骤 1、打开注册表,点开始菜单,点运行,输入 regedit.exe 后回车
找到注册表键值 HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\Root\ProtectedRoots
右键点权限,(如果有弹窗,点重新排序,不是每台电脑都会遇到),把所有用户名(下图 4 个)都设置成完全控制权限,点确定,右键 ProtectedRoots,点删除,如下图,如果还不行,看步骤 2

 

步骤 2、如果无法删除,需要点控制面板,点 “账户”,点 “改用本地账户登陆”,然后注销,再按照上面的步骤删除,如果还不行,看步骤 3
(之后在登陆账户即可,重启电脑后也会正常)

 

步骤 3、如果出现 “无法保存对 ProtectedRoots 权限所作的更改”,主要原因是所有者不对。右键 ProtectedRoots 点 “权限”,点 “高级”,找到 “所有者”,如下图所有者是 Administrator,点右边的 “更改”,出现界面后,点高级,点立即查找,找到本地账户,比如 “张三”,一路点确定,然后再删除试试,如果还不行,看步骤 4

 

步骤 4、如果所有者对了,完全控制也可以设置好了,还是无法删除,可能是键值有父对象。右键 ProtectedRoots 点 “权限”,点 “高级” 点 “禁用继承”,弹出框选第一个,点确定,变成 “无”,然后再删除

 

成功删除 ProtectedRoots 后,再删除 Certificates 和 Root,方法一样,成功删掉后关闭注册表,删掉后会生成正常权限的键值,不影响使用。

解决办法二、
工程师排查发现和系统补丁有关,链接:https://support.microsoft.com/en-us/help/4103721,可以重装下 Win10 系统解决;或者先用 IE 浏览器,如果还有问题,可以联系工程师远程解决
参考 :https://bbs.360.cn/thread-15493369-1-1.html
参考 :https://blog.csdn.net/qq754772661/article/details/81452131