
学习文档
文章平均质量分 57
努力的小雨
我是努力的小雨,一个正经的 Java 东北服务端开发,整天琢磨着 AI 技术这块儿的奥秘。特爱跟人交流技术,喜欢把自己的心得和大家分享。还当上了腾讯云创作之星,阿里云专家博主,华为云云享专家,掘金优秀作者。各种征文、开源比赛的牌子也拿了。
想把我在技术路上走过的弯路和经验全都分享出来,给你们的学习和成长带来点启发,帮一把。
欢迎关注努力的小雨,咱一块儿进步!
展开
-
json_decode($str,true)的结果为null
/html_entity_decode进行HTML 实体转换为字符。//stripslashes() 函数的作用是删除反斜杠。ps:关注一下本人公众号,每周都有新更新哦!//$result为传进来的json值。原创 2024-06-17 09:38:09 · 330 阅读 · 0 评论 -
RabbitMQ快速开始
注意修改vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app文件。#第三步:最后安装rabbitmqrpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm。停止服务 rabbitmqctl stop_app(停止rabbtimq节点,但是不会停止erlang节点)a:修改 vim /etc/rabbitmq/rabbitmq-env.conf。c:修改本地 vim /etc/hosts文件。原创 2024-06-22 15:59:45 · 347 阅读 · 0 评论 -
redis快速开始
15 src/redis‐server redis.conf(注意要使用后台启动,所以修改redis.conf里的daemonize改为yes)6 # 把下载好的redis‐5.0.3.tar.gz放在/usr/local文件夹下,并解压。11 # 进入到解压好的redis‐5.0.3目录下,进行编译与安装。1 下载地址:http://redis.io/download。20 # 进入redis客户端。14 # 启动并指定配置文件。17 # 验证启动是否成功。23 # 退出客户端。原创 2024-06-21 10:17:54 · 212 阅读 · 0 评论 -
Zookeeper快速开始
允许follower初始化连接到leader最大时长,它表示tickTime时间倍数 即:initLimit*tickTime。# 允许follower与leader数据同步最大时长,它表示tickTime时间倍数。#自动触发清除任务时间间隔,小时为单位。# zookeeper时间配置中的基本单位 (毫秒)#单个客户端与zookeeper最大并发连接数。# 保存的数据快照数量,之外的将会被清除。#zookeper 数据存储目录。# 删除所有节点 包括子节点。#对客户端提供的端口号。原创 2024-06-21 10:17:20 · 441 阅读 · 0 评论 -
对比Hashtable,HashMap,TreeMap有什么不同?
TreeMap则是基于红黑树进行数据存储,提供顺序访问的Map,和HashMap不同,它的get、put、remove的时间复杂度都是O(log(n)),具体排序顺序由指定的Comparator来决定,或者根据键的自然顺序来判断。HashMap是应用最广泛的哈希表实现,方法与Hashtable差不多,但是线程不是安全的,也相应的提高了性能,支持null值与键,通常情况下,我们经常使用put与get进行数据的存。放与获取(使用迭代器或使用增强for循环)操作,所以它是绝大部分使用键值对存放数据场景的首选。原创 2024-06-08 07:47:39 · 246 阅读 · 0 评论 -
对大数据的批量导入MySQL数据库
/E:后面不用写//来代表在盘符下,SQL会默认缺省的,不然添加后报错。//将会调用下面的配置文件。这个方式虽然快是快,但是对文件的要求太高,客户不可能对程序理解,只知道传进来文件,所以自己取到file对象都会对file进行按行读取并进行判断重写写入临时文件。fields terminated by ','----文件中每个字段是按‘,’分割的,如.csv文件。//自己选择插入对象。原创 2024-06-15 08:00:55 · 1139 阅读 · 3 评论 -
PreparedStatement与Statement的区别
我是努力的小雨,一名 Java 服务端码农,潜心研究着 AI 技术的奥秘。🚀 目前,我的探索重点在于 AI Agent 智能体应用,我对其充满好奇,并不断探索着其潜力与可能性。如果你也对此领域充满热情,欢迎与我交流分享,让我们共同探索未知的领域!3、PreparedStatement提高了代码的灵活性与执行效率,在数据库支持的情况下,会将SQL语句预编译,当多次执行时,会直接执行编译好的SQL语句,从而提高效率。💡 我将不吝分享我在技术道路上的个人探索与经验,希望能为你的学习与成长带来一些启发与帮助。原创 2024-06-14 09:27:03 · 277 阅读 · 0 评论 -
Java单例模式
2 * 静态内部类式单例模式.延迟加载,线程安全,(方法不同步)调用效率高。2 * 饿汉式单例模式.无延迟加载,线程安全,(方法不同步)调用效率高。2 * 懒汉式单例模式.延迟加载,线程安全,(方法同步)调用效率不高。2 * 枚举类式单例模式.无延迟加载,线程安全,调用效率高。10 //用到时才会加载内部类,并且是线程安全的。以有延迟加载考虑时,静态内部单例好于懒汉式单例。以无延迟加载考虑时,枚举式单例好于饿汉式单例。7 //类加载时,是线程安全的。3 * @author 小雨。原创 2024-06-11 10:25:36 · 438 阅读 · 0 评论 -
接口与抽象类的区别
Java中定义了很多接口。接口分离(Interface Segregation):在进行接口和类定义时,如果一个接口存在多个方法时,实现它的类可能只会用到部分方法,这就减少了类的内聚性,通常会将该接口,划分为多个接口,将行为进行解耦,在未来维护中,如果某个接口有变,不会对使用其他接口的子类造成影响。简单说就是,父子类中相同名字和参数方法,有着不同的实现,重载则是在同一个类里有着相同的方法名称,不同的参数。Java不支持多继承,除了接口可以多继承接口,类可以实现多个接口,接口不可以继承抽象类只能继承接口。原创 2024-06-09 07:20:36 · 305 阅读 · 0 评论 -
如何保证容器是安全的?ConcurrentHashMap如何实现高效的线程安全?
Java提供了不同层面的线程安全支持,在传统集合框架内部,除了如Hashtable等同步容器,还提供了所谓的包装器(synchronized Wrapper),我们可以调用Collections工具类提供的方法,来获取一个同步的包装容器(如Collections.synchronizedMap),但是他们都是利用非常粗粒度的同步方式,在高并发情况下,性能比较低下。每个线程都要去争夺一把锁。总的来说,并发包中所提供的容器更优于早期的简单同步实现。各种有序容器的线程安全版本等。原创 2024-06-09 07:20:03 · 161 阅读 · 0 评论 -
mybatis中SQL语句运用总结
from (select pay_order_no,trans_date,pay_amount,pay_channel_id,trans_type,"无结果" as error_type。union all 才可以将所有的值都查询出来,自己将所有的值查询完总是少,才发现是这个问题。传入对象中有list需要使用时,需要进行遍历,我在in语句中使用。union 连接查询 连接两个表后会过滤掉重复的值。ps:关注一下本人公众号,每周都有新更新哦!或者直接在list中储存对象也可以遍历取出值。原创 2024-06-15 08:00:07 · 644 阅读 · 0 评论 -
建造者模式
1 //用户只需要与指挥者和建造者打交道就可以得到结构复杂的产品。建造者模式适用于需要生成的产品对象有复杂的内部结构。4 //根据不同的建造者。8 //相同的安装顺序。1 //具体的指挥者。原创 2024-06-12 10:07:51 · 675 阅读 · 0 评论 -
Java工厂模式
一般推荐使用简单工厂模式--构建汽车接口、独特车型实现接口、工厂根据用户想要的车型常见新车返回给用户。抽象工厂模式适用于产品族系列。每个工厂生产所需的组件不同但是一系列的。1 //调用者只需调用工厂,让工厂返回对象。12 输出:Audi is running!1 //发动机分为好的与一般的两个系列。1 //一般工厂创建它的一般产品系列。1 //好的工厂创建它的好产品系列。1 //座椅也分为好的与一般的。1 //抽象工厂创建产品。//镜子也分为好于一般的。1 //汽车工厂类的行为。14 输出:faster。原创 2024-06-11 10:26:08 · 437 阅读 · 0 评论 -
daterangepicker的个性化使用技巧
23 monthNames: ["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十 一月","十二月"]22 daysOfWeek:["日","一","二","三","四","五","六"],更多可以查看官方网站:http://www.daterangepicker.com/#examples。maxDate: moment(new Date()), //设置最大可选日期。原创 2024-06-14 09:28:00 · 508 阅读 · 0 评论 -
扫码点餐数据上报_渠道商-微信接口
官方api文档:https://files.cnblogs.com/files/guoxiaoyu/扫码点餐数据上报API_渠道商_v1.3.rar使用算法:加密解密都不是使用的商户平台的API秘钥,一定要使用微信给自己的证书,一个是p12、cert.pem、key.pem(这个是自己使用方法的私钥ps:记得将里面的头和尾没用的信息去掉,只要里面的字符串把换行也去掉就可以),只有在下载证书后用的是apiV3秘钥解密密文的。ps:如果没有记得v3秘钥让微信给自己开通白名单,自己踩了个坑。原创 2024-06-17 09:37:37 · 331 阅读 · 0 评论 -
虚拟机使用桥接模式网络配置
我使用的是Ubuntu 14版本,之前使用centos 7版本,不知道为何总是出错,果断放弃,能用就行!换一种方式也未尝不可。1、获取本机的网络详细信息 window+r 输入cmd 使用ipconfig -all。虚拟机中的ip ---------192.168.36.*,不要跟自己的本机ip冲突。网关-----------192.168.36.254 一样即可。dns -----------一样即可,我多写了几个,不用管。在自己的虚拟机中设置网络。原创 2024-06-16 09:46:34 · 367 阅读 · 0 评论 -
SQL调优方案
3、在查询多的情况下要使用索引提高查询效率,但也降低了insert或update的操作,对于一个表所要建立的索引应保持在6个以下。4、对于数字型的字段就不要使用字符型来代替,数据库对于字符的比较是一个一个的比,而数字则是一次性比较,提高了查询效率。5、对查询进行优化,避免全盘扫描,应尽量在where或order by语句涉及到的字段建立索引。7、不带任何条件的count(*)查询,是绝对要杜绝的,不仅会引起全盘扫描而且没有任何业务意义。6、避免null值得判断,否则将导致数据库放弃使用索引进行全盘扫描。原创 2024-06-13 10:04:21 · 697 阅读 · 0 评论 -
ThreadLocal原理,实现及如何保证Local属性
当需要使用多线程时,有个变量恰巧不需要共享,此时就不必使用synchronized这么麻烦的关键字来锁住,每个线程都相当于在堆内存中开辟一个空间,线程中带有对共享变量的缓冲区,通过缓冲区将堆内存中的共享变量进行读取和操作,ThreadLocal相当于线程内的内存,一个局部变量。每次可以对线程自身的数据读取和操作,并不需要通过缓冲区与 主内存中的变量进行交互。并不会像synchronized那样修改主内存的数据,再将主内存的数据复制到线程内的工作内存。原创 2024-06-10 07:56:25 · 155 阅读 · 0 评论 -
原型模式--深复制/浅复制
原型模式用于克隆复杂对象,由于new一个实例对象会消耗大部分时间,所以原型模式可以节约大量时间。11 Thu Jan 01 08:00:00 CST 1970 //只对s1修改。13 //深复制。4 //修改后。10 修改后。原创 2024-06-13 10:03:50 · 729 阅读 · 0 评论 -
微信小微商户直连接口详解
微信接口可以说是相当标准的API文档,说明也比较详细但是对参数的说明不是很准确,导致自己在连接接口的时候看不懂什么意思,一顿询问相关人员参数的含义,希望自己连接微信接口后对于其他的接口也会轻车熟路,一定要细心每一个参数的配置、顺序就没多大问题。原创 2024-06-16 09:48:08 · 1479 阅读 · 0 评论 -
深入浅出mybatis
mybatis是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。原创 2024-06-20 09:22:41 · 910 阅读 · 0 评论 -
深入浅出jvm
主要包含类加载器、jvm内存、字节码执行引擎、GC; 类加载器主要包含:应用程序加载器、扩展类加载器、启动类加载器。 启动类加载器:主要进行加载java核心类,例如:rt.jar包下的类。 扩展类加载器:主要进行加载java中ext包下的类。 应用程序类加载器:主要加载我们自己写的java类。 类加载机制:双亲委派机制和全盘负责委托机制。 双签委派机制:当我们自己的java类加载的时候会查看是否有父级加载器,如果有委托父级,直道由启动类加载器加载,启动类加载器加载后,加载了核原创 2024-06-20 09:21:58 · 881 阅读 · 0 评论 -
Synchronized&Lock&AQS详解
加锁目的:由于线程执行的过程是不可控的,所以需要采用同步机制来协同对对象可变状态的访问。加锁方式:java锁分为两种--显示锁和隐示锁,本质区别在于显示锁需要的是程序员自己手动的进行加锁与解锁如ReentrantLock需要进行lock与unlock。而隐式锁则是Synchronized,jvm内置锁,jvm进行操作加锁与解锁。原创 2024-06-19 09:09:29 · 1523 阅读 · 0 评论 -
5分钟带你了解RabbitMQ的(普通/镜像)集群
通过本文我们深入了解了RabbitMQ的集群模式及其优缺点。无论是普通集群还是镜像集群,都有其适用的场景和局限性。普通集群利用Erlang语言的集群能力,但消息可靠性和高可用性方面存在一定挑战;而镜像集群通过主动消息同步提高了消息的可靠性和高可用性,但可能会占用大量网络带宽。因此,在选择集群方案时,需要综合考虑业务需求、系统性能和资源限制等因素。唯有根据实际情况来灵活选择最适合的方案,以确保系统的稳定性和可靠性。原创 2024-06-18 09:21:12 · 514 阅读 · 0 评论 -
探索生成式AI的未来:Chat与Agent的较量与融合
Chat的优势在于其简单、易于实现和部署。它适用于提供快速响应和标准化服务的场景,如客户支持和常见问题解答。然而,Chat的局限性在于缺乏深度个性化和长期记忆,这限制了它在建立深度用户关系方面的潜力。Agent则提供了更为丰富和复杂的交互体验。它可以模拟真实人物的行为和情感,为用户提供更为沉浸式的体验。Agent的挑战在于其开发和维护的复杂性,以及对大量数据和计算资源的需求。随着时间的推移,将生成式人工智能无缝融入现有产品已经成为一种普遍的趋势。原创 2024-06-12 13:48:32 · 2216 阅读 · 0 评论 -
腾讯云 BI 数据分析与可视化的快速入门指南
通过本文的介绍,我们了解了腾讯云 BI 这款商业智能解决方案的基本功能和应用场景。从创建项目、连接数据源、数据表建模到页面搭建和推送功能的设置,我们通过一个互联网运营看板的案例,展示了如何快速入门并利用腾讯云 BI 进行数据分析和可视化。通过简单的数据编辑,我们可以轻松地设计报表,并实现数据的可视化呈现和分享。推送功能使得我们能够在不登录网站的情况下,通过邮件实时获取运营状况,帮助我们及时了解业务情况并做出有效的决策。腾讯云 BI 的强大功能和灵活性,为个人学习和企业数字化转型提供了可靠的数据驱动决策支持。原创 2024-06-12 10:06:11 · 2473 阅读 · 0 评论 -
基于腾讯元器搭建前端小助手
今天是个简单的助手演示仅仅使用到了插件的能力,以免有些人并不会上手智能体。通过本文,我们了解了如何利用腾讯元器搭建一个前端助手智能体。通过使用插件和观察其使用效果,我们可以发现前端助手在解决问题和提供帮助方面的潜力。这个前端助手可以成为我们在前端开发过程中的得力助手,帮助我们提高工作效率和解决难题。随着智能技术的不断进步,我们可以期待前端助手在未来发展中的更多功能和应用。我是努力的小雨,一名 Java 服务端码农,潜心研究着 AI 技术的奥秘。我热爱技术交流与分享,对开源社区充满热情。原创 2024-06-11 10:35:08 · 702 阅读 · 0 评论 -
进程与线程的区别?--多线程与线程池
Executors.newSingleThreadExecutor():创建一个只有一个单一线程的线程池,保证执行有序性,如有发生异常的线程,会自动创建一个新线程。Executors.newCachedThreadPool():创建一个缓存的线程池,如果有之前的线程可以使用,则使用,否则创建。Executors.newFixedThreadPool(个数):创建固定个数的线程池,超出的线程会在队列中等待,如有发生异常的线程,会自动创建一个新线程。除分布式外,进程数据之间,内存是不共享的。原创 2024-06-10 07:55:53 · 301 阅读 · 0 评论 -
Java提供哪些IO方式?Nio如何实现多路复用?
第三,在Java7中,NIO有了进一步的改进,也就是NIO2,引入了异步非阻塞的io方式,也有人叫它AIO(asynchronous IO)。第二,在Java1.4中引入了NIO框架(java.nio),提供了Channel、Selector、Buffer等新抽象,可以构建多路复用的、同步非阻塞的io程序,同时提供了跟接近操作系统底层的高性能数据操作方式。交互方式是同步、阻塞的方式,在读取输入流或者写入输出流时,在读写动作完成之前,线程会一直阻塞在那里,他们之间的调用是可靠的线程顺序。原创 2024-06-08 07:50:25 · 243 阅读 · 0 评论 -
Vector,ArrayList,LinkedList有何区别?
Vector与ArrayList在使用的时候,应保证对数据的删除、插入操作的减少,因为每次对改集合类进行这些操作时,都会使原有数据。ArrayList是应用广泛的动态数组实现的集合类,不过线程不安全,所以性能要好的多,也可以根据需要增加数组容量,不过与。开销,底部实现也是数组来操作,再添加数据时,会自动根据需要创建新数组增加长度来保存数据,并拷贝原有数组数据。Vector是Java中线程安全的集合类,如果不是非要线程安全,不必选择使用,毕竟同步需要额外的性能。在安全,性能,行为上有着不同的表现。原创 2024-06-08 07:47:06 · 218 阅读 · 0 评论 -
int与integer之间区别,谈谈integer的缓存范围?
首先int是Java的八种原始基本类型(byte、short、int、long、Boolean、float、double、char)之一,Java虽是面向对象的语言,integer是int的包装类,它有一个int类型属性用于存储数据,并且提供了基本操作,比如数学运算、int与字符串之间的转换。Java5中引入了自动装箱(boxing)、自动拆箱(unboxing)功能,Java会根据上下文自动转换。原创 2024-06-07 09:37:18 · 158 阅读 · 0 评论 -
string、stringbuilder、stringbuffer不同?
String类在其源码中,其jdk9之前是final修饰的char数组,jdk9后是final修饰的byte数组,final修饰的。stringbuilder与stringbuffer方法基本相同,但是线程不安全,是大多数我们进行字符串操作的首选类。类,final修饰的属性,是典型的immutable类,每次对string对象进行赋值,类似裁剪字符串、拼接,这也是jdk5之后新加的类,其append与add将字符串添加到末尾或则指定位置,是线程安全的,其源码中所有的方法都用到了。原创 2024-06-07 09:36:37 · 236 阅读 · 0 评论 -
基于腾讯元器搭建前端小助手
今天是个简单的助手演示仅仅使用到了插件的能力,以免有些人并不会上手智能体。通过本文,我们了解了如何利用腾讯元器搭建一个前端助手智能体。通过使用插件和观察其使用效果,我们可以发现前端助手在解决问题和提供帮助方面的潜力。这个前端助手可以成为我们在前端开发过程中的得力助手,帮助我们提高工作效率和解决难题。随着智能技术的不断进步,我们可以期待前端助手在未来发展中的更多功能和应用。我是努力的小雨,一名 Java 服务端码农,潜心研究着 AI 技术的奥秘。我热爱技术交流与分享,对开源社区充满热情。原创 2024-06-06 09:36:56 · 546 阅读 · 0 评论 -
5分钟教你搭建邮件服务器的实用指南
通过亲手动手实现,你不仅更深入地了解了邮件服务器的工作原理,也锻炼了自己解决问题的能力。你还可以根据自己的需求对邮件插件进行定制,使其更好地适应你的需求。一旦完成插件的搭建,它将不仅仅用于当前项目,还将被整合到我的小雨待办机器人中,以进一步提升其功能和效用。我是努力的小雨,一名 Java 服务端码农,潜心研究着 AI 技术的奥秘。我热爱技术交流与分享,对开源社区充满热情。身兼腾讯云内容共创官、阿里云专家博主、华为云云享专家等多重身份。原创 2024-06-05 18:40:33 · 3928 阅读 · 0 评论 -
谈谈Java的反射机制,动态代理是基于什么原理?
获取类的属性、方法,调用方法或者构造对象,甚至可以在运行时修改类定义。Java在反射时的invocationhandle中的方法。动态代理是一种运行时动态构建代理,动态方法调用得机制很多都是利用类似机制实现的,比如包装rpc调用。反射机制是Java的一种基础功能,赋予程序在运行时自省的能力,通过反射机制我们能够直接操作类或者对象。实现动态代理的方式有很多,比如jdk自身提供的动态代理,就是利用了上面提到的反射机制。方法的访问权限没起作用,会导致安全隐患。应用场景:jdbc连接数据库。面向切面的编程aop。原创 2024-06-05 18:37:19 · 204 阅读 · 0 评论 -
string、stringbuilder、stringbuffer不同?
String类在其源码中,其jdk9之前是final修饰的char数组,jdk9后是final修饰的byte数组,final修饰的。stringbuilder与stringbuffer方法基本相同,但是线程不安全,是大多数我们进行字符串操作的首选类。类,final修饰的属性,是典型的immutable类,每次对string对象进行赋值,类似裁剪字符串、拼接,这也是jdk5之后新加的类,其append与add将字符串添加到末尾或则指定位置,是线程安全的,其源码中所有的方法都用到了。原创 2024-06-05 18:36:55 · 263 阅读 · 0 评论 -
讲一下final、finally、finalize有什么不同?
finalize则在java中的主要目的是保证在被垃圾收集前完成特定资源的回收。finalize机制已经不建议使用并且在jdk9中被标记为deprecated,因为你无法保证finalize什么时候进行,执行的是否符合预期。使用不当会影响性能。final关键字用于修饰类、属性、方法,分别有不同的含义。final修饰的类不可继承、修饰的方法不可以重写(可以重载)、修饰的变量不可以修改其值。它只会将该对象的引用不改变,但是像list这样的还是正常可以往里添加数据。finally是在捕获异常的时候用到的。原创 2024-06-04 09:46:54 · 465 阅读 · 1 评论 -
请对比exception和error,另外,运行时异常与一般异常有什么区别?
Exception是程序运行过程中,可以预料发生的情况,并且应该捕捉进行相应的处理。Exception又可分为可检查(checked)异常和不检查(unchecked)异常,可检查异常必须在程序中进行显示的捕捉和相应得处理,这是编译期的一部分,不可查的Error是Throwable不是Exception;Error为是在正常运行下,不大可能发生的情况,大多可能对导致程序不可恢复,既然是非正常情况下,所以不便于抓,常见的有OutofMemoryError等,都是Error的子类。原创 2024-06-04 09:43:43 · 426 阅读 · 0 评论