自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无尽星空--帝王铠

精益求精,坚持不懈,势不可挡

  • 博客(139)
  • 资源 (2)
  • 论坛 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 面向对象七大设计原则

1、 开闭原则(OCP:Open Closed Principle)核心:对扩展开放,对修改关闭。即在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。根据开闭原则,在设计一个软件系统模块(类,方法)的时候,应该可以在不修改原有的模块(修改关闭)的基础上,能扩展其功能(扩展开放)。2、 里氏替换原则(LSP:Liskov Substitution Principle)核心:在任何父类出现的地方都可以用他的子类来替代(子类应当可以替换父类并出现在父类能够出现的任何地方)1.子类必须完全

2020-12-28 17:14:17 13

原创 回顾六年,时间匆匆

2020-12-28 17:13:36 9

原创 最近的一些感悟--资源争取和资源倾斜

资源是有限的。资源少于需求。所以每个人都为自己争取尽可能多的资源,即使自己用不上。在上级分配资源,容易出现资源倾斜。向某些人,某些方面倾斜。这些方面也是上级看重方向。如果沟通频繁,上级会极大的宽容这个方向上的失败,会更认可这个方向上的成功。就像buff 一样,是个增益buff。但团队中,总会有些不重要但必要的事情需要有人做。而且往往这些部分比上级看中的部分更多。这显然有点悲哀,你做的多,做的快,却不重要,不被上级看重,即使你沟通频繁也于事无补。因为从一开始方向就是两个方向了,路走远了。那

2020-07-30 16:59:39 311

原创 如何判断终端环境是物理机、虚拟机还是容器?

有点黑客帝国的意思,我就想探索下怎么判断当前终端所处环境是容器里还是就在物理机上,或者是虚拟机?容器和虚拟机的区别:容器共享内核,虚拟机独享内核虚拟机和物理机的区别:虚拟机是软件模拟的完整硬件系统功能的、完全隔离环境的计算机系统。只要模拟的全面,是没有太大差别的。除了性能差异,毕竟软件做了硬件的事。以下测试环境:容器 docker虚拟机 私有CVM物理机 ubuntu方法一:systemd-detect-virt如果是容器会显示 docker如果是CVM会显示 kvm如果是物理机

2020-06-02 10:58:52 845

原创 最近写博客写的比较少

项目开发中,项目保密,所以很多我自己觉得不错的设计并不能拿出来讲,甚至不能在内部分享写出来,只能等发布后尘埃落定,得到玩家认可才能公开。只能记录一些少量的情报拉

2020-05-09 10:49:44 88

原创 sudo rm -rf /执行后到底是什么样子

最近某公司后台删库造成了很大损失,我来探究下sudo rm -rf /会怎么样,主要是云服务器快到期了,试验环境来利用起来。大家就是看看不要在生产环境试验哦。CentOS 7.6 64位第一次执行sudo rm -rf /提示这是个危险操作然后我们强行试一下,这个时候其他终端已经连不上了rm: it is dangerous to operate recursively on ‘/’...

2020-03-05 12:36:31 4182

原创 LuaJit Trace Compiler剖析

简要过程如下:分析阶段概要分析的目的是识别热循环。循环计数超过某个阈值后,该循环被认为是热循环,并进入跟踪模式。追踪阶段在跟踪阶段,循环的执行正常进行,记录的操作通常以中间表示(中间表示(IR)是由编译器或虚拟机内部使用,表示源代码中的数据结构或代码)形式存储。优化和代码生成阶段典型的优化包括常量子表达式消除,死代码消除,寄存器分配,不变代码运动,常量折叠和转义分析。优化之后,跟踪将...

2019-11-09 15:53:06 367

原创 lua源码研究一些细节记录

LuaJIT版本编译64位,突破2gb内存限制# Enable GC64 mode for x64.#XCFLAGS+= -DLUAJIT_ENABLE_GC64多线程中的lua同步问题修改 源码中llimits.h的#define lua_lock(L) ((void)0)#define lua_unlock(L) ((void) 0)重写这两个宏。以添加pthread提...

2019-09-21 17:41:27 193

原创 C++11并发,有锁队列和无锁队列

有锁队列#include <memory>#include <mutex>template<typename T>class threadsafe_queue{private: struct node { std::shared_ptr<T> data; std::unique_ptr<node> next; }...

