自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 如何成为别人家的网站——卡片式的UI界面设计

在现实生活在,视觉信息总是很吸引人的眼球,好的页面设计总是能够脱颖而出,而卡片设计的应用就是一种趋势。有数据显示移动端使用率远远高于桌面端,网页设计都能很好的适应小屏幕。这个结论就是:简单的界面风格,比如:扁平化设计,极简设计,尤其是卡片设计比往年都要流行。卡片式网页设计判断一个卡片设计的好坏,重点看下面两个:好的卡片设计不会使用太多的加载时间,同时它也能在不同的屏幕上切换自如。小的模块对于用户来...

2018-07-04 13:35:20 4245

原创 Java游戏引擎竟然可以如此简单

今天,让我们进入一个可以伸手触摸的世界吧。在这篇文章里,我们将从零开始快速完成一次第一人称探索。本文没有涉及复杂的数学计算,只用到了光线投射技术。你可能已经见识过这种技术了,比如《上古卷轴5 : 天际》、《毁灭公爵3D》。用了光线投射就像开挂一样,作为一名懒得出油的程序员,我表示非常喜欢。你可以舒畅地浸入到3D环境中而不受“真3D”复杂性的束缚。举例来说,光线投射算法消耗线性时间,所以不用优化也可...

2018-06-15 18:01:46 11483 4

原创 数据结构之算法第一弹——链表的恩怨情仇(增删查改)

各位小伙伴们大家好,你们的柳猫这次带来了最最基础的算法干货,关于链表的基础算法,相信大家都有一种了然于胸却久久不能写对的困扰,还等什么呢,跟柳猫一起来看看吧~链表定义:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */1.链表

2020-07-19 22:27:41 225

原创 发布怪兽DevOps是怎么作妖的——浅析DevOps过程

什么叫DevOpsDevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。 DevOps的引入能对产品交付、测试、功能开发和维护(包括──曾经罕见但如今已屡见不鲜的──“热补丁”)起到意义深远的影响。在缺乏DevOps能力的组织中,开发与运营之间存在着信息...

2018-08-25 16:17:08 551

原创 五款常用C++编译器——IDE编译器推荐

我们将要讨论的是两大古老而又流行的语言: C 和 C++,它们有着许多卓越的特性,更高效的功能和支持工具。现在这两种语言依然那么活跃,因为它们的 rubout 函数集提供了巨大的安全保障,可靠性非常强。今天我们围绕的主角是一些超级棒的 C 和 C++ 的集成开发环境(IDE)和编译器。IDE 主要是在程序员开发时提供各种软件应用组件,最受程序员受欢迎的 IDE 都有一个共同点,那就是非常有吸引...

2018-08-11 20:15:55 201967 4

原创 从外包行业谈文化中的服务歧视

前段时间自己接了一个外包,jQuery+css+html+php+nginx+mysql+redis+icon&logo design加起来才一千多块钱,虽说不会让我接触什么核心的东西,都是些敲敲打打修修补补,也算是个体力活,钱少就不说了,还要看甲方的各种脸色,内心有无数的草泥马在一个隔壁叫玛丽的草原上呼啸而过:我是来接单子做事情,不是给来舔你脸的!!外包行业似乎一直都被冠以“廉价”,...

2018-08-11 18:36:58 861 1

原创 Mysql自增锁问题解决方法

最近在学习群里答疑的时候,常会有同学问我:在做基准测试时候,批量插入数据时,有很多自增锁等待,我告诉他解决办法:1.innodb_autoinc_lock_mode=22.innodb_autoextend_increment参数再增大再停止测试不再有自增锁等候了,成绩处理。上面给大家说下为何??处理此问题的关键点是innodb_autoinc_lock_mode =2。我们来看看innodb_a...

2018-07-07 10:39:16 2176 2

原创 一张图让你读懂鹅厂的物联网框架

