<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_42583549的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_42583549</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_42583549]]></copyright><item><title><![CDATA[地理信息数据处理-坐标系转化（三）]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/134252636</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/134252636</guid><author>qq_42583549</author><pubDate>Thu, 21 Mar 2024 15:28:14 +0800</pubDate><description><![CDATA[导入的数据坐标坐标系需要转化为WGS84。搜索4326找到WGS 1984坐标系。转化即可得到对应shap文件。]]></description><category></category></item><item><title><![CDATA[地理信息数据处理-线面数据转化和数据合并（二）]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/134246027</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/134246027</guid><author>qq_42583549</author><pubDate>Thu, 21 Mar 2024 15:28:01 +0800</pubDate><description><![CDATA[有些线数据是MultiLineString，因此转化出来的数据为MultiPolygon，现在想把多个MultiPolygon合并为一个面数据。1.在arcgis中选中对应图层， 然后在“数据管理工具-要素-要素转面”打开转化工具。根据上节内容，把数据转化到postgresql数据库中。2.数据为多个分散的线、面数据，需要转化为一条。解决方案使用，arcgis转化工具。选择导出shap文件目录和名称。拖动转化图层到任务栏。]]></description><category></category></item><item><title><![CDATA[地理信息数据处理-PostgreSQL空间地理信息postGis（一）]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/134205843</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/134205843</guid><author>qq_42583549</author><pubDate>Sun, 05 Nov 2023 22:21:22 +0800</pubDate><description><![CDATA[PostgreSQL有各种各样的插件扩展其功能，其中地理信息有PostGis插件的支持，丰富PostgreSQL 数据库的使用功能。因此PostgreSQL 结合PostGis可以存储Geometry类型数据的点、线、面等数据，同时还可以结合相应的专有函数做空间运算。参考。]]></description><category></category></item><item><title><![CDATA[Mybatis之typeHandler]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/134107744</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/134107744</guid><author>qq_42583549</author><pubDate>Sun, 29 Oct 2023 20:50:42 +0800</pubDate><description><![CDATA[经常在项目上遇到一些Mysql的字段在基本定义类型以外的数据，比如geometry地理信息数据、列表、JSON数据等，这些数据都尝试通过一个字段存储，这时候可以用上mybatis中TypeHandler自定义数据映射。 类是 MyBatis 中用于处理数据库类型和 Java 类型之间转换的基本抽象类。它有一些方法，可以根据需要进行覆盖来实现自定义类型处理器。以下是  中的一些主要方法和它们的作用： 方法：该方法用于将 Java 对象（parameter）转换为数据库字段类型，并将转换后的值设置到 Prepa]]></description><category></category></item><item><title><![CDATA[设计模式-中介者模式]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/133977339</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/133977339</guid><author>qq_42583549</author><pubDate>Sun, 22 Oct 2023 20:15:51 +0800</pubDate><description><![CDATA[定义：用一个中介者对象来封装一系列的对象交互。中介者使得各对象不需要显式地相互引用，从而使其松散耦合，而且可以独立地改变它们之间的交互。在软件开发中，通过提供一个统一的接口让系统不同部分进行通信。一般，如果系统有很多子模块需要直接沟通，都要创建一个中央控制点让其各模块通过中央控制点进行交互。中介者模式可以让这些子模块不需要直接沟通，从而达到进行解耦的目的。在现实生活中，有很多中介者模式的身影，例如二手车平台、婚姻中介和房产中介，通过平台方介入进行协调供需之间的关系。]]></description><category></category></item><item><title><![CDATA[Java（八）FutureTask源码]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/133847087</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/133847087</guid><author>qq_42583549</author><pubDate>Sun, 15 Oct 2023 20:24:19 +0800</pubDate><description><![CDATA[任务发起线程可以调用get()方法来获取任务执行结果，如果此时任务已经执行完毕则会直接返回任务结果，如果任务还没执行完毕，则调用方会阻塞直到任务执行结束返回结果为止。发起任务线程跟执行任务线程通常情况下都不会是同一个线程，在任务执行线程执行任务的时候，任务发起线程可以查看任务执行状态、获取任务执行结果、取消任务等等操作，接下来分析下这些操作。​	1 .判断任务当前执行状态，如果任务状态不为NEW，则说明任务或者已经执行完成，或者执行异常，不能被取消，直接返回false表示执行失败。]]></description><category></category></item><item><title><![CDATA[Elasticsearch(四)深分页Scroll]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/132955350</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/132955350</guid><author>qq_42583549</author><pubDate>Sun, 17 Sep 2023 21:55:29 +0800</pubDate><description><![CDATA[1.1、scroll与from+size区别ES对于from+size的个数是有限制的，二者之和不能超过1w。当所请求的数据总量大于1w时，可用scroll来代替from+size。1、先将用户指定的关键字进行分词；2、将词汇去分词库中进行检索，得到多个文档的id；3、去各个分片中拉取指定的数据，相对耗时较长；4、将数据根据score进行排序，耗时相对较长；5、根据from，size的值，截取满足条件的查询到的数据；6、返回结果；优点:每次都能获取到最新的记录；]]></description><category></category></item><item><title><![CDATA[Elasticsearch(三)聚合基本使用]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/132795041</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/132795041</guid><author>qq_42583549</author><pubDate>Sun, 10 Sep 2023 20:13:44 +0800</pubDate><description><![CDATA[可以理解成Java中的Map<String, List>结构，类似于Mysql中的group by后的查询结果。对一个数据分组执行的统计，比如计算最大值，最小值，平均值等 类似于Mysql中的max(),min(),avg()函数的值，都是在group by后使用的。这里为两层aggs聚合查询，先按服务类型统计，得到数据分组，再在数据分组里算平均价格。最常用的统计：count，avg，max，min，sum，语法含义与mysql相同。多个aggs嵌套语法也是如此，aggs代码块的位置即可。]]></description><category></category></item><item><title><![CDATA[Elasticsearch(二)kibana数据检索]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/132654109</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/132654109</guid><author>qq_42583549</author><pubDate>Sun, 03 Sep 2023 19:10:59 +0800</pubDate><description><![CDATA[有了数据学习使用kibana调用api检索数据，熟练kibana操作后再进一步使用spring data。termmatch文档内容格式参考。]]></description><category></category></item><item><title><![CDATA[ElasticSearch（一）数据类型]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/132528030</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/132528030</guid><author>qq_42583549</author><pubDate>Sun, 27 Aug 2023 21:23:21 +0800</pubDate><description><![CDATA[Es数据类型分为基础数据类型和复杂类型数据，掌握ES数据类型才能进一步使用ES检索数据内容。]]></description><category></category></item><item><title><![CDATA[Java-JUC（七）]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/132135466</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/132135466</guid><author>qq_42583549</author><pubDate>Sun, 06 Aug 2023 21:07:49 +0800</pubDate><description><![CDATA[3、ArrayBlockingQueue，一个有界缓存等待队列，可以指定缓存队列的大小，当正在执行的线程数等于corePoolSize时，多余的元素缓存在ArrayBlockingQueue队列中等待有空闲的线程时继续执行，当ArrayBlockingQueue已满时，加入ArrayBlockingQueue失败，会开启新的线程去执行，当线程数已经达到最大的maximumPoolSizes时，再有新的元素尝试加入ArrayBlockingQueue时会报错。但是当请求没有的时候，允许核心线程也终止。]]></description><category></category></item><item><title><![CDATA[Java - Synchronized（六）]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/132007863</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/132007863</guid><author>qq_42583549</author><pubDate>Sun, 30 Jul 2023 15:48:17 +0800</pubDate><description><![CDATA[在Java中，“synchronized” 是一个关键字，用于实现多线程的同步机制，其含义是“同步”的意思。在多线程编程中，当多个线程同时访问共享资源时，可能会导致竞态条件（Race Condition）和数据不一致的问题。为了避免这些问题，可以使用 synchronized 关键字来标记一个代码块或方法，使得同一时间只有一个线程可以进入该代码块或方法，从而保证了对共享资源的互斥访问。]]></description><category></category></item><item><title><![CDATA[JAVA-ReentrantLock（五）]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/131878419</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/131878419</guid><author>qq_42583549</author><pubDate>Sun, 23 Jul 2023 12:48:11 +0800</pubDate><description><![CDATA[非公平锁的特点是，当有多个线程同时请求锁时，不会按照线程的请求顺序来获取锁，而是直接尝试获取锁，如果能获取成功，则立即获得锁，即使其他线程在等待。说明: 跟踪lock方法的源码可知，当资源空闲时，它总是会先判断sync队列(AbstractQueuedSynchronizer中的数据结构)是否有等待时间更长的线程，如果存在，则将该线程加入到等待队列的尾部，实现了公平获取原则。当有多个线程等待锁时，锁会选择最早等待的线程来获取锁。如果锁的计数归零，说明锁可以完全释放，此时清空锁的持有者，并返回。]]></description><category></category></item><item><title><![CDATA[Java-LockSupport（四）]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/131621955</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/131621955</guid><author>qq_42583549</author><pubDate>Sun, 09 Jul 2023 13:20:15 +0800</pubDate><description><![CDATA[LockSupport提供了更灵活、直接的线程阻塞和唤醒机制，不需要依赖于特定的对象实例。它可以直接操作线程本身，无需和特定对象关联，更容易控制和管理线程的阻塞和唤醒操作。无需锁对象：LockSupport不需要和特定的锁对象关联，避免了在等待和唤醒过程中对锁的获取和释放，减少了可能的死锁和竞争条件。先唤醒后阻塞：LockSupport的park()方法可以先于unpark()方法调用，这意味着可以提前唤醒线程，而不会导致线程永久阻塞。]]></description><category></category></item><item><title><![CDATA[MQTT（三）MQTTX工具使用]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/131504703</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/131504703</guid><author>qq_42583549</author><pubDate>Sun, 02 Jul 2023 20:39:21 +0800</pubDate><description><![CDATA[MQTT是一种轻量级的消息传输协议，通常用于物联网设备和应用程序之间的通信。MQTTX提供了一个用户友好的界面，可以方便地与MQTT代理进行连接、订阅主题、发布消息以及监视消息的传输。它支持多个MQTT代理的管理，并且具有许多有用的功能，如历史记录、自动完成、TLS/SSL支持等。使用MQTTX，开发人员可以更容易地验证和调试他们的MQTT应用程序，确保消息的正确传输和处理。总结来说，MQTTX是一个开源的MQTT客户端工具，用于测试和调试MQTT协议，提供了易于使用的界面和许多实用的功能。]]></description><category></category></item><item><title><![CDATA[MQTT（二）Java整合MQTT]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/131383562</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/131383562</guid><author>qq_42583549</author><pubDate>Sun, 25 Jun 2023 18:20:55 +0800</pubDate><description><![CDATA[上一节知道MQTT是一个通信协议，需要一个代理服务Broker；通信设备作为客户端Client，后台系统服务器也作为客户端Client。经过了解选用EMQX作为代理服务Broker（支持WEB界面查看）后台服务使用Spring Integration链接EMQX。]]></description><category></category></item><item><title><![CDATA[MQTT（一）]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/131275595</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/131275595</guid><author>qq_42583549</author><pubDate>Sun, 18 Jun 2023 20:22:17 +0800</pubDate><description><![CDATA[学习目标：经过了解，Netty占用服务器资源内存大、远距离传感器在极端条件下数据处理兼容较差（网络条件差，需要反复重连等）。从同行业了解到，现在主流工业传输使用MQTT作为通信框架基础，同时网上更多资料也倾向于使用MQTT，因此把学习MQTT作为了解方向。]]></description><category></category></item><item><title><![CDATA[Java-CAS(三)]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/131036446</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/131036446</guid><author>qq_42583549</author><pubDate>Sun, 04 Jun 2023 20:11:37 +0800</pubDate><description><![CDATA[CAS的全称为Compare-And-Swap，直译就是对比交换。是一条CPU的原子指令，其作用是让CPU先进行比较两个值是否相等，然后原子地更新某个位置的值，经过调查发现，其实现方式是基于硬件平台的汇编指令，就是说CAS是靠硬件实现的，JVM只是封装了汇编调用，那些AtomicInteger类便是使用了这些封装后的接口。简单解释：CAS操作需要输入两个数值，一个旧值(期望操作前的值)和一个新值，在操作期间先比较下在旧值有没有发生变化，如果没有发生变化，才交换成新值，发生了变化则不交换。]]></description><category></category></item><item><title><![CDATA[Java - AQS-CountDownLatch实现类（二）]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/130915748</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/130915748</guid><author>qq_42583549</author><pubDate>Sun, 28 May 2023 19:06:05 +0800</pubDate><description><![CDATA[CountDownLatch是Java中的一个同步辅助类，用于实现线程间的等待和通知机制。它通过一个计数器来实现，该计数器被初始化为一个正整数，并且只能递减。线程在等待阶段通过调用await()方法等待计数器变为0，而其他线程在完成自己的任务后通过调用countDown()方法来减少计数器的值。当计数器的值变为0时，所有等待的线程都将被唤醒继续执行。]]></description><category></category></item><item><title><![CDATA[Java - AQS（一）]]></title><link>https://blog.youkuaiyun.com/qq_42583549/article/details/130793846</link><guid>https://blog.youkuaiyun.com/qq_42583549/article/details/130793846</guid><author>qq_42583549</author><pubDate>Sun, 21 May 2023 18:31:04 +0800</pubDate><description><![CDATA[在Java中，AQS代表AbstractQueuedSynchronizer（抽象队列同步器）。AQS是Java并发包中用于构建同步器的基础框架。它提供了一种实现同步状态管理、线程等待和通知的机制。AQS主要通过一个int类型的状态值来表示同步状态，并提供了一些方法来操作和管理这个状态。它使用一个FIFO（先进先出）的等待队列来管理等待线程，并通过内部的一些算法和机制来确保线程的安全等待和唤醒。AQS的核心思想是通过继承和重写来实现具体的同步器。它提供了几个关键的方法供子类实现，包括（获取当前状态值）、（设]]></description><category></category></item></channel></rss>