- 博客(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
1218
原创 nginx 配置https
上文介绍了可能在freenom 上申请免费域名,对于一些小型站点,为了降低建站成本,可以申请免费的https证书。本文采用let's Encrypt 免费的https证书,由于let's Encrypt配置比较繁琐,官方提供了自动化客户端工具certbot 用于管理证书。一. 生成证书yum install -y certbotcertbot certonly --standal...
2020-03-28 16:54:09
530
原创 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
573
原创 freenom 申请免费域名
为了降低建站成本,可在freenom上申请免费域名,可以免费使用一年。一. 注册域名登录freenom.com,输入域名,检测通过后,输入邮箱,登录邮箱完成激活。二. 配置DNS上面申请的域名未绑定外网ip,还不能使用。 登录https://www.dnspod.cn/1. DNS管理 > 我的域名 > 添加域名2. 点击域名 >...
2020-02-23 11:52:26
4750
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
8581
1
原创 iTerm2 使用
iTerm2 是mac下必装的终端工具,用来取代系统的Terminal。下面整理下好玩的功能:终端显示图片:iTerm2 支持在终端下直接渲染图片,很酷炫。iTerm2 > Install Shell Integration 安装shell扩展,运行imgcat 命令显示图片,居然支持gif动态图。Copy:选中文本 则复制,不需要Command ...
2020-02-22 22:17:14
1888
原创 docker-compose使用
docker-compose对单主机Docker容器集群快速编排,时下热门的k8s用于管理整个集群Docker容器。docker启动的是单独的container,一个应用可能依赖多个服务,compose是用于运行和管理多个容器化的工具。下面演示如何快速搭建flask网站,显示站点访问人数,通过redis存储访客计数。一. 安装linux上的docker-compose需单独安...
2020-01-03 20:09:49
612
原创 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
218
原创 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
273
原创 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
3414
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
606
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
183
原创 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
273
原创 springboot 使用
spring 功能非常强大,已经是java web开发标配,但是配置较为复杂繁琐。直到spring boot的出现,彻底改变这种现状。基于spring boot可以用极简的配置,极少的代码,快速开发web应用。一.创建springboot工程File --> New注:Idea comunity没有 spring Initializr组件,需使用Idea Ul...
2019-12-06 20:23:35
347
原创 crtp
C++ 中可通过虚函数实现运行时多态,还可以实现更高效的静态多态。 通过把派生类作为基类的模板参数来实现,该方式称为CRTP(Curious Recurring Template Pattern)。#include <iostream>using namespace std;// 中间类template <class T>class...
2018-07-01 13:38:39
624
原创 STL ++iter与iter++区别
之前编码一直用的是iter++,同事说该方式效率比较低。带着疑惑看STL源码: // vector_Myiter& operator++() { // preincrement ++*(_Mybase *)this; return (*this); }_Myiter operator++(int) { // postincrement...
2018-06-20 11:05:29
1003
原创 C++ 对象内存模型
面试中经常遇到类似多态,虚继承,RTTI,dynamic_cast实现原理之类的问题,这块需要对C++底层内存模型比较理解。C++由于没有存储对象元信息(java反射基础),要支持多态,多继承特性,导致C++对象内存模型异常复杂。 一. 继承内存模型 1. 基类struct B{ long b; virtual void foo(){} ...
2018-06-15 11:19:02
566
原创 Scada 使用二
1. var & valvar 变量,可变val 类似常量,不可变 2. map/reduceval list = List(1,2,3,4,5,6)list.map( f => println(s"val: $f") ) // val:1 xxx val:6val sum = list.reduce( (sum, n) => sum+n ...
2018-06-11 20:19:08
504
原创 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
163
原创 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
1053
原创 设计模式之观察者模式
观察者模式在对象间定义一对多的依赖,当一个对象改变状态,依赖它的对象都会收到通知。类图: 一. java swingswing 注册事件监听器过程,就是观察者模式。// 注册监听事件button.addActionListener( new ActionListener(){ @Override public void actionPerformed(A...
2018-05-17 13:43:31
155
原创 设计模式之装饰器模式
最近看到《设计之禅》的装饰器模式,特用C++实现了一遍,发现有些有意思的东西需要探究一下。UML类图: 一. C++实现#include <stdio.h>/// Baseclass Component{public: virtual ~Component(){} virtual int operate() = 0;};...
2018-05-16 17:51:49
226
原创 原子操作
一. Java volatilevolatile关键字可保证变量可见性,但是无法保证原子性,下面演示多线程修改共享变量Count场景。/** * 共享变量在多线程下修改测试 */public class NonAtomicTest extends Thread { public static volatile int count = 0; pub...
2018-05-15 14:29:21
167
原创 C++符号解析
C++ 符号还原(Demangling),windows/linux平台需分别处理。 #include <typeinfo>#include <cxxabi.h>class Foo{};#ifndef __GNUC__ // vcconst char *real_name = typeid(Foo*[10]).name(); ...
2018-04-07 22:20:47
644
原创 Linux 网络调优
Linux内核目录/proc/sys/net 提供了很多网络协议栈配置参数,可控制网络协议栈行为,达到调优目的。一. 基础命令sysctl -a 显示内核参数sysctl -w net.core.somaxconn=32768echo 32768 > /proc/sys/net/core/somaxconnvi /etc/sysctl.conf...
2018-04-07 21:49:20
655
原创 Java Lambda
该语法糖在jvm脚本语言Groovy/Scale已有很好的支持,Java从8.0才开始支持该特性。 /** * 基础Lambda表达式 * */public static void testLambda() { String[] ss = { "hello", "world", "sun" }; List<String> list = Arra...
2017-12-11 15:35:03
206
原创 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
114
原创 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" > ~/.gdb...
2017-12-09 11:22:15
190
原创 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
684
原创 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
184
原创 thrift servlet
Thrift通常以独立服务存在,也支持HTTP协议,以servlet方式在Tomcat中运行。 一. 服务端Servlet实现比较简单,只需实现TExtensibleServlet,并在getProcessor()中填充实现类。/** * Thrift servlet */@WebServlet(name="thrifttest",value="/thriftt...
2017-08-01 19:35:44
224
原创 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
178
原创 Java Annotation
Spring MVC中存在大量的注解,@RequestMapping可方便实现路由跳转,下面我们看看注解是怎么实现的。 一. 定义注释import java.lang.annotation.*;/** * Annotation Interface class * @author sunling3 * */@Retention(Retenti...
2017-07-31 20:59:09
101
原创 Linux 恢复删除文件
Linux下的rm命令太可怕了,一不小心 rm -rf / 那就悲剧了,请慎用rm -rf。如果一不小心删除重要文件,后续不对该路径文件操作,可以通过相关命令找回被删文件。原理主要是删除的文件并没有实际上从硬盘上抹去,只是inode索引删除了相关的信息(单链表节点删除实现),因此只要找到刚删除文件的block上,就可以恢复已经删除的文件。 一. 查看分区 d...
2017-07-25 15:13:14
511
原创 流量劫持
流量劫持比较复杂,一般来说运营商,路由器厂商,黑客都可能是流量劫持操作者。基于国内大部分网站以http明文协议为主,这无疑给劫持者提供了土壤。本文演示了家庭路由器流量劫持实现,公共WIFI连接授权实现有点差异,它是用iptables重定向至webserver,有兴趣的同学可参考nodogsplash实现源码。一. 原理图原理:1. 嗅探用户http ge...
2017-07-13 12:36:15
1468
原创 nginx 扩展模块开发
apache的插件以动态库方式存在,通过配置动态加载;nginx插件则需要编译至nginx可执行程序中,openresty也是如此,直接将lua解释器嵌入至nginx,使其具备解析lua脚本能力。nginx 内置插件目录在 src/http/modules 下。编写nginx插件过程比较麻复杂,需要对nginx源码及数据结构有一定的了解。nginx实现了字符串,定时器,容器(HashTabl...
2017-06-21 10:37:14
4311
原创 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
133
原创 扩展Lua接口
Lua 是巴西研究小组开发的一个灵活小巧的脚本语言,整个编译后的静态库才400多K,便于嵌入应用程序中,扩展程序功能。常用于游戏开发中,nginx的openresty项目也让lua更加流行。Lua语法与python比较类似,支持自动垃圾回收,面向对象编程。 一. 扩展lua接口lua没有提供sleep()和msleep()实现,我们可以提供动态库给lua调用,代码如下:...
2017-06-20 11:16:05
498
原创 java 反射攻击
Java反射机制指的是程序在运行时能够获取自身的信息;它能动态截获或改写程序的行为。 1. 单例模式漏洞/** * 懒汉式单例模式 */public class Singleton { private static Singleton instance = null; private Singleton() { } public stat...
2017-06-18 22:11:26
637
原创 TCP segment of a reassembled PDU
windows下wireshark抓包经常会出现"TCP segment of a reassembled PDU"提示: 可通过wireshark的 Edit --> Preferences --> Protocols/TCP --> Allow subdissector to reassemble TCP streams 取消勾选该选项可消除提示: ...
2017-06-07 10:30:42
1643
RadAsm V2.2.1.6汉化版
2013-04-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人