本文从物联网的中心要素、物联网的关键场景、微信硬件平台的通讯协议剖析三个维度去剖析基于微信硬件平台的物联网架构。一、基于微信硬件平台的物联网架构图上图涵盖以下信息:基于微信硬件平台的物联网的架构组成,有微信大众平台/硬件平台、第三方厂商云后端、手机微信/大众号、微信硬件设备终端(Wifi和蓝牙BLE)。绿色代表腾讯向开发者和大众提供的根底平台和效劳,并经过白色(airsync/airkiss)定义...

2018-07-06 18:07:53 5734

转载 物联网架构及五大通信协议

消息触达能力是物联网(internet ofthings, IOT)的重要支撑,而物联网很多技术都源于移动互联网。柳猫将阐述移动互联网消息推送技术在物联网中的应用和演进。一、物联网架构和关键技术从开发的角度,无线接入是物联网设备端的核心技术,身份设备管理和消息推送技术是物联网云端的核心技术。而从场景体验的角度,除了前者,还要包括手机的前端开发技术。IP互联架构已是物联网的事实标准(有关物联网TCP...

2018-07-05 17:13:11 77044 2

原创 进化吧!我的C++!!

繁忙的日子似乎随着炎炎夏日渐渐远去,有人忙着放假,有人忙着旅游,有人忙着补觉……那么,你的选择呢?别急着告诉柳猫,请看完后面的内容再告诉我~~你有两个选择:1)把所有夏季空闲时间都用来休整,适当放松一下没什么不可以。2)或者你可以投入一部分空闲时间来提升你的技能,尤其是 C++ ,用 C++ 水平的提高(boost C++ )来开始新的一年。如果你觉得选择1)更适合你,那么关掉手机和笔记本吧,真正...

2018-07-01 21:38:34 490 4

原创 C语言可以这样入门~~

很多想要学习编程或者C语言的小伙伴,苦于一时急促,无法下手,现在柳猫就推荐几本入门级的C语言书籍,并对它们的特点做些简短的总结,各位小伙伴根据需要选读。1. How to Think Like a Computer Scientist: C version这是我读过最易懂的C语言教材。虽然它只讲解最基本的语法,但是写得特别好懂,深入浅出,读起来不觉得累,而且它还允许免费下载。我认为,这是C语言的首...

2018-06-28 14:04:32 265 1

原创 如何优雅的编程——C语言界面的一点小建议

Kernighan 和 Plauger 编写的《The Elements of Programming Style》,是一本很重要而且公认有很大影响力的书。但有时候我觉得对于书中的简洁规则,可以看做是一种好的烹饪方法,而不是想简洁的表达一种哲学思维。倘若这本书声称应该有意义地选择变量名称,那么难道他们文章中对变量的命名更好?难道 MaximumValueUntilOverflow 比 maxval...

2018-06-23 17:49:08 8369

原创 C++ 中命名空间的 5 个常见用法

相信小伙伴们对C++已经非常熟悉,但是对命名空间经常使用到的地方还不是很明白,这篇文章就针对命名空间这一块做了一个叙述。命名空间在1995年被引入到 c++ 标准中,通常是这样定义的:命名空间定义了新的作用域。它们提供了一种避免名称冲突的方法。c++ 中的命名空间通常用于避免命名冲突。尽管命名空间在最近的 c++ 代码中广泛使用,但大多数较旧代码都不使用此工具。基于对众多C++项目源码的探索与研究...

2018-06-23 15:56:51 480

原创 游戏引擎开发中需要注意的循环结构

我们在游戏设计和开发中,尤其是引擎开发中,逻辑循环是一个重要组成部分,循环决定了游戏的基础逻辑和运行方式,在不同的开发环境和语言下,对于循环的释义甚至相差甚远,那么我想和大家分享的是在Silverlight游戏开发中,循环的设计方式和做法。以下内容来自以往的游戏开发经验,可能在其他语言中的相关文章更加详细,谨在这里讨论有关在Silverlight游戏开发中的应用。在传统的开发观念中,无论任何开发环...

