自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 360导航恶意修改浏览器启动页!我的chrome和IE均中招,如何解决?

9,按下alt+F4组合键,log off后重新log in,问题解决。8,按下alt+F4组合键关闭regedit。5,查到一个注册表键值就删一个,一个不放过。0,关闭360等“安全”软件。2,输入regedit,回车。3,按下组合键ctrl+F。1,按下组合键win+R。6,删完发现自己又被锁定。

2023-11-12 07:02:37 643

原创 Spring Security JWT Authentication and Authorisation(一)

接着我们将返回响应,例如,它可以是一个JWT,也可能是一个HTTP状态码200。如果一切正常,我们将从数据库中得到用户信息。所以我们需要提供一个ID属性,@Id注解,所属的包是jakarta.persistence,它表明这个属性是类的唯一标识符。@Data注释,等同于@Getter,@Setter , @RequiredArgsConstructor,@ToString,@EqualsAndHashCode。这里将使用create-drop,因为每次开始应用时,我想要创建一个新的数据库,一个新的模式。

2023-10-24 02:38:28 313

转载 【Java】来回顾下JWT知识点,了解一下什么是JWT?【转】

通俗地说,JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT token,并且这个JWT token带有签名信息,接收后可以校验是否被篡改,所以可以用于在各方之间安全地将信息作为Json对象传输。请注意,默认情况下JWT是未加密的,因为只是采用base64算法,拿到JWT字符串后可以转换回原本的JSON数据,任何人都可以解读其内容,因此不要构建隐私信息字段,比如用户的密码一定不能保存到JWT中,以防止信息泄露。创建签名,是保证jwt不能被他人随意篡改。

2023-10-14 19:52:59 117

转载 用户认证:基于jwt和session的区别和优缺点【转】

有效期短只希望被使用一次比如,用户注册后发一封邮件让其激活账户,通常邮件中需要有一个链接,这个链接需要具备以下的特性:能够标识用户,该链接具有时效性(通常只允许几小时之内激活),不能被篡改以激活其他可能的账户,一次性的。这种场景就适合使用jwt。而由于jwt具有一次性的特性。单点登录和会话管理非常不适合用jwt,如果在服务端部署额外的逻辑存储jwt的状态,那还不如使用session。基于session有很多成熟的框架可以开箱即用,但是用jwt还要自己实现逻辑。

2023-10-14 19:51:53 159

原创 Impeller-Flutter的新渲染引擎

现在我们不进入太多的细节中,但是基本上的,当Impeller为剪裁绘制像素时,它告诉GPU检查模板(stencil),过滤掉所有不是填充区域部分的所有的像素。Impeller使用MSAA来执行这个工作,它由Flutter支持的所有的设备上,它执行的成本低,在现代的移动设备上产生出优秀质量的结果。它有为范围广阔的设备构建的一大堆的渲染特性,这意味着它并不总是为了Flutter的需求优化。这一层是一个薄的抽象,和图形驱动交互,通过各种标准的图形API,例如IOS上的Metal,Android上的Vulkan。

2023-10-05 02:03:25 998

原创 如何导入StackOverflow数据库

StackOverflow和很多它相关的页面让它的数据可为公共使用,它在线可被查询。但是如何导入到自己的数据库中?幸运的是,你可以。Stack Exchange,包含了StackOverflow和许多其它的页面。创建dumps(转储)如此经常,并且让它在线可用。你只知道是转储而已吗?在计算机领域,dump一般译作转储,有动词和名词两种场景。

2023-09-27 02:33:07 162

原创 数据库设计(火车订票系统)

这是一个多对多的关系,所以我们需要一个joining table(连接表)。需求还提到了一个火车,它代表着一个旅程。从一个地方开始,到另一个地方结束。一个火车在一个站点出发,在一个站点停止,在旅途中可以停靠在不同的站点。为一个火车订票系统设计一个数据库是一个好的方法来训练你的数据库技巧。火车站点的表格,i像大部分的表格一样,d作为主键。可以假设能够,因为我们在构建一个火车预定系统。添加一个新的表,称为火车旅程。如果错了,我们可以在后面改变它。首先,添加一个火车站点的表格。可以,我们在需求中看到了这点。

