所谓字符串工具库就是利用javascript面向对象的知识封装一个常用的字符串处理方法库,首先给这个库起个名字,好吧就叫ghostwu.js. 看下ghostwu.js的整体架构: ; (function (window, undefined) { function init(obj, s) { if (s !== null && s !== undefined) { if (typeof s === 'string') { obj.s = s; } else { obj.s = s.to…
如何在Visual Studio 2017中使用C# 7+语法   前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不喜勿喷,或许对您有帮助. 在Visual Studio 2017配置支持C# 7+语法 心想都VS2017了肯定是支持C# 7+语法,然后接着将控制台程序修改为异步,然后告知于我不行,尼玛这不是扯淡了么,如下: public class Program { public static async T…
事实上,在C的世界里面没有特别好的日志函数库(就像Java里面的的log4j,或者C++的log4cxx).C程序员都喜欢用自己的轮子.printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者输出文件.syslog是个系统级别的轮子,不过速度慢,而且功能比较单调. 尝试了几种C/C++ log库,简单记录如下: log4j的衍生品 日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日志记录,他有很多移植版(包括官方的和非官方的版本) lo…
引言 - sclog 总的设计思路 sclog在之前已经内置到simplec 简易c开发框架中一个日志库. 最近对其重新设计了一下. 减少了对外暴露的接口. 也是C开发中一个轮子. 比较简单, 非常适合学习理解,最后自己写一个自己喜欢的日志库. 首先分析分级设计的总的思路. 主要是围绕上面思路设计. 分6个等级. 2中类型的日志文件. sc.log 普通文件, 什么信息都接受, sc.log.wf只接受异常信息. 需要紧急处理的. 继续说明日志消息体的设计思路 到这里设计的总思路已经清楚了. 后…
前言 最近在尝试阅读字节开源RPC框架Kitex的源码,看到日志库klog部分,果不其然在Go原生的log库的基础上增加了自己的设计,大体包括增加了一些格式化的输出.增加一些常用的日志级别等. 一番了解后,发现有不少开源的日志库也做了类似的事情,以补充原生log库的不足.因为Go原生的log库本身也比较简单,这篇文章先分析一下它的实现,为后续阅读Kitex的日志库klog做一下铺垫. 本次分析基于:GO SDK 1.18.1 /src/log/log.go的源码. log库的使用 结果如下: 第…
c++ 高性能日志库(muduo_AsyncLogging) 实现一个高效的网络日志库要解决那些问题? 首先明确一下问题的模型,这是一个典型的多生产者 单消费者问题,对于前端的日志库使用者来说,应该做到非阻塞添加,作为后端的文件写入,应该注意磁盘IO的瓶颈. 功能需求 日志的级别分级 发生时间和具体线程信息 线程安全 实现思路 多个线程共有一个前端,通过后端写入磁盘文件 异步日志是必须的,所以需要一个缓冲区,在这里我们使用的是多缓冲技术,基本思路是准备多块Buffer,前端负责向Buffer中填…
一个朋友写的日志库 https://github.com/vizee/echo go get -u -v github.com/vizee/echo package main import (     "errors"     "os"     "github.com/vizee/echo" ) func main() {     echo.SetOutput(os.Stdout)     echo.SetLevel(echo.DebugLeve…
需求 一个通用的日志包,应该满足以下几个需求: 兼容 log.Logger,标准库大量使用了 log.Logger 作为其错误内容的输出通道,比如 net/http.Server.ErrorLog,所以兼容 log.Logger 是首要的需求: 自定义配置,不同的运行环境,往往需要不同的日志输出配置,在不重新编译源码的情况下,就能改变配置也应该成为一项标配: 不同的输出类型,根据目前市面上大部分的日志库,我们把日志分为以下六种类型:INFO.WARN.DEBUG.TRACE.ERROR 和 CR…
概述 最近在弄阿里云的sls日志服务,该服务提供了一个搜索接口,可根据各种运算.逻辑等表达式搜出想要的内容.具体语法可见https://help.aliyun.com/document_detail/29060.html?spm=5176.doc29029.2.2.8PG8RA. 在开发中,我们需要用到该接口的查询需求会不断扩增,可能一开始只用and,后面加了or和not,再后来又多了key/value pair.数值比较等等.如果把这些处理逻辑放在业务逻辑中,未免太过暴力,而且非常不方便维护和…
开发一个web容器涉及很多不同方面不同层面的技术,例如通信层的知识,程序语言层面的知识等等,且一个可用的web容器是一个比较庞大的系统,要说清楚需要很长的篇幅,本文旨在介绍如何设计一个web容器,只探讨实现的思路,并不涉及过多的具体实现.把它分解划分成若干模块和组件,每个组件模块负责不同的功能,下图列出一些基本的组件,并将对每个组件进行介绍. 连接接收器 主要的职责就是监听是否有客户端套接字连接并接收socket,再将socket交由任务执行器(线程池)执行.不断从系统底层读取socket,做尽…