自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 问答 (11)
  • 收藏
  • 关注

原创 2021-10-25

对象不能从 DBNull 转换为其他类型遇到这个问题 在代码里找了很久都找不到问题 其实代码没错 是连错库了 艹!

2021-10-25 16:19:16 109

原创 .Net中 DES加密 ECB模式 PKCS7

.Net中 DES加密 ECB模式 PKCS7的代码,已经测试过可以直接使用:加密方法: /// <summary> /// 加密字符串 /// 加密密钥必须为8位 /// </summary> /// <param name="strText">被加密的字符串</param> /// <param name="strEncrKey">8位长度密钥<

2021-03-16 16:28:03 1143

原创 有趣的三次握手和四次挥手问题

说到计算机网络,那就必须要提到TCP协议,谈到TCP协议,那就要提一提TCP协议里最有名的“三次握手和四次挥手”,对于这个知识点大家肯定或多或少在大学课程里,在面试中被问到过,所以我就想专门写一篇博客来好好地学习和记录一下我从中所学到的知识。首先要清晰透彻的学习这个知识点之前我们要对TCP报文有所了解,因为会用到很多TCP豹纹的知识点,所以加入你不熟悉的话,可以移步到:点击这里查看TCP报文知识点假如你已经对TCP报文有所了解,那么我们可以开始对三次握手和四次挥手的学习了。三次握手:三次握手的本质是

2020-06-05 00:33:36 267 1

原创 TCP的报文详细解读

开局一张图,内容全靠编细细讲:这张图好像挺有名的,其实一开始我看见的时候是一脸懵逼的,但是通过翻书(大学时代最害怕的计算机网络),查阅他人博客等等办法,最后终于有了一个系统的了解,当然,这里知识点多而杂,大家可以多看几遍,结合上面那张图,这张图实际上非常清楚,大家看完底下的内容再回来看这张图一定会恍然大悟。首先,大家先看这张图,要先从底下往上看,下面这个左边是绿色右边是红色的长方形实际上是一个数据包:IP首部:这个地方实际上是IP地址,是我们要发送到的机器的IP地址IP数据部分:这个里面东西就

2020-05-26 09:35:51 2613

原创 关于数据库锁的相关知识

大家以前可能都听说或者了解过数据库锁的相关知识,为什么需要锁呢,锁又是什么呢?下面我会详细的给大家讲一讲。数据库锁出现的目的:处理并发问题并发问题是什么?我们都知道数据库可能会被同时大量访问,这时假如第一个线程访问并修改了我们的数据库某个字段,第二个线程访问也修改了这个字段,那么就造成了同时访问问题,这时由于他们都修改了数据库,那么就会造成脏数据问题,第一个线程访问并修改的数据被覆盖掉了。为了防止这种情况发生,我们就发明这个技术,当一个事务访问数据库时,锁会将所修改的表锁起来,另一个事务没有办法同时对

2020-05-22 11:38:26 208

原创 SQL注入以及解决的办法

我们以前很可能听过一个词语叫做SQL注入攻击,其是威胁我们系统安全的最危险的因素之一,那么到底什么是SQL注入攻击呢?这里我会用一个最经典最简单的例子来跟大家解释一下:众所周知,我们的sql语句都是有逻辑的,例如下面这句:select * from usertable where username='admin' and password='abc123'这句超级简单吧,我们都知道,这句最常用的是在登陆的时候,来查询用户输入的账号和密码匹配不匹配,来确定用户是否可以登陆的,大体上一看好像没啥问题,但

2020-05-14 15:49:25 851 1

原创 C#中的数据转换问题

首先,我们先来看一下显式转换和隐式转换,其实这两个概念是非常简单的,看下面这两行简单的代码: //隐式转换 int b = 10; float a = b; //显式转换 float c = 10; int d = (int)c;看到这里

2020-05-09 14:33:03 248

原创 C#中的Array,ArrayList和List<T>

Array:数组的基类,数组在内存中是一块连续的内存地址,在数组声明时便已经分配了地址,在C语言中,我们想要使用数组的话我们需要使用malloc函数来手动分配内存,这也造成了Array的不便,假如我们要向数组中某个位置插入一个元素,其后面的所有元素都需要进行移位,这势必造成操作不便,具体是如何移位可以参考点击此处查看我的这篇文章中关于动态数组的实现(C语言实现)ArrayList:很少使用的一个...

2020-05-08 13:16:15 457

原创 最长公共前缀问题————leetcode第14题详解

请看下题,题目来源自leetcode第14题:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。第一眼看到就是...

2020-04-29 00:08:42 178

原创 经典快慢指针————leetcode第26题