2023-09-24 16:18:13 947

原创 Swagger

Swagger需要两个另外的Dependencies。如果不想用UI的部分工作,可以使用Swagger。swagger ui 和 swagger2。这是项目的可选步骤。

2023-09-19 16:25:54 220

原创 Spring MongoDB

不需要为MongoDB安装软件,因为会使用云服务,这个技能集合是很重要的。在Collection里面创建数据库名称,和Collection名称。在当前的世界,我们有如此多的非结构化的数据,不能够基于它们创建列。因为SQL在19世纪70年代变得流行的时候,在那时存储是昂贵的。再返回到Controller,需要一个Service类的引用。在Service类中,需要一个Repository的引用。我们需要确保使用最小的存储,这样我们可以存储最大量的数据。这在SQL中是令人头痛的事,我们不希望在这里使用SQL。

2023-09-18 20:48:44 238

原创 Lombok

创建一个Constructor接收所有的Private域作为参数。不接受参数的另外一个Constructor。这是来自于Lombok的一个注解,它负责所有的Getter,Setter。不是写Getter和Setter,可以用@Data。

2023-09-16 20:56:52 30

原创 在Docker中运行MySQL

从信息的底部,可以找到服务端的IPAddress。这是我们想要连接的MySQL服务端的IP地址。意味着现在从客户端的容器连接到了服务端的容器。这样就得到了木mysql shell。首先下载MySQL的Image。为了从客户端连接到服务端。启动MySQL的服务端。启动MySQL的客户端。

2023-09-07 19:18:45 261

原创 在Docker中运行PostgreSQL数据库

使用DBeaver来连接,是一个免费可用的IDE,可以在Windows或者在MacOs上运行。也可以使用docker run命令,如果已经存在在电脑上就直接运行容器。如果不存在就下载它。开放端口从Docker容器到主操作系统,这将允许我们使用DBeaver来连接数据库。一旦docker run命令完成,image将启动,会花费一到两分钟。登录进去之后,可以下载Image,使用docker pull命令。首先登录进Docker,使用docker login命令。检查容器的状态,使用docker ps命令。

2023-09-06 02:14:23 1728

原创 Java反射

Java反射允许你以一种在运行时看自己甚至是改变自己的方式来写程序。使用for loop遍历获取medthod。这样就做到了写代码来看Java类的结构。使用for loop遍历获取field。类库如Spring Framework。测试的时候,需要设置私有的field。它很强大,允许你打破程序的规则。

2023-07-23 06:02:26 46

原创 @Bean

Bean注释不是Springboot专有的,它是SpringFramework的一部分。这意味着从类的定义中解耦bean的声明,让你用选择的方式来创建和配置beans。@Bean注解是一个方法级的注解,我们仅仅用@Bean注解来注释方法。@Bean被用于显式的声明一个bean,而不是让Spring自动做。@Bean的目的是什么。

2023-04-26 03:32:50 51

原创 Spring Beans

在类定义的上方使用@Component,@Service,@Controller,@Repository。把类作为Spring Bean的关键优势在于,它的整个生命周期都由Spring容器管理,帮助我们完成解耦。Spring容器读这个Spring配置文件,它将创建对象,配置对象。Spring Beans是完全由Spring容器创建和管理的对象。使用这个标识符,我们可以从Spring容器中获取对象或者bean。在XML里,<bean>在<beans>标签里。XML中,bean的Id是唯一标识符。

2023-04-26 03:19:27 374

原创 Docker Images & Containers

也意味着我可以仅仅与任何需要运行这个应用的人分享Docker镜像,在他们自己的电脑之上。自己电脑上安装的不相关,因为它们被预打包到镜像中,应用以在自己电脑上相同的方式运行,或者别人的电脑,或者是生产服务器。有点像我们的应用运行在计算机的某处它自己的盒子上,包装带走一切需要运行在内部的,完全独立于计算机上的任何其它进程。所以,容器是一个进程如我们创建的镜像的概述那样,运行我们的应用。镜像是只读的,意味着,一旦你创建了一个镜像,就不能够改变。接着,我可以运行这个镜像来创建一个容器,来运行我的应用。

