Coding
Ensk
trip to Ensk...
展开
-
什么是 Webhook?
1. 什么是 Webhook?Webhook 是一个 API 概念,是微服务 API 的使用范式之一,也被成为反向 API,即前端不主动发送请求,完全由后端推送;举个常用例子,比如你的好友发了一条朋友圈,后端将这条消息推送给所有其他好友的客户端,就是 Webhook 的典型场景。简单来说,Webhook 就是一个接收 HTTP POST(或GET,PUT,DELETE)的URL,一个实现了 W...原创 2019-11-25 14:33:55 · 1844 阅读 · 0 评论 -
CronExpression 表达式详解
参数序号参数名是否可选1Seconds否2Minutes否3Hours否4Day-of-Month否5Month否6Day-of-Week否7Year是例如:"0 0 12 ? * WED" 在每星期三下午 12:00 执行其中每个元素可以是一个值 (6),一个连续区间 (9-12),一个间隔时间(8-1...原创 2019-11-01 14:42:55 · 18117 阅读 · 3 评论 -
BeanUtils.copyProperties 详解
简介BeanUtils 提供对 Java 反射和自省 API 的包装,其主要目的是利用反射机制对 JavaBean 的属性进行处理我们知道,一个 JavaBean 通常包含了大量的属性,很多情况下,对 JavaBean 的处理导致大量 get/set 代码堆积,增加了代码长度和阅读代码的难度用法BeanUtils 是这个包里比较常用的一个工具类,这里只介绍它的 copyProperties...原创 2019-11-01 11:21:01 · 1549 阅读 · 0 评论 -
Java 使用 @Data 注解优化代码
Lombok 是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立 getter 和 setter 方法和构造函数啊之类的,Lombok 的作用就是为了省去我们手动创建这些代码的麻烦,它能够在我们编译源码的时候自动帮我们生成这些方法。在项目中使用时,首先在 pom.xml 中...原创 2019-10-29 15:57:13 · 1343 阅读 · 0 评论 -
C++ 获取系统和程序的位数
1. 概述如今 64 位系统越来越流行了 , 对于软件开发人员来说 , 掌握 64 位开发技术将会有更好的发展空间 ; 而且经过这几年的发展 , 64 位开发工具也成熟了 , 例如 Visual Studio 2010 等后续版本 ;关于如何配置64位平台 , MSDN上有详细的介绍 : http://msdn.microsoft.com/zh-cn/library/9yb4317s.aspx在很多原创 2017-10-24 15:13:33 · 3762 阅读 · 2 评论 -
C++ 编辑注册表
1. 注册表简介注册表是 Windows 操作系统中的一个核心数据库 , 其中存放着各种参数 , 直接控制着 Windows 的启动 , 硬件驱动程序的装载以及一些 Windows 应用程序的运行 , 从而在整个系统中起着核心作用 ; 这些作用包括了软 , 硬件的相关配置和状态信息 , 比如注册表中保存有应用程序和资源管理器外壳的初始条件 , 首选项和卸载数据等 , 联网计算机的整个系统的设置和各种原创 2017-10-24 14:45:16 · 3744 阅读 · 0 评论 -
C++ 使用正则表达式
概述正则表达式 , 又称规则表达式 , 英文名为 Regular Expression , 在代码中常简写为 regex , regexp 或 RE , 是计算机科学的一个概念 ; 正则表通常被用来检索、替换那些符合某个模式(规则)的文本 ;正则表达式是对字符串 (包括普通字符 , 例如 : a 到 z 之间的字母) 和特殊字符 (称为 “元字符” ) 操作的一种逻辑公式 , 就是用事先定义好的一些原创 2017-10-24 10:21:20 · 15533 阅读 · 0 评论 -
Erlang 并发编程
并发原语% 创建一个新的进程Pid = spawn(Fun).% 向进程发送消息Pid ! Message.% 接收一个发送给当前进程的消息receive ... and.一个简单的例子%% area_server.erl-module(area_server). -export([loop/0]). loop() -> receive {rectangle, Wi原创 2017-10-24 10:03:49 · 540 阅读 · 0 评论 -
SVN 分支的合并和同步
1. 概述先说说什么是 branch按照 Subversion 的说法 , 一个branch是某个development line (通常是主线也即 trunk) 的一个拷贝 , 见下图 : branch 存在的意义在于 , 在不干扰 trunk 的情况下 , 和 trunk 并行开发 , 待开发结束后合并回 trunk 中 , 在 branch 和 trunk 各自开发的过程中 , 他们都可以不断转载 2017-10-24 09:44:13 · 1122 阅读 · 0 评论 -
Java 异常详解
1. 概述异常是程序中的一些错误 , 但并不是所有的错误都是异常 , 并且错误有时候是可以避免的 ;比如说 , 你的代码少了一个分号 , 那么运行出来结果是提示是错误 java.lang.Error;如果你用 System.out.println(11/0) , 那么你是因为你用 0 做了除数 , 会抛出 java.lang.ArithmeticException 的异常 ;异常发生的原创 2018-01-17 17:21:02 · 263 阅读 · 0 评论 -
Maven 设置项目编码
Maven 设置项目编码 , 需要在 pom.xml 文件中指定源码的字符集 , 设置 property 变量现有 UTF-8 编码的源代码文件如下 :package com.ensk.exp;public class HelloMaven { public static void main(String[] args) { System.out.println原创 2018-01-18 23:10:23 · 24402 阅读 · 0 评论 -
Java 反射机制
1. 类对象概述类对象概念 : 所有的类 , 都存在一个类对象 , 这个类对象用于提供类本身的信息 , 比如有几种构造方法 , 有多少属性 , 有哪些普通方法 ;什么是类对象在理解类对象之前,先说我们熟悉的对象之间的区别 : garen 和 teemo 都是 Hero 对象 , 他们的区别在于 , 各自有不同的名称 , 血量 , 伤害值 ;然后说说类之间的区别 : Hero 和...转载 2018-03-23 14:37:53 · 225 阅读 · 0 评论 -
百度未授权使用地图 API 解决办法
在自己的网页嵌入百度地图API JS文件时 , 提示 :百度未授权使用地图API , 可能是因为您提供的密钥不是有效的百度LBS开放平台密钥 , 或此密钥未对本应用的百度地图JavaScriptAPI授权 , 您可以访问如下网址了解如何获取有效的密钥:http://lbsyun.baidu.com/apiconsole/key#调用百度地图时 , 需要提供 访问应用 (AK) , 对于个人测...原创 2019-01-16 17:18:33 · 22346 阅读 · 3 评论 -
JAVA 中的 Random() 函数
Java 中存在着两种 Random 函数用来产生随机数 , 分别是 java.lang.Math.random() 和 java.util.Random() , 下面分开介绍java.lang.Math.random()调用这个 Math.Random() 函数能够返回带正号的 double 值 , 该值大于等于 0.0 且小于 1.0 , 即取值范围是 [0.0,1.0) 的左闭右开区间 ...转载 2019-04-26 10:02:45 · 205 阅读 · 0 评论 -
JDK , Tomcat , Eclipse 版本对应关系
1. JDK , Tomcat 版本对应关系参考网址 : https://tomcat.apache.org/whichversion.html2. JDK , Eclipse 版本对应关系参考网址 : https://wiki.eclipse.org/Eclipse/Installation作者 Github : tojohnonly , 博客 : EnskDeCode...原创 2019-07-01 11:42:56 · 2184 阅读 · 0 评论 -
Maven 命令 package, install, deploy 的区别
1. packagemvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段;2. installmvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、...原创 2019-09-06 15:26:07 · 195 阅读 · 0 评论 -
Erlang 生成图片验证码
Erlang 搭建的服务器难免会需要验证码的生成 , 代码如下 :-module(erlycaptcha).-compile(export_all).new(Prefix, Len, LineNum) -> Code = generate_rand(Len), FileName = Prefix++"_"++Code, File = io_lib:format("./capt转载 2017-11-09 09:00:26 · 556 阅读 · 1 评论 -
浅谈数据库用户表结构设计和第三方登录
说起用户表 , 大概是每个应用/网站立项动工考虑的第一件事情 ; 用户表结构的设计 , 算是整个后台架构的基石 ; 如果基石不稳 , 待到后面需求跟进了发现不能应付 , 回过头来反复修改用户表 , 要大大小小作改动的地方也不少 ; 与其如此 , 不妨设计用户表之初就考虑可拓展性 , 争取不需要太多额外代价的情况下一步到位 ;先前设计idusernamepassword用户名加上密码 , 解决简转载 2017-10-10 10:26:21 · 5024 阅读 · 0 评论 -
常用的安全算法
总结了项目中常用的安全算法 , 包括 MD5 , SHA , DES , AES , RSA 等 ;一、数字摘要算法 数字摘要也称为消息摘要 , 它是一个唯一对应一个消息或文本的固定长度的值 , 它由一个单向 Hash 函数对消息进行计算而产生 ; 如果消息在传递的途中改变了 , 接收者通过对收到消息采用相同的 Hash 重新计算 , 新产生的摘要与原摘要进行比较 , 就可知道消息是否被篡改了原创 2017-04-10 19:51:37 · 1065 阅读 · 0 评论 -
Erlang字符串格式化
io_lib:format的格式化参数~c 输出字符 输出字符1> io_lib:format("~c", "a").["a"] 输出字符两遍2> io_lib:format("~2c", "a").["aa"] 输出字符串长度为2 , 不足左边补空格3> io_lib:format("~2.1c", "a").[[" ",97]] %" a" 输出字符串长度为2 , 不原创 2017-04-12 14:42:43 · 3074 阅读 · 0 评论 -
MFC获取当前程序运行路径
MFC 可以使用 GetModuleFileName 函数经过处理后 , 来获取当前程序运行的路径 , 源码如下 :CString GetProgramPath(){ CString strProgramPath; GetModuleFileName(NULL,strProgramPath.GetBuffer(MAX_PATH),MAX_PATH); strProgra原创 2017-04-11 17:23:22 · 2798 阅读 · 0 评论 -
Windows上C++使用WM_COPYDATA函数进行进程间通讯
Windows 程序可以使用 WM_COPYDATA 函数来实现一些进程间的简单通信 , 使用 SendMessage 来发送消息 :SendMessage(接收窗口句柄, WM_COPYDATA, (WPARAM)发送窗口句柄, (LPARAM)©Data);其中的 copyData 是要发送的数据 , 类型为 COPYDATASTRUCT 结构体 :typedef struct tagC原创 2017-04-19 23:48:16 · 6060 阅读 · 1 评论 -
Windows上C++使用共享内存进行进程间通讯
共享内存 (也叫内存映射文件) 主要是通过映射机制实现的 , Windows 下进程的地址空间在逻辑上是相互隔离的 , 但在物理上却是重叠的 ; 所谓的重叠是指同一块内存区域可能被多个进程同时使用 , 当调用 CreateFileMapping 创建命名的内存映射文件对象时 , Windows 即在物理内存申请一块指定大小的内存区域 , 返回文件映射对象的句柄 hMap ; 为了能够访问这块内存区域原创 2017-04-19 22:54:40 · 16060 阅读 · 2 评论 -
VS2012创建和使用DLL
1. 创建 DLL 项目点击 新建项目 -> Win32项目 , 在应用程序向导界面 , 选择 DLL 和 导出符号 , 如下图所示 :选择 导出符号 , 会自动为我们创建生成DLL的模板 : 创建了导出变量 nMakeDLL , 导出函数 fnMakeDLL , 导出类 CMakeDLL , 如下所示 :// ExampleDLL.cpp : 定义 DLL 应用程序的导出函数。//#includ原创 2017-04-16 20:22:19 · 2098 阅读 · 0 评论 -
C++使用Jsoncpp解析Json数据
1. 下载 Jsoncpp , 生成项目下载 Jsoncpp 源码 , 链接 : https://github.com/open-source-parsers/jsoncpp解压后 , 打开 jsoncpp-master\makefiles\vs71\jsoncpp.sln 项目文件 , 生成 lib_json 项目 , 会生成 jsoncpp.lib 文件 ;2. 项目中引用 Jsoncpp将 J原创 2017-04-16 23:08:49 · 2506 阅读 · 0 评论 -
Windows上C++使用命名管道进行进程间通讯
命名管道是通过网络来完成进程间的通信 , 它屏蔽了底层的网络协议细节 ; 我们在不了解网络协议的情况下 , 也可以利用命名管道来实现进程间的通信 ; 与 Socket 网络通信相比 , 命名管道不再需要编写身份验证的代码 ; 将命名管道作为一种网络编程方案时 , 它实际上建立了一个 C/S 通信体系 , 并在其中可靠的传输数据 ; 命名管道服务器和客户机的区别在于 : 服务器是唯一一个有权创建命名管原创 2017-04-20 19:06:04 · 6823 阅读 · 0 评论 -
Windows使用C++获取网卡信息
使用 Windows sdk 提供的 API 函数 GetAdaptersInfo() 可以获得本机所有网卡的网卡名 , 网卡描述 , 网卡 MAC 地址 , 网卡IP , 网卡类型等信息 , 并用 IP_ADAPTER_INFO 结构体存储 ; 使用 GetIfEntry() 可以获取网卡的状态 , 可有效判断出网卡通讯是否正常 , 是否插入网线等状态 ; 代码如下 :#include "stda转载 2017-04-26 11:14:13 · 6292 阅读 · 0 评论 -
MFC问题QA
1. Edit 文本控件光标移动到最后int nLenth = pEdit->GetWindowTextLength();pEdit->SetSel(nLenth, nLenth, FALSE);//pEdit->SetFocus(); 个人网站: Github , 欢迎点击给星原创 2017-05-08 22:12:17 · 274 阅读 · 0 评论 -
设置C++崩溃时生成Dump文件
设置C++崩溃时生成dump文件Dump 文件是进程的内存镜像 , 可以把程序的执行状态通过调试器保存到dump文件中 ; Dump 文件是用来给驱动程序编写人员调试驱动程序用的 , 这种文件必须用专用工具软件打开 , 比如使用 WinDbg , VisualStudio 打开 ;当我们的程序发布出去之后 , 在客户机上是无法跟踪自己代码的 BUG 的 , 所以 Dump 文件对于我们来说特别有用原创 2017-06-02 15:48:02 · 15143 阅读 · 6 评论 -
计算机编码详解
计算机目前的编码的字符集主要可分为两大类 , 多字节字符集 (ANSI 下的 GB2312 , BIG5 , JIS 等) 与 宽字节字符集 (Unicode 下的 UTF-8 等) , 下面详细讲述这两种编码字符集 :1. ANSIANSI 中的字符采用 8bit 来存放 (对于字符来说ANSI以单字节存放英文字符 , 以双字节存放中文等字符) ;在简体中文系统下 , ANSI 编码代表 GB23原创 2017-06-04 15:01:53 · 811 阅读 · 0 评论 -
使用VS2012调试Dump文件
前一节我讲了怎么设置C++崩溃时生成Dump文件 , 点击 传送门 , 这一节我讲讲怎么使用 VS2012 调试生成的 Dump 文件 , 甚至可以精确到出错的那一行代码上面 ;1. 生成 Dump 文件我在主函数写了如下崩溃代码 :int main(){ // 加入崩溃dump文件功能 SetUnhandledExceptionFilter(ExceptionFilter);原创 2017-06-05 10:24:23 · 18007 阅读 · 1 评论 -
Erlang顺序型编程进阶
BIF (内建函数)% 元组转换成列表1> tuple_to_list({12,cat,"hellp"}).[12,cat,"hellp"]% 返回当前时分秒2> time().{17,55,23}二进制数据1> <<5,10,20>>.<<5,10,20>>2> <<"hello">>.<<"hello">>3> <<99,97,116>>.<<"cat">>操纵二进制数据原创 2017-08-27 18:55:05 · 357 阅读 · 0 评论 -
MFC 多线程编程
MFC 多线程概述MFC中有两类线程 , 分别称之为工作者线程和用户界面线程 ; 二者的主要区别在于 工作者线程没有消息循环 , 而用户界面线程有自己的消息队列和消息循环 ;工作者线程没有消息机制 , 通常用来执行后台计算和维护任务 , 如冗长的计算过程 , 打印机的后台打印等 ;用户界面线程一般用于处理独立于其他线程执行之外的用户输入 , 响应用户及系统所产生的事件和消息等 ;但对于 Wi原创 2017-09-23 16:43:36 · 473 阅读 · 0 评论 -
代码质量管控的四个阶段
背景本文讨论的代码质量指的是代码本身的质量 , 包括复杂度 , 重复率 , 代码风格等要素 ; 代码是团队的共同财产 , 代码质量是团队技术水平和管理水平的直接体现 ;代码质量下降通常会自成因果 , 导致恶性循环 :破窗效应 : 在烂代码上继续生产烂代码的心理负担小很多传染性 : 烂代码传递着一种不在意质量 , 只看业务成果的负面信息 , 会伤害团队的技术热情和工作氛围 , 导致更多烂代码出现转载 2017-09-11 11:28:16 · 774 阅读 · 0 评论 -
同步,异步,阻塞,非阻塞的区别
同步与异步同步与异步的重点在消息通知的方式上 , 也就是调用结果通知的方式 ;同步 : 当一个同步调用发出去后 , 调用者要一直等待调用结果的通知 , 直到得到调用结果 ;异步 : 当一个异步调用发出去后 , 这个调用就直接返回了 , 调用者不能立即得到调用结果的返回 , 而是在调用发出后 , 被调用者通过状态 , 通知来通知调用者 , 或通过回调函数处理这个调用 ;异步调用要想获得结果 , 一般有转载 2017-04-01 11:50:58 · 315 阅读 · 0 评论