libevent是一套轻量级的网络库,基于事件驱动开发.能够实现多线程的多路复用和注册事件响应.本文将介绍libevent的基本功能以及如何利用libevent开发一个线程池. 一. 使用指南 监听服务和注册连接事件 libevent是一个基于事件驱动的网络库,通过在一个事件循环上注册不同的事件以完成线程多路复用.由于libevent采用c语言开发,为了使用方便我们可以将它的功能通过面向对象的设计模式用c++来封装.下面是对常用函数的详细介绍: (1)event_base_new():创建(初始…
SMSS是一个由我个人发起的开源项目,目的是建立一套轻量化,高可用,高安全和方便扩展的业务支撑框架.SMSS面向TCP/IP层开发,适合扩展上层业务接口.数据结构传输序列化通过Protobuf实现.传输过程中的数据经过OpenSSL加密再由接收端进行解密,文件传输也需要由发送方的秘钥首先做签名再由接收方验签.核心功能完全不需要DB支撑,降低学习.开发和部署的难度.客户端使用Electron,也足够简单和保持跨平台特性.另一个方面,我相信对于每一个曾经心怀梦想进入IT行业的人来说,能够创建属于自己…
在开发spring boot应用服务的时候,难免会使用到异步任务及线程池.spring boot的线程池是可以自定义的,所以我们经常会在项目里面看到类似于下面这样的代码 @Bean public Executor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(config.getCorePoolSize()); executor.s…
本文将详细介绍如何在Java端.C++端和NodeJs端实现基于SSL/TLS的加密通信,重点分析Java端利用SocketChannel和SSLEngine从握手到数据发送/接收的完整过程.本文也涵盖了在Ubuntu系统上利用OpenSSL和Libevent如何创建一个支持SSL的服务端.文章中介绍的知识点并未全部在SMSS项目中实现,因此笔者会列出所有相关源码以方便读者查阅.提醒:由于知识点较多,分享涵盖了多种语言.预计的学习时间可能会大于3小时,为了保证读者能有良好的学习体验,继续前请先安…
继上一篇介绍如何在多种语言之间使用SSL加密通信,今天我们关注Java端的证书创建以及支持SSL的NioSocket服务端开发.完整源码 一.创建keystore文件 网上大多数是通过jdk命令创建秘钥文件,但是有时候我们需要将配套的秘钥以及证书让多个模块来使用,他们很可能是由不同语言开发.在这样的情形下,我们通常会选择openssl. 生成服务端的秘钥文件 openssl genrsa -out server.key 2048 这个秘钥文件是经过Base64编码后生成的,你可以使用文本工具打开…
本文的第一部分将介绍protobuf使用基础以及如何利用protobuf设计通信协议.第二部分会给出smss项目的协议设计规范和源码讲解. 一.Protobuf使用基础 什么是protobuf protobuf是谷歌研发的一种数据序列化和存储技术.主要可以用来解决网络通讯中异构系统的通讯和数据持久化,与同类技术相比(JSON或XML),官方宣称的数据量长度减少3~10倍,运算速度20~100倍.由于与平台无关,因此非常适合使用在多系统的交互中. 目前常见的使用版本是2和3,个人推荐如果你打算在项…
开源项目renren-fast-vue开发环境部署(前端部分) 说明:renren-fast是一个开源的基于springboot的前后端分离手脚架,当前版本是3.0 开发文档需要付费,官方的开发环境部署介绍相对比较简单,对于想尝试搭建个项目的新手而言不太友好,特此将自己搭建的过程记录如下 一.环境准备 构建vue项目我们需要使用npm命令,到node官网下载当前稳定版本并安装 按默认安装完后,命令行node -v.npm -v查看版本信息 二.下载项目和所需组件 直接下载zip包或通过git克隆…
开源项目renren-fast开发环境部署(后端部分) 说明:renren-fast是一个开源的基于springboot的前后端分离手脚架,当前版本是3.0 开发文档需要付费,官方的开发环境部署介绍相对比较简单,对于想尝试搭建个项目的新手而言不太友好,特此将自己搭建的过程记录如下 一.环境准备 JDK1.8.Mysql5.5+(Linux数据库安装教程) idea.Git客户端.maven 二.下载并导入项目 直接下载zip包或通过git克隆到本地仓库,如下: git clone https:/…
文章首发在公众号(龙台的技术笔记),之后同步到掘金和个人网站:xiaomage.info Hippo4J 线程池框架经过 6 个多月的版本迭代,2022 年春节当天成功发行了 1.0.0 RELEASE 版本.对这方面功能有需求的小伙伴可以入手了哈- Hippo4J 简介 Hippo4J 基于 美团动态线程池 设计理念开发,针对线程池增强 动态调参.监控.报警功能.通过 WEB 控制台对线程池参数进行动态调整,支持 集群内线程池的差异化配置.内置线程池参数变更通知,以及 运行过载报警 功能(支持…
前言:本文适用于快速搭建权限系统的用户,尤其适用于希望有良好定义的权限模型建立:系统解决方案是在基于角色访问控制(RBAC)策略基础上的权限访问模型实现,主要完成了后台权限验证逻辑和前端权限数据验证的功能. 1. 权限访问模型 1). 权限访问控制基本概念 角色:是用户集合,表示同一类型的用户集合,可以拥有相同的功能操作.如:“部门经理”,表示公司下各个部门经理的用户的集合,通常他们有一组相同的权限. 用户:指登录系统进行操作的软件用户,由用户名或者登录名来进行标识,每个用户分配有操作列表. 资…
前言: 上周开源了Aries开发框架后,好多朋友都Download了源码,在运行过程里,有一些共性的问题会问到. 所以本篇打算写一下简单的开发指南,照顾一下不是太看的懂源码的同学,同时也会讲解一下框架原理. 开源的文章或源码获取地址见上一篇文章:开源:ASP.NET Aries 开发框架 关于框架: 首先,这是一套开发框架,它类同于WebForm.MVC..NET Core. 相比webform,mvc,.NET Core 它简化了后端很多东西,它也加强了前端一些功能,默认集成的功能和界面,使得…
在本博客的<Spark Streaming和Kafka整合开发指南(一)>文章中介绍了如何使用基于Receiver的方法使用Spark Streaming从Kafka中接收数据.本文将介绍如何使用Spark 1.3.0引入的Direct API从Kafka中读数据. 和基于Receiver接收数据不一样,这种方式定期地从Kafka的topic+partition中查询最新的偏移量,再根据定义的偏移量范围在每个batch里面处理数据.当作业需要处理的数据来临时,spark通过调用Kafka的简单…
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/94 doraemonkit 功能介绍 一两周前在地铁上刷任玉刚的公众号,看到他推荐了滴滴出行的几个开源项目doraemonkit,挺好奇的,到了公司打开电脑,对其中的第一个开源项目doraemonkit很有兴趣,按照readme上的介绍说,doraemonkit中文名称为哆啦A梦,是一个功能集合面板,像哆啦A梦一样,可以提供各种工具. doraemonki…
我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/Cai-Zi/STM32_RC_Transmitter QQ交流群:1091996634 [密码:J20] 1. 遥控器控制面板各按钮和遥杆说明 2. 菜单操作逻辑 3. 遥杆校准 由于不同的遥杆的回中值和遥杆范围不一样,所以在初次使用时,应先校准遥杆的范围! 校准方法如下: (1)按下旋转编码器的按…
五.GridView StaggeredGridView 同意非对齐行的GridView,类似Pinterest的瀑布流.而且跟ListView一样自带View缓存,继承自ViewGroup 项目地址:https://github.com/maurycyw/StaggeredGridView Demo地址:https://github.com/Trinea/TrineaDownload/blob/master/staggered-gridview-demo.apk?raw=true APP演示样…
下面我们来看第二层:Data   这一层相对来说是对Core层的具体实现了. 从命名可以看出来,这和数据库相关. 1.Db.cs CodeFirst模式的本地数据库类,继承了DbContext. protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Dinner>().HasMany(r => r.Meals).WithMany(o => o.Dinner…
前一篇SlidingMenu学习(一)文章中了解了导入SlidingMenu到我们项目经常出现的问题,下面我们正式学习. 先看一个效果: 看到两幅图片的差别了吗,左边的一栏时可以滑动的,可以隐藏掉,现在就是用这个开源项目实现类似功能. public class BaseActivity extends SlidingFragmentActivity { private int mtitleRes; private Fragment frag; public BaseActivity(int mt…
珍惜作者劳动成果,如需转载,请注明出处. http://blog.csdn.net/zhengzechuan91/article/details/50292871 Universal-Image-Loader 是一个优秀的图片加载开源项目,Github地址在 (Github地址) ,很多童鞋都在自己的项目中用到了.优秀的项目从来都是把简单留给开发者,把复杂封装在框架内部.ImageLoader作为Github上Star数过万的项目,备受开发者青睐,所以我们有必要搞清楚它的内部实现. 在上一篇博客…
推荐阅读:Laravel 中使用 swoole 项目实战开发案例一 (建立 swoole 和前端通信)​ 需求分析 我们假设有一个需求,我在后端点击按钮 1,首页弹出 “后端触发了按钮 1”.后端点了按钮 2,列表页弹出 “后端触发了按钮 2”.做到根据不同场景推送到不同页面. 代码思路 Swoole fd客户端浏览器打开或者刷新界面,在 swoole 服务会生成一个进程句柄 fd ,每次浏览器页面有打开链接 websocket 的 js 代码,便会生成,每次刷新的时候,会关闭之前打开的 fd,…
本文你将获得以下信息: 线程池源码解读 线程池执行流程分析 带返回值的线程池实现 延迟线程池实现 为了方便读者理解,本文会由浅入深,先从线程池的使用开始再延伸到源码解读和源码分析等高级内容,读者可根据自己的情况自主选择阅读顺序和需要了解的章节. 一.线程池优点 线程池能够更加充分的利用CPU.内存.网络.IO等系统资源,线程池的主要作用如下: 利用线程池可以复用线程,控制最大并发数: 实现任务缓存策略和拒绝机制: 实现延迟执行 阿里巴巴Java开发手册强制规定:线程资源必须通过线程池提供,如下图…
掌握Java中的多线程,必须掌握Java中的各种锁,以及了解Java中线程池的运用.关于Java多线程基础总结可以参考我的这篇博文Java多线程总结(一)多线程基础 转载请注明出处——http://www.cnblogs.com/zrtqsk/p/3784049.html,谢谢. 一.Java中锁 什么是锁.锁就是为了保护资源,防止多个线程同时操作资源时出错的机制. 我们先来看一下锁的类图: 如图,Java中的锁有两个主要的根接口——Lock和ReadWriteLock,分别表示锁和读写锁.其中…
一.总览 线程池类ThreadPoolExecutor的相关类需要先了解: (图片来自:https://javadoop.com/post/java-thread-pool#%E6%80%BB%E8%A7%88) Executor:位于最顶层,只有一个 execute(Runnable runnable) 方法,用于提交任务. ExecutorService :在 Executor 接口的基础上添加了很多的接口方法,提交任务,获取结果,关闭线程池. AbstractExecutorService…
C++实现简单的线程池 线程池编程简介: 在我们的服务端的程序中运用了大量关于池的概念,线程池.连接池.内存池.对象池等等.使用池的概念后可以高效利用服务器端的资源,比如没有大量的线程在系统中进行上下文的切换,一个数据库连接池,也只需要维护一定里的连接,而不是占用很多数据库连接资源.同时它们也避免了一些耗时的操作,比如创建一个线程,申请一个数据库连接,而且可能就只使用那么一次,然后就立刻释放刚申请的资源,效率很低. 在我的上一篇blog中已经实现一个线程基类了,在这里我们只需要实现一个线程池类T…
项目要求 1.基本 用线程池实现一个大文件夹的拷贝,大文件夹嵌套很多小文件:实现复制到指定文件夹的全部文件夹. 2.扩充功能 显示进度条:拷贝耗时统计:类似linux的tree,不能直接用system()与exec()等函数:根据文件类型拷贝:搜索文件:删除文件等.(暂时加了这么一些功能) 8月17日补:移动.复制到的目录已包含该文件则选择覆盖或者加命名. 实现思路 先完成基本,逐步完成扩展再优化重构代码. 实现过程 基本功能 基于linux,通过线程池实现的.核心就是线程池的三大基本功能--线…
前言:最近项目中与融360项目中接口对接,有反馈接口(也就是我们接收到请求,需要立即响应,并且还要有一个接口推送给他们其他计算结果),推送过程耗时.或者说两个接口不能是同时返回,有先后顺序. 这时我想到了把自己Controller立即返回接受成功,中间添加一个新的线程去做其他耗时的操作(线程池配置和参数测试讲解请阅读第5步). 1.Controller代码如下: @Autowiredprivate CallThreadDemo worker; @RequestMapping("/bandBank…
hystrix进行资源隔离,其实是提供了一个抽象,叫做command,就是说,你如果要把对某一个依赖服务的所有调用请求,全部隔离在同一份资源池内 对这个依赖服务的所有调用请求,全部走这个资源池内的资源,不会去用其他的资源了,这个就叫做资源隔离 hystrix最最基本的资源隔离的技术,线程池隔离技术 对某一个依赖服务,商品服务,所有的调用请求,全部隔离到一个线程池内,对商品服务的每次调用请求都封装在一个command里面 每个command(每次服务调用请求)都是使用线程池内的一个线程去执行的 所…
目录 1.利用Executors创建线程的五种不同方式 2.为什么要使用线程池 3.Executor的框架 4.J.U.C的三个Executor接口 5.ThreadPoolExecutor 6.线程池的状态 7.线程池大小如何选定 十二.Java线程池 1.利用Executors创建线程的五种不同方式 2.为什么要使用线程池 3.Executor的框架 4.J.U.C的三个Executor接口 5.ThreadPoolExecutor 虽然Executor提供的五种方法够用了,但是仍然不能满足…
谷歌C++代码风格指南.农业所需的代码.更难得的是不FQ,决定性的最爱!! . http://zh-google-styleguide.readthedocs.org/en/latest/google-cpp-styleguide/contents/ 其它编码风格,请猛击: http://zh-google-styleguide.readthedocs.org/en/latest/ 英文原版: http://code.google.com/p/google-styleguide/…
基于深度学习的目标跟踪sort与deep-sort https://github.com/Ewenwan/MVision/tree/master/3D_Object_Detection/Object_Tracking 1 论文和源码地址 SORT: 论文地址:http://arxiv.org/pdf/1602.00763.pdf python代码地址:https://github.com/abewley/sort 前景提取获取目标框ID  C++版本: https://github.com/ng…
原文转自:http://segmentfault.com/blog/windwhinny/1190000000596258 公开 property 当你公开一个 Polymer 元素的 property 名字时,就等于把这个 property 设置为公开API了.公开 property 会有如下的特性: 支持声明数据双向绑定 通过声明,property 将会按照名称一样的 html attribute 初始化数据 property 的值可以反射到元素对应的attribute上 注: proper…