自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 AntDesign Pro + .NET Core 实现基于JWT的登录认证

修改ASP.NET Core后端代码“JwtSetting”: {“SecurityKey”: “xxxxxxxxxxxx”, // 密钥“Issuer”: “agileconfig.admin”, // 颁发者“Audience”: “agileconfig.admin”, // 接收者“ExpireSeconds”: 20 // 过期时间 s}在appsettings.json文件添加jwt相关配置。public class JwtSetting{static JwtSetting(

2021-04-25 11:10:29 164

转载 elasticsearch-head插件的作用

二、elasticsearch-head插件的安装下载elasticsearch-head插件,地址:https://github.com/mobz/elasticsearch-head进入elasticsearch-head源码目录中,执行 npm install在运行npm install时,可能会存在Head插件phantomjs权限问题npm WARN deprecated [email protected]: this package is now deprecatedn

2021-04-25 11:00:22 255

转载 JavaScript中的事件循环机制跟函数柯里化

一、事件循环机制的理解test();//按秒输出5个5function test() {for (var i = 0; i < 5; i++) {setTimeout(() => {console.log(i);}, 1000 * i);//for循环里面添加异步操作}}test();//分别按秒输出0 1 2 3 4function test() {for (let i = 0; i < 5; i++) {setTimeout(() => {con

2021-04-25 10:58:10 74

转载 c++:一个辅助类让内存泄漏现原形!

如何判断内存有泄漏内存分配和释放对应的操作是new、delete。如何判断内存是否释放干净?其实判断起来非常简单:一个独立的模块整个生存周期内new的个数和delete的个数相等。用伪代码标示如下:复制代码int newCount = 0;int deleteCount = 0;//new 操作时new class();newCount++;//delete 操作时delete* objPtr;deleteCount++;//模块结束时if(newCount != delete

2021-04-25 10:57:14 149

转载 JVM 中的异常

StackOverflowError(栈溢出)在 JVM 的栈中,栈的大小可以是固定的,也可以是动态变化的。如果采用固定大小的栈,那么如果线程要创建的栈帧大小大于栈容量的大小时,就会抛出 java.lang.StackOverflowError。比如下面的代码public class StackErrorTest {public static void main(String[] args) { main(args);}}无限递归,那么就会不停的创建栈帧,最终撑爆栈空间,抛出栈移除异常

2021-04-23 10:43:15 114

转载 C语言之结构体内存的对齐

零. 引例我们先来看一个例子:struct S1{char c1;int i;char c2;};大家来猜猜这个结构体S1的内存是多少?相信会有人给出 6 的结果,他们或许是这样想的,两个 char 类型分别为一个字节,一个 int 类型又为4个字节,加起来刚好为6个但是结果真是如此吗?我们来看看运行结果:为什么呢,接下来我们就引出正文。一.结构体内存对齐规则首先,正如引例所示,结构体的内存并不是简简单单的将结构体各个成员的大小相加。结构体的大小往往遵循着结构体的对齐规则:

2021-04-23 10:34:32 119

转载 奇思妙想 CSS 文字动画

使用 link 标签引入:OR,在 CSS 代码中,使用 @import 引入:上述两种方式内部其实都是使用的 @font-face 进行了字体的定义。我们可以通过 @font-face 快速声明指定一个自定义字体。类似这样:@font-face {font-family: “Open Sans”;src: url("/fonts/OpenSans-Regular-webfont.woff2") format(“woff2”),url("/fonts/OpenSans-Regular-w

2021-04-23 10:22:26 280

转载 《实用的Python编程》05_01_Dicts_revisited

5.1 再谈字典Python 对象系统主要基于字典实现。本节将对此进行讨论。字典字典是命名值(named values)的集合。stock = {‘name’ : ‘GOOG’,‘shares’ : 100,‘price’ : 490.1}虽然字典常用于简单的数据结构,但是字典也用于解释器的关键部分。字典可能是 Python 中最重要的数据类型。字典和模块在模块内,字典存储所有的全局变量和函数。foo.pyx = 42def bar():…def spam():…可以通过

2021-04-22 11:32:14 84

转载 如何在 C# 中使用 ArrayPool 和 MemoryPool

什么是 ArrayPoolSystem.Buffers 命名空间下提供了一个可对 array 进行复用的高性能池化类 ArrayPool,在经常使用 array 的场景下可使用 ArrayPool 来减少内存占用,它是一个抽象类,如下代码所示:public abstract class ArrayPool{}可以想象一下你的业务场景中需要多次实例化 array,这么做有什么后果呢? 很显然每一次 new array 都会在托管堆上分配,同时当 array 不再使用时还需要 GC 去释放,而 Arr

2021-04-22 11:21:49 215

转载 java的面向对象

在IDEA中使用Alt+Insert可以选择construct可以快速创建构造器。eg:package Creat;//类一public class Creat01 {public String name;int age;public Creat01(){this.age=10;this.name=“待输入”;}public Creat01(String name) {//一个参数 this.name = name;}public Creat01(String name,

2021-04-22 11:19:41 54

转载 循环队列

代码实现既然现在队列是满是空的判断条件有了,队列长度也能计算出来了,那么代码就好改造了(基于上一章),变成循环队列。package circle;import java.util.Scanner;public class CircleArrayQueue {public static void main(String[] args) {System.out.println("-----测试循环队列-----");// 创建一个队列CircleArray circleArray = new C

2021-04-22 11:13:52 51

转载 单链表反转

经常问单链表的算法,那你首先要定下来链表的结构,而不是直接思考算法。为了方便使用,我们固定一个哨兵作为头节点。数据节点都在头节点之后。/**@author Ryan Miao*/@Datastatic class Node {//是否是head节点。 true-YESprivate Boolean head;private Integer data;private Node next;}那么,我们创建的一个节点是这样的Node head = new Node();head.s

2021-04-22 11:13:00 47

转载 简单使用MenuItem特性

using UnityEngine;using UnityEditor;public class Tools{[MenuItem(“Tools/test”)]static void Test(){Debug.Log(“test”);}}复制代码2.路径设置在方法上添加MenuItem特性,在MenuItem的括号中传入路径字符串参数,路径中使用/进行目录分级。第3个参数priority为选项在目录中的显示顺序,这个值默认是1000。复制代码using UnityEngine;u

2021-04-14 14:27:14 571

转载 Spring应用上下文生命周期

Spring应用上下文生命周期整体分成四个阶段ConfigurableApplicationContext#refresh,加载或者刷新持久化配置ConfigurableApplicationContext#start,启动应用上下文ConfigurableApplicationContext#stop,停止应用上下文ConfigurableApplicationContext#close,关闭应用上下文,释放锁定资源实际上refresh执行完成后Spring应用上下文从广义上来说已经启动了,st

2021-04-14 14:22:51 158

转载 深入理解gradle中的task

定义task定义一个task可以有很多种方式,比如下面的使用string作为task的名字:task(‘hello’) {doLast {println “hello”}}task(‘copy’, type: Copy) {from(file(‘srcDir’))into(buildDir)}还可以使用tasks容器来创建:tasks.create(‘hello’) {doLast {println “hello”}}tasks.create(‘copy’, Copy) {

2021-04-14 14:20:37 115

转载 内存耗尽后Redis会发生什么

内存回收使用Redis 服务时,很多情况下某些键值对只会在特定的时间内有效,为了防止这种类型的数据一直占有内存,我们可以给键值对设置有效期。Redis 中可以通过 4 个独立的命令来给一个键设置过期时间:expire key ttl:将 key 值的过期时间设置为 ttl 秒。pexpire key ttl:将 key 值的过期时间设置为 ttl 毫秒。expireat key timestamp:将 key 值的过期时间设置为指定的 timestamp 秒数。pexpireat key tim

2021-04-14 14:16:02 112

转载 【DP】区间DP入门

结合模板题(合并石子)讲述:https://www.acwing.com/problem/content/284/因为题目具有合并相邻物品的性质,所以在合并的过程中,必然会在最后一步出现两个物品合二为一的情况,而这两个物品则是分别由左侧的物品、右侧的物品合并而来的。 因此,我们的思路是枚举最后一步合并两个物品时候的断点(记为 k ),为了方便起见,我们可以将断点放在某个物品上面。结合样例具体来说:k1 3 5 2k1 3 5 2k1 3 5 2k1 3 5 2上面便是四个断点。对于本

2021-04-14 14:14:44 80

转载 解决蛋疼的MySQL 8.0连接问题

1.老革命遇到新问题使用MySQL 8.0的客户端连接Doris时,如果不添加如下参数–default-auth=mysql_native_password的话,总会出现如下提示的密码认证错误:ERROR 1045 (28000): Access denied for user ‘default_cluster:test’ (using password: YES)同样的密码认证问题也会同时出现在了使用ODBC的MySQL 8.0以上的Driver连接Doris时。更令人蛋疼的是,使用ODBC链接时并

2021-04-14 14:13:45 2447 1

转载 【C#】反射的用法及效率对比

反射实例化类public class Person{public string Name { get; set; }public Person(string name){ this.Name = name;}public string Say(string msg){ return $"{Name}: {msg}";}}class Program{// 测试次数const int count = 10000000;static void Main(strin

2021-04-13 14:25:06 132

转载 C++ 中的智能指针-基础

在现代 C++ 中,原始指针只用于包含在局部作用域,循环或者工具函数的小块代码中(对性能有要求,并且对资源的所有权也不容易混淆)。智能指针通常提供了获取原始指针的方式。 C++ 标准库中的智能指针包含了成员函数 get 来获取原始指针。unique_ptr vs shared_ptr vs weak_ptrunique_ptr对封装的原始指针是独占的默认用于 POCO,除非你明确的知道你需要一个 shared_ptr可以移入新的所有者,但不能拷贝或者共享替代 auto_ptr,auto_ptr

2021-04-13 14:24:21 521

转载 Java并发包源码学习系列:线程池ThreadPoolExecutor源码解析

public class ThreadPoolExecutor extends AbstractExecutorService {// 原子的Integer变量ctl,用于记录线程池状态【高3位】和线程池中线程个数【低29位】,这里假设Integer是32位的private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));// 其实并不是每个平台的Integer二进制都是32位的,实际上是,二进制位-3代表线程个数priv

2021-04-08 13:41:09 72

转载 Dubbo SPI 机制源码分析(基于2.7.7)

怎么获取扩展实现在 Dubbo 里,如果一个接口标注了 @SPI 注解,那么它就表示一个扩展点类型,这个接口的实现就是这个扩展点的实现。比如 Protocol 接口的声明:@SPI(“dubbo”)public interface Protocol {}一个扩展点可能存在多个实现,可以使用 @SPI 注解的 value 属性指定要选择的默认实现。当用户没有明确指定要使用哪个实现时,Dubbo 就会自动选择这个默认实现。getExtension(String name) 方法可以获取指定名称的扩展实

2021-04-08 11:43:36 116

转载 C#中word导出功能骚操作

将没用的东西全部去掉,修改Index.cshtml页面成这样:复制代码1 @{2 ViewBag.Title = “Home Page”;3 }4 5 @ASP.NET@6 <input type=“button” value=“导出” οnclick=“location.href = ‘@Url.Action(“GetExport”,“Home”)’” />7 复制代码在 HomeController 中创建:GetExport创建一个类Expor

2021-04-08 11:42:47 606

转载 java线程实现的三种方式以及静态代理

个进程中若开辟多个线程,线程的运行由调度器控制,先后顺序不能人为干预。实现方式继承 Thread类调用run方法,只有主线程一条路调用start方法,主线程和子线程并行交替执行start方法是进入就绪态public class MyThread extends Thread{@Overridepublic void run() { for (int i = 0; i < 20; i++) { System.out.println("xixi"); }}

2021-04-01 14:23:39 71

转载 java.security框架之加密、摘要及证书

摘要算法-MessageDigest和javax.crypto.Mac(HMAC)单向加密是不可逆的,MD5、SHA、MAC都是属于单向加密算法的一种,也称之为摘要算法MD5、SHA它们会根据明文用哈希算法计算一个固定长度的摘要(哈希值),然后把明文和摘要发送给接收者,接收者根据同样的算法计算出摘要,对比两个摘要是否一样即可验证明文的正确性,它的应用场景是:防止篡改和校验数据MD5、SHA等算法是开源的,容易被试探出来。有没有更安全的摘要算法呢?HMAC-带密钥(密码)的hash函数,用一个密钥和一个

2021-04-01 11:53:03 273

转载 java.security框架之签名

秘钥生成对称加密密钥的生成KeyGenerator用于生成对称秘钥(可逆加密),或者一个密码性秘钥支持算法:AES、ARCFOUR、DES、DESede、HmacMD5、HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512、RC2public static final KeyGenerator getInstance(String algorithm, String provider)public static final KeyGenerato

2021-04-01 11:52:14 247

转载 NET 5.0 Swagger API 自动生成MarkDown文档

主要接口/// /// ISwaggerDocGenerator/// public interface ISwaggerDocGenerator{/// /// 获取Swagger流文件/// /// /// Task GetSwaggerDocStreamAsync(string name);/// /// 获取Swagger MarkDown源代码/// /// /// string GetSwaggerDoc(string name);}2、Startup配置

2021-04-01 11:46:00 356

转载 【java框架】MyBatis-Plus(1)--MyBatis-Plus快速上手开发及核心功能体验(2)

.插件扩展3.1.乐观锁插件当我们在开发中,有时需要判断,当我们更新一条数据库记录时,希望这条记录没有被别人更新,这个时候就可以使用乐观锁插件。乐观锁的实现方式:取出记录时,获取当前的version;更新时,带上这个version;执行更新时,set version = new version where version = oldversion;如果version不对,就更新失败具体实现步骤如下:①数据库新增乐观锁字段version,设置默认值为1:②在实体类User中新增versio

2021-04-01 11:39:43 86

转载 【java框架】MyBatis-Plus(1)--MyBatis-Plus快速上手开发及核心功能体验

可以基于IDEA的Spring Initializr进行SpringBoot项目的创建,或者移步至Boot官网构建一个简单的web starter项目:https://start.spring.io/①导入MyBatis-Plus相关的依赖包、数据库驱动、lombok插件包:pom.xml 文件配置复制代码mysqlmysql-connector-javaorg.projectlomboklombokcom.baomidoumybatis-plus-boot-starte

2021-04-01 11:28:33 116

转载 EF Core 原理从源码出发(二)

紧接着我的上一篇博客,可以点击这里回到上一篇博客,上回分析到ef 两个重要的对象,StateManager和ChangeTracker这个对象,当我们向DbContext添加对象的时候我们会调用如下代码。复制代码1 private EntityEntry SetEntityState(2 TEntity entity,3 EntityState entityState)4 where TEntity : cla

2021-04-01 11:24:35 528

空空如也

空空如也

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

TA关注的人

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