自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 调用Java方法后弹出栈帧及处理返回结果

generate_call_stub()函数接下来的代码实现如下:// 保存方法调用结果依赖于结果类型,只要不是T_OBJECT, T_LONG, T_FLOAT or T_DOUBLE,都当做T_INT处理// 将result地址的值拷贝到c_rarg0中,也就是将方法调用的结果保存在rdi寄存器中,注意result为函数返回值的地址__ movptr(c_rarg0, result);Label is_long, is_float, is_double, exit;// 将result_typ

2021-08-14 09:38:18 422

转载 Netty 源码分析系列(二)Netty 架构设计

Channel 注册到 Selector使用 SelectableChannel的register方法,可将Channel注册到Selector。方法接口源码如下:public final SelectionKey register(Selector sel, int ops) throws ClosedChannelException{ return register(sel, ops, null);}public abstract SelectionKey register(

2021-08-06 11:05:17 247

转载 NET5控制台程序使用EF连接MYSQL

NET5控制台程序使用EF连接MYSQL1.使用nuget下载:Microsoft.Extensions.Configuration.JsonPomelo.EntityFrameworkCore.MySql2.数据库中创建好表:CREATE TABLE user2 (mid int NOT NULL AUTO_INCREMENT,uname varchar(45) NOT NULL,memo varchar(200) DEFAULT NULL,PRIMARY KEY (mid)) ENG

2021-08-06 10:51:45 401

转载 创建 C++ WinRT 组件

通过 Cpp/WinRT 项目模板创建一个 WinRT 组件工程 CppWinrtComponent.vcxproj,主要接口定义如下:Copynamespace CppWinrtComponent{[default_interface]runtimeclass Class{Class();String GetModule();}}最终该项目 CppWinrtComponent 可以被编译生成两个 WinRT 组件的核心部分:CppWinrtComponent.winmd, 提供接口

2021-08-05 15:40:59 691

转载 MySQL Shell import_table数据导入

Load Data 与 import table功能示例该部分针对import table和Load Data相同的功能做命令示例演示,我们依旧以导入employees表的示例数据为例,演示MySQL Load Data的综合场景数据自定义顺序导入数据函数处理自定义数据取值示例数据如下[root@10-186-61-162 tmp]# cat employees_01.csv“10001”,“1953-09-02”,“Georgi”,“Facello”,“M”,“1986-06-26”“.

2021-08-05 15:39:36 228 1

转载 JAVA并发(5)-并发队列LinkedBlockingQueue的分析

LinkedBlockingQueue的构造器public LinkedBlockingQueue() { this(Integer.MAX_VALUE);}public LinkedBlockingQueue(int capacity) { if (capacity <= 0) throw new IllegalArgumentException(); this.capacity = capacity; // head与last指向哨兵节点 last

2021-06-10 15:08:04 230

转载 Redis(二) 数据类型操作指令以及对应的RedisTemplate方法

1.Redis key值操作以及RedisTemplate对应的API本文默认使用RedisTemplate,关于RedisTemplate和StringRedisTemplate的区别如下复制代码RedisTemplate和StringRedisTemplate二者主要区别是他们使用的序列化类不一样,RedisTemplate使用的是JdkSerializationRedisSerializer,StringRedisTemplate使用的是StringRedisSerializer,两者的数据

2021-06-10 15:05:14 2833

转载 .Net RabbitMQ实战指南——进阶(一)

using (var channel = connection.CreateModel()){//设置备胎交换器参数var arguments = new Dictionary<string, object>();arguments.Add(“alternate-exchange”,“myAe”);channel.ExchangeDeclare(“normalExchange”, “direct”,true,false, arguments);channel.ExchangeDecl

2021-06-10 11:13:11 179

转载 vue3函数setUp和reactive函数详细讲解

1 setUp的执行时机我们都知道,现在vue3是可以正常去使用methods的。但是我们却不可以在setUp中去调用methods中的方法。为什么了???我们先了解一下下面这两个生命周期函数,分别是:beforeCreate 表示data 中的数据还没有初始化,是不可以使用的Created : data已经被初始化了,可以使用setUp在beforeCreate 和 Created 这两个函数之间。是不是就知道为啥setUp中不可以去调用methods中的方法了。2.setUp中无法使用

2021-06-10 11:11:26 2090

转载 STM32使用DMA发送串口数据

2、代码DMA串口发送的代码是在上一篇文章DMA串口接收的基础上修改的。复制代码void UART_Init(void){USART_InitTypeDef USART_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;/* Enable GPIO clock /RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

2021-06-10 11:08:24 1066

转载 Hadoop 数据迁移用法详解

数据迁移使用场景冷热集群数据分类存储,详见上述描述.集群数据整体搬迁.当公司的业务迅速的发展,导致当前的服务器数量资源出现临时紧张的时候,为了更高效的利用资源,会将原A机房数据整体迁移到B机房的,原因可能是B机房机器多,而且B机房本身开销较A机房成本低些等.数据的准实时同步.数据的准实时同步与上一点的不同在于第二点可以一次性操作解决,而准实时同步需要定期同步,而且要做到周期内数据基本完全一致.数据准实时同步的目的在于数据的双备份可用,比如某天A集群突然宣告不允许再使用了,此时可以将线上使用集群直接切向

2021-06-10 11:07:18 491

转载 C语言编译器开发之旅(二):解析器

解析器将识别的语言定义一个语法。我么这里采用BNF描述:expression: number| expression ‘*’ expression| expression ‘/’ expression| expression ‘+’ expression| expression ‘-’ expression;number: T_INTLIT;我们都知道BNF定义的语法是递归定义的,那么我们也需要一个递归函数去解析输入的表达式。在我们现有的语法元素可以构成的表达式中第一个语法元素始终为数字

2021-06-10 11:06:20 591

转载 ES8的新特性SharedArrayBuffer

Worker和Shared memory在nodejs中,引入了worker_threads模块,可以创建Worker. 而在浏览器端,可以通过web workers来使用Worker()来创建新的worker。这里我们主要关注一下浏览器端web worker的使用。我们看一个常见的worker和主线程通信的例子,主线程:var w = new Worker(“myworker.js”)w.postMessage(“hi”); // send “hi” to the workerw.on

2021-06-10 11:05:27 147

转载 Java并发之AQS原理剖析

数据结构:基本属性:复制代码/**同步等待队列的头结点*/private transient volatile Node head;/**同步等待队列的尾结点*/private transient volatile Node tail;/**同步资源状态/private volatile int state;复制代码内部类:复制代码static final class Node {/*标记节点为共享模式/static final Node SHARE

2021-06-03 11:43:20 70

转载 利用js判断文件是否为utf-8编码

使用FileReader以utf-8格式读取文件,根据文件内容是否包含乱码字符�,来判断文件是否为utf-8。如果存在�,即文件编码非utf-8,反之为utf-8。代码如下:const isUtf8 = async (file: File) => {return await new Promise((resolve, reject) => {const reader = new FileReader();reader.readAsText(file);reader.onloaden

2021-06-03 11:41:04 2152

转载 F5 api接口开发实战(一)

3、 使用python的第三方库进行开发可以使用python的requests包直接与F5进行交互,但F5有对接口进行封装的第三方库,可以避免重复造轮子。本人使用的python版本为3.7.5,restful的第三方库为f5-sdk,soap的第三方库为bigsuds。其中rest的封装库有文档,链接如下:https://f5-sdk.readthedocs.io/en/latest/。基本使用方式为使用ip地址、用户名、密码进行认证,使用web页面登陆的用户名和密码。安装第三方库:pip inst

2021-06-03 11:13:53 506

转载 在Spring Bean实例过程中,如何使用反射和递归处理的Bean属性填充?

工程结构small-spring-step-04└── src├── main│ └── java│ └── cn.bugstack.springframework.beans│ ├── factory│ │ ├── factory│ │ │ ├── BeanDefinition.java│ │ │ ├── BeanReference.java│ │ .

2021-06-03 11:06:12 220

转载 redux 源码浅析

参数一共可接受三个参数:reducer (函数): 一个返回下一个状态树的还原函数,给定当前状态树和一个要处理的动作。[preloadedState] (任意值): 初始值, 可以是来自于 storage 中的; 如果你用combinedReducers产生了reducer,这必须是一个普通对象,其类型与传递给它的键相同。也可以自由地传递任何你的reducer能够理解的东西。[enhancer] (函数): store 的增强器, 可以选择性的增强, 用代码来说就是 enhancer(create

2021-06-03 11:01:45 115

转载 CSS 奇思妙想 | Single Div 绘图技巧

Wow,其实这里,我们只需要元素本身实现正方形,元素的两个伪元素利用绝对定位实现两个圆形,叠加在一起即可!完整的代码也非常简单:div {position: relative;transform: rotate(45deg);background: rgba(255, 20, 147, 0.85);width: 140px;height: 140px;}div::before,div::after {content: “”;position: absolute;top: 0;lef

2021-06-03 10:40:46 207

转载 深入理解JVM

双亲委派机制的优点:沙箱安全机制:避免核心API被篡改。自己写的java.lang.String.class类不会被加载。避免重复加载:如果父加载器已经加载过该类,子类加载器就没有必要再去加载。  双亲委派机制加载类的核心代码 ClassLoader类的loadClass()方法:复制代码1 protected Class<?> loadClass(String name, boolean resolve)2 throws ClassNotFoundExcep

2021-06-03 10:37:24 63

转载 .NET Worker Service 添加 Serilog 日志记录

.NET 日志记录框架.NET 中有很多默认的日志记录提供程序[3],它们可以将日志输出到控制台、Debug、EventSource 和 EventLog 等,例如在上一篇的示例中,默认的实现是将日志记录输出到了控制台窗口。但是 .NET 中没有可以帮我们将日志信息输出到文件和数据库的内置提供程序,而这却是我们在生产环境中十分常见的应用场景。为了实现这一功能,我们需要为 .NET 实现自定义的日志记录提供程序[4],这需要大量时间,因为需要考虑很多事情,比如读写性能、存储空间、配置等等。幸运的是,一些

2021-06-02 11:54:07 161

转载 [Django高级之forms组件]

[Django高级之forms组件]forms组件之校验字段第一步:定义一个类,继承forms.Form第二步:在类中写字段,要校验的字段,字段属性就是校验规则第三步:实例化得到一个Form对象,把要校验的数据传入第四步:调用 对象.is_valid()校验,校验通过就是True 可以判断是否符合定义的字段条件 第五步:校验通过有 对象.cleaned_data获取符合校验规则的数据第六步:校验不通过 对象.errors获取不符合校验的字段、以及错误信息前戏写一个注册页面获取用

2021-06-02 11:42:34 161

转载 Python函数装饰器高级用法

函数装饰器和闭包紧密结合,入参func代表被装饰函数,通过自由变量绑定后,调用函数并返回结果。使用clock装饰器:import timefrom clockdeco import clock@clockdef snooze(seconds):time.sleep(seconds)@clockdef factorial(n):return 1 if n < 2 else n*factorial(n-1)if name==‘main’:print(’’ * 40, ‘Calling

2021-06-02 11:37:00 162

转载 .NET技术与企业级信息化解决方案咨询

时机决定一切,对于 .NET5 也是如此。实际上微软.NET团队在开始开发 .NET Core 时,对 .NET Framework 的全面重写是不可想象的。当时Microsoft 正在响应在 Linux、容器中和 PaaS 上显著增强 Azure 托管体验的需求。因此,公司专注于推出一些产品来满足客户和 Azure 产品团队的需求。在 .NET Core 2.0 中,任务扩展到匹配 .NET Framework 中的功能。同样,团队专注于发布一些可行的产品,而不是盲目地推出过多产品。但随着 .NET C

2021-06-02 11:31:02 143

转载 java面试一日一题:java中的垃圾回收器

问题:请讲下java中垃圾回收器有哪些?分析:该问题主要考察hotspot虚拟机下实现的垃圾回收器回答要点:主要从以下几点去考虑,1、垃圾回收器的种类2、每种垃圾回收器的着重点是什么前边的文章中分享了“如何设计一个垃圾回收器”、“垃圾回收算法”、“垃圾回收中的并行并发”等,今天打算分享下hotspot虚拟机中的垃圾回收器。先看下垃圾回收器的分类,分类标准有按照垃圾回收线程和用户线程的关系、工作的内存区域垃圾回收线程和用户线程的关系串行serial、serial old并行parNew

2021-06-02 11:24:48 57

转载 JMicro微服务之超时&重试

超时&重试客户端调用服务时,由于网络抖动,服务故障等原因,不能及时响应给客户端,往往需要重试一两次才能成功,而不应该在发生超时时就直接给调用者失败结果,这样不友好,往往让用户怀疑我们服务的稳定性和可用性。比如平时访问某个网站,页面出现长时间读条加载的情况,我们往往按一下刷新按钮就能很快成功打开页面。在微服务调用中,往往由服务调用者在收到失败响应后,根据业务场景发起合理的重试请求。JMicro在框架级别提供这种配置并且由平台自动做重试操作,提高服务调用的成功率。JMicro超时重试配置在前面J

2021-06-02 11:17:17 265

转载 多表联合查询 - 基于注解SQL

简介大概流程就是先把要联合查询的参数封装到一个类里进行返回 - 结果类再在mapper中注入SQL查询语句 - @Select最后在service中拼接查询条件 - QueryWrapper构造器(这里没用Lambda构造器,因为它不支持编写自定义的字段名)正文我们就按照上面的流程来演示:先贴一下这里我们要执行的SQL查询语句:这里只贴了我们手写的部分,还有一部分是程序在后面自动追加的(比如条件、分页),这里先不写select device.*, car.car_number from gp

2021-06-02 11:15:29 714

转载 SpringBoot基础学习(二) SpringBoot全局配置文件及配置文件属性值注入

在.NET 6(preview 4)中引入了两个期待已久的类型,将作为核心库的一部分。DateOnly和TimeOnly允许开发人员表示DateTime的日期或时间部分。这两个类型为值类型(struct type),可以在代码中独立处理日期或时间概念时使用,它们定义在System命名控件中,使用它们可以与数据库中允许表示相同类型数据的方式保持一致。具体来说,这些类型与SQL Server数据库中日期和时间类型可以很好的进行匹配。注意:如果你要使用这两种类型,需要下载并安装.NET 6(preview 4)

2021-06-02 11:09:59 171

转载 在.NET 6中使用DateOnly和TimeOnly

dotnet-dump是微软官方推出的一个.NET全局工具,安装和使用都非常简单。安装:dotnet tool install --global dotnet-dump使用:dotnet-dump collect --process-id 1902 # pid但是它不能够自动dump(也可能是我不知道),所以本文主要讨论下面这个工具ProcDump for linux本工具是 ProcDump 的社区 linux 移植版,不过主要开发人员也是微软的员工。它可以实现根据 CPU 占用 、内存占

2021-06-02 11:08:13 126

转载 synchronized用法初体验

一、从场景中体验synchronized是谁击败了主宰在峡谷中,击败主宰可以获得高额的经济收益。因此,在条件允许的情况下,大家都会争相击败主宰。于是,哪吒和敌方的兰陵王开始争夺主宰。按规矩,谁是击败主宰的最后一击,谁便是胜利的一方。假设主宰的初始血量是100,我们通过代码来模拟下:public class Master {//主宰的初始血量private int blood = 100;//每次被击打后血量减5public int decreaseBlood() { blood =

2021-05-26 13:56:32 85

转载 前端Node的实用方法

一、什么是NodeNode是以基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型(I/O是 input/output的缩写,即输入输出端口,在传统的编程模式中,I/O操作阻塞了代码的执行,极大的降低了程序的效率),Node的出现让JavaScript 运行在服务端的开发平台,具有相当重要的意义二、初识Node1、路径node通过ch切换路径到文件路径,node的工作路径如果不切换会导致操作的失败d:可以切换盘符,通过ch切换到工作文件2、命令获取路径

2021-05-26 11:51:42 562

转载 ASP.NET Core文件压缩最佳实践

误区1:未使用 Brotil 压缩  几乎不需要任何额外的代价,Brotil 压缩算法可以帮助你的网站提升约 20% 静态资源加载性能。同时启用 Gzip / Brotil 压缩Gzip 有更好的 user-agent 兼容性,而 Brotli 有更好的性能。所以我们通常需要在 ASP.NET Core 网站中同时启用这两种压缩。如何区分 Gzip 压缩和 Brotli 压缩网站启用 Brotli 压缩时,服务器请求返回头 Content-Encoding 中会包含 br 字样,否则是 gzip

2021-05-26 11:50:02 263

转载 C++ 虚函数的内部实现

阅读这篇文章,你需要事先了解以下几个概念:什么是继承?什么是虚函数?在C++中,在基类的成员函数声明前加上关键字 virtual 即可让该函数成为 虚函数,派生类中对此函数的不同实现都会继承这一修饰符。为什么需要虚函数?这涉及到面向对象程序设计中多态、动态绑定的概念。进程的内存分布如果你已经完全了解上述概念,那么这篇文章很适合你去深入了解虚函数~C++中类的memory Layout为了更好地理解虚函数的内部实现,我们首先需要知道,C++的类中成员函数和成员变量在内存中的空间分配。

2021-05-17 11:21:00 149

转载 Java GUI入门手册:

通过上图,可以看出frame是由构造方法的重载;可以选择的设置窗口的标题;为了让一个基本的窗口显示,我们需要设置窗口的可见性;必须为了美观,我们设置:窗口大小窗口颜色生成窗口的初始位置在左上角,可以设置初始的弹出位置创建窗口:import java.awt.*;public class TestFrame {public static void main(String[] args) {//窗口Frame frame = new Frame(“我的第一个Java图形化窗口”);//设

2021-05-17 11:09:26 167

转载 Kafka源码分析(二) - 生产者

一. 使用方式show the code.public class KafkaProducerDemo {public static void main(String[] args) { // step 1: 设置必要参数 Properties config = new Properties(); config.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092,12

2021-05-17 11:06:32 204

转载 Go语言源码分析之unsafe

Go语言源码分析之unsafe1.什么是unsafeunsafe 库让 golang 可以像C语言一样操作计算机内存,但这并不是golang推荐使用的,能不用尽量不用,就像它的名字所表达的一样,它绕过了golang的内存安全原则,是不安全的,容易使你的程序出现莫名其妙的问题,不利于程序的扩展与维护。先简单介绍下Golang指针类型:*类型:普通指针,用于传递对象地址,不能进行指针运算。unsafe.Pointer:通用指针类型,用于转换不同类型的指针,不能进行指针运算。uintptr:用于指针运

2021-05-17 11:04:19 254

转载 Spring Security 入门(基本使用)

Spring Security 入门(基本使用)这几天看了下b站关于 spring security 的学习视频,不得不说 spring security 有点复杂,脑袋有点懵懵的,在此整理下学习内容。1、入门1.1、什么是 spring securityspring security 是一个比 shiro 更加强大的安全管理框架,权限颗粒度更细。源自于 spring 家族,能跟 springboot 无缝整合,对 oauth2 的支持也更好。1.2、依赖配置org.springframew

2021-05-17 10:59:23 317

转载 如何实现一个 System Services?

System Service 是如何写的?应用调用DisplayManager dm = getSystemService(DisplayManager.class);dm.setTemporaryBrightness(0.0f);Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 0);看下 getSystemService 方法,在 Context 类里。Context#getSyst

2021-05-17 10:57:23 997

转载 MySQL进阶篇SQL优化(InnoDB锁-间隙锁)

1.概述当我们用范围条件而不是相等条件检索数据,并请求共享或排他锁时,InnoDB会给符合条件的已有数据记录的索引项加锁;对于键值在条件范围内但并不存在的记录,叫做“间隙(GAP)”,InnoDB也会对这个“间隙”加锁,这种锁机制就是所谓的间隙锁(Next-Key锁)。2.InnoDB存储引擎的间隙锁阻塞例子先创建一个间隙临时表,ID为主键自增:MySQL [(none)]> CREATE TABLE goods. tab_gap (ID INT NOT NULL auto_increment

2021-05-17 10:55:17 184

转载 Spring-Cloud之Ribbon原理剖析

我们知道Ribbon主要的工作就是进行负载均衡,帮助我们无需再关注微服务中集群的地址信息,因此在源码剖析中我们就主要关注这部分的内容。内置的负载均衡规则RoundRobinRule:直接轮询的方案;即每次从server list中依次选择。AvailabilityfileringRule:根据服务器可用性来决定;比如某个服务器的并发请求过高,那么此时ribbon就会绕过不再访问;同时如果3次连接失败就会等待30秒后再次访问;如果不断失败,那么等待时间会不断变长,如果某个服务器的并发请求太高了,那么会绕

2021-05-17 10:54:06 125

空空如也

空空如也

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

TA关注的人

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