2019-09-11 23:44:11 1046 1

原创 单机百万并发链接需要修改的一些系统参数备忘

1.Too Many Files默认1024echo ulimit -n 65535 >>/etc/profile2.Address already in use26116/etc/security/limits.conf每个进程打开的io数量root hard nofile 1048576root soft nofile 1048576/etc/sysctl.con...

2019-09-07 20:11:05 142

原创 C++并发学习笔记

基础的定义略过,这里只记录一些细节。std::async自动创建一个线程(或从内部线程池中挑选)和一个promise对象。然后将std::promise对象传递给线程函数,并返回相关的std::future对象当我们传递参数的函数退出时,它的值将被设置在这个promise对象中,所以最终的返回值将在std::future对象中可用std::async中的第一个参数是启动策略,它控制s...

2019-09-02 01:22:51 77

原创 绑定线程到指定cpu,CPU占用率像海波浪一样

#include <stdlib.h>#include <math.h>#include <sys/time.h>#include <stdbool.h>#include <unistd.h>#include <stdio.h>#include <sched.h>#include <thread...

2019-08-15 14:17:30 201

原创 64位操作系统最大虚拟内存16TB

原文链接:http://shayi1983.blog.51cto.com/4681835/1734822本文为原创翻译,原文出处为 http://www.codemachine.com/article_x64kvas.html这有效地将 X64 地址空间分开成2部分——用户模式地址的范围:0x0000000000000000~0x0000FFFFFFFFFFFF;内核模式地址的范围:0xFF...

2019-06-26 22:53:20 2736 1

原创 光追起步 Ray Tracing in One Weekend

https://blog.csdn.net/libing_zeng/article/details/72598060这个博客写的非常优秀,非常详实。书在这http://www.realtimerendering.com/raytracing/Ray%20Tracing%20in%20a%20Weekend.pdfhttp://www.realtimerendering.com/raytrac...

2019-06-03 17:31:06 705

原创 游戏服务器开发技术总结

游戏服务器开发技术总结游戏类型MMORPGFPS文字/解密2D格斗赛车、球类竞技运动模拟休闲小游戏其他本文以MMORPG类型为例,总结服务器开发的技术栈。架构多服架构,目前主流MMORPG服务器为了提升承载人数,采用多达几十个服务器进程来形成一组游戏服务器服务玩家。通常会按功能分类,比如全局服,代理服,聊天服,战场服,排行榜服,组队服等等。也会按功能或者场景分,比如主城...

2019-05-01 22:31:13 666

原创 C++ Modules 试验

https://blogs.msdn.microsoft.com/vcblog/2017/05/05/cpp-modules-in-visual-studio-2017/未完

2018-12-24 20:13:23 1433

原创 如何开启BBR算法

启用BBR算法之前首先要确定系统的Linux内核版本在4.9以上。1.查看内核版本uname -a1如果内核版本小于4.9则需要更新内核,4.9及以上跳过第二步2.更新内核此方法仅适用于Ubuntu和Debian首先查看系统位数,执行以下命令getconf LONG_BIT1看是64还是32位在Ubuntu Kernel上下载对应的内核安装包下载4.11的内核:#32位...

2018-12-19 21:54:38 1165

原创 TCP之Nagle算法和延迟确认及关闭参数

主要为了解决首发包延迟问题。关闭Nagle算法,设置TCP_NODELAY关闭延迟确认Delayed Ack, 每次都得设置 TCP_QUICKACK基础知识顺便列一下Nagle算法为了减少网络中小分组的数目,减少网络拥塞的情况。Nagle算法要求在一条TCP连接上最多只能有一个未被确认的未完成小分组,在该分组ACK到达之前不能够发送其他的小分组,发送端需要收集需要发送的小分组,在接...

2018-12-18 10:15:35 2783

原创 云服务相关

1.亚马逊超越谷歌的原因在于起步早,提供服务器简单,谷歌提供的机器学习市场暂时用不到。2。阿里云主要在国内强,亚马逊除了中国都部署。

2018-11-27 10:10:47 67

原创 提问之前要先思考

