自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

T-T

  • 博客(56)
  • 问答 (4)
  • 收藏
  • 关注

原创 C# WinForm.AutoSizeHelper包介绍

网上有非常多的针对WinForm窗体根据屏幕分辨率自适应大小和位置的解决方案,其思路也是大同小异,都是在窗体构造时记录下每个控件的大小和位置信息,还有窗体设计时的大小,在窗体大小改变时,记录下改变后的窗体大小与设计时的大小的比值,然后利用这个比值去计算和控制每个控件的大小和位置。这个思路是没问题的,可是在工程实践中,这只能满足基本的分辨率适应需求,有些需求始终满足不了,我举几个常见的例子。

2023-05-25 17:34:26 260

原创 基于vue的tiptap编辑器插件(三)

前面介绍过,tiptap是一个headless的编辑器,所以他自己是没有样式的,我们需要手动给他添加一些样式。文档中介绍了三种美化编辑器的方式,听我一一道来。

2022-08-25 16:07:56 2649

原创 基于vue的tiptap编辑器插件(二)

​ 如标题所见,这一篇我们讲配置,也是官方guide的第一节内容。我会按照文档的guide顺序,根据我自己的理解方式,一点点解读其内容,所以如果你不着急,我建议你看第一手资料;如果你的时间比较紧迫,需要快速上手,可以来看我的这篇专栏。

2022-08-25 14:59:10 2101 1

原创 基于vue的tiptap编辑器插件(一)

​tiptap是一个基于ProMirror(一个用于创建web端的富文本编辑器的工具包)的编辑器。(tiptap is a headless wrapper aroundProseMirror– a toolkit for building rich text WYSIWYG editors.)

2022-08-25 13:20:10 2777 1

原创 webpack笔记(二)

在我们的资源中如果存在css资源,webpack就需要引入相应loader对其处理,在控制台窗口下,输入npm install css-loader style-loader --save下载必要的两个loader。

2022-08-08 16:01:50 174

原创 promise笔记(四)

当js程序执行到异步代码(如定时器,ajax请求等)时,会把异步回调函数放入到队列中,等到同步代码全部执行完后再从队列里取出函数执行。实际上,js有两个队列,分别是宏队列与微队列,宏队列专门放与定时器相关的异步回调,ajax回调,dom事件回调;微队列专门放promise回调和mutation observer回调,关于mutation observer我们现在不用了解,因为这个东西用的很少,所以只需要记住promise是放到微队列就行了。......

2022-08-04 14:35:44 117

原创 mysql包select结果无法同步的问题

在node项目中使用mysql包时,我遇到一个select出来的结果无法同步到主线程的问题。具体来说是这样的,我把sql相关的操作封装在几个js文件中,比如说与tag相关的crud操作,就放在TagHelper.js中,然后在router.js中,配置路由时根据具体的业务去调用helpers。在TagHelper.js中,我封装的select方法无法返回正确的结果集,之前的方法代码如下...

2022-08-03 15:02:18 236

原创 webpack笔记(一)

webpack是一个静态资源打包工具它会一个或多个文件作为打包入口,将整个项目所有文件编译组合成一个或多个文件输出出去,输出的文件是可以直接在浏览器端运行的。我们将webpack输出文件称为bundle...

2022-08-02 14:01:57 140

原创 promise笔记(三)

async 函数是使用async关键字声明的函数。 async 函数是AsyncFunction构造函数的实例, 并且其中允许使用await关键字。async和await关键字让我们可以用一种更简洁的方式写出基于Promise的异步行为,而无需刻意地链式调用promise。...

2022-08-01 21:30:00 133

原创 promise笔记(二)

关键问题一:如何改变promise的状态?1.resolve(value):如果当前promise是pending状态,则变为resolved2. reject(reason):如果当前promise是pending状态,则变为rejected3. 抛异常:如果当前promise是pending状态,则变为rejected......

2022-07-30 21:19:18 276 1

原创 Promise笔记(一)

在编写异步代码时,我们有时会遇到这样的需求,比如先发起一个ajax请求,在这个请求返回数据后,再发起一个ajax请求并且要附带前面返回的数据,那么这里就涉及到一个同步等待结果的问题,也就是异步编程的问题了。在promise出现之前,传统的解决方式是,给请求的api传入一个回调函数,在结果返回时API会自动调用这个回调函数,通常这种回调的参数API都会设计好给我们。但这样也会存在一些瑕疵,后面会讲。......

2022-07-28 15:43:52 231

转载 [flutter]什么是MaterialApp和Material design

对Material design的介绍

2022-07-22 15:40:20 1547

原创 我的第一关来了

