java学习笔记
文章平均质量分 56
Ning静致远
不言成败,只看成长,做一名终生成长者!
展开
-
java中final关键字的作用
目录💖 简介💖 修饰变量🏆 局部变量🏆 成员变量🏆 修饰形参💖 修饰方法💖 修饰类💖 好处💖 注意💖 简介java中final关键字应用广泛,使用频繁,我结合C++进行整理,归纳,方便理解和掌握,特记录如下。如有理解不对的地方,欢迎各位指出,大家共同交流和学习。 如有帮助,请点赞加支持! 送人玫瑰手有余香!🌹🌹🌹💖 修饰变量final修饰的变量,成为常量,常量的值不能被修改,只能定义一次。类似于C/C++中的const。🏆 局部变量final修饰的局部变量必须声明进行初始化,如果不初始化,原创 2022-04-28 10:59:59 · 852 阅读 · 0 评论 -
解决java中调用JSON.toString(obj)保存mongodb数据库多出首字母小写字段问题
背景java利用fastjson-1.2.62.jar和mongo-java-driver-3.12.3.jar库保存数据到mongodb数据库时,会意外多出一些小写字母开头的字段。如下图所示:红色部分就是多出的字段,不是我想要的。实际上我的结构体定义如下,没有写get、set等方法,而是用lombok注解的方式:import lombok.Data;import lombok.Getter;import lombok.Setter;@Data@Setter@Getterpublic原创 2022-04-18 22:19:45 · 1050 阅读 · 0 评论 -
基于JAVA的ICE服务端实现
前言ICE版本使用3.6.4:Ice-3.6.4.msi链接:https://pan.baidu.com/s/1QwvLDcVPRaM52p1jU0lhrg提取码:8iso开发环境使用IDEA: ideaIU-2020.2.3.exe链接:https://pan.baidu.com/s/1XuA_A-9BeU5hOrDREJvzTA提取码:ybyq安装ICE首先安装Ice,选择安装路径D:\Program File(x86)在安装路径下,生成如下文件:使用ICE创建.ice文原创 2022-04-07 23:43:18 · 1217 阅读 · 0 评论 -
C++程序和JAVA程序通信的中文乱码问题
背景C++程序作为ICE客户端通过ICE中间件发送消息给JAVA服务端程序。C++客户端以默认编码格式的字符串传输给JAVA服务端,导致中文乱码。问题C++客户端通过GBK格式发送如下消息给JAVA服务端:"Name:"计算机监控快报","Status":"1","Type":"AGENT"JAVA服务端收到消息直接打印输出结果如下:表明中文乱码,考虑在JAVA服务端进行转换处理。JAVA端实现转为GB2312编码格式: try{ System.out.println(Syst原创 2022-04-07 21:27:41 · 1482 阅读 · 0 评论 -
JAVA获取MongoDB中的int64数据,被自动加上了$numberLong问题
前言采用的mongoDB驱动和JSON库的版本为:fastjson-1.2.62.jarmongo-java-driver-3.12.3.jar问题MongoDB中存放的Int64位点进去保存如下:多出一个NumberLongjava通过如下方式取出MongoDB记录//其中,arr为存放Documnet的ArrayList对象String qJson=arr.get(i).toJson(); //将documen转为json字符RecvHead recvHead = JSONO原创 2022-04-05 15:36:30 · 2980 阅读 · 1 评论 -
JSON数据和JAVA对象之间的转换
方法1:利用阿里巴巴开源的fastjson包进行JAVA对象和JSON字符串进行转换。C++中的结构体在JAVA中用对象表示,目录结构如下:Peron类内容如下,对应C++中的Person结构体:package com.company;public class Person { private String name; private int age; private String address; //快速生成 Alt+insert public St原创 2022-04-04 01:59:15 · 21354 阅读 · 0 评论 -
设计模式-建造者模式03
1. 定义GOF给建造者模式的定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。其实这个定义太抽象,不好理解,其实它的意思就是,将构建复杂对象的过程(或叫装配过程)和组成对象的子组件的分离,实现构建对象过程与组成对象的组件的解耦。2. 本质① 分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。...原创 2018-10-13 15:33:43 · 125 阅读 · 0 评论 -
JAVA集合类了解吗?简单介绍一下?
JAVA集合类主要分为两大体系:Collection和Map体系。其中Collection又派生出List、Set、Queue等三大体系。其中,List主要用来存放一些有序、可重复的元素;主要实现类有:ArrayList、LinkedList、Vector和Stack。① ArrayList是基于数组实现的,增删改比较慢,查询比较快。② LinkedList是基于链表实现的,与ArrayLi...原创 2018-10-13 15:30:15 · 1415 阅读 · 0 评论 -
单例模式与多线程
什么是单例模式?单例模式就是保证一个应用程序在整个声明周期内,只有一个实例对象。单例模式的实现方式有哪些?① 饿汉式所谓饿汉式,就是在类使用的时候就已经创建好对象,即立即加载。常见的实现办法就是直接new一个对象。优点:在多线程环境下是安全的。缺点:没有调用方法之前就加载创建对象,会占用内存空间② 懒汉式所谓饿汉式,就是在使用的时候才调用getInstance()方法创建...原创 2018-10-13 15:26:47 · 622 阅读 · 0 评论 -
面试记录
1. 手写一个快速排序算法?package cn.oop.quicksort;import java.util.Arrays;/**快速排序算法@author 温暖wk*/public class QuickSort {public static void sort(int a[],int low,int heigh) { int i,j,value;//先声明 if...原创 2018-09-28 00:02:07 · 464 阅读 · 0 评论 -
输入两个字符串,如果相等,则将字符串输出;如果字符串不相等,则将两个字符串连接起来,并输出
1.输入两个字符串,如果相等,则将字符串输出;如果字符串不相等,则将两个字符串连接起来,并输出package cn.oop.nk;import java.util.Scanner;/** * 编写一个程序,如果两个字相等,则将字符串输出; * 如果字符串不相等,将两个字符串连接起来,输出 * @author 温暖wk * 知识点:判断字符串相等的方法 * equal区分大...原创 2018-09-05 09:44:45 · 3677 阅读 · 0 评论 -
JDK、JRE的区别?以及相关面试题
1.JDK和JRE是java面试的基本问题。 下图是它们的直观区别,可从它们的面向对象、主要作用和组成部分三方面对比。其详细如下图所示: 2.JDK就是Java Development Kit 的英文缩写。 1). 主要面向开发人员。开发人员在软件开发时使用的SDK(Software Development Kit 一般指软件开发包),它提供了Java的开发环境和运行环境。 2). 如...原创 2018-08-04 20:53:53 · 13517 阅读 · 3 评论 -
为什么程序员总喜欢在编译时发现程序错误,而不愿意在运行期来发现错误?
俗话说,好的程序都是调出来的。程序开发过程中,出现错误是不可避免的,只有通过对代码不断调试,不断发现错误、修改错误,才能写出一个好的程序(健壮)。但是,程序错误可能发生在开发的各个阶段。 1.错误的理想处理时间时编译期。 因为运行期异常(RuntimeException)代表无法预知的错误,这个错误可能发生在任何时间、任何地点。也就是说,错误不知道什么时候发生,说不一定程序这次运行正确,但是,...原创 2018-08-05 21:04:01 · 1145 阅读 · 0 评论 -
下载MySQL驱动程序
下载步骤: 第一步:进入MySQL官方网站,并选择DOWNLOADS和Community。 第二步:选择MySQL Connectors 第三步:选择Connector/J 第四步:进入下面界面,找到下面的Generally available (GA)Releases 第五步:选择Generally available (GA)Releases下面的运行系统 ...原创 2018-08-11 00:10:28 · 20221 阅读 · 4 评论 -
Java使用JDBC连接mysql数据库及测试是否连接成功的方法
一、连接mysql数据库: 步骤一:在eclipse下面建一个项目,我的是JDBC_Test, 步骤二:选中项目名称,右键选择Build Path->Configure Build Path…. 步骤三:进入Java Build Path 选择Libraies,如下图所示 步骤四:选择Add External JARs.. 如下图 步骤五:找到已经下载好的MySQL驱...原创 2018-08-11 01:00:10 · 60700 阅读 · 8 评论 -
JVM内存分配_---JVM在进行内存回收时,是如何识别哪些对象应该放在新生代,哪些对象应该放在老年代的?
首先,了解这一过程,必须对堆的内存模型进行了解。先看下图: JVM将堆内存分为新生代(1/3的堆内存)和老年代(2/3的堆内存)两个区域。 新生代区域一般采用复制算法对内存进行回收。 老年代区域则采用标记清除算法和标记压缩算法对内存进行回收。 JVM为了便于内存管理,又将新生代分为3个区域:Eden空间、From空间和To空间,From和To空间也称为Survivor空间,用来存放没有...原创 2018-08-11 22:20:25 · 1557 阅读 · 2 评论 -
JAVA的编译时错误和运行时错误
1. 要区分编译时错误和运行时错误,就应该先明白什么是编译?什么是运行? 首先,先看一下这张图: 编译期就是将我们写的java源代码交给编译器执行的过程,起翻译的作用,该过程主要对java源代码的语法进行检查,如果没有语法错误,就将源代码编译成字节码文件(即.class文件); 运行期则是将字节码文件(.class文件)加载到内存中交给java虚拟机执行,直到程序执行结束的过程,该过...原创 2018-08-02 20:34:40 · 17376 阅读 · 1 评论 -
Java面试题总结
二分查找要求节点(A) A.有序,顺序存储 B.有序,链接存储 C.无序,顺序存储 D.无序,链接存储下面关于二分查找的叙述中正确的是(D) A.表必须有序,表可以顺序方式存储,也可以链表方式存储 B.表必须有序且表中数据必须是整型,实型或字符型 C.表必须有序,而且只能从小到大排列 D.表必须有序,且表只能以顺序方式存储 解析:二分查找是一个基础的算法。 二分查找就是将查...原创 2018-08-03 01:19:36 · 658 阅读 · 0 评论 -
进程上下文切换与和线程上下文切换有什么不同?
1.首先,需要搞明白什么是上下文切换?(面试题) 上下文切换就是从当前执行任务切换到另一个任务执行的过程。但是,为了确保下次能从正确的位置继续执行,在切换之前,会保存上一个任务的状态。2. 然后,需要明白进程与线程的区别?(网上很多,这里简单说明) 1).线程是进程的一部分。进程是表示资源分配的基本单位,又是调度运行的基本单位,是程序执行的一个实例; 线程是进程中执行运算的最小单位,即执行...原创 2018-08-12 11:52:22 · 12562 阅读 · 2 评论 -
Java如何正确停止线程?
在多线程开发时,停止线程是很重要的一个技术,因此,如何正确停止一个线程,对于从事多线程开发的人员是很重要且十分必要的。 1. 什么是停止线程? 所谓停止线程,就是让一个正在处理任务的线程,停止继续执行,放弃当前任务的操作。 2. 判断线程是否是停止状态的方法? Thread.java类中提供了;两种方法进行判断,分别是:interrupted()和isInterrupt...原创 2018-08-16 20:57:10 · 4438 阅读 · 0 评论 -
eclipse导入源码包方法
每次,新换一个项目路径,查看源码,都需要重新查找导入包的方法,非常浪费时间,特将方法记录一下,以便后期使用。1.首先在随便在eclipse里面,按住ctrl+鼠标左键,跳入以下界面 2.点击Atach Sourse… 3.点击External File.. 4.找到JDK下面的javafx-src.zip文件 5.一路ok,加载就可以了...原创 2018-08-26 19:41:49 · 10197 阅读 · 2 评论 -
基本数据类型
1.基本类型的数据及其包装类 Java语言支持自动类型转换,即把某个基本类型的值直接赋给另一个基本类型的变量,不会出现数据丢失的现象。Java自动类型转换及大小、对应包装类如下图所示: 1) .箭头左边的数据可以自动类型转换为箭头右侧的数据类型,不会出现数据丢失。 2). 如果将箭头右侧的数据赋给箭头左侧的变量,就需要进行强制类型转换,此种数据转换方式,会造成数据丢失。 2.基本数据类...原创 2018-08-27 00:12:26 · 175 阅读 · 0 评论 -
JAVA 自己实现一个ArrayList,详细解析
1.该类主要实现了ArrayList主要的几个方法:add()、remove()、size()、get()package cn.sxt.oop.collection;/** * 自己实现一个ArrayList * @author 2018-8-03 * 主要方法:size()、add()、remove()、get()public class ArrayListTest01 {...原创 2018-08-03 22:40:42 · 5565 阅读 · 5 评论