2022-09-19 02:25:52 320

原创 Go Mutex(互斥锁)

如果一个goroutine尝试获得一个已经被另一个goroutine持有的mutex,它将被阻塞并且等待mutex被释放。mutex或者是mutual exclusion是一种机制,允许我们防止并发进入一个数据关键区域,在它已经被一个执行的进程执行。如果引进了多线程时,在Go的情况是多个goroutines,将会在代码中看到问题。假如你在写一个Go程序,有超过一个线程或者goroutine并发执行。假设有一个例子,有一个银行账户系统,存款和取款都从这个账户中。在一个线程中,同步程序,将会是难以置信的简单。

2022-09-14 20:17:42 277

原创 Go sync.WaitGroup

当你开始用Go写应用时,需要阻塞你代码特定部分的执行的场景,直到这些goroutines成功的执行。在goroutine有机会执行之前主函数已经中止,或者是完成执行。WaitGroup可以有效的作为一个计数器,有三个不同的任务。仅仅当WaitGroup中的计数器到了0时,程序将继续执行。解决了在goroutine完成自己的执行之前主函数执行问题。高并发,高性能应用,理解WaitGroup是至关重要的。主函数不继续通过这个点,直到内部的计数器为0。现在无论何时一个任务被执行,计数器减1。

2022-09-13 15:43:23 124

原创 Go Goroutine

难以置信的便宜当创建和销毁新的goroutines时,因为它们的大小和go处理它们的高效方式。使用Goroutine是一个非常快速简单的,转变一个顺序的程序到一个并发的程序,而不用担心在传统语言如Python,Java中,需要做的事情例如创建线程或者线程工具。创建一千个Goroutine一般需要最多一到两个系统线程,如果在Java中做相同的事情将需要1000个完整的线程,每个最少占据1Mb的堆空间。Goroutine是由Go运行时管理的轻量级的线程,它让我们能够创建异步的并行程序。

2022-09-11 23:13:51 85

原创 gRPC and Protocol Buffers

这是重要的如果你想要向后兼容性,所以我可以添加新的域到message里并且维护向后兼容性,但是不能够改变索引并且维护向后兼容性。所以我在go中定义protobuf,它应该与在Javascript上工作相同,或者是Java,Ruby,Python。Google提出了一种新的方法称为gRPC,背后的意图是你仍然使用标准的协议。但是并不是使用Json,你将使用的是一个基于二进制的称为prrotobufs。它接受proto文件,生成go,java,c#,ruby,objective。对于gRPC,使用插件。

2022-09-09 22:22:43 411

原创 Gzip compression

无论何时你有一个Reader或者是Writer,你可以使用,它将自动的编码或者解码流的内容,Reader或者Writer到一个zip的格式,这个的缺点是什么,压缩或者是解压一个文件,或者是一块信息消耗CPU,并不是免费的。关键的事情是,实际上CPU和消耗的时间来压缩内容,省下的时间比消耗的成本要高得多。被发送的数据按照字面,是直接从硬盘上的流,发送到电脑端完全没有压缩的状态。即使他们有一个好的移动网络,4G连接,甚至是5G连接,连接依然不好。现在,我们想要做的事情是,想要实现让这个可配置为gzip。

2022-09-08 22:29:47 264

原创 Golang定义结构体方法(使用指针和不使用指针)

这意味着为了创建一个immutable对象,我们应该使用Value Method,它不改变对象。我们返回变量的新的拷贝,使得它immutable。然而,我们想要改变变量自己,则应该选用Pointer Method。Java是面向对象的语言( Object Oriented Language),Go是如何实现面向对象的呢?pointer是指向内存地址的值。因此,引用的任何变化改变值在Pointer Method里。1.Struct指针方法。2.Struct值方法。

2022-09-07 16:57:39 809

原创 Go Interface

通过interface,你可以组织不同组的方法应用到不同类型的对象。通过这么做,程序可以依赖更高的抽象(interfaces),与依赖于具体实现相反,允许其它的方法与 实现了相同interface的各种各样的不同对象一起工作。interface是定义行为和表现的工具。它帮助对象依赖抽象,而不是依赖其它对象的具体实现。我们可以通过分组多个interface来组合不同的行为。Go Interface的实现,没有implements关键字。interface是一套方法对不同数据类型代表共同行为。......