最近我裸辞了,肯定有很多人不认同我的做法,认为我现在这个环境下裸辞是个很不理智的决定,我承认确实不太理智,但是没办法,我实在受不了了,我感觉再这样待下去我的心理要出问题了。其实如果今年年初我没报前端培训班的话,我应该是继续走C的路线的,但是C的岗位实在是太少了,薪资也不高,搞C的人基本上两类,一类很基础,就类似我现在的银行内部开发岗,另一类就很牛逼搞底层的那种,中间层次的少之又少,所以我打算还是早点转岗吧。我是在4月19号溜的,离职已经有十天了,租了一间房间,然后可能是因为没有网以及环境太差的原因,这个

2022-04-29 16:47:04 165

原创 关于我对工作的一些想法

今年年初的时候,由于我对当前现状的不满意,萌生出转做前端的想法,但是我又知道自己是个很容易走偏的人,而且对前端也不是很感兴趣,所以我在年初时就报了个线上培训班,还算便宜只花了6K+,从2月份中旬到现在,培训了大概一个半月,html和css部分已结束,目前在模仿一个网站的网页,在实践过程中,发现了自己的一些问题,于是记录一下。第一个问题就是,我对写网页真的提不起太大兴趣,就是成功模仿一个网页后,我感觉我只是在完成作业,丝毫没有所谓的成就感;写网页的时候,也不想动脑子,直接F...

2022-04-03 15:50:56 158

原创 【Android-R1】MediaRecorder和MediaPlayer的基本使用

最近看到网上曾经火热的倒放挑战感觉挺有意思,于是打算研发一款线下游戏APP,让广大群众可以体验一把感受一下。

2022-01-17 22:14:47 2320

原创 《Android编程权威指南(第2版)》第五章挑战练习参考答案

挑战练习在给出答案解析前,我已经默认了你已经跟着本书敲完了本篇章中的必要代码,以及理解了这些代码的逻辑。GeoQuiz应用有一些大漏洞,我们的任务就是堵住这些漏洞。从易到难,以下为待解决的三个漏洞。1. 用户作弊后,可以旋转CheatActivity来清除作弊痕迹。 第一个问题是,为什么旋转CheatActivity会导致作弊痕迹丢失;根据这个问题,我们可以引出一个子问题是,程序原先是如何记录是否作弊的信息并返回给QuizActivity的。...

2021-11-05 12:49:24 387

原创 一个实用的初级算法问题

今天遇到一个挺多场景都会用到的一个初级算法问题,也是在跟着这本《Android编程权威指南》顺带出来的一个小问题,经过我的抽象,问题可以总结为:给你一个固定长度length的数组和一个数组下标index(初始指向数组头),要求实现两个函数pre和next,pre是让数组下标向前移动一步,指向上一个元素;可想而知,next是让数组下标向后移动一步,指向下一个元素。需要注意的是,当当前下标指向最后一个元素并且调用next时,下标会移动到第一个元素;而当当前下标指向第一个元素并且...

2021-10-29 19:39:31 97

原创 没想到吧,我又回来了!

  hi,你浏览到这篇文章极有可能是想寻找其他技术文章吧,不好意思,这只是写给我自己的一篇小文章,同时也是官宣自己要回归继续使用CSDN了!大学毕业之后,本来我也是想继续用CSDN的,但后来大学室友给我安利一个叫hexo的博客框架,我看挺极客的,就花了半个星期搞了一下,把写博客的平台转移到了hexo,也就是自己的服务器上,每次写新文章就new一个,然后在typera中写,写好了改一下图片路径然后hexo g重新生成一些新文件,再在localhost:4000/上查看网页效果,如果没问题就hexo s提交到我

2021-10-24 11:13:49 318

原创 C#的值参数与引用参数的区别

问题的来源  这个问题很有意思,当时是我一个学Java的室友问我C#默认是用值参数传递还是引用参数传递的。因为我很久没有看C#基础知识了,以为当形参是值类型时就采用值传递,是引用类型时就采用引用传递。然后室友继续问,值传递和引用传递有什么区别?我说很久没看了有点忘了。然后今天特意去翻了下书,不得不说,《C#图解教程》这本书里讲的还是很通俗易懂的。第一个问题,C#默认的方法参数传递类型?值传递,兄弟们记住了,与Java一样,都是值传递!第二个问题,值传递与引用传递的区别  首先,我们来看下什么是值传

2020-11-07 23:49:12 652

原创 适用于ASP.NET Core MVC的分页列表类

前言  不知道大家在写MVC网页程序的时候有没有遇到这样的困扰:我想用一个分页列表来查询一页的数据并显示,这种东西第一个想法肯定是去用别人封装好的第三方组件啦,但是看了使用文档后觉得“我不过是用个分页列表,有必要这么麻烦么?”,于是打算自己封装,又发现设计实现上困难重重,于是我写下这篇文章,与大家分享我这个还是非常稚嫩的分页列表类,从参考来源到设计实现再到如何使用。这个分页列表类不需要在容器里注册,这样有个好处是你要用这个就直接建个类文件copy我的代码然后在你的项目中使用就行了。参考来源  参考来源

