
JAVA技术
文章平均质量分 65
.NET跨平台
比较认真。编程就是算法和数据结构,算法和数据结构是编程的灵魂。
展开
-
多构造器参数使用build设计模式
不直接生成想要的对象,而是让客户端利用所有必要的参数调用构造器,得到一个builder对象;然后客户端在builder对象上调用类似于setter的方法,来设置每个相关的参数;最后,客户端调用无参的build方法生成通常是不可变的对象,保证线程安全性。原生BuilderProduct:指要创建的复杂对象,User类;Builder:抽象建造类,里面包含了副本所有的属性信息、方法;:具体建造类,实现抽象建造类定义的方法,并返回一个建造好的对象。Director:指挥者,负责安排流程。转载 2024-11-12 21:16:58 · 51 阅读 · 0 评论 -
javax.crypto.Cipher 类实现了加密和解密的算法
在密码学中,(中文翻译为"密码器")指的是一种算法或系统,用于对数据进行加密和解密。它接受称为明文的原始数据作为输入,并通过使用密钥对其进行转换,生成称为密文的加密数据。密文只有通过正确的密钥才能被解密还原成原始的明文数据。在 Java 中,类实现了加密和解密的算法。这个类提供了加密和解密的功能,可以用于保护数据的安全性。对称加密算法(如 DES、AES)和非对称加密算法(如 RSA)都可以通过Cipher类来实现。原创 2024-03-18 21:02:25 · 1778 阅读 · 0 评论 -
Java实现Json排序
最近遇到个很烦人的问题。我现在做的业务有一部分是把之前app服务端的.net接口转译java接口。但是有些之前的接口,一个接口干上十几件事情,返回的json串长达五六几百行。着实看的就让人头大。但是如果返回的json串和原来的对不上,那app客户端就无法正常显示,人工去对比那是耗时耗力。所以我就想找一个程序,能把json串格式化好,然后按字段名称排好序,在逐行进行对比,就能很快就能找出不同比人工要快无数倍。找了半天也没法发现合适的。于是只好自己写一个。这个工具主要的思路是,将json串格式化并根据key。转载 2022-09-04 00:32:28 · 5120 阅读 · 0 评论 -
比较C#和Java
本文对比了C#与Java这两种编程语言,这两种语言都具有自动垃圾回收以及运行时编译执行的特点,并且两者的语法都有主要继承自C语言/C++,因此二者有很多相似之处。但由于C#是作为C++和Java的混合体而在Java之后所创造的,因此C#相较Java有更多的新语法特征并且引入了一些增强的功能,所以固然两者有其相似性,但是总归还是有诸多不同之处。对象处理C#和Java都可以被视作一种类似使用动态分派的类C++的面向对象语言(其中C++又源自于C语言)。但需要注意,这C#和Java并非C或者C++的超集,它们转载 2022-05-27 14:35:48 · 2065 阅读 · 0 评论 -
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
最近因为公司的一些原因,我也开始学习一些 JAVA 的知识。虽然我一直是以 .NET 语言为主的程序员,但是我并不排斥任何其它语言。在此并不讨论 JAVA .NET 的好坏,仅仅是对 .NET 跟 JAVA 程序的编译执行过程进行一些简单的介绍跟比较。因为有些内容还是超出自己原来的认知的,所以整理一下做个记录。.NET.NET 程序的执行过程大概分以下几个步骤:代码语言编译器编译ILJIT 编译运行.NET 平台的程序编译的时候是分多步的。当我们写好代码开始编译的时候需要选择一个合适的编转载 2022-05-18 00:27:12 · 218 阅读 · 0 评论 -
java与C#的比较
一、C#和java哪个更好?几天前,我的北理工研究生面试,老师问了我这样一个问题,你认为C#和java哪个更好?那么,作为读者的你,会怎么回答这道题呢?其实,在我看来,这道题无非是想问你c#和java有什么异同。同为开发语言,并不能说哪个更好,可能你某一种语言熟练,你会认为它好,但是如果你对两种语言都很熟练的话,你会认为,各有千秋。那么,下面就分析一下 C#和java到底有什么异同。 C#和Java比较,号称90%的相同加上10%的不同。二、从功能比较比较起Java和C#大相径庭的那10%,会发现转载 2022-05-01 12:11:22 · 8045 阅读 · 5 评论 -
Java If-Else 优化方案
当代码已经复杂到难以维护的程度之后,只能狠下心重构优化。那,有什么方案可以优雅的优化掉这些多余的if/else?1. 提前return这是判断条件取反的做法,代码在逻辑表达上会更清晰,看下面代码:if (condition) { // do something} else { return xxx;}其实,每次看到上面这种代码,心里就抓痒,完全可以先判断!condition,干掉else。if (!condition) { return xxx; } // do someth转载 2022-03-14 13:49:08 · 2667 阅读 · 0 评论 -
子类能否重写父类的静态方法?
今天在看到了一道面试题,题目是一道代码阅读题,问下面的代码输出结果是什么?我最开始的理解:上面的代码我们可以看到,上面的类中有两个内部类Sub和Super,Sub继承了Super,Sub类重写了父类Super的getType方法,这是一个静态方法;而在main方法中创建了一个Super变量指向了一个子类Sub对象,并调用了其getType方法。按照多态的原理,这个变量调用的应该是子类的getType方法,也就是会得到三个字符串“Sub”,但是结果并非如此,结果如下:这个结果是调用了三次父类Supe转载 2021-09-03 00:56:57 · 2422 阅读 · 2 评论 -
JNI字段描述符解析
之前也遇到过Ljava/lang/String;@123403f 这种描述语言,但具体没有了解过。今天就详细说说这个JNI字段描述符。个人对JNI理解下个定义:JNI是对程序运行时对参数类型为:基本数据类型,数组,集合,对象等作为参数时的参数类型描述。是该参数的一个编码,估计和其hash值有关系吧。语法格式以Object数组为例:以大写的”L”开头,以”;”结尾,中间是用”/” 隔开的包及类名下面从具体实例中理解过更好些:[Ljava/lang/String;@120243f 解析[ :一个.转载 2020-12-07 22:47:14 · 747 阅读 · 0 评论 -
JVM垃圾收集器
###对象已死?引用计数算法概念:给对象添加一个引用计数器,每当有地方引用它时,计数器就加1,当引用失效时,计数器就减,任何时刻计数器为0的对象就是不可能再被使用的。优点:简单、高效缺点:循环引用无法回收,如objA.instance=objB,ObjB.ins=objA<!--more-->可达性分析算法概念:从一个“GC Root”的对象作为起点,从这些节点开始向下搜索,搜索所走过的路径的引用链,当一个对象到GC Roots没有任何引用链相连时,则证明这个对象被判“死缓”转载 2020-12-04 11:21:14 · 255 阅读 · 0 评论 -
Java进阶篇-面向对象编程
D1: 面向对象编程的概念 类、对象以及引用 成员方法D2: 构造方法、方法重载、this关键字、方法的传参和递归调用D3: 封装、static关键字、单例设计模式D4: 继承、访问控制、final关键字、多态以及eclipse的使用D5: 多态、抽象类、接口、匿名内部类D1思路什么是对象?这个对象有什么特征和行为(面向对象)?如何用Java来翻译(面向对象编程)?对象太多了,代码重复量太大,也描述不过来,所以把他们共性的东西提取出来形成一个类!如何在Java中写一个类呢(类的定义)转载 2020-12-04 10:58:51 · 488 阅读 · 0 评论 -
全面理解.htaccess语法中RewriteCond和RewriteRule意义
RewriteCond的语法// 含义:当什么东西 匹配 某种模式,则..RewriteCond TestString CondPattern [Flags]RewriteCond %{HTTP_HOST} abc.comTestString 是指一个文本格式的条件,如:环境变量名HTTP_HOST所包含的内容(Name=Value),这是一个map(键值对)格式的数据类型。CondPattern 是条件参数,是正则表达式或字符串直接量,如上例就是abc.com。Flags 标识,可以用来紧转载 2020-11-29 13:57:56 · 2400 阅读 · 0 评论 -
IO流分类
15.1 IO了解15.1.1 IO的分类根据输入输出方向分为:输出流(写)输入流(读)根据文件类型:字节流(音频,视频,图片:一次读取一个字节)字符流(文本:一次读取一个字符)15.1.2 IO流四大家族:四大家族的首领:java.io.InputStream 字节输入流java.io.OutputStream 字节输出流java.io.Reader 字符输入流java.io.Writer 字符输出流所有的流都实现了:java.io.Closeab转载 2020-10-03 17:31:01 · 227 阅读 · 0 评论 -
JAVA IO
IO有内存IO、网络IO和磁盘IO三种,通常我们说的IO指的是后两者(网络IO把磁盘换做网卡即可)。Terminologies同步IO(Synchronous I/O):A synchronous I/O operation causes the requesting process to be blocked until that I/O operation completes.异步IO(Asynchronous I/O):An asynchronous I/O operation does n转载 2020-10-03 15:10:54 · 284 阅读 · 0 评论 -
Java-IO
io基础Java IO 是一套Java用来读写数据(输入和输出)的API.主要涉及文件,网络数据流,内存缓冲等的输入输出.Java IO中的一个核心概念是流(Stream),从外部(包括磁盘文件、键盘、网络套接字)读入到内存中的数据序列称为输入流,从内存写入到外部设备的数据序列称为输出流.在最底层,所有的输入/输出都是字节形式的.基于字符的流只为处理字符提供方便有效的方法流中的数据既可以是未经加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据.因此Java中的流分为两种:字节流转载 2020-10-03 14:11:30 · 183 阅读 · 0 评论 -
理解连接池
1. 池化技术池化技术 (Pool) 是一种很常见的编程技巧,在请求量大时能明显优化应用性能,降低系统频繁建连的资源开销日常工作中常见的有数据库连接池、线程池、携程池,对象池它们的特点都是将 “昂贵的”、“费时的” 的资源维护在一个特定的 “池子” 中,规定其最小连接数、最大连接数、阻塞队列等配置,方便进行统一管理和复用,通常还会附带一些探活机制、强制回收、监控一类的配套功能。2. 数据库连接池数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是转载 2020-09-25 09:11:13 · 756 阅读 · 0 评论 -
Java线程池简介
池化技术程序运行的本质:占用系统资源! 池化技术目的是优化资源利用!线程池 连接池 内存池 对象池 等等池化技术:事先准备好一组资源,需要来拿,用完归还到池中最小值最大值默认值线程池的好处:降低资源消耗提高响应速度方便监控管理总结:线程复用 控制最大并发数 管理线程线程池不允许通过 Executors 创建,而是通过 ThreadPoolExecutor 的方式创建,这样的处理方式可以让开发者更加明确线程池的运行规则,避免资源耗尽的风险。Executors 返回的转载 2020-09-20 12:29:14 · 276 阅读 · 0 评论 -
java中英文获取首字母之后分组排序
package com.syz;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * @author shiyz * @creation date 2012-10-25 上午13:01:21 * */public class Sor...转载 2020-04-27 11:10:22 · 1786 阅读 · 0 评论 -
JAVA8 思维导图
Java 8 函数式编程Java8新特性Lambda 表达式,函数式接口,类引用,构造器引用 StreamAPI转载 2020-01-03 23:06:55 · 533 阅读 · 0 评论 -
JAVA之ThreadPoolExecutor线程池的底层工作原理
java.lang.Objectjava.util.concurrent.AbstractExecutorServicejava.util.concurrent.ThreadPoolExecutor转载 2019-12-08 00:33:15 · 216 阅读 · 0 评论 -
java获取指定范围随机日期对象(java.sql.Date)的两种方法
还是因为填充自建数据表需要,需要一定范围内的随机日期,目标是优雅简洁高效.思路有二:生成一个符合要求的13位随机数作为毫秒,将毫秒转化为java.sql包中的Date类生成随机的年月,再根据年月确定日的范围,生成随机日.先上代码,随后进行效率对比.指定范围为2016年-2018年(即2016年1月1日起-2018年12月31日止)生成十三位随机数的方法: public stati...转载 2019-08-05 13:08:19 · 722 阅读 · 0 评论 -
使用.htaccess重定向后无法显示图片,CSS失效,该如何处理
我的网站根目录下有三个子目录,分别通过htaccess绑定到了同一域名下的不同主机名,根目录下的.htaccess的具体内容如下:<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.org$ RewriteCond %{REQUEST_URI} !^/wp/...转载 2019-09-29 21:18:39 · 959 阅读 · 0 评论 -
多线程下载原理及核心代码
假如我们把一个服务器上的文件看作是一个水缸里的水的话,那么多线程下载就相当于从水缸上打了多个小孔,然后塞进去小管道进行抽水。呵呵,也许这个比喻不够准确。多线程下载大致可分为以下几个步骤:一、首先在本地创建一个与服务器文件大小相同的临时文件(这个很好理解,如果我想下个2G的电影,我得给先在本地占用2G的空间,不然不能下着下着没空间了是吧)。二、计算分配几个线程去下载服务器上的资源,知道每个线程下载文件转载 2017-12-11 13:12:56 · 449 阅读 · 0 评论 -
【Java基础之Java IO】代码库(一)
IO 输入输出.javaimport java.io.*;import java.util.Scanner;public class Console { public static void main(String args[]) { String str = new String(); int[] arr = new int[10]; Buf转载 2017-07-01 13:09:52 · 794 阅读 · 0 评论 -
JAVA获取随机日期
import java.text.parseexception;import java.text.simpledateformat;import java.util.date;public class getrandomtiem { //返回2011-01-01到2011-12-01的一个随机日期 public static void main(string[] ...转载 2019-08-05 12:53:29 · 1543 阅读 · 0 评论 -
java.text.SimpleDateFormat 日期自定义格式转换类
SimpleDateFormat日期的自定义格式转换类,这个挺好用。首先需要了解一些日期的代表符号: yyyy 四位年 yy 两位年 MM 月份 始终两位 M 月份 dd 始终两位日期 d 日期 HH 24小时制 始终两位 H 24小时制 hh 12小时制 始终两位 h ...转载 2019-08-05 12:47:28 · 463 阅读 · 0 评论 -
【Java基础之网络编程】代码库(七)
单线程下载.java/** * FileOutputStream 类创建输出流对象, 然后使用 write() 方法, 将从输入流获得的网络资源保存到磁盘上, 实现网络资源的单线程下载.**/public void download(String urlAddr) { try { URL url = new URL(urlAddr); //创建 url 对象转载 2017-07-04 10:31:00 · 721 阅读 · 0 评论 -
【Java基础之数组与集合】代码库(六)
Map映射.java/** * get(Object Key) 方法返回指定键所映射的值 * put(K key, V value) 方法来为集合添加数据 */public class CityMap { public static Map<String, String> model = new LinkedHashMap(); static { mode转载 2017-07-04 10:21:05 · 551 阅读 · 0 评论 -
【Java基础之数据库】代码库(五)
Config.javapackage model;public class DatabaseConf { /** * 数据库驱动. */ public static final String URL = "jdbc:mysql://localhost:3306/"; /** * 用户名. */ public static fina转载 2017-07-03 22:26:57 · 503 阅读 · 0 评论 -
【Java基础之事件处理】代码库(四)
实现委托监听机制的三种方式.java//方式一: 将响应事件定义在一个外部类中import java.awt.*;import javax.swing.*;public class ActionEvent { public static void main(String args[]) { JFrame jf = new JFrame("ActionEvent");转载 2017-07-03 22:18:36 · 809 阅读 · 0 评论 -
【Java基础之设计模式】代码库(三)
抽象工厂模式.java//抽象工厂public abstract class AbstractFactory { public abstract Vehicle create(); public abstract Weapon create(); public abstract Food create();}//工厂public class Factory extend转载 2017-07-03 21:50:58 · 572 阅读 · 0 评论 -
【Java基础之多线程】代码库(二)
继承 Thread 类/** * Java JVM 启动的时候会有一个进程 java.exe. * Java 进程中至少有一个线程负责 java 程序的执行, 运行的代码存在于 main() 函数中, 称之为主线程. * 实际上, JVM 的启动不止一个线程, 还有一个负责垃圾回收的线程. */public class SubsidiaryThread extends Thread {转载 2017-07-03 21:40:06 · 473 阅读 · 0 评论 -
windows下使用Hibernate连接Mycat例子
项目结构 使用jdk1.6和hibernate3NewsManager.java代码如下:package App;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;imp原创 2016-08-23 12:57:45 · 8456 阅读 · 2 评论 -
Mycat中间件的全局序列号
本篇文章介绍mycat怎样在分库分表的情况下保证主键的全局唯一方法,接下来就来分析三种方法各自的优缺点。文件方式获取1.修改server配置文件server.xml<system><property name="sequnceHandlerType">0</property></system>注:sequnceHandlerType 配置为0表示使用本地文件读取。2.配置sequence_conf转载 2016-09-10 15:40:34 · 4382 阅读 · 2 评论 -
关系型数据的分布式处理系统MyCAT
1、MyCAT概述1.1 背景随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩充,数据库应用已经普遍建立于计算机网络之上。这时集中式数据库系统表现出它的不足: (1)集中式处理,势必造成性能瓶颈; (2)应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统受到影响,可靠性不高; (3)集中式处理引起系统的规模和配置都不够灵活,系统的可扩充性差。 在这种形势下,转载 2016-09-10 16:12:12 · 3124 阅读 · 0 评论 -
使用maven构建web项目实例
用maven构建web项目,首先要知道标准的目录结构,和一般的maven项目相同,源文件存放在src/main/java中,配置文件存在src/main/resources目录下。测试的代码放在src/test/java下, 对应的资源文件放在src/test/resources目录下。除了这些目录外。web项目还有一个src/main/webapp目录,该目录必须存在,且必须有一个web.xm转载 2016-09-10 00:59:09 · 1471 阅读 · 0 评论 -
Java.lang包
提供利用 Java 编程语言进行程序设计的基础类。最重要的类是 Object(它是类层次结构的根)和 Class(它的实例表示正在运行的应用程序中的类)。把基本类型的值当成一个对象来表示通常很有必要。包装器类 Boolean、Character、Integer、Long、Float 和 Double 就是用于这个目的。例如,一个 Double 类型的对象包含了一个类型为 double 的字段,这表示原创 2016-09-10 00:49:48 · 1494 阅读 · 0 评论 -
Java使用MyBatis传入参数的问题
一、单个参数1、基本数据类型(1)直接使用List<ChargeRuleDO> tests(long id); <select id="tests" resultType="com.xxx.bean.ChargeRuleDO"> select * from t_charge_rule t where t.id = #{id} </select>#{}中的参数名与方法中的参数名一致(2)使用注解L转载 2016-09-10 00:32:20 · 958 阅读 · 0 评论 -
【Java进阶之JVM异常】代码库(一)
DirectMemoryOOM.java/** * DirectMemory 容量可以通过 -XX:MaxDirectMemorySize 指定,如果不指定,则默认与 Java 堆的最大值(-Xmx)一致。 */public class DirectMemoryOOM { private static final int _MB = 1024*1024; public static转载 2017-07-04 11:52:01 · 504 阅读 · 0 评论 -
【Java进阶之多线程进阶】代码库(二)
生产者消费者.javaimport java.util.concurrent.LinkedBlockingQueue;public class LocalTest { public static void main(String[] args) { LinkedBlockingQueue<Object> list = new LinkedBlockingQueue<Objec转载 2017-07-04 13:23:53 · 442 阅读 · 0 评论