自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(221)
  • 资源 (8)
  • 收藏
  • 关注

原创 Electron 环境搭建

Electron是跨平台的GUI开发工具,除了swing、QT,开发跨平台UI又多了一个选择。比较著名的vscode,就是通过electron开发的。Electron 是基于谷歌的Chomium 核心,通过javascript、html、css来开发GUI。本质上是运行一个浏览器,的确很新颖。一. npm 使用npm init -y test 生成项目package.jsonn...

2020-03-28 18:04:43 1052

原创 nginx 配置https

上文介绍了可能在freenom 上申请免费域名,对于一些小型站点,为了降低建站成本,可以申请免费的https证书。本文采用let's Encrypt 免费的https证书,由于let's Encrypt配置比较繁琐,官方提供了自动化客户端工具certbot 用于管理证书。一. 生成证书yum install -y certbotcertbot certonly --standal...

2020-03-28 16:54:09 437

原创 golang 踩坑

1. Host 未生效使用http 发送post请求,服务端一直返回参数错误。reader := bytes.NewReader([]byte(postData))req, _ := http.NewRequest("POST", url, reader)// 设置头部信息req.Header.Set("Content-Type", "application/x-www-form...

2020-03-27 22:20:14 492

原创 freenom 申请免费域名

为了降低建站成本,可在freenom上申请免费域名,可以免费使用一年。一. 注册域名登录freenom.com,输入域名,检测通过后,输入邮箱,登录邮箱完成激活。二. 配置DNS上面申请的域名未绑定外网ip,还不能使用。 登录https://www.dnspod.cn/1. DNS管理 > 我的域名 > 添加域名2. 点击域名 >...

2020-02-23 11:52:26 4572 2

原创 git error: remote unpack failed

一. 上传git出错error: remote unpack failed: error Object too large (136,179,501 bytes), rejecting the pack. Max object size limit is 104,857,600 bytes.Please refer to http://x.code.com/Code/Git/blob...

2020-02-23 11:00:14 7845 1

原创 iTerm2 使用

iTerm2 是mac下必装的终端工具,用来取代系统的Terminal。下面整理下好玩的功能:终端显示图片:iTerm2 支持在终端下直接渲染图片,很酷炫。iTerm2 > Install Shell Integration 安装shell扩展,运行imgcat 命令显示图片,居然支持gif动态图。Copy:选中文本 则复制,不需要Command ...

2020-02-22 22:17:14 1645

原创 docker-compose使用

docker-compose对单主机Docker容器集群快速编排,时下热门的k8s用于管理整个集群Docker容器。docker启动的是单独的container,一个应用可能依赖多个服务,compose是用于运行和管理多个容器化的工具。下面演示如何快速搭建flask网站,显示站点访问人数,通过redis存储访客计数。一. 安装linux上的docker-compose需单独安...

2020-01-03 20:09:49 559

原创 golang json[]