2020-11-04 19:54:14 1184 2

原创 Identity Core探索之旅(五)

做个简单的Authorization  Authorization,意为授权,当用户登录后,用户已经有了自己的身份信息(我是谁),但是用户也分层级,有普通用户,VIP用户甚至管理员,我们现在要求只能管理员可以登录,怎么做呢?很简单,先了解下怎么配置Authorization。  先在service中配置Authorization: services.AddAuthorization(config => { //先要有一

2020-09-25 21:09:26 238

原创 Identity Core探索之旅(四)

模拟登录登出内部demo  其实我不太想做这一节,但是如果不做,直接做下一节你们又看不懂,索性在这一节做一个模拟登录登出的demo,那大家跟着我做即可。下面大家打开VS跟我一起动手!构建demo先搭建出一个能运行的asp.net core mvc程序,参考我第一节的步骤1,2。在Startup类的ConfigureServices方法里添加代码:services.AddAuthentication("CookieAuth") .AddCookie("Cooki

2020-09-25 19:14:05 151

原创 Identity Core探索之旅(三)

Demo解析  OK,根据上一节的LoginAndLogout demo做一个解析,我们先从依赖注入开始讲起。如果已经了解过这一块的童鞋可以直接跳过。通过依赖注入注册服务  首先我们来看这样一个问题:我们在Data文件夹下写了一个继承自IdentityDbContext的类,为什么要写这个类?因为Identity Core要记录每个人的身份信息,角色信息等,必然需要一个数据库来进行存储啊,而这个类就是用来与数据库打交道的。因为IdentityDbContext已经为我们封装好了它需要的表信息,所以我们

2020-09-22 23:36:49 261

原创 Identity Core探索之旅(二)

  接下来我们通过代码来实现一个包含注册,登录,登出三个功能的小demo。这个demo参考自T0shik的youtube教程,大家当然也可以直接去B站上搜他的视频,对于英语比较好的童鞋我推荐直接看他的视频,否则还是看我的吧哈哈。创建asp.net core web应用程序,选择空项目,把为https配置的那个勾去掉。asp.net core版本为3.1,如果你还停留在2.1的话建议你去下一个。点击创建。2. 配置asp.net core  asp.net core已上手玩家这part略过直接看3

2020-09-19 21:42:26 256

原创 Identity Core探索之旅(一)

前言  本人是一名ASP.NET Core初学者,由于网上Identity的学习资源较少,微软官方文档又写的生涩难懂,相信不少初学者跟我一样不知道该从何学起,而本仓库的目的就是带领大家一起 学习探讨Identity,如有不正确的地方请指出。本项目将参考微软官方文档和Identity源码以及一些视频教程,从identity的使用到为什么这样使用,由浅入深地学习。(大佬请绕道谢谢~)学习计划了解基本概念照葫芦画瓢研究葫芦…1.了解基本概念身份验证方案(Authentication sche

2020-09-18 22:35:49 392

原创 VS C++控制台项目引入FMOD第三方库

其实之前搞过这个问题,不过经过差不多一年的时间又忘了,写篇博客记录下,虽然是引入FMOD音频库,但对于其他第三方库应该也是同理的。下面开始教学~VS C++项目中引入第三方库思路要点有四:1.先找到你要导入的第三方库的头文件(.h)和源文件(.cpp)(或者是.hpp也行)的路径位置(通常在一个叫做inc的目录)2.找到与1中所述文件对应的.lib文件所在的路径位置(通常在一个叫做lib的目录下,lib与inc通常是同级目录)3.将1的路径位置输入到VS项目属性中的附加包含目录中,将2的路径

2020-06-20 15:54:27 1697

原创 程序的运行与发布

运行最近遇到一个问题就是把编译运行后的debug文件放到虚拟机里的系统上就出现缺失DLL的报错现象,然后又忘记怎么搞了,写下这篇文章记录下,下次忘了再来看。首先,需要一个Qt SDK,可以去http://www.qter.org/portal.php?mod=list&catid=18 下载,我的版本是5.13.1的,你们可以按自己的Qt版本下。然后设置环境变量,设置路径为“所...

2019-10-21 15:32:49 233

原创 通过广播获取ip地址的实现

引言在进行网络程序的设计时,有时候我们不想要手动指定接收方的ip尤其是在做聊天小程序的时候,因为这个时候对方的ip不是固定的,那么我们该怎么办呢?一个方法就是接收方创建一个socket监听一个端口,发送方通过广播的方式给所有局域网内的主机发送一个“hello”包,当然这个包是发往接收方监听的端口的,接收方接收到“hello”包后获取自己的ip地址然后封装在数据报里再发回给发送方,这样发送方就能...

2019-10-18 15:33:27 2239

原创 控制台聊天的实现(UDP)

//接收端#include <cstdio>#include <cstdlib>#include <WinSock2.h>#pragma comment (lib,"ws2_32.lib")#define BUF_SIZE 256void error_handling(const char* message);//输入指定的接收端端口号int...

2019-10-15 12:56:28 244

原创 第一章:理解网络编程和套接字

1.在linux中进行套接字编程的基本步骤(了解初识)作者用了一个很贴合实际生活的例子(打电话)来比喻建立套接字连接的过程:建立连接的过程其实有点繁琐,记Bind listen什么的太伤脑筋了,先理解这个打电话的过程,然后在去记过程中每个步骤对应的函数会简单一些。2.基于Linux的文件操作这一节作者主要想说在linux中socket操作和文件操作没有区别,socket...

2019-10-10 18:49:51 175

原创 认识信号和槽

信号和槽是Qt中类对象间进行交互的一种机制。比如单击窗口上的一个按钮后想要弹出一个对话框。那么用信号和槽的机制来实现就是按钮是发射信号的对象,信号是单击按钮,而槽就是一个写你接收到某个信号后要做的事情,在这里就是接收到单击信号后要执行的函数。 槽一般用slots关键字进行修饰 实现信号与槽机制有两种方法,下面我们以《Qt creator快速入门第三版》...

2019-09-21 17:30:07 337

原创 模态与非模态对话框

定义模态对话框就是在没有关闭它之前,不能与同一个应用程序的其他窗口进行交互。非模态对话框就是既可以与它交互也可以与同一个应用程序的其他窗口进行交互。下面看《Qt快速入门第三版》里项目03/3-3的例子#ifndef MYWIDGET_H#define MYWIDGET_H#include <QWidget>namespace Ui {class MyWid...

2019-09-21 11:56:13 181

原创 2.1基本内置类型

算数类型最小尺寸仅供参考,具体尺寸看编译器及系统环境。C++规定一个char类型的空间应确保可以存放机器基本字符集中任意字符对应的数字值。也就是说,一个char的大小和一个机器字节一样大。wchar_t,char16_t,char32_t用于扩展字符集。拓展 :wchar_t由于char只能表示ASCII中的字符,对于中文,韩文等无法满足要求,于是出现了wchar_t,...

2019-09-19 22:06:58 104

原创 异常处理

异常abort()函数会发出SIGABRT信号导致进程异常终止。C++的异常要注意的是throw语句实际上是跳转语句,它会抛出一个对象或者说实例然后跳到catch语句块那里然后找对应的类型进行匹配,一旦匹配上就执行catch块里的内容。通常我们可以构造一个类用作异常类型,这样可以使用不同的异常类型来区分不同函数在不同情况下引发的异常。C++异常处理采用栈解退机制。引发异常时编译器总...

2019-09-10 13:42:45 173 1

原创 win32桌面应用程序初始代码解析(五)

这篇主要讲下MyRegisterClass和InitInstanceMyRegisterClassATOM MyRegisterClass(HINSTANCE hInstance){ WNDCLASSEXW wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW |...

2019-09-07 17:07:23 484

原创 win32桌面应用程序初始代码解析(四)

这篇我们主要看两个消息处理程序:wndproc和aboutWndProcLRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)首先我们来回顾下函数头,LRESULT是一个long类型的指针,CALLBACK表示这是个回调函数,HWND是窗口句柄,WPARAM和LPARAM都是32位无...

2019-09-06 09:54:08 829

原创 win32桌面应用程序初始代码解析(三)

上次我们分析到函数的前向声明,如果你们遗忘了可以去看我的第一篇解析https://blog.csdn.net/hlz_12345/article/details/100529847然后这一篇我们继续分析。首先我们看到wWinMain函数int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt...

2019-09-04 17:46:51 424

原创 win32桌面应用程序初始代码解析(二)

windows消息循环机制这个机制比较复杂,我们先从最简单的概念入手什么是消息?消息在代码中就是MSG,具体地我们来看下头文件中的定义typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; D...

2019-09-04 13:16:19 442

原创 win32桌面应用程序初始代码解析(一)

新建一个C++win32桌面应用程序项目假设我们叫hellowindows,我们可以在hellowindows.cpp里看到会有一大段初始的代码:#include "stdafx.h"#include "hellowindows.h"#define MAX_LOADSTRING 100// 全局变量:HINSTANCE hInst; ...

2019-09-04 01:17:07 1384

转载 C/C++宏指令

指令 用途 # 空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编译下面代码 #ifdef 如果宏已经定义,...

2019-09-03 14:55:19 901

空空如也

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

TA关注的人

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