Redis和MongoDB到底有什么区别
Redis 和 MongoDB 有什么区别?远程字典服务器(Redis)和 MongoDB 是两个 NoSQL 数据库,它们以非结构化格式存储数据。NoSQL 数据库与使用表、行和列的关系数据库存储数据的方法不同。Redis 是一个开源的内存数据库,它以键值对的形式存储数据。这种数据库将数据存储在 RAM 中以获得高性能,但也提供了磁盘永久存储作为附加功能。MongoDB 是一种源代码可用的文档数据库,以序列化的 JSON 格式存储数据。MongoDB 将数据存储在外部存储器中,但在企业版中包含内存存储引擎。
数据模型:Redis 与MongoDBRedisRedis 将数据存储在 RAM 中,因此您可以直接从内存访问数据。尽管这种方式可以提供低延迟的响应,但也限制了可以存储的数据量。Redis 通过快照和仅附加文件(AOF)日志记录将数据集保存到磁盘,从而提供数据持久性。
Redis 将数据存储为键值对,其中每个数据条目都有一个唯一的键。它支持各种数据类型,例如排序集、哈希、集合、列表和字符串。键可以是任意长度,总长度不超过 512MB。
MongoDBMongoDB 遵循文档数据 ...
SpringSecurity笔记
Intro这节课的笔记先讲实操,再讲原理
简介Spring Security 是 Spring 生态链中的安全管理框架。一般来说中大型项目都是使用 Spring Security, 小项目使用 Shiro一般 Web 应用都需要进行认证和授权
认证:验证当前访问系统的是不是本系统的用户,并且确认是哪个用户授权: 经过认证后判断当前用户是否有权限进行某个操作
而认证和授权也是 Spring Security 作为安全框架的核心功能
快速人们准备工作
创建基础 web 工程,这一步就不记录了,可以去翻我的 Springboot 笔记
创建工程
创建启动类
创建 Controller path 为/hello
引入 SpringSecurity
1234<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>
这个时候再次启动 A ...
SpringBoot中调用API时出现循环引用问题导致的堆栈溢出
今天写代码的时候 实现了表格中的多对多,当我跑query的时候,出现了堆栈溢出和同时重复调用HashMap和HashSet的方法,我就疑惑了,我寻思我数据库中也没有代码。我还以为是我电脑内存爆了。
我有以下两个类,为了简化问题提供一个简单版本
12345678910@Table@Entity@Dataclass User {@IdLong id;@ManyToMany(fetch = FetchType.LAZY)@JoinTable(name = "sys_user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))Set<SysRole> roles;}
123456789@Table@Entity@Dataclass SysRole {@IdLong id;@ManyToMany(mappedBy = "roles ...
Why is SWC fast?
最近偷懒了,在有好好努力工作。 .!.
What is SWCSWC is a modern JavaScript compiler written in Rust designed to convert the latest JS/TS features (such as async/await) into code executable by older browsers. It serves a similar purpose to Babel but aims to be a faster alternative by being written in Rust, thus accelerating web development and simplifying processes.
From the SWC Official WebsiteSWC is used for compiling and bundling. During compilation, it takes JavaScript / TypeScript files featur ...
IA-32 Cache分析和研究
Cache一下讨论的缓存机制基于IA-32
Cache lineLocation in cache that can store one block of memory (with tag)
不同类型CacheDirect Mapped Cache - RestrictiveDirect Mapped cache is a cache having S set with 1 cache line/set
就是每个set里面只存储一个cache line,意味着不需要通过tag去匹配当前set下的cache line。
Set selection => O(1) constance indexing
line maching => O(1) just go to the set
What happens when two different memory blocks map to the same set?
Conflict miss: set store one blocks
直接映射的缺点是它的缓存命中率较低,因为一组中只有一个缓存行可用 ...
用Dajango开发web后端,真的比SpringBoot要省事吗?
知乎上看到的好玩的, 觉得赞同的我会用bold
Java工程师,用过python+flask,nodejs+express, go+beego。
说说我的看法:
问题完完全全出在Java上,主要原因是:面向对象思想过度泛滥,导致应用结构无意义的复杂化。
面向对象的思想,从职责分配、封装、MVC、设计模式、应用框架、依赖注入、约定优于配置…,这些面向对象的大师们和其拥趸们,向世人炫耀他们无与伦比能力的时候,其实越行越远,背离了代码简洁的初心。
我之前也一直是面向对象技术的拥护者。但是,你只要用了其它语言的架构,就发现:
getter/setter 不需要的。在Java里用Lombok,不知道有多爽。
open/close原则,不需要的。干嘛非要定义IService/SerivceImpl。
约定是什么?不需要的。
依赖注入,不需要的。做一个配置文件不好吗?
go语言没有继承、范性,都可以开始抢占Java的市场。
go追求简洁性,宁肯放弃一大堆语言特性;rust追求语言特性上的创新。我更看好这些新的火种。
我认为Java未来可能会衰退。
我知道这些话让Jav ...
什么是Docker?自己动手写一个Docker
DockerDocker 是一个开源工具,它可以将你的应用打包成一个标准格式的镜像,并且以容器的 方式运行 。 Docker 容器将一系列软件包装在一个完整的文件系统中 ,这个文件系统包含应用 程序运行所需要的 一切:代码、运行时工具、系统工具、系统依赖,几乎有任何可以安装在服 务器上的东西 。 这些策略保证了容器内应用程序运行环境的稳定性,不会被容器外的系统环境 所影响 。
图 11 是一个容器镜像的结构图。从中可以看到,镜像可以把系统级依赖都打包成一个 文件,所有的容器会共享一个 Kernel,因此在同一个 Kernel 下可以运行各种 Linux 发行版的 容器。
Docker 容器具有以下 3 个特点
轻量级:在同一台宿主机上的容器共享系统 Kernel, 这使得它们可以迅速启动而且占用 内存极少 。 镜像是以分层文件系统构造的,这可以让它们共享相同的文件,使得磁盘使用率和镜像下载速度得到提高 。
开放: Docker 容器基于开放标准,这使得 Docker 容器可以运行在主流 Linux 发行版, Windows , MacOS 操作系统上 。
安全: 容器将各个应用程序 ...
CS354 midterm 1 review
每次这种课的Intro课,都让我感觉好的大学都会追着学生喂饭的感觉…
CS354 midterm review,除了基本的知识外,会Focus在内存的创建和释放。strcut以及指针的trick。
Basic linux OS commands
man
Ls
cat
echo
file path, filename, absolute vs relative
Andrew File system (afs)
cd
mkdir
rmdir
mv
Rm
cp and scp
GCCgcc prog.c -Wall -m32 -std=gnu99 -o prog
Gdb: run gcc with -g option, launch gdb with executable, start, list,next,stop, print, quit;
vim
Create file
insert text
excape to command mode
save file
Exit
C Programming
Libs
stdio
stdlib
string
unistd
command ...