golang的json库利用反射机制,能很方便处理结构体与json字串之间的转换。 json数组格式:[ { "riskType": [ 2, 3 ], "uid": "74f6881b-6e2d-4bf5-8671-f2dedd4b226c", "level": 4, "ip": "110.213.0.151" }, { "riskTy...

2019-12-27 19:08:00 170

原创 docker 使用

docker出现极大的提高了生产力,借助docker可快速搭建测试环境,下面看看docker的用法吧,命令还挺多的一.安装$ yum install -y docker$ service start docker For other actions, please try to use systemctl.# kernel 5.4 用systemd管理安装包$ sy...

2019-12-26 20:05:34 217

原创 golang kafka内存泄露

项目需求将接收到的消息写到kafka中,kafka 客户端用到了比较流行的sarama组件。参考了网上的示例代码,上线后一堆问题,开源代码还是需要理解API底层实现原理,不能简单拿来主义。一. kafka生产者import "github.com/Shopify/sarama"var Brokers = []string{ "10.120.9.123:909...

2019-12-24 20:51:39 3116 1

原创 AES CBC加解密

项目中用到AES-128-CBC加密模式,服务端客户端采用不同语言开发,记录不同语言AES的实现。AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,会补齐,补齐的是size,不是'\0')。1. NodeJSvar crypto = require('crypto')// AES 加密f...

2019-12-18 18:53:40 505 1

原创 springboot 发布到tomcat

springboot 框架内置tomcat,以jar包发布,可直接运行。本文展示通过idea 导出war包。一. 编辑pom.xml打包为war<!-- war --> <packaging>war</packaging> <properties> <java.version>1.8<...

2019-12-07 13:46:38 145

原创 springboot get/post参数

一.通过@RequestParam@RequestMapping(value = "/get", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")public String getJson(@RequestParam("name") String param) {...

2019-12-06 21:08:19 231

原创 springboot 使用

spring 功能非常强大,已经是java web开发标配,但是配置较为复杂繁琐。直到spring boot的出现,彻底改变这种现状。基于spring boot可以用极简的配置,极少的代码,快速开发web应用。一.创建springboot工程File --> New注:Idea comunity没有 spring Initializr组件,需使用Idea Ul...

2019-12-06 20:23:35 278

原创 crtp

  C++ 中可通过虚函数实现运行时多态,还可以实现更高效的静态多态。 通过把派生类作为基类的模板参数来实现,该方式称为CRTP(Curious Recurring Template Pattern)。#include &lt;iostream&gt;using namespace std;// 中间类template &lt;class T&gt;class...

2018-07-01 13:38:39 577

原创 STL ++iter与iter++区别

  之前编码一直用的是iter++,同事说该方式效率比较低。带着疑惑看STL源码: // vector_Myiter&amp; operator++() { // preincrement ++*(_Mybase *)this; return (*this); }_Myiter operator++(int) { // postincrement...

2018-06-20 11:05:29 929

原创 C++ 对象内存模型

 面试中经常遇到类似多态,虚继承,RTTI,dynamic_cast实现原理之类的问题,这块需要对C++底层内存模型比较理解。C++由于没有存储对象元信息(java反射基础),要支持多态,多继承特性,导致C++对象内存模型异常复杂。 一. 继承内存模型 1. 基类struct B{ long b; virtual void foo(){} ...

2018-06-15 11:19:02 505

原创 Scada 使用二

 1. var &amp; valvar 变量,可变val 类似常量,不可变 2. map/reduceval list = List(1,2,3,4,5,6)list.map( f =&gt; println(s"val: $f") ) // val:1 xxx val:6val sum = list.reduce( (sum, n) =&gt; sum+n ...

2018-06-11 20:19:08 450

原创 Scala 使用

一. 安装环境wget https://downloads.lightbend.com/scala/2.12.6/scala-2.12.6.tgzvi ~/.bash_profileexport PATH=$SCALA_HOME/bin:$PATH 二. 运行Scala是解释性JVM语言,编译后会生成*.class。也可在交互式CLI上编码。ling-Pro:~ s...

2018-06-10 17:09:22 121

原创 Google Cloud 终端连接

 一. 查看VM实例名称test@cloudshell:~ (test-206504)$ whoamitest 二. 本地生成密钥对[sun@localhost]$cd ~/.ssh[sun@localhost]$ssh-keygen -f cloudkey #设置密码  修改公钥用户名cat cloudkey.pub ssh-rsa AAAAB3...

2018-06-08 18:07:54 975

原创 设计模式之观察者模式

 观察者模式在对象间定义一对多的依赖,当一个对象改变状态,依赖它的对象都会收到通知。类图: 一. java swingswing 注册事件监听器过程,就是观察者模式。// 注册监听事件button.addActionListener( new ActionListener(){ @Override public void actionPerformed(A...

2018-05-17 13:43:31 122

原创 设计模式之装饰器模式

最近看到《设计之禅》的装饰器模式,特用C++实现了一遍,发现有些有意思的东西需要探究一下。UML类图:  一. C++实现#include &lt;stdio.h&gt;/// Baseclass Component{public: virtual ~Component(){} virtual int operate() = 0;};...

2018-05-16 17:51:49 190

原创 原子操作

一. Java volatilevolatile关键字可保证变量可见性,但是无法保证原子性,下面演示多线程修改共享变量Count场景。/** * 共享变量在多线程下修改测试 */public class NonAtomicTest extends Thread { public static volatile int count = 0; pub...

2018-05-15 14:29:21 136

原创 C++符号解析

    C++ 符号还原(Demangling),windows/linux平台需分别处理。 #include &lt;typeinfo&gt;#include &lt;cxxabi.h&gt;class Foo{};#ifndef __GNUC__ // vcconst char *real_name = typeid(Foo*[10]).name(); ...

2018-04-07 22:20:47 577

原创 Linux 网络调优

Linux内核目录/proc/sys/net 提供了很多网络协议栈配置参数,可控制网络协议栈行为,达到调优目的。一. 基础命令sysctl -a 显示内核参数sysctl -w net.core.somaxconn=32768echo 32768 &gt; /proc/sys/net/core/somaxconnvi /etc/sysctl.conf...

2018-04-07 21:49:20 519

原创 Java Lambda

 该语法糖在jvm脚本语言Groovy/Scale已有很好的支持,Java从8.0才开始支持该特性。 /** * 基础Lambda表达式 * */public static void testLambda() { String[] ss = { "hello", "world", "sun" }; List&lt;String&gt; list = Arra...

2017-12-11 15:35:03 175

原创 Java 动态代理

 Spring框架两大核心原理:AOP和IOC,IOC Inversion of control 用来解决依赖关系,通过工厂模式实现。AOP Aspect of programming 通过动态代理实现。 1. 定义接口/** * 用户服务接口 * @author lingsun * */public interface UserService { p...

2017-12-11 15:25:43 91

原创 mac gdb SIG113

 mac自从升级至Sierra系统后,gdb调试程序后出错: During startup program terminated with signal SIG113, Real-time event 113 网上方案:升级gdb,修改gdb配置:brew upgrade gdbcat "set startup-with-shell off" &gt; ~/.gdb...

2017-12-09 11:22:15 159

原创 C/C++ 浮点数存储

IEEE浮点数标准定义了两种基本的格式:以4个字节表示单精度格式和8个字节表示双精度。一. 存储规则float:1位符号数 8位指数 23位有效数0/1 bias:127double:1位符号数 11位指数 52位有效数0/1 bias:10231.1 8.25存储分析(8.25)10 = (1000.01)2划分三部分:1...

2017-12-08 21:59:33 626

原创 Cookie设置

 一. 比较document.cookie = "a=b; max-age=3600; path=/;";Set-Cookie: a=b; max-age=3600; path=/; 第一种是在客户端通过js设置,随请求传递至服务端,php可通过$_COOKIE获取。第二种是在服务端设置,通过在http头部添加多个Set-Cookie字段实现。   二. 语...

2017-10-11 10:52:31 157

原创 thrift servlet

 Thrift通常以独立服务存在,也支持HTTP协议,以servlet方式在Tomcat中运行。 一. 服务端Servlet实现比较简单,只需实现TExtensibleServlet,并在getProcessor()中填充实现类。/** * Thrift servlet */@WebServlet(name="thrifttest",value="/thriftt...

2017-08-01 19:35:44 188

原创 Thrift 使用

  Thrift 是apache开源的rpc框架,支持多种语言绑定。相对protobuf,提供server,序列化等一站式解决方案。 一. 下载 http://thrift.apache.org/download 二. 编写IDLnamespace java org.sun.service service SimpleThriftService{ s...

2017-08-01 18:09:46 151

原创 Java Annotation

   Spring MVC中存在大量的注解,@RequestMapping可方便实现路由跳转,下面我们看看注解是怎么实现的。  一. 定义注释import java.lang.annotation.*;/** * Annotation Interface class * @author sunling3 * */@Retention(Retenti...

2017-07-31 20:59:09 78

原创 Linux 恢复删除文件

 Linux下的rm命令太可怕了,一不小心 rm -rf / 那就悲剧了,请慎用rm -rf。如果一不小心删除重要文件,后续不对该路径文件操作,可以通过相关命令找回被删文件。原理主要是删除的文件并没有实际上从硬盘上抹去,只是inode索引删除了相关的信息(单链表节点删除实现),因此只要找到刚删除文件的block上,就可以恢复已经删除的文件。  一. 查看分区 d...

2017-07-25 15:13:14 473

原创 流量劫持

流量劫持比较复杂,一般来说运营商,路由器厂商,黑客都可能是流量劫持操作者。基于国内大部分网站以http明文协议为主,这无疑给劫持者提供了土壤。本文演示了家庭路由器流量劫持实现,公共WIFI连接授权实现有点差异,它是用iptables重定向至webserver,有兴趣的同学可参考nodogsplash实现源码。一. 原理图原理:1. 嗅探用户http ge...

2017-07-13 12:36:15 1364

原创 nginx 扩展模块开发

apache的插件以动态库方式存在,通过配置动态加载;nginx插件则需要编译至nginx可执行程序中,openresty也是如此,直接将lua解释器嵌入至nginx,使其具备解析lua脚本能力。nginx 内置插件目录在 src/http/modules 下。编写nginx插件过程比较麻复杂,需要对nginx源码及数据结构有一定的了解。nginx实现了字符串,定时器,容器(HashTabl...

2017-06-21 10:37:14 4217

原创 Lua与C相互调用

 Lua 提供了强大的API用于与C间的交互,两者值间的传递通过虚拟堆栈来实现。 一. 实现Lua解释器 /** * Lua 解释器 */ int main( int argc, char **argv ){ // 初始化解释器 lua_State *pl = luaL_newstate(); // 加载基础库,包括io,os,math等 lu...

2017-06-20 11:26:24 100

原创 扩展Lua接口

Lua 是巴西研究小组开发的一个灵活小巧的脚本语言,整个编译后的静态库才400多K,便于嵌入应用程序中,扩展程序功能。常用于游戏开发中,nginx的openresty项目也让lua更加流行。Lua语法与python比较类似,支持自动垃圾回收,面向对象编程。  一. 扩展lua接口lua没有提供sleep()和msleep()实现,我们可以提供动态库给lua调用,代码如下:...

2017-06-20 11:16:05 426

原创 java 反射攻击

 Java反射机制指的是程序在运行时能够获取自身的信息;它能动态截获或改写程序的行为。 1. 单例模式漏洞/** * 懒汉式单例模式 */public class Singleton { private static Singleton instance = null; private Singleton() { } public stat...

2017-06-18 22:11:26 582

原创 TCP segment of a reassembled PDU

 windows下wireshark抓包经常会出现"TCP segment of a reassembled PDU"提示:  可通过wireshark的 Edit --&gt; Preferences --&gt; Protocols/TCP --&gt; Allow subdissector to reassemble TCP streams 取消勾选该选项可消除提示: ...

2017-06-07 10:30:42 1545

RadAsm V2.2.1.6汉化版

RadAsm V2.2.1.6,汇编开发IDE,汉化版,支持masm,tsam,fasm等开发,并提供高亮显示,最好配合MASM32 SDK使用 ...

2013-04-17

跨平台进程间通信源码

跨平台进程间通信解决方案,可以向多个进程发送消息,windows/linux上实测通过 ...

2013-04-17

mysql for QT驱动

自己编译的QT版的mysql驱动,适用于QT.4.x系列版本.

2011-11-21

java RTSPClient

根据网上的资料改写的RTSPClient的改进版本, 绝对可以用, 显示整个RTSP报文的交互过程

2011-08-19

java clock 机械时钟

用java写的一个机械时钟表了, 一笔一画画出来的了, 下面显示日历了. 点击jar能直接运行

2011-08-19

java notepad

java写的一个功能完整的记事本, 学习java swing的资料. 可以字体选择排版. 点击notepad.jar可直接运行.

2011-08-19

java servlet分页

关于jsp分页的web工程, 里面有数据库文件,可以直接运行.

2011-08-19

空空如也

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

TA关注的人

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