Loading

随笔分类 -  软件设计

摘要:一、DevSecOps产品 国内做的比较好的: 悬镜安全:https://www.xmirror.cn/ 默安科技:https://www.moresec.cn/ 开源网安:https://www.seczone.cn/ 容器安全: 小佑科技:https://www.dosec.cn/index.h 阅读全文
posted @ 2021-07-16 14:39 阿凡卢 阅读(919) 评论(1) 推荐(1) 编辑
摘要:一、常用配置优化 对于Nginx的调优,可以大致从如下指令着手: 1. worker_processes 2. worker_connections3. Buffers4. Timeouts5. Gzip Compression6. Static File Caching7. logging 1. 阅读全文
posted @ 2021-01-12 17:59 阿凡卢 阅读(3382) 评论(0) 推荐(0) 编辑
摘要:背景 业务系统在应用过程中,有时候要处理“经常变化”的部分,这部分需求可能是“业务规则”,也可能是“不同的数据处理逻辑”,这部分动态规则的问题,往往需要可配置,并对性能和实时性有一定要求。 Java不是解决动态层问题的理想语言,在实践中发现主要有以下几种方式可以实现: 表达式语言(expressio 阅读全文
posted @ 2020-08-25 09:38 阿凡卢 阅读(9638) 评论(0) 推荐(2) 编辑
摘要:背景 我们的系统基本都是前后端分离架构,后端服务主要框架是基于java的spring boot,为了快速的构建新项目,将平时做后端的东西抽出一个开发脚手架。 技术栈 java 21 spring-boot 3.2.1 springdoc-openapi 2.3.0 guava 32 mybatis. 阅读全文
posted @ 2020-06-04 10:02 阿凡卢 阅读(3434) 评论(1) 推荐(1) 编辑
摘要:一、应用场景 在需求开发过程中,我们经常会遇到一些类似下面的场景:1)外卖订单超过15分钟未支付,自动取消2)使用抢票软件订到车票后,1小时内未支付,自动取消3)待处理申请超时1天,通知审核人员经理,超时2天通知审核人员总监4)客户预定自如房子后,24小时内未支付,房源自动释放 那么针对这类场景的需 阅读全文
posted @ 2020-05-14 11:00 阿凡卢 阅读(4245) 评论(0) 推荐(2) 编辑
摘要:一、什么是高并发 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。 高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per 阅读全文
posted @ 2019-11-03 18:12 阿凡卢 阅读(3383) 评论(0) 推荐(0) 编辑
摘要:本文简单介绍下后端服务开发中常用的一些性能优化策略。 1、代码 优化代码实现是第一位的,特别是一些不合理的复杂实现。如果结合需求能从代码实现的角度,使用更高效的算法或方案实现,进而解决问题,那是最简单有效的。 2、数据库 数据库的优化,总体上有3个方面: 1) SQL调优:除了掌握SQL基本的优化手 阅读全文
posted @ 2019-10-28 20:01 阿凡卢 阅读(6883) 评论(2) 推荐(1) 编辑
摘要:背景 前几个月,使用Vertx重构了公司的一个子系统,该系统负责公司核心数据subscriber的采集、处理、存储和搜索。这里介绍下重构该系统时的一些关键点。 架构 重构前系统部署图: 重构前系统主要有2部分组成,这2部分都会对Subscriber数据操作: Java APP: 是个定时任务触发的A 阅读全文
posted @ 2018-04-10 17:09 阿凡卢 阅读(2636) 评论(0) 推荐(1) 编辑
摘要:Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 s 阅读全文
posted @ 2017-09-13 13:24 阿凡卢 阅读(5266) 评论(1) 推荐(0) 编辑
摘要:实时消息的推送,PC端的推送技术可以使用socket建立一个长连接来实现。传统的web服务都是客户端发出请求,服务端给出响应。但是现在直观的要求是允许特定时间内在没有客户端发起请求的情况下服务端主动推送消息到客户端。 有哪些可以实现web消息推送的技术: 不断地轮询(俗称“拉”,polling)是获 阅读全文
posted @ 2015-02-08 14:11 阿凡卢 阅读(53186) 评论(26) 推荐(2) 编辑
摘要:记得以前就看过这篇文章:How to write a spelling corrector,文章将贝叶斯原理运用于拼写检查,二十几行简单的Python的代码就实现了一个拼写检查器。原作者python代码:import re, collectionsdef words(text): return re... 阅读全文
posted @ 2014-11-15 16:58 阿凡卢 阅读(4031) 评论(0) 推荐(0) 编辑
摘要:写一个函数交换两个变量的值。C:错误的实现:void swap(int i, int j) { int t = i; i = j; j = t;}因为C语言的函数参数是以值来传递的(pass by value),参数传递时被copy了,所以函数中交换的是复制后的值。正确的实现:指针版:v... 阅读全文
posted @ 2014-09-29 09:54 阿凡卢 阅读(2857) 评论(3) 推荐(0) 编辑
摘要:一、单例模式的C#实现:(1)使用double-checked locking的方式:public sealed class Singleton{ private static volatile Singleton instance = null; private static read... 阅读全文
posted @ 2014-07-13 16:22 阿凡卢 阅读(728) 评论(0) 推荐(1) 编辑
摘要:DIP,IoC,DI基本概念依赖倒置原则(DIP,Dependency Inverse Principle):强调系统的“高层组件”不应当依赖于“底层组件”,并且不论是“高层组件”还是“底层组件”都应当依赖于抽象。抽象不应当依赖于实现,实现应当依赖于抽象。依赖(Dependency):组件A如果:①... 阅读全文
posted @ 2014-06-16 21:03 阿凡卢 阅读(1692) 评论(3) 推荐(3) 编辑
摘要:简单的Http Server 使用Libevent内置的http相关接口,可以很容易的构建一个Http Server,一个简单的Http Server如下: 通过Libevent的接口构建一个Http Server的过程如下: (1)初始化:在event_base上新建一个evhttp,将这个evh 阅读全文
posted @ 2014-05-02 23:01 阿凡卢 阅读(40557) 评论(7) 推荐(5) 编辑
摘要:一些概念: 同步和异步 同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发I/O操作并等待或者轮询的去查看I/O操作是否就绪,而异步是指用户进程触发I/O操作以后便开始做自己的事情,而当I/O操作已经完成的时候会得到I/O完成的通知。 阻塞和非阻塞 阻塞和非阻塞是针对于进程在访问数据 阅读全文
posted @ 2014-04-26 17:28 阿凡卢 阅读(9680) 评论(2) 推荐(8) 编辑
摘要:Libevent官网:http://libevent.org/ windows 7下编译: 编译环境: windows 7 + VS2010 (1)解压libevent到F:\libevent\libevent-2.0.21-stable (2)打开Microsoft visual studio 2 阅读全文
posted @ 2014-03-16 15:34 阿凡卢 阅读(44485) 评论(10) 推荐(2) 编辑
摘要:VLC的C++封装 因为工作需要,研究了一段时间的播放器开发,如果从头开始做,可以学习下FFmpeg(http://www.ffmpeg.org/),很多播放器都是基于FFmpeg开发的,但是这样工作量和难度都比较大,如果想很快能拿出一个播放器来用的,可以研究下开源的播放器,参考下射手播放器作者的文 阅读全文
posted @ 2013-12-06 21:33 阿凡卢 阅读(40358) 评论(13) 推荐(6) 编辑
摘要:在以前VC++6.0中默认的字符集是多字节字符集(MBCS:Multi-Byte Character Set),而VS2005及以后默认的字符集是Unicode,这样导致以前在VC6.0中非常简单实用的各类字符操作和函数在VS2010环境下运行时会报各种各样的错误。 字符集可以通过工程属性修改:“工 阅读全文
posted @ 2013-12-02 21:41 阿凡卢 阅读(21344) 评论(0) 推荐(3) 编辑
摘要:1、在Windows下用CMD netstat命令可以获得当前进程监听端口号的信息,如netstat -ano可以看到IP、port、状态和监听的PID。 那么可以执行CMD这个进程得到监听的端口号信息,C#代码如下: 2、如果不执行CMD进程,如何获得?可以参考这篇文章http://www.cnb 阅读全文
posted @ 2013-11-02 21:05 阿凡卢 阅读(14404) 评论(0) 推荐(0) 编辑