Java
风铃峰顶
个人项目经历请搜索:
http://www.haoranhaoshi.top/
展开
-
电梯模拟案例分享
【代码】电梯模拟案例分享。原创 2023-03-26 17:21:32 · 153 阅读 · 0 评论 -
LocalDateTime时间戳转换
LocalDateTime转载 2022-08-30 15:10:51 · 848 阅读 · 0 评论 -
BlockingQueue、SynchronousQueue、ArrayBlockingQueue、ReentrantLock、Semaphore、公平与非公平
BlockingQueue有ReentrantLock的两个Condition。一个关心是否不空,put后不空会执行signal,可以继续take,take时如果空了,会执行await。一个关心是否满,take后不满会执行signal,可以继续put,put时如果满了,会执行signal。SynchronousQueue靠内部的队列(TransferQueue,对应公平策略)或栈(TransferStack,对应非公平策略)存储元素,默认是非公平策略,而ArrayBlockingQueue靠内部的..原创 2022-05-27 10:10:21 · 193 阅读 · 1 评论 -
全面解析Java线程按序打印
package thread;import org.junit.Test;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CountDownLatch;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.Semaphore;import java.util.concurrent.atomic.At原创 2022-05-25 10:54:38 · 537 阅读 · 1 评论 -
ThreadLocal在上下文中的实践
public class UserContextTest { @Test public void test() { // UserContext可以参考Dubbo的RpcContext;RpcContext中使用的InternalThreadLocalMap找到Entry的方式是数组索引,比JDK的线性探测方式性能强 new Thread(() -> { UserInfo userInfo = new UserInfo();原创 2022-04-14 15:06:48 · 203 阅读 · 0 评论 -
多文件内容快速对比、MD5
有一个文件要和很多文件比较内容,看是否相同,如果文件大小相同,一个一个字节地比较内容,速度很慢,可以根据文件的内容各自生成MD5,然后对比文件的MD5值就可以快速排除不相同的文件。MD5值相同,极大概率就是相同的文件,不放心的话可以再遍历字节对比一下。文件越多,效率越明显。增加文件时就可以存储对应的MD5值,改动文件时更新MD5值。MD5:https://blog.csdn.net/u012611878/article/details/54000607...原创 2021-07-08 19:40:16 · 4069 阅读 · 0 评论 -
Java执行curl的两种方式
ProcessBuilder方式传参cmd各部分构成的数组,麻烦,但容错性高。Runtime方式传参curl字符串,简单,但容错性低。见实例:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;/** * @author zhanghao * @date 2021/7/7 */public class CurlTest { static String[原创 2021-07-08 17:16:01 · 10112 阅读 · 0 评论 -
Webmagic爬虫框架
一个框架,一个领域 一个好的框架必然凝聚了领域知识。WebMagic的设计参考了业界最优秀的爬虫Scrapy,而实现则应用了HttpClient、Jsoup等Java世界最成熟的工具,目标就是做一个Java语言Web爬虫的教科书般的实现。如果你是爬虫开发老手,那么WebMagic会非常容易上手,它几乎使用Java原生的开发方式,只不过提供了一些模块化的约束,封装一些繁琐的操作,并且提供了一些便捷的功能。如果你是爬虫开发新手,那么使用并了解WebMagic会让你了解爬虫开发的常用模式、工具链、以及一..转载 2021-07-06 17:09:06 · 182 阅读 · 0 评论 -
封装、继承、多态
面向对象编程的三大特性:封装、继承、多态。封装逻辑拆分,屏蔽内部细节,增强可读性、可维护性。继承复用父类的成员变量、方法。多态同一个行为,有多种具体实现形式。如重写或重载父类的方法、接口的方法。参考:https://www.cnblogs.com/chenssy/p/3372798.html...转载 2021-01-22 14:24:51 · 75 阅读 · 0 评论 -
Unsafe的应用
AtomicIntegerByteBuffer原创 2020-10-15 15:57:01 · 102 阅读 · 0 评论 -
JDK、JRE、JVM的关系
JDK、JRE、JVM的关系:JDK包括JRE,JRE包括JVM。参考:https://www.cnblogs.com/java-lzx/p/11641610.html、https://www.cnblogs.com/gkmeteor/p/11749175.html转载 2020-09-11 10:34:31 · 77 阅读 · 0 评论 -
待整理知识点记录
Spring:https://www.jianshu.com/p/da6c7af9a31aJVM:https://www.jianshu.com/p/49e76079243dJava:https://www.jianshu.com/p/ba07aafda9a9Spring事务传播特性:https://www.jianshu.com/p/e8d3131ece67原创 2020-09-10 19:21:02 · 88 阅读 · 0 评论 -
JDBC和ODBC
JDBC(Java Data Base Connectivity,Java数据库连接):面向Java的数据库连接方式。提供执行数据库操作的Java API。ODBC(Open Data Base Connectivity,开放数据库连接):微软的面向C/C++/C#的数据库连接方式。需结合ADO(ActiveX Data Objects,一种表示数据库中数据结构和数据的对象)执行数据库操作。...转载 2020-09-09 19:52:27 · 182 阅读 · 0 评论 -
Java 对象访问方式
一、句柄(对象的唯一标识)访问方式:使用句柄访问对象,会在堆中开辟一块内存作为句柄池,句柄中储存了对象实例数据(属性值结构体)的内存地址,访问类型数据的内存地址(类信息,方法类型信息),对象实例数据一般也在heap中开辟,类型数据一般储存在方法区中。使用句柄访问的好处是句柄中储存的是稳定的对象地址,当对象被移动时候,只需要更新句柄中的对象实例部分的值即可,句柄本身不用被移动修改。二、直接指针访问方式:直接指针访问方式指reference中直接储存对象在heap中的内存地址,但对应的类型数据访问转载 2020-09-03 14:51:06 · 536 阅读 · 0 评论 -
Java JDK和CGLib代理
JDK:生成代理类,实现了被代理类的接口,代理类的方法调用时执行InvocationHandler实现类的invoke方法。import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;/** * @Author: ZhangHao * @Description: JDK代理测试 * @Date: 2020/8/25 14:05 *原创 2020-08-25 15:07:04 · 181 阅读 · 0 评论 -
Java 零散知识点记录二
堆内存哪些是线程私有 https://blog.csdn.net/u010187815/article/details/102477397数组、列表被方法改变后spring自动装配 AutowireCapableBeanFactory no:ref byName byType constructor default https://blog.csdn.net/qq_36761831/article/details/88075405 https://www.jia...原创 2020-08-25 09:15:52 · 130 阅读 · 0 评论 -
Java 零散知识点记录一
JVM 原始类型 引用类型(强软弱虚) 堆(年轻代(Eden、From、To)(https://blog.csdn.net/xyh930929/article/details/84067767)、年老代、永久代/MetaSpace(https://blog.csdn.net/u010588262/article/details/81365547)) 栈 方法区 本地方法栈 程序计数器 GC(引用计数(DGC https://blog.csdn.net/wodewutai17quie...原创 2020-08-25 09:12:26 · 744 阅读 · 0 评论 -
维护事件处理的优秀工具:org.greenrobot.EventBus 使用介绍
使用开源的org.greenrobot.EventBus可以更好地维护事件处理,取代反射(参考:https://blog.csdn.net/haoranhaoshi/article/details/103816810),取代自写监听(参考:https://blog.csdn.net/haoranhaoshi/article/details/84250934)。import org.green...原创 2020-01-14 14:26:42 · 4296 阅读 · 0 评论 -
Java 实战
智能家居协议设计:实现一个基于socket的物联网服务器,接收来 自客户端的数据。实现一个物联网客户端,模 拟设备。客户端产生数据,发送至服务器,服 务器根据协议对数据作出处理。需要模式的设备有:温度传感器:采集房间温度信息。湿度传感器:采集房间湿度信息。空调:可以根据服务器发来的指令进行调节 模式(制冷、制热、送风)、设置温度、风 速;还可以根据服务器的指令上传子自己的当 ...原创 2020-01-12 13:02:55 · 491 阅读 · 0 评论 -
eclipse+jax-ws+spring+mybatis+cxf+mysql搭建WebService服务端
一、源码下载(转载并修改):https://github.com/haoranhaoshi/eclipse-jax-ws-spring-mybatis-cxf-mysql二、介绍:1、com.sshome.ssmcxf.dao及sqlMapper/user.xml属于数据链路层;2、com.sshome.ssmcxf.entity是实体(Java Bean),toString()负...原创 2018-01-11 15:47:34 · 621 阅读 · 0 评论 -
Myeclipse+jax-ws搭建WebService服务端
一、MyEclipse2017CI7安装与破解参考:http://blog.csdn.net/rcnjtech/article/details/77920978?locationNum=1&fps=1二、新建WebService Project参考:http://blog.csdn.net/cai_eternal/article/details/53931257三、发布We...原创 2018-01-11 12:45:51 · 373 阅读 · 0 评论 -
Java的WebService前后台
一、开发环境搭建(1)jdk-8u60-windows-x64.exe安装;(2)mysql-5.5.20-winx64.msi安装;(3)apache-tomcat-7.0.67.exe安装;(4)eclipse-win64.zip解压;(5)navicat_trial_11.1.20.0.1449226634.exe安装。 二、Java WebService服务端搭...原创 2018-01-02 12:49:12 · 292 阅读 · 0 评论 -
Java框架及架构回顾
Hibernate:1、Configuration、SessionFactory、Session、Transaction、Query2、insert:session.save(student)3、select:session.createQuery(" from Student ").list()3、xml文件:类、属性与表结构的映射 数据库连接配置(驱动、数据库ur原创 2018-01-16 13:10:51 · 385 阅读 · 0 评论 -
书记_《Java程序员,上班那点事》
1、Java程序员三重境界:程序员:侧重技术的深度;项目经理:侧重技术的广度;部门经理:侧重市场研发能力。2、工作经验的本质是技术和能力(技术的深度、精度和创造价值的能力)。3、开展工作:公司的业务方向和客户构成(公司目标),所属部门的工作目标(和其他部门的联系)(团队目标),自己负责的开发方向,尽快投入工作(个人目标)。4、border="1"是细的双线边框,border="0",cell...原创 2018-02-05 18:51:21 · 588 阅读 · 0 评论 -
Could not publish server configuration for Tomcat v7.0 Server at localhost. Multiple Contexts have a
报错:Could not publish server configuration for Tomcat v7.0 Server at localhost. Multiple Contexts have a 原因:workspace的server的server.xml中path有重名原创 2018-05-03 15:43:57 · 254 阅读 · 0 评论 -
图片上传(ajax通过base64格式的字符串方式上传图片至服务端)
(1)getBase64(imgPath);//path为img路径(2)function getBase64(imgPath) { //图片转base64 function getBase64Image(img, width, height) { //width、height调用时传入具体像素值,控制大小 ,不传则默认图像大小 var canvas = document.createE...原创 2018-05-05 18:11:10 · 3140 阅读 · 0 评论 -
JavaFX入门
1、JavaFX简介:(1)JavaFX是JDK1.8及以上提供的大杀器,前台开发体验可以参考.NET的WPF和Android,强于之前的AWT和Swing。(2)JavaFX由舞台stage(相当于Form),容器container(相当于layout),控件control等构成。(3)依靠内置或独立的可视化场景编辑器Scene Builder,可以可视化设置属性、事件。(4)组件(容器...原创 2018-06-08 17:36:48 · 925 阅读 · 0 评论 -
Java多屏显示
Java实现多屏显示:不同或相同的窗口运行在不同的屏幕上。参考:https://stackoverflow.com/questions/4627553/show-jframe-in-a-specific-screen-in-dual-monitor-configuration代码:package application; import java.awt.Color;import ...原创 2018-08-02 15:21:31 · 3435 阅读 · 0 评论 -
JavaFX菜单项MeanItem或RadioMenuItem(父类为MenuItem)等设置文本内容(setText)后下划线_不显示
JavaFX菜单项MeanItem或RadioMenuItem(父类为MenuItem)等设置文本内容(setText)后下划线_不显示,因为MeanItem或RadioMenuItem(父类为MenuItem)等默认将下划线设为了助记符(appRadioMenuItem.setMnemonicParsing(true);默认是true),下划线后为搭配Alt+的组合快捷键。重新设置后(appRa...原创 2018-08-02 15:37:26 · 1056 阅读 · 0 评论 -
OSGI技术小结
参考:https://blog.csdn.net/u013851082/article/details/70214829https://blog.csdn.net/u013851082/article/details/70214881OSGI技术(Open Service Gateway Initiative,开放的服务入口的初始化):目标:使模块之间真正解耦、分离。场景:灵活可控的大规...原创 2018-08-02 17:01:07 · 194 阅读 · 0 评论 -
Hadoop慕课网学习记录
书籍推荐:Hadoop权威指南,Hadoop技术详解前提:Linux入门和Java入门Google大数据技术:MapReduce、BigTable、GFSHadoop(名称来自开发者儿子的玩具):模仿Google的开源大数据技术Hadoop组成:HDFS(存取海量数据的分布式文件系统)、MapReduce(任务分解和调度的并行处理框架)Hadoop工具:HIVE(SQL转Hadoop任务...原创 2018-08-22 23:07:24 · 424 阅读 · 0 评论 -
JavaFX文本框、按钮、列表框事件监听处理
//文本框TextField textField = new TextField();//监听文本框输入值变化textField.textProperty().addListener(this::textChange);private void textChange(ObservableValue<? extends String> observable, String old...原创 2018-10-09 08:59:57 · 8509 阅读 · 0 评论 -
贝叶斯曲线生成随机曲线,JavaFX方式
package application;import java.awt.Point;import java.util.ArrayList;import java.util.List;import java.util.Random;import javafx.application.Application;import javafx.stage.Stage;import java...原创 2018-10-09 09:24:14 · 1698 阅读 · 2 评论 -
封装树表控件,Json传入内容,JavaFX方式
TreeTableViewDataBean.java:package TreeTableView;import javafx.beans.property.SimpleStringProperty;import javafx.beans.property.StringProperty;public class TreeTableViewDataBean { //通用树表对应的一行...原创 2018-10-09 10:03:22 · 800 阅读 · 0 评论 -
插入排序 Java版
package application;public class Study { public static void main(String[] args) { //从小到大 int[] a = {0,2,4,3,9,6,10,7,1,8,5}; int[] b = sort2(a); System.out.print("排序结果:\n"); for(int i = ...原创 2018-10-09 15:47:08 · 93 阅读 · 0 评论 -
Java Map遍历方式中最高效的
Map<String, String> map = new HashMap<>(); map.put("1", "a"); map.put("2", "b"); map.put("3", "c"); map.put("4", "d"); for(Map.Ent原创 2018-10-09 16:31:08 · 3240 阅读 · 1 评论 -
静态代码块、构造代码块、构造函数
class CodeBlock{ int a; // 构造函数 CodeBlock(int a){ this.a=a; System.out.println("构造函数 a:" + a); } //构造代码块 { System.out.println("构造代码块1"); } { ...原创 2018-10-17 16:23:50 · 207 阅读 · 0 评论 -
读取Jar包文件夹里的所有jar包文件名;生成连续解压jar包的命令行;生成连续的本地非Maven仓库型依赖
package tool;import java.io.File;public class DealJarFolder { public static void main(String[] args){ String filePath = "C:/Users/Administrator/Desktop/MyJarFolder"; searchJar...原创 2018-10-31 13:18:24 · 1056 阅读 · 0 评论 -
JavaFX全屏
import javafx.application.Application;import javafx.geometry.Rectangle2D;import javafx.stage.Screen;import javafx.stage.Stage;import java.awt.*;//舞台最大化primaryStage.setMaximized(true);//获取窗口标...原创 2018-10-30 10:38:54 · 1990 阅读 · 0 评论 -
Map第一个key
Map<String, String> result = new HashMap<String, String>(); //Map第一个keyresult.keySet().iterator().next();原创 2018-10-30 10:40:20 · 12314 阅读 · 1 评论