202106-23 C++ 标准模板库 STL 顺序容器详解 C++标准模板库STL顺序容器容器数据结构顺序性重复性支持迭代器vector动态数组无序可重复随机访问迭代器deque双向队列无序可重复随机访问迭代器list... 继续阅读 >
202106-23 深入理解java泛型Generic 目录一、背景二、泛型概念三、泛型类3.1定义与调用3.2注意3.3使用3.4泛型类的继承3.4.1子类也是泛型类3.4.2子类不是泛型类四、泛型接口4.1定义4.2使用(与继承特点相同)4.2.1实现类不是泛型类4.2.2实现类也是泛型类五、泛型方法5.1定义5.1.1泛型方法5.1.2静态泛型方法5.1.3可变参数的泛型方法5.2注意5.3使用5.3.1定义泛型方法5.3.2调用泛型方法六、类型通配符6.1类型通配符介绍6.2为什么要用类型通配符6.3泛... 继续阅读 >
202106-23 SpringBoot集成FastDFS依赖实现文件上传的示例 前言对FastDFS文件系统安装后的使用。FastDFS的安装请参考这篇:Docker中搭建FastDFS文件系统(多图)本文环境:IDEA+JDK1.8+Maven本文项目代码:fastdfs_jb51.rar1、引入依赖简单说一下这个依赖部分,目前大部分都是采用的如下依赖:<!--https://mvnrepository.com/artifact/net.oschina.zcx7878/fastdfs-client-java--><dependency><groupId>net.oschina.zcx7878</groupId><artifactId>fastdfs-client-java</artif... 继续阅读 >
202106-23 详解java中BigDecimal精度问题 一、背景在实际开发中,对于不需要任何准确计算精度的属性可以直接使用float或double,但是如果需要精确计算结果,则必须使用BigDecimal,例如价格、质量。为什么这么说,主要有两点1、double计算会有精度丢失问题2、在除法运算时,BigDecimal提供了丰富的取舍规则。(double虽然可以通过NumberFormat进行四舍五入,但是NumberFormat是线程不安全的)对于精度问题我们可以看下实际的例子publicstaticvoidmain(String[]args){... 继续阅读 >
202106-23 Docker中搭建FastDFS文件系统(多图教程) 关于FastDFSFastDFS是以C语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载)等,特别适合以文件为载体的在线服务,如:图片网站,视频网站等。外话:FastDFS是阿里余庆大神做的一个个人项目,从2008年研发FastDFS开源至今,在一些互联网创业公司中备受推崇,GitHub开源地址:https://github.com/happyfish100/fastdfs本文基于Docker搭建,以下是正文内容... 继续阅读 >
202106-23 如何使用Webstorm和Chrome来调试Vue项目 前言在项目开发中,Debug模式是非常有必要的,后端对于IDEA工具而言Debug模式非常方便,但前端WebStorm而言如果启用Debug模式是需要单独去配置一些东西,所以这里整理自己搭建成功的过程分享出来。可能不同的Webstorm版本会导致效果不一样,所以这里先列出我的版本。Webstorm版本:2018.3.4一、新建Vue项目为了演示一个完整的示例,所以从创建项目开始,这里通过vue脚手架命令开始创建一个项目vueinitwebpackdebug-vue如果运行成... 继续阅读 >
202106-23 python高级语法之闭包和装饰器详解 一、闭包闭包的形成条件:1.函数嵌套。2.内部函数使用了外部函数的变量或者参数。3.外部函数返回了使用外部变量的内部函数。二、一个简单的例子deffunc_out(num1):definner(num2):res=num1+num2print(res)returninner#a=func_out(10)(10)a=func_out(10)a(10)闭包修改外部函数的变量:在闭包内修改外部函数的变量需要使用nonlocal关键字deffunc_out():#外部函数的变量num1=10... 继续阅读 >
202106-23 Docker部署mysql一主一从的操作方法 下载镜像选择MySQL镜像dockersearchmysql下载MySQL5.7镜像dockerpullmysql:5.7查看mysql镜像dockerimages搭建MySQL主从masterdockerrun--namemysql-master-p3307:3306-eMYSQL_ROOT_PASSWORD=123456-dmysql:5.7slavedockerrun--namemysql-slave-p3308:3306-eMYSQL_ROOT_PASSWORD=123456-dmysql:5.7Master对外映射的端口号是3307,Slave对外映射的端口号是3308查看容器dockerps连接测试配置Master进入容器... 继续阅读 >
202106-23 SpringBoot如何防止XSS注入攻击详解 什么是XSS攻击在跨站脚本(XSS)攻击中,攻击者可以在受害者的浏览器中执行恶意脚本。这种攻击通常是通过在网页中插入恶意代码(JavaScript)来完成的。攻击者在使用攻击后一般能够:修改网页内容将用户重定向到其他网站访问用户的Cookie并利用此信息来冒充用户访问有关用户系统的关键信息,例如地理位置,网络摄像头,文件系统将木马功能注入应用程序如果被攻击的用户在应用程序中具有更高的权限。攻击者... 继续阅读 >
202106-23 Java实现NIO聊天室的示例代码(群聊+私聊) 功能介绍功能:群聊+私发+上线提醒+下线提醒+查询在线用户文件Utils需要用maven导入下面两个包<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</versi... 继续阅读 >
202106-23 教你用Python下载抖音无水印视频 一、获取抖音视频连接得到如下信息:“5.1HV:/守门员戴手套没法系鞋带这种体育精神,值得尊敬%遇见足球%足球%精彩进球%意甲%唯有足球不https://v.douyin.com/eDFd28P/复制此链接,打开Dou音搜索,直接观看视频!”通过正则取到信息中的地址:share_url='5.1HV:/守门员戴手套没法系鞋带这种体育精神,值得尊敬%遇见足球%足球%精彩进球%意甲%唯有足球不https://v.douyin.com/eDFd28P/复制此链接,打开Dou音搜索,... 继续阅读 >
202106-23 mysql查询优化之100万条数据的一张表优化方案 1.两种查询引擎查询速度(myIsam引擎)InnoDB中不保存表的具体行数,也就是说,执行selectcount(*)fromtable时,InnoDB要扫描一遍整个表来计算有多少行。MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含where条件时,两种表的操作有些不同,InnoDB类型的表用count(*)或者count(主键),加上wherecol条件。其中col列是表的主键之外的其他具有唯一约束索引的列。这样查询时速度会很快。就是可以避免全... 继续阅读 >
202106-23 SQL Server 2014 数据库中文版安装图文教程 SQLServer2014三大新特性:集成内存OLTP、BI和混合云搭建,那么记录一下我们的安装过程及配置。软件环境准备SQLServer2014版支持的操作系统有:WindowsServer2008、WindowsServer2008R2、WindowsServer2012、WindowsServer2012R2。标准版还支持Windows7、Windows8、Windows8.1操作系统。安装.NetFramework3.5sp1如果本机没有.NetFrameWork3.5sp1,在安装过程中会有以下报错:如果操作系统是WindowsSer... 继续阅读 >
202106-23 java高级用法之注解和反射讲义 前言反射和注解在java中偏高级用法,一般在各种框架中被广泛应用,文章简单介绍下反射和注解的用法,希望对你的工作学习有一定帮助java注解什么是注解Java注解也就是Annotation是从Java5开始引入的新技术Annotation的作用:不是程序本身,可以对程序作出解释可以被其他程序(编译器等)读取Annotation的格式:注解以@注释名在代码中存在的,可以添加一些数值,例如SuppressWarnings(value=”unchecked”)Annotation... 继续阅读 >
202106-23 nodejs控制台打印高亮代码的实现方法 前言当代码运行报错时,我们会打印错误,错误中有堆栈信息,可以定位到对应的代码位置。但有的时候我们希望能够更直接准确的打印报错位置的代码。比如这样:这个可以使用@babel/code-frames来做到:const{codeFrameColumns}=require('@babel/code-frame');constres=codeFrameColumns(code,{start:{line:2,column:1},end:{line:3,column:5},},{highlightCode:true,message:'这里出错了'});consol... 继续阅读 >
202106-23 详解java设计模式之六大原则 一、单一职责原则1、单一职责定义单一职责原则:一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的... 继续阅读 >
202106-23 解析C++11的std::ref、std::cref源码 1、源码准备本文是基于gcc-4.9.0的源代码进行分析,std::ref和std::cref是C++11才加入标准的,所以低版本的gcc源码是没有这两个的,建议选择4.9.0或更新的版本去学习,不同版本的gcc源码差异应该不小,但是原理和设计思想的一样的,下面给出源码下载地址http://ftp.gnu.org/gnu/gcc2、std::ref和std::cref的作用C++本身就有引用(&),那为什么C++11又引入了std::ref(或者std::cref)呢?主要是考虑函数式编程(如std::bind)在使... 继续阅读 >
202106-23 Java Stack与Queue详解 一、Stack示例:packageStackPack;importjava.util.Stack;publicclassStackDemo{publicstaticvoidmain(String[]args){Stack<Integer>stack=newStack<>();for(inti=0;i<10;i++){stack.push(i*2);}//[0,2,3,4,6,8,12,14,16,18]System.out.println(stack.peek());//18System.out.println(stack.search(14));//以1为基数,... 继续阅读 >
202106-23 JavaScript原始值与包装对象的详细介绍 前言随着JavaScript越来越流行,越来越多地开发者开始接触并使用JavaScript。同时我也发现,有不少开发者对于JavaScript最基本的原始值和包装对象都没有很清晰的理解。那么本篇文章,就由渣皮来给大家详细介绍一下它们。🧐话不多说,Let'sgo!正文原始类型(Primitivetypes)原始类型也被称为“基本类型”。目前在JavaScript中有以下几种原始类型:string(字符串)number(数字)boolean(布尔)n... 继续阅读 >
202106-23 Unity实现模型点击事件的方法 模型点击事件监听触发模型点击事件的必要条件需要触发模型点击事件的模型身上必须要挂载Collider组件方法一通过OnMouseDown函数监听(只能在PC端有效)1.在Hierarchy面板中右键,点击3DObject->Cube按钮,创建一个Cube模型2.新建一个脚本,命名为“Test.cs”(代码如下)usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassTest2:MonoBehaviour{privatevoidOnMouseDown()... 继续阅读 >
202106-23 c语言中的移位运算符 移位运算符在程序设计中,是位操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。c语言中提供了两种移位运算符:左移运算符:<<右移运算符:>>左移运算符(<<)intmain(void){inta=4;//把a的二进制位向左移动1位intb=a<<1;printf("b=%d",b);return0;}在32位操作系统中,int类型占4个字节,1个字节有8bit,所以变量a在内存中占32个比特位。将4赋值给变量a,a中存放的是4的二进制形式。将a向左移... 继续阅读 >
202106-23 java算法之静态内部类实现雪花算法 目录概述一、概念1、原理二、静态类部类单例模式生产雪花ID代码1、代码2、测试结果3、为什么说41位时间戳最长只能有69年概述在生成表主键ID时,我们可以考虑主键自增或者UUID,但它们都有很明显的缺点主键自增:1、自增ID容易被爬虫遍历数据。2、分表分库会有ID冲突。UUID:1、太长,并且有索引碎片,索引多占用空间的问题2、无序。雪花算法就很适合在分布式场景下生成唯一ID,它既可以保证唯一又可以排序。为了提高生产雪花ID的... 继续阅读 >
202106-23 Python入门之基础语法详解 一、我的经历及目标在学习python之前:我学习过C/C++,在学校期间做过很多的项目,已经有两年多了,算是对C/C++非常的熟悉了,精通不敢说,但是对于面向过程和面向对象有很深刻的认识,做过很多的开发,学习数据库,MFC,QT,linux下利用C/C++进行服务器的开发,QT环境下进行模拟QQ的开发…听说python挺火的,我也来尝试一门新的语言,python和c有80%的相似性,毕竟是用C来开发的语言,但是是面向过程的一门语言,有C++的继承等相... 继续阅读 >
202106-23 vue组件的路由高亮问题解决方法 前言之前我对于路由的高亮都是使用缓存,给他的所有路由遍历一遍,每点击一下的时候,给他的当前值高亮,赋值active。后来发现一刷新就不行,高亮的就变成默认值0了,这里主要是讲这个问题的解决办法。第一种是通过这样的添加类:.router{font:12px/40px'微软雅黑';background:pink;background:pink;color:white;cursor:pointer;text-align:center;display:inlin... 继续阅读 >