题目如下(出自leetcode第26题):给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组...

2020-04-10 00:34:48 213

原创 链表的实际运用————leetcode第21题详解

不废话,题如下(来自leetcode第21题):将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4 , 1->3->4输出:1->1->2->3->4->4解:这道题题干非常简单,就是把两个链表合并,什么?你说你不知道啥叫链表?请点击这个神秘链接点这里,这里能教给...

2020-04-09 00:14:35 197

原创 有趣的罗马数问题————从leetcode第13题说起

罗马数问题是一道非常有意思的题,下面是题干(来自leetcode第13题):罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVI...

2020-04-08 18:17:38 263

原创 经典算法回文数问题————leetcode第9题详解

回文数是一个经典老题了,这个概念在我小学数学奥赛时就已经接触过了,现在是和编程结合起来,变得更加有意思。(以下来自leetcode第9题)判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此...

2020-04-07 22:42:48 264

原创 关于溢出问题————从leetcode第7题说起

废话少说,直接上题:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解:题干...

2020-04-07 21:34:47 217

原创 双指针的应用————从leetcode第88题说起

双指针一直是leetcode中的一个有意思的点,刷了一些题见了很多次双指针,合理运用双指针可以达到一个巧夺天工的作用,废话不多说,请看题:出自leetcode第88题:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 num1 成为一个有序数组。题目说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 num...

2020-03-30 20:42:45 145

原创 二分查找的实际应用————从leetcode第35题说起

下面是leetcode第35题,难度easy:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,...

2020-03-25 11:46:17 255

原创 栈的实际应用————从leetcode第20题说起

让我们先来看这样一道题:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示...

2020-03-23 13:57:21 151

原创 排序算法(七)————堆排序

堆排序是一种利用二叉堆的性质来进行排序的算法,二叉堆本身可以使用一个数组来表示,若我们有一个无序数组,我们可以先将其通过一系列方法变成一个二叉堆,然后再进行出堆操作,实际上就是将其目前最大值或最小值输出,这样我们的输出顺序其实就是按照从小到大或者从大到小一个顺序,也就间接完成了我们的排序工作。首先,二叉堆是什么呢?第一,二叉堆首先是一颗完全二叉树,也就是一颗除了最底层其他层节点全部都是满的且最...

2020-03-15 20:50:14 97

原创 查找算法————二分查找

二分查找是一个常用的查找算法,其原理在于通过不断切分一个规则排序,对半的去寻找目标元素所在的区间与位置。但是其有一个前提,那就是数据结构需要是顺序存储结构,并且关键字大小有序排列。例子如下:例:有一个数列:12,23,45,56,67,89 请使用二分查找找到56的位置解:首先mid=(0+5)/2=2;arr[2]位置放的是45,56大于45,所以在56,67,89之间进行查找,mid...

2020-03-12 00:14:13 231

原创 排序算法(六)————希尔排序

希尔排序是对直接插入排序的一种改进,我们都知道直接插入排序在元素次序规则,数量较少时效率是最高的,而希尔排序恰巧合理的利用了这两点,对冒泡排序进行了改进,希尔排序的核心在于分组,什么是分组呢:如下有10个元素:12,15,8,66,24,55,34,99,3,10我们假如要对其进行希尔排序,我们第一步要做的就是对其进行分组,那么分组依据是什么呢?我们最常用的分组依据是lenth/2得到步长...

2020-03-11 21:00:08 135

原创 排序算法(五)————快速排序

快速排序是一种效率很高的排序算法,也是我们使用最多的一种排序算法。快速排序原理:两个指针分别指向数组两头元素,将数组第一个元素保存下来,作为基准数,两个指针开始向中间移动,先移动数组尾部指针,直到发现所指元素比基准数小时,将这时候所指向的数赋值给数组头部指针指向的位置,然后尾部指针停止移动,头部指针开始移动,直到移动到所指向的元素比基准元素大时,将此时所指向的元素赋值给尾部指针所指向的位置,头...

2020-03-08 14:44:44 194

原创 排序算法(四)————归并排序

归并排序原理:是将两个有序数列再次进行排序后插入到数列中,使其形成一个有序的数列的过程,当然,假如要有两个有序数列本身条件就是很困难的,所以采用了分治法将数列进行不断切分,到最后每个小数列只存在一个元素,便可看作是有序,利用递归来求得最后的有序数列,其代码难度比别的几个排序大一些,在这里讲解大家可能无法理解,所以附上一些很不错的视频,大家可以去看看,视频讲的很清晰,很好理解。视频链接:点击这里...

2020-03-07 23:04:24 100

原创 排序算法(三)————选择排序