2022-09-07 16:17:19 49

原创 为什么Go是一个系统语言?

这就是说,来看一个很简单的例子来检查权限。非常有限的内存作为一个安全测度,接着你最好确保分配或者释放之前借来的有限的内存。另一个方面,Go可以是一个有竞争力的选择对于c++,Java,python。系统程序的一个好的例子是鼠标和键盘的驱动程序,操作系统带有的文件管理系统。静态二进制,不需要担心系统依赖或者是特殊的运行时。但是同时,它仍然完整的使用Go的扩展性和并发功能。奏效的并发模型,容易些,容易用正确的方式做事。可能你在写一个操作系统的内核,驱动,微控制器。甚至是整个的windows或者是Mac系统。

2022-09-05 16:55:56 158

原创 Goroutine的用途

在现实世界中使用,特别是你有多个服务器,就云部署而言。现在我们谈论很多数据库,有时候甚至是微服务。我们谈论有多个数据库,有很多的复制品专门用于只读,也有写服务器和写数据库,可以做读和写。这是一个常见的情形,一些API仅仅和只读服务器对话,一些和读写服务器对话,。除了这个还有其它的案例,例如微服务。一些微服务与其它的微服务交谈。你可以在那里使用goroutine。你可以发起一个线程,它可以与其它的微服务交流,从那里拉取数据。另一个例子,你可能有三个不同的API端点。你可以从所有的端点中获取数据,你可以在不同的

2022-06-27 01:12:17 220

原创 Goroutines

go build 为生产环境构建应用go run 以低开销运行(和gobuild相比)go mod initConcurrency 和 Parallelism并发和并行并发:做多件事情,但是并不是在同一个时间去做。在一个给定的时间,仅仅在做一件事情。并行:在同一时间做多件事情。Goroutines经常与线程进行比较,但是有两个主要的不同。线程由OS管理,Goroutines由Go运行时管理。Go运行时可以发射更多的线程而不用得到操作系统的许可。这就是为什么这门语言在云上更加的流行,因为在云环境下我们有不少这

2022-06-19 04:02:17 77

原创 What is Nginx?

Nginx尝试解决什么样的问题?一旦理解了这个问题,其它的事情都会容易理解。Nginx是一个很聪明的软件,想要解决一个很聪明的问题。无论何时你运行这个应用时,它运行在特殊的端口。就像你在开发环境中经常做的一样。但是你现在要把这个应用放在一个大型的服务器上,Ubuntu,centos。我的应用运行在这个端口上,4000。现在我们的应用在端口3000也可以使用了。这也是一个经典的问题。Nginx聪明的管理负载,哪个服务器或者是哪个实例有一个低量的负载,就会重定向请求到那个端口上。你可以处理一些路由。让一个实例专

2022-06-18 19:34:23 250

原创 NginX

什么是网络服务器。安装Nginx,在网络服务器上部署应用。当你输入浏览器地址时,你观察到了什么。奇怪过过程你输入URL输入Enter,页面出现,很多事情发生。一个请求被浏览器初始化离开你的本地局域网穿过全域网(global area network)直到其中一个电脑。它被指派来服务你的主页,这个电脑返回一个响应包含页面的所有内容。响应采取相似的路径穿过全域网直到到达本地局域网,最后到达你的网络浏览器。你从这里观察到了什么。当你输入一个url,一个请求被产生到一个电脑连接到那些网页上。、当那台电脑初始化初始化

2022-06-18 19:13:48 250

原创 Kubernetes和Docker

Kubernetescontainer orchestration system(容器编排系统)编排容器容器是什么,Docker是一个软件允许我们放置应用到容器里。可以给与一个容器作为实体。在从我手里到你的手里保持一致。如果没有容器,递给你东西。我们有一个应用,要从我的电脑,到你的电脑,或者是一个部署服务器,实际的客户将要访问。我们的应用和环境紧耦合,当我们放到服务器上时,不以我们期待的方式工作。因为服务器的环境和自己电脑的环境可能会有所不同。解决方案是将应用放在一个容器中,在容器里,我们可以放置应用依赖。

