- 博客(334)
- 资源 (9)
- 收藏
- 关注
原创 js中async与await详解
async和await是JavaScript中处理异步编程的一种新方式,它们可以让异步操作的结果像同步操作一样被处理,从而使得异步编程更加简洁和易读。在使用async和awaitasync函数的返回值是一个Promise对象;await关键字只能在async函数中使用;await关键字只能等待返回Promise对象的异步函数执行完成;在使用await时,JavaScript引擎会暂停执行当前函数,直到异步操作完成。
2023-05-29 12:06:38
3072
原创 深度干货 | 32道JVM基础面试题 (1.2W字详细解析)
虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干不同的数据区,这些区域有各自的用途、创建和销毁时间。
2022-11-26 13:39:02
1250
26
原创 SQL后计算的利器
此外,还有涉及多数据库和非数据库的场景,也无法使用SQL完成计算任务,只能在外部完成。这样,就要在应用程序中实现SQL后计算任务。SQL返回的数据一般都是结构化数据,那么好的SQL后计算技术也要有方便的结构化数据对象,能够进一步计算和处理返回的数据;提供丰富的库函数,拥有不亚于SQL的计算能力;最好还能支持循环和判断语法以实现流程控制。特别地,SQL后计算技术要用在应用程序中,要易于被集成。Java是重要的开发语言,但JDK提供的方法过于基础,虽然能实现SQL后计算,但开发效率很低。......
2022-07-27 10:00:38
2072
41
原创 零编码制作报表真地可能吗?
报表工具的设计初衷,旨在减少手工设计报表的编码量,能真正做到少编码的就已经算作是好产品了,至于零编码,那是少编码的终极状态,是各工具远没有达到的,也是需要去持续努力才能一步步接近的。...
2022-07-19 07:14:03
2104
33
原创 使用OneDNS完美解决办公网络优化问题
企业办公中,你是不是经常遇到下列问题:一般遇到这种问题,很可能是DNS劫持或者遭遇了CSRF 攻击。假设你要查询 www.baidu.com 的 IP 地址:由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:从请求主机到本地域名服务器的查询是递归查询,而其余的查询是迭代查询。DNS劫持即域名劫持,是通过将原域名对应的IP地址进行替换,从而使用户访问到错误的网站,或者使用户无法正常访问网站的一种攻击方式。CSRF,跨站请求伪造(英文全称是 Cross-site request forgery)
2022-07-08 11:21:53
1718
45
原创 Casbin访问控制框架入门详解及Java案例示范
Casbin 是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。Casbin 可以:默认的请求格式为{subject, object, action}。2. 具有访问控制模型model和策略policy两个核心概念。3. 支持RBAC中的多层角色继承,不止主体可以有角色,资源也可以具有角色。4. 支持内置的超级用户 例如:root 或 administrator。超级用户可以执行任何操作而无需显式的权限声明。...
2022-07-06 11:16:36
23685
13
原创 深度干货 | 38道Java基础面试题 (1.2W字详细解析)
1、平台无关性,摆脱硬件束缚,“一次编写,到处运行”。2、相对安全的内存管理和访问机制,避免大部分内存泄漏和指针越界。3、热点代码检测和运行时编译及优化,使程序随运行时间增长获得更高性能。4、 完善的应用程序接口,支持第三方类库。5、持网络编程并且很方便。JVM: Java 编译器可生成与计算机体系结构无关的字节码指令,字节码文件不仅可以轻易地在任何机器上解释执行,还可以动态地转换成本地机器代码,转换是由 JVM 实现的,JVM 是平台相关的,屏蔽了不同操作系统的差异。语言规范: 基本数据类型大小有明确规定
2022-07-01 08:00:00
11533
25
原创 深度长文探讨JOIN运算的简化和提速
连接运算(JOIN)一直是SQL中的老大难问题。在关联表稍多一点的时候,代码书写就变得很容易出错了。而且因为JOIN语句的复杂,导致关联查询也一向是BI软件的软肋,几乎没有BI软件能让业务用户顺畅地完成多表关联查询。对于性能优化也是,关联表较多或者数据量大时,JOIN的性能也很难得到提升。...
2022-06-14 10:06:45
4450
19
原创 怎样才是正确的线程启动方式?
目录1、start()和run()的比较2、start()方法原理解读2.1、start()方法含义2.2、start()源码解析3、run()方法原理解读4、启动线程——常见面试问题1、start()和run()的比较代码演示:package threadcoreknowledge.startthread;/** * 描述: 对比start和run两种启动线程的方式 */public class StartAndRunMethod { public static void m.
2022-05-31 10:14:08
8728
18
原创 实现多线程的方法到底有1种还是2种还是4种?
目录1、Oracle官网的文档是如何写的?2、两种方法的对比3、思考题:同时用两种方法会怎么样?4、总结:最精准的描述5、典型错误观点分析6、典型错误观点总结7、实现多线程——常见面试问题1、Oracle官网的文档是如何写的?方法一:实现Runnable接口方法二:继承Thread类实现Runnable接口package threadcoreknowledge.createthreads;/** * 描述: 用Runnable方式创建线程 */public class Runnab.
2022-05-30 09:20:25
5819
20
原创 怎样提高报表呈现的性能
报表的性能很重要,是一个总被谈及的问题,跑的慢的报表用户体验恶劣,无法忍受。解决这些慢的性能问题,也成了项目方和工程师头疼的事情。一出状况,就得安排技术好的,能力强的工程师去救火,本来利润就薄,还得不断的追加人工成本,而且工程师有时候也无能为力,并不是所有的性能问题都能靠程序员能力解决的这个总会让人头疼的问题没办法解决吗?没有好的方法去提升性能了吗?
2022-05-17 09:31:36
13817
52
原创 如何让JOIN跑得更快?
JOIN 一直是数据库性能优化的老大难问题,本来挺快的查询,一旦涉及了几个 JOIN,性能就会陡降。而且,参与 JOIN 的表越大越多,性能就越难提上来。其实,让 JOIN 跑得快的关键是要对 JOIN 分类,分类之后,就能利用各种类型 JOIN 的特征来做性能优化了。JOIN 分类有 SQL 开发经验的同学都知道,绝大多数 JOIN 都是等值 JOIN,也就是关联条件为等式的 JOIN。非等值 JOIN 要少见得多,而且多数情况也可以转换成等值 JOIN 来处理,所以我们可以只讨论等值 JOIN。
2022-05-10 09:13:21
16474
39
原创 多张图带你彻底搞懂DNS域名解析过程
1、DNSDNS(Domain Name System)是域名系统的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,用于 TCP/IP 网络。2、域名系统DNS 的作用通常我们有两种方式识别主机:通过主机名或者 IP 地址。人们喜欢便于记忆的主机名表示,而路由器则喜欢定长的、有着层次结构的 IP 地址。为了满足这些不同的偏好,我们就需要一种能够进行主机名到IP 地址转换的目录服务,域名系统作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。因此,即使不使用域名
2022-02-17 11:02:36
119211
44
原创 LeetCode 106. 从中序与后序遍历序列构造二叉树 【c++/java详细题解】
目录1、题目2、思路3、c++代码4、Java代码1、题目给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。示例 1:输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]输出:[3,9,20,null,null,15,7]示例 2:输入:inorder = [-1], postorder = [-1]输出:[.
2022-02-06 10:35:35
2951
30
原创 LeetCode 72. 编辑距离 【c++/java详细题解】
目录1、题目2、思路3、初始化4、c++代码5、Java代码1、题目给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rorse -> rose (删除 'r')rose -> ros
2022-01-28 16:07:50
2817
21
原创 七天玩转Redis | Day7、Redis常见面试题
目录1、对 Redis 的理解2、Redis 和 MySQL 的区别3、Redis 有哪些数据类型4、Redis的持久化机制?5、如何选择合适的持久化方式6、什么是缓存击穿?7、什么是缓存穿透?8、什么是缓存雪崩?9、什么是缓存降级?10、什么是缓存预热?1、对 Redis 的理解Redis,全称为 Remote Dictionary Server,本质上是一个 Key-Value 类型的内存数据库,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据写入磁盘或把修改操作写入追加的记录.
2022-01-27 09:13:29
728
15
原创 七天玩转Redis | Day6、SpringBoot集成Redis
目录1、搭建环境2、测试Redis3、StringRedisTemplate3.1、介绍3.2、StringRedisTemplate常用操作3.3、StringRedisTemplate的使用4、RedisTemplate4.1、介绍4.2、RedisTemplate常用操作4.3、RedisTemplate的使用Spring Boot Data(数据) Redis 中提供了RedisTemplate和StringRedisTemplate,其中StringRedisTemplate是RedisTem.
2022-01-26 18:23:12
45863
22
原创 七天玩转Redis | Day5、Java操作Redis
目录1、Redis的Java客户端2、 环境准备2.1、 引入依赖2.2、创建jedis对象3、常用API3.1、操作key相关API3.2、操作String相关API3.3、操作List相关API3.4、操作Set的相关API3.5、 操作ZSet相关API3.6、 操作Hash相关API1、Redis的Java客户端Redis的Java客户端也有很多: https://redis.io/clients#java,其中比较受欢迎的是Jedis和Lettuce。Jedis在实现上是直接连接的red.
2022-01-25 18:27:38
1268
2
原创 七天玩转Redis | Day4、Redis持久化机制
目录1、Redis的持久化方式2、快照(Snapshot)2.1、什么叫Redis快照2.2、快照生成方式2.3、RDB工作原理2.4、RBD的优点2.5、RDB的缺点3、AOF持久化3.1、特点3.2、开启AOF3.3、同步策略3.4、AOF工作原理3.5、写入文件与恢复3.6、重写3.6.1、为什么要重写3.6.2、rewrite触发条件3.7、常用配置3.8、AOF 优点3.9、AOF缺点4、持久化总结1、Redis的持久化方式通常数据库存在三种用于持久操作以防止数据损坏的常见策略:是数据库.
2022-01-24 18:49:44
28423
16
原创 七天玩转Redis | Day3、Redis位图和GEO介绍与使用
目录1、位图1.1、应用场景1.2、设计思路1.2.1、数据库解决1.2.2、使用Redis的BitMaps完成1.3、BitMaps常用指令2、GEO2.1、应用场景2.2、设计思路2.3、Redis GEO常用指令2.3.1、GEOADD2.3.2、GEODIST2.3.3、GEOHASH2.3.4、GEOPOS2.3.5、GEORADIUS2.3.6、GEORADIUSBYMEMBER1、位图1.1、应用场景在很多互联网应用中,我们会存在签到送积分、签到领取奖励等这样的需求,比如:签到1天.
2022-01-23 15:22:19
1203
14
原创 七天玩转Redis | Day2、Redis基本数据类型
前言Redis作为内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它的value支持多种类型的数据结构,基本数据结构包含:字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)五种。这五种数据结构在我们工作中经常使用到,面试过程中经常被问到,因此熟练掌握这5种基本数据结构的使用和应用场景是Redis知识最基础也是最重要的部分。目录前言1、 String类型1.1、类型介绍1.2、应用场景1.3、内存存储模型1.4、 常用.
2022-01-22 16:28:37
9753
12
原创 2022年中小企业上云首选,华为云省钱攻略
目录1、中小企业上云有啥好处?2、选择哪家平台?3、如何省钱?1、中小企业上云有啥好处?2022年不仅是农历虎年,更是中小企业快成长之年。如何助力企业快速成长?企业上云就是不二选择。企业上云首先大大降低了技术开发成本,各个企业使用云端服务,在这里远远要比购买一般的物理硬件要便宜得多,那么中小企业就少了很多不必要的支出。最重要的是企业上云还可以让企业实现数据安全,网络安全。2、选择哪家平台?对于中小企业用户来讲,主流云平台才是最佳选择,目前在中国云服务器市场,大牌的云服务器服务商,有且只有3家。他们
2022-01-21 18:52:06
938
1
原创 七天玩转Redis | Day1、Redis认识与安装
目录1、NOSQL的引言2、为什么是NOSQL3、NoSQL应用场景4、什么是Redis5、Redis特点与优势6、Linux下Redis的安装6.1、解压安装6.2、编译安装6.3、启动redis7、Redis的配置7.1.Redis的配置文件7.2、通过windows客户端访问7.3、Redis自带的客户端的基本命令操作8、Redis数据库相关指令8.1、数据库操作指令8.2 操作key相关指令1、NOSQL的引言NoSQL = Not Only SQL,意思:不仅仅是SQL;泛指非关系型的数据.
2022-01-21 16:09:23
808
28
原创 剑指 Offer 59 - I. 滑动窗口的最大值 【c++/java详细题解】
目录1、题目2、思路3、c++代码4、java代码1、题目给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值------------------------- -----[1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5
2021-12-07 16:14:47
41636
27
原创 剑指 Offer 24. 反转链表 【c++/java详细题解】
目录1、题目2、思路3、c++代码4、java代码1、题目定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <=50002、思路(双指针,迭代) (n)(n)(n)给定一个链表的头节点,让我们反转该链表并输出反转后链表的头节点。样例:如样例所示,原始链表为1-&
2021-12-05 16:16:07
2167
13
原创 剑指 Offer 22. 链表中倒数第k个节点 【c++/java详细题解】
目录1、题目2、思路3、c++代码4、java代码1、题目输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。提示:0 <= nums.length <= 500000 <= nums[i] <= 100002、思路(链表,遍历) O(n)O(n)O(n)给定一个链表,让我们输
2021-12-03 09:51:24
1968
20
原创 剑指 Offer 12. 矩阵中的路径 【c++/java详细题解】
目录2、思路3、c++代码4、java代码给定一个m x n二维字符网格board和一个字符串单词 word 。如果word 存在于网格中,返回true;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4的矩阵中包含单词 "ABCCED"(单词中的字母已标出)。 示例 1:输入:board = [["A","B","C","E"],["S","F","C",
2021-11-15 12:50:20
1207
18
原创 深入浅出TCP三次握手 (多图详解)
文章目录前言1、TCP是什么?2、TCP首部格式3、TCP的连接建立4、三次握手图文详解5、三次握手文字总结5、是否可以使用“两报文握手”建立连接?6、两次握手文字总结前言TCP三次握手和四次挥手是面试题的热门考点,它们分别对应TCP的连接和释放过程,今天我们先来认识一下TCP三次握手过程,以及是否可以使用“两报文握手”建立连接?。1、TCP是什么?TCP是面向连接的协议,它基于运输连接来传送TCP报文段,TCP运输连接的建立和释放,是每一次面向连接的通信中必不可少的过程。TCP运输连接有以下
2021-11-08 09:06:54
166997
29
原创 面试官:TCP和UDP两者的区别是什么?
TCP和UDP的区别TCP和UDP都位于计算机网络模型中的运输层,它们负责传输应用层产生的数据。在面试中也经常会问TCP和UDP的区别,下面我们将从几个方面来聊一聊TCP和UDP分别的特征和他们的区别。1、概念UDP和TCP 在使用TCP/IP 体系结构的网络通信中,这两个协议的使用频率仅次于网际层的IP协议。TCP/IP 体系结构应用层中的某些协议需要使用运输层的TCP 提供的服务,而另一些协议需要使用运输层的UDP 提供的服务,UDP 是用户数据报协议的英文缩写词,TCP 是传输控制协议的英文
2021-11-01 12:30:38
15497
12
原创 LeetCode 416. 分割等和子集 【c++/java详细题解】
来自专栏《LeetCode高频面试题》 欢迎订阅 目录1、题目2、思路3、二维c++代码4、二维java代码5、一维优化6、一维c++代码7、一维java代码1、题目给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例 1:输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。示例 2:输入:nums = [1,2,3,5]...
2021-10-28 17:00:41
41796
3
原创 面试官问我:从地址栏输入URL到显示页面都发生了什么?(建议收藏)
文章根据B站 计算机网络微课堂(有字幕无背景音乐版)(陆续更新中…) 视频整理。本文收录于 计算机网络,欢迎订阅。目录前言1、DNS解析2、TCP连接3、发起HTTP请求4、处理请求5、浏览器渲染6、TCP连接断开7、总结前言从地址栏输入URL到显示页面都发生了什么?这是一道面试经常会考的面试题。那么下面我们就来探讨一下从你输入URL后到响应,都经历了哪些过程。1、DNS解析我们在用户PC中使用网页浏览器来访问外部服务器的内容,在网页浏览器的地址栏中输入外部服务器的域名。比如我们输入ww.
2021-10-24 10:27:47
12273
23
原创 【计算机网络】 HTTP协议及相关面试题整理 (建议收藏)
本文收录于 计算机网络,欢迎订阅。目录1、认识Http1.1、什么是Http1.2、什么是超文本1.3、万维网2、HTTP报文格式2.1、HTTP请求报文格式2.2、HTTP响应报文格式3、使用Cookie在服务器上记录用户信息3.1、Cookie概念3.2、具体过程4、HTTP1.0和HTTP1.14.1、HTTP1.04.2、HTTP1.14.3、HTTP/1.1 和 HTTP/1.0 的区别5、HTTPS5.1、HTTPS概念5.2、HTTPS 的加密方式5.3、HTTP 与 HTTPS 有哪些.
2021-10-20 14:49:12
9984
17
原创 LeetCode 91. 解码方法【c++/java详细题解】
本文收录于LeetCode高频面试题,480道后端面试高频力扣题解,欢迎订阅。目录1、题目2、思路3、c++代码4、java代码1、题目一条包含字母 A-Z 的消息通过以下映射进行了 编码 :'A' -> 1'B' -> 2...'Z' -> 26要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,"11106" 可以映射为:"AAJF" ,将消息分组为 (1 1 10 6)"KJF" ,将消息分组为 (11 10 6.
2021-10-16 11:51:26
5255
14
原创 第一届LeetCode刷题打卡赢现金活动开始啦,助力每一位想拿大厂offer的小伙伴!
大家好,我是林深时不见鹿!CSDN算法领域优质创作者,同时是LeetCode校园之星,AcWing校园代理,负责在校园内推广LeetCode和AcWing两大刷题网站。第一届Leetcode(剑指Offer)刷题打卡活动即将开始啦 (助力大厂Offer收割机)~活动形式:在LeetCode上刷题,在自己的CSDN博客上写题解,每日题数不限。开始时间10.15日,结束时间11.15日。参加活动的小伙伴,一定要在群文档中填写自己的昵称,累计题量和博客链接哦!获奖形式:限时一个月,刷题数量最多,题解文章
2021-10-08 18:51:28
1638
19
原创 剑指 Offer 53 - I. 在排序数组中查找数字 I 【 c++/java详细题解 】
目录1、题目2、思路3、c++代码4、java代码1、题目统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0提示:0 <= nums.length <= 10^5-10^9 <= nums[i] <= 10^9nums 是一个非递减数组-10^9 <= target <
2021-10-08 09:41:05
1955
12
原创 剑指 Offer 46. 把数字翻译成字符串 【 c++/java详细题解 】
1、题目给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"提示:0 <= num < 2^312、思路(动态规划) O(logn)O(log
2021-10-07 09:13:09
2953
8
原创 LeetCode 213. 打家劫舍 II【c++/java详细题解】
目录1、题目2、思路3、c++代码4、java代码1、题目你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。示例 1:输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 =
2021-09-21 10:16:04
45379
13
原创 LeetCode 61. 旋转链表 【c++/java详细题解】
目录1、题目2、思路3、c++代码4、java代码1、题目给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例 2:输入:head = [0,1,2], k = 4输出:[2,0,1]提示:链表中节点的数目在范围 [0, 500] 内-100 <= Node.val <= 1000 <= k <= 2 * 1092、思路
2021-09-17 15:16:08
3475
15
350道Java面试题手册+Java基础面试题.rar
2021-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人