JAVA开发核心编程
文章平均质量分 66
吃胖点儿
“学会求知,学会做事,学会共处,学会做人。”致自己共勉 。技术探讨可以加281954986
展开
-
Java问题排查工具集
n ln ln lsar等系统指标l文件ljmapnn文件名llMATlbtracelgperftoolslulimitnlperf –topn阿里版本的perfJDKllcore dumpngdblllJDK bugs。原创 2024-01-26 17:15:42 · 365 阅读 · 0 评论 -
一个提升代码可读性的小技巧-写出优雅的代码!
对于这四种代码组织方式应该辩证看待,不是说后一种方式就比前一种好,细节无关的控制流就一定优于细节相关的控制流,因为系统复杂度随着代码过程的抽象和拆解增加了,而系统的复杂度的增加不一定就意味着可读性的提升,两者不是正相关关系,而是非线性的:随着系统复杂度的增加可读性会提升,但随着系统复杂度达到一个阈值,复杂度继续增加时可读性反而降低了。对于简单的方法,过程堆叠无伤大雅;而不幸的是,我们第一版的控制流的依赖状态也是控制流程和实现细节的依赖方向吻合,也就是说,我们的初版代码依旧没有摆脱面向过程编程的思想桎梏。原创 2024-01-24 15:45:58 · 834 阅读 · 0 评论 -
API面试:接口如何设计?安全如何保证?签名如何实现?防重如何实现?
API 面试四连杀:接口如何设计?安全如何保证?签名如何实现?防重如何实现?互联网架构师今天下面我们就来讨论下常用的一些API设计的安全方法,可能不一定是最好的,有更牛逼的实现方式,但是这篇是我自己的经验分享.一、token 简介Token:访问令牌access token, 用于接口中, 用于标识接口调用者的身份、凭证,减少用户名和密码的传输次数。一般情况下客户端(接口调用方)需要先向服务器端申请一个接口调用的账号,服务器会给出一个appId和一个key, key用于参数签名使用,注意k.转载 2021-02-23 10:10:13 · 305 阅读 · 0 评论 -
java线程池的原理和美团业务实践应用
随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池,是一个开发人员必修的基本功。本文开篇简述线程池概念和用途,接着结合线程池的源码,帮助读者领略线程池的设计思路,最后回归实践,通过案例讲述使用线程池遇到的问题,并给出了一种动态化线程池解决方案。一、写在前面1.1 线程池是什么线程池(Thread原创 2020-06-28 17:46:07 · 259 阅读 · 0 评论 -
API接口接口-如何设计?安全如何保证?签名如何实现?防重如何实现?
说明:在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃取)?除了https的协议之外,能不能加上通用的一套算法以及规范来保证传输的安全性呢?下面我们就来讨论下常用的一些API设计的安全方法,可能不一定是最好的,有更牛逼的实现方式,但是这篇是我自己的经验分享.一:token 简介Token:访问令牌access token, 用于接口中, 用于标识接口调用者的身份、凭证,减少用户名和密码的传输次数。一般情况下客户端(接口调用方)需要先向服务器端申请原创 2020-06-24 14:35:48 · 422 阅读 · 0 评论 -
不要再 if...else了,才能看出你的编码功底
前言if...else 是所有高级编程语言都有的必备功能。但现实中的代码往往存在着过多的 if...else。虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性、可维护性造成很大伤害,进而危害到整个软件系统。现在软件开发领域出现了很多新技术、新概念,但 if...else 这种基本的程序形式并没有发生太大变化。使用好 if...else 不仅对于现在,而且对于将来,都是十分有意义的。今天我们就来看看如何“干掉”代码中的 if...else,还代码以清爽。问题一:i.原创 2020-06-22 11:11:18 · 252 阅读 · 0 评论 -
Kryo对象序列化的来龙去脉
本文主要梳理Kryo序列化基本实现。重点剖析Kryo#writeClassAndObject、Kryo#readClassAndObject方法。kryo对象序列化入口为Kryo的writeClassAndObject。Kryo#writeClassAndObject 1public void writeClassAndObject (Output output, Object object) { 2 if (output == null) throw new IllegalArgu.原创 2020-06-10 20:36:28 · 703 阅读 · 0 评论 -
延时队列的6中说法,最后一种技术含量高哟
一口气说出 6种 延时队列的实现方法,面试官也得服原创程序员内点事程序员内点事1周前五一期间原计划是写两篇文章,看一本技术类书籍,结果这五天由于自律性过于差,禁不住各种诱惑,我连电脑都没打开过,计划完美宣告失败。所以在这能看出和大佬之间的差距,人家没白没夜的更文,比你优秀的人比你更努力,难以望其项背,真是让我自愧不如。知耻而后勇,这不逼着自己又学起来了,个人比较喜欢一些实践类的东西,既学习到知识又能让技术落地,能搞出个demo最好,本来不知道该分享什么主题,好在最近项目紧急招人中,而我有幸...原创 2020-05-20 16:54:57 · 213 阅读 · 0 评论 -
HTTP访问控制(CORS)一文讲解透彻http跨域的来龙去脉
跨域资源共享(CORS) 是一种机制,它使用额外的HTTP头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。比如,站点http://domain-a.com的某 HTML 页面通过<img> 的 ...原创 2020-04-16 19:12:03 · 915 阅读 · 0 评论 -
面试之线程池底层剖析
线程池类图Executor==>ExcutorService==>AbstractExecutorService==>ThreadPoolExecutor来分析一下。上面url继承类图,线程池的最顶层的接口是Executor,这个接口只有一个方法void execute(Runnable command) ExecutorService继承Executor,新...原创 2020-03-09 12:05:52 · 218 阅读 · 0 评论 -
Thread之实现文件的下载:
请大家伙多多指教: 邮箱:weimingweicom@sina.com 请关注:ailiandeziwei经典的线程实现文件的下载:package www.csdn.net.down;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;impor原创 2013-06-13 10:26:04 · 1664 阅读 · 0 评论 -
线程之条件阻塞Condtion的应用
请大家伙多多指教: 邮箱:weimingweicom@sina.com 请关注:ailiandeziweipackage www.csdn.net;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.locks.Condition;import java.util.原创 2013-06-10 20:07:53 · 1008 阅读 · 0 评论 -
面试题之线程的缓存系统
package cn.itcast.heima2;import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;//缓存系统面试题原创 2013-06-10 19:45:06 · 1653 阅读 · 0 评论 -
java socket 多线程网络传输多个文件
由于需要研究了下用 java socket 传输文件,由于需要传输多个文件,因此,采用了多线程设计。客户端每个线程创建一个 socket 连接,每个 socket 连接负责传输一个文件,服务端的ServerSocket每次 accept 一个 socket 连接,创建一个线程用于接收客户端传来的文件。1、服务端 import java.io.BufferedInputStre转载 2013-06-10 14:10:08 · 682 阅读 · 0 评论 -
传统线程计时器相隔时间段炸弹(TraditionalTimerTest)
传统计时器的每个时间段的炸弹编写package www.csdn.thread;import java.util.Date;import java.util.Timer;import java.util.TimerTask;public class TraditionalTimerTest {/** * 281954986 */private stati原创 2013-05-22 07:40:16 · 1012 阅读 · 0 评论 -
传统线程的建立方法(TraditionalThread)
package www.csdn.thread;public class TraditionalThread {/** * 281954986@qq.com */1: 传统线程的两种创建方式:public static void main(String[] args) {Thread thread1 = new Thread(){@Override原创 2013-05-22 07:38:30 · 840 阅读 · 0 评论 -
经典的soo单点登录实现
一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限...原创 2020-04-05 22:04:22 · 581 阅读 · 0 评论 -
Java源码之SPI机制
1 引言这是【源码笔记】的JDK源码解读的第一篇文章,本篇我们来探究Java的SPI机制的相关源码。2 什么是SPI机制那么,什么是SPI机制呢?SPI是Service Provider Interface 的简称,即服务提供者接口的意思。根据字面意思我们可能还有点困惑,SPI说白了就是一种扩展机制,我们在相应配置文件中定义好某个接口的实现类,然后再根据这个接口去这个配置文件中...原创 2020-04-03 10:46:56 · 167 阅读 · 0 评论 -
Java CompletableFuture 详解
目录[+]Future是Java 5添加的类,用来描述一个异步计算的结果。你可以使用isDone方法检查计算是否完成,或者使用get阻塞住调用线程,直到计算完成返回结果,你也可以使用cancel方法停止任务的执行。 1 2 3 4 5 6 7 8 9 10 11 12 1...原创 2020-03-26 11:42:07 · 268 阅读 · 0 评论 -
asyncTool解决任意的多线程并行、串行、阻塞、依赖、回调的框架
该框架目前正在 京东 App 后台 接受苛刻、高并发、海量用户等复杂场景业务的检验测试,随时会根据实际情况发布更新和 bugFix。有对区块链感兴趣的,可以参考项目作者另一个 GVP 项目,java 区块链底层入门。如果只是需要用这个框架,请往下看即可。如果需要深入了解这个框架是如何一步一步实现的,从接到需求,到每一步的思考,每个类为什么这么设计,为什么有这些方法,也就是如何从 0 到 1...原创 2020-03-26 10:45:38 · 344 阅读 · 0 评论 -
java8的stream详解
Java8中有两个非常有名的改进,一个是Lambda表达式,一个是Stream。如果我们了解过函数式编程的话,都知道Stream真正把函数式编程的风格引入到了java中。这篇文章由简入繁逐步介绍Stream。一、Stream是什么从名字来看,Stream就是一个流,他的主要作用就是对集合数据进行查找过滤等操作。有点类似于SQL的数据库操作。一句话来解释就是一种高效且易用的数据处理方式。大数...原创 2020-03-22 20:58:34 · 127 阅读 · 0 评论 -
Java8的新特性
Java函数式设计一、lambda表达式lambda表达式为匿名内部类的简写,类似于匿名内部类的语法糖;但又区别于匿名内部类(后文会讲解)。匿名内部类特点:基于多态(多数基于接口编程) 实现类无需名称 允许多个抽象方法Lambda的语法简洁,没有面向对象复杂的束缚。特点:使用Lambda必须有接口,并且接口中有且仅有一个抽象方法。只有当接口中的抽象方法存在且唯一时,...原创 2020-03-22 20:56:09 · 88 阅读 · 0 评论 -
Java 简单服务端中的乱象
查尔斯·狄更斯在《双城记》中写道:“这是一个最好的时代,也是一个最坏的时代。”移动互联网的快速发展,出现了许多新机遇,很多创业者伺机而动;随着行业竞争加剧,互联网红利逐渐消失,很多创业公司九死一生。笔者在初创公司摸爬滚打数年,接触了各式各样的 Java 微服务架构,从中获得了一些优秀的理念,但也发现了一些不合理的现象。现在,笔者总结了一些创业公司存在的 Java 服务端乱象,并尝试性地给...原创 2020-03-20 14:32:22 · 105 阅读 · 0 评论 -
定时任务百度百科
前言节前有更新一篇定时任务的相关文章《延时消息之时间轮》,有朋友提出希望可以完整的介绍下常见的定时任务方案,于是便有了这篇文章。Timer本次会主要讨论大家使用较多的方案,首先第一个就是 Timer 定时器,它可以在指定时间后运行或周期性运行任务;使用方法也非常简单:这样便可创建两个简单的定时任务,分别在 3s/5s 之后运行。使用起来确实很简单,但也有不少毛病,想要搞清楚...原创 2020-02-18 17:57:52 · 732 阅读 · 0 评论 -
CVS 版本控制器
l CVS 版本控制器 l 知识要点CVS 概述CVS 下载与配置CVS 使用示例l l l CVS是一个著名的版本控制工具 CVS的英文全称是Concurrent Version System(并行版本系统)。它主要用于记录源文件的历史。CVS是使用“客户端/服务器”(Client/Server)模式来工作的,这也是优秀版本控制系统的发展趋势。l 因为原创 2012-12-06 16:50:52 · 1764 阅读 · 0 评论 -
通过filter实现servlet和jsp的中文编码问题:
通过filter实现servlet和jsp的中文编码问题:Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。 init原创 2012-12-03 17:05:03 · 891 阅读 · 0 评论 -
JAVA设计模式之享元模式
Java 设计模式 之 享元模式(Flyweight) 享元模式的重点在于分离变与不变。把一个对象的状态分成内部状态和外部状态,内部状态是不变的,外部状态是可变的。然后通过共享不变的部分,达到减少对象数量并节约内存的目的。内部状态:通常指的是包含在享元对象内部的、对象本身的状态,不会随享元环境而变化,因此可共享。外部状态:是享元对象之外的状态,取决于使用享元的场景,会根据使用场景而变化原创 2012-12-03 17:38:39 · 3970 阅读 · 2 评论 -
SQL的超大总结 费了不少时间希望能和大家共享
SQL查询语句大全集锦MYSQL查询语句大全集锦1:使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES;2:2、创建一个数据库MYSQLDATAmysql> CREATE DATABASE MYSQLDATA;3:选择你所创建的数据库mysql> USE MYSQLDATA; (按回车键出现Database changed 时说原创 2012-06-18 19:54:47 · 2569 阅读 · 0 评论 -
JAVA设计模式之命令模式
命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。我们知道一个命令各对象通过在特定接收者上绑定一组动作来封装一个请求。要达到这一点,命令对象将动作和接收者包进对象中。这个对象只暴露出一个execute()方法,当此方法被调用时,接收者就会进行这些动作。从外面来看,其他对象不知道究竟哪个接收者进行了哪些动作,只知道如果调用execut原创 2012-12-06 20:22:39 · 493 阅读 · 0 评论 -
JAVA啊设计模式之责任链模式
责任链模式(Chain of Responsibility)的目标是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。在处理用户的请求时可能要根据不同的情况对请求添加不同的处理逻辑,在这时候就可以利用责任链进行设计。当需要添加一个处理逻辑时可以很方便的添加一个处理的节点。现在我们的需求是处理用户的请原创 2012-12-06 20:20:36 · 415 阅读 · 0 评论 -
java设计模式之代理模式
1.代理模式代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式一般涉及到的角色有:抽象角色 :声明真实对象和代理对象的共同接口;代理角色 :代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便原创 2012-12-06 20:19:26 · 482 阅读 · 0 评论 -
JSP 链接各种数据库大全
现在有好多初学JSP的网友经常会问数据库怎么连接啊,怎么老出错啊?所以我集中的在这写篇文章供大家参考,其实这种把数据库逻辑全部放在jsp里未必是好的做法,但是有利于初学者学习,所以我就这样做了,当大家学到一定程度的时候,可以考虑用MVC的模式开发。在练习这些代码的时候,你一定将JDBC的驱动程序放到服务器的类路径里,然后要在数据库里建一个表test,有两个字段比如为test1,test2,可以用下转载 2013-03-22 09:00:27 · 691 阅读 · 0 评论 -
Java中获取指定日期的总结
格式化日期 String-->Date 或者 Data-->StringSimpleDateFormat sdf = new SimpleDateFor指定日期的mat("yyyy-MM-dd"); Date date = sdf.parse("2009-11-04");//String-->Date String sdate = sdf.format(da原创 2013-04-24 11:08:49 · 1205 阅读 · 0 评论 -
Java的RandomAccessFile
Java的RandomAccessFile提供对文件的读写功能,与普通的输入输出流不一样的是RamdomAccessFile可以任意的访问文件的任何地方。这就是“Random”的意义所在。RandomAccessFile的对象包含一个记录指针,用于标识当前流的读写位置,这个位置可以向前移动,也可以向后移动。RandomAccessFile包含两个方法来操作文件记录指针。long getFi原创 2013-10-10 09:27:48 · 904 阅读 · 0 评论 -
JavaScript加强:Dom
JavaScript加强:Dom 获取各个属性的值: DOM: DOM= Document Object Model,文档对象模型,DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。换句话说,这是表示和处理一个HTML或XML文档的常用方法。有一点很重要,DOM的设计是以对象管理组织(OMG)的规约为基础的,因此可以用于任何编程语言.D:文档 – html 文档 或原创 2012-11-16 15:50:27 · 407 阅读 · 0 评论 -
JAVA设计模式之装饰模式
装饰模式(Decorator):装饰模式的角色有:—— 抽象构件角色(Component):给出一个抽象接口,以规范准备接收附加责任的对象。—— 具体构件角色(Concrete Component):定义一个将要接收附加责任的类。—— 装饰角色(Decorator):持有一个构件(Component)对象的引用,并定义一个与抽象构件接口一致的接口。—— 具体装饰角色(Concr原创 2012-11-29 21:02:22 · 424 阅读 · 0 评论 -
DBUtils框架的使用
package www.csdn.hbsi.utils;import java.sql.SQLException;import java.util.List;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.ArrayHandler;import or原创 2012-11-29 21:05:50 · 5814 阅读 · 0 评论 -
JAVA Web开发之XML基础和DTD约束
xml笔记:Extensible Markup Language,翻译过来为可扩展标记语言。Xml技术是w3c组织发布的,目前推荐遵循的是W3C组织于2000发布的XML1.0规范。 XML技术除用于保存有关系的数据之外,它还经常用作软件配置文件,以描述程序模块之间的关系。Xml文件中的注释采用:“” 格式。命名规范:一个XML元素可以包含字母、数字以及其它一些可见字符,但原创 2012-10-09 20:09:16 · 2763 阅读 · 0 评论 -
JAVA设计模式创建模式之单态模式
一、单态模式的定义 Singleton模式要求一个类有且仅有一个实例,并且提供一个全局的访问点。二、使用Singleton注意事项: 有时在某些情况下,使用Singleton并不能达到Singleton的目的,如有多个Singleton对象同时被不同的类装入器装载;在EJB(Enterprise Java Beans)这样的分布式系统中使用也要注意这种情况,因为EJB是跨服原创 2012-10-08 20:35:54 · 1402 阅读 · 0 评论 -
JAVA设计模式创建型模式之建造模式
《JAVA与模式》之建造模式 在阎宏博士的《JAVA与模式》一书中开头是这样描述建造(Builder)模式的: 建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。________________________________________转载 2012-10-05 14:34:50 · 2124 阅读 · 0 评论