自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

feinifi的博客

never stand still

  • 博客(642)
  • 资源 (7)
  • 论坛 (1)
  • 收藏
  • 关注

原创 cookie属性max-age与expires同时存在时谁会生效

我以前面试前端的时候,面试官问过这个问题,这是一个比较刁钻的问题,好像很难选择。 max-age表示最大生命周期,expires表示过期时间,cookie使用其中任何一个,都可以用来限制cookie的生效时间。 如果同时使用,max-age会生效。 这两者在时间设置上,却有不同单位属性。expires使用的是当前时间的毫秒+过期的毫秒,因此单位以ms计,而max-age直接使用秒为单位。 下面给出一个直观的示例,分别演示使用expires,max-age,同时...

2021-05-06 13:37:57 8

原创 koa利用koa-views通过路由返回html页面

前面一篇博客介绍了koa借助koa-static依赖可以实现以静态资源的形式加载html,但是没有路由功能,一般而言,前后端分离之后,路由控制是由前端控制,也有一些不分离的项目,需要后端通过url路径请求直接返回一个html,这个页面是一个动态页面,如果使用ejs模板,甚至可以在渲染加载页面的时候,增加页面参数。 koa-views可以实现这个功能,同时,配合koa-router可以实现服务端路由控制来跳转页面。const Koa = require("koa")const app...

2021-04-29 15:04:44 27

原创 nginx解决跨域问题

跨域问题,是因为浏览器同源策略,页面从一个域发起另一个域的异步ajax请求时,不被认可导致。 如果我们的请求在一个域里面,那么浏览器就会认为是安全的,就不会造成跨域,而nginx服务器非常擅长做这个代理工作。虽然是两个域上的请求,但是,我们可以利用nginx,将本域的部分请求转发到另一个域上,就解决了跨域,所有的请求都在一个域里面,浏览器自然认可。 以前,通过服务端解决跨域问题的时候,都是两个域的请求,比如页面是http://localhost/ajax-cors.html,而a...

2021-04-29 14:53:57 20

原创 springboot解决跨域问题

跨域是前后端分离,前端页面发起异步ajax请求,而浏览器因为同源策略导致请求失败,请求正确到了服务端,而且服务端也正常处理,只不过浏览器不认可,所以跨域问题的门槛是浏览器,也就是web前端,但是服务端可以解决这个跨域问题。 springboot解决跨域,最简单的就是配置一个继承自WebMvcConfigurerAdapter的类。 先构建跨域请求: 准备: 1.准备一个nginx服务器,配置页面,启动,访问80端口,这是一个域, 2.准...

2021-04-29 14:12:22 31

原创 koa解决跨域问题

koa作为一个node http服务框架,它解决跨域问题,跟其他框架跨域类似,可以通过自定义中间件的方式对请求做处理,也可以通过使用封装好的@koa/cors依赖,两行代码搞定。 现在模拟ajax跨域问题。 准备: 1. nginx 服务,配合静态页面,访问80端口,请求html页面, 2. koa服务端,做接口访问,服务端口3000。 ajax-cors.html<!doctype html><html&g...

2021-04-29 11:21:04 10

原创 koa设置静态资源以加载html页面