向老师请教是学习的好方法,但在这里要批驳的是不经思考,有题就问的现象。有的人遇到做错的题直接就拿去找老师。其实有些问题查过书,再经过自己的思考就可以得出正确的结论。甚至得出结论后再去找老师核实也不失为一种好方法。这样就锻炼了思维能力和解题技巧,会达到事半功倍的效果。不经大脑,拿题就问的做法时间长了就会产生惰性。因此,当遇到疑难问题时,不要急于跑去问老师,相反,应该自己先动脑想一想,只有当反复思考...

2018-11-14 10:59:25 166

原创 git 回滚本地仓库

git reset --hard HEAD~3:将最近3次的提交回滚

2018-10-12 10:59:57 4353

原创 LeetCode一道好玩的题

877. Stone GameAlex and Lee play a game with piles of stones. There are an even number of piles arranged in a row, and each pile has a positive integer number of stones piles[i].The objective of ...

2018-08-03 20:11:25 269 2

原创 算法提速cin加速读取文件

static auto x = []() { // turn off sync std::ios::sync_with_stdio(false); // untie in/out streams cin.tie(NULL); return 0;}();有效使得算法读入大文件的速度cin和scanf相当。...

2018-07-12 13:36:26 256

原创 Ubuntu设置开机启动找不到rc.local的问题

1、使用runlevel或者who -r查看服务器的运行级别,2、根据运行级别查看 ls -lh /etc/rc.d/rc【X】.d/【XXX】 -&gt; ../rc.local,所指向的rc.local文件是哪个 默认在/etc/rc.d/rc.local下面,/etc/rc.local只是它的一个symlink。 2、注意在rc.local中的脚本尽量使用绝对路径,脚本要加执行权值,...

2018-04-08 23:30:14 2947

原创 心得小记

面对未知的恐惧是阻挡前进的最大问题,但这个好克服,只要装作无知无畏的样子,尝试去做就好了。 正真的难的还是衡量自己,还有在做的过程中进行决策,运气。 制定计划,踏实去做。...

2018-03-11 11:41:08 1065

原创 faceswap使用过程

最近看了新闻《人工智能可以换脸 网友做出定制成人电影》看到使用深度学习技术更换视频中脸,想想不好好学学以后a片都没得看,正好过年有空就看了一下。 github搜索faceswap 即是开源的代码。正好有例子可以试验一下,按照INSTALL.md 和USAGE.md 步骤就好。 - 坑点1 下载源码,看了是py写的,需要的py的对应其他插件版本。 3.6对应的tensorflow1.5,但是...

2018-02-19 21:22:04 14941 6

原创 virtualenv常用操作

基本命令    查看当前的虚拟环境目录 [root@localhost ~]# workon xxxx   切换到虚拟环境 [root@localhost ~]# workon py3 (py3) [root@localhost ~]#   退出虚拟环境 (py3) [root@localhost ~]# deactivate [root@localhost ~]#   删除虚拟

2018-02-12 16:10:45 336

原创 go 快速排序

func Quick2Sort(values []int) { if len(values) 1 { return } mid, i := values[0], 1 head, tail := 0, len(values)-1 for head < tail { fmt.Println(values) if

2018-01-29 10:24:00 161

原创 Tcp/Udp端口对照表

Tcp/Udp端口對照 reserved 0/tcp Reserved [JBP] reserved 0/udp Reserved [JBP] tcpmux 1/tcp TCP Port Service Multiplexer [MKL] tcpmux 1/udp TCP Port Service Multiplexer [MKL] compressnet

2018-01-22 13:52:56 6386

转载 C++ new详解

“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程 当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:class A

2018-01-09 09:45:26 1359

原创 2018关于进阶的思考

转载一部分文章,自己分析一部分。“菜鸟”和“大神”思考的区别刚刚走出就业的程序员,技术是刚刚起步的基点。那下面我们就聊一聊有关技术的东西。首先请您先想想这几个问题。现在社会上有很多程序员,CSDN就是我们程序员的家,那您是否可想过程序员为什么会有不同的水平?你又是哪一类的程序员?“菜鸟”程序员和“大神”程序员差在哪里?真是差在技术上了吗?那不是差在技术上那差在了哪里?上面很多一连串的问题,没有把你搞

2018-01-03 17:51:15 188

转载 使用 gdb 对程序进行汇编级调试

开始/重新开始 ( gdb) r ( run )下断点 (gdb) b *0x0804ce2b b 表示 break单步步过 (gdb) ni (next instruction) 单步步入 (gdb) si ( step instruction ) 继续执行 ( gdb )c执行到返回 (gdb) finishdisas

2017-12-28 20:39:53 622

原创 __builtin_popcount 分析

glibc— Built-in Function: int __builtin_popcount (unsigned int x) Returns the number of 1-bits in x. 返回‘1’的个数。int f(int s,int n) //s源数字,n是数字长度{ int cnt = 0; for(int i = 0;i < n;i++)

2017-12-28 20:19:38 579

原创 watch命令及使用例子

watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。你可以拿他来监测你想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化,看你的想象力了!1.命令格式:watch[参数][命令]2.命令功

2017-11-20 11:13:31 209

原创 阻塞,非阻塞,同步,异步

对于一个network IO (这里我们以read举例),它会涉及到两个系统对象,一个是调用这个IO的process (or thread),另一个就是系统内核(kernel)。当一个read操作发生时,它会经历两个阶段: 1 等待数据准备 (Waiting for the data to be ready) 2 将数据从内核拷贝到进程中 (Copying the data from the

2017-11-16 14:40:18 149

转载 【转】洪强宁:从程序员到架构师,从架构师到 CTO

在文章开头,先介绍一位技术专家:洪强宁,爱因互动创始人 &CTO洪强宁,11 年互联网从业经验,商用对话机器人创业中。前豆瓣首席架构师,前宜信大数据创新中心首席架构师,资深 Python 开发者,为中国 Python 用户组(CPUG)的创立者之一。豆瓣网首名全职员工,负责系统架构,经历了豆瓣从日 PV 十万到数亿的过程,积累了深厚的大规模网站架构经验。曾主导豆瓣内部 PaaS 系统 DAE 和宜信

2017-11-09 13:37:39 1982

转载 C语言中可变参数的用法va_list

int printf( const char* format, ...);最常见的打印,第一个参数固定为const char* format,后面是是三个点。下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的C函数要在程序中用到以下这些宏:  void va_start( va_list arg_ptr, prev_param );   type va_arg( va_list arg_

2017-11-08 17:38:52 226

原创 consul-HTTP API

服务发现系统consul-HTTP APIconsul的主要接口是RESTful HTTP API,该API可以用来增删查改nodes、services、checks、configguration。所有的endpoints主要分为以下类别:kv - Key/Value存储agent - Agent控制catalog - 管理nodes和serviceshealth - 管理健康监测sessi

2017-11-07 15:17:19 604

转载 std::list<>::sort()排序分析

STL的算法中,提供了sort()算法,算法接收两个RandomAccessIterator。所有关系型容器底层使用红黑树的,有自动排序功能。序列容器中的stack,queue使用priority-queue。而优先队列使用堆实现,它们都有特定的出入口,不允许排序。剩下的vector,list,deque中,list无法使用,因为list的迭代器属于BidirectionIterators。list

2017-10-18 14:49:22 4166

原创 socket error即Windows套接字错误代码

返回代码/值 描述 WSA_INVALID_HANDLE 6 指定的事件对象句柄无效。 应用程序尝试使用事件对象,但指定的句柄无效。请注意,此错误由操作系统返回,因此Windows的将来的版本中的错误号可能会更改。 WSA_NOT_ENOUGH_MEMORY 8 内存不足。 应用程序使用直接映射到Windows功能的Windows Sockets功能。Windows功能表明缺少所需

2017-10-14 17:11:20 2958

Sublime Text3护眼色背景色主题(IDLE改背景色,lua好用)

Sublime Text3里面设置背景色很烦。点击Preferences-Browse Package打开主题文件夹,将下载的文件直接放到主题文件夹。点击Preferences-Color Scheme选择my Color Scheme,不用重启!

2018-05-03

RawCap win本地回环地址抓包

RawCap win本地回环地址抓包 配合wirshark使用 后缀改.pcap

2017-10-06

c快学完了,有点茫然,请大家指教

发表于 2014-10-22 最后回复 2014-10-29

不想学mfc,拖控件设置属性最无聊了

发表于 2014-07-13 最后回复 2014-08-07

有关二级指针引发的对类型赋值的考虑

发表于 2014-06-26 最后回复 2014-07-13

double 类型的精度问题

发表于 2014-02-12 最后回复 2014-02-18

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除