2018-06-22 17:50:57 355 1

原创 如何成为一个合格的程序员

偶尔的,我会被人问道:如何成为一名优秀的程序员,更或者,如何成为一名程序员。每次人们问起,我都力图给出不同的答案。因此,我的答案是各种各样的。下面就是我认为的成为一名优秀的程序员需要做的一些事情。记住,想成为一名程序员,很多条路可走,这里列出的只是我的方法。1. 解决你自己的问题 —从外面获取答案和自己解决问题、找到答案,这两种方式是有区别的。当你自己解决一个问题时,你不仅解决了这一个问题,也意味...

2018-06-22 11:51:06 309

原创 竟然这就是面向对象的游戏设计?!

从程序角度考虑,许多 JavaScript 都基于循环和大量的 if/else 语句。在本文中,我们可了解一种更聪明的做法 — 在 JavaScript 游戏中使用面向对象来设计。本文将概述原型继承和使用 JavaScript 实现基本的面向对象的编程 (OOP)。学习如何在 JavaScript 中使用基于经典继承的库从 OOP 中获得更多的好处。本文还将介绍架构式设计模式,来展示了如何使用游戏...

2018-06-21 14:07:25 1065 1

原创 游戏中人工智能的优化

建立一个简单的游戏引擎和人工智能NPC后,我们需要对他们进行优化,如何建立,可以参考我在评论里的链接语义结点的抽象不过我们在这篇博客的讨论中是不能仅停留在能解决需求的层面上。目前的方案至少还存在一个比较严重的问题,那就是逻辑复用性太差。组合状态需要 coding 的逻辑太多了,具体的状态内部逻辑需要人肉维护,更可怕的是需要程序员来人肉维护,再多几个组合状态简直不敢想象。程序员真的没这么多时间维护这...

2018-06-20 14:02:33 420 2

原创 如何简洁实现游戏中的AI

端午节放假总结了一下好久前写过的一些游戏引擎,其中NPC等游戏AI的实现无疑是最繁琐的部分,现在,给大家分享一下:从一个简单的情景开始怪物,是游戏中的一个基本概念。游戏中的单位分类,不外乎玩家、NPC、怪物这几种。其中,AI 一定是与三类实体都会产生交集的游戏模块之一。 以我们熟悉的任意一款游戏中的人形怪物为例,假设有一种怪物的 AI 需求是这样的:大部分情况下,漫无目的巡逻。玩家进入视野,锁定玩...

2018-06-19 11:51:35 3106

原创 如何快速搭建一个简单的塔防小游戏

C语言是所有编程语言的基础,当我们对C语言有足够深入的理解后,就能轻松入门其他语言,比如现在流行的Python。现在,我将带领大家看一个基于C语言经典算法,使用Python编写的塔防小游戏。在塔防游戏中,有许多敌人向着同一目标前进。在很多塔防游戏当中,有一条或几条事先预定好的路径。在一些中,比如经典的《Desktop Tower Defense》,你可以将塔放在任何位置,它们充当障碍影响敌人选择的...

2018-06-15 09:35:23 2236

原创 一个小小的C++游戏引擎

跳一跳是我想玩的游戏类型:3D卡通外观的复古街机游戏。目标是改变每个填充块的颜色,就像Q * Bert一样。Hop Out仍在开发中,但引擎的功能已经很完善了,所以我想在这里分享一些关于引擎开发的技巧。你为什么想要写一个游戏引擎?可能有很多原因:你是个修理工,喜欢从头开始建立系统,直到系统完成。关于游戏开发你想了解更多。你在游戏行业工作了多年,现在仍然在不停的琢磨。你甚至不确定自己是否可以从头开始...

2018-06-14 23:52:08 15329

原创 永远缅怀开始从事游戏开发的日子

