编程
代码修炼之路
hello2mao
https://github.com/hello2mao
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言中的正则表达式使用
目录一、概述二、Demo三、Ref记录下C中的正则表达式及其使用Demo。一、概述在c语言中,用regcomp、regexec和regfree:编译正则表达式,regcomp; 匹配正则表达式,regexec; 释放正则表达式,regfree;函数原型如下:/*函数说明:Regcomp将正则表达式字符串regex编译成regex_t的形式,后续regexec以此进行搜索。参数说明: Preg:一个regex_t结构体指针。 Regex:正.原创 2021-04-08 14:48:20 · 1679 阅读 · 0 评论 -
python多线程读写锁
记录一个python多线程时使用读写锁的示例。#!/usr/bin/env python3""" Several users reading a calender, but only a few users updating it """import threadingfrom readerwriterlock import rwlockWEEKDAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday.原创 2021-03-26 17:58:41 · 1517 阅读 · 2 评论 -
C/C++中控制动态库的符号可见性
一、需求写了一个动态库供客户使用,此库使用了一些第三方静态库,无奈客户也使用了这些第三方库,从而产生了符号冲突。 所以需要隐藏此库中第三方库的导出符号。二、可选解决方案解决方案优点缺点static 关键字简单语言级别支持static 关键字限定变量或函数只可以在定义它的文件范围内使用导出列表消除了 static 关键字上的限制不需要更多的代码可以关联版本信息具有不同粒度的符号可见性控...原创 2018-02-26 21:08:20 · 8395 阅读 · 0 评论 -
C++ core dump调试及崩溃监控
一、概述C++程序崩溃时会产生core dump,一般有Segmentation Fault和Abort等。二、保存core dump文件很多时候需要保存core dump文件,方便后面调试修复BUG。 默认linux系统的core dump可能没有打开,因为core dump的文件很大,如果一个机器多个角色复用瞬间写很大的一个core dump文件,会大量占用机器资源,所以如果原创 2018-02-05 11:47:43 · 11676 阅读 · 0 评论 -
Golang GC 过程
一、GC过程Golang 1.5后,采取的是“非分代的、非移动的、并发的、三色的”标记清除垃圾回收算法。 Golang的GC过程如下所示(图片来自:https://talks.golang.org/2015/go-gc.pdf): 一共分为四个阶段: 1. 栈扫描(开始时STW) 2. 第一次标记(并发) 3. 第二次标记(STW) 4. 清除(并发)二、三色标记原...原创 2018-03-07 13:49:59 · 1599 阅读 · 0 评论 -
Go-简洁的并发
多核处理器越来越普及。有没有一种简单的办法,能够让我们写的软件释放多核的威力?是有的。随着Golang, Erlang, Scala等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正如过程式编程和面向对象一样,一个好的编程模式有一个极其简洁的内核,还有在此之上丰富的外延。可以解决现实世界中各种各样的问题。本文以GO语言为例,解释其中内核、外延。并发模式之内核这种并发模式的内核只需要...转载 2018-03-07 10:01:16 · 553 阅读 · 0 评论 -
APM Server端Java探针调研
一、需求Tomcat: (1)模块启动时间 (2)模块交互耗时二、现状现代APM体系,基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)的体系来做的。通过跟踪请求的处理过程,来对应用系统在前后端处理、服务端调用的性能消耗进行跟踪,关于Dapper的介绍可以看这个链接:http://bigbully.github.io/Dapper-translation/ ...原创 2018-02-08 09:47:56 · 8695 阅读 · 0 评论 -
并发编程的挑战
一、上下文切换含义 CPU通过给每个线程分配时间片来实现多线程,时间片一般是几十毫秒。当任务时间片用光后会切到下一个任务,但是,在切换前会保存上一个任务的状态,以便切换回这个任务的时候可以再加载这个任务。任务从保存状态到再加载的过程就是一次上下文的切换。如何减少上下文切换 (1)无锁并发编程。如将数据合理分段,不同线程处理不同不同段数据。 (2)CAS算法。Java的Atomic包使原创 2017-08-28 21:32:52 · 412 阅读 · 0 评论 -
代理模式及JDK动态代理(InvocationHandler)的简单实现与分析
在慕课网上学习了讲解代理模式的一个课程--《模式的秘密--代理模式》,感叹于David老师屌炸天的PPT,同时,老师一步一步模仿JDK源码去写code,教我们去简单实现JDK中的动态代理,讲的清晰透彻。在此我做下笔记,课程原地址:http://www.imooc.com/learn/214原创 2016-08-28 22:24:30 · 8392 阅读 · 1 评论 -
Spring Boot部署NewRelic的Java探针记录
一、pom.xmlpom文件修改如下:增加NewRelic Agent依赖在spring-boot-maven-plugin中注明main class把NewRelic Agent jar打包进最终jar在manifest中增加Premain-Class等属性<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://mave原创 2017-08-17 15:24:38 · 3265 阅读 · 0 评论 -
利用反射实现可供任意类使用的toString方法
可供任意类使用的toString方法原创 2016-08-24 11:58:56 · 1622 阅读 · 0 评论
分享