自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

crazymad的博客

老衲法号智障

  • 博客(57)
  • 收藏
  • 关注

原创 前端ui组件——新拟物风格

ui组件库仓库地址:ui-framework 基于react写的前端ui组件库,持续更新中。

2020-03-25 23:19:15 1350

css扇形

代码<style>.sector { margin-top: 200px; position: relative; width: 100px; height: 100px; border-radius: 50px; background: red; clip-path: polygon(50% 0%, 100% 0%, 50% 50%);}</...

2020-01-08 21:03:51 285

原创 Cesium 动态Polyline绘制

Cesium 用Entity绘制polyline,如果使用CallbackProperty方法进行动态绘制,depthFailMaterial属性将失效。从官方github上的issue找了替代的方法。动态Primitive线的绘制// 绘制方法this._candidateLinePrimitive = this.scene.primitives.add( new Cesium.Pr...

2019-12-19 16:11:55 5713 6

原创 泣不成声的我终于学会了动态entity的渲染

今天晚上我闲着没事翻了翻csdn(主要是因为心血来潮写了两篇博客,顺便翻了翻同行的博客),发现了两篇博客解决了困扰我半年的问题——动态entity的绘制。之前公司里开发的系统中一直有用户自己绘制点线面的功能需求(比如测量功能),之前我们要么直接用的其他人写的开源插件,要么就通过硬改entity的属性来实现动态(直接赋值),硬改的效果非常不好,实际操作体验非常差。而今天翻到的其中一篇博客很好地解...

2019-12-03 00:34:15 397

原创 Cesium Primitive 纹理动态旋转

