【Java开发】
文章平均质量分 65
Java基础
Coinker
世界上只有一种真正的英雄主义,那就是在认清生活真相之后依然热爱生活
——罗曼罗兰
展开
-
【JVM】记一次JVM调优经历
事出起因,通过grafana查看Jvm运行情况。发现每分钟GC次数频繁,而且主要是ParNew GC,通过查资料,发现该垃圾收集器对应JVM 堆的新生代。通过Arthas查一下内存分配情况。可以看到堆内存一共分配了4G。然后新生代(eden + survivor)和老年代(cms)分配比例接近:1 : 3多执行几次 memory 命令试试,果然发现了重大问题。eden 使用率频繁从20%多到90%多,再到20%多,再到90%,这无疑印证了再频繁进行ParNew GC。.原创 2022-05-14 09:39:36 · 525 阅读 · 0 评论 -
【JVM】Out of Memory 内存溢出排查
记一次OOM排查过程!原创 2022-04-15 14:57:35 · 5118 阅读 · 0 评论 -
【TDengine学习】IDEA连接TDengine
通过调研TDengine官网,发现目前TDengine并没有一个非常成熟的可视化管理工具(参考官网),因为我是基于Java开发,所以尝试总结了一下IDEA连接TDengine中遇到的一些问题。首先要知道,TDengine提供两种连接协议,一种为JDBC-RESTful(效率低) ,一种为JDBC-JNI(效率高,但需要安装dll库)。个人建议初学采用JDBC-RESTful协议,坑较少。通过IDEA的Database添加添加数据库配置默认User:root默认Passwor原创 2021-09-17 12:22:05 · 5160 阅读 · 14 评论 -
一张图搞懂Mybatis! 真的只需要一张图!
没错, 真的只是一张图!原创 2020-03-05 22:23:26 · 155 阅读 · 0 评论 -
ArrayList如何扩充?
2、ArrayList如何扩充? 首先如果我们向集合中插入一个元素,会执行方法ensureCapacityInternal方法,传进来最小容量 private void ensureCapacityInternal(int minCapacity) { ensureExplicitCapacity(calculateCapacity(elementData, minCapac...原创 2019-09-02 16:39:22 · 599 阅读 · 0 评论 -
hashmap如何根据key找到value?
1、hashmap如何根据key找到value? 首先新建一个Node用于接收查询出来的Node节点 hash(key)计算其hash码,并传入到getNode()方法中 ,根据hash码和对应的key找到对应的节点 public V get(Object key) {Node<K,V> e;return (e = getNode(hash(key), k...原创 2019-09-02 16:38:08 · 12547 阅读 · 2 评论 -
HashMap如何扩充?
4、HashMap如何扩充? 首先看下put,通过传入hash值,key,value public V put(K key, V value) { return putVal(hash(key), key, value, false, true);} 然后看下putVal final V putVal(int hash, K key, V value, boo...原创 2019-09-02 16:41:12 · 781 阅读 · 0 评论 -
【Java开发】JNA(Java Native Access)学习
1.简介提到JNA 就不得不提一下JNI(Java Native Interface),有过不同语言间通信开发经历的一般都知道,它允许java和其他语言代码(尤其是C/C++)进行交互,只要遵守约定即可。首先看下JNA调用C/C++过程,注意写程序时自下而上,调用时自上而下:可见步骤之多,调用.dll/.so共享库之痛苦的过程。若已有编译好的.dll/.so文件—>需先用是C语言另外写一个.dll/.so共享库,使用SUN规定的数据结构代替C语言的数据结构,调用已有的dll/so中公布的函数—转载 2021-07-11 08:44:38 · 2688 阅读 · 0 评论 -
jar包日志去哪了?
简述:最近调试logback日志,在IDEA中可以正常显示并输出日志,可是打成jar包后就不显示日志,一度奇怪。如果是在IDEA中,倒是可以看看打印日志这个语句是否执行,可是现在已经打成JAR包了,也没有办法进行调试。于是我尝试右键JAR包,用360压缩打开,发现果然可以找到打印日志的那个类。关于为什么JAR格式文件能够被压缩软件打开,是因为JAR格式也是一种压缩格式。JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 ..原创 2020-09-30 11:14:51 · 6211 阅读 · 0 评论 -
重新理解Java的值传递和引用传递
废话不说,直接上代码。 public static void main (String[] args) throws java.lang.Exception { System.out.println("======================="); ArrayList<Map<String,String>> list = new ArrayList<>(); for (int i = 0; i < 10原创 2020-05-14 18:16:58 · 164 阅读 · 0 评论 -
String之substring()
String之substring()示例代码: String a = new String("AAA"); a = a.substring(1); System.out.println(a);剖析一: String a = new String("AAA"); ...原创 2019-04-09 19:18:15 · 7197 阅读 · 0 评论 -
UDP案例----聊天程序
import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.IOException;import java.net.*;import javax.swing.*;import javax.xml.bind.annotation.ad...原创 2019-01-30 15:47:41 · 345 阅读 · 0 评论 -
编写10个线程,第一个线程从1加到10,第二个线程从11加到20...第十个线程从91加到100,最后再把十个线程结果相加。
编写10个线程,第一个线程从1加到10,第二个线程从11加到20...第十个线程从91加到100,最后再把十个线程结果相加。class Addition extends Thread{ //注意用线程数组,实例化对象为Thread类型对象,需建立Thread类的对象 private int currNum; private static int sum; public Additio...原创 2019-01-17 15:29:44 · 7340 阅读 · 6 评论 -
StringBuffer的应用
public class Test{ public static void main(String []a){ System.out.println("1.add----------"); add(); System.out.println("2.delete-------"); remove(); System.out.println("3.update-------"...原创 2019-01-17 20:25:45 · 347 阅读 · 0 评论 -
ArrayList、LinkedList、HashMap哪个速度更快?
1、ArrayList 有序集合 底层为数组 按下标查找快 增删慢 按元素查找、增删都慢2、LinkedList 有序集合 底层为链表 按下标查找慢 增删快 按元素查找慢 增删比arrayList快3、HashMap 无序哈希表 底层哈希表 按下标查找一般比LinkedList快 增删快跟主体大小有关按元素查找快 增删快跟主体大小有关,越大越慢...原创 2019-01-24 19:28:26 · 6362 阅读 · 2 评论 -
某人在玩游戏的时候输入密码123456后成功进入游戏(输错5次则被强行退出),要求用程序实现密码验证的过程
1)使用Sysytem.in包装为字符流读取键盘输入。2)BufferedReader对字符流进行包装。调用BufferedReader的readLine()方法每次读取一行。3)在for循环判中判断输入的密码是否为“123456”,如果是则打印“恭喜你进入游戏”,并跳出循环,否则继续循环读取键盘输入。4)当循环完毕,密码还不正确,则打印“密码错误,结束游戏”,并调用System.ex...原创 2019-01-26 10:45:06 · 1888 阅读 · 0 评论 -
String 与 StringBuffer之间的转换
package demo;/* String与StringBuffer之间的转换 * String -> StringBuffer * 方式一:构造方法 * 方式二:通过append方法 * StringBuffer -> String * 方式一:通过构造方法 * 方式二:通过toString方法 * */public class StringAndStringBu...转载 2019-01-22 11:18:26 · 607 阅读 · 0 评论 -
java随机验证码的生成
import java.awt.Color;import java.awt.Font;import java.awt.Frame;import java.awt.Graphics;import java.awt.Panel;import java.util.Random;public class Test{ public static void main(String []aa){...原创 2019-01-27 08:56:43 · 162 阅读 · 0 评论 -
编写一个JFrame窗口,要求如下: 1. 在窗口的NORTH区放置一个JPanel面板。
编写一个JFrame窗口,要求如下:1. 在窗口的NORTH区放置一个JPanel面板。2. JPanel面板放置如下组件:(1) JLable标签,标签文本为“兴趣”,右边接着是三个JCheckBox多选按钮,选项分别是“羽毛球”、“乒乓球”、“唱歌”。可以多选。(2) JLabel标签,标签文本为“性别”,右边接着是两个JRadioButton按钮,选项分别是“男”、“女”。置成单选按...原创 2019-01-28 11:07:55 · 2561 阅读 · 1 评论 -
编写一个 JFrame 窗口,窗口包含一个菜单栏和一个 JLabel 标签。 菜单栏中有两个菜单,第一个菜单有两个菜单项,它们之间用分隔符分开,第二个菜单有一个菜单项。
编写一个 JFrame 窗口,要求如下: 1.窗口包含一个菜单栏和一个 JLabel 标签。 2. 菜单栏中有两个菜单,第一个菜单有两个菜单项,它们之间用分隔符分开,第二个菜单有一个菜单项。 3.JLabel 标签放置在窗口的中间(即 BorderLayout.CENTER),当点击菜单项的时候,菜单项中的文本显示的 JLabel 标签中。import ja...原创 2019-01-28 11:56:50 · 3765 阅读 · 1 评论 -
模拟三个老师同时发放80份学习笔记,每个老师相当于一个线程.
/*问题:模拟三个老师同时发放80份学习笔记,每个老师相当于一个线程.知识:需要用到sychrnized() 同步方法思路: 1.定义一个用sychrnized() 修饰的同步方法,该方法进行售票 2.创建一个线程实例,分别开启三个老师的线程 */class Notes implements Runnable{ private int notes = 800; publi...原创 2019-01-17 14:51:23 · 6974 阅读 · 4 评论