- 博客(45)
- 资源 (18)
- 收藏
- 关注
原创 Node.js Express RESTful 简单例子
Node.js Express RESTful一个简单例子,实现对数据的查询和删除基本功能。用一个json文件作为读写的数据源[ { "id": 1, "name": "aa" }, { "id": 2, "name": "bb" }]创建 RESTfulconst express = require('express');const app = express();const fs = require("fs");app.se.
2021-03-24 17:35:32 473 2
原创 Node.js Express框架基本用法
Express是Node.js的轻量Web应用开发框架。安装模块Express框架及几个相关的重要模块安装cnpm install --save expresscnpm install --save body-parsercnpm install --save cookie-parsercnpm install --save multer --savebody-parser - node.js 中间件,用于处理JSON, Raw, Text 和 URL 编码的数据。cookie-p
2021-03-24 11:39:46 188
原创 Node.js axios库基本用法
axios是基于Promise的HTTP客户端,可以在浏览器和Node.js中使用。GitHub地址:https://github.com/axios/axios安装npm install axios新建一个服务器并启动,做为数据请求响应的例子。const http = require('http');const url = require("url");const util = require('util');const querystring = require('quer
2021-03-23 18:04:20 7394
原创 Node.js 创建HTTP服务器和GET/POST请求
Node.js自带的http模块可以创建服务器,也可以发送GET和POST请求。一、创建服务器使用http.createServer()方法创建服务器,使用listen方法绑定端口3000。通过req, res参数来接收和响应数据。//httpserver.jsconst http = require('http');const url = require("url");const util = require('util');const querystring = requi.
2021-03-23 11:32:31 2574
原创 Node.js 模块和包管理器NPM
Node.js模块可以让文件导入其他 Node.js 文件公开的功能。一个 Node.js文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。导出有两种方式。方式一:使用module.exports导出指定对象新建一个module1.js文件,导出const user = { userName: 'admin', password: '123'};module.exports = user;新建一个getModul
2021-03-23 10:20:27 127
原创 Node.js入门Hello World例子
Node.js是一个基于Google V8引擎,可以让JavaScript脱离浏览器,运行在服务器端的平台。Node.js主要特点基于Google V8引擎,性能高;单线程,提供了异步式I/O与事件驱动,代替多线程;不运行在浏览器中,不存在JavaScript浏览器兼容性问题;可以通过更改 Node.js版本使用新的ECMAScript标准。Node.js下载官网:https://nodejs.org/en/中文网:http://nodejs.cn/download/淘宝镜像:ht
2021-03-23 10:14:59 389
原创 深入理解ES6读书笔记10:模块
模块使用不同方式加载的JS文件。模块化分为导出(export)@与导入(import)两个模块。特点:(1)模块自动开启严格模式;(2)每一个模块内声明的变量都是局部变量;(3)模块中可以导入和导出各种类型的变量;(4)每一个模块只加载一次(是单例的),若再去加载同目录下同文件,直接从内存中读取;(5)对于需要让模块外部代码访问的内容,模块必须导出它们;基本的导出使用export关键字将已发布代码部分公开给其他模块。新建一个example.js文件,内容如下:// 导出数.
2021-03-22 09:08:16 120
原创 深入理解ES6读书笔记9:数组扩展
Array.of()与Array.from()方法ES6之前创建数组使用Array构造器与数组字面量写法。ES6新增了Array.of()与Array.from()方法。Array.of():创建一个包含所有传入参数的数组,不管参数的数量与类型。Array.from():将可迭代对象或者类数组对象转换为数组。let items1 = new Array(); //创建数组,使用Array构造器let items2 = new Array(3); //创建数组,只有一个参数且为整数类型.
2021-03-22 09:05:29 136
原创 深入理解ES6读书笔记8:类
ES6新增了类。类的创建方式有:类声明、类表达式、具名类表达式。//类声明 class PersonClass {//类表达式 let PersonClass = class{//具名类表达式 let PersonClass = class PersonClass2{class PersonClass{ //构造器 constructor(name){ this.name = name; } //方法 sayName(){ .
2021-03-22 09:04:22 109
原创 深入理解ES6读书笔记7:迭代器与生成器
迭代器是被设计专用于迭代的对象,带有特定接口。所有的迭代器对象都拥有 next() 方法,会返回一个结果对象。该结果对象有两个属性:对应下一个值的 value ,以及一个布尔类型的 done ,其值为 true 时表示没有更多值可供使用。ES5中创建一个迭代器function createIterator(items) { var i = 0; return { next: function() { var done = (i >.
2021-03-22 09:02:43 95
原创 深入理解ES6读书笔记6:Set和Map
Set 是不包含重复值的列表。Map 是键值对的有序列表,键和值都可以是任意类型。一、Set1、Set的创建、增加、删除、和数组互转等//创建Set和添加项目let set = new Set(); set.add(5);set.add(5); //多次添加相同值,只保留第一个set.add("5");console.log(set.size); // 2//使用数组来初始化一个 Setlet set2 = new Set([1, 2, 3, 4, 5, 5, 5, 5.
2021-03-22 09:01:11 101
原创 深入理解ES6读书笔记5:解构
解构是将一个数据结构分解为更小部分的过程。一、对象解构对象的属性值存储到本地变量。let node = { type: "Identifier", name: "foo"};let { type, name } = node;console.log(type); // "Identifier"console.log(name); // "foo"说明:使用解析配合var、let、const声明变量时,必须初始化。例如下面会报错。let { typ..
2021-03-22 08:58:40 96
原创 深入理解ES6读书笔记4:扩展的对象功能
一、对象字面量语法的扩展1、属性初始化器的简写ES6中函数的属性名和参数名相同时,可以省略属性名后面的冒号和值。因为当对象字面量中的属性只有名称时,JS 引擎会在周边作用域查找同名变量。//ES5及更早版本function createPerson1(name, age){ return{ name: name, age: age };}var person1 = createPerson1('张三', 20);console.lo.
2021-03-22 08:56:41 117
原创 深入理解ES6读书笔记3:函数
参数默认值未提供参数,或将参数值指定为undefined时,默认值会被使用。function add(a, b = 2, c = 3){ let result = a + b + c; console.log(result);}add(1); //6add(1,2); //6add(1,undefined,4); //7add(1,null,4);参数默认值表达式参数默认值除了是基本类型的值,也可以执行一个函数来产生默认值。function...
2021-03-22 08:55:00 94
原创 深入理解ES6读书笔记2:模板字面量
模板字面量提供了创建领域专用语言(domain-specific language,DSL)的语法,处理内容更安全。模板字面量的最简单语法,是使用反引号( ` )来包裹普通字符串。字符串中包含反引号,使用反斜杠( \ )转义。let message = `Hello world!`;console.log(message); // "Hello world!"console.log(typeof message); // "string"console.log(message.length)
2021-03-22 08:52:32 123
原创 深入理解ES6读书笔记1:块级绑定
var 声明与变量提升使用 var 关键字声明的变量,无论其实际声明位置在何处,都会被视为声明于所在函数的顶部(如果声明不在任意函数内,则视为在全局作用域的顶部)。这就是变量提升,不过变量的声明虽然被提升到了顶部,但初始化工作还保留在原处。function getValue(condition) { if (condition) { var value = "blue"; // 其他代码 return value; } else.
2021-03-21 08:53:00 125
原创 ECMAScript6中箭头函数的基本用法
箭头函数的作用是更简短的函数并且不绑定this。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。箭头函数在“=>”的左边是参数,参数可空或多个。右边的是函数体,有一个“简写体”或“块体”,在一个“简写体”中,只需要一个表达式,并附加一个隐式的返回值。在“块体”中,必须使用明确的return语句。语法://没有参数,使用一对圆括号() => { statements }//只有一个参数,圆括号可选(singleParam) => { .
2021-03-21 08:49:41 159
原创 ECMAScript7中async await的基本用法
async await主要功能可以简化Promise then写法,代码更简洁。async函数返回一个 Promise 对象,可以使用then方法添加回调函数。当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。await命令只能用在async函数之中。例子,用Promise then实现: function f1(){ var p = new Promise(function(resolve, reject){ .
2021-03-21 08:47:54 225
原创 ECMAScript6中Promise对象的基本用法
Promise是处理异步代码的一种方法,避免了层层嵌套的回调函数,且支持链式操作。Promise 对象代表一个异步操作,有三种状态:pending: 初始状态,不是成功或失败状态。fulfilled: 意味着操作成功完成。rejected: 意味着操作失败。Promise 对象的状态改变,只有两种可能:从 Pending 变为 Resolved 和从 Pending 变为 Rejected。一、Promise的创建Promise的构造函数接收一个函数作为参数,该函数的两个参数:resol
2021-03-21 08:45:53 146
原创 Oracle wm_concat函数排序的解决方法
默认情况下,使用wm_concat和group by拼接字段时,拼接的字段顺序是无规则的。创建测试数据:create table tb( seq number(10), remark varchar2(100), createtime date);insert into tb(seq, remark, createtime)select 1, '说明1', to_date('20210101','yyyymmdd') from dualunion allselec.
2021-03-21 08:43:18 6723 1
原创 Windows Server 2008使用计划任务每天定时执行vbs文件
某台服务器上,数据库每天的备份文件有好多GB,如果不定期删除,会很快占满硬盘空间。所以需要一个定时任务,每天自动运行,定期执行删除掉一些备份文件。下面为完整的过程。1、准备好删除文件的脚本 oldfiledelete.vbs,下面文件是删除D:\dbbak目录里面创建日期为10天前的文件Dim fso, f, f1, fc, s ,ff ,strFilePath strFilePath="D:\dbbak" Set fso = CreateObject("Scripting.Fi.
2021-03-21 08:41:29 2183
原创 Python标准库timet和datetime模块用法
Python的time和datetime模块提供了各种与日期时间相关的函数。一、time模块time()当前时间(新纪元1970年1月1日到访问时的秒数,也叫时间戳)localtime([secs])将时间戳转换为表示当地时间的间元组mktime(tuple)将时间元组转换为时间戳sleep(sesc)休眠secs秒strptime(string[, format])将字符串转换为时间元组strftime(format[, t])将时间元组转换为字符串 importtime ...
2021-03-21 08:39:00 205 1
原创 Python标准库random模块用法
random模块包含生成伪随机数的函数。random()返回一个[0,1)范围内的随机实数,0<=N<1import random for i in range(10): print(random.random())'''结果:0.472027392717309540.99545373678663980.89668893935903490.215265042578677070.51771438307347330.070589720650598760.763.
2021-03-21 08:38:09 150
原创 ORACLE数据库逐步解决ORA-12541、ORA-01034和ORA-27101、ORA-00119和ORA00132的过程
刚开始时,有一台服务器的ORACLE 11G数据库连接不上,报错:ORA-12541:TNS:无监听程序重启服务里面的两个Oracle服务,都没解决。在网上看到一篇文章说另一种可能是oracle目录目录下listener.log日志文件过大(达到4G,据说这是oracle在windows系统下的bug)导致的。搜索找到listener.log,果然文件已经是4GB。于是停止服务里面的Oracle监听服务,重命名listener.log做备份,例如listener.log.bak。启动Oracle监
2021-03-21 08:32:18 143
原创 Windows下MySQL主从复制的配置
MySQL主从复制允许将来自一个数据库(主数据库)的数据复制到一个或多个数据库(从数据库)。主数据库一般是实时的业务数据写入和更新操作,从数据库常用的读取为主。主从复制过程:1、主服务器上面的任何修改都会通过自己的 I/O tread(I/O 线程)保存在二进制日志 Binary log 里面。2、从服务器上面也启动一个 I/O thread,通过配置好的用户名和密码, 连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个Realy log(中继日志)里面。3、从服务器上
2021-03-21 08:29:56 642
原创 Windows下Git的使用
Git官网:https://git-scm.com/一、Git下载官网首页下载本人下载的是Git for Windows版本二、安装基本上按照默认选项安装即可。安装成功后在开始菜单生成Git目录和3个子菜单。Git Bash:一个封装过的cmd命令行,并在其中加入了一些新的命令与功能。(linux风格)Git CMD(Deprecated):cmd命令行界面,提示已弃用。(windows风格)Git GUI:可视化图形界面。三、Git工作流程1、工作流..
2021-03-20 12:33:04 286
原创 spring boot 2 集成JWT实现api接口认证
JSON Web Token(JWT)是目前流行的跨域身份验证解决方案。官网:https://jwt.io/本文使用spring boot 2 集成JWT实现api接口验证。一、JWT的数据结构JWT由header(头信息)、payload(有效载荷)和signature(签名)三部分组成的,用“.”连接起来的字符串。JWT的计算逻辑如下:(1)signature = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(pay
2021-03-20 12:26:31 622
原创 spring boot 2 全局统一返回RESTful风格数据、统一异常处理
全局统一返回RESTful风格数据,主要是实现ResponseBodyAdvice接口的方法,对返回值在输出之前进行修改。使用注解@RestControllerAdvice拦截异常并统一处理。开发环境:IntelliJ IDEA 2019.2.2jdk1.8Spring Boot 2.2.21、创建一个SpringBoot项目,pom.xml引用的依赖包如下 <dependency> <groupId>org.spri.
2021-03-20 12:22:38 490
原创 spring boot 2 + shiro 实现权限管理
Shiro是一个功能强大且易于使用的Java安全框架,主要功能有身份验证、授权、加密和会话管理。看了网上一些文章,下面2篇文章写得不错。Springboot2.0 集成shiro权限管理Spring Boot:整合Shiro权限框架自己动手敲了下代码,在第一篇文章上加入了第二篇文章的Swagger测试,另外自己加入lombok简化实体类代码,一些地方代码也稍微修改了下,过程中也碰到一些问题,最终代码成功运行。开发版本:IntelliJ IDEA 2019.2.2jdk1.8Spring ..
2021-03-20 12:09:44 316
原创 Java 密码加盐
只对密码进行md5加密很容易反推出来,另外两个用户的密码相同时,数据库保存相同的密码,知道一个用户的密码就知道另一个。解决方法是在用户的短密码后面加上一段长字符,再计算 md5,这样反推出原始密码就变得非常困难,而且即使两个用户密码相同,数据库保存的密码也不一样。加上的这段长字符,称为盐(Salt),通过这种方式加密的结果,称为 加盐 Hash。使用例子:假设有两个用户admin和abc,密码都为123456,注册时,盐取用户名+一个MD5值。最终计算出来的密码不一样。package .
2021-03-20 12:02:19 1916
原创 Java中往zip压缩包追加文件
有个需求,从某个接口下载的一个zip压缩包,往里面添加一个说明文件。搜索了一下,没有找到往zip直接添加文件的方法,最终解决方法是先解压、再压缩。具体过程如下:1、一个zip文件的压缩和解压工具类压缩和解压工具类来自https://www.iteye.com/blog/songfeng-123-2243016,但是原文代码因为用的是Java自带的java.util.zip,有中文乱码的bug,所以需要修改部分代码,并且修改为引用org.apache.tools.zip.*,pom.xml加入依赖
2021-03-20 11:50:08 1142 1
原创 IntelliJ IDEA 安装、配置和使用Lombok插件
Lombok 可用来帮助开发人员消除 Java 的重复代码,尤其是对于简单的 Java 对象(POJO),比如说getter/setter/toString等方法的编写。它通过注解实现这一目的。官网:https://projectlombok.org下面是IntelliJ IDEA安装、配置和使用Lombok插件的过程。一、安装Lombok插件菜单栏File ->Settings -> Plugins,在中间Marketplace下面输入Lombok搜索后进行安装,安装后会提示重启.
2021-03-20 11:48:54 5047
原创 spring boot 2 + shiro 实现简单的身份验证例子
Shiro是一个功能强大且易于使用的Java安全框架,官网:https://shiro.apache.org/。主要功能有身份验证、授权、加密和会话管理。其它特性有Web支持、缓存、测试支持、允许一个用户用另一个用户的身份进行访问、记住我。Shiro有三个核心组件:Subject,SecurityManager和 Realm。Subject:即当前操作“用户”,“用户”并不仅仅指人,也可以是第三方进程、后台帐户或其他类似事物。SecurityManager:安全管理器,Shiro框架
2021-03-20 11:47:05 153
原创 Postman测试上传文件
一、输入请求地址、选择POST请求二、Headers标签页填写KEY:Content-TypeVALUE:multipart/form-data三、Body标签页填写Key输入框右边里面有Text和File两种选择,选择File,再在Key输入“file”;VALUE的Select Files选择一个本地文件,点击Send。...
2021-03-20 11:45:31 225
原创 Spring Cloud Config实现集群配置中心
Spring Cloud Config为分布式系统提供了配置服务器和配置客户端,可以管理集群中的配置文件。使用Git、SVN等版本管理系统存放配置文件,配置服务器会到版本管理系统获取配置,集群中的配置客户端再到配置服务器中获取配置。开发工具:IntelliJ IDEA 2019.2.2一、创建配置服务器1、SVN服务器添加项目和配置文件config-client-dev.yml内容:server: port: 8092test: user: name: aa.
2021-03-20 11:43:14 376
原创 SVN服务器和客户端的下载和安装
一、SVN服务器VisualSVN下载和安装当前版本:4.1.3下载地址:https://www.visualsvn.com/server/download/下载下来的文件:VisualSVN-Server-4.1.3-x64.msi基本上按照默认设置安装,其中安装路径、仓库路径、备份路径可根据需要自行更改。安装后打开VisualSVN Server进入管理界面,在Users菜单下可以新建SVN的账户,在Repositorie菜单下可以新建项目。二、SVN客户端Tortois.
2021-03-19 16:07:37 1346
原创 SpringCloud之Spring Cloud Stream:消息驱动
Spring Cloud Stream 是一个构建消息驱动微服务的框架,该框架在Spring Boot的基础上整合了Spring Integrationg来连接消息代理中间件(RabbitMQ, Kafka等),提供了个性化的自动化配置实现,并引入了发布-订阅、消费组、分区这三个核心概念。应用程序通过input通道或者output通道来与Spring Cloud Stream中binder(绑定器)交互,通过配置来binding. 而Spring Cloud Stream的binder负责与中间件交互。
2021-03-19 16:01:52 370
原创 Java实现Kafka的生产者和消费者例子
Kafka的结构与RabbitMQ类似,消息生产者向Kafka服务器发送消息,Kafka接收消息后,再投递给消费者。生产者的消费会被发送到Topic中,Topic中保存着各类数据,每一条数据都使用键、值进行保存。每一个Topic中都包含一个或多个物理分区(Partition),分区维护着消息的内容和索引,它们有可能被保存在不同服务器。新建一个Maven项目,pom.xml 加入依赖: <dependency> <groupId>or
2021-03-19 15:59:15 411
原创 Windows下Kafka 2.3.0的下载和安装
Kafka是由Apache软件基金会开发的一个开源流处理平台,是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。特性:(1)通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。(2)高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。(3)支持通过Kafka服务器和消费机集群来分区消息。(4)支持Hadoop并行数据加载。相关术语:(1)BrokerKafka集群包含一个或多个服务器,这种服
2021-03-19 15:57:36 588
原创 Windows下RabbitMQ 的下载、配置、Java实现生产者和消费者例子
RabbitMQ是一个轻量级的消息代理中间件,支持多种消息通信协议,支持分布式部署,支持运行于多个操作系统,具有灵活、高可用等特性。RabbitMQ支持多种协议,其中最为重要的是高级消息队列协议(AMQP),它定义了“消息客户端”和“消息代理中间件”之间的通信协议,基于该协议,消息客户端与消息代理中间件可以不受开发语言、具体产品的约束。AMQP的大致模型如下图所示:生产者将消息传递给“消息代理(RabbitMQ服务器)”,它们之间会建立消息通道(Channel),消息由交换器(Exchang..
2021-03-19 15:56:18 143
PL/SQL美化器规则文件,用于格式美化sql语句
2022-06-09
开源.NET FTP组件edtFTPnet.dll
2013-09-26
HTML解析工具Html Agility Pack v1.4.6
2013-09-18
文件比对工具WinMerge v2.14
2013-09-18
SQLite数据库管理工具SQLiteStudio 2.1.4
2013-09-18
.net程序反编译工具ILSpy 2.1
2013-09-18
读写Excel的组件npoi
2013-07-26
CnPlugin_1.5.4.rar
2013-04-16
winform制作的精美时钟
2013-03-08
winform 为图片添加当月的日历并设为壁纸
2013-02-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人