学校里永远觉得事情都很简单,只要愿意,就会水到渠成,但学校归学校,现实归现实。我很乐意和你分享在写代码阶段闹出的洋相。在写iOS游戏的过程中,我发现有些事情和我想的不一样。10) “快完成”和“完成”之间的距离比你想的更远不知道你有没有见过这个游戏,它是一个很古老的记忆游戏,你需要翻开一张牌,然后,还要再找到另一张和它匹配的牌。不一样的地方是,你只会在某张牌的上下左右找到与之匹配的牌。意思就是你匹...

2018-06-13 21:46:40 541

原创 项目中的缓存那些事儿

1.为何需要缓存?在高并发请求时,为何我们频繁提到缓存技术?最直接的原因是,目前磁盘IO和网络IO相对于内存IO的成百上千倍的性能劣势。做个简单计算,如果我们需要某个数据,该数据从数据库磁盘读出来需要0.1s,从交换机传过来需要0.05s,那么每个请求完成最少0.15s(当然,事实上磁盘和网络IO也没有这么慢,这里只是举例),该数据库服务器每秒只能响应67个请求;而如果该数据存在于本机内存里,读出...

2018-06-13 17:29:49 265

原创 如何用C++做游戏(3)

上一讲我把Lua基本的栈规则讲了一下,然后完善了一下我的CLuaFn类。让它可以支持任意参数数量和函数名称的传值。当然,这些功能是为了今天这篇文章而铺路的。我是一名(C++)程序员,所以在很多时候,不想过多的使用Lua的特性,因为个人感觉,Lua的语法要比(C++)的更加灵活。而我更希望,在函数调用的某些习惯上,遵循一些(C++)的规则。好了,废话少说,我们先来看一个类(头文件)。假设我们要把这个...

2018-06-12 21:41:57 3875

原创 如何用C++做游戏(2)

上一节讲了一些基本的Lua应用,或许你会说,还是很简单么。呵呵,恩,是的,本来Lua就是为了让大家使用的方便快捷而设计的。如果设计的过为复杂,就不会有人使用了。下面,我要强调一下,Lua的栈的一些概念,因为这个确实很重要,你会经常用到。熟练使用Lua,最重要的就是要时刻知道什么时候栈里面的数据是什么顺序,都是什么。如果你能熟练知道这些,实际你已经是Lua运用的高手了。说 真的,第一次我接触栈的时候...

2018-06-12 21:40:34 3890 3

原创 如何用C++做游戏(1)

现在,越来越多的C++服务器和客户端融入了脚本的支持,尤其在网游领域,脚本语言已经渗透到了方方面面,比如你可以在你的客户端增加一个脚本,这个脚本将会帮你在界面上显示新的数据,亦或帮你完成某些任务,亦或帮你查看别的玩家或者NPC的状态。。。如此等等。但是我觉得,其实脚本语言与(C++)的结合,远远比你在游戏中看到的特效要来的迅猛。它可以运用到方方面面的领域,比如你最常见的应用领域。比如,你 可以用文...

2018-06-12 21:39:50 20026 2

原创 初入职软件工程师的血泪——C语言内存优化

刚刚开始工作就被前辈训得一塌糊涂,特别是对于优化这一块没有一点潜意思,现在不得不重新学习代码优化。对于优化C代码有很多有效的指导方针,但是对于彻底地了解编译器和你工作的机器依然无法取代,通常,加快程序的速度也会加大代码量。这些增加的代码也会影响一个程序的复杂度和可读性,这是不可接受的,比如你在一些小型的设备上编程,例如:移动设备、PDA……,这些有着严格的内存限制,于是,在优化的座右铭是:写代码在...

2018-06-11 15:31:25 705 1

原创 内存优化最后一弹——优化函数运行

快起来,这真的是最后一篇啦!计算非零位的个数 / counting the number of bits set例1:测试单个的最低位,计数,然后移位。//example1int countbit1(uint n){ int bits = 0; while (n != 0) { if(n & 1) bits++; n >&g...

