笔记
浪漫至死不渝1
这个作者很懒,什么都没留下…
展开
-
如何实现本地文件的线上压缩包下载功能
如何提供压缩包下载服务原创 2022-10-26 10:53:51 · 359 阅读 · 1 评论 -
logstash,kibana以及filebeat添加keystore
在比较新的版本,logstash,kibana和filebeat都支持使用keystore保存关键信息,比如你的ES密码等操作方法:以logstash为例1 创建keystore,调用脚本文件logstash-keystore./bin/logstash-keystore create默认创建在config目录下,可使用setup来修改安置未知。此外logstash的keystore可以给它创个访问密码。方式是在创建keystore之前,新建变量LOGSTASH_KEYSTORE_PASS原创 2022-03-11 17:02:11 · 874 阅读 · 0 评论 -
logstash解析json对象
"fields" => { "tenant_id" => -1, "project" => "bss3", "app_name" => "ilog_default_application", "projectName" => "test", "project_id" => 561959, "messagetopic" => "logstash原创 2022-03-11 16:39:18 · 3050 阅读 · 0 评论 -
ES的searchAfter使用详解
searchAfter简单来说就是将from。。。size中的from用searchAfter的sort字段表示,通过不断更新此sort字段实现向下滚动效果。但是和from不同的是对数据更新不敏感。search after官网介绍使用search_after时要求你的query值和sort值相同。更具体点是要求你的字段相同,你可以修改它的逻辑,比如你可以查时间为a的数据,那么你将逻辑改为比a大或者比a小都可以,但是你的逻辑必须是时间。sort同理,你可以升序也可以降序但你用来排序的字段不要变。sea原创 2022-03-03 14:40:02 · 12464 阅读 · 1 评论 -
URL存在特殊字符^注意事项
URL中存在^这个字符时,会报400,请注意在2.x以上的版本springboot中是不支持 ^这个字符的。原创 2022-03-02 16:51:57 · 439 阅读 · 0 评论 -
logstash的dissect匹配字符串内置双引号时需要注意的问题
当你使用dissect匹配如下字符串时"{\"0\",\"20\",\"WEB\"}"如果你在mapping下如此编写"{\"%{Id}\",\"%{num}\",\"%{name}\"}"你会发现报错信息显示不匹配,而且你细看会发现我明明写的是\,怎么变成 \\\ 了?类似于这样Dissector mapping, pattern not found {"field"=>"message", "pattern"=>"{%{?pass}\\\"%{operation_time}\原创 2022-02-28 15:55:49 · 685 阅读 · 0 评论 -
使用java的io流实现http协议,并由此发散到如何实现tomcat容器
本文,笔者将使用java 的io流来实现http协议的接收和发送消息。其中前台使用postman后台使用idea编写程序步骤如下,java后台开放一个端口,接收postman发来的链接,并创建socket和于此对应的inputStream和OutputStream.我们使用封装后的字符缓冲流BufferedReader和BufferedWriter来实现。请看后台代码public static void main(String[] args) { try{原创 2022-02-17 14:25:14 · 578 阅读 · 0 评论 -
rest high level client 创建测试数据
restHighLevelClient有一个index方法,用来向指定索引下创建数据官方文档链接如下官方es创建指定索引下的数据使用用例public class TestEsCreate { public static void main(String[] args) { List<HttpHost> httpHosts = new ArrayList<>(); String[] clients = StringUtils.split(原创 2022-02-09 16:08:40 · 1316 阅读 · 0 评论 -
maven打springboot应用的包,同时将三方依赖包打入方法
在你的pom文件下,插入此段即可 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin原创 2022-01-26 16:37:58 · 423 阅读 · 0 评论 -
mybatis的自动建表方法——ACTable
ACTable的使用ACTable简单说就是对mybatis的一个增强组件,可以在你启动java应用的时候自动得执行建表语句在你成功使用mybatis操作数据库后,额外如官方链接所示接入actable即可实现自动建表https://www.yuque.com/sunchenbin/actable/ag3y1y跳转后的是springboot的操作步骤,目前只支持mysql。按照官方的步骤,配置好actable实现启动时自动建表后请注意一下,即完成如下配置。注意@Component会覆盖@原创 2022-01-26 16:35:06 · 4559 阅读 · 0 评论 -
logstash匹配正则做判断,正则表达式的写法
笔者在使用logstash做日志解析的时候,需要根据日志源(source字段)来进行判断,以何种格式进行解析。此时source字段来源非常多,比如a,b, c,在此之下有分为很多种日志,如1,2,3.此时我的source就有a1,a2,a3,b1,b2,b3,c1,c2,c3,如果我现在只想解析1这种类型的日志,而且我不知到之后还会引入多少个源。那么采用正则匹配来判断是必然的了。正则表达式写法如下1 首先得在首尾叫上’/’,表示这是个正则 如 [a] =~ /****/2 接下是几个常用的写法x原创 2021-11-25 10:45:17 · 1641 阅读 · 0 评论 -
messageSource在后台做国际化
操作简单,一般按规范在resource下创建一个i8n文件夹,再在该文件夹下创建多个文件对应多个语言,比如message的项目名,可以就在这下面创建message_zh_CN.properties,message_en.properties的文件,同时一定要再创建一个message.properties的文件,原因未知。之后在application.properties下添加这一行spring.messages.basename=i18n/message然后springboot就可完成对messag原创 2021-10-21 19:22:54 · 150 阅读 · 0 评论 -
2021-10-19 resultType和resultMap使用需注意的小问题
当你的数据库中的属性名与实体类的字段统一满足某种关系的一一对应时,可直接使用resultType编写,这个一一对应关系写在mybatis-config.xml文件下。写在setting标签下,注意Mybatis配置文件的属性位置顺序是 固定 的,不允许 颠倒顺序,否则 Mybatis 在解析 XML 文件的时候就会抛出异常,这个与 Mybatis 框架启动加载配置信息顺序有关,后续我们源码分析会讲到。方式如下<configuration> <settings>原创 2021-10-20 09:53:00 · 253 阅读 · 0 评论 -
在使用@RequestParam时要注意的一个小问题
笔者在今天调用接口时遇到一个问题,即我在用postman测试后台的接口时,返回数据是空的。当时找了半天,最后才发现是这个注解使用上的误解。对于用@RequestParam注解的参数,它接收的是x-www-form-urlencoded格式数据,而@RequestBody是application/json类的数据。这两者会有什么问题呢?笔者在对一个String类的参数添加@RequestParam注解时,像当然的在postman中对这个参数输入了一个到双引号的数据,这个数据在被引入到sql语句中时,并没有去原创 2021-10-14 16:21:31 · 621 阅读 · 0 评论 -
使用PriorityQueue上需要注意的问题
PriorityQueue 作为Queue的一个子类,能够对里面的元素按照元素的比较器进行自动的排序,其排序算法采用的是堆排序。堆排序是一种建立好后,在根节点浮出最小值或者最大值的二叉树(一般用数组就可以实现),然后不断取出根节点值然后完成排序的算法。由于该算法只能保证浮出的那一个是最大或最小值,因此当你使用迭代器来遍历的时候,即对二叉树进行广度遍历后,除了第一个值外,其他的值必然会是无序的,在某些特殊情况下甚至你能感觉到他甚至没有排序。这是因为堆只保证根节点一定比它的字节点大或小,但同一深度,或者不同路原创 2021-10-09 16:36:05 · 166 阅读 · 0 评论 -
git中rebase操作和pull操作注意事项
git pull我们都知道他是git fetch + git merge 但是为什么他不被推荐呢?问题就出在这个merge,假如你在master分支调用了一次git pull ,那么他会自动用远程的master分支来合并你的本地master分支。造成的结果是什么?就是你在本地master分支上的改动很可能因为这次合并消失了,比如你这边本地在master添加了一些东西,然后git pull,显然远程上是没有你添加的东西的,那么合并的时候将远程合到本地上,它就会理解成是对你本地分支进行删除操作(因为是远程合并原创 2021-09-29 13:33:16 · 2666 阅读 · 0 评论 -
ES数据库操作入门总结
elasticsearch总的来说应该算是一个搜索引擎,公司使用一般是作为日志结果查询。json文档格式,倒排索引的快速以及分布式的特性,使得es可以在大量数据中快速查询到结果。windows安装和配置可参考官方网址。https://www.elastic.co/guide/en/elasticsearch/reference/current/zip-windows.html倒排查询可参考这个知乎回答https://zhuanlan.zhihu.com/p/62892586可以使用浏览器的U原创 2021-09-29 11:11:19 · 3486 阅读 · 0 评论 -
C++学习笔记3 泛型算法
c++中的容器只定义了很小的一部分操作也就添加,删除,访问首尾元素,确定容器是否为空以及获得指向首尾元素之后位置的迭代器。方法少到我们几乎可以全部列举出来。但我们显然要对我们的元素要做的不只是这些,比如查找,替换,排序,比较,计算等。c++标准库它并未给每个容器都定义成员函数来实现这些操作,而是定义了一组泛型算法。接下来的都是一些死记硬背的东西,我写成笔记以加深印象。没什么理解的东西大多数算法都定义在头文件algorithm中。标准库还在头文件numeric中定义了一组泛型算法。一般这些算法并不直原创 2021-01-30 14:37:43 · 101 阅读 · 0 评论 -
跑酷小游戏
跑酷游戏其实算是很简单的一种游戏了,实现原理其实就是当物品都在向左移动时,你控制一个人物上下移动,躲避障碍物,获取道具以及金币等等。通常是以你拿到多少分数,走了多少距离当作胜利条件。那么首先准备你需要的素材,比如金币,道具,障碍物,移动人物等。那么在游戏运行过程中,你需要写触发器,即人物与金币,道具,障碍物接触时的内部函数。如下void OnTriggerEnter(Collider mCollider){ //如果碰到的是金币,则金币消失,金币数目加1; if (mCollider.gameO原创 2021-01-27 23:53:33 · 756 阅读 · 0 评论 -
C++学习笔记2 字符串、向量和数组
本书的第三章几乎就是在讲明白迭代器,数组下标和指针之间的关系。1,首先迭代器的运算类似于指针运算,迭代器类似于指针,但是迭代器并不使用取地址符,而是通过其类中的begin()函数和end()函数来取到第一个元素的位置和最后一个元素的下一个位置。其解引用的方式和指针一样就是加个*。迭代器支持的运算指针也全都支持,也因此迭代器几乎可以看作指针的一个父类2,数组下标其实就是数组中首个元素的位置加上下标值后的位置所对应的一个指针(这样也能解释为什么java中数组的元素可通过形参改变了。)比如下面这个p //原创 2021-01-20 23:00:41 · 111 阅读 · 0 评论 -
C++学习笔记1 变量和基本类型
考试周和化工厂设计结束了,总算可以拿起书学习了。。1, 如果在数字前加入前缀0,则以八进制计算。加入前缀0x则以十六进制计算。所以如果你写int i = 08或者int i = 09; 是会报错的。变量,引用和指针首先使用格式如下:int i = 0; i是一个变量int &j = i ; j是一个引用,指向一个对象int *k = &i;k是一个指针。类似于引用,但本身是可以赋值和拷贝的。其中变量和指针在函数体内允许不在定义时就初始化。而引用必须初始化。原因在于变量和指针是对原创 2021-01-19 16:10:06 · 76 阅读 · 0 评论 -
寻路算法(BFS,DFS, A*寻路)
博主真的有段时间没写博客了,主要这段时间在练内功(算法和数据结构),因此就没有写博客了。这次用两个小时写出了寻路算法,算是对之前博主学习进程的一个交待吧。我们回归正题,BFS和DFS是我们遍历链表树图等等数据结构时候的一种方法,而寻路换句话说就是从起点遍历到终点的过程。(我就不介绍寻路方面的最基础的问题,大家如果需要从头了解的话可以看其他人的博客)我先默认大家已经了解并掌握了BFS和DFS的基本概念;广度遍历和深度遍历。即使用队列和栈遍历的两种方法。1,保存路径寻路算法相比于我们平常使用BFS,DF原创 2020-12-04 16:58:07 · 4544 阅读 · 0 评论 -
线程间的通信
1,我还记得最开始写通信小程序的时候,那时候的数据传输就是用死循环来检测数据是否发生了变化,但是这种通信会浪费CPU资源,而且如果轮询的时间过大,有可能你还没取到你要的值,这个值可能就发生了更改,导致本来可以跳出的死循环跳不出来。因此引入了一种机制wait/notify。2 wait/notifywait() 方法是Object类的方法,它的作用是使当前执行wait()方法的线程等待,在wait() 所在的代码行处暂停执行,并释放锁,在调用wait()之前,线程必须获得该对象的对象级别的锁,即只能在同步原创 2020-10-05 11:40:30 · 187 阅读 · 0 评论 -
对象及变量的并发访问
1 synchronized 方法关键字synchronized可用来保证原子性、可见性和有序性。关键字synchronized所取得的锁都是对象锁,而不是把一段代码或方法当作锁。如下代码public class Synchronized_learning { public static void main(String[] args) { // TODO Auto-generated method stub HasSelfPrivateNum numRef1 = new HasSelf原创 2020-09-30 17:07:19 · 92 阅读 · 0 评论 -
Java多线程
1 进程和线程一个程序启动后就是一个进程,进程相当于一个空盒,它只提供资源装载的空间,具体的调度不是由进程完成的而是线程。看如下这段代码public class Test { public static void main(String[] args) { System.out.print(Thread.currentThread().getName()); }} 它的打印结果如下主函数创建的是一个名称为main的主线程,所有其他运行的线程都是它的子线程。这也证明了进程的确只是一个原创 2020-09-12 18:03:02 · 178 阅读 · 0 评论 -
TCP/IP 20问
TCP/IP 协议 20 问 姓名:________ _________传输层有哪些协议及对应职能?传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能。该层定义了两个主要的协议:传输控制协议(TCP) 和 用户数据协议(UDP)TCP 提供的是一种可靠的、面向连接的数据传输服务;而UDP协议提供的是不可靠的、无连接的数据传输服务。传输层如何区分不同应用程序的数据流?传输层赋予每个数据流对应的应用程序抽象的表示——端口号,不同的应用程序对应的端口号不同。原创 2020-09-12 15:30:27 · 273 阅读 · 0 评论