选择排序原理与实现:从一组数中挑选最大一个放到尾部,除去最后一个以外的数据再次选择最大的放到尾部,以此类推。例:有以下几个数:3 7 4 2 6 1,请使用选择排序将他们从小到大排列解:第一趟:3 7 4 2 6 1在其中找到最大的元素7,然后将其和最后一个元素交换位置:3 1 4 2 6 7第二趟:3 1 4 2 6 7除了已经排好的7,在其中找到最大的元素6,然后将其和最...

2020-03-07 14:48:31 232

原创 排序算法(二)————插入排序

**实现过程与原理:**对于给定的几个数,先将第一个数看做有序序列,然后将第二个数插入到有序序列中,使整个序列再次有序化,再将第三个数插入到前面的有序序列中,如此往复,即为插入排序原理。例:现有给定几个数:21 39 18 16,请使用插入排序将它们从小到大排序解:21 39 18 16 现将21看作是有序序列,我们将39插入并排序第一趟:将39插入39大于21 故排序后:21 ...

2020-03-07 14:01:13 246

原创 二叉树的广度搜索和深度搜索

这篇主要是记录一下学习二叉树的深度搜索和广度搜索的学习过程,有问题希望大家多多指正。首先,下图是一颗二叉树:深度优先搜索(DFS):深度优先搜索是从根节点出发,沿左子树方向进行纵向遍历,直到找到叶子结点为止。然后回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节点为止。遍历顺序:A B D E C F G其实就是先遍历根节点,再遍历左子树,最后遍历右子树,跟先序遍历的过程是一...

2020-03-05 19:29:49 996

原创 排序算法(一)————冒泡排序

冒泡排序是排序算法中用法简单,使用最广泛的一种算法,废话不多说,下面是其的逻辑与C语言实现:案例:现在有五个数:12 34 23 88 67,请使用冒泡排序将其按照从小到大排序,并求其时间复杂度。解:第一趟排序:12 34 23 88 67(开始时)12 34 23 88 67第一次:12和34比较,34比12大,由于要从小到大,所以不需要换位12 23 34 88 67第二次:...

2020-03-04 23:52:58 620

原创 数据结构基础——哈希表(散列表)查找算法(附C语言算法实现)

哈希表又称作散列表,是一种多用于查找的数据结构,其本质上是一种利用空间换时间的做法,其需要事先分配足够大的内存空间,这实际上是非常浪费空间的,理想化的哈希表所有的操作时间复杂度都为 O(1),这表明其效率非常高。其根据key值来计算出其的存储位置,查找时也是用key来算出其所在位置,要实现一个哈希表,我们要做到以下两点:(1)尽可能理想(2)尽可能一一对应尽可能理想:理想化的哈希表是不存在...

2020-03-03 19:59:41 2230

原创 数据结构基础知识点,看完保证期末不挂科!

线性结构(1)连续储存(地址在内存中为连续)-----数组(2)离散储存(地址在内存中不一定为连续的)-----链表非线性结构(1)树(2)图基础算法(查找排序):折半查找排序:(1)冒泡排序(2)插入排序(3)选择排序(4)快排(5)并归3.C语言指针(数据结构基础):(1)指针(2)结构体(C++可以使用类)(3)动态内存的分配与释放(malloc函数...

2020-01-27 22:55:24 2086

原创 一个简单的分页功能的实现(.net开发 数据库使用EF 语句linq)

做了一个简单的分页功能,入门15天小白,大佬勿喷。分页主要是根据当前页面去数据库里取当前页面要展示的几条内容,当然,你也可以全部取出来,那就只是一个“假分页”,要多少取多少是分页的精髓所在,这极大的减轻了数据库的压力,并且前端更加美观易于操作。首先,实现类分页功能需要的参数就是一页显示多少行,处于哪一页,当然,这个一页显示多少行可以后台定义,也可以由前台传值过来,返回的结果是一共是多少页,还有当...

2018-12-19 10:45:37 690

基于微信公众平台的课堂签到管理系统

此文件有密码,仅限于私人使用 请勿随意下载!!!!!!!!!!!!! 会浪费您的积分!!!!现今微信已经成为用户数量最多的超级APP,微信公众号也成为了最重要的、用户基数最大的线上线下微信互动营销方式,因此,基于微信公众号的二次开发也成为了一个非常时尚,有效的创业方式。本系统主要面向高校人群,用于解决传统课堂点名签到费时费力的问题,系统分为两个模块,教师模块和学生模块,其中教师模块包括创建课程模块,签到模块和查询信息模块,学生模块包括加入课程模块,签到模块和查询个人信息模块。

2019-01-05

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

TA关注的人

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