2018-06-11 15:30:49 506

原创 无止境的内存优化——停不下的循环

小伙伴们是不是跟我一样,以为之前的内存优化已经完成了?不,这才刚刚开始……让我们一起进入这无休止的循环吧!switch语句和查找表 / Switch statement vs. lookup tablesswitch语句通常用于以下情况:调用几个函数中的一个设置一个变量或返回值执行几个代码片断中的一个如果case表示是密集的,在使用switch语句的前两种情况中,可以使用效率更高的查找表。比如下面...

2018-06-11 15:29:44 414 1

原创 继续内存优化——一脸懵逼

如果说之前的优化部分,数据变量和全局局部变量已经让人头大,那接下来的部分肯定会让各位感受到迎面而来的清新气息。指针 / Pointers如果可能,我们应该使用结构体的引用作为参数,也就是结构体的指针,否则,整个结构体就会被压入堆栈,然后传递,这会降低速度。程序适用值传递可能需要几K字节,而一个简单的指针也可以达到同样的目的,只需要几个字节就可以了。 如果在函数内部不会改变结构体的内容,那么就应该将...

2018-06-11 15:28:29 424 1

原创 C语言内存优化——继续含泪总结

之前分析了基本数据类型的优化,现在开始涉及全局和局部变量的优化,话说这个东西我从没想过还能这样优化的喂!全局变量 / Global variables全局变量不会被分配在寄存器上,修改全局变量需要通过指针或者调用函数的方式间接进行。所以编译器不会将全局变量存储在寄存器中,那样会带来额外的、不必要的负担和存储空间。所以在比较关键的循环中,我们要不使用全局变量。如果一个函数要频繁的使用全局变量,我们可...

2018-06-11 15:27:30 4720 1

原创 2048小游戏

废话不多,直接上源码#include<time.h> #include<stdlib.h> #include<conio.h> #include<stdio.h> #include<windows.h> #define x0 26 #define y0 1 HANDLE hOutput = GetStdHandle(STD...

2018-06-08 20:07:19 353

原创 Redis中常用五种数据结构

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。而且Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)...

2018-06-04 21:04:41 15324 3

原创 NSQL数据库的5种经典

1、MongoDBMongoDB是一个基于分布式文件存储的数据库。由 C++ 语言编写。主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案。当数据量达到50GB以上的时候,MongoDB的数据库访问速度是MySQL的10倍以上。MongoDB的并发读写效率不是特别出色,根据官方提供的性能测试表明,大约每秒可以处理0.5万~1.5万次读写请求。MongoDB还自带了一...

2018-06-03 18:14:02 1591

原创 菜鸟先飞——C语言内存管理

一个由C编译的程序占用的内存分为以下几个部分1、栈区(stack)程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。2、堆区(heap)在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)编译器...

2018-06-02 17:47:41 440

原创 菜鸟的进击——C语言实现老鼠走迷宫

老鼠走迷宫,一只实验室的小老鼠被用来做迷宫智力实验。科学家在迷宫的一角放上一块奶酪,小老鼠要在最快时间内找到奶酪。老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径。解法老鼠的走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进,无法前进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到出口为止,...

2018-06-01 22:14:26 4275 1

原创 小白Linux教程——手动升级内核

作为一个底层的硬件工程师,免不了和Linux打交道,而曾经有一段时间,升级Linux内核让很多用户打心里有所畏惧。在那个时候,升级内核包含了很多步骤,也需要很多时间。现在,内核的安装可以轻易地通过像apt这样的包管理器来处理。通过添加特定的仓库,你能很轻易地安装实验版本的或者指定版本的内核(比如针对音频产品的实时内核)。考虑一下,既然升级内核如此容易,为什么你不愿意自行编译一个呢?这里列举一些可能...

2018-05-31 18:38:16 15208 1

空空如也

空空如也

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

TA关注的人

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