2022-06-18 15:35:53 105

原创 MySQL命令

show databases;list the current databases that exitselect @@hostname;CREATE DATABASE ;DROP DATABASE ;USE ;tell MySQL which database he wants to be working with.Ten databases on one MySQL server.SELECT database();TablesThe True He

2022-06-07 21:07:46 46

原创 什么是数据库?

What is a Database?1.A collection of data2.A method for accessing and manipulating that data数据库和数据库管理系统PostgreSQL,MySQL,Oracle Database,SQLite事实上是DBMS,而不是Database。What is a Database?A structures set of computerized data with an accessible interface.MySQL和S

2022-06-05 12:54:54 54

原创 images和containers

images像容器的blueprints。包含存储在里面,但是并不是在里面运行,仅仅是在里面存储。这些包括:运行时环境(如特定的node版本)应用代码应用运行所需的依赖额外配置(如环境变量)指令images也有自己的文件系统,独立于电脑。images是只读的。一旦创建了image,不能被改变。如果你想要改变images,你应该创建一个全新的image来包含这个变化。容器是images的可运行的实例。所以,我们创建一个image,是容器的blueprint。当我们运行image的时候,它创建一个容器。可以运行

2022-06-04 14:55:27 278

原创 什么是Docker?为什么要用Docker?

容器在隔离环境下运行应用。场景开发应用所需要的Nodejs版本是一个特别的版本。想要和组内的另一个人分享应用。他们要先设置开发环境和自己的匹配,来确保他们的应用正确运行。例如,他们要有和自己一样的Nodejs版本。他们需要安装依赖,设置配置,环境变量,来确保所有以相同方式运行。需要一个重要的设置过程,仅为了应用在另一台电脑上运行。再思考相同的场景,多个应用,都需要设置自己特定的环境。这些应用可能需要在多个不同的电脑上运行。容器像一个盒子,包含所有应用运行需要的。所有的源代码,依赖,正确的运行时环境,版本,等

2022-06-04 00:22:49 273

原创 连续触发事件计算性能优化

在MouseMove和WindowReize时候都可以进行性能优化。方法很简单,引入lodash库,_.throttle(function, time) 。

2021-06-28 17:02:32 72

原创 用setTimeout实现一个sleep函数

function sleep (time) { return new Promise((resolve) => setTimeout(resolve, time));}async function main(){ await sleep(1000); console.log(1) await sleep(1000); console.log(2) await sleep(1000); console.log(3).

2021-06-20 12:32:06 453

原创 如何让setTimeout方法间隔时间更为精确

functiontimer(){varspeed=500,counter=1,start=newDate().getTime();functioninstance(){varideal=(counter*speed),real=(newDate().getTime()-start);counter++;vardiff=(real-ideal);fo...

2021-06-20 12:23:09 379

原创 Async-Await异常处理

1.对于每个await写try catchasync function towerOfTerror(){}

2021-06-20 12:05:15 98

原创 Retianed Mode vs Immediate Mode

retained mode : DOMhis API takes what you specify and creates an in-memory model (often referred to as ascene,object listordisplay list) of what the final output should look like.immediate mode : Canvas

2021-06-12 18:54:37 95

原创 JS元编程meta programming

元编程定义:The ablity to treat program as data.The ablity to to read, generate, analyze or transform other programs, and even modify itself while running.1.Macro(sweet.js)可以用宏扩展JS语言2.Reflectionhappens during runtimeReflection有三种1.Introspection

2021-05-19 05:48:25 93

原创 React Hooks引入的背景

使用一门技术需要思考存在的原因。在没有引入Hooks时,使用React的痛点有三个:1.Reusing Logic2.Giant component3.Confusing classes1.Reusing Logic在没有Hooks之前,React中代码复用的方式是HOC和Render Props。使用他们会造成代码结构的重构和大量的嵌套。2.Giant component大的组件,一个组件上千行。逻辑分布在不同的生命周期里。3.Confusing classes.

2021-05-18 07:49:37 172

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除