const Koa = require('koa')const app = module.exports = new Koa()const serve = require("koa-static")const router = require("koa-router")()const cors = require("@koa/cors")const users = [{id:1,name:'buejee',age:18}, {id:2,name:'zhangsan',age:18},.

2021-04-28 14:36:54 17 1

原创 springboot实现jsonp

jsonp是ajax跨域解决方案的一种办法,就是借助标签<script></script>可以实现不同域之间数据请求的一种方式,类似iframe,不受跨域限制,它请求返回之后,会以一种回调的形式调起挂在window对象上的全局方法callback,这里的callback就是我们在url请求中指定的回调函数,参数就是我们请求服务端包装在callback之内的数据。 jsonp的实现,需要前后端配合,不是说前端可以实现,后端也可以实现,他们需要配合才能实现一个完整的js...

2021-04-28 13:52:25 15

原创 npm安装windows-build-tools一直卡在successfully installed python2.7不动

以前安装过windows-build-tools,很顺利的,没想到最近在别的机器上安装,出现了卡住不动的情况,就是如题的问题。 其实这个问题出现在执行vs_BuildTools.exe安装问题上。而这个问题的本质就是visual studio installer启动程序的安装,为什么失败,网络问题。它要下载的资源没办法下载。 问题可以通过最新的临时文件C:\Users\admin\AppData\Local\Temp\dd_bootstrapper_20210420103743....

2021-04-26 15:07:46 100

原创 Dynamic Linking Error: Win32 Error 126问题排查

如题所示,这个问题是我在electron项目中使用ffi调用动态链接库出现的,本机运行都好好的,打包构建然后放到别的机器上运行出错。 这个问题一度也让我很迷茫,如果是路径导致的这个问题,那么把路径指定正确就可以了,但是偏偏路径也是对的,就是报错。那应该是环境问题。 我为什么要使用ffi调用动态链接库?我的需求是这样的,需要编程实现tcpip方式连接诺德施瓦茨仪表设备cmw500,其实就是visa编程了,我开始通过c语言简单实现了这个功能,以为万事大吉了,然后写了一个动态链接库,让...

2021-04-26 14:30:48 9

原创 win10启动命令行之前执行命令

这个问题的引出,是我在win10上设置cmd命令行字体的问题,我之前在win7上设置过cmd终端命令行字体,通过更改注册表,然后设置想要的字体,就可以达到效果,可是在win10上,这么做不生效,每次新开启cmd命令行窗口字体就恢复默认效果。 命令行属性界面可以修改字体,但是一般只有几种字体: 可以通过修改命令行代码页,让这个列表发生改变,比如chcp 437: 在这里,我们可以修改我们想要的字体,比如Courier New,然后确定。 ...

2021-04-23 15:03:36 19

原创 minix3下安装libevent

libevent是一个c语言编写的事件框架,支持异步IO、定时器、信号事件。它支持跨平台,大部分都是在linux下安装并使用,今天介绍在unix系统minix3上的安装。 minix3上编译环境是clang,clang++,并不是我们常见的gcc,g++,所以在进行源码编译的时候,需要指定系统编译器。再一个就是minix3上没有/usr/local这个目录,如果直接configure安装不指定libevent安装前缀prefix,那么它就会安装到/usr/local目录下,这个目录并不是系...

2021-04-15 10:23:52 17

原创 springboot项目+yml配置文件中的list示例

springboot配置文件可以是properties,也可以是yml类型,它们都支持字符型,也支持列表list类型,假定在yml配置文件中支持列表类型格式如下: application.ymldemo: type: code: - 200 - 201 - 300 - 400 - 501 编写对应的java类package com.xxx.mongodemo.config;import java...

2021-04-14 14:29:19 62

原创 java通过jni调用native method

jdk中规定了native method,每一个native method背后对应有一个动态链接库来支持它,在windows系统上,就是dll后缀的文件。 native method是需要通过c/c++来实现的。 本示例所需的运行环境: jdk8 vs2017 java中调用动态链接库可以通过System.loadLibrary("Hello")来加载指定动态链接库。假定,我们可以编写这样一个java文件,定义一个hello的本地方法,然后在main函...

2021-04-12 17:06:07 24

原创 c语言结构体内存对齐问题

c语言中结构体使用是非常广泛的,但是结构体有一个问题,就是如果开头的字段属性是字符类型(char),紧跟着的是其他类型,比如整型、长整型、双精度、浮点型,这时候结构体的大小会发生改变,下面给出一个示例:#include <stdio.h>struct person{ char sex; int age; char name[8];}__attribute__((__packed__));int main(){ printf("sizeof(person) =...

2021-04-11 22:14:47 21

原创 clang: error: unable to execute command: Executable “ld“ doesn‘t exist!

如题所示,我在minix3中直接安装了clang,然后使用如下命令编译c程序报错。# clang hello.c -o helloclang: error: unable to execute command: Executable "ld" doesn't exist!clang: error: linker command failed with exit code 1 (use -v to see invocation)# 提示说缺少ld,其实需要安装binutils这...

2021-04-01 22:34:39 61

原创 minix3通过pkgin_cd安装二进制包

在安装完minix3虚拟机之后,如果要进行其他工具的安装,默认需要借助pkgin,这个需要先更新(pkgin up),然后安装各种可以被下载的包。 本人试了几次之后,发现pkgin in xxx这种方式是先需要在线下载所需的安装包然后进行安装,如果网速不好,很难安装,尤其在家里的时候,晚上连一个10M的openssh都安装不了。这一度让我很困惑。 pkgin这种方式配置默认的仓库地址根据版本不同,使用的方式不一样,3.2.1好像使用的是ftp地址,而3.3.0使用的是http地址...

2021-04-01 11:38:33 33

原创 rabbitmq中交换机类型direct和topic的区别

rabbitmq主要有三大类交换机:faout,direct,topic,他们从名字上分别是扇区交换机、直连交换机和主题交换机。其实还有headers一类的交换机,这里不去深究。 faout交换机也叫无路由交换机,就是它直接与交换机exchange发生关联,不用routingKey。 direct和topic都加入了routingKey的概念,发送数据的时候,它只跟交换机和路由发生关系,不关心最终的队列queue。就是生产者这里只需要将消息绑定到exchange和routingK...

2021-03-31 11:40:26 56

原创 vmware安装minix并开启x11

最近突然想弄一下minix这个老牌的系统。 vmware安装minix3虚拟机,其实很简单的: 1、新建虚拟机,选择经典。 2、选择客户机操作系统:其他,版本:其他64位,下一步设置虚拟机名称。 3、后面一路默认,内存会设置256M,磁盘8G。(内存可以在后面编辑虚拟机进行自行设置) 4、最后可以指定下载的minix_R3.2.1-972156d.iso。这里的minix3版本需要注意一下,默认3.3.0是不支持x11的。 点击启动虚拟机...

2021-03-26 18:23:21 46

原创 Java中double类型研究

这个问题的兴趣,源自我在解析TCP/UDP数据协议的时候遇到的一个问题: 这个数字,我是通过当前日期的时间微秒来获取的。 以下是c语言来将这个时间转字节数组:long long t =1616491310637double x;unsigned char buf[8];memcpy(buf,&t,sizeof(buf));//[0x2d, 0xee, 0x63, 0x5e, 0x78, 0x01, 0x00, 0x00]//小端序表示的字节序...

2021-03-24 16:01:31 45

原创 ubuntu1804源码编译jdk8

这里纯粹自己弄着玩,因为以前没有成功过,这里记录一下,就是让遇到问题的人可以规避问题,快速编译自己的jdk。 相信很多学java的人都看过或者了解过一本书《深入理解java虚拟机》,里面就有介绍如何源码编译jdk。而且很多网上的编译都会将这本书里面的截图粘出来。 源码编译jdk,需要的环境如下:gcc,make,低版本的jdk,再就是源码本身了。 一、准备依赖库 所有的准备之前,需要先安装依赖库:sudo apt-get install libx11-d...

2021-03-18 16:03:58 21

原创 通过码云gitee来导入github项目提升克隆速度

在github上,通常很多源码级别的项目需要我们自己clone到本地,有时候,项目源码会比较大,或者网络不够好,clone速度会很慢,我们可以通过将github项目导入到码云上,也就是https://gitee.com中,码云上提供了从Github/Gitlab导入仓库的功能入口,就在顶部的 "+" icon的位置。 第二步就是加入github上项目地址: 到了这一步,码云上可能已经有人将github上的源码导入了,这里一般会有提示,你也可以直接导入到自己的仓库,或者直接...

2021-03-18 11:20:58 47

原创 macos升级体验

周末在家里把macos从10.11.6版本升到了10.14.6版本,其中的过程基本大同小异。后面想继续升级,发现遇到了问题。 网上有的说需要一步一步来升级,如果是10.11,需要先升级到10.12,再升级到10.13,再升级到10.14。我就是这么一步一步来的,花了好多时间,最后想升级到10.15,发现总是在系统更新这里就不再往下走了,之前都是会先打开app store,然后下载一个安装工具,同时会把镜像下载下来,然后点击安装工具,继续就可以开始安装新的系统。 10.12是可以直...

2021-03-17 22:03:29 55

原创 xcode开发c语言开启多target

xcode开发c语言,在选择project template时选择command line tool,后面填入product name,最后选择存储位置就可以了。但是一般而言c语言项目只有一个main函数的入口,如果我们要运行另一个demo,就需要新建一个project。 visual studio或者visual c++6.0都可以在现有的工程中加入新的项目,最后要运行哪一个项目,在项目名称上右键,然后设置为活动工程,最后编译运行,只会对这一个项目进行编译运行,能够满足我们在一个工程目录...

2021-03-14 23:18:01 24

原创 netty实现tcp通信服务端出现数据粘包问题解决办法

这里介绍两种解决办法:1、利用LengthFieldBasedFrameDecoder解码器 2、设置自定义编解码。 一般出现数据粘包问题很难复现,因为在开发中,我们都是模拟发数据,真正上线了,我们的数据发送就没有什么规律,可能很快,也可能慢,频率不同,难以捕捉问题,但是肯定会出现一些粘包问题。 所谓粘包,就是接收的数据,无法分开,一个包的数据可能是两个或者多个报文记录,我们需要严格按照报文格式将这些合在一起的包拆开。思路就是要么报文有严格的分隔符,要么定长,再就是自定义解码器...

2021-03-08 14:56:59 51

原创 c语言自定义tcp协议实现socket通信(windows版本)

前面一篇博客介绍了mac/linux下通过C语言自定义协议实现socket通信的示例,因为大部分api与windows还有很多区别,这里就特意把windows下的tcp通信实例给介绍一下。 无论是linux,还是windows,其实c语言都是默认小端序,这个需要注意,还有一个就是结构体的内存对齐问题也是存在的,所以协议结构体我们需要注意他的大小就行了,在进行拷贝的时候,不能直接使用sizeof来计算发送数据的长度。 因为是windows,所以我们可以通过网络小助手来模拟一个服务端...

2021-03-08 11:28:31 82

原创 c语言自定义tcp协议实现socket通信

一般的tcp协议示例,大家给出的demo都是类似一个helloworld的示例,简单罗列了socket建立,创建连接,发送数据,关闭连接的过程,实际上tcp通信确实也就这么多内容。但是,在实际的开发中,我们用tcp通信,肯定不会只是发送一句简单的“你好”。 实际应用中,我们需要自定义一个协议,也就是protocol,然后与服务端约定网络字节序,最后双方都能根据协议实现数据编码与解析即可。 自定义协议,没有固定的格式,没有严格的数据类型限制,只要双方都认可就行了。因为通信的双方都需...

2021-03-07 21:23:05 193

原创 elasticsearch加入中文分词器elasticsearch-analysis-ik插件

前言 elasticsearch作为一个分布式弹性存储与检索系统,默认是不支持中文分词的,但是呢,这个工作有人做,估计都是中国人做的吧。 什么是中文分词呢,简单来说,就是将我们的中文句子或者短语拆分成一个一个的可以被人们熟知的小单元。这种拆,不是随便拆,主要是有意义的拆。 如何有意义,这里就是人为指定了。首先,我们常见的歇后语,成语,三字词语,两字词语,常见地名,国家名称等等都是可以被拆成一个小单元的。 如其说是拆,倒不如说是合并,因为elasticsearch默认对...

2021-02-25 15:33:05 58

原创 docker容器改变时区

默认情况下的docker容器启动之后,系统时间是UTC时间,这导致和我们的北京时间相差8小时,会引出很多问题。 有一些容器是和项目一起构建的,我们可以在构建的时候,将系统时区修改为Asia/Shanghai。如下所示,我们在定义Dockerfile的时候,可以直接加上这段指令:RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime; \ echo 'Asia/Shanghai' >/etc/timezone...

2021-02-22 15:40:59 75

原创 quasar构建linux版本electron项目以及如何让electron程序在linux下运行

quasar构建,默认命令是:quasar build -m electron 如果要支持linux,通常是直接加参数--target linux或者简写-T linuxquasar build -m electron --target linux 正常情况下,编译构建可能会遇到网络问题。构建成功的话,会生成zip文件和一个名为linux-unpacked的文件夹。 构建成功,好像在ubuntu下解压zip文件,并不能直接运行,不是因为可执行程序没有+x权限,真...

2021-02-18 15:35:21 98 1

原创 word文档中插入图片显示不全解决办法

在windows下写word文档,正常情况下,我们应该不会遇到插入图片显示不全的问题,好像是如果在已有的文档中插入图片,比如文档中间插入,图片没办法自动扩展空间,这就导致了显示不全的问题。 这个问题也很烦人的,解决办法倒是简单:就是在图片的右下角位置,其实在图片后面右键,然后选择菜单中的段落选项,设置段后选项为单倍行距,问题解决。 如果我们选择右键的位置不对,正好点在了图片上,右键菜单里面不会有“段落”这个选项的,这个一定要注意。 解决办法动态示意图:...

2021-02-05 16:57:21 125

原创 docker-compose搭建mongo+elasticsearch+graylog运行环境

graylog是一个小型的开源日志收集、分析、展示框架。 主要graylog运行需要mongo、elasticsearch,所以他们就组成了一个小的整体。一般在虚拟机上搭建,可以分开安装部署,但是既然是一个日志服务,而且想尽量整理的简单一些,所以考虑直接使用docker容器的方式,而直接一个一个docker run,还是显得很复杂,主要是他们需要做一些配置,而且三个容器之间,graylog依赖于mongo、elasticsearch,还不能先启动graylog。索性就整理一个docker...

2021-02-03 10:52:01 122

原创 truffle+ganache-cli构建简单以太坊智能合约并编译部署

以前接触过以太坊工具链来做区块链练手项目,后来荒废了,如今再次捡起来,算是回忆和加深。 之前可能因为网络的原因,在truffle各种初始化编译合成智能合约都遇到了好多问题,如今再次尝试,发现可以很快入门。 下面来看看如何通过truffle与ganache-cli来构建以太坊合约。 以太坊工具链就不多介绍了,这里面水很深,内容很多,本文需要的主要的就是node环境,然后就是ganache服务,部署合约的时候需要这个服务。truffle是进行合约编译部署的工具,可以初始化项...

2021-01-27 10:41:57 157

原创 electron报错:Uncaught Error: A dynamic link library (DLL) initialization routine failed

如题所示,我们在进行node+electron开发桌面应用的时候,经常会遇到这样的问题: 根据提示是因为ref依赖模块没有合适的编译版本,但是我们进行npm install的时候没有报错啊,这就是我们专门在electron中开发才会遇到的一个恶心的问题,ref不仅需要node版本匹配,还需要与electron版本匹配,所以,我们需要重新构建依赖,解决思路基本都相似:安装electron-rebuild依赖(npm install electron-rebuild -D),然后运...

2021-01-26 16:07:51 185

原创 利用mocha进行以太坊智能合约编译部署测试

使用智能合约编程语言solidity编写的智能合约,除了可以直接通过以太坊的工具链truffle,ganache-cli进行测试之外,还可以结合mocha进行单元测试。 mocha单元测试本质上,还是需要对合约进行编译、部署,只不过可以通过代码的形式进行直观的操作,而不是通过truffle命令来进行编译、部署、测试。 首先,构建工程,我们可以根据构建node项目的方式构建: 添加依赖:package.json"dependencies": { "gana...

2021-01-25 22:40:46 55

原创 数字还可以这样表示?100_000 == 100000?

今天偶然的看到一个代码,表示int类型,竟然用到了这样的表示方式: 我一开始还有些懵逼,下划线还能用在数字表示中? 今天又在浏览器开发者模式下试了一下: 看来,java和javascript似乎对于下划线连接数字,都表示默许了。好在这种表示方法并不具有可推导性,就是说100_000能够表示100000,但是字符串形式的100_000并不能直接转为100000。否则,我们曾经判断数字的正则表达式可能统统要失效,各种场景下的数字校验需要重新设计。...

2021-01-18 14:14:00 115

原创 react组件之间传值

看过一些文章介绍react组件之间传值,无外乎以下几种情况:父子组件之间相互传值,兄弟节点之间传值。最常见的就是父子组件,做法也很简单:就是在父组件中直接通过props属性的方式将函数或者值传给子组件。父组件有变化,相应的值就会体现在子组件中;子组件有动作发生,则调用函数,函数是父组件传递过来的,父组件就能获取子组件的值。 还有一种情况,就是兄弟节点之间要传值,这个还比较复杂,因为他们之间没有直接的交集,但是他们有一个共同的父组件,可以借助父组件传递值,所以还是回到了父子组件传值上。...

2021-01-13 15:17:51 112

原创 react项目启动报错:Uncaught TypeError: Cannot read property ‘forEach‘ of undefined

如题,react项目启动报错,具体信息,如下所示: 这个问题是因为浏览器安装了react-devtools扩展程序导致的,很多人的解决办法就是直接禁用react-devtools,我觉着也还行吧,但是就是感觉不是很好,我们安装这个玩意不就是为了方便查看react元素与编译之后的代码的么?这种办法似乎有点壮士断腕,我直接不用你了。 我个人根据报错堆栈信息,找到node_modules/@pmmmwh/react-refresh-webpack-plugin/cl...

2021-01-10 22:50:19 1464 3

原创 react+typescript项目构建

react项目构建可以很简单,但是如果是结合typescript,其实也不是很麻烦,官网也有很明确的说明。有两种办法: 1、直接构建带有typescript的react项目,我们需要增加额外的参数,模版不能使用默认的cra-template。而是使用cra-template-typescript。npx create-react-app tsreactdemo --template typescript 最早,我们创建typescript的react项目命令好像直接就是np...

2021-01-10 22:19:18 201 1

原创 chrome浏览器安装react-devtools

react-devtools是react开发时的一个浏览器插件,对于各大主流高级浏览器都有扩展程序可以安装,官方的地址默认是https://github.com/facebook/react-devtools,但是后来它有集成到了react项目中,所以通过源码编译安装起来给人一种错觉,到底是安装react-devtools还是react。如果是直接git clone,还需要切换分支v3,然后构建。 这里推荐直接通过码云上的react-devtools仓库来获取源代码进行构建,原因一个是克隆...

2021-01-09 23:22:52 113

原创 JavaScript:如何给setTimeout传递参数

本文介绍一种在使用异步函数setTimeout时给其带上参数的方法。

2021-01-06 10:01:51 36

Monaco-font.zip

Monaco字体是一款mac系统默认的字体,可以在windows上安装,喜欢这款字体的可以下载。 1、下载之后,可以直接打开,然后点击界面上的安装字体,就可以将字体安装到C:\Windows\Fonts目录下 2、也可以直接将下载的字体文件MONACO.TTF文件放入C:\Windows\Fonts文件夹下。

2019-10-23

linux下rustup安装可执行文件

centos7下可以通过该工具来安装指定版本的rust,eg:path/to/rustup install nightly-2018-01-12

2018-03-23

jmxtools.jar jmxri.jar

jmx依赖包,官方已经不提供了,这里给2分,给大家下载。

2018-01-24

xftp6绿色版

配合xshell6快速传输资源,只要与linux服务器连接上,速度优于lrzsz传输。

2019-01-11

Java调用批处理示例

Java调用批处理,以及需要注意的地方,多使用,可以增强编程与windows服务的知识

2010-11-03

在桌面程序的选项面板里找到选中的面板

如何在选项面板以及双层选项面板里找到当前选择的面板,通过分层拨开。

2010-11-03

mysql主从复制环境搭建(Fedora20)

mysql主从复制 两台虚拟机Fedora20 安装相同版本(mysql-community版) 配置hosts 配置主从关系 配置bin-log日志

2016-08-23

luffy5459的留言板

发表于 2020-01-02 最后回复 2020-04-17

空空如也

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

TA关注的人 TA的粉丝

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