Cesium Entity的polygon有纹理旋转的属性,但是动态改变的话,会闪烁。纹理的旋转原理没什么好讲的,就是算一下三角函数,根据动态传入的uniform旋转角度。如果是用纯webgl写的话是很简单的事情,主要是写入到Cesium中有点麻烦。primitive的定义 let primitive = new Cesium.Primitive({ geometryI...

2019-12-02 18:36:59 4144 4

原创 React tooltip的封装

前端页面中的tooltip一直是被广泛应用的功能,tooltip本身的dom结构万变不离其宗,最大的问题可能就是那个气泡框下面的三角形的渲染,但是对于老手来说,解决这种小问题和吃饭喝水一样简单。// ant中tooltip的使用方法import { Tooltip, Button } from 'antd';ReactDOM.render( <div> <To...

2019-12-02 16:08:17 2211

原创 该死的firefox的滚动条问题

网上的博客大多都很不靠谱,最后去MDN上搜了下scrollbar,才找到正确修改firefox滚动条样式的案例。firefox支持两个scrollbar的样式scrollbar-colorscrollbar-color: yellow blue;前一个属性是滚动条轨道颜色,后一个属性是滚动条滑块的颜色scrollbar-widthscrollbar-width: none...

2019-08-29 18:26:51 3734 1

原创 Cesium使用备忘录

Camer.flyToBoundingSphere(boundingSphere, options)方法如果要飞行至组合体上方,需要使用Cesium.BoundingSphere.fromBoundingSpheres方法将各个实体的boundingSpheres拼接成一个boundingSphere...

2019-08-14 10:22:52 265

原创 Cesium开启日照阴影

官方文档没说清,也许是我不仔细,反正我最后在一个github上的issue里找了正确的开启方式。let viewer = new Cesium.Viewer('cesium-container');viewer.scene.globe.enableLighting = true;viewer.shadows = true很不想为了这么简单的事情写一篇博客,但是这已经是我第二次遇到这个问...

2019-07-31 15:59:12 9406 4

原创 geojson切片

1. geojson文件转mbtiles文件使用mapbox的tippecanoe工具,将geojson文件转换为mbtiles2. 从mbtiles中提取pbf瓦片文件mbtiles文件其实就是sqlite的存储文件,所以可以直接写node脚本读取并写入本地磁盘,需要注意的是,mbtiles中储存的瓦片pbf很有可能是预压缩的,所以读取出来后还需要用zlib解压缩。3. pbf瓦片文件转...

2019-06-06 18:17:17 2468 5

原创 webpack脚手架工具 crazymad-cli

我之前用webpack的时候,都是直接用各大框架的cli脚手架生成的。然而最近一些原因,导致我经常要脱离框架写代码,但是我又非常希望使用es6和sass,所以思来想去还是要用到webpack。前两天趁着比较空的时间,再度学习了一下webpack的配置,写了一个内置模板的webpack脚手架cli: @crazymad/crazymad-cli。代码挂在了我的github上: crazymad-t...

2019-05-26 02:21:19 195

原创 koa使用自定义日志中间件

文章目录koa使用自定义日志中间件项目结构程序入口 /src/app.js通用配置模块 /src/config/baseConfig.js日志中间件模块 /src/lib/requestLog.js样例输出 /logs/access.logkoa使用自定义日志中间件注明:本样例程序运行在koa^2.5.3版本上项目结构|- package.json|- node_modules|- l...

2018-10-08 23:39:13 1306

原创 使用nginx实现伪静态页面

原本我的博客显示页面是动态生成的,需要使用GET的方式在url上注明博客的id号,具体url格式:http://crazymad.top/show?blogid=54后来我了解到了一个叫“伪静态”的东西,说白了就是将动态生成页面伪装成静态页面。比如原本需要通过crazymad.top/show?blogid=54这样的方式访问的地址,改为通过 http://crazymad.top/show/54...

2018-05-28 20:07:28 5979

原创 个人博客网站2.0

时隔多年,我终于把以前挖的坑给填了。这是新网址crazymad.top这是当年的个人博客系统 crazymad.cn,文章里面说过我以后会重新写一遍,经过差不多快半年的开发,我用nodejs重新写了一版的博客网站差不多可以说是上线了(虽然已经在公网上挂了很久,但是一直没有怎么宣传)。下面这张图是这一版的首页内容。因为使用的是前后端分离技术,所有的动态内容都是由前端生成的,所以对于搜索引擎来说,我的...

2018-04-06 16:30:17 270 1

原创 MySQL触发器trigger的使用

官方开发文档5.7版本直接举例好了 先创建表create table user ( id int(11) auto_increment, sex int(1) primary key(id));create table sexcount ( sex char(10), count int(11))一张表储存用户信息,一张表统计性别,u...

2018-04-04 20:07:02 502

原创 Nginx源码阅读-ngx_cycle_t

之前阅读nginx源码的时候有几个ngx_cycle_t的property让我很迷惑,现在经过寒假的休养生息,再次阅读的时候有了更多的耐心。 分别是:ngx_cycle_t { ... ngx_str_t prefix; nginx的工作目录地址 ngx_str_t conf_prefix; nginx配置文件的父级目录地址 ngx_str

2018-03-10 17:20:46 238

原创 2018.1.19 随手画

2018-01-19 22:16:22 217

原创 多路复用I/O Epoll的简单使用

不负责任地放上中文版Epoll维基,科学上网。原理什么的不多讲,我也不是很熟,这里就简单写一些实际应用要怎么写,当然也是很简单的demo。API介绍int epoll_create(int size);// 这个函数用来创建epoll// 参数size是指这个epoll最多能同时监听多少个文件描述符的事件// 函数返回值是epoll的文件描述符,linux下面文件描述符简直无处不在int ep

2017-06-15 15:59:07 402

原创 muduo库中对线程池的实现(2)

这两天花时间尝试实现了一下线程池,本来是想完全自己写的,但是写着写着就去参考muduo库的线程池了,实现思路和muduo库的线程池一模一样。我尝试着在不考虑线程安全的情况下对muduo库线程池的实现做一下简述。1. 两个条件变量muduo库中使用了两个条件变量:notEmpty, notFullnotEmpty用于通知线程池中的线程不要再阻塞了,试试看从任务列表中获取一个任务。no

2017-05-21 22:59:11 492

原创 muduo库的消息循环机制

连续看了两天的muduo库的net部分,看得我头昏脑胀。。。不过总算把net部分的消息循环机制大致看懂了,不像一开始那么懵逼了。。。思路:简单说来就是将poll/epoll封装成监听类,然后事件分发类从监听类哪里拿到要处理的事件,然后执行事件对应的回调函数。类:Channel:更新Poller对象的监听列表设置回调函数执行回调函数(即处理消息用的函数)

2017-04-15 21:13:16 398

原创 muduo库中对线程池的实现(1)

在学muduo库之前,我只知道一点线程池的概念,但是对于怎么实现线程池完全不了解,最近因为被分配到了一个实验室里项目小组,于是开始学习muduo库。在看了几遍muduo库中的ThreadPool线程池类的实现之后,感觉对线程池有了一些了解,就简单对muduo库是如何实现线程池做一些简单的说明,顺便加深一下记忆。前置知识:1. linux下线程的创建使用2. 线程锁的初步了解

2017-04-13 21:18:26 1634

原创 muduo库 AtomicIntergerT原子操作模板类

muduo库的AtomicInterger模板类将几个gcc中的原子操作方法封装了起来,用以维护一个可能要被多个线程访问读写的变量主要用到两个个原子操作方法:1. __sync_val_compare_and_swap(type* ptr, type value, type value);如果ptr的值等于第二个参数,则将ptr赋值为第三个参数2. __sync_fetch

2017-04-12 22:42:07 406

原创 vsftpd+editplus windows上同步linux文件

linux端(ubuntu):1. 安装vsftpdvsftpd是一个ftp服务器,ubuntu和centos都可以通过源进行安装ubuntu下执行 sudo apt-get install vsftpd 进行安装2. 配置vsftpd1). 配置vsftpd.conf文件,ubuntu下vsftod.conf文件在/etc目录下,CentOS则在 /etc/vsftpd/ 目

2017-04-12 19:51:16 707

原创 HUSTOJ 流程图

judged 模块流程图judged 模块简述:judged是HUSTOJ评测机的入口,该模块负责给用户提交上来的代码分配 judge_client 进程判题。judge_client 模块流程图judge_client 模块简述:该模块的作用是测试用户提交上来的代码,判断是否符合测试数据,评测完了后更新数据据库,前端做出相应响应。

2017-03-01 22:19:30 1216

转载 应用setrlimit控制进程使用系统CPU

使用getrlimit控制进程使用系统CPU#include #include #include #include #include void sigxcpu_handler(int signum){ printf ("SIGXCPU Received!\n"); //可以在这里就退出进程 exit(1);}void sigkill_handler(int signu

2017-02-26 15:13:37 634

原创 HUSTOJ实现的相关想法

这两天通过读 HUSTOJ 的源码,是我对OJ系统有了初步的了解,对整个系统的构架有了浅薄的认识。拿HUSTOJ来讲,HUSTOJ的结构是典型的LAMP服务器,就是linux+APACHE+MYSQL+PHP,以及用C++/C写的评测机核心。HUSTOJ有两种数据交互的模式,两种的不同点在于,是评测机核心通过http向php传输数据的方式更新评测结果,还是直接连接mysql,将最新的评测结果写

2017-02-23 22:14:45 1336

原创 C/C++ 可变参数函数

博客内容参考自 cplusplus头文件解释头文件名字:stdarg英文原文解释:Variable arguments handlingThis header defines macros to access the individual arguments of a list of unnamed arguments whose number and types ar

2017-02-23 21:52:04 521

原创 ubuntu16.04 JDK+IntelliJ IDEA 环境搭建

先到ORACLE官网下载JDK  http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html然后到ntelliJ IDEA官网下载 http://www.jetbrains.com/idea/我这里下载都是linux 64位的版本,接着解压两个安装包,这两个都是解压即用的软件,如果是tar....

2017-02-19 19:43:52 3685

原创 vim使用小技巧

我经常忘记一些vim的命令,这些命令平时不太用,但是万一要用到的时候总是让我很蛋疼,因为我写代码写到一半实在不想去百度vim的命令,所以我准备自己写一个vim使用技巧备份的博客。1. 多行注释(多行操作)crtl+v 选中要操作的行,然后进入编辑模式(大写i行首),然后编辑注释字符(比如C语言的“//”),然后按esc,就会发现选中的所有行都会出现注释字符,同理可以用这个方法实现多

2017-02-16 21:55:03 325

原创 liunx 多进程不阻塞I/O

思路  多进程的特性是复制父进程的所有数据,这和多线程的公用内存不一样,多进程的好处在于不容易出现一些麻烦的内存问题,多线程的互斥是一件很麻烦的事情,当然也因为这样,多进程也拥有自己的局限性。  利用 多进程+阻塞I/O 的方式实现不阻塞I/O,简单来说就是每accept到一个新的连接,就创建一个子进程,通过那个子进程来单方面通信,子进程里面还是用的最简单的阻塞I/O,这样的话就能实现

2017-02-16 21:43:45 352

原创 linux编程中while里面使用usleep/sleep异常的情况的解决

背景描述:马上就要写课程设计了,这次我打算在linux上写一个类似于vi的编辑器,昨天晚上我打算先在linux上练一下手,用C++写一个控制台贪吃蛇。贪吃蛇的逻辑很简单,我主要是为了在linux上练一下C++的封装,因为之前从来没有在linux上写过系统工程(以前一般只是写过一些简单的demo程序)。但是没想到就是这个简单的贪吃蛇却给我造成了天大的麻烦。我用while循环+sleep来模拟一帧

2016-12-25 19:18:50 3558

原创 利用select监听stdin输入

我这两天打算研究一下vi的源码(就是linux上面的那个vi),然后在这个学期的课程设计中写一个简单的文本编辑器。我发现vi源码中是利用select来监听是否有输入内容的。文件描述符我们都知道linux里面是万物皆文件,在所有的文件描述符中有两个比较特殊的存在:0、1其实stdin == 0,stdout == 1所以我们可以将0设置为select要监听的文件描述符(套接字)

2016-12-20 21:30:30 5170 2

原创 VC++线程的创建和关闭

线程的创建声明: static HANDLE thread = NULL;创建: thread = CreateThrad(NULL, 0, 函数指针, NULL(指针参数), 0, NULL);线程的关闭直接用CloseHandle是不能关闭线程的,而是用来关闭句柄的,这里可能不像new和delete那样用。我今天下午突然发现了我自己写的一个demo的一个BUG,那就

2016-12-10 19:02:10 11773

原创 个人博客系统 crazymad.cn

个人前段时间无聊写了一个个人博客系统,以后琐碎的博客我大概会换到我自己的博客系统上去写,正经、复杂的博客我还是会在CSDN上写。这个是我的个人博客地址:crazy_mad's blog有兴趣的话,可以移步到上面来看看,当然这个网站写着玩的性质比较多,前前后后也就花了一个月不到的时间,所以很不严谨,等以后自己的编程能力成熟一点后,我准备把这个博客系统重新写一遍

2016-11-29 20:15:41 517

原创 软件实践工程OJ-1151 款带奶牛(treat) 区间dp

题目描述:FJ有n(1≤n≤2000)个美味的食物,他想卖掉它们来赚钱给奶牛。这些食物放在一些箱子里,它们有些有趣的特性:(1)这些食物被编号为1~n,每一天FJ可以从这排箱子的头部或者尾部取出食物去卖;(2)这些食物放得越久,年龄越大,价值越大,食物i有一个初始的价值V(i);(3)放了a天后,年龄为a,食物最终的价值为V(i)×a。给定每一个食物的初始价值v(i),请求出F

2016-11-10 20:07:10 1700 1

原创 php连接不上mysql(CentOS)

今天把自己的网站运行环境搬到阿里云主机上了,结果php总是链接mysql异常。最后我想起来我在写验证码系统的时候需要安装php-gd扩展包,联想到现在遇到的情况,果断试了试能不能安装一下php-mysql扩展包。。。结果真的成功了!CentOS用yum install php-mysql安装mysql扩展包。其他系统没有研究过,毕竟不同系统间软件包的名字不一定相同

2016-11-08 21:29:54 3028

原创 HDU-1532 Drainage Ditches (最大流E-K算法)

题目大意:有一个农田,为了排水,约翰挖了m条排水沟联通各个节点,问最大水流量是多少。算法分析:我之前做一道要用到最大流,于是我去学习最大流算法的解法,看了n篇博客,最后还是看得一知半解,结果最后还是硬生生将模板背了下来,但是不知道为什么要这样做,以后有空再研究研究。最大流问题的关键是寻找增广路,E-K算法是用队列的方式是查询增广路,然后去增广路上的最小流量,然后每条

2016-11-07 14:32:11 412

原创 HDU-1698 Just a Hook(线段树)

题目大意:dota2里面有个英雄叫屠夫,屠夫有一个钩子武器,武器上面有n个勾钉,一开始这些勾钉全部是用铜做的。后来规定屠夫可以对钩子做m次修改,使得钩子上一部分连续的勾钉改为用银子做的,或者是金子做的。一个铜钉的价值是1一个银钉的价值是2一个金钉的价值是3请问在做m次变换后钩子的总价值是多少。算法分析:这道题无疑使用线段树做,我之前做了几道线段树的题,对线段树已

2016-11-02 18:33:18 276

原创 HDU-1754 I hate it (裸线段树)

代码:#include #include #include #include using namespace std;struct node{ int maxn; int begin; int end;} tree[880000];int n, m;int pa[220000];int build(int root, int begin,

2016-11-01 20:23:16 361

原创 HDU-1166 敌兵布阵 (裸线段树算法)

题目大意:这道题是中文题,也没什么好解释的,就是查询区间内的和,和更新区间内的值。算法分析:这道题用我之前接触过的树状数组算法也能做(大概,我对树状数组不是很了解)。我去简单了解了一下线段树,大概就是说,将区间不断一分为二。比如总共有n个数,第一个节点保存1~n的总值,左孩子保存1 ~ n/2+1区间内的总值,右孩子保存 n/2+1 ~ n 区间内的总值,如此不

2016-11-01 18:36:44 847

空空如也

空空如也

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

TA关注的人

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